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


                    

          
              




                    
                      
          
                                 

                                      

                                              
                                  
                                











                                                                               
 
































                                                    
                                             
 

                                                      
                                      
 
                                                

                                              
 
           











                                                                                                    
 



                                                                               
 
          
         
                                                                                                        
                 
 






                                  
         






                                                                                         
 
            
         



                                                                                                                                                                                     
                                                                          


                                                                                 
        


                                                                                 


                                                         
            
         



                                                  
                                                        




                                                       
                                                        





                                                       

               
                                                        















                                                                                                                              
 










                                                                                          
 
               



                                                                 
 
          
         


                                                                                                                                                                     
 

                       
 

                                                                                    
                                                               
                       
 




                                                
 
              
                 

                                 
                                           




                                                              
 
                
                 
                                 
                               
                                           



                                                              

          
         
         
                                                         
                  
                         

                                          
 
         

                                     


                                                       
 


                    


          
// Evol scripts.	
// Authors:
//    Vasily_Makarov
//    4144
//    Reid
//    Ablu
//    alastrim
// Description:
//    Rat killer NPC
// 4 bits array:
//    ShipQuests
// Variable:
//    ShipQuests_Peter
// Values:
//    0   did not start the quest
//    1   task given
//    2   task given + reward expected
//    3   task completed without reward
//    4   asked for reward after completing it
//    5   task done + reward given
// "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, geta4(ShipQuests, ShipQuests_Peter);
    if (@q < 1) goto L_Task;
    if (@q == 1 || @q == 2) goto L_Rfail;
    if (@q == 3 || @q == 4) goto L_Rwin;
    doevent "Peter::OnStartOutside";
    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,{

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

    set @q, geta4(ShipQuests, ShipQuests_Peter);
    if (@q == 1 || @q == 2) goto OnReturnFail;
    if (@q >= 3) goto OnReturnWin;

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?");
    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!"), -;
    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.");
    goto L_Close;

OnTooWeak:
    mesn;
    mesq lg("I need help for cleaning the wedge of the ship, but you aren't strong enough to help me.");
    goto L_Close;

OnStop:
    mesn;
    mesq l("You can't go there!");
    warp "000-2-1",61,36;
    close;

OnReturnFail:
    mesn;
    mesq l("I see it is not easy to get rid of those rattos. Do you want to try again?");
    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!"), -;
    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."), -;

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

L_BonusTask:
    mesn;
    mesq l("I will give you @@gp.", 500);
    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 == 0) seta4 ShipQuests, ShipQuests_Peter, 2;
    if (@q == 3) seta4 ShipQuests, ShipQuests_Peter, 4;
    goto L_Start;

L_Task:
    if ($@RAT_SAILOR_HELPER$ != "") goto OnDontneedHelp;
    if (@q == 0) seta4 ShipQuests, 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.");
    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 are 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, geta4(ShipQuests, 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;
    seta4 ShipQuests, ShipQuests_Peter, 5;
    goto L_CleaningClose;

L_Thanks:
    mesn;
    mesq l("Thanks for helping me!");
    set @q, geta4(ShipQuests, ShipQuests_Peter);
    if (@q == 1) seta4 ShipQuests, ShipQuests_Peter, 3;
    goto L_CleaningClose;

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

}