summaryrefslogblamecommitdiff
path: root/world/map/npc/functions/banker.txt
blob: 711275e24fcb5aac2bd3965b0a641b962ce5b0ad (plain) (tree)
1
2
3
4
5
6
7
8
9
10

  
                      
 


                          
                 

        
                                                     




                                 
                                     


                                      

                                        
 

                                               

                                                 
                                                        
                 
 
      














                                                  
                         
 
            








                                                                   
                           

         
                  


                        

          
                   


                        

          
                   


                        

          
                   


                        

           
                    


                        

           
                    


                        

           
                    


                        

          
                     


                         

          
               
                       
                      
                        
 
               
                       
                       
                             

                                             
 
       













                                                   
                         
 
             








                                                                   
                           

          



                            

           



                             

           



                             

           



                             

            



                              

            



                              

            



                              

           



                               
 
           


                              
                         
 
                

                               
                             

                                             
 
          


                                          
                                                                        

                                                                                           
                         
                                                     
                 
 












                                                                                
      


                              
 
          


                                                                  
 
              


                                                 

         






                                                                                                                                                         

                 

                                                         

              

                                                      

         
                      
           
 
//

function|script|Banker
{
    if (BankAccount == 0)
        goto L_Start;
    callsub S_MoveAccount;
    goto L_Start;

L_Start:
    if(@npcname$ == "") set @npcname$, strnpcinfo(1);
    mes "[" + @npcname$ + "]";
    mes "\"Welcome to the bank!";
    mes "How can I help you?\"";
    next;
    menu
        "Open my storage", L_Storage,
        "Deposit", L_Dep,
        "Withdraw", L_With,
        "Check my balance", L_Balance,
        "Change Bank Options", L_Change,
        "Nevermind", L_Nev;

// need to close window before opening storage.
L_Storage:
    if (#BankOptions & OPT_STORAGE_CLOSE) close2;
    openstorage;
    if (#BankOptions & OPT_STORAGE_CLOSE) goto L_Return;
    goto L_Start;

L_Dep:
    mes "[" + @npcname$ + "]";
    mes "\"How much would you like to deposit?\"";
    next;
    menu
        "Other", L_Dep_Input,
        "5,000 GP", L_Dep_5k,
        "10,000 GP", L_Dep_10k,
        "25,000 GP", L_Dep_25k,
        "50,000 GP", L_Dep_50k,
        "100,000 GP", L_Dep_100k,
        "250,000 GP", L_Dep_250k,
        "500,000 GP", L_Dep_500k,
        "1,000,000 GP", L_Dep_1kk,
        "All of my money", L_Dep_All,
        "I've changed my mind", L_Start,
        "Quit", L_Return;

L_Dep_Input:
    input @Amount;
    if (@Amount >= 0)
        goto L_Dep_Continue;
    mes "[" + @npcname$ + "]";
    mes "\"I need a positive amount. What would you like to do?\"";
    menu
        "Go back", L_Start,
        "Try again", L_Dep_Input,
        "Deposit all", L_Dep_All,
        "Nevermind", L_Nev;

L_Dep_5k:
    if (Zeny<5000)
        goto L_NoMoney;
    set @Amount, 5000;
    goto L_Dep_Continue;

L_Dep_10k:
    if (Zeny<10000)
        goto L_NoMoney;
    set @Amount, 10000;
    goto L_Dep_Continue;

L_Dep_25k:
    if (Zeny<25000)
        goto L_NoMoney;
    set @Amount, 25000;
    goto L_Dep_Continue;

L_Dep_50k:
    if (Zeny<50000)
        goto L_NoMoney;
    set @Amount, 50000;
    goto L_Dep_Continue;

L_Dep_100k:
    if (Zeny<100000)
        goto L_NoMoney;
    set @Amount, 100000;
    goto L_Dep_Continue;

L_Dep_250k:
    if (Zeny<250000)
        goto L_NoMoney;
    set @Amount, 250000;
    goto L_Dep_Continue;

L_Dep_500k:
    if (Zeny<500000)
        goto L_NoMoney;
    set @Amount, 500000;
    goto L_Dep_Continue;

L_Dep_1kk:
    if (Zeny<1000000)
        goto L_NoMoney;
    set @Amount, 1000000;
    goto L_Dep_Continue;

L_Dep_All:
    if (Zeny<1)
        goto L_NoMoney;
    set @Amount, Zeny;
    goto L_Dep_Continue;

L_Dep_Continue:
    if (Zeny < @Amount)
        goto L_NoMoney;
    set Zeny, Zeny - @Amount;
    set #BankAccount, #BankAccount + @Amount;
    goto L_Balance;

L_With:
    mes "[" + @npcname$ + "]";
    mes "\"How much would you like to withdraw?\"";
    menu
        "Other", L_With_Input,
        "5,000 GP", L_With_5k,
        "10,000 GP", L_With_10k,
        "25,000 GP", L_With_25k,
        "50,000 GP", L_With_50k,
        "100,000 GP", L_With_100k,
        "250,000 GP", L_With_250k,
        "500,000 GP", L_With_500k,
        "1,000,000 GP", L_With_1kk,
        "All of my money", L_With_All,
        "I've changed my mind", L_Start,
        "Quit", L_Return;

L_With_Input:
    input @Amount;
    if (@Amount >= 0)
        goto L_With_Continue;
    mes "[" + @npcname$ + "]";
    mes "\"I need a positive amount. What would you like to do?\"";
    menu
        "Go back", L_Start,
        "Try again", L_With_Input,
        "Withdraw all", L_With_All,
        "Nevermind", L_Nev;

L_With_5k:
    if (#BankAccount < 5000)
        goto L_NoMoney;
    set @Amount, 5000;
    goto L_With_Continue;

L_With_10k:
    if (#BankAccount < 10000)
        goto L_NoMoney;
    set @Amount, 10000;
    goto L_With_Continue;

L_With_25k:
    if (#BankAccount < 25000)
        goto L_NoMoney;
    set @Amount, 25000;
    goto L_With_Continue;

L_With_50k:
    if (#BankAccount < 50000)
        goto L_NoMoney;
    set @Amount, 50000;
    goto L_With_Continue;

L_With_100k:
    if (#BankAccount < 100000)
        goto L_NoMoney;
    set @Amount, 100000;
    goto L_With_Continue;

L_With_250k:
    if (#BankAccount < 250000)
        goto L_NoMoney;
    set @Amount, 250000;
    goto L_With_Continue;

L_With_500k:
    if (#BankAccount < 500000)
        goto L_NoMoney;
    set @Amount, 500000;
    goto L_With_Continue;

L_With_1kk:
    if (#BankAccount < 1000000)
        goto L_NoMoney;
    set @Amount, 1000000;
    goto L_With_Continue;

L_With_All:
    if (#BankAccount < 0)
        goto L_NoMoney;
    set @Amount, #BankAccount;
    goto L_With_Continue;

L_With_Continue:
    if (#BankAccount < @Amount)
        goto L_NoMoney;
    set Zeny, Zeny + @Amount;
    set #BankAccount, #BankAccount - @Amount;
    goto L_Balance;

L_Balance:
    mes "[" + @npcname$ + "]";
    mes "\"Your current bank balance is:";
    mes #BankAccount + " GP\"";
    if (!(#BankOptions & OPT_BANK_CLOSE) || (#BankAccount >= 10000000 &&
        BaseLevel >= 85 && !(#BankOptions & OPT_BANK_GOTSHADE))) next;
    if (#BankAccount >= 10000000 && BaseLevel >= 85 && !(#BankOptions & OPT_BANK_GOTSHADE))
        goto L_GiveShade;
    if (#BankOptions & OPT_BANK_CLOSE) goto L_Return;
    goto L_Start;

L_GiveShade:
    mes "\"Oh\"";
    next;
    mes "\"It seems you managed to amass quite a fortune!\"";
    next;
    mes "\"Thank you for using our services. Please accept this little gift.\"";
    set #BankOptions, #BankOptions | OPT_BANK_GOTSHADE;
    getitem "CashiersShade", 1;
    if (#BankOptions & OPT_BANK_CLOSE) goto L_Return;
    next;
    npcaction 9; // clear npc dialog
    goto L_Start;

L_Nev:
    mes "[" + @npcname$ + "]";
    mes "\"Goodbye then.\"";
    return;

L_NoMoney:
    mes "[" + @npcname$ + "]";
    mes "\"Oh dear, it seems that you don't have enough money.\"";
    goto L_Start;

S_MoveAccount:
    set #BankAccount, #BankAccount + BankAccount;
    set BankAccount, 0;
    return;

L_Change:
    setarray @menuitems$, "Keep the current settings", "Close NPC dialog after selecting storage option", "Close NPC dialog after checking your balance";
    if (#BankOptions & OPT_STORAGE_CLOSE) set @menuitems$[1], "Return to main menu after leaving storage";
    if (#BankOptions & OPT_BANK_CLOSE) set @menuitems$[2], "Return to main menu after leaving bank";
    menu
        @menuitems$[0], L_Start,
        @menuitems$[1], L_Change_Storage,
        @menuitems$[2], L_Change_Bank;

L_Change_Storage:
    set #BankOptions, (#BankOptions ^ OPT_STORAGE_CLOSE);
    goto L_Start;

L_Change_Bank:
    set #BankOptions, (#BankOptions ^ OPT_BANK_CLOSE);
    goto L_Start;

L_Return:
    set @npcname$, "";
    return;
}