summaryrefslogblamecommitdiff
path: root/npc/000-2-1/peter.txt
blob: c38c5abb34299d4a2743f3062c08d21c53dfca09 (plain) (tree)
1
2
3
4
5
6
7
8
9
                        


                    

          
              
               
                 


                
                      
          
                                 




                                                        
                                  


                                                                                
                                                                   








                                                                          
 




                                                    
                                   
                                      

                                         
                                  
                                 



                            
 



                                    
 



                                
 



                                  
 



                                 
 
          
 

 
                                               
 
                                         
                                          
                                      
 
                                   
                                              

                                                         
 
           

                           
                           


                                                                                                    

         



                                                            


           
                                                         
 
                 
 


                                                                               


                    
                                                                                                                                                               
 
                 
 
          
         
                                                                                                 
 
                 
 
       

                         

                                  
 


             
         
                                                                                        

         



                                                                              


           
                                                         
 
                 
 
            
         
                                                                                                                                                                                     
 
                           
 

                                                         
                                                                          
                                                                                 

                
 
        
                                                        
                                                                                 
 

           
                                                         
 

          
            
           
         
                                         

         
        


                                                      
                                                        
                                          
                                          
 


                 
           
                                                        
                                          




                                   

               
                                                        




                                             
 









                                                                                                                              
 
        
 









                                                                                          
 
        
 
               

                                                                 
         
                                                      
 
                 
 
          
         
                                                                                                                                                                    
                           
 
                         
 

                       
 

                                                                                    
                                                               
 
                       
 

                           
                                   
                                          
 
                  
 
              
                 

                                 
                                           



                                                              
 
        
 
                
                 
                                 
                               
                                           



                                                              
 

          
         
         
                                                         
                  
                         
                             
 
                         
 
         

                                     

                                          
 
                         
 


                    
 

          
 
// Evol scripts.	
// Authors:
//    Vasily_Makarov
//    4144
//    Reid
//    Ablu
//    Alastrim
// Description:
//    Rat hunter.
// 4 bits array:
//    ShipQuests
// Variable:
//    ShipQuests_Peter
// Values:
//    0   Doesn't know the quest.
//    1   Task given.
//    2   Task given and reward expected.
//    3   Task completed without reward.
//    4   Asked for reward after completion of the task.
//    5   Task done and reward given.
//    6   Did not start the quest.
// "000-2-2.gat" - map with mobs.
// "$@RAT_SAILOR_HELPER$" - Name of the participant.
// "$@RAT_SAILOR_DEATHS - Number of deaths when the paticipant starts the fight.
// "$@RAT_SAILOR_CONTROL" - Explanation of each index of the array:
// [1] = Shows status of Ratto number 1 (1 is dead and 0 is alive).
// [2] = Shows status of Ratto number 2 (1 is dead and 0 is alive).
// [3] = Shows status of Ratto number 3 (1 is dead and 0 is alive).
// [4] = Shows status of Ratto number 4 (1 is dead and 0 is alive).
// [5] = Shows how many seconds passed since Ratto number 1 died.
// [6] = Shows how many seconds passed since Ratto number 2 died.
// [7] = Shows how many seconds passed since Ratto number 3 died.
// [8] = Shows how many seconds passed since Ratto number 4 died.
// [9] = Shows how many seconds passed since the player started the quest.

000-2-1.gat,61,34,0,1	script	AreaNPC	0,0,1,{

OnTouch:
    if (BaseLevel < 5) goto L_Stop;
    if ($@RAT_SAILOR_HELPER$ != "") goto L_Occupied;
    set @q, getq(ShipQuests_Peter);
    if (@q < 1 || @q > 5) goto L_Task;
    if (@q == 1 || @q == 2) goto L_Rfail;
    if (@q == 3 || @q == 4) goto L_Rwin;
    if (@q > 5) goto L_SecondTime;
    doevent "Peter::OnReturnWin";
    close;

L_Stop:
    doevent "Peter::OnStop";

    close;

L_Occupied:
    doevent "Peter::OnDontneedHelp";

    close;

L_Task:
    doevent "Peter::OnGiveTask";

    close;

L_Rfail:
    doevent "Peter::OnReturnFail";

    close;

L_Rwin:
    doevent "Peter::OnReturnWin";

    close;

}

000-2-1.gat,60,35,0,1	script	Peter	303;3,{

    set @q_julia, getq(ShipQuests_Julia);
    if (@q_julia == 0) goto L_TalkToJulia;
    if (BaseLevel < 5) goto OnTooWeak;

    set @q, getq(ShipQuests_Peter);
    if (@q == 1 || @q == 2) goto OnReturnFail;
    if (@q == 3 || @q == 4 || @q == 5)  goto OnReturnWin;
    setq ShipQuests_Peter, 6;

OnGiveTask:
    mesn;
    mesq g(l("Hey, girl!"),
           l("Hey, man!"));
    next;
    mesn;
    mesq l("I need somebody who can clean the bottom of the ship of these Ratto, can you help me?");
    next;

    menu
        l("Yeah, but what reward will I get?"), L_BonusTask,
        l("Why not, I need to train anyway."), L_Task,
        l("No, they are way too dangerous for me!"), -;

    mes "";
    mesn;
    mesq l("Ok, ok. Come back if you change your mind.");

    goto L_Close;

L_TalkToJulia:
    mesn;
    mesq l("Hey, you should go see Julia to be registered on the ship board.");
    next;

    mesn "Narrator";
    mes col(l("Julia is on the upper level of the ship, use the arrow keys to walk to the stairs or click on the stairs at the top right of your screen."), 9);

    goto L_Close;

OnTooWeak:
    mesn;
    mesq lg("I need help for clean the edge of the ship, but you aren't strong enough to help.");

    goto L_Close;

OnStop:
    warp "000-2-1",61,36;

    mesn;
    mesq l("You can't go there!");

    close;

OnReturnFail:
    mesn;
    mesq l("I see it's not easy to get rid of those Rattos. Do you want to try again?");
    next;

    menu
        l("Yeah, but I would like to make sure I get a reward."), L_BonusTask,
        l("Why not, I need to train anyway."), L_Task,
        l("No, they are way too dangerous for me!"), -;

    mes "";
    mesn;
    mesq l("Ok, ok. Come back if you change your mind.");

    goto L_Close;

OnReturnWin:
    mesn;
    mesq l("Thanks again for helping me. But those Rattos are a permanent problem and your help is always welcome. The only problem is that I can give you a reward only one time.");

    if (@q == 3 || @q == 4)

    menu
        l("Did you say reward? I want it!"), L_BonusTask,
        l("I am not worried about rewards. I just want to help."), L_Task,
        l("Sorry, I am not in the mood for another fight with those Rattos."), -;

    if (@q == 5)

    menu
        l("No problem, I can help you anyway."), L_Task,
        l("Sorry, I am not in the mood for another fight with those Rattos."), -;

    mes "";
    mesn;
    mesq l("Ok, ok. Come back if you change your mind.");

    close;

L_BonusTask:
    mes "";
    mesn;
    mesq l("I will give you @@gp.", 500);
    next;

    menu
        lg("Okay, I'm ready to work!"), -,
        l("What? This reward is too small!"), L_Close;

    if ($@RAT_SAILOR_HELPER$ != "") goto OnDontneedHelp;
    if (@q == 6) setq ShipQuests_Peter, 2;
    if (@q == 3) setq ShipQuests_Peter, 4;

    goto L_Start;

L_Task:
    mes "";
    if ($@RAT_SAILOR_HELPER$ != "") goto OnDontneedHelp;
    if (@q == 6) setq ShipQuests_Peter, 1;
    goto L_Start;

L_Start:
    mesn;
    mesq l("Okay, you can start!");

OnStartOutside:
    if ($@RAT_SAILOR_HELPER$ != "") goto OnDontneedHelp;
    set $@RAT_SAILOR_HELPER$, strcharinfo(0);
    set $@RAT_SAILOR_DEATHS, PC_DIE_COUNTER;
    initnpctimer;
    warp "000-2-2.gat", 48, 28;
    doevent "RattosControl::OnSpawn";

    goto L_Close;

OnTimer5000:
    if (attachrid(getcharid(3,$@RAT_SAILOR_HELPER$)) == 0) goto L_Logoff;
    set $@RAT_SAILOR_CONTROL[9], $@RAT_SAILOR_CONTROL[9] + 5;
    if ($@RAT_SAILOR_CONTROL[9] > 100) goto L_Timeout;
    if (PC_DIE_COUNTER > $@RAT_SAILOR_DEATHS) goto L_Dead;
    if ($@RAT_SAILOR_CONTROL[1] && $@RAT_SAILOR_CONTROL[2] && $@RAT_SAILOR_CONTROL[3] && $@RAT_SAILOR_CONTROL[4]) goto L_Done;
    if (getmapusers("000-2-2.gat") == 0) goto L_CleaningEnd;
    goto L_CheckRattos;

    end;

L_CheckRattos:
    if ($@RAT_SAILOR_CONTROL[1]) set $@RAT_SAILOR_CONTROL[5], $@RAT_SAILOR_CONTROL[5] + 5;
    if ($@RAT_SAILOR_CONTROL[2]) set $@RAT_SAILOR_CONTROL[6], $@RAT_SAILOR_CONTROL[6] + 5;
    if ($@RAT_SAILOR_CONTROL[3]) set $@RAT_SAILOR_CONTROL[7], $@RAT_SAILOR_CONTROL[7] + 5;
    if ($@RAT_SAILOR_CONTROL[4]) set $@RAT_SAILOR_CONTROL[8], $@RAT_SAILOR_CONTROL[8] + 5;
    if ($@RAT_SAILOR_CONTROL[5] > 40) doevent "RattosControl::OnRatto1Respawn";
    if ($@RAT_SAILOR_CONTROL[6] > 40) doevent "RattosControl::OnRatto2Respawn";
    if ($@RAT_SAILOR_CONTROL[7] > 40) doevent "RattosControl::OnRatto3Respawn";
    if ($@RAT_SAILOR_CONTROL[8] > 40) doevent "RattosControl::OnRatto4Respawn";
    setnpctimer 0;

    end;

OnDontneedHelp:
    mesn;
    mesq l("I don't need your help right now, come back later.");
    next;
    mesq l("@@ is helping me.", $@RAT_SAILOR_HELPER$);

    goto L_Close;

L_Timeout:
    mesn;
    mesq l("Hey! Be careful. You can't stay in this basement for so long, you're going to get sick. Come outside and take a break, maybe you can try again later.");
    warp "000-2-1", 61, 36;

    goto L_CleaningClose;

L_Logoff:
    goto L_CleaningEnd;

L_Dead:
// Warps the dead body outside, so it does not interfere with the getmapusers check.
    if (getmapusers("000-2-2.gat") > 0) warp "000-2-1", 61, 36;

    goto L_CleaningEnd;

L_Done:
    warp "000-2-1", 61, 36;
    set @q, getq(ShipQuests_Peter);
    if (@q == 2 || @q == 4) goto L_Reward;

    goto L_Thanks;

L_CleaningEnd:
    stopnpctimer;
    set $@RAT_SAILOR_HELPER$, "";
    set $@RAT_SAILOR_DEATHS, 0;
    cleararray $@RAT_SAILOR_CONTROL, 0, 10;
    killmonster "000-2-2.gat", "RattosControl::OnRatto1Death";
    killmonster "000-2-2.gat", "RattosControl::OnRatto2Death";
    killmonster "000-2-2.gat", "RattosControl::OnRatto3Death";
    killmonster "000-2-2.gat", "RattosControl::OnRatto4Death";

    end;

L_CleaningClose:
    stopnpctimer;
    set $@RAT_SAILOR_HELPER$, "";
    set $@RAT_SAILOR_DEATHS, 0;
    cleararray $@RAT_SAILOR_CONTROL, 0, 10;
    killmonster "000-2-2.gat", "RattosControl::OnRatto1Death";
    killmonster "000-2-2.gat", "RattosControl::OnRatto2Death";
    killmonster "000-2-2.gat", "RattosControl::OnRatto3Death";
    killmonster "000-2-2.gat", "RattosControl::OnRatto4Death";

    close;

L_Reward:
    mesn;
    mesq l("Good job!") + " " + l("Here's your reward!");
    getexp 100, 0;
    set zeny, zeny + 500;
    setq ShipQuests_Peter, 5;

    goto L_CleaningClose;

L_Thanks:
    mesn;
    mesq l("Thanks for helping me!");
    set @q, getq(ShipQuests_Peter);
    if (@q == 1) setq ShipQuests_Peter, 3;

    goto L_CleaningClose;

L_Close:
    set @q, 0;
    set @q_julia, 0;

    close;

}