summaryrefslogtreecommitdiff
path: root/npc/custom
diff options
context:
space:
mode:
Diffstat (limited to 'npc/custom')
-rw-r--r--npc/custom/eAAC_Scripts/Quest Warper.txt1489
-rw-r--r--npc/custom/eAAC_Scripts/banker.txt400
2 files changed, 1889 insertions, 0 deletions
diff --git a/npc/custom/eAAC_Scripts/Quest Warper.txt b/npc/custom/eAAC_Scripts/Quest Warper.txt
new file mode 100644
index 000000000..04d8d2aab
--- /dev/null
+++ b/npc/custom/eAAC_Scripts/Quest Warper.txt
@@ -0,0 +1,1489 @@
+//===== eAthena Script ============================================
+//= Quest Warper Script
+//===== By: =======================================================
+//= Old Warper 2 by Darkchild - Remade with quest format by DZeroX
+//= Huge Rewrite by Neouni
+//===== Current Version: ==========================================
+//= 1.6a
+//===== Compatible With: ==========================================
+//= Any eAthena Version
+//===== Description: ==============================================
+//= Warper that works only after locations are unlocked
+//===== Warning: ==================================================
+// you have to set the securitycode value [1337] the same as in
+// functions_kafras.txt if you changed it !!
+//===== Additional Comments: ======================================
+//= 1.0 - NPCs created
+//= 1.1 - Add Dungeons by sturm
+//= 1.2 - Add All char in account unlocked by ace_killer
+//= 1.3 - Add new 7 towns and 7 dungeons by escoteiro
+// - Correct bug jawaii town by escoteiro
+// - Remove some excessive warpras by escoteiro
+//= 1.4 - Rewrite of the Warpa system [Neouni]
+// - Corrected some bugs caused by autoconverting the old script
+//= 1.4a - Rewrite of menu to be custom for each player [Neouni]
+// - Dungeon listing rewrite
+// - Town listing rewrite
+// - GameMaster can Customise Main menu
+//= 1.4b - Pricing round [Neouni]
+// - GM menu added for pricing
+// - Town Warp pricing tags added
+// - Dungeon Warp pricing tags added
+//= 1.5 - storage functions pricing [Neouni]
+// - storage pricing added
+// - kafra points setting added
+// - kafra storage code security added
+// - Healing scripts pricing added
+// - Heal Part script added
+//= 1.6 - Unfinished Dungeon variable menu's see *BETA* 1.6a comments
+//= 1.6a - Dungeon warp [Neouni]
+// - added option to add a extra fee for going down deeper into dungeon
+// partly by rebuilding the dungeon warping into variable menu's
+
+//=================================================================
+
+//========================Function=&=Script========================
+
+
+function script Q_Warpra {
+ mes "[Warpra]";
+ mes "Hello,";
+ mes "I can warp you to any town or dungeon, but you need to unlock them first.";
+ mes "To unlock them, you have to visit us.";
+ mes "What do you need?";
+
+ if(getarg(0) == 0) callfunc "QWS_MMarray",0;
+ if(getarg(0) == 1) callfunc "QWS_MMarray",1;
+
+ menu @Mmenulist$[0],-,@Mmenulist$[1],-,@Mmenulist$[2],-,@Mmenulist$[3],-,@Mmenulist$[4],-,@Mmenulist$[5],-,@Mmenulist$[6],-,@Mmenulist$[7],-,@Mmenulist$[8],-,@Mmenulist$[9],-;
+
+ if (@pMmenuitems$[@Mmenuref[@menu-1]] == "GameMaster Menu") goto GM_Menu;
+ if (@pMmenuitems$[@Mmenuref[@menu-1]] == "Warp to Towns") goto L_town;
+ if (@pMmenuitems$[@Mmenuref[@menu-1]] == "Warp to Dungeons") goto L_dungeon;
+ if (@pMmenuitems$[@Mmenuref[@menu-1]] == "Why so few Warps ?") goto L_FewWarps;
+ if (@pMmenuitems$[@Mmenuref[@menu-1]] == "Why don't you Unlock this location ?") goto L_NoUnlock;
+ if (@Mmenuref[@menu-1] == 5) goto L_heal_Full;
+ if (@Mmenuref[@menu-1] == 6) goto L_heal_Part;
+ if (@pMmenuitems$[@Mmenuref[@menu-1]] == "Storage") goto L_Storage;
+ if (@pMmenuitems$[@Mmenuref[@menu-1]] == "Guild Storage") goto L_GStorage;
+ if (@pMmenuitems$[@Mmenuref[@menu-1]] == "Cancel") goto L_end;
+ goto L_end;
+
+
+//=====================GM-Menu=Functions===========================
+
+GM_Menu:
+next;
+//----------------Town-Warp
+ if ($QW_TW_OFF == 0) mes "Town warping = ^00FF00 On ^000000";
+ if ($QW_TW_OFF == 1) mes "Town warping = ^FF0000 Off ^000000";
+//----------------Dungeon-Warp
+ if ($QW_DW_OFF == 0) mes "Dungeon warping = ^00FF00 On ^000000";
+ if ($QW_DW_OFF == 1) mes "Dungeon warping = ^FF0000 Off ^000000";
+//----------------Healfull
+ if ($QW_HF == 1) mes "Healing full = ^00FF00 On ^000000";
+//----------------Healpart
+ if ($QW_HP == 1) mes "Healing partly = ^00FF00 On ^000000";
+ if (($QW_HF == 0)&&($QW_HP == 0)) mes "Healing = ^FF0000 Off ^000000";
+//----------------Storage
+ if ($QW_Stor == 1) mes "Storage = ^00FF00 On ^000000";
+ if ($QW_Stor == 0) mes "Storage = ^FF0000 Off ^000000";
+//----------------GuildStorage
+ if ($QW_GStor == 1) mes "Guild Storage = ^00FF00 On ^000000";
+ if ($QW_GStor == 0) mes "Guild Storage = ^FF0000 Off ^000000";
+//----------------GMmenu
+ if ($QW_KPoint == 1) mes "Kafra points collect = ^00FF00 On ^000000";
+ if ($QW_KPoint == 0) mes "Kafra points collect = ^FF0000 Off ^000000";
+set @GMmenu,select("Town Warping","Dungeon Warping","Healing full","Healing partly","Storage","Guild Storage","Kafra points collect","Set Prices","Exit");
+
+// Using callsub and a small check to not make 1 part of the script set it on and the other turning it off again
+// why not use TWSETON & TWSETOFF ?, this saves lines
+
+ if ((@GMmenu == 1)&&($QW_TW_OFF == 0)) callsub TWSET,0;
+ if ((@GMmenu == 1)&&($QW_TW_OFF == 1)) callsub TWSET,1;
+ if ((@GMmenu == 2)&&($QW_DW_OFF == 0)) callsub DWSET,0;
+ if ((@GMmenu == 2)&&($QW_DW_OFF == 1)) callsub DWSET,1;
+ if (@GMmenu == 3)&&($QW_HF == 0) callsub HFSET,0;
+ if (@GMmenu == 3)&&($QW_HF == 1) callsub HFSET,1;
+ if (@GMmenu == 4)&&($QW_HP == 0) callsub HPSET,0;
+ if (@GMmenu == 4)&&($QW_HP == 1) callsub HPSET,1;
+ if (@GMmenu == 5)&&($QW_Stor == 0) callsub SSET,0;
+ if (@GMmenu == 5)&&($QW_Stor == 1) callsub SSET,1;
+ if (@GMmenu == 6)&&($QW_GStor == 0) callsub GSSET,0;
+ if (@GMmenu == 6)&&($QW_GStor == 1) callsub GSSET,1;
+ if (@GMmenu == 7)&&($QW_KPoint == 0) callsub KPoint,0;
+ if (@GMmenu == 7)&&($QW_KPoint == 1) callsub KPoint,1;
+ if (@GMmenu == 8) goto Setprice;
+ close;
+ end;
+
+TWSET:
+if (getarg(0) == 0) set $QW_TW_OFF,1;
+if (getarg(0) == 1) set $QW_TW_OFF,0;
+goto GM_Menu;
+DWSET:
+if (getarg(0) == 0) set $QW_DW_OFF,1;
+if (getarg(0) == 1) set $QW_DW_OFF,0;
+goto GM_Menu;
+HFSET:
+if (getarg(0) == 0) set $QW_HF,1;
+if (getarg(0) == 0) set $QW_HP,0;
+if (getarg(0) == 1) set $QW_HF,0;
+goto GM_Menu;
+HPSET:
+if (getarg(0) == 0) set $QW_HP,1;
+if (getarg(0) == 0) set $QW_HF,0;
+if (getarg(0) == 1) set $QW_HP,0;
+goto GM_Menu;
+SSET:
+if (getarg(0) == 0) set $QW_Stor,1;
+if (getarg(0) == 1) set $QW_Stor,0;
+goto GM_Menu;
+GSSET:
+if (getarg(0) == 0) set $QW_GStor,1;
+if (getarg(0) == 1) set $QW_GStor,0;
+goto GM_Menu;
+KPoint:
+if (getarg(0) == 0) set $QW_KPoint,1;
+if (getarg(0) == 1) set $QW_KPoint,0;
+goto GM_Menu;
+
+
+//======================GM-Menu=Pricing============================
+
+Setprice:
+ next;
+ mes "Scroll thru the list to see all the options";
+//----------------Warp-Basic-Price
+ if ($QW_BW_PRICE != 0) mes "Basic - Warps are = ^00FF00 "+$QW_BW_PRICE+" ^000000";
+ if ($QW_BW_PRICE == 0) mes "Basic - Warps are = ^FF0000 Free ^000000";
+//----------------Warp-Advanced-Price
+ if ($QW_AW_PRICE != 0) mes "Advanced - Warps are = ^00FF00 "+$QW_AW_PRICE+" ^000000";
+ if ($QW_AW_PRICE == 0) mes "Advanced - Warps are = ^FF0000 Free ^000000";
+//----------------Warp-Oversea-Price
+ if ($QW_OW_PRICE != 0) mes "Overseas - Warps are = ^00FF00 "+$QW_OW_PRICE+" ^000000";
+ if ($QW_OW_PRICE == 0) mes "Overseas - Warps are = ^FF0000 Free ^000000";
+//----------------Warp-Oversea-Price
+ if ($QW_DW_FEE != 0) mes "Dungeon level warp fee = ^00FF00 "+$QW_DW_FEE+" ^000000 zeny per level";
+ if ($QW_DW_FEE == 0) mes "Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level";
+//----------------Heal-Full
+ if ($QW_HF_PRICE != 0) mes "Full Healing = ^00FF00 "+$QW_HF_PRICE+" ^000000";
+ if ($QW_HF_PRICE == 0) mes "Full Healing = ^FF0000 Free ^000000";
+//----------------Heal-Part
+ if ($QW_HP_H_PRICE != 0) mes "^FF0000HP ^000000Part Healing = ^00FF00 "+$QW_HP_H_PRICE+" ^000000 a point";
+ if ($QW_HP_H_PRICE == 0) mes "^FF0000HP ^000000Part Healing = ^FF0000 Free ^000000";
+ if ($QW_HP_S_PRICE != 0) mes "^0000FFSP ^000000Part Healing = ^00FF00 "+$QW_HP_S_PRICE+" ^000000 a point";
+ if ($QW_HP_S_PRICE == 0) mes "^0000FFSP ^000000Part Healing = ^FF0000 Free ^000000";
+//----------------Storage
+ if (($QW_S_PRICE != 0)&&($QW_S_PRICE != 60)) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000";
+ if ($QW_S_PRICE == 0) mes "Storage = ^FF0000 Free ^000000";
+ if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000";
+//----------------Guild-Storage
+ if ($QW_GS_PRICE != 0) mes "Guild Storage = ^00FF00 "+$QW_GS_PRICE+" ^000000";
+ if ($QW_GS_PRICE == 0) mes "Guild Storage = ^FF0000 Free ^000000";
+set @GMmenu2,select("Basic - Warps","Advanced - Warps","Overseas - Warps","Dungeon level warp fee","Full Healing","Part Healing","Storage","Guild Storage","Back","Exit");
+ if (@GMmenu2 == 1) goto BWprice;
+ if (@GMmenu2 == 2) goto AWprice;
+ if (@GMmenu2 == 3) goto OWprice;
+ if (@GMmenu2 == 4) goto DWfee;
+ if (@GMmenu2 == 5) goto FHprice;
+ if (@GMmenu2 == 6) goto PHprice;
+ if (@GMmenu2 == 7) goto Sprice;
+ if (@GMmenu2 == 8) goto GSprice;
+ if (@GMmenu2 == 9) goto GM_Menu;
+ close;
+ end;
+
+BWprice:
+ next;
+ if ($QW_BW_PRICE != 0) mes "Basic - Warps are = ^00FF00 "+$QW_BW_PRICE+" ^000000";
+ if ($QW_BW_PRICE == 0) mes "Basic - Warps are = ^FF0000 Free ^000000";
+ mes "Basic - Warps are starter towns and related dungeons";
+ input $QW_BW_PRICE;
+ goto Setprice;
+
+AWprice:
+ next;
+ if ($QW_AW_PRICE != 0) mes "Advanced - Warps are = ^00FF00 "+$QW_AW_PRICE+" ^000000";
+ if ($QW_AW_PRICE == 0) mes "Advanced - Warps are = ^FF0000 Free ^000000";
+ mes "Advanced - Warps are towns on the same island but not close to any starter town";
+ input $QW_AW_PRICE;
+ goto Setprice;
+
+OWprice:
+ next;
+ if ($QW_OW_PRICE != 0) mes "Overseas - Warps are = ^00FF00 "+$QW_OW_PRICE+" ^000000";
+ if ($QW_OW_PRICE == 0) mes "Overseas - Warps are = ^FF0000 Free ^000000";
+ mes "Overseas - Warps are towns and dungeons overseas reachable by boat from alberta";
+ input $QW_OW_PRICE;
+ goto Setprice;
+
+DWfee:
+ if ($QW_DW_FEE != 0) mes "Dungeon level warp fee = ^00FF00 "+$QW_DW_FEE+" ^000000 zeny per level";
+ if ($QW_DW_FEE == 0) mes "Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level";
+ mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee";
+ mes "These costs are on top of the regular Warp costs";
+ input $QW_DW_FEE;
+ goto Setprice;
+
+FHprice:
+ next;
+ if ($QW_HF_PRICE != 0) mes "Full Healing = ^00FF00 "+$QW_HF_PRICE+" ^000000";
+ if ($QW_HF_PRICE == 0) mes "Full Healing = ^FF0000 Free ^000000";
+ mes "Instant full healing 1 price";
+ input $QW_HF_PRICE;
+ goto Setprice;
+
+PHprice:
+ next;
+ if ($QW_HP_H_PRICE != 0) mes "^FF0000HP ^000000Part Healing = ^00FF00 "+$QW_HP_H_PRICE+" ^000000 a point";
+ if ($QW_HP_H_PRICE == 0) mes "^FF0000HP ^000000Part Healing = ^FF0000 Free ^000000";
+ if ($QW_HP_S_PRICE != 0) mes "^0000FFSP ^000000Part Healing = ^00FF00 "+$QW_HP_S_PRICE+" ^000000 a point";
+ if ($QW_HP_S_PRICE == 0) mes "^0000FFSP ^000000Part Healing = ^FF0000 Free ^000000";
+ mes "Healing price per 1 HP";
+ mes "Healing price per 1 SP";
+ mes "2 inputs, first HP then SP";
+ input $QW_HP_H_PRICE;
+ input $QW_HP_S_PRICE;
+ goto Setprice;
+
+Sprice:
+ next;
+ if (($QW_S_PRICE != 0)&&($QW_S_PRICE != 60)) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000";
+ if ($QW_S_PRICE == 0) mes "Storage = ^FF0000 Free ^000000";
+ if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000";
+ mes "Storage cost, if set to 60 Kafra pricing will be handled";
+ input $QW_S_PRICE;
+ goto Setprice;
+
+GSprice:
+ next;
+ if ($QW_GS_PRICE != 0) mes "Guild Storage = ^00FF00 "+$QW_GS_PRICE+" ^000000";
+ if ($QW_GS_PRICE == 0) mes "Guild Storage = ^FF0000 Free ^000000";
+ mes "Guild Storage, free on Guild Kafras";
+ input $QW_GS_PRICE;
+ goto Setprice;
+
+//===========================Towns=================================
+
+L_town:
+ callfunc "QWS_Tarray";
+
+// Expected maximum is set to 22, if you add more options add a more ",@Tmenulist$[xx],-"
+
+ menu @Tmenulist$[0],-,@Tmenulist$[1],-,@Tmenulist$[2],-,@Tmenulist$[3],-,@Tmenulist$[4],-,@Tmenulist$[5],-,@Tmenulist$[6],-,@Tmenulist$[7],-,@Tmenulist$[8],-,@Tmenulist$[9],-,@Tmenulist$[10],-,@Tmenulist$[11],-,@Tmenulist$[12],-,@Tmenulist$[13],-,@Tmenulist$[14],-,@Tmenulist$[15],-,@Tmenulist$[16],-,@Tmenulist$[17],-,@Tmenulist$[18],-,@Tmenulist$[19],-,@Tmenulist$[20],-,@Tmenulist$[21],-,@Tmenulist$[22],-;
+ if (@pTmap$[@Tmenuref[@menu-1]] == "L_End") goto L_end;
+ if(Zeny<@pTprice[@Tmenuref[@menu-1]]) callsub L_Short_on_zeny,0;
+ set Zeny, Zeny-@pTprice[@Tmenuref[@menu-1]];
+ warp @pTmap$[@Tmenuref[@menu-1]],@pTXcoords[@Tmenuref[@menu-1]],@pTYcoords[@Tmenuref[@menu-1]];
+ close2; // this part safegaurds against errors/typos
+ set Zeny, Zeny+@pTprice[@Tmenuref[@menu-1]];
+ close;
+ end;
+
+//=========================Dungeons================================
+
+L_dungeon:
+ callfunc "QWS_Darray";
+
+ set @DWMenu,select(@Dmenulist$[0],@Dmenulist$[1],@Dmenulist$[2],@Dmenulist$[3],@Dmenulist$[4],@Dmenulist$[5],@Dmenulist$[6],@Dmenulist$[7],@Dmenulist$[8],@Dmenulist$[9],@Dmenulist$[10],@Dmenulist$[11],@Dmenulist$[12],@Dmenulist$[13],@Dmenulist$[14],@Dmenulist$[15],@Dmenulist$[16],@Dmenulist$[17],@Dmenulist$[18],@Dmenulist$[19],@Dmenulist$[20],@Dmenulist$[21],@Dmenulist$[22],@Dmenulist$[23],@Dmenulist$[24],@Dmenulist$[25],@Dmenulist$[26],@Dmenulist$[27]);
+
+ if (@pDmenuitems$[@Dmenuref[DWMenu-1]] == "Cancel") goto L_end;
+ set @DwarpMenu, (@Dmenuref[@DWMenu-1]);
+
+ callfunc "QWS_DLarray";
+
+ next;
+ mes "[Warpra]";
+ mes "Please select where you want to go";
+ set @DWLMenu,select(@DWLmenulist$[0], @DWLmenulist$[1], @DWLmenulist$[2], @DWLmenulist$[3], @DWLmenulist$[4], @DWLmenulist$[5], @DWLmenulist$[6], @DWLmenulist$[7], @DWLmenulist$[8], @DWLmenulist$[9], @DWLmenulist$[10], @DWLmenulist$[11], @DWLmenulist$[12], @DWLmenulist$[13], @DWLmenulist$[14], @DWLmenulist$[15], @DWLmenulist$[16], @DWLmenulist$[17]);
+ if (@DWLmenuref[@DWLMenu-1] == 1337) goto L_end;
+ set @Darrayref, @DWLmenuref[@DWLMenu-1];
+ set @warpprice, (@pDprice[@Dmenuref[@DWMenu-1]]+$QW_DW_FEE*@DDepth[@Darrayref]);
+ if(Zeny<@warpprice) callsub L_Short_on_zeny,1;
+ set Zeny, Zeny-(@warpprice);
+ warp @DGat$[@Darrayref],@DXcoords[@Darrayref],@DYcoords[@Darrayref];
+ close2; // this part safegaurds against errors/typos
+ set Zeny, Zeny+@pTprice[@Tmenuref[@DWMenu-1]];
+ close;
+ end;
+
+//=============================Healing=============================
+
+L_heal_Full:
+ set @healfee, $QW_HF_PRICE;
+ if(Zeny<@healfee) callsub L_Short_on_zeny,4;
+ set Zeny, Zeny-@healfee;
+// if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@healfee/50); //commented out because kafra's don't offer this
+ next;
+ mes "[Warpra]";
+ mes "Close this window and I will Heal you.";
+ close2;
+ percentheal 100,100;
+ close;
+ end;
+
+L_heal_Part:
+ set @healchoice,select("Full heal","Health Points only","Skill Points only","Exit");
+ if (@healchoice == 1) callsub PHeal,1,1;
+ if (@healchoice == 2) callsub PHeal,1,0;
+ if (@healchoice == 3) callsub PHeal,0,1;
+ goto L_end;
+
+PHeal:
+ next;
+ set @Hp, MaxHp-Hp;
+ set @Sp, MaxSp-Sp;
+ set @HpPrice, @hp*$QW_HP_H_PRICE;
+ set @SpPrice, @sp*$QW_HP_S_PRICE;
+ mes "[Warpra]";
+ if(getarg(0) == 1) mes ""+@HpPrice+" Zeny for "+@Hp+" health points";
+ if(getarg(1) == 1) mes ""+@SpPrice+" Zeny for "+@Sp+" skill points";
+ set @total, @HpPrice+@SpPrice;
+ mes "for a total of "+@total+" zeny";
+ if (select("Heal me","Let me see the choices again")==2) goto L_heal_Part;
+
+ if(getarg(0) == 1)set @HpPrice, (MaxHp-Hp)*$QW_HP_H_PRICE;
+ if(getarg(1) == 1)set @SpPrice, (MaxSp-Sp)*$QW_HP_S_PRICE;
+ set @healfee, @HpPrice+@SpPrice;
+ if (getarg(0) == 1)&&(getarg(1) == 1)&&(Zeny<@healfee) goto Zeny_Short_Both;
+ if (getarg(0) == 1)&&(Zeny<@healfee) goto Zeny_short_HP;
+ if (getarg(1) == 1)&&(Zeny<@healfee) goto Zeny_short_SP;
+ set Zeny, Zeny-@healfee;
+ if (getarg(0) == 1)&&(getarg(1) == 1) percentheal 100,100;
+ if (getarg(0) == 1) percentheal 100,0;
+ if (getarg(1) == 1) percentheal 0,100;
+ close;
+ end;
+
+Zeny_Short_Both:
+ mes "[Warpra]";
+ mes "choose another option, you can afford both.";
+ mes "I can heal as much as you can afford too.";
+ if (select("OK","Exit") == 2) goto L_end;
+ goto PHeal;
+
+Zeny_short_HP:
+ mes "[Warpra]";
+ mes "do you want me to partly heal your HP ?";
+ if (select("Yes","No") == 2) goto L_end;
+ set @Hp, Zeny/$QW_HP_H_PRICE;
+ set @HpPrice, @Hp*$QW_HP_H_PRICE;
+ if (@Hp == 1) mes "your not worth the effort";
+ if (@Hp == 1) goto L_end;
+ set Zeny, Zeny-@HpPrice;
+ heal @Hp,0;
+ close;
+ end;
+
+
+Zeny_short_SP:
+ mes "[Warpra]";
+ mes "do you want me to partly heal your SP ?";
+ if (select("Yes","No") == 2) goto L_end;
+ set @Sp, Zeny/$QW_HP_S_PRICE;
+ set @SpPrice, @Sp*$QW_HP_S_PRICE;
+ if (@Sp == 1) mes "your not worth the effort";
+ if (@Sp == 1) goto L_end;
+ set Zeny, Zeny-@SpPrice;
+ heal 0,@Sp;
+ close;
+ end;
+
+
+//=============================Storage=============================
+
+L_Storage:
+ next;
+ if(basicskillcheck(0) > 0 && getskilllv(1) < 6) goto L_StorageJBlow;
+ set @fee, $QW_S_PRICE;
+ if ($QW_S_PRICE == 60)&&(BaseJob == Job_Novice) set @fee, 30;
+ if ($QW_S_PRICE == 60)&&(BaseJob != Job_Novice) set @fee, 60;
+ if(Zeny<@fee) callsub L_Short_on_zeny,2;
+ set Zeny, Zeny-@fee;
+ if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@fee/5);
+
+ mes "[Warpra]";
+ mes "Close this window and i will open your storage.";
+
+ callsub F_CheckKafCode; //check your storage password thru kafra coding, if set
+
+ close2;
+ openstorage;
+ close;
+ end;
+
+F_CheckKafCode:
+// you have to set the 1337 value the same as in functions_kafras.txt if you changed it !!
+ if(#kafra_code==0) return;
+ mes "Enter your storage password:";
+ set @code_,0;
+ input @code_;
+ if(@code_ != #kafra_code-getcharid(3)-1337) {
+ dispbottom "Wrong storage password.";
+ close2;
+ close;
+ }
+ set @kafcode_try,0;
+ set @code_,0;
+ return;
+
+L_StorageJBlow:
+ mes "[Warpra]";
+ mes "I am sorry but you have to be at least Novice level 6 if you want to use the storage.";
+ return;
+
+L_GStorage:
+ if(@GID==0) goto L_NoGuild;
+ if(Zeny<$QW_GS_PRICE) callsub L_Short_on_zeny,3;
+ set Zeny, Zeny-$QW_GS_PRICE;
+ if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + ($QW_GS_PRICE/5);
+ next;
+ mes "[Warpra]";
+ mes "Close this window and i will open the ^5533FF" + GetGuildName(@GID) + "^000000 storage.";
+ close2;
+ guildopenstorage;
+ close;
+ end;
+
+L_NoGuild:
+ next;
+ mes "[Warpra]";
+ mes "You are not a part of a guild I can't help you.";
+ close;
+ end;
+
+L_end:
+ close;
+ end;
+
+//============================Few=Warp=============================
+L_FewWarps:
+ next;
+ mes "[Warpra ]";
+ mes "You need to unlock locations before they come available to you.";
+ mes "To unlock a location talk to my colleagues all over the world.";
+ mes "Each account got it's own stamp card.";
+ mes "Want me to check what stamps you have collected so far ?.";
+ if (select("Yes","No")==1) callsub stampcard;
+ close;
+ end;
+
+
+//============================No=Unlock============================
+
+L_NoUnlock:
+ next;
+ mes "[Warpra ]";
+ mes "I don't unlock this location, my assistant deeper in the dungeon will unlock this place.";
+ close;
+ end;
+
+//=========================Short=On=Zeny===========================
+L_Short_on_zeny:
+ next;
+ if (getarg(0) == 0) mes "you don't seem to have "+@pTprice[@Tmenuref[@menu-1]]+" zeny, to pay for the warp fee to "+@pTmenuitems$[@Tmenuref[@menu-1]]+"";
+ if (getarg(0) == 1) mes "you don't seem to have "+@warpprice+" zeny, to pay for the warp fee to "+@DLevelName$[@DWLmenuref[@DWLMenu-1]]+" at "+@pDmenuitems$[@Dmenuref[@DWMenu-1]]+"";
+ if (getarg(0) == 2) mes "you don't seem to have "+@fee+" zeny, to pay for the storage fee";
+ if (getarg(0) == 3) mes "you don't seem to have "+$QW_GS_PRICE+" zeny, to pay for the guild storage fee";
+ if (getarg(0) == 4) mes "you don't seem to have "+@healfee+" zeny, to pay for your healing";
+ close;
+ end;
+
+//===========================Stamp=Card============================
+stampcard:
+// Counting of the ammount of places you have unlocked
+ next;
+ mes "Let me check what Towns you have";
+ set @Tstamp,0;
+
+//----------------Prontera:
+ if (#prontera == 1) set @Tstamp,@Tstamp+1;
+//----------------Alberta
+ if (#alberta == 1) set @Tstamp,@Tstamp+1;
+//----------------Aldebaran
+ if (#aldebaran == 1) set @Tstamp,@Tstamp+1;
+//----------------Amatsu:
+ if (#amatsu == 1) set @Tstamp,@Tstamp+1;
+//----------------Ayotaya:
+ if (#ayotaya == 1) set @Tstamp,@Tstamp+1;
+//----------------Comodo:
+ if (#comodo == 1) set @Tstamp,@Tstamp+1;
+//----------------Einbech:
+ if (#einbech == 1) set @Tstamp,@Tstamp+1;
+//----------------Einbroch:
+ if (#einbroch == 1) set @Tstamp,@Tstamp+1;
+//----------------Geffen:
+ if (#geffen == 1) set @Tstamp,@Tstamp+1;
+//----------------Gonryun:
+ if (#gonryun == 1) set @Tstamp,@Tstamp+1;
+//----------------Hugel:
+ if (#hugel == 1) set @Tstamp,@Tstamp+1;
+//----------------Izlude:
+ if (#izlude == 1) set @Tstamp,@Tstamp+1;
+//----------------Jawaii:
+ if (#jawaii == 1) set @Tstamp,@Tstamp+1;
+//----------------Lighthalzen:
+ if (#lighthalzen == 1) set @Tstamp,@Tstamp+1;
+//----------------Louyang:
+ if (#louyang == 1) set @Tstamp,@Tstamp+1;
+//----------------Lutie
+ if (#xmas == 1) set @Tstamp,@Tstamp+1;
+//----------------Morroc:
+ if (#morocc == 1) set @Tstamp,@Tstamp+1;
+//----------------Niflheim:
+ if (#niflheim == 1) set @Tstamp,@Tstamp+1;
+//----------------Payon:
+ if (#payon == 1) set @Tstamp,@Tstamp+1;
+//----------------Umbala:
+ if (#umbala == 1) set @Tstamp,@Tstamp+1;
+//----------------Yuno:
+ if (#yuno == 1) set @Tstamp,@Tstamp+1;
+
+ mes "you collected^00FF00 "+@Tstamp+" of 21 ^000000Towns.";
+ if (@Tstamp == 15) mes "They say there is an island you can only get to when married";
+ if (@Tstamp == 15) emotion 18;
+ next;
+
+ mes "Let me check what dungeons you have";
+ set @Dstamp,0;
+
+//----------------ABYSS LAKE
+ if (#abyss == 1) set @Dstamp,@Dstamp+1;
+//----------------AMATSU DUNGEON
+ if (#ama_dun == 1) set @Dstamp,@Dstamp+1;
+//----------------ANT HELL
+ if (#anthell == 1) set @Dstamp,@Dstamp+1;
+//----------------AYOTAYA
+ if (#ayotaya_dun == 1) set @Dstamp,@Dstamp+1;
+//----------------BYALAN
+ if (#iz_dun == 1) set @Dstamp,@Dstamp+1;
+//----------------CLOCK TOWER
+ if (#c_tower == 1) set @Dstamp,@Dstamp+1;
+//----------------COAL MINE
+ if (#mjo_dun== 1) set @Dstamp,@Dstamp+1;
+//----------------CULVERT
+ if (#prt_sewb == 1) set @Dstamp,@Dstamp+1;
+//----------------EINBECH DUNGEON
+ if (#einbech_dun == 1) set @Dstamp,@Dstamp+1;
+//----------------GEFENIA DUNGEON
+ if (#gefenia == 1) set @Dstamp,@Dstamp+1;
+//----------------GEFFEN DUNGEON
+ if (#gef_dun == 1) set @Dstamp,@Dstamp+1;
+//----------------GLAST HEIM
+ if (#gl_dun == 1) set @Dstamp,@Dstamp+1;
+//----------------GONRYUN DUNGEON
+ if (#gon_dun == 1) set @Dstamp,@Dstamp+1;
+//----------------HIDDEN DUNGEON
+ if (#hid_dun == 1) set @Dstamp,@Dstamp+1;
+//----------------JUPEROS CAVE
+ if (#juperos == 1) set @Dstamp,@Dstamp+1;
+//----------------LIGHTHALZEN BIO LAB
+ if (#lighthalzen_dun == 1) set @Dstamp,@Dstamp+1;
+//----------------MAGMA DUNGEON
+ if (#mag_dun == 1) set @Dstamp,@Dstamp+1;
+//----------------ODIN TEMPLE
+ if (#odintemple == 1) set @Dstamp,@Dstamp+1;
+//----------------ORC DUNGEON
+ if (#orcsdun == 1) set @Dstamp,@Dstamp+1;
+//----------------PAYON DUNGEON
+ if (#pay_dun == 1) set @Dstamp,@Dstamp+1;
+//----------------PYRAMIDS
+ if (#moc_pryd == 1) set @Dstamp,@Dstamp+1;
+//----------------SPHINX
+ if (#in_sphinx == 1) set @Dstamp,@Dstamp+1;
+//----------------SUNKEN SHIP
+ if (#treasure == 1) set @Dstamp,@Dstamp+1;
+//----------------TOY FACTORY
+ if (#xmas_dun == 1) set @Dstamp,@Dstamp+1;
+//----------------TURTLE ISTLAND
+ if (#tur_dun == 1) set @Dstamp,@Dstamp+1;
+//----------------UMBALA
+ if (#um_dun == 1) set @Dstamp,@Dstamp+1;
+ mes "you collected^00FF00 "+@Dstamp+" of 26 ^000000Dungeons";
+ mes "To unlock a dungeon, search for my colleague.";
+ mes "You can usually find him near the end or middle of the dungeon";
+ return;
+}
+
+//======================Main=Menu=Array============================
+
+function script QWS_MMarray {
+
+// Currently 9 items
+
+ setarray @pMmenuitems$[0], "GameMaster Menu", "Warp to Towns", "Warp to Dungeons", "Why so few Warps ?", "Why don't you Unlock this location ?", "Heal", "Heal", "Storage", "Guild Storage", "Cancel";
+ set @Mi,0; // That's our loop counter.
+ set @Mj,0; // That's the menu lines counter.
+//----------------GameMaster-Menu
+ if (getgmlevel(80)) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
+ if (getgmlevel(80)) set @Mmenuref[@Mj],@Mi;
+ if (getgmlevel(80)) set @Mj,@Mj+1;
+ set @Mi,@Mi+1;
+//----------------Town-Warp
+ if ($QW_TW_OFF == 0) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
+ if ($QW_TW_OFF == 0) set @Mmenuref[@Mj],@Mi;
+ if ($QW_TW_OFF == 0) set @Mj,@Mj+1;
+ set @Mi,@Mi+1;
+//----------------Dungeon-Warp
+ if ($QW_DW_OFF == 0) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
+ if ($QW_DW_OFF == 0) set @Mmenuref[@Mj],@Mi;
+ if ($QW_DW_OFF == 0) set @Mj,@Mj+1;
+ set @Mi,@Mi+1;
+//----------------Why-So-Few-Warps
+ set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
+ set @Mmenuref[@Mj],@Mi;
+ set @Mj,@Mj+1;
+ set @Mi,@Mi+1;
+//----------------No-Unlock
+ if (getarg(0) == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
+ if (getarg(0) == 1) set @Mmenuref[@Mj],@Mi;
+ if (getarg(0) == 1) set @Mj,@Mj+1;
+ set @Mi,@Mi+1;
+//----------------Healfull
+ if ($QW_HF == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
+ if ($QW_HF == 1) set @Mmenuref[@Mj],@Mi;
+ if ($QW_HF == 1) set @Mj,@Mj+1;
+ set @Mi,@Mi+1;
+//----------------Healpart
+ if ($QW_HP == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
+ if ($QW_HP == 1) set @Mmenuref[@Mj],@Mi;
+ if ($QW_HP == 1) set @Mj,@Mj+1;
+ set @Mi,@Mi+1;
+//----------------Storage
+ if ($QW_Stor == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
+ if ($QW_Stor == 1) set @Mmenuref[@Mj],@Mi;
+ if ($QW_Stor == 1) set @Mj,@Mj+1;
+ set @Mi,@Mi+1;
+//----------------GuildStorage
+ if ($QW_GStor == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
+ if ($QW_GStor == 1) set @Mmenuref[@Mj],@Mi;
+ if ($QW_GStor == 1) set @Mj,@Mj+1;
+ set @Mi,@Mi+1;
+//----------------Cancel
+ set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
+ set @Mmenuref[@Mj],@Mi;
+ return;
+ }
+
+
+
+//======================Town=Menu=Array============================
+
+function script QWS_Tarray {
+
+// Currently 22 items
+
+ setarray @pTmenuitems$[0], "Prontera", "Alberta", "Aldebaran", "Amatsu", "Ayothaya", "Comodo", "Einbech", "Einbroch", "Geffen", "Gonryun", "Hugel", "Izlude", "Jawaii", "Lighthalzen", "Louyang", "Lutie", "Morroc", "Niflheim", "Payon", "Umbala", "Yuno", "Cancel"; // townnames
+ setarray @pTmap$[0], "prontera.gat", "alberta.gat", "aldebaran.gat", "amatsu.gat", "ayothaya.gat", "comodo.gat", "einbech.gat", "einbroch.gat", "geffen.gat", "gonryun.gat", "hugel.gat", "izlude.gat", "jawaii.gat", "lighthalzen.gat", "louyang.gat", "xmas.gat", "morocc.gat", "niflheim.gat", "payon.gat", "umbala.gat", "yuno.gat", "L_End"; // mapfile
+ setarray @pTXcoords[0], 156, 27, 145, 197, 150, 188, 172, 230, 119, 150, 95, 128, 243, 158, 210, 148, 159, 195, 152, 130, 160, "Cancel"; // all X coords
+ setarray @pTYcoords[0], 187, 236, 120, 86, 57, 161, 126, 191, 66, 130, 121, 111, 115, 110, 108, 131, 93, 186, 75, 130, 168, "Cancel"; // all Y coords
+ setarray @pTprice[0], $QW_BW_PRICE, $QW_BW_PRICE, $QW_AW_PRICE, $QW_OW_PRICE, $QW_OW_PRICE, $QW_AW_PRICE, $QW_AW_PRICE, $QW_AW_PRICE, $QW_BW_PRICE, $QW_OW_PRICE, $QW_AW_PRICE, $QW_BW_PRICE, $QW_AW_PRICE, $QW_AW_PRICE, $QW_OW_PRICE, $QW_AW_PRICE, $QW_BW_PRICE, $QW_AW_PRICE, $QW_BW_PRICE, $QW_AW_PRICE, $QW_AW_PRICE, 0;
+ set @Ti,0; // That's our loop counter.
+ set @Tj,0; // That's the menu lines counter.
+//----------------Prontera
+ if (#prontera == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#prontera == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#prontera== 1) set @Tmenuref[@Tj],@Ti;
+ if (#prontera == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Alberta
+ if (#alberta == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#alberta == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#alberta == 1) set @Tmenuref[@Tj],@Ti;
+ if (#alberta == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Aldebaran
+ if (#aldebaran == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#aldebaran == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#aldebaran == 1) set @Tmenuref[@Tj],@Ti;
+ if (#aldebaran == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Amatsu:
+ if (#amatsu == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#amatsu == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#amatsu == 1) set @Tmenuref[@Tj],@Ti;
+ if (#amatsu == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Ayothaya:
+ if (#ayotaya == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#ayotaya == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#ayotaya == 1) set @Tmenuref[@Tj],@Ti;
+ if (#ayotaya == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Comodo:
+ if (#comodo == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#comodo == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#comodo == 1) set @Tmenuref[@Tj],@Ti;
+ if (#comodo == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Einbech:
+ if (#einbech == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#einbech == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#einbech == 1) set @Tmenuref[@Tj],@Ti;
+ if (#einbech == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Einbroch:
+ if (#einbroch == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#einbroch == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#einbroch == 1) set @Tmenuref[@Tj],@Ti;
+ if (#einbroch == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Geffen:
+ if (#geffen == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#geffen == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#geffen == 1) set @Tmenuref[@Tj],@Ti;
+ if (#geffen == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Gonryun:
+ if (#gonryun == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#gonryun == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#gonryun == 1) set @Tmenuref[@Tj],@Ti;
+ if (#gonryun == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Hugel:
+ if (#hugel == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#hugel == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#hugel == 1) set @Tmenuref[@Tj],@Ti;
+ if (#hugel == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Izlude:
+ if (#izlude == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#izlude == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#izlude == 1) set @Tmenuref[@Tj],@Ti;
+ if (#izlude == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Jawaii:
+ if (#jawaii == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#jawaii == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#jawaii == 1) set @Tmenuref[@Tj],@Ti;
+ if (#jawaii == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Lighthalzen:
+ if (#lighthalzen == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#lighthalzen == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#lighthalzen == 1) set @Tmenuref[@Tj],@Ti;
+ if (#lighthalzen == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Louyang:
+ if (#louyang == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#louyang == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#louyang == 1) set @Tmenuref[@Tj],@Ti;
+ if (#louyang == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Lutie
+ if (#xmas == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#xmas == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#xmas == 1) set @Tmenuref[@Tj],@Ti;
+ if (#xmas == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Morroc:
+ if (#morocc == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#morocc == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#morocc == 1) set @Tmenuref[@Tj],@Ti;
+ if (#morocc == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Niflheim:
+ if (#niflheim == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#niflheim == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#niflheim == 1) set @Tmenuref[@Tj],@Ti;
+ if (#niflheim == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Payon:
+ if (#payon == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#payon == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#payon == 1) set @Tmenuref[@Tj],@Ti;
+ if (#payon == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Umbala:
+ if (#umbala == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#umbala == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#umbala == 1) set @Tmenuref[@Tj],@Ti;
+ if (#umbala == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Yuno:
+ if (#yuno == 1)&&(@pTprice[@Ti] != 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
+ if (#yuno == 1)&&(@pTprice[@Ti] == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
+ if (#yuno == 1) set @Tmenuref[@Tj],@Ti;
+ if (#yuno == 1) set @Tj,@Tj+1;
+ set @Ti,@Ti+1;
+//----------------Cancel
+ set @Tmenulist$[@Tj],@pTmenuitems$[@Ti];
+ set @Tmenuref[@Tj],@Ti;
+ return;
+ }
+
+
+//====================Dungeon=Menu=Arrays==========================
+
+// arrays:
+// @pDmenuitems$, dungeons names
+// @pDmenugoto$, dungeon variable names
+// @pDprice, warp prices (Basic, Advanced, Overseas)
+
+function script QWS_Darray {
+ setarray @pDmenuitems$[0], "Abyss Lake", "Amatsu Dungeon", "Ant Hell Dungeon", "Ayotaya Dungeon", "Byalan Dungeon", "Clock Tower Dungeon", "Coal Mine Dungeon", "Culvert Dungeon", "Einbech Dungeon", "Gefenia Dungeon", "Geffen Dungeon", "Glast Heim Dungeon", "Gonryun Dungeon", "Hidden Dungeon", "Juperos Cave", "Lighthalzen Bio Lab", "Magma Dungeon", "Odin Temple", "Orc Dungeon", "Payon Dungeon", "Pyramids Dungeon", "Sphinx Dungeon", "Sunken Ship Dungeon", "Toy Factory Dungeon", "Turtle Island Dungeon", "Umbala Dungeon", "Cancel";
+ setarray @pDmenugoto$[0], "abyss", "ama_dun", "anthell", "ayotaya_dun", "iz_dun", "c_tower", "mjo_dun", "prt_sewb", "einbech_dun", "gefenia", "gef_dun", "gl_dun", "gon_dun", "hid_dun", "juperos", "lighthalzen_dun", "mag_dun", "odintemple", "orcsdun", "pay_dun", "moc_pryd", "in_sphinx", "treasure", "xmas_dun", "tur_dun", "um_dun", "L_End";
+ setarray @pDprice[0], $QW_AW_PRICE, $QW_OW_PRICE, $QW_BW_PRICE, $QW_OW_PRICE, $QW_BW_PRICE, $QW_AW_PRICE, $QW_AW_PRICE, $QW_BW_PRICE, $QW_AW_PRICE, $QW_BW_PRICE, $QW_BW_PRICE, $QW_BW_PRICE, $QW_OW_PRICE, $QW_BW_PRICE, $QW_AW_PRICE, $QW_AW_PRICE, $QW_AW_PRICE, $QW_AW_PRICE, $QW_BW_PRICE, $QW_BW_PRICE, $QW_BW_PRICE, $QW_BW_PRICE, $QW_BW_PRICE, $QW_AW_PRICE, $QW_AW_PRICE, $QW_OW_PRICE, 0;
+ set @Di,0; // That's our loop counter.
+ set @Dj,0; // That's the menu lines counter.
+//----------------ABYSS LAKE
+ if (#abyss == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#abyss == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#abyss == 1) set @Dmenuref[@Dj],@Di;
+ if (#abyss == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------AMATSU DUNGEON
+ if (#ama_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#ama_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#ama_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#ama_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------ANT HELL
+ if (#anthell == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#anthell == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#anthell == 1) set @Dmenuref[@Dj],@Di;
+ if (#anthell == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------AYOTAYA
+ if (#ayotaya_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#ayotaya_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#ayotaya_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#ayotaya_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------BYALAN
+ if (#iz_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#iz_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#iz_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#iz_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------CLOCK TOWER
+ if (#c_tower == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#c_tower == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#c_tower == 1) set @Dmenuref[@Dj],@Di;
+ if (#c_tower == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------COAL MINE
+ if (#mjo_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#mjo_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#mjo_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#mjo_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------CULVERT
+ if (#prt_sewb == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#prt_sewb == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#prt_sewb == 1) set @Dmenuref[@Dj],@Di;
+ if (#prt_sewb == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------EINBECH DUNGEON
+ if (#einbech_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#einbech_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#einbech_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#einbech_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------GEFENIA DUNGEON
+ if (#gefenia == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#gefenia == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#gefenia == 1) set @Dmenuref[@Dj],@Di;
+ if (#gefenia == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------GEFFEN DUNGEON
+ if (#gef_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#gef_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#gef_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#gef_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------GLAST HEIM
+ if (#gl_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#gl_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#gl_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#gl_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------GONRYUN DUNGEON
+ if (#gon_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#gon_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#gon_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#gon_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------HIDDEN DUNGEON
+ if (#hid_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#hid_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#hid_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#hid_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------JUPEROS CAVE
+ if (#juperos == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#juperos == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#juperos == 1) set @Dmenuref[@Dj],@Di;
+ if (#juperos == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------LIGHTHALZEN BIO LAB
+ if (#lighthalzen_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#lighthalzen_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#lighthalzen_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#lighthalzen_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------MAGMA DUNGEON
+ if (#mag_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#mag_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#mag_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#mag_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------ODIN TEMPLE
+ if (#odintemple == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#odintemple == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#odintemple == 1) set @Dmenuref[@Dj],@Di;
+ if (#odintemple == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------ORC DUNGEON
+ if (#orcsdun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#orcsdun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#orcsdun == 1) set @Dmenuref[@Dj],@Di;
+ if (#orcsdun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------PAYON DUNGEON
+ if (#pay_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#pay_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#pay_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#pay_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------PYRAMIDS
+ if (#moc_pryd == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#moc_pryd == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#moc_pryd == 1) set @Dmenuref[@Dj],@Di;
+ if (#moc_pryd == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------SPHINX
+ if (#in_sphinx == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#in_sphinx == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#in_sphinx == 1) set @Dmenuref[@Dj],@Di;
+ if (#in_sphinx == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------SUNKEN SHIP
+ if (#treasure == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#treasure == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#treasure == 1) set @Dmenuref[@Dj],@Di;
+ if (#treasure == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------TOY FACTORY
+ if (#xmas_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#xmas_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#xmas_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#xmas_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------TURTLE ISTLAND
+ if (#tur_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#tur_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#tur_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#tur_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------UMBALA
+ if (#um_dun == 1)&&(@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
+ if (#um_dun == 1)&&(@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
+ if (#um_dun == 1) set @Dmenuref[@Dj],@Di;
+ if (#um_dun == 1) set @Dj,@Dj+1;
+ set @Di,@Di+1;
+//----------------Cancel
+ set @Dmenulist$[@Dj],@pDmenuitems$[@Di];
+ set @Dmenuref[@Dj],@Di;
+ return;
+ }
+
+//====================Dungeon=Warp=Arrays==========================
+
+// @DLevels, amount of levels in dungeon - 1
+// @DLocRef, reference to locate where the first
+// level of the dungeon warp information is in the other arrays
+// @DGat$, mapname of dungeon level
+// @DLevelName$, areaname of dungeon level
+// @DXcoords && @DYcoords, warp coords
+// @DDepth, relative depth to entrance to calculate extra warp fee
+// If your wondering why i cut my lines, there seems to be a problem with a maximum line length
+
+function script QWS_DLarray {
+ setarray @DLevels[0], 2, 2, 1, 1, 4, 7, 2, 3, 1, 3, 3, 15, 2, 2, 1, 2, 1, 0, 1, 4, 5, 4, 1, 1, 3, 2;
+ setarray @DLocRef[0], 0, 3, 6, 8, 10, 15, 23, 26, 30, 32, 36, 40, 56, 59, 62, 64, 67, 69, 70, 72, 77, 83, 88, 90, 92, 96, 99;
+ setarray @DGat$[0], "abyss_01.gat", "abyss_02.gat", "abyss_03.gat", "ama_dun01.gat", "ama_dun02.gat", "ama_dun03.gat", "anthell01.gat", "anthell02.gat", "ayo_dun01.gat", "ayo_dun02.gat", "iz_dun00.gat", "iz_dun01.gat", "iz_dun02.gat", "iz_dun03.gat", "iz_dun04.gat", "c_tower1.gat", "c_tower2.gat", "c_tower3.gat", "c_tower4.gat", "alde_dun01.gat", "alde_dun02.gat", "alde_dun03.gat", "alde_dun04.gat", "mjo_dun01.gat", "mjo_dun02.gat", "mjo_dun03.gat", "prt_sewb1.gat", "prt_sewb2.gat", "prt_sewb3.gat", "prt_sewb4.gat", "ein_dun01.gat",
+ "ein_dun02.gat", "gefenia01.gat", "gefenia02.gat", "gefenia03.gat", "gefenia04.gat", "gef_dun00.gat", "gef_dun01.gat", "gef_dun02.gat", "gef_dun03.gat", "gl_church.gat", "gl_chyard.gat", "gl_in01.gat", "gl_cas01.gat", "gl_cas02.gat", "gl_knt01.gat", "gl_knt02.gat", "gl_prison.gat", "gl_prison1.gat", "gl_step.gat", "gl_sew01.gat", "gl_sew02.gat", "gl_sew03.gat", "gl_sew04.gat", "gl_dun01.gat", "gl_dun02.gat", "prt_maze01.gat", "prt_maze02.gat", "prt_maze03.gat", "juperos_01.gat", "juperos_02.gat", "gon_dun01.gat",
+ "gon_dun02.gat", "gon_dun03.gat", "lhz_dun01.gat", "lhz_dun02.gat", "lhz_dun03.gat", "mag_dun01.gat", "mag_dun02.gat", "odin_tem01.gat", "orcsdun01.gat", "orcsdun02.gat", "pay_dun00.gat", "pay_dun01.gat", "pay_dun02.gat", "pay_dun03.gat", "pay_dun04.gat", "moc_pryd01.gat", "moc_pryd02.gat", "moc_pryd03.gat", "moc_pryd04.gat", "moc_pryd05.gat", "moc_pryd06.gat", "in_sphinx1.gat", "in_sphinx2.gat", "in_sphinx3.gat", "in_sphinx4.gat", "in_sphinx5.gat", "treasure01.gat", "treasure02.gat", "xmas_dun01.gat", "xmas_dun02.gat", "tur_dun01.gat", "tur_dun02.gat", "tur_dun03.gat", "tur_dun04.gat", "um_dun01.gat", "um_dun02.gat", "yggdrasil01.gat";
+ setarray @DLevelName$[0], "Level 1", "Level 2", "Level 3", "Level 1", "Level 2", "Level 3", "Level 1", "Level 2", "Level 1", "Level 2", "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Clock Tower Level 1", "Clock Tower Level 2", "Clock Tower Level 3", "Clock Tower Level 4", "Basement 1F", "Basement 2F", "Basement 3F", "Basement 4F", "Level 1", "Level 2", "Level 3", "Level 1", "Level 2", "Level 3", "Level 4", "Level 1", "Level 2", "Level 1", "Level 2", "Level 3", "Level 4", "Level 1", "Level 2",
+ "Level 3", "Level 4", "St. Abbey", "Churchyard", "Inside Glast Heim", "Castle 1", "Castle 2",
+ "Chivalry 1", "Chivalry 2", "Prison 1", "Prison 2", "Steps", "Sewers 1", "Sewers 2", "Sewers 3", "Sewers 4", "Lowest Cave 1", "Lowest Cave 2", "Level 1", "Level 2", "Level 3", "Level 1", "Level 2", "Level 1", "Level 2", "Level 3", "Level 1", "Level 2", "Level 3", "Level 1", "Level 2", "Level 1", "Level 1", "Level 2", "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Level 1", "Level 2", "Level 3", "Level 4", "Basement 1",
+ "Basement 2", "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Level 1", "Level 2", "Factory Warehouse", "Classifying Room", "Outside", "Level 1", "Level 2", "Level 3", "Carpenter's Shop in The Tree", "Passage to a Foreign World", "Hvergelmir's Fountain";
+ setarray @DXcoords[0], 265, 275, 116, 227, 32, 119, 32, 34, 275, 150, 168, 41, 236, 32, 26, 200, 268, 64, 32, 197, 262, 276, 130, 52, 381, 302, 132, 19, 180, 100, 22, 292, 59, 201, 264, 33, 104, 115, 106, 203, 156, 147, 121, 199, 104, 150, 157, 14, 150, 117, 258, 108, 171, 68, 133, 224, 176, 94, 23, 53, 36, 143, 17, 68, 150, 150, 140, 126, 47, 96, 32, 21, 22, 19, 19, 155, 201, 192, 10, 100, 181, 94, 192, 192, 149, 210, 10, 100, 69, 102, 205, 129, 161, 148, 132, 100, 205, 48, 40;
+ setarray @DYcoords[0], 273, 270, 27, 10, 43, 15, 262, 263, 17, 13, 168, 37, 204, 63, 27, 163, 26, 148, 63, 25, 41, 53, 130, 17, 343, 261, 248, 19, 169, 92, 14, 290, 167, 35, 236, 270, 100, 236, 132, 200, 8, 15, 59, 29, 25, 10, 287, 70, 14, 124, 255, 291, 273, 277, 271, 274, 6, 19, 8, 247, 60, 59, 114, 9, 287, 18, 137, 69, 32, 145, 169, 185, 180, 33, 63, 159, 204, 9, 192, 92, 11, 96, 8, 9, 81, 54, 222, 99, 24, 27, 16, 133, 34, 256, 190, 192, 16, 30, 63;
+ setarray @DDepth[0], 0, 1, 2, 0, 1, 2, 0, 1, 0, 1, 0, 1, 2, 3, 4, 1, 2, 3, 4, 0, 1, 2, 3, 0, 1, 2, 0, 1, 2, 3, 0, 1, 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 1, 1, 2, 1, 2, 2, 3, 1, 4, 2, 3, 4, 5, 6, 0, 1, 2, 0, 1, 0, 1, 2, 0, 1, 2, 0, 1, 0, 0, 1, 0, 1, 2, 3, 4, 0, 1, 2, 3, 1, 2, 0, 1, 2, 3, 4, 0, 1, 0, 1, 0, 0, 1, 2, 0, 1, 2;
+ set @DWi,@DLocRef[@DwarpMenu]; // That's our loop counter.
+ set @DWj,0; // That's the menu lines counter.
+ cleararray @DWLmenulist$[0],"",20; // Clearing the array to get rid off ghost items in menu
+Loop:
+// Main Loop
+ set @warpprice, (@pDprice[@DwarpMenu]+$QW_DW_FEE*@DDepth[@DWi]);
+ if (@warpprice != 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWi]+" -> "+@warpprice;
+ if (@warpprice == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWi];
+ set @DWLmenuref[@DWj],@DWi;
+
+ if (@DWj == @DLevels[@DwarpMenu]) goto make_exit;
+
+ set @DWj,@DWj+1;
+ set @DWi,@DWi+1;
+
+ goto Loop;
+
+make_exit:
+ set @DWj,@DWj+1;
+ set @DWLmenulist$[@DWj], "Exit";
+ set @DWLmenuref[@DWj],1337; //impossible number easy to track back
+ return;
+ }
+
+//============================Warpras==============================
+
+alb2trea.gat,73,101,4 script Warpra 113,{
+ callfunc "Q_Warpra",1;
+}
+ama_fild01.gat,178,325,1 script Warpra 113,{
+ callfunc "Q_Warpra",1;
+}
+gef_fild10.gat,71,339,4 script Warpra 113,{
+ callfunc "Q_Warpra",1;
+}
+izlu2dun.gat,104,82,4 script Warpra 113,{
+ callfunc "Q_Warpra",1;
+}
+mjolnir_02.gat,85,363,4 script Warpra 113,{
+ callfunc "Q_Warpra",1;
+}
+moc_fild04.gat,207,331,4 script Warpra 113,{
+ callfunc "Q_Warpra",1;
+}
+moc_fild19.gat,106,97,4 script Warpra 113,{
+ callfunc "Q_Warpra",1;
+}
+moc_ruins.gat,64,166,4 script Warpra 113,{
+ callfunc "Q_Warpra",1;
+}
+niflheim.gat,197,192,3 script Warpra 113,{
+ callfunc "Q_Warpra",1;
+}
+pay_arche.gat,39,135,4 script Warpra 113,{
+ callfunc "Q_Warpra",1;
+}
+prt_fild05.gat,273,215,4 script Warpra 113,{
+ callfunc "Q_Warpra",1;
+}
+tur_dun01.gat,148,239,4 script Warpra 113,{
+ callfunc "Q_Warpra",1;
+}
+valkyrie.gat,48,35,8 script Warpra 113,{
+ callfunc "Q_Warpra",1;
+}
+yuno_fild03.gat,37,135,4 script Warpra 113,{
+ callfunc "Q_Warpra",1;
+}
+
+
+alberta.gat,32,240,4 script Warpra 113,{
+ if (#alberta != 0) callfunc "Q_Warpra",0;
+ set #alberta,1;
+ mes "[Warpra]";
+ mes "Alberta Town unlocked!";
+ close;
+}
+aldebaran.gat,146,118,4 script Warpra 113,{
+ if (#aldebaran != 0) callfunc "Q_Warpra",0;
+ set #aldebaran,1;
+ mes "[Warpra]";
+ mes "Aldebaran Town unlocked!";
+ close;
+}
+ayothaya.gat,216,171,5 script Warpra 113,{
+ if (#ayotaya != 0) callfunc "Q_Warpra",0;
+ set #ayotaya,1;
+ mes "[Warpra]";
+ mes "Ayotaya Town unlocked!";
+ close;
+}
+amatsu.gat,193,81,1 script Warpra 113,{
+ if (#amatsu != 0) callfunc "Q_Warpra",0;
+ set #amatsu,1;
+ mes "[Warpra]";
+ mes "Amatsu Town unlocked!";
+ close;
+}
+comodo.gat,195,158,4 script Warpra 113,{
+ if (#comodo != 0) callfunc "Q_Warpra",0;
+ set #comodo,1;
+ mes "[Warpra]";
+ mes "Comodo Town unlocked!";
+ close;
+}
+einbroch.gat,229,196,5 script Warpra 113,{
+ if (#einbroch != 0) callfunc "Q_Warpra",0;
+ set #einbroch,1;
+ mes "[Warpra]";
+ mes "Einbroch Town unlocked!";
+ close;
+}
+einbech.gat,173,131,5 script Warpra 113,{
+ if (#einbech != 0) callfunc "Q_Warpra",0;
+ set #einbech,1;
+ mes "[Warpra]";
+ mes "Einbech Town unlocked!";
+ close;
+}
+geffen.gat,116,66,4 script Warpra 113,{
+ if (#geffen != 0) callfunc "Q_Warpra",0;
+ set #geffen,1;
+ mes "[Warpra]";
+ mes "Geffen Town unlocked!";
+ close;
+}
+gonryun.gat,152,130,4 script Warpra 113,{
+ if (#gonryun != 0) callfunc "Q_Warpra",0;
+ set #gonryun,1;
+ mes "[Warpra]";
+ mes "Gonryun Town unlocked!";
+ close;
+}
+hugel.gat,90,127,5 script Warpra 113,{
+ if (#hugel != 0) callfunc "Q_Warpra",0;
+ set #hugel,1;
+ mes "[Warpra]";
+ mes "Hugel Town unlocked!";
+ close;
+}
+jawaii.gat,107,182,5 script Warpra 113,{
+ if (#jawaii != 0) callfunc "Q_Warpra",0;
+ set #jawaii,1;
+ mes "[Warpra]";
+ mes "Jawaii Town unlocked!";
+ close;
+}
+izlude.gat,132,116,4 script Warpra 113,{
+ if (#izlude != 0) callfunc "Q_Warpra",0;
+ set #izlude,1;
+ mes "[Warpra]";
+ mes "Izlude Town unlocked!";
+ close;
+}
+lighthalzen.gat,153,100,5 script Warpra 113,{
+ if (#lighthalzen != 0) callfunc "Q_Warpra",0;
+ set #lighthalzen,1;
+ mes "[Warpra]";
+ mes "Lighthalzen Town unlocked!";
+ close;
+}
+louyang.gat,211,106,4 script Warpra 113,{
+ if (#louyang != 0) callfunc "Q_Warpra",0;
+ set #louyang,1;
+ mes "[Warpra]";
+ mes "Louyang Town unlocked!";
+ close;
+}
+morocc.gat,157,95,4 script Warpra 113,{
+ if (#morocc != 0) callfunc "Q_Warpra",0;
+ set #morocc,1;
+ mes "[Warpra]";
+ mes "Morroc Town unlocked!";
+ close;
+}
+nif_fild01.gat,319,77,1 script Warpra 113,{
+ if (#niflheim != 0) callfunc "Q_Warpra",0;
+ set #niflheim,1;
+ mes "[Warpra]";
+ mes "Niflheim Town unlocked!";
+ close;
+}
+payon.gat,183,110,4 script Warpra 113,{
+ if (#payon != 0) callfunc "Q_Warpra",0;
+ set #payon,1;
+ mes "[Warpra]";
+ mes "Payon Town unlocked!";
+ close;
+}
+prontera.gat,147,172,5 script Warpra 113,{
+ if (#prontera != 0) callfunc "Q_Warpra",0;
+ set #prontera,1;
+ mes "[Warpra]";
+ mes "Prontera Town unlocked!";
+ close;
+}
+umbala.gat,133,130,4 script Warpra 113,{
+ if (#umbala != 0) callfunc "Q_Warpra",0;
+ set #umbala,1;
+ mes "[Warpra]";
+ mes "Umbala Town unlocked!";
+ close;
+}
+xmas.gat,151,136,4 script Warpra 113,{
+ if (#xmas != 0) callfunc "Q_Warpra",0;
+ set #xmas,1;
+ mes "[Warpra]";
+ mes "Lutie Town unlocked!";
+ close;
+}
+yuno.gat,138,162,4 script Warpra 113,{
+ if (#yuno != 0) callfunc "Q_Warpra",0;
+ set #yuno,1;
+ mes "[Warpra]";
+ mes "Yuno Town unlocked!";
+ close;
+}
+abyss_02.gat,274,266,1 script Warpra 113,{
+ if (#abyss == 1) mes "[Warpra]";
+ if (#abyss == 1) mes "Sorry I can only unlock this location.";
+ if (#abyss == 1) close;
+ set #abyss,1;
+ mes "[Warpra]";
+ mes "Abyss Lake unlocked!";
+ close;
+}
+ama_dun02.gat,192,118,5 script Warpra Helper 112,{
+ if (#ama_dun == 1) mes "[Warpra]";
+ if (#ama_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#ama_dun == 1) close;
+ set #ama_dun,1;
+ mes "[Warpra]";
+ mes "Amatsu Dungeon unlocked!";
+ close;
+}
+
+anthell02.gat,170,165,3 script Warpra Helper 112,{
+ if (#anthell == 1) mes "[Warpra]";
+ if (#anthell == 1) mes "Sorry I can only unlock this location.";
+ if (#anthell == 1) close;
+ set #anthell,1;
+ mes "[Warpra]";
+ mes "Ant Hell Dungeon unlocked!";
+ close;
+}
+
+ayo_dun02.gat,258,193,5 script Warpra Helper 112,{
+ if (#ayotaya_dun == 1) mes "[Warpra]";
+ if (#ayotaya_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#ayotaya_dun == 1) close;
+ set #ayotaya_dun,1;
+ mes "[Warpra]";
+ mes "Ayotaya Dungeon unlocked!";
+ close;
+}
+
+ein_dun02.gat,292,282,1 script Warpra Helper 112,{
+ if (#einbech_dun == 1) mes "[Warpra]";
+ if (#einbech_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#einbech_dun == 1) close;
+ set #einbech_dun,1;
+ mes "[Warpra]";
+ mes "Einbech Dungeon unlocked!";
+ close;
+}
+
+iz_dun03.gat,202,47,2 script Warpra Helper 112,{
+ if (#iz_dun == 1) mes "[Warpra]";
+ if (#iz_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#iz_dun == 1) close;
+ set #iz_dun,1;
+ mes "[Warpra]";
+ mes "Byalan Dungeon unlocked!";
+ close;
+}
+
+c_tower3.gat,129,106,4 script Warpra Helper 112,{
+ if (#c_tower == 1) mes "[Warpra]";
+ if (#c_tower == 1) mes "Sorry I can only unlock this location.";
+ if (#c_tower == 1) close;
+ set #c_tower,1;
+ mes "[Warpra]";
+ mes "Clock Tower Dungeon unlocked!";
+ close;
+}
+
+mjo_dun02.gat,39,25,4 script Warpra Helper 112,{
+ if (#mjo_dun == 1) mes "[Warpra]";
+ if (#mjo_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#mjo_dun == 1) close;
+ set #mjo_dun,1;
+ mes "[Warpra]";
+ mes "Coal Mine Dungeon unlocked!";
+ close;
+}
+
+prt_sewb2.gat,176,30,3 script Warpra Helper 112,{
+ if (#prt_sewb == 1) mes "[Warpra]";
+ if (#prt_sewb == 1) mes "Sorry I can only unlock this location.";
+ if (#prt_sewb == 1) close;
+ set #prt_sewb,1;
+ mes "[Warpra]";
+ mes "Culvert Dungeon unlocked!";
+ close;
+}
+
+gefenia03.gat,137,34,0 script Warpra Helper 112,{
+ if (#gefenia == 1) mes "[Warpra]";
+ if (#gefenia == 1) mes "Sorry I can only unlock this location.";
+ if (#gefenia == 1) close;
+ set #gefenia,1;
+ mes "[Warpra]";
+ mes "Gefenia Dungeon unlocked!";
+ close;
+}
+
+gef_dun02.gat,218,61,2 script Warpra Helper 112,{
+ if (#gef_dun == 1) mes "[Warpra]";
+ if (#gef_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#gef_dun == 1) close;
+ set #gef_dun,1;
+ mes "[Warpra]";
+ mes "Gefen Dungeon unlocked!";
+ close;
+}
+
+glast_01.gat,371,308,3 script Warpra Helper 112,{
+ if (#gl_dun == 1) mes "[Warpra]";
+ if (#gl_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#gl_dun == 1) close;
+ set #gl_dun,1;
+ mes "[Warpra]";
+ mes "Glast Heim Dungeon unlocked!";
+ close;
+}
+
+gon_dun01.gat,167,273,4 script Warpra Helper 112,{
+ if (#gon_dun == 1) mes "[Warpra]";
+ if (#gon_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#gon_dun == 1) close;
+ set #gon_dun,1;
+ mes "[Warpra]";
+ mes "Gonryun Dungeon unlocked!";
+ close;
+}
+
+juperos_02.gat,127,154,5 script Warpra Helper 112,{
+ if (#juperos == 1) mes "[Warpra]";
+ if (#juperos == 1) mes "Sorry I can only unlock this location.";
+ if (#juperos == 1) close;
+ set #juperos,1;
+ mes "[Warpra]";
+ mes "Juperos Cave unlocked!";
+ close;
+}
+
+lhz_dun02.gat,156,151,3 script Warpra Helper 112,{
+ if (#lighthalzen_dun == 1) mes "[Warpra]";
+ if (#lighthalzen_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#lighthalzen_dun == 1) close;
+ set #lighthalzen_dun,1;
+ mes "[Warpra]";
+ mes "Lighthalzen Bio Lab unlocked!";
+ close;
+}
+
+mag_dun02.gat,46,41,3 script Warpra Helper 112,{
+ if (#mag_dun == 1) mes "[Warpra]";
+ if (#mag_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#mag_dun == 1) close;
+ set #mag_dun,1;
+ mes "[Warpra]";
+ mes "Magma Dungeon unlocked!";
+ close;
+}
+
+odin_tem01.gat,115,148,3 script Warpra Helper 112,{
+ if (#odintemple == 1) mes "[Warpra]";
+ if (#odintemple == 1) mes "Sorry I can only unlock this location.";
+ if (#odintemple == 1) close;
+ set #odintemple,1;
+ mes "[Warpra]";
+ mes "Odin Temple unlocked!";
+ close;
+}
+
+orcsdun01.gat,185,11,3 script Warpra Helper 112,{
+ if (#orcsdun == 1) mes "[Warpra]";
+ if (#orcsdun == 1) mes "Sorry I can only unlock this location.";
+ if (#orcsdun == 1) close;
+ set #orcsdun,1;
+ mes "[Warpra]";
+ mes "Orc Dungeon unlocked!";
+ close;
+}
+
+pay_dun03.gat,162,143,3 script Warpra Helper 112,{
+ if (#pay_dun== 1) mes "[Warpra]";
+ if (#pay_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#pay_dun == 1) close;
+ set #pay_dun,1;
+ mes "[Warpra]";
+ mes "Payon Dungeon unlocked!";
+ close;
+}
+
+moc_pryd02.gat,101,95,3 script Warpra Helper 112,{
+ if (#moc_pryd == 1) mes "[Warpra]";
+ if (#moc_pryd == 1) mes "Sorry I can only unlock this location.";
+ if (#moc_pryd == 1) close;
+ set #moc_pryd,1;
+ mes "[Warpra]";
+ mes "Pyramides Dungeon unlocked!";
+ close;
+}
+
+in_sphinx2.gat,274,268,1 script Warpra Helper 112,{
+ if (#in_sphinx == 1) mes "[Warpra]";
+ if (#in_sphinx == 1) mes "Sorry I can only unlock this location.";
+ if (#in_sphinx == 1) close;
+ set #in_sphinx,1;
+ mes "[Warpra]";
+ mes "Sphinx Dungeon unlocked!";
+ close;
+}
+
+treasure02.gat,104,40,3 script Warpra Helper 112,{
+ if (#treasure == 1) mes "[Warpra]";
+ if (#treasure == 1) mes "Sorry I can only unlock this location.";
+ if (#treasure == 1) close;
+ set #treasure,1;
+ mes "[Warpra]";
+ mes "Sunken Ship Dungeon unlocked!";
+ close;
+}
+
+xmas_dun02.gat,124,131,3 script Warpra Helper 112,{
+ if (#xmas_dun == 1) mes "[Warpra]";
+ if (#xmas_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#xmas_dun == 1) close;
+ set #xmas_dun,1;
+ mes "[Warpra]";
+ mes "Toy Factory Dungeon unlocked!";
+ close;
+}
+
+um_dun02.gat,44,28,3 script Warpra Helper 112,{
+ if (#um_dun == 1) mes "[Warpra]";
+ if (#um_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#um_dun == 1) close;
+ set #um_dun,1;
+ mes "[Warpra]";
+ mes "Umbala Dungeon unlocked!";
+ close;
+}
+
+tur_dun02.gat,162,23,3 script Warpra Helper 112,{
+ if (#tur_dun == 1) mes "[Warpra]";
+ if (#tur_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#tur_dun == 1) close;
+ set #tur_dun,1;
+ mes "[Warpra]";
+ mes "Turtle Island Dungeon unlocked!";
+ close;
+}
+prt_maze02.gat,102,69,4 script Warpra Helper 112,{
+ if (#hid_dun == 1) mes "[Warpra]";
+ if (#hid_dun == 1) mes "Sorry I can only unlock this location.";
+ if (#hid_dun == 1) close;
+ set #hid_dun,1;
+ mes "[Warpra]";
+ mes "Hidden Dungeon unlocked!";
+ close;
+} \ No newline at end of file
diff --git a/npc/custom/eAAC_Scripts/banker.txt b/npc/custom/eAAC_Scripts/banker.txt
new file mode 100644
index 000000000..3aa756f19
--- /dev/null
+++ b/npc/custom/eAAC_Scripts/banker.txt
@@ -0,0 +1,400 @@
+//| ~~~~~~~~~~~ Information ~~~~~~~~~~~
+//| | This is a simple banking npc, |
+//| | which uses coins to store zeny |
+//| | instead of using those global |
+//| | variables :P |
+//| | |
+//| | It's fully customizable, you |
+//| | can exchange the coin ID used |
+//| | at will, it won't affect the |
+//| | script whatsoever =3 |
+//| | |
+//| | The prices can also be set, the |
+//| | way you like the most, as they |
+//| | won't affect the script either |
+//| | |
+//| | No db/client files modification |
+//| | needed, just "Plug&Play" ;P |
+//| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+//| Revision:
+//| v.1.0: Released script. No problems or bugs found, at least :P
+//| It's your duty to find them now if there are.
+//| @minvalue must contain the coin price of the lowest coin value
+//| in order for the script to work correctly. By default it's set
+//| to the bronze coin
+
+//| Revision:
+//| v.2.0: Added a Mix option in the Zeny to Coin function,
+//| where it allows you to split your desired Zeny into
+//| the coins you wish to obtain, without having to go
+//| through the other functions to obtain them all. That way
+//| you can get them all at once ;3
+//|
+//| It also displays the total zeny being exchanged,
+//| the total coins obtained and the difference between
+//| the amount of zeny you've inputted and the sum of
+//| the coin's values.
+
+//| Upcomming possible updates:
+//| v.3.0: Adding a refining system, so you can gather ore and the likes
+//| to make your own coins. They will have a failure chance
+//| of course. You will need, for now: 10 ores of the type of
+//| coin you wish, a mini furnace, an anvil depending on what
+//| You're crafting, and a hammer according to it.
+
+//| Copyright İ 2006 erKURITA. All Rights Reserved
+
+prontera.gat,155,188,3 script Zacariath Madhat 872,{
+
+
+//|~~~~~~~~~ Settings of the NPC: ~~~~~~~~~
+set @npcname$,"^999999[Zach]^000000"; //|
+set @bronzeprice,10000; //|
+set @silverprice,100000; //|
+set @goldprice,1000000; //|
+set @mithrilprice,10000000; //|
+set @bronzecoinid,673; //|
+set @silvercoinid,677; //|
+set @goldcoinid,671; //|
+set @mithrilcoinid,674; //|
+set @minvalue,@bronzeprice; //|
+//|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+mes @npcname$;
+mes "Hi "+strcharinfo(0)+", I'm this town's banker";
+mes "I can allow you to exchange your zeny into useful and handy coins, which you can use to make trades between players, or just save them";
+next;
+mes @npcname$;
+mes "^996600Bronze^000000 Coins are worth "+@bronzeprice+"z, ^999999Silver^000000 Coins are worth "+@silverprice+"z, ^FFCC00Gold^000000 Coins "+@goldprice+"z, ^CCCCCCMithril^000000 Coins are worth "+@mithrilprice+"z";
+next;
+goto L_Menu;
+
+L_Menu:
+mes @npcname$;
+mes "What do you want to do then?";
+menu "Exchange my coins into zeny",L_CoinZeny,"Exchange my zeny into coins",L_ZenyCoin,"Nothing for now, sorry",L_End;
+
+//| Here starts the Coin to Zeny Exchange
+
+L_CoinZeny:
+
+ next;
+ mes @npcname$;
+ mes "First than anything, what kind of coins are you going to exchange?";
+ menu "Bronze Coins",L_Bronze,"Silver Coins",L_Silver,"Gold Coins",L_Gold,"Mithril Coins",L_Mithril,"None for now",L_Menu;
+
+
+ L_Bronze:
+ callsub L_Coincheckout,@bronzecoinid,@bronzeprice;
+ goto L_CoinZeny;
+
+ L_Silver:
+ callsub L_Coincheckout,@silvercoinid,@silverprice;
+ goto L_CoinZeny;
+
+ L_Gold:
+ callsub L_Coincheckout,@goldcoinid,@goldprice;
+ goto L_CoinZeny;
+
+ L_Mithril:
+ callsub L_Coincheckout,@mithrilcoinid,@mithrilprice;
+ goto L_CoinZeny;
+
+L_Coincheckout:
+
+ set @itemid,getarg(0);
+ if (@itemid == @bronzecoinid) {
+ set @coinname$,"^996600Bronze^000000";
+ goto L_PreInputing;
+ } else if (@itemid == @silvercoinid) {
+ set @coinname$,"^999999Silver^000000";
+ goto L_PreInputing;
+ } else if (@itemid == @goldcoinid) {
+ set @coinname$,"^FFCC00Gold^000000";
+ goto L_PreInputing;
+ } else if (@itemid == @mithrilcoinid) {
+ set @coinname$,"^CCCCCCMithril^000000";
+ goto L_PreInputing;
+ } else
+ next;
+
+L_PreInputing:
+
+ mes @npcname$;
+ mes "Let's see, how many coins do you want to exchange?";
+ next;
+ goto L_Inputing;
+
+ L_Inputing:
+ input @coinamount;
+
+ if (@coinamount == 0) {
+ mes @npcname$;
+ mes "You didn't input any amount, please retry";
+ next;
+ goto L_Inputing;
+ } else if (countitem(@itemid) < @coinamount) {
+ mes @npcname$;
+ mes "You don't have enough coins, please get some";
+ next;
+ goto L_Menu;
+ } else
+
+ next;
+ mes @npcname$;
+ mes "So, you want to exchange "+@coinamount+" "+@coinname$+" ?";
+ menu "Yes, I want to exchange this much",L_Proceed,"No, I want to exchange something else",L_CoinZeny,"No, I want to input another number",L_Inputing,"No, I dont want to exchange anything",L_Menu;
+
+ L_Proceed:
+ next;
+ set @price,getarg(1)*@coinamount;
+ set Zeny,Zeny+@price;
+ delitem @itemid,@coinamount;
+ mes @npcname$;
+ mes "There we go, here's your money";
+ next;
+ return;
+
+//| Here starts the Zeny to Coin exchange.
+
+L_ZenyCoin:
+ next;
+ if (MaxWeight*50/100 < Weight) {
+ if (MaxWeight*90/100 < Weight) {
+ mes @npcname;
+ mes "Sorry but you have more than 90% weight. Your coins might drop. I can't give you anything.";
+ next;
+ goto L_Menu;
+ } else
+ mes @npcname$;
+ mes "You have 50% or more weight, do you still want to continue?";
+ menu "Yes",L_ContinueZenyCoin,"No, thanks",L_Menu;
+ }
+L_ContinueZenyCoin:
+ mes @npcname$;
+ mes "First, how much zeny do you want to exchange";
+ callsub L_Inputingzeny;
+ callsub L_Zenycoins;
+ next;
+ mes @npcname$;
+ mes "You can have, with "+@zenyamount+":";
+ mes "^996600"+@bronzezeny+"^000000 Bronze coins";
+ mes "^999999"+@silverzeny+"^000000 Silver coins";
+ mes "^FFCC00"+@goldzeny+"^000000 Gold coins";
+ mes "or";
+ mes "^CCCCCC"+@mithrilzeny+"^000000 Mithril coins";
+ next;
+ if (@zenyamount < @minvalue) goto L_Moremoney;
+ goto L_ZenyCoin2;
+
+ L_ZenyCoin2:
+ mes @npcname$;
+ mes "Which ones do you want? Or do you want a mix of them?";
+ menu "I want the bronze ones",L_Bronzes,"I want the silver ones",L_Silvers,"I want the gold ones",L_Golds,"I want the mithril ones",L_Mithrils,"I want a mix of them",L_Mix,"Nothing for now, sorry",L_Menu;
+
+ L_Bronzes:
+ if (@bronzezeny == 0) goto L_Moremoney;
+ callsub L_Zenycheckout,@bronzecoinid,@bronzeprice,@bronzezeny;
+ goto L_Menu;
+
+ L_Silvers:
+ if (@silverzeny == 0) goto L_Moremoney;
+ callsub L_Zenycheckout,@silvercoinid,@silverprice,@silverzeny;
+ goto L_Menu;
+
+ L_Golds:
+ if (@goldzeny == 0) goto L_Moremoney;
+ callsub L_Zenycheckout,@goldcoinid,@goldprice,@goldzeny;
+ goto L_Menu;
+
+ L_Mithrils:
+ if (@mithrilzeny == 0) goto L_Moremoney;
+ callsub L_Zenycheckout,@mithrilcoinid,@mithrilprice,@mithrilzeny;
+ goto L_Menu;
+
+L_Zenycheckout:
+ next;
+ set @itemid,getarg(0);
+ set @pricea,getarg(1)*getarg(2);
+ getitem @itemid,getarg(2);
+ set Zeny,Zeny-@pricea;
+ mes @npcname$;
+ mes "There you go, here's your coins";
+ next;
+ return;
+
+L_Zenycoins:
+ set @bronzezeny,@zenyamount/@bronzeprice;
+ set @silverzeny,@zenyamount/@silverprice;
+ set @goldzeny,@zenyamount/@goldprice;
+ set @mithrilzeny,@zenyamount/@mithrilprice;
+ return;
+
+L_Inputingzeny:
+
+ input @zenyamount;
+ if (Zeny == 0) {
+ mes @npcname$;
+ mes "You don't have any Zeny left. I can't do anything. Get some Zeny first";
+ next;
+ goto L_Menu;
+ } else if (@zenyamount == 0) {
+ mes @npcname$;
+ mes "You didn't input any amount, please retry";
+ next;
+ goto L_Inputingzeny;
+ } else if (@zenyamount > Zeny) {
+ mes @npcname$;
+ mes "The inputted zeny amount is bigger than your actual zeny amount";
+ mes "Please re-entry another amount";
+ next;
+ goto L_Inputingzeny;
+
+ } else return;
+
+//| Other labels
+
+L_Moremoney:
+ mes @npcname$;
+ mes "You need to get more zeny, I can't give you anything with "+@zenyamount+"z, sorry";
+ next;
+ goto L_Menu;
+
+L_End:
+ next;
+ mes @npcname$;
+ mes "Good to see you and hope to see you again. Bye";
+ close;
+
+
+//| Mix function
+
+L_Mix:
+ next;
+ mes @npcname$;
+ mes "Ok, let's start with ^996600Bronze^000000 coins";
+ next;
+ mes @npcname$;
+ mes "How many coins do you want?";
+ input @bronzecoins;
+ next;
+ set @totalzeny,@bronzecoins*@bronzeprice;
+ set @totalcoins,@bronzecoins;
+ mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
+ mes "Coins:";
+ mes " ^996600Bronze^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
+ mes "ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ";
+ if (@totalzeny > @zenyamount) {
+ mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
+ mes "Zeny Left: "+@zenyammount-@totalzeny;
+ goto L_Overzeny;
+ } else
+ mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
+ mes "Zeny Left: "+@zenyammount-@totalzeny;
+ next;
+ if (@totalzeny > @zenyamount)
+ mes @npcname$;
+ mes "Is this enough or do you want more?";
+ menu "It's enough, thanks",L_Payoff,"No, I want some more",-;
+ next;
+ mes @npcname$;
+ mes "Now ^999999Silver^000000 coins. How many coins do you want?";
+ next;
+ input @silvercoins;
+ next;
+ set @totalzeny,@bronzecoins*@bronzeprice+@silvercoins*@silverprice;
+ set @totalcoins,@bronzecoins+@silvercoins;
+ mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
+ mes "Coins:";
+ mes " ^996600Bronze^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
+ mes " ^999999Silver^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000";
+ mes "ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ";
+ if (@totalzeny > @zenyamount) {
+ mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
+ mes "Zeny Left: "+@zenyammount-@totalzeny;
+ goto L_Overzeny;
+ } else
+ mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
+ mes "Zeny Left: "+@zenyammount-@totalzeny;
+ next;
+ if (@totalzeny > @zenyamount) goto L_Overzeny;
+ mes @npcname$;
+ mes "Is this enough or do you want more?";
+ menu "It's enough, thanks",L_Payoff,"No, I want some more",-;
+ next;
+ mes @npcname$;
+ mes "Now ^FFCC00Gold^000000 coins. How many coins do you want?";
+ input @goldcoins;
+ next;
+ set @totalzeny,@bronzecoins*@bronzeprice+@silvercoins*@silverprice+@goldcoins*@goldprice;
+ set @totalcoins,@bronzecoins+@silvercoins+@goldcoins;
+ mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
+ mes "Coins:";
+ mes " ^996600Bronze^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
+ mes " ^999999Silver^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000";
+ mes " ^FFCC00Gold^000000: "+@goldcoins+" ^CC0000"+@goldcoins*@goldprice+"^000000";
+ mes "ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ";
+ if (@totalzeny > @zenyamount) {
+ mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
+ mes "Zeny Left: "+@zenyammount-@totalzeny;
+ goto L_Overzeny;
+ } else
+ mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
+ mes "Zeny Left: "+@zenyammount-@totalzeny;
+ next;
+ if (@totalzeny > @zenyamount) goto L_Overzeny;
+ mes @npcname$;
+ mes "Is this enough or do you want more?";
+ menu "It's enough, thanks",L_Payoff,"No, I want some more",-;
+ next;
+ mes @npcname$;
+ mes "Now ^CCCCCCMithril^000000 Coins. How many coins do you want?";
+ input @mithrilcoins;
+ next;
+ set @totalzeny,@bronzecoins*@bronzeprice+@silvercoins*@silverprice+@goldcoins*@goldprice+@mithrilcoins*@mithrilprice;
+ set @totalcoins,@bronzecoins+@silvercoins+@goldcoins+@mithrilcoins;
+ mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
+ mes "Coins:";
+ mes " ^996600Bronze^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
+ mes " ^999999Silver^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000";
+ mes " ^FFCC00Gold^000000: "+@goldcoins+" ^CC0000"+@goldcoins*@goldprice+"^000000";
+ mes " ^CCCCCCMithril^000000: "+@mithrilcoins+" ^CC0000"+@mithrilcoins*@mithrilprice+"^000000";
+ mes "ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ";
+ if (@totalzeny > @zenyamount) {
+ mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
+ mes "Zeny Left: "+@zenyammount-@totalzeny;
+ goto L_Overzeny;
+ } else
+ mes "TOTAL: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
+ mes "Zeny Left: "+@zenyammount-@totalzeny;
+ next;
+ if (@totalzeny > @zenyamount) goto L_Overzeny;
+ mes @npcname$;
+ mes "Is this ok?: "+@bronzecoins+" bronze, "+@silvercoins+" silver, "+@goldcoins+" gold, "+@mithrilcoins+" mithril coins, for a total amount of "+@totalzeny;
+ menu "Yes, it's ok",L_Payoff,"No, I want to re-intro them",L_Mix,"Sorry, I dont want anything",L_Menu;
+
+L_Payoff:
+ next;
+ if (@zenyamount > Zeny) goto L_Overzeny;
+ set Zeny,Zeny-@totalzeny;
+ getitem 673,@bronzecoins;
+ getitem 677,@silvercoins;
+ getitem 671,@goldcoins;
+ getitem 674,@mithrilcoins;
+ mes @npcname$;
+ mes "There you go, here's your coins";
+ next;
+ set @bronzecoins,0;
+ set @silvercoins,0;
+ set @goldcoins,0;
+ set @mithrilcoins,0;
+ goto L_End;
+
+L_Overzeny:
+ next;
+ mes @npcname$;
+ mes "Sorry, I can't do anything else. Either the sum of all the coins you inputted is bigger than the zeny amount inputted, or the inputted amout of zeny is bigger that your total Zeny. Please retry";
+ next;
+ goto L_Menu;
+} \ No newline at end of file