summaryrefslogblamecommitdiff
path: root/world/map/npc/025-4/battlecaves.txt
blob: 69788bda628cdbf43832ac6ebfbb284f71cdb8b5 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                                                                                     
 
                                                             
                               
                                       
                                         

        

                                                                  
                        
        

        






                                                                                                                             
    












                                                                                                                                                    
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         
 
                                                    



                                                
    





                                            


                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          



                                                                      


                                                                                                                                                          
        
 

                              




                                
        

 
                                                                                        

 
                                                             
                               
                                       
                                         
        


                                                                  
                        
        
 
        







                                                                                                                             
 












                                                                                                                                                        
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         
 
                                                    











                                                

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          

 

                                                                      


                                                                                                                                                          



                              




                                


        
                                                                                           
                                                             
                               
                                       
                                         
        


                                                                  
                        
        
 
        







                                                                                                                             
 












                                                                                                                                                          
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         
 
                                                    











                                                

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          
 
 

                                                                      


                                                                                                                                                          



                             




                                


        
                                                                            
                                                             
                               
                                       
                                         
        


                                                                  
                        
        
 
        






                                                                                                                             
 












                                                                                                                                                         
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         
 
                                                    











                                                

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          



                                                                      


                                                                                                                                                          
        
 

                             




                                
        
 
 

                                                                           
                                                             
                               
                                       
                                         
        


                                                                  
                        
        
 
        






                                                                                                                             
 












                                                                                                                                                          
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         
 
                                                    











                                                

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          
 
 

                                                                      


                                                                                                                                                          



                             




                                


        

                                                                                          
                                                             
                               
                                       
                                         
        


                                                                  
                        
        
 
        






                                                                                                                             
 












                                                                                                                                                           
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         
 
                                                    











                                                

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          
 
 

                                                                      


                                                                                                                                                          



                              




                                


        

                                                                                    
                                                             
                               
                                       
                                         

        

                                                                  
                        
        

        







                                                                                                                             
    












                                                                                                                                                         
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         
 
                                                    











                                                

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          
 
 

                                                                      


                                                                                                                                                          



                             




                                


        

                                                                           
                                                             
                               
                                       
                                         
        


                                                                  
                        
        
 
        







                                                                                                                             
 












                                                                                                                                                          
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         
 
                                                    











                                                

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          



                                                                      


                                                                                                                                                          
        
 

                              




                                
        
 
 

                                                                           
                                                             
                               
                                       
                                         
        


                                                                  
                        
        
 
        






                                                                                                                             
 












                                                                                                                                                           
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         
 
                                                    











                                                

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          



                                                                      


                                                                                                                                                          
        
 

                               




                                
        
 
 
                                                                 
 
                                                             
                                
                               
                                                                                                                                                                                                                                                                                                                                      



                                                                  




                                                              
           

                                                                                                                             
 









                                                                                                                                                                
                                                                                            

                      






                                                                                              
                                                                                  
 
                                                                           
                                                                                             
                                                                                            
                                                                                                     
 
                                                      
                         
                  








                                             




                                                                   












                                                                   
            
                                                                           

                                             
                                                                                                                                            
                                      














                                                                                                                      

                                                                                                                              
                        
                             

        






                                                 
       

                                                         
                                                              
                                 
                                                  
                          
                     
                                    
                          
                                                                
                            



                                                                         
                                                                
                                       

                                        

        

                                                                            




                              






                                 
                              
        



                                                                                  


                                                                                                  
                       

        






                                                                                 
                                                                

                                       

                                        
 




                                                                  
       

                                                                                                                                                                                         




                                                                     
 
 
// ---------------------------------    Cave 1    -----------------------------------

025-4.gat,42,80,0	script	#StartCaveFight1	324,{
    if ($@wave_cave1 != 0) end;
    if (Rossy_Quest < 15) goto L_Cheat;
    if ($@battlecave1 == 1) goto L_Start;
    end;

L_Cheat:
    message strcharinfo(0), "You shouldn't be here, you cheater.";
    percentheal -100, 0;
    end;

L_Start:
    menu
        "Place a root at the center of the energy source.", -,
        "I am not prepared yet!", L_Close;
    if ((countitem("Root")<1)) goto L_no_root;
    close2;
    delitem "Root", 1;
    message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";    
    
L_Summon:
    set $@cave1_loop, $@cave1_loop + 1;
    areamonster "025-4.gat",26,63,60,97,"",$@CAVE1_MONSTERS_IDS[$@cave1_loop],$@CAVE1_MONSTERS_QTY[$@cave1_loop],"#StartCaveFight1::OnMonsterDeath";
    if ($@cave1_loop <= getarraysize($@CAVE1_MONSTERS_IDS)) goto L_Summon;
    set $@cave1_loop, 0;
    set $@wave_cave1, $@wave_cave1 + 1;
    end;

L_Done:
    set $@cave1_kills, 0;
    attachrid(getcharid(3,$@cave1fighter$));

// Here you can define the messages to be shown for the players on the beginning of each wave.
// Remember to adjust the number of conditionals according to the number of waves.

    if ($@wave_cave1 == 1) message strcharinfo(0), "Oh no, more monsters?!";
    if ($@wave_cave1 == 2) message strcharinfo(0), "I can't give up now!";
    if ($@wave_cave1 == 3) message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation, as if you were being lifted from the ground... When you open your eyes, you are outside of the cave.";

    if ($@wave_cave1 < $@CAVE1_WAVES) goto L_Summon;
    set cavefights, (cavefights ^ BATTLE_CAVE1);
    warp "025-3.gat", 78, 129;
    goto L_Cleaning;
    end;
    
L_Cleaning:
    attachrid(getcharid(3,$@cave1fighter$));
    set $@wave_cave1, 0;
    set $@cave1_kills, 0;
    set $@cave1start, 0;
    set $@cave1fighter$, "";
    set $@cave1fighterdeaths$, 0;
    set $@battlecave1, 0;
    killmonster "025-4.gat", "#StartCaveFight1::OnMonsterDeath";
    end;

OnMonsterDeath:
    set $@cave1_kills, $@cave1_kills + 1;
    if ($@cave1_kills >= $@CAVE1_MONSTERS_QTY[1] + $@CAVE1_MONSTERS_QTY[2] + $@CAVE1_MONSTERS_QTY[3]) goto L_Done;
    end;

L_Close:
    close;

L_no_root:
    mes "I don't have any root in my inventory!";
    close;

onInit:
// Here you can define the specifics of each battle cave.
// Monsters IDs to be spawned.
    setarray $@CAVE1_MONSTERS_IDS[1], 1087, 1088, 1083, 1084;
// Number of monsters of each ID.
    setarray $@CAVE1_MONSTERS_QTY[1], 3, 2, 2, 2;
// Number of waves.
    set $@CAVE1_WAVES, 3;
// Maximum time (in seconds) for the player to finish the fight.
    set $@CAVE1_TIME, 900;
}

// ---------------------  Cave 1 Checker  ----------------------------

025-4.gat,41,97,0	script	#CheckCaveFight1	45,1,1,{
    if ($@wave_cave1 != 0) message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
    if ($@wave_cave1 == 0) goto L_Done;
    end;

L_Done:
    warp "025-3.gat", 78, 130;
    set $@battlecave1, 0;
    set $@cave1fighter$, "";
    set $@cave1fighterdeaths, 0;
    set $@cave1start, 0;
    set $@timercontrol1, 1;
    end;
}

// ---------------------------------    Cave 2   ---------------------------------------


025-4.gat,115,77,0	script	#StartCaveFight2	324,{
    if ($@wave_cave2 != 0) end;
    if (Rossy_Quest < 15) goto L_Cheat;
    if ($@battlecave2 == 1) goto L_Start;
    end;
    
L_Cheat:
    message strcharinfo(0), "You shouldn't be here, you cheater.";
    percentheal -100, 0;
    end;

L_Start:
    menu
        "Place a root at the center of the energy source.", -,
        "I am not prepared yet!", L_Close;
    if ((countitem("Root")<1)) goto L_no_root;
    close2;
    delitem "Root", 1;
    message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";    
 

L_Summon:
    set $@cave2_loop, $@cave2_loop + 1;
    areamonster "025-4.gat",97, 62, 126, 96,"",$@CAVE2_MONSTERS_IDS[$@cave2_loop],$@CAVE2_MONSTERS_QTY[$@cave2_loop],"#StartCaveFight2::OnMonsterDeath";
    if ($@cave2_loop <= getarraysize($@CAVE2_MONSTERS_IDS)) goto L_Summon;
    set $@cave2_loop, 0;
    set $@wave_cave2, $@wave_cave2 + 1;
    end;

L_Done:
    set $@cave2_kills, 0;
    attachrid(getcharid(3,$@cave2fighter$));

// Here you can define the messages to be shown for the players on the beginning of each wave.
// Remember to adjust the number of conditionals according to the number of waves.

    if ($@wave_cave2 == 1) message strcharinfo(0), "Oh no, more monsters?!";
    if ($@wave_cave2 == 2) message strcharinfo(0), "I can't give up now!";
    if ($@wave_cave2 == 3) message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation, as if you were being lifted from the ground... When you open your eyes, you are outside of the cave.";

    if ($@wave_cave2 < $@CAVE2_WAVES) goto L_Summon;
    set cavefights, (cavefights ^ BATTLE_CAVE2);
    warp "025-3.gat", 53, 109;
    goto L_Cleaning;
    end;

L_Cleaning:
    attachrid(getcharid(3,$@cave2fighter$));
    set $@wave_cave2, 0;
    set $@cave2_kills, 0;
    set $@cave2start, 0;
    set $@cave2fighter$, "";
    set $@cave2fighterdeaths$, 0;
    set $@battlecave2, 0;
    killmonster "025-4.gat", "#StartCaveFight2::OnMonsterDeath";
    end;

OnMonsterDeath:
    set $@cave2_kills, $@cave2_kills + 1;
    if ($@cave2_kills >= $@CAVE2_MONSTERS_QTY[1] + $@CAVE2_MONSTERS_QTY[2] + $@CAVE2_MONSTERS_QTY[3]) goto L_Done;
    end;

L_Close:
    close;

L_no_root:
    mes "I don't have any root in my inventory!";
    close;

onInit:
// Here you can define the specifics of each battle cave.
// Monsters IDs to be spawned.
    setarray $@CAVE2_MONSTERS_IDS[1], 1087, 1088, 1083, 1084;
// Number of monsters of each ID.
    setarray $@CAVE2_MONSTERS_QTY[1], 3, 2, 2, 2;
// Number of waves.
    set $@CAVE2_WAVES, 3;
// Maximum time (in seconds) for the player to finish the fight.
    set $@CAVE2_TIME, 900;
}

// ---------------------  Cave 2 Checker  ----------------------------

025-4.gat,110,96,0	script	#CheckCaveFight2	45,1,1,{
    if ($@wave_cave2 != 0) message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
    if ($@wave_cave2 == 0) goto L_Done;
    end;

L_Done:
    warp "025-3.gat", 53, 110;
    set $@battlecave2, 0;
    set $@cave2fighter$, "";
    set $@cave2fighterdeaths, 0;
    set $@cave2start, 0;
    set $@timercontrol2, 1;
    end;
}

// ------------------------------------    Cave 3    --------------------------------------
025-4.gat,164,103,0	script	#StartCaveFight3	324,{
    if ($@wave_cave3 != 0) end;
    if (Rossy_Quest < 15) goto L_Cheat;
    if ($@battlecave3 == 1) goto L_Start;
    end;
    
L_Cheat:
    message strcharinfo(0), "You shouldn't be here, you cheater.";
    percentheal -100, 0;
    end;

L_Start:
    menu
        "Place a root at the center of the energy source.", -,
        "I am not prepared yet!", L_Close;
    if ((countitem("Root")<1)) goto L_no_root;
    close2;
    delitem "Root", 1;
    message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";    
 

L_Summon:
    set $@cave3_loop, $@cave3_loop + 1;
    areamonster "025-4.gat",150, 84, 177, 117,"",$@CAVE3_MONSTERS_IDS[$@cave3_loop],$@CAVE3_MONSTERS_QTY[$@cave3_loop],"#StartCaveFight3::OnMonsterDeath";
    if ($@cave3_loop <= getarraysize($@CAVE3_MONSTERS_IDS)) goto L_Summon;
    set $@cave3_loop, 0;
    set $@wave_cave3, $@wave_cave3 + 1;
    end;

L_Done:
    set $@cave3_kills, 0;
    attachrid(getcharid(3,$@cave3fighter$));

// Here you can define the messages to be shown for the players on the beginning of each wave.
// Remember to adjust the number of conditionals according to the number of waves.

    if ($@wave_cave3 == 1) message strcharinfo(0), "Oh no, more monsters?!";
    if ($@wave_cave3 == 2) message strcharinfo(0), "I can't give up now!";
    if ($@wave_cave3 == 3) message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation, as if you were being lifted from the ground... When you open your eyes, you are outside of the cave.";

    if ($@wave_cave3 < $@CAVE3_WAVES) goto L_Summon;
    set cavefights, (cavefights ^ BATTLE_CAVE3);
    warp "025-3.gat", 71, 85;
    goto L_Cleaning;
    end;

L_Cleaning:
    attachrid(getcharid(3,$@cave3fighter$));
    set $@wave_cave3, 0;
    set $@cave3_kills, 0;
    set $@cave3start, 0;
    set $@cave3fighter$, "";
    set $@cave3fighterdeaths$, 0;
    set $@battlecave3, 0;
    killmonster "025-4.gat", "#StartCaveFight3::OnMonsterDeath";
    end;

OnMonsterDeath:
    set $@cave3_kills, $@cave3_kills + 1;
    if ($@cave3_kills >= $@CAVE3_MONSTERS_QTY[1] + $@CAVE3_MONSTERS_QTY[2] + $@CAVE3_MONSTERS_QTY[3]) goto L_Done;
    end;

L_Close:
    close;

L_no_root:
    mes "I don't have any root in my inventory!";
    close;

onInit:
// Here you can define the specifics of each battle cave.
// Monsters IDs to be spawned.
    setarray $@CAVE3_MONSTERS_IDS[1], 1087, 1088, 1083, 1084;
// Number of monsters of each ID.
    setarray $@CAVE3_MONSTERS_QTY[1], 3, 2, 2, 2;
// Number of waves.
    set $@CAVE3_WAVES, 3;
// Maximum time (in seconds) for the player to finish the fight.
    set $@CAVE3_TIME, 900;
}

// ---------------------  Cave 3 Checker  ----------------------------

025-4.gat,168,117,0	script	#CheckCaveFight3	45,1,1,{
    if ($@wave_cave3 != 0) message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
    if ($@wave_cave3 == 0) goto L_Done;
    end;

L_Done:
    warp "025-3.gat", 71, 85;
    set $@battlecave3, 0;
    set $@cave3fighter$, "";
    set $@cave3fighterdeaths, 0;
    set $@cave3start, 0;
    set $@timercontrol3, 1;
    end;
}

// ---------------------------    Cave 4    --------------------------------
025-4.gat,39,143,0	script	#StartCaveFight4	324,{
    if ($@wave_cave4 != 0) end;
    if (Rossy_Quest < 15) goto L_Cheat;
    if ($@battlecave4 == 1) goto L_Start;
    end;
    
L_Cheat:
    message strcharinfo(0), "You shouldn't be here, you cheater.";
    percentheal -100, 0;
    end;

L_Start:
    menu
        "Place a root at the center of the energy source.", -,
        "I am not prepared yet!", L_Close;
    if ((countitem("Root")<1)) goto L_no_root;
    close2;
    delitem "Root", 1;
    message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";    

L_Summon:
    set $@cave4_loop, $@cave4_loop + 1;
    areamonster "025-4.gat",28, 124, 57, 156,"",$@CAVE4_MONSTERS_IDS[$@cave4_loop],$@CAVE4_MONSTERS_QTY[$@cave4_loop],"#StartCaveFight4::OnMonsterDeath";
    if ($@cave4_loop <= getarraysize($@CAVE4_MONSTERS_IDS)) goto L_Summon;
    set $@cave4_loop, 0;
    set $@wave_cave4, $@wave_cave4 + 1;
    end;

L_Done:
    set $@cave4_kills, 0;
    attachrid(getcharid(3,$@cave4fighter$));

// Here you can define the messages to be shown for the players on the beginning of each wave.
// Remember to adjust the number of conditionals according to the number of waves.

    if ($@wave_cave4 == 1) message strcharinfo(0), "Oh no, more monsters?!";
    if ($@wave_cave4 == 2) message strcharinfo(0), "I can't give up now!";
    if ($@wave_cave4 == 3) message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation, as if you were being lifted from the ground... When you open your eyes, you are outside of the cave.";

    if ($@wave_cave4 < $@CAVE4_WAVES) goto L_Summon;
    set cavefights, (cavefights ^ BATTLE_CAVE4);
    warp "025-3.gat", 80, 85;
    goto L_Cleaning;
    end;

L_Cleaning:
    attachrid(getcharid(3,$@cave4fighter$));
    set $@wave_cave4, 0;
    set $@cave4_kills, 0;
    set $@cave4start, 0;
    set $@cave4fighter$, "";
    set $@cave4fighterdeaths$, 0;
    set $@battlecave4, 0;
    killmonster "025-4.gat", "#StartCaveFight4::OnMonsterDeath";
    end;

OnMonsterDeath:
    set $@cave4_kills, $@cave4_kills + 1;
    if ($@cave4_kills >= $@CAVE4_MONSTERS_QTY[1] + $@CAVE4_MONSTERS_QTY[2] + $@CAVE4_MONSTERS_QTY[3]) goto L_Done;
    end;

L_Close:
    close;

L_no_root:
    mes "I don't have any root in my inventory!";
    close;

onInit:
// Here you can define the specifics of each battle cave.
// Monsters IDs to be spawned.
    setarray $@CAVE4_MONSTERS_IDS[1], 1087, 1088, 1083, 1084;
// Number of monsters of each ID.
    setarray $@CAVE4_MONSTERS_QTY[1], 3, 2, 2, 2;
// Number of waves.
    set $@CAVE4_WAVES, 3;
// Maximum time (in seconds) for the player to finish the fight.
    set $@CAVE4_TIME, 900;
}

// ---------------------  Cave 4 Checker  ----------------------------

025-4.gat,32,156,0	script	#CheckCaveFight4	45,1,1,{
    if ($@wave_cave4 != 0) message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
    if ($@wave_cave4 == 0) goto L_Done;
    end;

L_Done:
    warp "025-3.gat", 80, 85;
    set $@battlecave4, 0;
    set $@cave4fighter$, "";
    set $@cave4fighterdeaths, 0;
    set $@cave4start, 0;
    set $@timercontrol4, 1;
    end;
}

// ----------------------------    Cave 5    ------------------------------

025-4.gat,109,143,0	script	#StartCaveFight5	324,{
    if ($@wave_cave5 != 0) end;
    if (Rossy_Quest < 15) goto L_Cheat;
    if ($@battlecave5 == 1) goto L_Start;
    end;
    
L_Cheat:
    message strcharinfo(0), "You shouldn't be here, you cheater.";
    percentheal -100, 0;
    end;

L_Start:
    menu
        "Place a root at the center of the energy source.", -,
        "I am not prepared yet!", L_Close;
    if ((countitem("Root")<1)) goto L_no_root;
    close2;
    delitem "Root", 1;
    message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";    

L_Summon:
    set $@cave5_loop, $@cave5_loop + 1;
    areamonster "025-4.gat",91, 131, 124, 160,"",$@CAVE5_MONSTERS_IDS[$@cave5_loop],$@CAVE5_MONSTERS_QTY[$@cave5_loop],"#StartCaveFight5::OnMonsterDeath";
    if ($@cave5_loop <= getarraysize($@CAVE5_MONSTERS_IDS)) goto L_Summon;
    set $@cave5_loop, 0;
    set $@wave_cave5, $@wave_cave5 + 1;
    end;

L_Done:
    set $@cave5_kills, 0;
    attachrid(getcharid(3,$@cave5fighter$));

// Here you can define the messages to be shown for the players on the beginning of each wave.
// Remember to adjust the number of conditionals according to the number of waves.

    if ($@wave_cave5 == 1) message strcharinfo(0), "Oh no, more monsters?!";
    if ($@wave_cave5 == 2) message strcharinfo(0), "I can't give up now!";
    if ($@wave_cave5 == 3) message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation, as if you were being lifted from the ground... When you open your eyes, you are outside of the cave.";

    if ($@wave_cave5 < $@CAVE5_WAVES) goto L_Summon;
    set cavefights, (cavefights ^ BATTLE_CAVE5);
    warp "025-3.gat", 71, 32;
    goto L_Cleaning;
    end;

L_Cleaning:
    attachrid(getcharid(3,$@cave5fighter$));
    set $@wave_cave5, 0;
    set $@cave5_kills, 0;
    set $@cave5start, 0;
    set $@cave5fighter$, "";
    set $@cave5fighterdeaths$, 0;
    set $@battlecave5, 0;
    killmonster "025-4.gat", "#StartCaveFight5::OnMonsterDeath";
    end;

OnMonsterDeath:
    set $@cave5_kills, $@cave5_kills + 1;
    if ($@cave5_kills >= $@CAVE5_MONSTERS_QTY[1] + $@CAVE5_MONSTERS_QTY[2] + $@CAVE5_MONSTERS_QTY[3]) goto L_Done;
    end;

L_Close:
    close;

L_no_root:
    mes "I don't have any root in my inventory!";
    close;

onInit:
// Here you can define the specifics of each battle cave.
// Monsters IDs to be spawned.
    setarray $@CAVE5_MONSTERS_IDS[1], 1087, 1088, 1083, 1084;
// Number of monsters of each ID.
    setarray $@CAVE5_MONSTERS_QTY[1], 3, 2, 2, 2;
// Number of waves.
    set $@CAVE5_WAVES, 3;
// Maximum time (in seconds) for the player to finish the fight.
    set $@CAVE5_TIME, 900;
}

// ---------------------  Cave 5 Checker  ----------------------------

025-4.gat,100,160,0	script	#CheckCaveFight5	45,1,1,{
    if ($@wave_cave5 != 0) message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
    if ($@wave_cave5 == 0) goto L_Done;
    end;

L_Done:
    warp "025-3.gat", 71, 33;
    set $@battlecave5, 0;
    set $@cave5fighter$, "";
    set $@cave5fighterdeaths, 0;
    set $@cave5start, 0;
    set $@timercontrol5, 1;
    end;
}

// --------------------------------    Cave 6    -----------------------------------------

025-4.gat,162,162,0	script	#StartCaveFight6	324,{
    if ($@wave_cave6 != 0) end;
    if (Rossy_Quest < 15) goto L_Cheat;
    if ($@battlecave6 == 1) goto L_Start;
    end;
    
L_Cheat:
    message strcharinfo(0), "You shouldn't be here, you cheater.";
    percentheal -100, 0;
    end;

L_Start:
    menu
        "Place a root at the center of the energy source.", -,
        "I am not prepared yet!", L_Close;
    if ((countitem("Root")<1)) goto L_no_root;
    close2;
    delitem "Root", 1;
    message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";    

L_Summon:
    set $@cave6_loop, $@cave6_loop + 1;
    areamonster "025-4.gat",153, 143, 178, 174,"",$@CAVE6_MONSTERS_IDS[$@cave6_loop],$@CAVE6_MONSTERS_QTY[$@cave6_loop],"#StartCaveFight6::OnMonsterDeath";
    if ($@cave6_loop <= getarraysize($@CAVE6_MONSTERS_IDS)) goto L_Summon;
    set $@cave6_loop, 0;
    set $@wave_cave6, $@wave_cave6 + 1;
    end;

L_Done:
    set $@cave6_kills, 0;
    attachrid(getcharid(3,$@cave6fighter$));

// Here you can define the messages to be shown for the players on the beginning of each wave.
// Remember to adjust the number of conditionals according to the number of waves.

    if ($@wave_cave6 == 1) message strcharinfo(0), "Oh no, more monsters?!";
    if ($@wave_cave6 == 2) message strcharinfo(0), "I can't give up now!";
    if ($@wave_cave6 == 3) message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation, as if you were being lifted from the ground... When you open your eyes, you are outside of the cave.";

    if ($@wave_cave6 < $@CAVE6_WAVES) goto L_Summon;
    set cavefights, (cavefights ^ BATTLE_CAVE6);
    warp "025-3.gat", 128, 37;
    goto L_Cleaning;
    end;

L_Cleaning:
    attachrid(getcharid(3,$@cave6fighter$));
    set $@wave_cave6, 0;
    set $@cave6_kills, 0;
    set $@cave6start, 0;
    set $@cave6fighter$, "";
    set $@cave6fighterdeaths$, 0;
    set $@battlecave6, 0;
    killmonster "025-4.gat", "#StartCaveFight6::OnMonsterDeath";
    end;

OnMonsterDeath:
    set $@cave6_kills, $@cave6_kills + 1;
    if ($@cave6_kills >= $@CAVE6_MONSTERS_QTY[1] + $@CAVE6_MONSTERS_QTY[2] + $@CAVE6_MONSTERS_QTY[3]) goto L_Done;
    end;

L_Close:
    close;

L_no_root:
    mes "I don't have any root in my inventory!";
    close;

onInit:
// Here you can define the specifics of each battle cave.
// Monsters IDs to be spawned.
    setarray $@CAVE6_MONSTERS_IDS[1], 1087, 1088, 1083, 1084;
// Number of monsters of each ID.
    setarray $@CAVE6_MONSTERS_QTY[1], 3, 2, 2, 2;
// Number of waves.
    set $@CAVE6_WAVES, 3;
// Maximum time (in seconds) for the player to finish the fight.
    set $@CAVE6_TIME, 900;
}

// ---------------------  Cave 6 Checker  ----------------------------

025-4.gat,159,174,0	script	#CheckCaveFight6	45,1,1,{
    if ($@wave_cave6 != 0) message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
    if ($@wave_cave6 == 0) goto L_Done;
    end;

L_Done:
    warp "025-3.gat", 128, 38;
    set $@battlecave6, 0;
    set $@cave6fighter$, "";
    set $@cave6fighterdeaths, 0;
    set $@cave6start, 0;
    set $@timercontrol6, 1;
    end;
}

// --------------------------------    Cave 7    -----------------------------------

025-4.gat,44,202,0	script	#StartCaveFight7	324,{
    if ($@wave_cave7 != 0) end;
    if (Rossy_Quest < 15) goto L_Cheat;
    if ($@battlecave7 == 1) goto L_Start;
    end;

L_Cheat:
    message strcharinfo(0), "You shouldn't be here, you cheater.";
    percentheal -100, 0;
    end;

L_Start:
    menu
        "Place a root at the center of the energy source.", -,
        "I am not prepared yet!", L_Close;
    if ((countitem("Root")<1)) goto L_no_root;
    close2;
    delitem "Root", 1;
    message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";    
  
    
L_Summon:
    set $@cave7_loop, $@cave7_loop + 1;
    areamonster "025-4.gat",27, 185, 61, 219,"",$@CAVE7_MONSTERS_IDS[$@cave7_loop],$@CAVE7_MONSTERS_QTY[$@cave7_loop],"#StartCaveFight7::OnMonsterDeath";
    if ($@cave7_loop <= getarraysize($@CAVE7_MONSTERS_IDS)) goto L_Summon;
    set $@cave7_loop, 0;
    set $@wave_cave7, $@wave_cave7 + 1;
    end;

L_Done:
    set $@cave7_kills, 0;
    attachrid(getcharid(3,$@cave7fighter$));

// Here you can define the messages to be shown for the players on the beginning of each wave.
// Remember to adjust the number of conditionals according to the number of waves.

    if ($@wave_cave7 == 1) message strcharinfo(0), "Oh no, more monsters?!";
    if ($@wave_cave7 == 2) message strcharinfo(0), "I can't give up now!";
    if ($@wave_cave7 == 3) message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation, as if you were being lifted from the ground... When you open your eyes, you are outside of the cave.";

    if ($@wave_cave7 < $@CAVE7_WAVES) goto L_Summon;
    set cavefights, (cavefights ^ BATTLE_CAVE7);
    warp "025-3.gat", 70, 59;
    goto L_Cleaning;
    end;

L_Cleaning:
    attachrid(getcharid(3,$@cave7fighter$));
    set $@wave_cave7, 0;
    set $@cave7_kills, 0;
    set $@cave7start, 0;
    set $@cave7fighter$, "";
    set $@cave7fighterdeaths$, 0;
    set $@battlecave7, 0;
    killmonster "025-4.gat", "#StartCaveFight7::OnMonsterDeath";
    end;

OnMonsterDeath:
    set $@cave7_kills, $@cave7_kills + 1;
    if ($@cave7_kills >= $@CAVE7_MONSTERS_QTY[1] + $@CAVE7_MONSTERS_QTY[2] + $@CAVE7_MONSTERS_QTY[3]) goto L_Done;
    end;

L_Close:
    close;

L_no_root:
    mes "I don't have any root in my inventory!";
    close;

onInit:
// Here you can define the specifics of each battle cave.
// Monsters IDs to be spawned.
    setarray $@CAVE7_MONSTERS_IDS[1], 1087, 1088, 1083, 1084;
// Number of monsters of each ID.
    setarray $@CAVE7_MONSTERS_QTY[1], 3, 2, 2, 2;
// Number of waves.
    set $@CAVE7_WAVES, 3;
// Maximum time (in seconds) for the player to finish the fight.
    set $@CAVE7_TIME, 900;
}

// ---------------------  Cave 7 Checker  ----------------------------

025-4.gat,42,219,0	script	#CheckCaveFight7	45,1,1,{
    if ($@wave_cave7 != 0) message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
    if ($@wave_cave7 == 0) goto L_Done;
    end;

L_Done:
    warp "025-3.gat", 70, 60;
    set $@battlecave7, 0;
    set $@cave7fighter$, "";
    set $@cave7fighterdeaths, 0;
    set $@cave7start, 0;
    set $@timercontrol7, 1;
    end;
}

// ---------------------------    Cave 8    -------------------------------

025-4.gat,105,210,0	script	#StartCaveFight8	324,{
    if ($@wave_cave8 != 0) end;
    if (Rossy_Quest < 15) goto L_Cheat;
    if ($@battlecave8 == 1) goto L_Start;
    end;
    
L_Cheat:
    message strcharinfo(0), "You shouldn't be here, you cheater.";
    percentheal -100, 0;
    end;

L_Start:
    menu
        "Place a root at the center of the energy source.", -,
        "I am not prepared yet!", L_Close;
    if ((countitem("Root")<1)) goto L_no_root;
    close2;
    delitem "Root", 1;
    message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";    
  

L_Summon:
    set $@cave8_loop, $@cave8_loop + 1;
    areamonster "025-4.gat",90, 193, 119, 216,"",$@CAVE8_MONSTERS_IDS[$@cave8_loop],$@CAVE8_MONSTERS_QTY[$@cave8_loop],"#StartCaveFight8::OnMonsterDeath";
    if ($@cave8_loop <= getarraysize($@CAVE8_MONSTERS_IDS)) goto L_Summon;
    set $@cave8_loop, 0;
    set $@wave_cave8, $@wave_cave8 + 1;
    end;

L_Done:
    set $@cave8_kills, 0;
    attachrid(getcharid(3,$@cave8fighter$));

// Here you can define the messages to be shown for the players on the beginning of each wave.
// Remember to adjust the number of conditionals according to the number of waves.

    if ($@wave_cave8 == 1) message strcharinfo(0), "Oh no, more monsters?!";
    if ($@wave_cave8 == 2) message strcharinfo(0), "I can't give up now!";
    if ($@wave_cave8 == 3) message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation, as if you were being lifted from the ground... When you open your eyes, you are outside of the cave.";

    if ($@wave_cave8 < $@CAVE8_WAVES) goto L_Summon;
    set cavefights, (cavefights ^ BATTLE_CAVE8);
    warp "025-3.gat", 138, 94;
    goto L_Cleaning;
    end;

L_Cleaning:
    attachrid(getcharid(3,$@cave8fighter$));
    set $@wave_cave8, 0;
    set $@cave8_kills, 0;
    set $@cave8start, 0;
    set $@cave8fighter$, "";
    set $@cave8fighterdeaths$, 0;
    set $@battlecave8, 0;
    killmonster "025-4.gat", "#StartCaveFight8::OnMonsterDeath";
    end;

OnMonsterDeath:
    set $@cave8_kills, $@cave8_kills + 1;
    if ($@cave8_kills >= $@CAVE8_MONSTERS_QTY[1] + $@CAVE8_MONSTERS_QTY[2] + $@CAVE8_MONSTERS_QTY[3]) goto L_Done;
    end;

L_Close:
    close;

L_no_root:
    mes "I don't have any root in my inventory!";
    close;

onInit:
// Here you can define the specifics of each battle cave.
// Monsters IDs to be spawned.
    setarray $@CAVE8_MONSTERS_IDS[1], 1087, 1088, 1083, 1084;
// Number of monsters of each ID.
    setarray $@CAVE8_MONSTERS_QTY[1], 3, 2, 2, 2;
// Number of waves.
    set $@CAVE8_WAVES, 3;
// Maximum time (in seconds) for the player to finish the fight.
    set $@CAVE8_TIME, 900;
}

// ---------------------  Cave 8 Checker  ----------------------------

025-4.gat,105,216,0	script	#CheckCaveFight8	45,1,1,{
    if ($@wave_cave8 != 0) message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
    if ($@wave_cave8 == 0) goto L_Done;
    end;

L_Done:
    warp "025-3.gat", 138, 95;
    set $@battlecave8, 0;
    set $@cave8fighter$, "";
    set $@cave8fighterdeaths, 0;
    set $@cave8start, 0;
    set $@timercontrol8, 1;
    end;
}

// ---------------------------    Cave 9    -------------------------------

025-4.gat,157,220,0	script	#StartCaveFight9	324,{
    if ($@wave_cave9 != 0) end;
    if (Rossy_Quest < 15) goto L_Cheat;
    if ($@battlecave9 == 1) goto L_Start;
    end;
    
L_Cheat:
    message strcharinfo(0), "You shouldn't be here, you cheater.";
    percentheal -100, 0;
    end;

L_Start:
    menu
        "Place a root at the center of the energy source.", -,
        "I am not prepared yet!", L_Close;
    if ((countitem("Root")<1)) goto L_no_root;
    close2;
    delitem "Root", 1;
    message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";    

L_Summon:
    set $@cave9_loop, $@cave9_loop + 1;
    areamonster "025-4.gat",144, 192, 173, 226,"",$@CAVE9_MONSTERS_IDS[$@cave9_loop],$@CAVE9_MONSTERS_QTY[$@cave9_loop],"#StartCaveFight9::OnMonsterDeath";
    if ($@cave9_loop <= getarraysize($@CAVE9_MONSTERS_IDS)) goto L_Summon;
    set $@cave9_loop, 0;
    set $@wave_cave9, $@wave_cave9 + 1;
    end;

L_Done:
    set $@cave9_kills, 0;
    attachrid(getcharid(3,$@cave9fighter$));

// Here you can define the messages to be shown for the players on the beginning of each wave.
// Remember to adjust the number of conditionals according to the number of waves.

    if ($@wave_cave9 == 1) message strcharinfo(0), "Oh no, more monsters?!";
    if ($@wave_cave9 == 2) message strcharinfo(0), "I can't give up now!";
    if ($@wave_cave9 == 3) message strcharinfo(0), "As soon as you kill the last monster, your vision blacks out and you feel a strange sensation, as if you were being lifted from the ground... When you open your eyes, you are outside of the cave.";

    if ($@wave_cave9 < $@CAVE9_WAVES) goto L_Summon;
    set cavefights, (cavefights ^ BATTLE_CAVE9);
    warp "025-3.gat", 138, 158;
    goto L_Cleaning;
    end;

L_Cleaning:
    attachrid(getcharid(3,$@cave9fighter$));
    set $@wave_cave9, 0;
    set $@cave9_kills, 0;
    set $@cave9start, 0;
    set $@cave9fighter$, "";
    set $@cave9fighterdeaths$, 0;
    set $@battlecave9, 0;
    killmonster "025-4.gat", "#StartCaveFight9::OnMonsterDeath";
    end;

OnMonsterDeath:
    set $@cave9_kills, $@cave9_kills + 1;
    if ($@cave9_kills >= $@CAVE9_MONSTERS_QTY[1] + $@CAVE9_MONSTERS_QTY[2] + $@CAVE9_MONSTERS_QTY[3]) goto L_Done;
    end;

L_Close:
    close;

L_no_root:
    mes "I don't have any root in my inventory!";
    close;

onInit:
// Here you can define the specifics of each battle cave.
// Monsters IDs to be spawned.
    setarray $@CAVE9_MONSTERS_IDS[1], 1087, 1088, 1083, 1084;
// Number of monsters of each ID.
    setarray $@CAVE9_MONSTERS_QTY[1], 3, 2, 2, 2;
// Number of waves.
    set $@CAVE9_WAVES, 3;
// Maximum time (in seconds) for the player to finish the fight.
    set $@CAVE9_TIME, 900;
}

// ---------------------  Cave 9 Checker  ----------------------------

025-4.gat,157,226,0	script	#CheckCaveFight9	45,1,1,{
    if ($@wave_cave9 != 0) message strcharinfo(0), "You can't get out! Seems like a barrier was created when the energy transmuted itself into monsters.";
    if ($@wave_cave9 == 0) goto L_Done;
    end;

L_Done:
    warp "025-3.gat", 138, 158;
    set $@battlecave9, 0;
    set $@cave9fighter$, "";
    set $@cave9fighterdeaths, 0;
    set $@cave9start, 0;
    set $@timercontrol9, 1;
    end;
}

// ---------------------  Boss Cave  ----------------------------

025-4.gat,157,30,0	script	#StartBossCaveFight	325,{
    if ($@wave_cave10 != 0) end;
    if (Rossy_Quest >= 16) end;
    if ($@battlebosscave == 1 && cavefights & BATTLE_CAVE1 && cavefights & BATTLE_CAVE2 && cavefights & BATTLE_CAVE3 && cavefights & BATTLE_CAVE4 && cavefights & BATTLE_CAVE5 && cavefights & BATTLE_CAVE6 && cavefights & BATTLE_CAVE7 && cavefights & BATTLE_CAVE8 && cavefights & BATTLE_CAVE9 && Rossy_Quest == 15) goto L_Start;
    message strcharinfo(0), "You shouldn't be here, you cheater.";
    percentheal -100, 0;
    end;

L_Start:
    menu
        "Place a root at the center of the energy source.", -,
        "I am not prepared yet!", L_Close;
    if ((countitem("Root")<1)) goto L_no_root;
    close2;
    delitem "Root", 1;
    message strcharinfo(0), "As you place the root on the energy source, earth monsters seem to emerge from the ground.";    

L_Summon:
    set $@cave10_loop, $@cave10_loop + 1;
    areamonster "025-4.gat",142, 24, 172, 48,"",$@CAVE10_MONSTERS_IDS[$@cave10_loop],$@CAVE10_MONSTERS_QTY[$@cave10_loop],"#StartBossCaveFight::OnMonsterDeath";
    if ($@cave10_loop <= getarraysize($@CAVE10_MONSTERS_IDS)) goto L_Summon;
    set $@cave10_loop, 0;
    set $@wave_cave10, $@wave_cave10 + 1;
    end;

L_SummonBoss:
    attachrid(getcharid(3,$@cave10fighter$));
    areamonster "025-4.gat",142, 24, 172, 48,"",$@BOSS,1,"#StartBossCaveFight::OnBossDeath";
    stopnpctimer;
    setnpctimer 0;    
    end;

L_Done:
    set $@cave10_kills, 0;
    attachrid(getcharid(3,$@cave10fighter$));

// Here you can define the messages to be shown for the players on the beginning of each wave.
// Remember to adjust the number of conditionals according to the number of waves.

    if ($@wave_cave10 == 1) message strcharinfo(0), "I can't give up now!";
    if ($@wave_cave10 == 2) message strcharinfo(0), "I feel I'm getting close to the end...";
    if ($@wave_cave10 == 3) message strcharinfo(0), "What? This is harder than I imagined!";
    if ($@wave_cave10 == 4) message strcharinfo(0), "Finally! It seems I have defeated all of them!";

    if ($@wave_cave10 < $@CAVE10_WAVES) goto L_Summon;
    set $@wave_cave10, 5;
    startnpctimer;
    end;

L_Cleaning:
    attachrid(getcharid(3,$@cave10fighter$));
    set $@wave_cave10, 0;
    set $@cave10_kills, 0;
    set $@cave10start, 0;
    set $@cave10fighter$, "";
    set $@cave10fighterdeaths$, 0;
    set $@battlebosscave, 0;
    killmonster "025-4.gat", "#StartBossCaveFight::OnMonsterDeath";
    killmonster "025-4.gat", "#StartBossCaveFight::OnBossDeath";
    end;

L_CleaningNorid:
    stopnpctimer;
    setnpctimer 0;    
    set $@wave_cave10, 0;
    set $@cave10_kills, 0;
    set $@cave10start, 0;
    set $@cave10fighter$, "";
    set $@cave10fighterdeaths$, 0;
    set $@battlebosscave, 0;
    killmonster "025-4.gat", "#StartBossCaveFight::OnMonsterDeath";
    killmonster "025-4.gat", "#StartBossCaveFight::OnBossDeath";
    end;

OnTimer4000:
    if (isloggedin(getcharid(3,$@cave10fighter$))==0) goto L_CleaningNorid;
    attachrid(getcharid(3,$@cave10fighter$));
    set @boss, @boss + 1;
    if (@boss == 1) message strcharinfo(0), "You feel something strange... Looks like something terrible is about to show up in this cave.";
    if (@boss == 2) goto L_SummonBoss;
    setnpctimer 0;
    end;

OnMonsterDeath:
    set $@cave10_kills, $@cave10_kills + 1;
    if ($@cave10_kills >= $@CAVE10_MONSTERS_QTY[1] + $@CAVE10_MONSTERS_QTY[2] + $@CAVE10_MONSTERS_QTY[3]) goto L_Done;
    end;

OnBossDeath:
    attachrid(getcharid(3,$@cave10fighter$));
    set $@wave_cave10, 0;
    set $@cave10_kills, 0;
    set $@cave10start, 0;
    set $@cave10fighter$, "";
    set $@cave10fighterdeaths$, 0;
    set $@battlebosscave, 0;
    message strcharinfo(0), "What a harsh battle! You lose no time and run to the door before more monsters start to appear.";
    set Rossy_Quest, 16;
    warp "025-4.gat", 93, 33;
    end;

L_Close:
    close;

L_no_root:
    mes "I don't have any root in my inventory!";
    close;

onInit:
// Here you can define the specifics of each battle cave.
// Monsters IDs to be spawned. before the boss.
    setarray $@CAVE10_MONSTERS_IDS[1], 1087, 1088, 1083, 1084;
// Number of monsters of each ID.
    setarray $@CAVE10_MONSTERS_QTY[1], 3, 2, 2, 2;
// ID of the boss monster.
    set $@BOSS, 1086;
// Number of waves. before the boss.
    set $@CAVE10_WAVES, 4;
// Maximum time (in seconds) for the player to finish the fight.
    set $@CAVE10_TIME, 1500;
}

// ---------------------  Boss Cave Checker  ----------------------------

025-4.gat,157,48,0	script	#CheckCaveFightBoss	45,1,1,{
    if (Rossy_Quest >= 17) goto L_Done;
    if (Rossy_Quest == 16) goto L_Julia;
    if (Rossy_Quest < 16) goto L_Out;
    end;

L_Julia:
    message strcharinfo(0), "I shoudn't get out. Julia is still in danger.";
    end;

L_Done:
    warp "025-3.gat", 77, 168;
    end;

L_Out:
    set $@battlebosscave, 0;
    set $@cave10fighter$, "";
    set $@cave10fighterdeaths, 0;
    set $@cave10start, 0;
    set $@timercontrol10, 1;
    warp "025-3.gat", 77, 168;
    end;
}

// ---------------------  Julia Cave Checker Outside  ----------------------------

025-4.gat,157,24,0	script	#CheckJuliaCaveOutside	45,1,1,{
    if (Rossy_Quest > 15) goto L_Done;
    message strcharinfo(0), "As you try to walk through, you bump into a strong magical barrier.";
    percentheal -10, 0;
    end;

L_Done:
    warp "025-4.gat", 93, 33;
    end;
}

// ---------------------  Julia Cave Checker Inside  ----------------------------

025-4.gat,93,35,0	script	#CheckJuliaCaveInside	45,1,1,{
    if (Rossy_Quest >= 17) goto L_Done;
    if (Rossy_Quest == 16) goto L_Save;
    if (Rossy_Quest <= 15) goto L_Cheat;
    end;

L_Cheat:
    message strcharinfo(0), "You shouldn't be here, you cheater.";
    percentheal -100, 0;
    end;

L_Done:
    message strcharinfo(0), "As you go back to the cave you close your eyes, terrified of the bloody battle you just fought in this place, and go straight to the entrance of the cave.";
    warp "025-3.gat", 77, 168;
    end;

L_Save:
    message strcharinfo(0), "You can't leave Julia here, all alone!";
    end;
}