diff options
Diffstat (limited to 'world/map/npc/functions/banker.txt')
-rw-r--r-- | world/map/npc/functions/banker.txt | 228 |
1 files changed, 228 insertions, 0 deletions
diff --git a/world/map/npc/functions/banker.txt b/world/map/npc/functions/banker.txt new file mode 100644 index 00000000..3c060071 --- /dev/null +++ b/world/map/npc/functions/banker.txt @@ -0,0 +1,228 @@ +// + +function script Banker { + + if (BankAccount > 0) callsub S_MoveAccount; + +L_Start: + mes "[" + @npcname$ + "]"; + mes "\"Welcome to the bank!"; + mes "How can I help you?\""; + next; + menu + "Deposit", L_Dep, + "Withdraw", L_With, + "Check my balance", L_Balance, + "Open my storage", L_Storage, + "Change Bank Options", L_Change, + "Nevermind", L_Nev; + + close; + +// need to close window before opening storage. +L_Storage: + if (#BankOptions & OPT_STORAGE_CLOSE) close2; + openstorage; + if (#BankOptions & OPT_STORAGE_CLOSE) end; + 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", -; + 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", -; + goto 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; + +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", -; + 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", -; + goto 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; + +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) close; + 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; +} |