Advertisement
Guest User

very bad minigame code

a guest
Oct 19th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 39.32 KB | None | 0 0
  1.  
  2. //¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  3. //                                              Crafting PreGame
  4. //_______________________________________________________________________________________________________________________
  5.  
  6. function CraftPreGameNavigateUp()
  7. {
  8.     if (CraftGameNavigationIndex == 2)
  9.     {
  10.         Remaining_Craft_Attempts++;
  11.        
  12.         /** SFX **/
  13.         playSoundClip(0);
  14.     }
  15. }
  16.    
  17. function CraftPreGameNavigateDown()
  18. {
  19.     if (CraftGameNavigationIndex == 2)
  20.     {
  21.         if (Remaining_Craft_Attempts > 1)
  22.         {
  23.             Remaining_Craft_Attempts--;
  24.            
  25.             /** SFX **/
  26.             playSoundClip(0);
  27.         }
  28.     }
  29. }
  30.  
  31. function CraftPreGameNavigateLeft()
  32. {
  33.     switch (CraftGameNavigationIndex)
  34.     {
  35.         case 1:
  36.             if (Craft_List_Offset > 0 - 12 && Craft_Selection_Index > 1)
  37.             {
  38.                 Craft_List_Offset -= 12;
  39.                 Craft_Selection_Index -= 1;
  40.                
  41.                 /** SFX **/
  42.                 playSoundClip(0);
  43.             }
  44.             break;
  45.         case 2:
  46.             CraftPreGameNavigateDown();
  47.             break;
  48.     }
  49. }
  50.  
  51. function CraftPreGameNavigateRight()
  52. {
  53.     switch (CraftGameNavigationIndex)
  54.     {
  55.         case 1:
  56.             if (Craft_List_Offset < 12 && Craft_Selection_Index < 14)
  57.             {
  58.                 Craft_List_Offset += 12;
  59.                 Craft_Selection_Index += 1;
  60.                
  61.                 /** SFX **/
  62.                 playSoundClip(0);
  63.             }
  64.             break;
  65.         case 2:
  66.             CraftPreGameNavigateUp();
  67.             break;
  68.     }
  69. }
  70.  
  71. function CraftPreGameSelectA()
  72. {
  73.     if (CraftGameNavigationIndex == 3)
  74.     {
  75.         /** Check if the price is right **/
  76.         if (WorldMGR.GoldInventory < Get_Craft_Cost(Craft_Selection_Index, Remaining_Craft_Attempts, "Gold"))
  77.         {
  78.             PlaySFX( AC_Insufficient );
  79.             return;
  80.         }
  81.        
  82.         if (WorldMGR.GemInventory < Get_Craft_Cost(Craft_Selection_Index, Remaining_Craft_Attempts, "Gem"))
  83.         {
  84.             PlaySFX( AC_Insufficient );
  85.             return;
  86.         }
  87.        
  88.         /** Subtract the cost **/
  89.         WorldMGR.GoldInventory -= Get_Craft_Cost(Craft_Selection_Index, Remaining_Craft_Attempts, "Gold");
  90.         WorldMGR.GemInventory -= Get_Craft_Cost(Craft_Selection_Index, Remaining_Craft_Attempts, "Gem");
  91.        
  92.        
  93.         ShowCraftGame();
  94.     } else {
  95.         CraftGameNavigationIndex++;
  96.     }
  97.    
  98.     /** SFX **/
  99.     PlaySFX( AC_Basic_Input_02 );
  100. }
  101.  
  102. function CraftPreGameSelectB()
  103. {
  104.     if (CraftGameNavigationIndex > 1)
  105.     {
  106.         CraftGameNavigationIndex--;
  107.     } else {
  108.         PopPage();
  109.         PushPage(GUIPage(FindComponentByTag("NPCPage")));
  110.     }
  111.    
  112.     /** SFX **/
  113.     PlaySFX( AC_Basic_Input_03 );
  114. }
  115.  
  116. function Render_Craft_PreGame_UI()
  117. {
  118.     local GUILabelComponent tempLabel;
  119.    
  120.     switch (CraftGameNavigationIndex)
  121.     {
  122.         case 1:
  123.             UpdateDrawInfo("Craft_Game_Arrows_For_Crafts", 1);
  124.             UpdateDrawInfo("Craft_Game_Arrows_For_Lives", 2);
  125.             UpdateDrawInfo("Confirm_Selection_Box", 0);
  126.             RenderImage("Helper_Arrow", 280, 225, 340, 285);
  127.             break;
  128.         case 2:
  129.             UpdateDrawInfo("Craft_Game_Arrows_For_Crafts", 2);
  130.             UpdateDrawInfo("Craft_Game_Arrows_For_Lives", 1);
  131.             UpdateDrawInfo("Confirm_Selection_Box", 0);
  132.             RenderImage("Helper_Arrow", 280, 575, 340, 635);
  133.             break;
  134.         case 3:
  135.             UpdateDrawInfo("Craft_Game_Arrows_For_Crafts", 2);
  136.             UpdateDrawInfo("Craft_Game_Arrows_For_Lives", 2);
  137.             UpdateDrawInfo("Confirm_Selection_Box", 1);
  138.             RenderImage("Helper_Arrow", 280, 721, 340, 781);
  139.             break;
  140.     }
  141.    
  142.     /** Cost color for inefficient funds **/
  143.     tempLabel = GUILabelComponent(FindComponentByTag("Craft_Cost_Gold_Label"));
  144.     if (WorldMGR.GoldInventory >= Get_Craft_Cost(Craft_Selection_Index, Remaining_Craft_Attempts, "Gold"))
  145.     {
  146.         tempLabel.StringInfo[0] = tempLabel.StringInfo[1];
  147.     } else {
  148.         tempLabel.StringInfo[0] = tempLabel.StringInfo[2];
  149.     }
  150.    
  151.     tempLabel = GUILabelComponent(FindComponentByTag("Craft_Cost_Gems_Label"));
  152.     if (WorldMGR.GemInventory >= Get_Craft_Cost(Craft_Selection_Index, Remaining_Craft_Attempts, "Gem"))
  153.     {
  154.         tempLabel.StringInfo[0] = tempLabel.StringInfo[1];
  155.     } else {
  156.         tempLabel.StringInfo[0] = tempLabel.StringInfo[2];
  157.     }
  158.    
  159.    
  160.     Print_Craft_Data("Craft_Name_Header", "Craft_Description_Label_1", "Craft_Description_Label_2", "Craft_Stat_Bonus_Label");
  161.     RenderCraftList("Craft_List");
  162. }
  163.  
  164. function Initialize_Craft_Page()
  165. {  
  166.     /** Reset Navigation **/
  167.     CraftGameNavigationIndex = 1;
  168.    
  169.     /** Start selection at Mystic Marble **/
  170.     Craft_Selection_Index = 7;
  171.    
  172.     /** Start selection at 1 life **/
  173.     Remaining_Craft_Attempts = 1;
  174.    
  175.     /** Reset Craft List Movement **/
  176.     Craft_List_Offset = 0;
  177.    
  178.     /** Render **/
  179.     Render_Craft_PreGame_UI();
  180.    
  181.     /** Cost Display **/
  182.     MoveLabel("Craft_PreGame_Cost_Label", 743, 500+20+23, 1048, 605+20+23);
  183.     RenderImage("Craft_Cost_Gold_Icon", 731, 556+20, 779, 604+20);
  184.     RenderImage("Craft_Cost_Gems_Icon", 880+12, 556+20, 928+12, 604+20);
  185.     MoveLabel("Craft_Cost_Gold_Label", 601, 541+20, 863, 605+20);
  186.     MoveLabel("Craft_Cost_Gems_Label", 765, 541+20, 1027, 605+20);
  187.    
  188.     /** Inventory Display **/
  189.     MoveLabel("Craft_PreGame_Inventory_Label", 743, 500+140+22+23, 1048, 605+140+22+23);
  190.     RenderImage("Craft_Player_Gold_Icon", 731, 556+140+22, 779, 604+140+22);
  191.     RenderImage("Craft_Player_Gems_Icon", 880+12, 556+140+22, 928+12, 604+140+22);
  192.     MoveLabel("Craft_Player_Gold_Label", 601, 541+140+22, 863, 605+140+22);
  193.     MoveLabel("Craft_Player_Gems_Label", 765, 541+140+22, 1027, 605+140+22);
  194.    
  195. }
  196.  
  197. function Print_Craft_Data(string H1, string L1, string L2, string L3)
  198. {
  199.     local GUILabelComponent Header, Line1, Line2, Line3;
  200.    
  201.     Header = GUILabelComponent(FindComponentByTag(H1));
  202.     Line1 = GUILabelComponent(FindComponentByTag(L1));
  203.     Line2 = GUILabelComponent(FindComponentByTag(L2));
  204.     Line3 = GUILabelComponent(FindComponentByTag(L3));
  205.    
  206.     switch (Craft_Selection_Index)
  207.     {
  208.         case 1:
  209.             Header.LabelText[0] = "Obsidian Seeker";
  210.             Line1.LabelText[0] = "Increases loot recieved from battles";
  211.             Line2.LabelText[0] = "for every party of heroes";
  212.             Line3.LabelText[0] = "+" $ GetRelicData(1, 1) $ "% Luck for each round cleared";
  213.             break;
  214.         case 2:
  215.             Header.LabelText[0] = "Stone Spirit Charm";
  216.             Line1.LabelText[0] = "Reduces damage for every party of";
  217.             Line2.LabelText[0] = "heroes";
  218.             Line3.LabelText[0] = "+" $ GetRelicData(0, 1) $ " Armor for each round cleared";
  219.             break;
  220.         case 3:
  221.             Header.LabelText[0] = "Griffin's Trinket";
  222.             Line1.LabelText[0] = "Increases speed for every party of";
  223.             Line2.LabelText[0] = "heroes";
  224.             Line3.LabelText[0] = "+" $ GetRelicData(3, 1) $ " Speed Points for each round cleared";
  225.             break;
  226.         case 4:
  227.             Header.LabelText[0] = "Ghostking's Branch";
  228.             Line1.LabelText[0] = "Reduces enemy speed for all combat";
  229.             Line2.LabelText[0] = "scenarios";
  230.             Line3.LabelText[0] = "-" $ GetRelicData(6, 1) $ " Speed Points for each round cleared";
  231.             break;
  232.         case 5:
  233.             Header.LabelText[0] = "Oath Pendant";
  234.             Line1.LabelText[0] = "Increases the skill level of all class";
  235.             Line2.LabelText[0] = "based skills, for every party of heroes";
  236.             Line3.LabelText[0] = "+" $ GetRelicData(2, 1) $ " Class Skills for each round cleared";
  237.             break;
  238.         case 6:
  239.             Header.LabelText[0] = "Eternal Spellstone";
  240.             Line1.LabelText[0] = "Regenerates mana over time for every";
  241.             Line2.LabelText[0] = "party of heroes";
  242.             Line3.LabelText[0] = "+" $ GetRelicData(5, 1) $ " Mana Regen for each round cleared";
  243.             break;
  244.         case 7:
  245.             Header.LabelText[0] = "Mystic Marble";
  246.             Line1.LabelText[0] = "Increases maximum mana for every";
  247.             Line2.LabelText[0] = "party of heroes";
  248.             Line3.LabelText[0] = "+" $ GetRelicData(4, 1) $ "% Mana for each round cleared";
  249.             break;
  250.         case 8:
  251.             Header.LabelText[0] = "Arcane Bloodprism";
  252.             Line1.LabelText[0] = "Increases maximum health for every";
  253.             Line2.LabelText[0] = "party of heroes";
  254.             Line3.LabelText[0] = "+" $ GetRelicData(7, 1) $ "% Health for each round cleared";
  255.             break;
  256.         case 9:
  257.             Header.LabelText[0] = "Rosewood Pendant";
  258.             Line1.LabelText[0] = "Regenerates health over time for";
  259.             Line2.LabelText[0] = "every party of heroes";
  260.             Line3.LabelText[0] = "+" $ GetRelicData(8, 1) $ " Health Regen for each round cleared";
  261.             break;
  262.         case 10:
  263.             Header.LabelText[0] = "Inifinity Jewel";
  264.             Line1.LabelText[0] = "Increases all primary stats for every";
  265.             Line2.LabelText[0] = "party of heroes";
  266.             Line3.LabelText[0] = "+" $ GetRelicData(10, 1) $ " All Stats for each round cleared";
  267.             break;
  268.         case 11:
  269.             Header.LabelText[0] = "Emperor's Talisman";
  270.             Line1.LabelText[0] = "Increases the skill level of all tactical";
  271.             Line2.LabelText[0] = "skills, for every party of heroes";
  272.             Line3.LabelText[0] = "+" $ GetRelicData(9, 1) $ " Tactical Skills for each round cleared";
  273.             break;
  274.         case 12:
  275.             Header.LabelText[0] = "Scorpion Talon";
  276.             Line1.LabelText[0] = "Increases physical damage dealt by";
  277.             Line2.LabelText[0] = "every party of heroes";
  278.             Line3.LabelText[0] = "+" $ GetRelicData(11, 1) $ "% Physical Damage for each round cleared";
  279.             break;
  280.         case 13:
  281.             Header.LabelText[0] = "Solar Charm";
  282.             Line1.LabelText[0] = "Increases experience gained by every";
  283.             Line2.LabelText[0] = "party of heroes";
  284.             Line3.LabelText[0] = "+" $ GetRelicData(12, 1) $ "% Experience for each round cleared";
  285.             break;
  286.         case 14:
  287.             Header.LabelText[0] = "Dreamfire Relic";
  288.             Line1.LabelText[0] = "Enemies are dealt damage over time as";
  289.             Line2.LabelText[0] = "long as their HP is below 1/2 Max HP";
  290.             Line3.LabelText[0] = GetRelicData(13, 1) $ " DPS for each round cleared";
  291.             break;
  292.     }
  293.    
  294.     UpdateTextInfo("Craft_Minigame_Attempts", "Minigame Lives:  " $ Remaining_Craft_Attempts);
  295.     UpdateTextInfo("Craft_Cost_Gold_Label", IntToString(Get_Craft_Cost(Craft_Selection_Index, Remaining_Craft_Attempts, "Gold")));
  296.     UpdateTextInfo("Craft_Cost_Gems_Label", IntToString(Get_Craft_Cost(Craft_Selection_Index, Remaining_Craft_Attempts, "Gem")));
  297.     UpdateTextInfo("Craft_Player_Gold_Label", IntToString(VisualGoldInventory));
  298.     UpdateTextInfo("Craft_Player_Gems_Label", IntToString(VisualGemInventory));
  299. }
  300.  
  301. function RenderCraftList(string CraftTag)
  302. {
  303.     Local int PosX, PosXEnd;
  304.    
  305.     PosX = 364;
  306.    
  307.     /** Animation offset **/
  308.     PosX += Craft_List_Offset * 10;
  309.    
  310.     /** Selection Offset **/
  311.     PosX -= (Craft_Selection_Index - 1) * 120;
  312.    
  313.     PosXEnd = PosX + 2300;
  314.    
  315.     RenderImage(CraftTag, PosX, 203, PosXEnd, 303);
  316. }
  317.  
  318. function MoveCraftList()
  319. {
  320.     if (Craft_List_Offset > 0)
  321.         Craft_List_Offset--;
  322.    
  323.     if (Craft_List_Offset < 0)
  324.         Craft_List_Offset++;
  325.    
  326.     RenderCraftList("Craft_List");
  327.    
  328.     /** Check for Continous **/
  329.     if (Craft_List_Offset == 0)
  330.     {
  331.         if (bJoyXLeft)
  332.         {
  333.             if (Craft_Selection_Index > 1)
  334.             {
  335.                 Craft_List_Offset -= 12;
  336.                 Craft_Selection_Index -= 1;
  337.                 Render_Craft_PreGame_UI();
  338.                
  339.                 /** SFX **/
  340.                 playSoundClip(0);
  341.             }
  342.         }
  343.         if (bJoyXRight)
  344.         {
  345.             if (Craft_Selection_Index < 14)
  346.             {
  347.                 Craft_List_Offset += 12;
  348.                 Craft_Selection_Index += 1;
  349.                 Render_Craft_PreGame_UI();
  350.                
  351.                 /** SFX **/
  352.                 playSoundClip(0);
  353.             }
  354.         }
  355.     }
  356. }
  357.  
  358.  
  359. //¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  360. //                                              Crafting
  361. //_______________________________________________________________________________________________________________________
  362.  
  363.  
  364. function deactivateTile(int TileX, int TileY, float Delay, float DownTime)
  365. {
  366.     CraftTileY[TileY].CraftTileX[TileX].DownDelay = Delay;
  367.     CraftTileY[TileY].CraftTileX[TileX].DownTime = DownTime;
  368.    
  369.     UpdateDrawInfo("Craft_Game_Targeter_" $ TileY $ "x" $ TileX, 1);
  370.     GUIVisualComponent(FindComponentByTag("Craft_Game_Targeter_" $ TileY $ "x" $ TileX)).SetSlowFlicker(3);
  371.  
  372. }
  373.  
  374. function LevelUpTile()
  375. {
  376.     if (CraftTileY[CraftSelectY].CraftTileX[CraftSelectX].Level >= CraftRound)
  377.         return;
  378.    
  379.     CraftTileY[CraftSelectY].CraftTileX[CraftSelectX].Level++;
  380.     CraftTileY[CraftSelectY].CraftTileX[CraftSelectX].ActivedThisRound = true;
  381.     Render_Tile_Level(CraftSelectX, CraftSelectY);
  382.    
  383.     ClaimedTiles++;
  384.    
  385.     /** SFX **/
  386.     if ( ClaimedTiles < 25 )
  387.     {
  388.         PlaySFX( AC_Cheerwave_01_b );
  389.     } else {
  390.         Reset_Craft_Grid();
  391.     }
  392. }
  393.  
  394. function Initialize_Craft_Game()
  395. {
  396.     local int TileX, TileY;
  397.     local int PosX, PosY, EndX, EndY;
  398.    
  399.     /** Turn off game timer **/
  400.     RoTTHUD(Outer).SetTimer(0.0, false, 'Craft_Game_Tick');
  401.    
  402.     /** Define array length **/
  403.     CraftTileY.Length = 6;
  404.    
  405.     /** Initital Game Variables **/
  406.     CraftRound = 1;
  407.     CraftPatternIndex = 0;
  408.     CraftCollectionIndex = 1;
  409.    
  410.     /** Draw and position Labels **/
  411.     redlog ("CraftLevelBonus" $ CraftLevelBonus);
  412.     MoveLabel("Craft_Game_Lives_Label", 362, 32, 1440, 900, "Lives: " $ Remaining_Craft_Attempts);
  413.     MoveLabel("Craft_Game_Level_Label", 0, 32, 1078, 900, "Level Bonus: " $ CraftLevelBonus);
  414.    
  415.     /** Initialize Patterns **/
  416.     InitializeCraftPatterns();
  417.    
  418.     /** Set component positions **/
  419.     TileY = 1;
  420.     do
  421.     {
  422.         /** Define array lengths **/
  423.         CraftTileY[TileY].CraftTileX.Length = 6;
  424.        
  425.         TileX = 1;
  426.         do
  427.         {
  428.             PosX = 230 + (140*TileX);
  429.             EndX = PosX + 140;
  430.             PosY = -40 + (140*TileY);
  431.             EndY = PosY + 140;
  432.            
  433.             RenderImage("Craft_Game_Tile_Level_" $ TileY $ "x" $ TileX,   PosX, PosY, EndX, EndY);
  434.             RenderImage("Craft_Game_Targeter_" $ TileY $ "x" $ TileX,   PosX, PosY, EndX + 12, EndY + 12);
  435.             SetImageAlpha("Craft_Game_Targeter_" $ TileY $ "x" $ TileX, 190);
  436.             RenderImage("Craft_Game_Tile_" $ TileY $ "x" $ TileX,   PosX, PosY, EndX, EndY);
  437.            
  438.             /** Reset game variables **/
  439.             CraftTileY[TileY].CraftTileX[TileX].Level = 0;
  440.             UpdateDrawInfo("Craft_Game_Tile_Level_" $ TileY $ "x" $ TileX, 0);
  441.             CraftTileY[TileY].CraftTileX[TileX].ActivedThisRound = false;
  442.             CraftTileY[TileY].CraftTileX[TileX].DownDelay = 0.0;
  443.             CraftTileY[TileY].CraftTileX[TileX].DownTime = 0.0;
  444.            
  445.             /** Store Visual Components **/
  446.             CraftTileY[TileY].CraftTileX[TileX].Background_VC = GUIVisualComponent(FindComponentByTag("Craft_Game_Tile_" $ TileY $ "x" $ TileX));
  447.             CraftTileY[TileY].CraftTileX[TileX].Target_VC = GUIVisualComponent(FindComponentByTag("Craft_Game_Targeter_" $ TileY $ "x" $ TileX));
  448.            
  449.             TileX++;
  450.         } until (TileX >= 6);
  451.        
  452.         TileY++;
  453.     } until (TileY >= 6);
  454.    
  455.     CraftSelectX = 3;
  456.     CraftSelectY = 3;
  457.    
  458.     CraftGameActive = false;
  459.     CraftGameOver = false;
  460.     UpdateDrawInfo("Craft_Game_Selector" ,0);
  461.    
  462.     PosX = 230 + (140*3);
  463.     EndX = PosX + 152;
  464.     PosY = -40 + (140*3);
  465.     EndY = PosY + 152;
  466.     RenderImage("Craft_Game_Selector",   PosX, PosY, EndX, EndY);
  467.    
  468.     Render_Craft_Page();
  469. }
  470.  
  471. function InitializeCraftPatterns()
  472. {
  473.     local int PtrnIndex, ClctIndex;
  474.    
  475.     ClctIndex = 1;
  476.     PtrnIndex = 2;
  477.    
  478.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 1);
  479.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 5);
  480.     PtrnIndex++;
  481.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 1);
  482.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 5);
  483.     PtrnIndex++;
  484.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 1);
  485.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 5);
  486.     PtrnIndex++;
  487.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 1);
  488.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 5);
  489.     PtrnIndex++;
  490.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 1);
  491.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 5);
  492.     PtrnIndex++;
  493.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 2);
  494.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 4);
  495.     PtrnIndex++;
  496.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 3);
  497.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 3);
  498.     PtrnIndex++;
  499.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 4);
  500.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 2);
  501.     PtrnIndex++;
  502.    
  503.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 4);
  504.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 2);
  505.     PtrnIndex++;
  506.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 4);
  507.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 2);
  508.     PtrnIndex++;
  509.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 4);
  510.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 2);
  511.     PtrnIndex++;
  512.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 3);
  513.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 3);
  514.     PtrnIndex++;
  515.    
  516.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 3);
  517.     PtrnIndex++;
  518.    
  519.     PatternCollection[ClctIndex].NextTargetDelay = 0.5;
  520.     PatternCollection[ClctIndex].NextTargetTime = 0.5;
  521.     PatternCollection[ClctIndex].DownDelay = 1.50;
  522.     PatternCollection[ClctIndex].DownTime = 2.0;
  523.    
  524.     /** Pattern #2 **/
  525.    
  526.     ClctIndex = 2;
  527.     PtrnIndex = 2;
  528.    
  529.    
  530.    
  531.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 3);
  532.     PtrnIndex++;
  533.    
  534.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 3);
  535.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 2);
  536.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 4);
  537.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 3);
  538.     PtrnIndex++;
  539.    
  540.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 3);
  541.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 1);
  542.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 5);
  543.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 3);
  544.     PtrnIndex++;
  545.    
  546.     /** Delay **/
  547.     PtrnIndex++;
  548.    
  549.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 1);
  550.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 2);
  551.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 4);
  552.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 5);
  553.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 1);
  554.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 2);
  555.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 4);
  556.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 5);
  557.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 1);
  558.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 2);
  559.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 4);
  560.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 5);
  561.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 1);
  562.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 2);
  563.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 4);
  564.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 5);
  565.    
  566.     PatternCollection[ClctIndex].NextTargetDelay = 1.0;
  567.     PatternCollection[ClctIndex].NextTargetTime = 1.0;
  568.     PatternCollection[ClctIndex].DownDelay = 1.25;
  569.     PatternCollection[ClctIndex].DownTime = 0.50;
  570.    
  571.    
  572.     /** Pattern #3 **/
  573.    
  574.     ClctIndex = 3;
  575.     PtrnIndex = 1;
  576.    
  577.     PtrnIndex++;
  578.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 1);
  579.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 3);
  580.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 5);
  581.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 2);
  582.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 4);
  583.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 1);
  584.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 3);
  585.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 5);
  586.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 2);
  587.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 4);
  588.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 1);
  589.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 3);
  590.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 5);
  591.     PtrnIndex++;
  592.     PtrnIndex++;
  593.    
  594.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 2);
  595.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 4);
  596.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 1);
  597.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 3);
  598.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 5);
  599.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 2);
  600.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 4);
  601.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 1);
  602.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 3);
  603.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 5);
  604.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 2);
  605.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 4);
  606.     PtrnIndex++;
  607.     PtrnIndex++;
  608.    
  609.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 1);
  610.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 3);
  611.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 5);
  612.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 2);
  613.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 4);
  614.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 1);
  615.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 3);
  616.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 5);
  617.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 2);
  618.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 4);
  619.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 1);
  620.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 3);
  621.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 5);
  622.     PtrnIndex++;
  623.     PtrnIndex++;
  624.    
  625.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 2);
  626.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 4);
  627.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 1);
  628.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 3);
  629.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 5);
  630.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 2);
  631.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 4);
  632.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 1);
  633.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 3);
  634.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 5);
  635.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 2);
  636.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 4);
  637.     PtrnIndex++;
  638.     PtrnIndex++;
  639.    
  640.     PatternCollection[ClctIndex].NextTargetDelay = 1.25;
  641.     PatternCollection[ClctIndex].NextTargetTime = 1.25;
  642.     PatternCollection[ClctIndex].DownDelay = 1.8;
  643.     PatternCollection[ClctIndex].DownTime = 0.2;
  644.    
  645.     /** Pattern #4 **/
  646.    
  647.     ClctIndex = 4;
  648.     PtrnIndex = 1;
  649.    
  650.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 1);
  651.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 2);
  652.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 3);
  653.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 4);
  654.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 5);
  655.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 1);
  656.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 2);
  657.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 4);
  658.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 5);
  659.     PtrnIndex++;
  660.    
  661.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 2);
  662.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 3);
  663.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 4);
  664.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 1);
  665.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 3);
  666.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 5);
  667.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 1);
  668.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 2);
  669.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 4);
  670.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 5);
  671.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 1);
  672.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 3);
  673.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 5);
  674.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 2);
  675.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 3);
  676.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 4);
  677.     PtrnIndex++;
  678.    
  679.    
  680.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 1);
  681.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 2);
  682.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 3);
  683.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 4);
  684.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 5);
  685.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 1);
  686.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 2);
  687.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 4);
  688.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 5);
  689.     PtrnIndex++;
  690.    
  691.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 2);
  692.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 3);
  693.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 4);
  694.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 1);
  695.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 3);
  696.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 5);
  697.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 1);
  698.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 2);
  699.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 4);
  700.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 5);
  701.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 1);
  702.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 3);
  703.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 5);
  704.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 2);
  705.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 3);
  706.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 4);
  707.     PtrnIndex++;
  708.    
  709.     PatternCollection[ClctIndex].NextTargetDelay = 2.5;
  710.     PatternCollection[ClctIndex].NextTargetTime = 2.5;
  711.     PatternCollection[ClctIndex].DownDelay = 2.0;
  712.     PatternCollection[ClctIndex].DownTime = 0.2;
  713.    
  714.     /** Pattern #5 **/
  715.    
  716.     ClctIndex = 5;
  717.     PtrnIndex = 2;
  718.    
  719.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 2);
  720.     PtrnIndex++;
  721.    
  722.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 2);
  723.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 1);
  724.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 2);
  725.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 3);
  726.     PtrnIndex++;
  727.    
  728.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 2);
  729.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 4);
  730.     PtrnIndex++;
  731.    
  732.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 5);
  733.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 2);
  734.     PtrnIndex++;
  735.    
  736.     /** **/
  737.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 4);
  738.     PtrnIndex++;
  739.    
  740.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 3);
  741.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 4);
  742.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 5);
  743.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 4);
  744.     PtrnIndex++;
  745.    
  746.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 4);
  747.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 2);
  748.     PtrnIndex++;
  749.    
  750.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 4);
  751.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 1);
  752.     PtrnIndex++;
  753.    
  754.     /** Delay **/
  755.     PtrnIndex++;
  756.    
  757.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 1);
  758.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 3);
  759.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 5);
  760.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 1);
  761.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 3);
  762.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 5);
  763.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 1);
  764.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 3);
  765.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 5);
  766.    
  767.     PatternCollection[ClctIndex].NextTargetDelay = 1.0;
  768.     PatternCollection[ClctIndex].NextTargetTime = 1.0;
  769.     PatternCollection[ClctIndex].DownDelay = 1.25;
  770.     PatternCollection[ClctIndex].DownTime = 1.0;
  771.    
  772.    
  773.    
  774.     /*
  775.    
  776.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 1);
  777.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 2);
  778.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 3);
  779.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 4);
  780.     AddPatternTarget(ClctIndex, PtrnIndex, 1, 5);
  781.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 1);
  782.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 2);
  783.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 3);
  784.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 4);
  785.     AddPatternTarget(ClctIndex, PtrnIndex, 2, 5);
  786.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 1);
  787.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 2);
  788.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 3);
  789.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 4);
  790.     AddPatternTarget(ClctIndex, PtrnIndex, 3, 5);
  791.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 1);
  792.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 2);
  793.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 3);
  794.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 4);
  795.     AddPatternTarget(ClctIndex, PtrnIndex, 4, 5);
  796.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 1);
  797.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 2);
  798.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 3);
  799.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 4);
  800.     AddPatternTarget(ClctIndex, PtrnIndex, 5, 5);
  801.     PtrnIndex++;
  802.     */
  803.    
  804. }
  805.  
  806. function AddPatternTarget(int CollectionIndex, int PatternIndex, int TileX, int TileY)
  807. {
  808.     if (PatternCollection.Length <= CollectionIndex)
  809.         PatternCollection.Length = CollectionIndex + 1;
  810.        
  811.     if (PatternCollection[CollectionIndex].TargetCollection.Length <= PatternIndex)
  812.         PatternCollection[CollectionIndex].TargetCollection.Length = PatternIndex + 1;
  813.    
  814.     PatternCollection[CollectionIndex].TargetCollection[PatternIndex].TileX.AddItem(TileX);
  815.     PatternCollection[CollectionIndex].TargetCollection[PatternIndex].TileY.AddItem(TileY);
  816. }
  817.  
  818. function Clear_Craft_Targets()
  819. {
  820.     local int TileX, TileY;
  821.    
  822.     /** Clear Targeters **/
  823.     TileY = 1;
  824.     do
  825.     {
  826.         TileX = 1;
  827.         do
  828.         {
  829.             UpdateDrawInfo("Craft_Game_Targeter_" $ TileY $ "x" $ TileX, 0);
  830.            
  831.             TileX++;
  832.         } until (TileX >= 6);
  833.        
  834.         TileY++;
  835.     } until (TileY >= 6);
  836.    
  837. }
  838.  
  839. function Craft_Game_Tick()
  840. {
  841.     local int TileX, TileY;
  842.    
  843.     Render_Craft_Page();
  844.     Craft_Gameplay_Update();
  845.    
  846.     /** Set component positions **/
  847.     TileY = 1;
  848.     do
  849.     {
  850.         TileX = 1;
  851.         do
  852.         {
  853.             if (CraftTileY[TileY].CraftTileX[TileX].DownTime > 0.0 && CraftTileY[TileY].CraftTileX[TileX].DownDelay <= 0.0)
  854.                 CraftTileY[TileY].CraftTileX[TileX].DownTime -= 0.025;
  855.  
  856.             if (CraftTileY[TileY].CraftTileX[TileX].DownDelay > 0)
  857.                 CraftTileY[TileY].CraftTileX[TileX].DownDelay -= 0.025;
  858.            
  859.             if (CraftTileY[TileY].CraftTileX[TileX].DownDelay <= 0)
  860.             {
  861.                 CraftTileY[TileY].CraftTileX[TileX].Target_VC.SetEnabled(false);
  862.                 CraftTileY[TileY].CraftTileX[TileX].Target_VC.bAutoFlicker = false;
  863.             }
  864.            
  865.             TileX++;
  866.         } until (TileX >= 6);
  867.        
  868.         TileY++;
  869.     } until (TileY >= 6);
  870.    
  871.     /** Flicker Toggle **/
  872.     CraftFlicker = !CraftFlicker;
  873. }
  874.  
  875. function Render_Craft_Page()
  876. {
  877.     local int TileX, TileY;
  878.    
  879.     /** Set component positions **/
  880.     TileY = 1;
  881.     do
  882.     {
  883.         TileX = 1;
  884.         do
  885.         {
  886.             /** Draw Background **/
  887.             if (CraftTileY[TileY].CraftTileX[TileX].DownTime > 0.0
  888.             &&  CraftTileY[TileY].CraftTileX[TileX].DownDelay <= 0)
  889.             {
  890.                 CraftTileY[TileY].CraftTileX[TileX].Background_VC.DrawInfo[0] = CraftTileY[TileY].CraftTileX[TileX].Background_VC.DrawInfo[3];
  891.                
  892.             } else {
  893.                 if (CraftTileY[TileY].CraftTileX[TileX].ActivedThisRound)
  894.                 {
  895.                     CraftTileY[TileY].CraftTileX[TileX].Background_VC.DrawInfo[0] = CraftTileY[TileY].CraftTileX[TileX].Background_VC.DrawInfo[2];
  896.                 } else {
  897.                     CraftTileY[TileY].CraftTileX[TileX].Background_VC.DrawInfo[0] = CraftTileY[TileY].CraftTileX[TileX].Background_VC.DrawInfo[1];
  898.                 }
  899.             }
  900.            
  901.             /** Draw Targets **
  902.             if (CraftTileY[TileY].CraftTileX[TileX].DownDelay > 0)
  903.             {
  904.                 UpdateDrawInfo("Craft_Game_Targeter_" $ TileY $ "x" $ TileX, 1);
  905.                 SetImageAlpha("Craft_Game_Targeter_" $ TileY $ "x" $ TileX, (CraftFlicker) ? 128 : 255);
  906.             } else {
  907.                 UpdateDrawInfo("Craft_Game_Targeter_" $ TileY $ "x" $ TileX, 0);
  908.             }
  909.             */
  910.            
  911.             TileX++;
  912.         } until (TileX >= 6);
  913.        
  914.         TileY++;
  915.     } until (TileY >= 6);
  916.    
  917. }
  918.  
  919. function Render_Craft_Game_Selector()
  920. {
  921.     local int PosX, PosY, EndX, EndY;
  922.    
  923.     PosX = 230 + (140*CraftSelectX);
  924.     EndX = PosX + 152;
  925.     PosY = -40 + (140*CraftSelectY);
  926.     EndY = PosY + 152;
  927.     RenderImage("Craft_Game_Selector", PosX, PosY, EndX, EndY);
  928. }
  929.  
  930. function Render_Tile_Level(int TileX, int TileY)
  931. {
  932.     /** Draw Tile Level **/
  933.     UpdateDrawInfo("Craft_Game_Tile_Level_" $ TileY $ "x" $ TileX, CraftTileY[TileY].CraftTileX[TileX].Level, "Craft_Game_Tile_Level_1x1");
  934. }
  935.  
  936. function Craft_Gameplay_Update()
  937. {
  938.     /** Check for game over **/
  939.     if (CraftTileY[CraftSelectY].CraftTileX[CraftSelectX].DownTime > 0 && CraftTileY[CraftSelectY].CraftTileX[CraftSelectX].DownDelay <= 0)
  940.     {
  941.         /** Game Over **/
  942.         Remaining_Craft_Attempts--;
  943.         CraftGameActive = false;
  944.         CraftGameOver = true;
  945.         RoTTHUD(Outer).SetTimer(0.0, true, 'Craft_Game_Tick');
  946.         RoTTHUD(Outer).SetTimer(1.5, false, 'Craft_Game_Over_Tick');
  947.        
  948.         /** Death SFX **/
  949.         PlaySFX( AC_SFX_Craft_Death );
  950.        
  951.     }
  952.    
  953.     PatternCollection[CraftCollectionIndex].NextTargetTime -= 0.025;
  954.    
  955.     if (PatternCollection[CraftCollectionIndex].NextTargetTime <= 0)
  956.     {
  957.         CraftPatternIndex++;
  958.        
  959.         if (PatternCollection[CraftCollectionIndex].TargetCollection.Length <= CraftPatternIndex)
  960.         {
  961.             /** Randomize **/
  962.             CraftCollectionIndex = Rand(PatternCollection.Length - 1) + 1;
  963.             CraftPatternIndex = 0;
  964.         }
  965.        
  966.         PatternCollection[CraftCollectionIndex].NextTargetTime = PatternCollection[CraftCollectionIndex].NextTargetDelay * CraftSpeedAmp();
  967.        
  968.         SetTargets();
  969.     }
  970. }
  971.  
  972. function Craft_Game_Over_Tick()
  973. {
  974.     if (Remaining_Craft_Attempts != 0)
  975.     {
  976.         /** +1 at the start of each round **/
  977.         CraftLevelBonus++;
  978.        
  979.         /** Initialize Game **/
  980.         Initialize_Craft_Game();
  981.        
  982.     } else {
  983.         /** Push game over page **/
  984.         Push_Craft_GameOver();
  985.        
  986.         /** Gameover SFX **/
  987.         PlaySFX( AC_SFX_Craft_Gameover );
  988.        
  989.     }
  990.    
  991.     ClaimedTiles = 0;
  992.    
  993.     /* CLEAR TARGETS */
  994.     Clear_Craft_Targets();
  995.    
  996.     /** Update Lives GUI **/
  997.     MoveLabel("Craft_Game_Lives_Label", 362, 32, 1440, 900, "Lives: " $ Remaining_Craft_Attempts);
  998.    
  999.     UpdateDrawInfo("Craft_Game_Selector" ,0);
  1000.     CraftGameOver = false;
  1001. }
  1002.  
  1003. function float CraftSpeedAmp()
  1004. {
  1005.     local float SpeedAmp;
  1006.    
  1007.     switch (CraftRound)
  1008.     {
  1009.         case 1:
  1010.             SpeedAmp = 1.0;
  1011.             break;
  1012.         case 2:
  1013.             SpeedAmp = 0.6;
  1014.             break;
  1015.         case 3:
  1016.             SpeedAmp = 0.4;
  1017.             break;
  1018.         case 4:
  1019.             SpeedAmp = 0.3;
  1020.             break;
  1021.         default:
  1022.             SpeedAmp = 0.25;
  1023.             break;
  1024.        
  1025.     }
  1026.    
  1027.     return SpeedAmp;
  1028. }
  1029.  
  1030. function Reset_Craft_Grid()
  1031. {
  1032.     local int TileY, TileX;
  1033.    
  1034.     /* All 25 claimed! */
  1035.     /** CraftClear SFX **/
  1036.     PlaySFX( AC_SFX_Craft_Clear );
  1037.    
  1038.     /** Reset count **/
  1039.     ClaimedTiles = 0;
  1040.    
  1041.     /** Reset acivated tiles **/
  1042.     TileY = 1;
  1043.     do
  1044.     {
  1045.         TileX = 1;
  1046.         do
  1047.         {
  1048.             CraftTileY[TileY].CraftTileX[TileX].ActivedThisRound = false;
  1049.             UpdateDrawInfo("Craft_Game_Tile_Level_" $ TileY $ "x" $ TileX, 0);
  1050.            
  1051.             /** Reset down times **/
  1052.             CraftTileY[TileY].CraftTileX[TileX].Background_VC.DrawInfo[0] = None;
  1053.             CraftTileY[TileY].CraftTileX[TileX].DownTime = 0.0;
  1054.            
  1055.             /** Hide targeters **/
  1056.             CraftTileY[TileY].CraftTileX[TileX].Target_VC.SetEnabled(false);
  1057.             CraftTileY[TileY].CraftTileX[TileX].Target_VC.bAutoFlicker = false;
  1058.            
  1059.             TileX++;
  1060.         } until (TileX >= 6);
  1061.        
  1062.         TileY++;
  1063.     } until (TileY >= 6);
  1064.    
  1065.     /** Next Round **/
  1066.     CraftRound++;
  1067.     CraftLevelBonus++;
  1068.    
  1069.     /** Update GUI **/
  1070.     MoveLabel("Craft_Game_Level_Label", 0, 32, 1078, 900, "Level Bonus: " $ CraftLevelBonus);
  1071.    
  1072.     /** Finished! **/
  1073.     if (CraftRound >= 9)
  1074.     {
  1075.         CraftGameActive = false;
  1076.         CraftGameOver = true;
  1077.         RoTTHUD(Outer).SetTimer(0.0, true, 'Craft_Game_Tick');
  1078.         RoTTHUD(Outer).SetTimer(1.5, false, 'Craft_Game_Over_Tick');
  1079.        
  1080.         /** Victory SFX **/
  1081.         PlaySFX( AC_Cheerwave_03 );
  1082.        
  1083.     }
  1084.    
  1085.     /** Next Pattern **/
  1086.     CraftPatternIndex = 0;
  1087.     CraftCollectionIndex = Rand(PatternCollection.Length - 1) + 1;
  1088.     PatternCollection[CraftCollectionIndex].NextTargetTime = 0.6;
  1089. }
  1090.  
  1091. function SetTargets()
  1092. {
  1093.     local int TileX, TileY;
  1094.     local float DownDelay, DownTime;
  1095.     local int i;
  1096.    
  1097.     if (PatternCollection[CraftCollectionIndex].TargetCollection[CraftPatternIndex].TileX.Length == 0)
  1098.         return;
  1099.    
  1100.     DownDelay = PatternCollection[CraftCollectionIndex].DownDelay * CraftSpeedAmp();
  1101.     DownTime = PatternCollection[CraftCollectionIndex].DownTime * CraftSpeedAmp();
  1102.    
  1103.     do
  1104.     {
  1105.         TileX = PatternCollection[CraftCollectionIndex].TargetCollection[CraftPatternIndex].TileX[i];
  1106.         TileY = PatternCollection[CraftCollectionIndex].TargetCollection[CraftPatternIndex].TileY[i];
  1107.        
  1108.         deactivateTile(TileX, TileY, DownDelay, DownTime);
  1109.         i++;
  1110.     } until (i >= PatternCollection[CraftCollectionIndex].TargetCollection[CraftPatternIndex].TileX.Length);
  1111.    
  1112. }
  1113.  
  1114. function CraftGameNavigateUp()
  1115. {
  1116.     if (CraftSelectY > 1 && CraftGameActive)
  1117.         CraftSelectY--;
  1118. }
  1119.  
  1120. function CraftGameNavigateDown()
  1121. {
  1122.     if (CraftSelectY < 5 && CraftGameActive)
  1123.         CraftSelectY++;
  1124. }
  1125.  
  1126. function CraftGameNavigateLeft()
  1127. {
  1128.     if (CraftSelectX > 1 && CraftGameActive)
  1129.         CraftSelectX--;
  1130. }
  1131.  
  1132. function CraftGameNavigateRight()
  1133. {
  1134.     if (CraftSelectX < 5 && CraftGameActive)
  1135.         CraftSelectX++;
  1136. }
  1137.  
  1138. function CraftGameSelectA()
  1139. {
  1140.     if (CraftGameOver)
  1141.         return;
  1142.        
  1143.     if (CraftGameActive == false)
  1144.     {
  1145.         if (Remaining_Craft_Attempts > 0)
  1146.         {
  1147.             UpdateDrawInfo("Craft_Game_Selector", 1);
  1148.             CraftGameActive = true;
  1149.             RoTTHUD(Outer).SetTimer(0.025, true, 'Craft_Game_Tick');
  1150.         } else {
  1151.             PopPage();
  1152.             PushPage(GUIPage(FindComponentByTag("NPCPage")));
  1153.         }
  1154.        
  1155.     } else {
  1156.         LevelUpTile();
  1157.     }
  1158. }
  1159.  
  1160.  
  1161. //¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1162. //                                              Crafting GameOver
  1163. //_______________________________________________________________________________________________________________________
  1164.  
  1165. function CraftGameOverEscape()
  1166. {
  1167.     ShowCraftPreGame();
  1168. }
  1169.  
  1170. function Render_Craft_GameOver_UI()
  1171. {
  1172.     local GUILabelComponent tempLabel, tempLabel2;
  1173.    
  1174.     Print_Craft_Data("GameOver_Craft_Name_Header", "GameOver_Craft_Description_Label_1", "GameOver_Craft_Description_Label_2", "GameOver_Craft_Stat_Bonus_Label");
  1175.    
  1176.     tempLabel = GUILabelComponent(FindComponentByTag("GameOver_Craft_Stat_LvlBonus_Label"));
  1177.     tempLabel.LabelText[0] = "Level Bonus: " $ CraftLevelBonus;
  1178.    
  1179.    
  1180.     tempLabel = GUILabelComponent(FindComponentByTag("GameOver_Craft_Total_Bonus_Label"));
  1181.     tempLabel2 = GUILabelComponent(FindComponentByTag("GameOver_Craft_Result_Label"));
  1182.    
  1183.     switch (Craft_Selection_Index)
  1184.     {
  1185.         case 1:
  1186.             tempLabel.LabelText[0] = "Adding +" $ GetRelicData(1, 1) * CraftLevelBonus $ "% Luck";
  1187.             tempLabel2.LabelText[0] = "New Total: +" $ GetRelicData(1, WorldMGR.RelicLevel[1]) $ "% Luck";
  1188.             break;
  1189.         case 2:
  1190.             tempLabel.LabelText[0] = "Adding +" $ GetRelicData(0, 1) * CraftLevelBonus $ " Armor";
  1191.             tempLabel2.LabelText[0] = "New Total: +" $ GetRelicData(0, WorldMGR.RelicLevel[0]) $ " Armor";
  1192.             break;
  1193.         case 3:
  1194.             tempLabel.LabelText[0] = "Adding +" $ GetRelicData(3, 1) * CraftLevelBonus $ " Speed Points";
  1195.             tempLabel2.LabelText[0] = "New Total: +" $ GetRelicData(3, WorldMGR.RelicLevel[3]) $ " Speed Points";
  1196.             break;
  1197.         case 4:
  1198.             tempLabel.LabelText[0] = "Adding -" $ GetRelicData(6, 1) * CraftLevelBonus $ " Speed Points";
  1199.             tempLabel2.LabelText[0] = "New Total: -" $ GetRelicData(6, WorldMGR.RelicLevel[6]) $ " Speed Points";
  1200.             break;
  1201.         case 5:
  1202.             tempLabel.LabelText[0] = "Adding +" $ GetRelicData(2, 1) * CraftLevelBonus $ " Class Skills";
  1203.             tempLabel2.LabelText[0] = "New Total: +" $ GetRelicData(2, WorldMGR.RelicLevel[2]) $ " Class Skills";
  1204.             break;
  1205.         case 6:
  1206.             tempLabel.LabelText[0] = "Adding +" $ GetRelicData(5, 1) * CraftLevelBonus $ " Mana Regen";
  1207.             tempLabel2.LabelText[0] = "New Total: +" $ GetRelicData(5, WorldMGR.RelicLevel[5]) $ " Mana Regen";
  1208.             break;
  1209.         case 7:
  1210.             tempLabel.LabelText[0] = "Adding +" $ GetRelicData(4, 1) * CraftLevelBonus $ "% Mana";
  1211.             tempLabel2.LabelText[0] = "New Total: +" $ GetRelicData(4, WorldMGR.RelicLevel[4]) $ "% Mana";
  1212.             break;
  1213.         case 8:
  1214.             tempLabel.LabelText[0] = "Adding +" $ GetRelicData(7, 1) * CraftLevelBonus $ "% Health";
  1215.             tempLabel2.LabelText[0] = "New Total: +" $ GetRelicData(7, WorldMGR.RelicLevel[7]) $ "% Health";
  1216.             break;
  1217.         case 9:
  1218.             tempLabel.LabelText[0] = "Adding +" $ GetRelicData(8, 1) * CraftLevelBonus $ " Health Regen";
  1219.             tempLabel2.LabelText[0] = "New Total: +" $ GetRelicData(8, WorldMGR.RelicLevel[8]) $ " Health Regen";
  1220.             break;
  1221.         case 10:
  1222.             tempLabel.LabelText[0] = "Adding +" $ GetRelicData(10, 1) * CraftLevelBonus $ " All Stats";
  1223.             tempLabel2.LabelText[0] = "New Total: +" $ GetRelicData(10, WorldMGR.RelicLevel[10]) $ " All Stats";
  1224.             break;
  1225.         case 11:
  1226.             tempLabel.LabelText[0] = "Adding +" $ GetRelicData(9, 1) * CraftLevelBonus $ " Tactical Skills";
  1227.             tempLabel2.LabelText[0] = "New Total: +" $ GetRelicData(9, WorldMGR.RelicLevel[9]) $ " Tactical Skills";
  1228.             break;
  1229.         case 12:
  1230.             tempLabel.LabelText[0] = "Adding +" $ GetRelicData(11, 1) * CraftLevelBonus $ "% Physical Damage";
  1231.             tempLabel2.LabelText[0] = "New Total: +" $ GetRelicData(11, WorldMGR.RelicLevel[11]) $ "% Physical Damage";
  1232.             break;
  1233.         case 13:
  1234.             tempLabel.LabelText[0] = "Adding +" $ GetRelicData(12, 1) * CraftLevelBonus $ "% Experience";
  1235.             tempLabel2.LabelText[0] = "New Total: +" $ GetRelicData(12, WorldMGR.RelicLevel[12]) $ "% Experience";
  1236.             break;
  1237.         case 14:
  1238.             tempLabel.LabelText[0] = "Adding +" $ GetRelicData(13, 1) * CraftLevelBonus $ " DPS";
  1239.             tempLabel2.LabelText[0] = "New Total: " $ GetRelicData(13, WorldMGR.RelicLevel[13]) $ " DPS";
  1240.             break;
  1241.     }
  1242.    
  1243.     /** Artifact Icon **/
  1244.     RenderCraftList("GameOver_Craft_List");
  1245. }
  1246.  
  1247. function Push_Craft_Gameover()
  1248. {
  1249.     local int ArtifactIndex;
  1250.    
  1251.     PushPage(GUIPage(FindComponentByTag("Craft_GameOver_Page")));
  1252.    
  1253.     /** Find Artifact **/
  1254.     switch (Craft_Selection_Index)
  1255.     {
  1256.         case 1:
  1257.             ArtifactIndex = 1;
  1258.             break;
  1259.         case 2:
  1260.             ArtifactIndex = 0;
  1261.             break;
  1262.         case 3:
  1263.             ArtifactIndex = 3;
  1264.             break;
  1265.         case 4:
  1266.             ArtifactIndex = 6;
  1267.             break;
  1268.         case 5:
  1269.             ArtifactIndex = 2;
  1270.             break;
  1271.         case 6:
  1272.             ArtifactIndex = 5;
  1273.             break;
  1274.         case 7:
  1275.             ArtifactIndex = 4;
  1276.             break;
  1277.         case 8:
  1278.             ArtifactIndex = 7;
  1279.             break;
  1280.         case 9:
  1281.             ArtifactIndex = 8;
  1282.             break;
  1283.         case 10:
  1284.             ArtifactIndex = 10;
  1285.             break;
  1286.         case 11:
  1287.             ArtifactIndex = 9;
  1288.             break;
  1289.         case 12:
  1290.             ArtifactIndex = 11;
  1291.             break;
  1292.         case 13:
  1293.             ArtifactIndex = 12;
  1294.             break;
  1295.         case 14:
  1296.             ArtifactIndex = 13;
  1297.             break;
  1298.     }
  1299.    
  1300.     /** Add skill level to artifact **/
  1301.     WorldMGR.RelicLevel[ArtifactIndex] += CraftLevelBonus;
  1302.    
  1303.     /** Render GUI **/
  1304.     Render_Craft_GameOver_UI();
  1305. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement