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

        

                                                                  
                        
        

        






                                                                                                                             
    












                                                                                                                                                    
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         





                                                     
    





                                            


                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          



                                                                      


                                                                                                                                                          
        
 

                              




                                
        

 
                                                                                        

 
                                                             
                                       
                                         
        


                                                                  
                        
        
 
        







                                                                                                                             
 












                                                                                                                                                        
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         













                                                     

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          

 

                                                                      


                                                                                                                                                          



                              




                                


        
                                                                                           
                                                             
                                       
                                         
        


                                                                  
                        
        
 
        







                                                                                                                             
 












                                                                                                                                                          
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         













                                                     

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          
 
 

                                                                      


                                                                                                                                                          



                             




                                


        
                                                                            
                                                             
                                       
                                         
        


                                                                  
                        
        
 
        






                                                                                                                             
 












                                                                                                                                                         
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         













                                                     

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          



                                                                      


                                                                                                                                                          
        
 

                             




                                
        
 
 

                                                                           
                                                             
                                       
                                         
        


                                                                  
                        
        
 
        






                                                                                                                             
 












                                                                                                                                                          
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         













                                                     

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          
 
 

                                                                      


                                                                                                                                                          



                             




                                


        

                                                                                          
                                                             
                                       
                                         
        


                                                                  
                        
        
 
        






                                                                                                                             
 












                                                                                                                                                           
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         













                                                     

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          
 
 

                                                                      


                                                                                                                                                          



                              




                                


        

                                                                                    
                                                             
                                       
                                         

        

                                                                  
                        
        

        







                                                                                                                             
    












                                                                                                                                                         
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         













                                                     

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          
 
 

                                                                      


                                                                                                                                                          



                             




                                


        

                                                                           
                                                             
                                       
                                         
        


                                                                  
                        
        
 
        







                                                                                                                             
 












                                                                                                                                                          
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         













                                                     

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          



                                                                      


                                                                                                                                                          
        
 

                              




                                
        
 
 

                                                                           
                                                             
                                       
                                         
        


                                                                  
                        
        
 
        






                                                                                                                             
 












                                                                                                                                                           
                                                                                  

                                                                            
                                                                          
                                                                                                                                                                                                                                                         













                                                     

                                                                






                                                                                                                  






                                                 
       

                                                         
                                                             
                                 
                                                 
                   
                         
                                                                
                          



                                                                      


                                                                                                                                                          
        
 

                               




                                
        
 
 
                                                                 
 
                                                             
                                        
                                                                                                                                                                                                                                                                                                                                      



                                                                  






                                                                                                                             
 









                                                                                                                                                                
                                                                                            

                      






                                                                                              
                                                                                  
 
                                                                           
                                                                                             
                                                                                            
                                                                                                     


                                                       
                  








                                             







                                                                   
                                                                                                                                            
                                      














                                                                                                                      
                                                                            


                        






                                                 
       

                                                         
                                                              
                                 
                                                  
                          
                     
                                    
                          
                                                                
                            



                                                                         
                                                                
                                       

                                        

        

                                                                            




                              







                                 



                                                                                  



                                                                                                  

        






                                                                                 
                                                                

                                       

                                        
 




                                                                  






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

025-4.gat,41,91,0	script	#StartCaveFight1	324,{
    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], 1050, 1051, 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,110,90,0	script	#StartCaveFight2	324,{
    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], 1050, 1051, 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,168,111,0	script	#StartCaveFight3	324,{
    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], 1050, 1051, 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,32,150,0	script	#StartCaveFight4	324,{
    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], 1050, 1051, 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,100,154,0	script	#StartCaveFight5	324,{
    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], 1050, 1051, 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,159,168,0	script	#StartCaveFight6	324,{
    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], 1050, 1051, 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,39,215,0	script	#StartCaveFight7	324,{
    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], 1050, 1051, 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 (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], 1050, 1051, 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 (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], 1050, 1051, 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,42,0	script	#StartBossCaveFight	324,{
    if (Rossy_Quest == 16) goto L_Found;
    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;
    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;

OnTimer4000:
    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;
    message strcharinfo(0), "What a harsh battle! I should save Julia now.";
    set Rossy_Quest, 16;
    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], 1050, 1051, 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;
    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:
    warp "025-4.gat", 157, 26;
    end;

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