summaryrefslogblamecommitdiff
path: root/npc/002-3/nard.txt
blob: 0a51fcfdd4fcff6cdf610f3c1102f0b51f9c4188 (plain) (tree)
1
2
3
4
5
6
7
8
9
                


                   
               

                           
                                             
                                                         
 
                                          

                                                           


                                        
                                  
                                                   
                                 







                                                                                                                    


                                                                                                                    



                                
           




                                


              
                                                                                                                                                    



              
                                                                                                                                        


              
 
       
         



                                                                                                                              

                        
                                       

                                                                                                     

                                                                                   
                                                    
                                
                                                 
                                                               

                        
              
         



                                                                                                                                                               

                             


                                       
                       
                     
                                                         


                                                                                                                       
         
                
                                           


                                                                                                   
                                                                         
 
           





                                                                                                                       
                       
                                                   




                                                                

                                                                     

                             
                                                                                              
             




                                                                      
                                                




                                                
                                             

                                                                    

                                  






                                                                                                                 

                        
                                         

                                                                                         
                         
                              
                 






                                                                                                                
                        
     
 

          
 
           

           
                                                                                        
         
                                                        
         
                  
 
               

           
                                                                              
         
                                                                                   
         
                                                                              
         
                  

         
                
                                           



                                                                                                   
           

                                                                            

                                                                                 
                                                                            
                                                                                  
                                        

           

                        

                            

                        

                   
 
         
                                                     
                                        
                                          
                                                                                                                                    
                                                                                                                                                                                                             

              


                                                                                 




                                                                       
                          
                                   

                                                                                  
                        
                                 

                                 
                            
                           
                            

                                                      






                                                                 

                                                          

                                                                                  
     

          
         
                                                            

                                            
 



                                                  

                                                         

                                                                                                              
 
                                                                                                    
            

                                                                                             
                                                                                                                                    

                                                                                                                                                 







                                                                    
                      
                      





                                                                        




                                                       

         
                      
                     
                             
 




                                                                   




                                                       
 















                                                          



















                                                                                                                                                                         
          

           
                    

                                         
                         
                                  





                                                                                                                      























                                                                                                                                                                                  


                                   

          










                                                                                       


          




                  
// TMW2 scripts.
// Authors:
//    Qwerty Dragon
//    Reid
//    Jesusalva
// Description:
//    Captain Nard dialogs.
//    Nard is a fair merchant ship's captain.
//    Original Nard's from Evol by Qwerty Dragon and Reid

002-3,36,25,0	script	Nard	NPC_NARD,{
    showavatar NPC_NARD;  // this is handled by avatars.xml

    .@narrator = getq(General_Narrator);

L_Checker:
    if (.@narrator) goto L_Travel;
    if (getq(ShipQuests_Julia) >= 3) goto L_NotYet;
    if (debug) goto L_TestServer;
    // Introduction
    mesn;
    mesq l("Hello.");
    next;
    mesq l("Let me introduce myself, I am Nard, captain of this ship.");
    next;
    mesq lg("I am pleased to see that you have woken up and are active. Elmo came here to tell me this good news!");
    next;
    mesq l("So, how do you feel? I see that Juliet did a marvellous job! You look like you're in good health now.");
    next;

    select
        lg("I feel ok."),
        l("Who's this Juliet?"),
        lg("I'm a bit sick...");
    mes "";
    switch (@menu) {
    case 1:
        mesn;
        mesq l("Good to know.");
        next;
        break;
    case 2:
        mesn;
        mesq lg("You have an awful case of amnesia. She is the nurse and shipkeeper of this ship, and took care of you when you were unconscious.");
        next;
        break;
    case 3:
        mesn;
        mesq l("Well, you'll need to get used to. Being seasick is annoying, so you might want to leave the ship as soon as possible.");
        next;
        break;
    }

L_Main:
    mesn;
    mesq l("We have made a stop at a little island, before making it on to the port of Tulimshar.");
    next;
    mesn;
    mesq l("Ship travels are not free. Also, I have a few friends on the Island, and I would like you to check out on them.");
    next;
    showavatar NPC_ELMO;
    setcamnpc instance_npcname("Elmo");
    mesn l("Elmo");
    mesq l("I, Elmo, captain's deputy, will help you to make the maximum possible money in Candor!");
    mesc l("Elmo has given you an EXP UP and DROP UP Boost until level 20!"), 2;
    mesc l("It also expires after two hours. In such case, talk to him again!"), 2;
    // Actually, why don't we apply it right now...?
    .@BONUS=NewcomerEXPDROPUP();
    specialeffect FX_SPECIAL, SELF, getcharid(3);
    mesc l("EXP Gain raised in @@% for one hour!", .@BONUS), 2;
    next;
    showavatar NPC_NARD;
    setcamnpc;
    mesn;
    mesq l("After that, we're going to Tulimshar. Tulim is the most important city on the world, and the Alliance have an office there.");
    next;
    mesn;
    mesq l("The Alliance can help you in finding out about who you are, why you are here, or from where you came from. So, about the tasks I want completed.");
    LOCATION$ = "Candor";
    setq ShipQuests_Julia, 3;
	// Event handling
	if ($EVENT$ == "Event")
		getitem MercCard_EH, 1;
    // Welcome handling
    if (!#REG_DATE) {
        $@WELCOME_TIMER=gettimetick(2)+900; // 15 minutes
        kamibroadcast("Hey, look, I've rescued \""+strcharinfo(0)+"\" from the sea! Who will @welcome them?!", "Nard");
        #REG_DATE=gettimetick(2);
    }
    next;
    .@price=600;
    mesc b(l(".:: Main Quest 1-3 ::.")), 3;
    msObjective(getq(CandorQuest_HAS) >= 4, l("* Help Ayasha to take care of the kids."));
    msObjective(getq(CandorQuest_Trainer) >= 12, l("* Get trained by Valon, in the big house."));
    msObjective(getq(CandorQuest_Barrel) >= 4, l("* Ask Zegas, the mayoress, if she needs help."));
    msObjective(Zeny >= .@price, l("* Collect @@/@@ GP", Zeny, .@price));

L_Referral:
    // Welcome handling
    if (!#REG_DATE) {
        $@WELCOME_TIMER=gettimetick(2)+600; // 10 minutes
        kamibroadcast("Hey, look, I've rescued \""+strcharinfo(0)+"\" from the sea! Who will @welcome them?!", "Nard");
        #REG_DATE=gettimetick(2);
    }
    // Referral program
    if (#REFERRAL_PROG == 0 && $REFERRAL_ENABLED) {
        next;
        clear;
        showavatar NPC_LOF_RICH;
        mesc l("But before, a message from our developers!"), 3;
        next;
        mesn l("TMW2 Staff");
        mesc l("Hello, and welcome to TMW2: Moubootaur Legends!"), 3;
        next;
        mesn l("TMW2 Staff");
        mesc l("Did you came here by someone advise? If yes, write their name down here!"), 3;
        next;
        mesc l("If this is not the case, just click on \"Send\"."), 3;
        .@ref$="";
        do
        {
            input .@ref$;
            //debugmes "Player invite: "+.@ref$;
            mes "";
            if (.@ref$ != "") {
                .@ref=gf_accid(strip(.@ref$));
                if (.@ref > 0) {
                    if (.@ref == getcharid(3)) {
                        mesn l("TMW2 Staff");
                        mesc l("Hahah, silly, that's yourself!"), 3;
                        mesc l("Try again!"), 3;
                        next;
                        .@ref$="";
                    } else {
                        #REFERRAL_PROG=.@ref;
                        getitembound FriendGift, 1, 1;
                        mesn l("TMW2 Staff");
                        mesc l("Well, welcome to the game! If you have any doubt, shout on #world for help!"), 3;
                        mesc l("Your friend also sent you a gift - open it when you get level 5!"), 3;
                        next;
                    }
                } else {
                    mesn l("TMW2 Staff");
                    mesc l("Oops, there is nobody known as @@ on this game.", .@ref$), 3;
                    mesc l("Could you try again? There could be a typo!"), 3;
                    next;
                    .@ref$="";
                }
            } else {
                .@ref$="None";
                mesn l("TMW2 Staff");
                mesc l("I see. Well, welcome to the game! If you have any doubt, shout on #world for help!"), 3;
                next;
            }
        } while (.@ref$ == "");
    showavatar NPC_NARD;
    }

    close;


L_NeedHelp:
    mes "";
    mesn;
    mesq l("You're pretty much stranded on this forsaken island if you don't help me!");
    next;
    mesq l("Also, I believe hard work always pay off.");
    next;
    goto L_NotYet;

L_CandorIsland:
    mes "";
    mesn;
    mesq l("I come here frequently to trade. It is not deserted nor boring.");
    next;
    mesq l("This is ##BCandor Island##b. A very small rich community lives here.");
    next;
    mesq l("If they were any bigger, monsters would come and kill everyone.");
    next;
    goto L_NotYet;

L_NotYet:
    .@price=600;
    mesc b(l(".:: Main Quest 1-1 ::.")), 3;
    msObjective(getq(CandorQuest_HAS) >= 4, l("* Help Ayasha to take care of the kids."));
    msObjective(getq(CandorQuest_Trainer) >= 12, l("* Get trained by Valon, in the big house."));
    msObjective(getq(CandorQuest_Barrel) >= 4, l("* Ask Zegas, the mayoress, if she needs help."));
    msObjective(Zeny >= .@price, l("* Collect @@/@@ GP", Zeny, .@price));
    mes "";
    select
        rif(Zeny >= .@price, l("I've brought the money you've asked for.")),
        rif(#REFERRAL_PROG == 0 && $REFERRAL_ENABLED && BaseLevel <= 10,
            l("I forgot to say earlier, but indeed, I was invited by someone!")),
        l("Captain, why have you brought me to a deserted boring island?!"),
        l("I don't want to help your \"friends\", bring me to somewhere useful!"),
        l("Please excuse me, captain.");

    mes "";
    if (@menu == 2)
        goto L_Referral;
    if (@menu == 3)
        goto L_CandorIsland;
    if (@menu == 4)
        goto L_NeedHelp;
    if (@menu == 5)
        close;

    mesn;
    if (TUTORIAL && (getq(CandorQuest_HAS)     < 4 ||
        getq(CandorQuest_Barrel)  < 4 ||
        getq(CandorQuest_Trainer) < 12)) {
        mesq l("You didn't help all my friends yet, and without trainment, I can't send you to such dangerous place as Tulimshar.");
        mesc l("NOTE: It is possible to play the game as a crafter/merchant/fisherman, avoiding to kill as much as possible. However, it is not possible to play the game with a total kill count of zero.");
        close;
    }
    // If you did less than 40% Candor quests, please be warned.
    if (reputation("Candor") < 40) {
        mesc l("WARNING: You have done less than %d%% of Candor Quests!", 40), 1;
        mesc l("It may be expensive to return here. Are you sure?"), 1;
        next;
        if (askyesno() == ASK_NO)
            close;
    }
    if (Zeny >= .@price) {
        inventoryplace TulimMap, 1;
        mesq l("Ten, fifty, thousand... Yep, this is the amount I've asked for.");
        next;
        getvaultexp(10);
        setq General_Narrator, 1;
        // Double sure
        setq ShipQuests_Julia, 3;
        Zeny = Zeny-.@price;
        EnterTown("Tulim");
        getitem TulimMap, 1;
        mesq l("Set sail! We're going to Tulimshar!");
        next;
        PC_DEST$="Tulim";
        addtimer nard_time(PC_DEST$)+800, .name$+"::OnNardStage";
        addtimer nard_time(PC_DEST$), "#NardShip::OnEvent";
        @timer_navio_running = 1;
        warp "002-5", 39, 26;
        closeclientdialog;
        end;
    } else {
        mesq l("You still haven't completed your tasks.");
        mes "";
        mesc l("You still need @@ GP for the trip to Tulimshar.", (.@price-Zeny));
    }
    close;

L_Travel:
    // Current nard_reputation() value for 100% discount: 15
    .@price=480;
    .@price-=min(460, nard_reputation()*32);

    mesn;
    mesq l("Hi @@.", strcharinfo(0));
    next;
    mesq l("You are currently at @@.", LOCATION$);
    mes "";
    mes l("A ship travel will cost you @@ GP.", .@price);
    if (ST_TIER == 8)
        mesc l("What are you doing? Go talk to @@  and bring me a @@!", b("Elanore"), getitemlink(Lifestone));

    if (Zeny >= .@price || ((ST_TIER == 7 || ST_TIER == 9) && gettimetick(2) < QUEST_ELEVARTEMPO)) {
        menu
            rif(Zeny >= .@price && LOCATION$ != "Candor", l("To Candor Island.")), L_TCandor,
            rif(Zeny >= .@price && LOCATION$ != "Tulim", l("To Tulimshar.")), L_TTulim,
            rif(Zeny >= .@price && LOCATION$ != "Artis" && $FIRESOFSTEAM && getq(General_Narrator) >= 20, l("To Artis.")), L_TArtis,
            rif(ST_TIER == 7 && gettimetick(2) < QUEST_ELEVARTEMPO ,l("Help me, I need Jesusaves Grimorie!")), L_Tier2,
            rif(ST_TIER == 9 && countitem(Lifestone) && gettimetick(2) < QUEST_ELEVARTEMPO ,l("Help me, I need Jesusaves Grimorie!")), L_Tier2Ok,
            l("No, I'll save my money."), -;
    } else {
        mes l("You still need @@ GP to afford it.", (.@price-Zeny));
    }

    close;

L_TCandor:
    Zeny=Zeny-.@price;
    PC_DEST$="Candor";

    mes "";
    mesn;
    mesq l("Candor Island, then? Yes, that is a pretty island, right?");
    next;
    mesq l("I was planning to go there soon, anyway. All aboard!");
    close2;
    addtimer nard_time(PC_DEST$), "#NardShip::OnEvent";
    @timer_navio_running = 1;
    warp "002-5", 39, 26;
    end;

L_TTulim:
    Zeny=Zeny-.@price;
    PC_DEST$="Tulim";
    @timer_navio_running = 1;

    mes "";
    mesn;
    mesq l("Tulimshar, right? The oldest human city-state!");
    next;
    mesq l("I was planning to go there soon, anyway. All aboard!");
    close2;
    addtimer nard_time(PC_DEST$), "#NardShip::OnEvent";
    @timer_navio_running = 1;
    warp "002-5", 39, 26;
    end;

L_TArtis:
    Zeny=Zeny-.@price;
    PC_DEST$="Artis";
    @timer_navio_running = 1;

    mes "";
    mesn;
    mesq l("Artis, right? So Andrei Sakar summoned you?");
    next;
    mesq l("Hahaha, good luck out there, my friend!");
    close2;
    addtimer nard_time(PC_DEST$), "#NardShip::OnEvent";
    @timer_navio_running = 1;
    warp "002-5", 39, 26;
    end;

L_Tier2:
    mes "";
    mesn;
    mesq l("WHAT?! ARE YOU OUT OF MIND?!?!");
    next;
    mesn;
    if (nard_reputation() < 8) {
        mesq l("THAT GRIMORIE IS A SUPER DUPER MEGA UPER RARE BOOK, I CANNOT GIVE IT TO ANYBODY ASKING ME ABOUT!!");
        next;
        mesn;
        mesq l("GET OUT OF HERE, YOUR NOBODY!");
        close;
    }
    mesq l("That is a rare, precious book, which writes itself!");
    next;
    mesn;
    mesq l("I cannot just give it to you for nothing. Run to Elanore and fetch me a @@. You need to make a new one, an old one I won't accept.", getitemlink(Lifestone));
    ST_TIER=8;
    close;

L_Tier2Ok:
    mes "";
    mesn;
    mesc l("*tut*");
    next;
    inventoryplace JesusalvaGrimorium, 1;
    delitem Lifestone, 1;
    getitem JesusalvaGrimorium, 1;
    getexp 200, 0;
    ST_TIER=10;
    mesn;
    mesq l("Here, take it. If the mana goes out of your body, I'll have your class master to return the book to me.");
    close;

OnNardStage:
    showavatar NPC_NARD;  // this is handled by avatars.xml
    mesn;
    mesq l("Welcome to Tulimshar, @@!", strcharinfo(0));
    mesc l("Nard gives you a map of the city so you don't get lost.");
    next;
    if (GSET_SOULMENHIR_MANUAL) {
        mesn;
        mesq l("You can explore the city as you want, but if I were you, I would ##Btouch the Soul Menhir##b, north of here, to don't respawn at Candor.");
        next;
    } else {
        mesn;
        mesq l("If you die, you'll appear near Tulimshar's Soul Menhir, which is the nearest Menhir to you. You can use @@ if you ever want to change this behavior.", b("@ucp"));
        next;
    }
    mesn;
    mesq l("Other than that, you can explore the city as you want, but as you had a memory loss, You should visit the townhall.");
    next;
    mesn;
    mesq l("When you get out of the ship, it is the first building you'll see. Talk to ##BLua##b, she is an alliance representative.");
    next;
    mesn;
    mesq l("The Alliance have records of everyone. And if you need another trip, talk to me!");
    tutmes l("PROTIP: Every quest you complete in a location, will make ship travels to and from them cheaper!"), "Protip", false;
    next;
    addtimer 2500, "Inac::OnShout";
    closeclientdialog;
    close;

L_TestServer:
    mesc l("THIS IS MOUBOOTAUR LEGENDS TEST SERVER."), 1;
    mesc l("Progress on this server may be %s.", b(l("lost forever"))), 1;
    mes "";
    mesc l("Unless you know what you are doing, please go to Main Server instead."), 1;
    mesc l("Main server is: %s", b("server.moubootaurlegends.org")), 2;
    mes "";
    mesf "@@help://test-server|%s@@", l("more information about test server ->");
    next;
    goto L_Main;

L_Close:
    close;

OnInit:
    .sex = G_MALE;
    .distance = 5;
    end;
}