summaryrefslogtreecommitdiff
path: root/npc/custom
diff options
context:
space:
mode:
Diffstat (limited to 'npc/custom')
-rw-r--r--npc/custom/2-2shop.txt1
-rw-r--r--npc/custom/Auctioneer.txt563
-rw-r--r--npc/custom/Lance/FR_HallOfFame.c297
-rw-r--r--npc/custom/Lance/FR_MailSystem.c118
-rw-r--r--npc/custom/Lance/FR_WeatherController.c403
-rw-r--r--npc/custom/MVP_arena/amvp_func.txt101
-rw-r--r--npc/custom/MVP_arena/arena_mvp.txt791
-rw-r--r--npc/custom/WoE_Setter.txt187
-rw-r--r--npc/custom/adoption.txt502
-rw-r--r--npc/custom/airplane.txt436
-rw-r--r--npc/custom/banks/bank.txt126
-rw-r--r--npc/custom/banks/kafra_bank.txt116
-rw-r--r--npc/custom/blackjack.txt349
-rw-r--r--npc/custom/breeder.txt87
-rw-r--r--npc/custom/card_remover.txt175
-rw-r--r--npc/custom/devnpc.txt508
-rw-r--r--npc/custom/dye.txt176
-rw-r--r--npc/custom/eliza.txt702
-rw-r--r--npc/custom/gefenia.txt34
-rw-r--r--npc/custom/healers/heal.txt52
-rw-r--r--npc/custom/healers/heal_payment.txt105
-rw-r--r--npc/custom/jobs/jobmaster.txt499
-rw-r--r--npc/custom/jobs/old/jobchange.txt734
-rw-r--r--npc/custom/jobs/reset.txt40
-rw-r--r--npc/custom/lottery.txt457
-rw-r--r--npc/custom/morroc_raceway.txt245
-rw-r--r--npc/custom/mvm.txt895
-rw-r--r--npc/custom/penal_servitude.txt182
-rw-r--r--npc/custom/platinum_skills.txt112
-rw-r--r--npc/custom/poetry/ayothaya.txt724
-rw-r--r--npc/custom/quests/bandit_beard.txt234
-rw-r--r--npc/custom/quests/berzebub.txt74
-rw-r--r--npc/custom/quests/dead_branch.txt105
-rw-r--r--npc/custom/quests/elvenear.txt67
-rw-r--r--npc/custom/quests/event_6_new_hats.txt372
-rw-r--r--npc/custom/quests/fashion.txt67
-rw-r--r--npc/custom/quests/ironcane.txt49
-rw-r--r--npc/custom/quests/kaho_balmung.txt76
-rw-r--r--npc/custom/quests/kahohorn.txt84
-rw-r--r--npc/custom/quests/magicalhatquest.txt57
-rw-r--r--npc/custom/quests/sunglasses.txt144
-rw-r--r--npc/custom/quests/tha_statues.txt260
-rw-r--r--npc/custom/quests/thq/THQS_ChatingNPC.txt103
-rw-r--r--npc/custom/quests/thq/THQS_GuildNPC.txt95
-rw-r--r--npc/custom/quests/thq/THQS_QuestNPC.txt560
-rw-r--r--npc/custom/quests/thq/THQS_Quests.txt1050
-rw-r--r--npc/custom/quests/thq/THQS_TTShop.txt523
-rw-r--r--npc/custom/quests/valhallen.txt198
-rw-r--r--npc/custom/rpsroulette.txt286
-rw-r--r--npc/custom/shifty_assassin.txt208
-rw-r--r--npc/custom/sign_your_items.txt215
-rw-r--r--npc/custom/stock_market.txt793
-rw-r--r--npc/custom/tougijou.txt343
-rw-r--r--npc/custom/warper/warper.txt137
54 files changed, 15817 insertions, 0 deletions
diff --git a/npc/custom/2-2shop.txt b/npc/custom/2-2shop.txt
new file mode 100644
index 000000000..c8d9edc9b
--- /dev/null
+++ b/npc/custom/2-2shop.txt
@@ -0,0 +1 @@
+prontera.gat,155,211,5 shop 2-2 Class Shop 86,1950:-1,1952:-1,1954:-1,1956:-1,1958:-1,1960:-1,1801:-1,1803:-1,1805:-1,1811:-1,1809:-1,1901:-1,1903:-1,1905:-1,1909:-1,1911:-1,1907:-1,1550:-1,1551:-1,1552:-1,1553:-1,1554:-1,1555:-1,1556:-1,1557:-1,1558:-1,2341:-1,2343:-1 \ No newline at end of file
diff --git a/npc/custom/Auctioneer.txt b/npc/custom/Auctioneer.txt
new file mode 100644
index 000000000..9a36bc268
--- /dev/null
+++ b/npc/custom/Auctioneer.txt
@@ -0,0 +1,563 @@
+//===== eAthena Script ======================================================================
+//= 1. Auctioneer
+//= 2. Auction Helping (Gives info only, but still good to have in)
+//===== Original By =========================================================================
+//= Fredzilla
+//===== Helped By ===========================================================================
+//= Not one quite yet, but you never know ;)
+//===== Current Version: ====================================================================
+//= 1.0 (Beta) < Thats means it is in testing
+//===== Compatible With: ====================================================================
+//= Any eAthena, that also has a script_athena.conf
+//===== Description: ========================================================================
+//= Lets a people place items into an auction, max of 10 items per round
+//= People can bid on them item
+//= Then buy the items, and sellers pickup there money
+//===== Comments and Credits ===========================================================
+//= This script would not have been made possible if it was not for "Maeki Rika"
+//= My praise goes out to her for finding out all the things we can do with the
+//= current system that eAthena uses
+//=
+//= More comments are listed down the page, in a attempt to explain what is going on in each
+//= section of the script
+//=
+//= This script is currently in testing, and any loss of items will, not only need to be
+//= reported inside the thread I made for this script, but be replaced by GM if proof was given :D
+//===========================================================================================
+
+prontera.gat,153,193,5 script Auctioneer 807,{
+ mes "[Auctioneer]";
+ set @num,0;
+// These few line below are to recover item that would be lost due to a new auction starting
+L_RNameLoop:
+ if(strcharinfo(0)==$ANamesB$[@num] && $paidB[@num]==0) goto L_RBackup;
+ set @num,@num+1;
+ if(@num<10) goto L_RNameLoop;
+ if($Auction==1) goto L_Register;
+ if($Auction==2) goto L_Bid;
+ if($Auction==3) goto L_PayPickup;
+
+// After a server restart, and no auction value is set, it will run this
+// People who placed items in there before the restart should still be to retrieve there items
+
+ mes "You are able to sell and buy things inside the auction, unfortunately nothing has been started, you need to wait for the auction to start";
+ mes "No items lost will be given back, please remember you used this at your own risk";
+ next;
+ mes "[Auctioneer]";
+ mes "I am very sorry if you have lost items";
+ close;
+
+// If the Auction has started, it will run this, during this time items can be registerd and registerd items retrieved
+
+L_Register:
+ mes "Welcome to the auction, you may register you items at this time";
+ next;
+ set @num,0;
+L_NameLoop:
+ if(strcharinfo(0)==$ANames$[@num]) goto L_Already;
+ set @num,@num+1;
+ if(@num<10) goto L_NameLoop;
+ if(getarraysize($AItems)==10) goto L_AFull;
+ menu "I want to register an item now",L_IRegister,"I dont want to leave an item",-;
+L_End:
+ mes "[Auctioneer]";
+ mes "Ok, come back whenever";
+ close;
+L_IRegister:
+ mes "[Auctioneer]";
+ mes "Listed below is the first 10 items you have on you now";
+ mes "What do you want to register?";
+ next;
+ set @array,0;
+ set @item,500;
+// set @loopcount,0;
+L_ILoop:
+// set @loopcount,@loopcount+1;
+// debugmes @loopcount;
+ set @item,@item+1;
+ if(@item>=13005) goto L_Menu;
+ if(countitem(@item)>0) set @item2[@array],@item;
+ if(countitem(@item)>0) set @array,@array+1;
+ if(@array==10) goto L_Menu;
+ set @item,@item+1;
+ if(countitem(@item)>0) set @item2[@array],@item;
+ if(countitem(@item)>0) set @array,@array+1;
+ if(@array==10) goto L_Menu;
+ set @item,@item+1;
+ if(countitem(@item)>0) set @item2[@array],@item;
+ if(countitem(@item)>0) set @array,@array+1;
+ if(@array==10) goto L_Menu;
+ set @item,@item+1;
+ if(countitem(@item)>0) set @item2[@array],@item;
+ if(countitem(@item)>0) set @array,@array+1;
+ if(@array==10) goto L_Menu;
+ set @item,@item+1;
+ if(countitem(@item)>0) set @item2[@array],@item;
+ if(countitem(@item)>0) set @array,@array+1;
+ if(@array==10) goto L_Menu;
+ set @item,@item+1;
+ if(countitem(@item)>0) set @item2[@array],@item;
+ if(countitem(@item)>0) set @array,@array+1;
+ if(@array==10) goto L_Menu;
+ set @item,@item+1;
+ if(countitem(@item)>0) set @item2[@array],@item;
+ if(countitem(@item)>0) set @array,@array+1;
+ if(@array==10) goto L_Menu;
+ set @item,@item+1;
+ if(countitem(@item)>0) set @item2[@array],@item;
+ if(countitem(@item)>0) set @array,@array+1;
+ if(@array==10) goto L_Menu;
+ set @item,@item+1;
+ if(countitem(@item)>0) set @item2[@array],@item;
+ if(countitem(@item)>0) set @array,@array+1;
+ if(@array==10) goto L_Menu;
+ set @item,@item+1;
+ if(countitem(@item)>0) set @item2[@array],@item;
+ if(countitem(@item)>0) set @array,@array+1;
+ if(@array==10) goto L_Menu;
+ goto L_ILoop;
+L_Menu:
+ menu getitemname(@item2[0]),-,getitemname(@item2[1]),-,getitemname(@item2[2]),-,getitemname(@item2[3]),-,getitemname(@item2[4]),-,getitemname(@item2[5]),-,getitemname(@item2[6]),-,getitemname(@item2[7]),-,getitemname(@item2[8]),-,getitemname(@item2[9]),-,"Next Page",L_WipeLoop;
+ set @setitem,@item2[@menu-1];
+ set @num,0;
+L_SorryLoop:
+ set @num,@num+1;
+ if(@menu==@num && @setitem == 0) goto L_Sorry;
+ if(@num==10) goto L_FinalReg;
+ goto L_SorryLoop;
+L_FinalReg:
+ mes "[Auctioneer]";
+ mes "Please remember that if this item does contain cards, or is crafted, these distinctions will be lost when it is put into the auction";
+ mes "This also means if you get the item back, that this applies to, you will have lost out";
+ mes " ";
+ mes "So you want to register your "+getitemname(@setitem);
+ next;
+ menu "Yes please",-,"No",L_End;
+ mes "[Auctioneer]";
+ mes "Ok I will register this item now";
+ next;
+ set @amount,1;
+ if(countitem(@setitem)==1) goto L_FinalInput;
+ mes "[Auctioneer]";
+ mes "Wait a minute it seems you have more than one of that item, please enter the ammount you want to put in the aution";
+ next;
+ input @amount;
+ if(countitem(@setitem)<@amount) goto L_NotEnough;
+L_FinalInput:
+ set $AItems[$array],@setitem;
+ set $ANames$[$array],strcharinfo(0);
+ set $AAmount[$array],@amount;
+ set $array,$array+1;
+ delitem @setitem,@amount;
+ mes "[Auctioneer]";
+ mes "You item has been taken into storage, ready for sale, the auction will begin soon, watch for the announcment";
+ close;
+L_AFull:
+ mes "[Auctioneer]";
+ mes "Oh, sorry, it seems my auction is full this time round, please try in the next one";
+ close;
+L_WipeLoop:
+ deletearray @item2[0],10;
+ set @array,0;
+ goto L_ILoop;
+L_Sorry:
+ mes "[Auctioneer]";
+ mes "It seems that is all you have to offer me, come back when you know what you want to sell";
+ close;
+L_Already:
+ mes "[Auctioneer]";
+ mes "It seems you already have have an item registerd here, would you like to retrieve your item?";
+ next;
+ menu "Yes",-,"No",L_End;
+ getitem $AItems[@num],$AAmount[@num];
+L_AItemsLoop:
+ set $AItems[@num],$AItems[@num+1];
+ set $ANames$[@num],$ANames$[@num+1];
+ set $AAmount[@num],$AAmount[@num+1];
+ set @num,@num+1;
+ if(@num<10) goto L_AItemsLoop;
+ set $array,$array-1;
+ set @num,0;
+ mes "[Auctioneer]";
+ mes "Ok, all items present and acounted for, have a nice day";
+ close;
+L_NotEnough:
+ mes "[Auctioneer]";
+ mes "Seems you dont have that much "+getitemname(@setitem)+"'s";
+ close;
+// If the Auction has enterd phase 2, it will run this, during this time items you can bid on registerd
+// No items can be retrieved during this time, they are now stuck
+
+L_Bid:
+ mes "What would you like to bid on?";
+ next;
+ set @num,0;
+L_MenuLoop:
+ set @menu$[@num],$AAmount[@num]+" x "+getitemname($AItems[@num])+" "+$bid[@num]+"z";
+ set @num,@num+1;
+ if($AItems[@num]!=0) goto L_MenuLoop;
+ menu
+ @menu$[0],-,
+ @menu$[1],-,
+ @menu$[2],-,
+ @menu$[3],-,
+ @menu$[4],-,
+ @menu$[5],-,
+ @menu$[6],-,
+ @menu$[7],-,
+ @menu$[8],-,
+ @menu$[9],-;
+ mes "[Auctioneer]";
+ set @num,@menu-1;
+ if(strcharinfo(0)==$ANames$[@num]) goto L_CantBid;
+L_ReBid:
+ mes "You are currently bidding on "+$AAmount[@num]+" x "+getitemname($AItems[@num]);
+ mes "The current bid is at "+$bid[@num]+"z";
+ mes "This was made by "+$bidders$[@num];
+ if($bidders$[@num]==strcharinfo(0)) goto L_AlreadyBid;
+ mes "How much do you want to bid yourself";
+ mes "(Use 0 to cancel at this point)";
+ next;
+ input @bid;
+ if(@bid<=0) goto L_End;
+ if(zeny<@bid) goto L_LowZeny;
+ if(@bid<$bid[@num]) goto L_LowBid;
+ mes "[Auctioneer]";
+ mes "You are about to bid "+@bid+"z for "+$AAmount[@num]+" x "+getitemname($AItems[@num]);
+ mes "Are you sure?";
+ next;
+ menu "Yes",-,"No",L_End;
+ set $bid[@num],@bid;
+ set $bidders$[@num],strcharinfo(0);
+ mes "[Auctioneer]";
+ mes "Your bid has been entered";
+ close;
+L_LowZeny:
+ mes "[Auctioneer]";
+ mes "Sorry you need to show me that amount as proof you could pay, if you do win";
+ mes "Please either get more money, or bid lower";
+ close;
+L_CantBid:
+ mes "Sorry, you cant bid on your own lots";
+ close;
+L_LowBid:
+ mes "[Auctioneer]";
+ mes "Your bid seems lower than the current one, try entering a higher ammount of zeny";
+ next;
+ mes "[Auctioneer]";
+ goto L_ReBid;
+L_AlreadyBid:
+ mes "Hey wait, that is you, you can't bid again";
+ close;
+// If the Auction has entered phase 3, it will run this
+// During this time, items that have been bid on can be bought
+// Items not bid on can be picked back up by the seller
+// And if any of the items have been bought, and are paid for, seller can pick up their money
+
+L_PayPickup:
+ mes "The auction has now ended";
+ mes "What would you like to do?";
+ next;
+ menu "Check for items I have sold",-,"Check for items I have won",L_Won,"Nothing",L_End;
+
+// Check starts here for if you have sold anything during this auction
+
+ set @num,0;
+L_SoldLoop:
+ if($ANames$[@num]==strcharinfo(0)) goto L_Sold;
+ set @num,@num+1;
+ if(@num<10) goto L_SoldLoop;
+ mes "[Auctioneer]";
+ mes "Sorry it seems you have either picked up all you items, money";
+ mes "or you didnt register any items in this auction";
+ close;
+L_Sold:
+ mes "[Auctioneer]";
+ if($paid[@num]==3) goto L_Returned;
+ mes "Ah I see here, you sold your "+$AAmount[@num]+" x "+getitemname($AItems[@num]);
+ mes "Lets see here it sold for";
+ next;
+ if($bid[@num]==0) goto L_GiveBack;
+ if($paid[@num]==2) goto L_AlreadyPaid;
+ mes "[Auctioneer]";
+ mes $bid[@num]+"z and "+$bidders$[@num]+" bought it from you";
+ if($paid[@num]!=1) goto L_NoMoney;
+ mes "They have fully paid for it, so here is your money";
+ next;
+ set zeny,zeny+$bid[@num];
+ set $paid[@num],2;
+ goto L_End;
+L_AlreadyPaid:
+ mes "[Auctioneer]";
+ mes "Hmm, seems you already have you money for this lot, not trying to con me are you?";
+ close;
+L_Returned:
+ mes "[Auctioneer]";
+ mes "Seems we returned you item already";
+ close;
+L_GiveBack:
+ mes "[Auctioneer]";
+ mes "Seems no-one wanted your item(s)";
+ mes "So you can have them back now";
+ getitem $AItems[@num],$AAmount[@num];
+ set $paid[@num],3;
+ close;
+L_NoMoney:
+ mes "Sorry to say this but they havent paid this yet";
+ mes "You can go and talk to them now, or you can wait";
+ mes "If they havent paid by the time the next Auction starts come back to me to retrieve your item(s)";
+ close;
+
+// Check starts here for if you won any items during this auction, futher options follow
+
+L_Won:
+ set @num,0;
+ mes "[Auctioneer]";
+L_WonLoop:
+ if($bidders$[@num]==strcharinfo(0)) goto L_Winner;
+L_CarryOn:
+ set @num,@num+1;
+ if(@num<10) goto L_WonLoop;
+ mes "Sorry you didnt win any of the lots, please try again next time";
+ close;
+L_Winner:
+ if($paid[@num]>0) goto L_CarryOn;
+ mes "Well it does seem you have won an item";
+ mes "You won "+$AAmount[@num]+" x "+getitemname($AItems[@num]);
+ mes "And you bid "+$bid[@num]+"z for this lot";
+ mes "What do you want to do now?";
+ next;
+
+// At this point they can choose from 3 options, to Buy the current lot
+// see the next one they might have won, or give up that lot
+
+ menu "Buy this lot",-,"See Next Lot you won",L_CarryOn,"Relinquish this lot",L_Back;
+ if(zeny<$bid[@num]) goto L_2lowzeny;
+ set zeny,zeny-$bid[@num];
+ getitem $AItems[@num],$AAmount[@num];
+ set $paid[@num],1;
+ mes "[Auctioneer]";
+ mes "Our transaction is completed";
+ mes "See you again soon";
+ close;
+L_2lowzeny:
+ mes "[Auctioneer]";
+ mes "Sorry it seems you dont have enough zeny on you, please acquire more";
+ close;
+L_Back:
+ mes "[Auctioneer]";
+ mes "Are you sure you want to give up this lot?";
+ next;
+ menu "Yes",-,"No",L_End;
+ set $bid[@num],0;
+ set $bidders$[@num],"no-one";
+ mes "[Auctioneer]";
+ mes "It is done, you might want to tell "+$ANames$[@num]+" they can come and pickup his item(s)";
+ close;
+
+// All the times that will start the Auction
+
+OnClock0100:
+OnClock0400:
+OnClock0700:
+OnClock1000:
+OnClock1300:
+OnClock1600:
+OnClock1900:
+OnClock2200:
+// Starting Backup
+ copyarray $AItemsB[0],$AItems[0],10;
+ copyarray $ANamesB$[0],$ANames$[0],10;
+ copyarray $AAmountB[0],$AAmount[0],10;
+ copyarray $paidB[0],$paid[0],10;
+// End backup - Start Wiping
+ deletearray $paid[0],10;
+ deletearray $bid[0],10;
+ deletearray $bidders$[0],10;
+ deletearray $AItems[0],10;
+ deletearray $ANames$[0],10;
+ deletearray $AAmount[0],10;
+ set $array,0;
+// End Wiping - Begin Announce + Phase setting
+ announce "Registration time has begun, see the Auctioneer to register your items",0;
+ cleararray $bidders$[0],"no-one",10;
+ set $Auction,1;
+ end;
+
+// All the times that will start the bidding section
+
+OnClock0200:
+OnClock0500:
+OnClock0800:
+OnClock1100:
+OnClock1400:
+OnClock1700:
+OnClock2000:
+OnClock2300:
+ if($Auction==0) end;
+ announce "Registration time has ended, time for the biding to begin",0;
+ set $Auction,2;
+ initnpctimer;
+ end;
+
+// All the times that will start the last phase, buying and seller, and item retrieval
+
+OnClock0300:
+OnClock0600:
+OnClock0900:
+OnClock1200:
+OnClock1500:
+OnClock1800:
+OnClock2100:
+OnClock0000:
+ if($Auction==0) end;
+ announce "Bidding time has ended, see the Auctioneer to get your items, or money",0;
+ set $Auction,3;
+ end;
+
+// On the start of the server it will reset the Auction state, but not the items it contains
+// so people still have have a chance to retrieve there lost items
+
+OnInit:
+ copyarray $AItemsB[0],$AItems[0],10;
+ copyarray $ANamesB$[0],$ANames$[0],10;
+ copyarray $AAmountB[0],$AAmount[0],10;
+ copyarray $paidB[0],$paid[0],10;
+ deletearray $paid[0],10;
+ deletearray $bid[0],10;
+ deletearray $bidders$[0],10;
+ deletearray $AItems[0],10;
+ deletearray $ANames$[0],10;
+ deletearray $AAmount[0],10;
+ set $array,0;
+ set $Auction,0;
+ end;
+
+// All below is for anouncing the items in this auction, if there are none it will say so
+// and if there are none in there at the start of phase 2 it will reset the auctions state
+// This is to stop the auction ending message, and will only start again when it reachs phase 1 again
+
+OnTimer5000:
+ announce "Today in our auction we have",0;
+ end;
+OnTimer7000:
+ if($AItems[0]==0) setnpctimer 25001;
+ if($AAmount[0]==1) announce "A lovely "+getitemname($AItems[0])+" left by "+$ANames$[0],0;
+ if($AAmount[0]>1) announce $AAmount[0]+" lovely "+getitemname($AItems[0])+" left by "+$ANames$[0],0;
+ end;
+OnTimer9000:
+ if($AItems[1]==0) setnpctimer 25001;
+ if($AAmount[1]==1) announce "A great "+getitemname($AItems[1])+" left by "+$ANames$[1],0;
+ if($AAmount[1]>1) announce $AAmount[1]+" great "+getitemname($AItems[1])+" left by "+$ANames$[1],0;
+ end;
+OnTimer11000:
+ if($AItems[2]==0) setnpctimer 25001;
+ if($AAmount[2]==1) announce "A excellent "+getitemname($AItems[2])+" left by "+$ANames$[2],0;
+ if($AAmount[2]>1) announce $AAmount[2]+" excellent "+getitemname($AItems[2])+" left by "+$ANames$[2],0;
+ end;
+OnTimer13000:
+ if($AItems[3]==0) setnpctimer 25001;
+ if($AAmount[3]==1) announce "A superb "+getitemname($AItems[3])+" left by "+$ANames$[3],0;
+ if($AAmount[3]>1) announce $AAmount[3]+" superb "+getitemname($AItems[3])+" left by "+$ANames$[3],0;
+ end;
+OnTimer15000:
+ if($AItems[4]==0) setnpctimer 25001;
+ if($AAmount[4]==1) announce "A terrific "+getitemname($AItems[4])+" left by "+$ANames$[4],0;
+ if($AAmount[4]>1) announce $AAmount[4]+" terrific "+getitemname($AItems[4])+" left by "+$ANames$[4],0;
+ end;
+OnTimer17000:
+ if($AItems[5]==0) setnpctimer 25001;
+ if($AAmount[5]==1) announce "A wonderful "+getitemname($AItems[5])+" left by "+$ANames$[5],0;
+ if($AAmount[5]>1) announce $AAmount[5]+" wonderful "+getitemname($AItems[5])+" left by "+$ANames$[5],0;
+ end;
+OnTimer19000:
+ if($AItems[6]==0) setnpctimer 25001;
+ if($AAmount[6]==1) announce "A pretty "+getitemname($AItems[6])+" left by "+$ANames$[6],0;
+ if($AAmount[6]>1) announce $AAmount[6]+" pretty "+getitemname($AItems[6])+" left by "+$ANames$[6],0;
+ end;
+OnTimer21000:
+ if($AItems[7]==0) setnpctimer 25001;
+ if($AAmount[7]==1) announce "A sweet "+getitemname($AItems[7])+" left by "+$ANames$[7],0;
+ if($AAmount[7]>1) announce $AAmount[7]+" sweet "+getitemname($AItems[7])+" left by "+$ANames$[7],0;
+ end;
+OnTimer23000:
+ if($AItems[8]==0) setnpctimer 25001;
+ if($AAmount[8]==1) announce "A stunning "+getitemname($AItems[8])+" left by "+$ANames$[8],0;
+ if($AAmount[8]>1) announce $AAmount[8]+" stunning "+getitemname($AItems[8])+" left by "+$ANames$[8],0;
+ end;
+OnTimer25000:
+ if($AItems[9]==0) end;
+ if($AAmount[9]==1) announce "A fine "+getitemname($AItems[9])+" left by "+$ANames$[9],0;
+ if($AAmount[9]>1) announce $AAmount[9]+" fine "+getitemname($AItems[9])+" left by "+$ANames$[9],0;
+OnTimer27000:
+ if($AItems[0]!=0) announce "That is all the items we have this time round, so get bidding",0;
+ if($AItems[0]==0) announce "Seems there are no items this time round",0;
+ if($AItems[0]==0) set $Auction,0;
+ stopnpctimer;
+ setnpctimer 0;
+ end;
+
+// this is only be run if you own any items left over, not paid for, from the last auction, or the server failed, and items are left over
+
+L_RBackup:
+ mes "You seem to have items left over from the last auction, here you go, have it back";
+ next;
+ getitem $AItemsB[@num],$AAmountB[@num];
+L_BItemsLoop:
+ set $AItemsB[@num],$AItemsB[@num+1];
+ set $ANamesB$[@num],$ANamesB$[@num+1];
+ set $AAmountB[@num],$AAmountB[@num+1];
+ set @num,@num+1;
+ if(@num<10) goto L_BItemsLoop;
+ mes "[Auctioneer]";
+ mes "Have a nice day";
+ close;
+}
+
+// Only for display purposes, and telling people info about the auction
+// Can also be used for finding out what phase the auction is in
+
+prontera.gat,158,193,3 script Auction Helper 833,{
+ mes "[Auction Helper]";
+ set @num,0;
+ if($Auction==0 && $AItemsB[@num]!=0) goto L_ItemRecover;
+ if(($Auction==1 || $Auction ==2) && $AItems[@num]!=0) goto L_LLoop;
+ if($Auction==3 && $AItems[@num]!=0) goto L_Win;
+ mes "Ok Currently we have nothing in the auction.";
+ mes "Please return at the correct time.";
+ close;
+L_LLoop:
+ mes "Ok Currently we have :-";
+L_Loop:
+ mes $ANames$[@num]+" with "+$AAmount[@num]+" x "+getitemname($AItems[@num])+"('s)";
+ set @num,@num+1;
+ if($AItems[@num]==0) close;
+ if(@num<10) goto L_Loop;
+ close;
+L_ItemRecover:
+ mes "Seems there was a problem, and the auction ended prematurely.";
+ mes "This means we still have :-";
+L_BLoop:
+ if($paid[@num]==0) mes $ANamesB$[@num]+" with "+$AAmountB[@num]+" x "+getitemname($AItemsB[@num])+"('s)";
+ set @num,@num+1;
+ if($AItems[@num]==0) close;
+ if(@num<10) goto L_BLoop;
+ close;
+L_Win:
+ mes "The Auction is in the last stage, at this point you can :-";
+ mes " * buy your items";
+ mes " * Pick-up you money";
+ mes "(or if you were unlucky)";
+ mes " * Pick-up unsold items";
+ next;
+ mes "[Auction Helper]";
+ mes "Here is a list of Sellers and Winners";
+ set @num,0;
+L_Loop2:
+ mes $ANames$[@num]+" with "+$AAmount[@num]+" "+getitemname($AItems[@num])+"('s), won by "+$bidders$[@num]+" for "+$bid[@num]+"z";
+ set @num,@num+1;
+ if($AItems[@num]==0) close;
+ if(@num<10) goto L_Loop2;
+ close;
+
+}
diff --git a/npc/custom/Lance/FR_HallOfFame.c b/npc/custom/Lance/FR_HallOfFame.c
new file mode 100644
index 000000000..8799ce0a2
--- /dev/null
+++ b/npc/custom/Lance/FR_HallOfFame.c
@@ -0,0 +1,297 @@
+//===== eAthena Script ======================================
+//= Hall of Fame
+//===========================================================
+//===== By ==================================================
+//= [Lance]
+//= Idea from emilylee78
+//===== Version =============================================
+//= 2.3 FINAL
+//===== Compatible With =====================================
+//= eAthena SVN and Freya SVN
+//===== Description =========================================
+//= A Hall of Fame framework. Will update the list on every
+//= login and logout in a safe manner.
+//=
+//= Usage: callfunc "printHallOfFame", $;
+//= $ - Can be either 0 or 1.
+//= 0 - Display the current rankings.
+//= 1 - Display last week's rankings.
+//= Note : Remember to put a close; after calling it.
+//===== Comments ============================================
+//= 1.0 - Initial beta release [Lance]
+//= 1.1 - Fixed typos. Optimized a teeny bit. [Lance]
+//= 1.2 - Bug fixes. [Lance]
+//= 1.3 - Added a more realistic shuffling. [Lance]
+//= 1.4 - Added Weekly Top 10 list. [Lance]
+//= 1.5 - Friggin typos =< + Better shuffling [Lance]
+//= 1.6 - Bugfixes [Lance]
+//= 1.7 - More bugfixes. Type mismatch =P [Lance]
+//= 2.0 - Exclude GMs and add recovery plan.
+//= Suggested by EvilPoringOfDooom. [Lance]
+//= 2.1 - Typo.. again.. T_T [Lance]
+//= 2.2 - Minor updates and added Jury [Lance]
+//= 2.3 - Utilizing eAthena's new scripting engine [Lance]
+//===========================================================
+
+prontera.gat,0,0,0 script PCLoginEvent -1,{
+ callfunc "HallOfFameInit";
+ end;
+
+OnInit:
+ // Total Number of Players in Hall of Fame
+ // =======================================
+ set $HoF_totalCount, 10;
+ // Reshuffle (Will affect perfomance) ====
+ set $HoF_reshuffle, 1;
+ // Minimum GM Lvl to be excluded from HoF=
+ set $HoF_minGMLvl, 99;
+ // Recovery Plan to Remove GMs ============
+ set $@HoF_recovery, 0;
+ // =======================================
+
+ set $HoF_totalCount, $HoF_totalCount - 1;
+ set $@FebruaryD, 28;
+ if((gettime(7) % 4) == 0) {
+ set $@FebruaryD, 29;
+ }
+ setarray $@MonthDayThing[1],31, $@FebruaryD,31,30,31,30,31,31,30,31,30,31;
+ set $@HoF_TimeUpdateD, $HoF_LastUpdateD;
+ set $@HoF_TimeUpdateM, $HoF_LastUpdateM;
+ set $@HoF_TimeUpdateY, $HoF_LastUpdateY;
+ // Time to do some maths
+ set $@TimeNowD, gettime(5);
+ set $@TimeNowM, gettime(6);
+ set $@TimeNowY, gettime(7);
+ // Debug Message --
+ debugmes "[Hall of Fame] Last Update is Year " + $@HoF_TimeUpdateY + " Month " + $@HoF_TimeUpdateM + " Day " + $@HoF_TimeUpdateD;
+ debugmes "[Hall of Fame] Today is Year " + $@TimeNowY + " Month " + $@TimeNowM + " Day " + $@TimeNowD;
+ if(($@TimeNowD - $@HoF_TimeUpdateD) < 0){
+ set $@TimeNowD, $@TimeNowD + $@MonthDayThing[@TimeNowM];
+ set $@TimeNowM, $@TimeNowM - 1;
+ }
+ set $@GapD, $@TimeNowD - $@HoF_TimeUpdateD;
+ if(($@TimeNowM - $@HoF_TimeUpdateM) < 0){
+ set $@TimeNowM, $@TimeNowM + 12;
+ set $@TimeNowY, $@TimeNowY - 1;
+ }
+ set $@GapM, $@TimeNowM - $@HoF_TimeUpdateM;
+ set $@GapY, $@TimeNowY - $@HoF_TimeUpdateY;
+ debugmes "[Hall of Fame] Gap is " + $@GapY + " Years " + $@GapM + " Months " + $@GapD + " Days.";
+ if($@GapY > 0 || $@GapM > 0 || $@GapD >= 7) {
+ callfunc "hallOfFameReset"; // Phew..
+ }
+ end;
+
+OnClock0000:
+ set $HoF_UpdateCount, $HoF_UpdateCount + 1;
+ if($HoF_UpdateCount == 7) {
+ callfunc "hallOfFameReset";
+ }
+ end;
+}
+
+prontera.gat,0,0,0 script PCLogoutEvent -1,{
+ callfunc "HallOfFameInit";
+ end;
+}
+
+function script hallOfFameReset {
+ copyarray $HoF_LadderNameO$[0], $HoF_LadderName$[0], $HoF_totalCount;
+ copyarray $HoF_LadderBLevelO[0], $HoF_LadderBLevel[0], $HoF_totalCount;
+ copyarray $HoF_LadderJLevelO[0], $HoF_LadderJLevel[0], $HoF_totalCount;
+ copyarray $HoF_LadderZenyO[0], $HoF_LadderZeny[0], $HoF_totalCount;
+ set $@number, $HoF_totalCount + 1;
+ deletearray $HoF_LadderName$[0], $@number;
+ deletearray $HoF_LadderBLevel[0], $@number;
+ deletearray $HoF_LadderJLevel[0], $@number;
+ deletearray $HoF_LadderZeny[0], $@number;
+ set $HoF_LastUpdateD, gettime(5);
+ set $HoF_LastUpdateM, gettime(6);
+ set $HoF_LastUpdateY, gettime(7);
+ set $HoF_UpdateCount, 0;
+ debugmes "[Hall of Fame] System Reset Invoked!";
+ return;
+}
+
+function script HallOfFameInit {
+ if(getgmlevel() >= $HoF_minGMLvl && $@HoF_recovery != 1) {
+ set PCLogoutEvent, 0;
+ } else {
+ set PCLogoutEvent, 1;
+ callfunc "updateHallofFame", $HoF_reshuffle;
+ }
+ return;
+}
+
+function script updateHallofFame {
+ set @i, 0;
+ if(getarg(0) == 1){
+ goto L_ShuffleName;
+ }
+ if(BaseLevel >= $HoF_LadderBLevel[$HoF_totalCount]){
+ goto L_checkBase;
+ }
+ goto L_End;
+
+L_ShuffleName:
+ if($HoF_LadderName$[@i] == strcharinfo(0)) {
+ goto L_ShuffleScore;
+ }
+ if(@i == $HoF_totalCount) {
+ goto L_checkEntry;
+ }
+ set @i, @i + 1;
+ goto L_ShuffleName;
+
+L_ShuffleScore:
+ deletearray $HoF_LadderName$[@i],1;
+ deletearray $HoF_LadderZeny[@i],1;
+ deletearray $HoF_LadderJLevel[@i],1;
+ deletearray $HoF_LadderBLevel[@i],1;
+ goto L_ShuffleName;
+
+L_checkEntry:
+ if(getgmlevel() >= $HoF_minGMLvl){
+ end;
+ }
+ set @i, 0;
+ goto L_checkBase;
+
+L_checkBase:
+ if(BaseLevel >= $HoF_LadderBLevel[@i]) {
+ goto L_BaseOK;
+ } else {
+ goto L_Increment;
+ }
+
+L_BaseOK:
+ if(BaseLevel == $HoF_LadderBLevel[@i]){
+ goto L_BaseSameLoop;
+ } else {
+ goto L_NewEntry;
+ }
+
+L_BaseSameLoop:
+ if(JobLevel >= $HoF_LadderJLevel[@i]) {
+ goto L_JobOK;
+ } else if(Zeny >= $HoF_LadderZeny[@i]) {
+ goto L_ZenyOK;
+ }
+ goto L_Increment;
+
+L_JobOK:
+ if(JobLevel == $HoF_LadderJLevel[@i]) {
+ goto L_JobSame;
+ } else {
+ goto L_NewEntry;
+ }
+
+L_ZenyOK:
+ if(Zeny == $HoF_LadderZeny[@i]){
+ goto L_Increment;
+ } else {
+ goto L_NewEntry;
+ }
+
+L_JobSame:
+ if(Zeny >= $HoF_LadderZeny[@i]) {
+ goto L_ZenyOK;
+ } else {
+ goto L_Increment;
+ }
+
+L_NewEntry:
+ callfunc "hallOfFameNewEntry", @i, strcharinfo(0), BaseLevel, JobLevel, Zeny;
+ end;
+
+L_Increment:
+ if(@i == $HoF_totalCount) {
+ goto L_End;
+ } else {
+ set @i, @i + 1;
+ goto L_checkBase;
+ }
+
+L_End:
+ return;
+
+}
+
+
+function script hallOfFameNewEntry {
+ if(getarg(0) == 0 || getarg(1) != $HoF_LadderName$[getarg(0) - 1]) {
+ set @startPos, getarg(0);
+ copyarray @HoF_LadderNameB$[0], $HoF_LadderName$[@startPos], $HoF_totalCount;
+ copyarray @HoF_LadderBLevelB[0], $HoF_LadderBLevel[@startPos], $HoF_totalCount;
+ copyarray @HoF_LadderJLevelB[0], $HoF_LadderJLevel[@startPos], $HoF_totalCount;
+ copyarray @HoF_LadderZenyB[0], $HoF_LadderZeny[@startPos], $HoF_totalCount;
+ set $HoF_LadderName$[@startPos], getarg(1);
+ set $HoF_LadderBLevel[@startPos], getarg(2);
+ set $HoF_LadderJLevel[@startPos], getarg(3);
+ set $HoF_LadderZeny[@startPos], getarg(4);
+ set @startPos, @startPos + 1;
+ set @limitPos, $HoF_totalCount - @startPos;
+ copyarray $HoF_LadderName$[@startPos], @HoF_LadderNameB$[0], @limitPos;
+ copyarray $HoF_LadderBLevel[@startPos], @HoF_LadderBLevelB[0], @limitPos;
+ copyarray $HoF_LadderJLevel[@startPos], @HoF_LadderJLevelB[0], @limitPos;
+ copyarray $HoF_LadderZeny[@startPos], @HoF_LadderZenyB[0], @limitPos;
+ announce "[Hall of Fame] " + getarg(1) + " has made his/herself onto the No. " + @startPos + " ranking in Hall of Fame!", bc_all;
+ }
+ return;
+}
+
+function script printHallOfFame {
+ if(getarg(0) == 1) {
+ mes "[Hall of Fame] - Last Week's Rankings";
+ for(set @loop, 0; @loop < $HoF_totalCount; set @loop, @loop + 1){
+ mes "^ff0000";
+ mes "Position No. " + (@loop + 1) + ":^0000ff";
+ mes "+================================+";
+ mes "^000000Name :" + $HoF_LadderNameO$[@loop];
+ mes "BLvl :" + $HoF_LadderBLevelO[@loop];
+ mes "JLvl :" + $HoF_LadderJLevelO[@loop];
+ mes "Zeny :" + $HoF_LadderZenyO[@loop] + "^0000ff";
+ mes "+================================+^000000";
+ }
+ } else {
+ mes "[Hall of Fame] - Current Rankings";
+ for(set @loop, 0; @loop < $HoF_totalCount; set @loop, @loop + 1){
+ mes "^ff0000";
+ mes "Position No. " + (@loop + 1) + ":^0000ff";
+ mes "+================================+";
+ mes "^000000Name :" + $HoF_LadderName$[@loop];
+ mes "BLvl :" + $HoF_LadderBLevel[@loop];
+ mes "JLvl :" + $HoF_LadderJLevel[@loop];
+ mes "Zeny :" + $HoF_LadderZeny[@loop] + "^0000ff";
+ mes "+================================+^000000";
+ }
+ }
+ return;
+}
+
+prontera.gat,180,200,4 script Jury 109,{
+ mes "[Jury]";
+ mes "Good day. Would you like to view the Hall of Fame?";
+ next;
+ menu "Yes",L_OK,"No",L_QUIT;
+
+L_OK:
+ mes "[Jury]";
+ mes "Would you like to view the current or the past rankings?";
+
+L_MENU:
+ next;
+ menu "Current", L_CUR, "Past", -,"Nevermind",L_QUIT;
+ callfunc "printHallOfFame",1;
+ goto L_MENU;
+
+L_CUR:
+ callfunc "printHallOfFame",0;
+ goto L_MENU;
+
+L_QUIT:
+ mes "[Jury]";
+ mes "Have a nice day then.";
+ close;
+
+} \ No newline at end of file
diff --git a/npc/custom/Lance/FR_MailSystem.c b/npc/custom/Lance/FR_MailSystem.c
new file mode 100644
index 000000000..8111f3dea
--- /dev/null
+++ b/npc/custom/Lance/FR_MailSystem.c
@@ -0,0 +1,118 @@
+//(=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=)
+//( (c)2005 RagMods Modification Team presents )
+//( ______ __ __ )
+//( /\ _ \/\ \__/\ \ v 1.00.00 )
+//( __\ \ \_\ \ \ ,_\ \ \___ __ ___ __ )
+//( /'__`\ \ __ \ \ \/\ \ _ `\ /'__`\/' _ `\ /'__`\ )
+//( /\ __/\ \ \/\ \ \ \_\ \ \ \ \/\ __//\ \/\ \/\ \_\.\_ )
+//( \ \____\\ \_\ \_\ \__\\ \_\ \_\ \____\ \_\ \_\ \__/.\_\ )
+//( \/____/ \/_/\/_/\/__/ \/_/\/_/\/____/\/_/\/_/\/__/\/_/ )
+//( )
+//( -- [s] [c] [r] [i] [p] [t] [s] -- )
+//( _ _ _ _ _ _ _ _ _ _ _ _ _ )
+//( / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ )
+//( ( e | n | g | l | i | s | h ) ( A | t | h | e | n | a ) )
+//( \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ )
+//( )
+//( Advanced Fusion Maps (c) 2003-2005 The Fusion Project )
+//(=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=)
+//===== eAthena Script ======================================
+//= Mail System (using built in mail function)
+//===========================================================
+//===== By ==================================================
+//= [Lance]
+//===== Version =============================================
+//= 1.0
+//===== Compatible With =====================================
+//= Any flavours of Athena SQL
+//===== Description =========================================
+//= Allows players to send and receive mails without GM lvl.
+//===== Comments ============================================
+//= 1.0 - Initial release [Lance]
+//===========================================================
+prontera.gat,143,171,3 script Messenger 738,1,1,{
+ mes "[Messenger Deviruchi]";
+ mes "Hiya! I'm the fastest messenger in Rune Midgard!";
+ next;
+ mes "[Messenger Deviruchi]";
+ mes "I can send your friends messages even if he or she is offline!";
+ next;
+ mes "[Messenger Deviruchi]";
+ mes "Wanna try?";
+ menu "Yes", MENUSYS, "No", -;
+ close;
+
+MENUSYS:
+ next;
+ mes "[Messenger Deviruchi]";
+ mes "What can I do for ya?";
+ emotion e_what;
+ menu "Check Mail",L_CHECK,"Send Mail",L_SEND, "Leave", -;
+ next;
+ mes "[Messenger Deviruchi]";
+ mes "Do come again!";
+ emotion e_no1;
+ close;
+
+L_CHECK:
+ atcommand strcharinfo(0) + ":@listnewmail";
+ menu "Read Mail", L_READ, "Check All Mails",CHKALLMAIL,"Send Mail",L_SEND, "Delete Mail", DELMAIL, "Back", MENUSYS;
+ close;
+
+CHKALLMAIL:
+ atcommand strcharinfo(0) + ":@listmail";
+ menu "Read Mail", L_READ, "Delete Mail", DELMAIL, "Back", MENUSYS;
+ close;
+
+L_READ:
+ next;
+ mes "[Messenger Deviruchi]";
+ mes "Please tell me the message number you want to read.";
+ input @msgnum;
+ next;
+ mes "[Messenger Deviruchi]";
+ mes "Here it is!";
+ emotion e_no1;
+ atcommand strcharinfo(0) + ":@readmail " + @msgnum;
+ menu "Reply Mail", L_SEND, "Back", MENUSYS;
+ close;
+
+L_SEND:
+ next;
+ mes "[Messenger Deviruchi]";
+ mes "Who do you want to send this message to?";
+ input @rcpt$;
+ next;
+ mes "[Messenger Deviruchi]";
+ mes "What message do you want to send to him?";
+ input @body$;
+ next;
+ atcommand strcharinfo(0) + ":@sendmail " + @rcpt$ + " " + @body$;
+ mes "[Messenger Deviruchi]";
+ mes "All done!";
+ emotion e_no1;
+ menu "Send another mail", L_SEND, "Back", MENUSYS;
+ close;
+
+DELMAIL:
+ next;
+ mes "[Messenger Deviruchi]";
+ mes "Which message number do you want me to delete?";
+ input @msgnum;
+ next;
+ mes "[Messenger Deviruchi]";
+ mes "Are you sure you want to delete mail no. " + @msgnum + "?";
+ menu "Yes",-,"No",DELMAIL, "Back", MENUSYS;
+ atcommand strcharinfo(0) + ":@deletemail " + @msgnum;
+ mes "[Messenger Deviruchi]";
+ mes "All done!";
+
+ emotion e_no1;
+ menu "Delete another mail", DELMAIL, "Back", MENUSYS;
+ close;
+
+OnTouch:
+ npctalk "Relax.. I'm no bad guy..";
+ emotion e_heh;
+ end;
+} \ No newline at end of file
diff --git a/npc/custom/Lance/FR_WeatherController.c b/npc/custom/Lance/FR_WeatherController.c
new file mode 100644
index 000000000..dcc3dd31a
--- /dev/null
+++ b/npc/custom/Lance/FR_WeatherController.c
@@ -0,0 +1,403 @@
+- script dayNight -1,{
+ end;
+
+OnInit:
+ if(gettime(3) > 7 && gettime(3) < 19) {
+ goto L_Day;
+ } else {
+ goto L_Night;
+ }
+
+L_Day:
+ day;
+ callfunc "RcloudFlag";
+ end;
+
+L_Night:
+ night;
+ callfunc "cloudFlag";
+ end;
+
+OnClock1900:
+ goto L_Night;
+
+OnClock0700:
+ goto L_Day;
+}
+
+function script cloudFlag {
+setmapflag "alb2trea.gat",mf_clouds;
+setmapflag "alberta.gat",mf_clouds;
+setmapflag "aldebaran.gat",mf_clouds;
+setmapflag "gef_fild00.gat",mf_clouds;
+setmapflag "gef_fild01.gat",mf_clouds;
+setmapflag "gef_fild02.gat",mf_clouds;
+setmapflag "gef_fild03.gat",mf_clouds;
+setmapflag "gef_fild04.gat",mf_clouds;
+setmapflag "gef_fild05.gat",mf_clouds;
+setmapflag "gef_fild06.gat",mf_clouds;
+setmapflag "gef_fild07.gat",mf_clouds;
+setmapflag "gef_fild08.gat",mf_clouds;
+setmapflag "gef_fild09.gat",mf_clouds;
+setmapflag "gef_fild10.gat",mf_clouds;
+setmapflag "gef_fild11.gat",mf_clouds;
+setmapflag "geffen.gat",mf_clouds;
+setmapflag "gl_church.gat",mf_clouds;
+setmapflag "gl_chyard.gat",mf_clouds;
+setmapflag "gl_knt01.gat",mf_clouds;
+setmapflag "gl_knt02.gat",mf_clouds;
+setmapflag "gl_step.gat",mf_clouds;
+setmapflag "glast_01.gat",mf_clouds;
+setmapflag "hunter_1-1.gat",mf_clouds;
+setmapflag "hunter_2-1.gat",mf_clouds;
+setmapflag "hunter_3-1.gat",mf_clouds;
+setmapflag "izlude.gat",mf_clouds;
+setmapflag "job_thief1.gat",mf_clouds;
+setmapflag "knight_1-1.gat",mf_clouds;
+setmapflag "knight_2-1.gat",mf_clouds;
+setmapflag "knight_3-1.gat",mf_clouds;
+setmapflag "mjolnir_01.gat",mf_clouds;
+setmapflag "mjolnir_02.gat",mf_clouds;
+setmapflag "mjolnir_03.gat",mf_clouds;
+setmapflag "mjolnir_04.gat",mf_clouds;
+setmapflag "mjolnir_05.gat",mf_clouds;
+setmapflag "mjolnir_06.gat",mf_clouds;
+setmapflag "mjolnir_07.gat",mf_clouds;
+setmapflag "mjolnir_08.gat",mf_clouds;
+setmapflag "mjolnir_09.gat",mf_clouds;
+setmapflag "mjolnir_10.gat",mf_clouds;
+setmapflag "mjolnir_11.gat",mf_clouds;
+setmapflag "mjolnir_12.gat",mf_clouds;
+setmapflag "moc_fild01.gat",mf_clouds;
+setmapflag "moc_fild02.gat",mf_clouds;
+setmapflag "moc_fild03.gat",mf_clouds;
+setmapflag "moc_fild04.gat",mf_clouds;
+setmapflag "moc_fild05.gat",mf_clouds;
+setmapflag "moc_fild06.gat",mf_clouds;
+setmapflag "moc_fild07.gat",mf_clouds;
+setmapflag "moc_fild08.gat",mf_clouds;
+setmapflag "moc_fild09.gat",mf_clouds;
+setmapflag "moc_fild10.gat",mf_clouds;
+setmapflag "moc_fild11.gat",mf_clouds;
+setmapflag "moc_fild12.gat",mf_clouds;
+setmapflag "moc_fild13.gat",mf_clouds;
+setmapflag "moc_fild14.gat",mf_clouds;
+setmapflag "moc_fild15.gat",mf_clouds;
+setmapflag "moc_fild16.gat",mf_clouds;
+setmapflag "moc_fild17.gat",mf_clouds;
+setmapflag "moc_fild18.gat",mf_clouds;
+setmapflag "moc_fild19.gat",mf_clouds;
+setmapflag "moc_pryd01.gat",mf_clouds;
+setmapflag "moc_pryd02.gat",mf_clouds;
+setmapflag "moc_pryd03.gat",mf_clouds;
+setmapflag "moc_pryd04.gat",mf_clouds;
+setmapflag "moc_pryd05.gat",mf_clouds;
+setmapflag "moc_pryd06.gat",mf_clouds;
+setmapflag "moc_prydb1.gat",mf_clouds;
+setmapflag "moc_ruins.gat",mf_clouds;
+setmapflag "morocc.gat",mf_clouds;
+setmapflag "new_1-1.gat",mf_clouds;
+setmapflag "new_1-2.gat",mf_clouds;
+setmapflag "new_1-3.gat",mf_clouds;
+setmapflag "new_1-4.gat",mf_clouds;
+setmapflag "pay_arche.gat",mf_clouds;
+setmapflag "pay_fild01.gat",mf_clouds;
+setmapflag "pay_fild02.gat",mf_clouds;
+setmapflag "pay_fild03.gat",mf_clouds;
+setmapflag "pay_fild04.gat",mf_clouds;
+setmapflag "pay_fild05.gat",mf_clouds;
+setmapflag "pay_fild06.gat",mf_clouds;
+setmapflag "pay_fild07.gat",mf_clouds;
+setmapflag "pay_fild08.gat",mf_clouds;
+setmapflag "pay_fild09.gat",mf_clouds;
+setmapflag "pay_fild10.gat",mf_clouds;
+setmapflag "pay_fild11.gat",mf_clouds;
+setmapflag "priest_1-1.gat",mf_clouds;
+setmapflag "priest_2-1.gat",mf_clouds;
+setmapflag "priest_3-1.gat",mf_clouds;
+setmapflag "prontera.gat",mf_clouds;
+setmapflag "prt_are01.gat",mf_clouds;
+setmapflag "prt_fild00.gat",mf_clouds;
+setmapflag "prt_fild01.gat",mf_clouds;
+setmapflag "prt_fild02.gat",mf_clouds;
+setmapflag "prt_fild03.gat",mf_clouds;
+setmapflag "prt_fild04.gat",mf_clouds;
+setmapflag "prt_fild05.gat",mf_clouds;
+setmapflag "prt_fild06.gat",mf_clouds;
+setmapflag "prt_fild07.gat",mf_clouds;
+setmapflag "prt_fild08.gat",mf_clouds;
+setmapflag "prt_fild09.gat",mf_clouds;
+setmapflag "prt_fild10.gat",mf_clouds;
+setmapflag "prt_fild11.gat",mf_clouds;
+setmapflag "prt_maze01.gat",mf_clouds;
+setmapflag "prt_maze02.gat",mf_clouds;
+setmapflag "prt_maze03.gat",mf_clouds;
+setmapflag "prt_monk.gat",mf_clouds;
+setmapflag "cmd_fild01.gat",mf_clouds;
+setmapflag "cmd_fild02.gat",mf_clouds;
+setmapflag "cmd_fild03.gat",mf_clouds;
+setmapflag "cmd_fild04.gat",mf_clouds;
+setmapflag "cmd_fild05.gat",mf_clouds;
+setmapflag "cmd_fild06.gat",mf_clouds;
+setmapflag "cmd_fild07.gat",mf_clouds;
+setmapflag "cmd_fild08.gat",mf_clouds;
+setmapflag "cmd_fild09.gat",mf_clouds;
+setmapflag "cmd_in01.gat",mf_clouds;
+setmapflag "cmd_in02.gat",mf_clouds;
+setmapflag "gef_fild12.gat",mf_clouds;
+setmapflag "gef_fild13.gat",mf_clouds;
+setmapflag "gef_fild14.gat",mf_clouds;
+setmapflag "alde_gld.gat",mf_clouds;
+setmapflag "pay_gld.gat",mf_clouds;
+setmapflag "prt_gld.gat",mf_clouds;
+setmapflag "alde_alche.gat",mf_clouds;
+setmapflag "yuno.gat",mf_clouds;
+setmapflag "yuno_fild01.gat",mf_clouds;
+setmapflag "yuno_fild02.gat",mf_clouds;
+setmapflag "yuno_fild03.gat",mf_clouds;
+setmapflag "yuno_fild04.gat",mf_clouds;
+setmapflag "ama_fild01.gat",mf_clouds;
+setmapflag "ama_test.gat",mf_clouds;
+setmapflag "amatsu.gat",mf_clouds;
+setmapflag "gon_fild01.gat",mf_clouds;
+setmapflag "gon_test.gat",mf_clouds;
+setmapflag "gonryun.gat",mf_clouds;
+setmapflag "umbala.gat",mf_clouds;
+setmapflag "um_fild01.gat",mf_clouds;
+setmapflag "um_fild02.gat",mf_clouds;
+setmapflag "um_fild03.gat",mf_clouds;
+setmapflag "um_fild04.gat",mf_clouds;
+setmapflag "niflheim.gat",mf_clouds;
+setmapflag "nif_fild01.gat",mf_clouds;
+setmapflag "nif_fild02.gat",mf_clouds;
+setmapflag "nif_in.gat",mf_clouds;
+setmapflag "yggdrasil01.gat",mf_clouds;
+setmapflag "valkyrie.gat",mf_clouds;
+setmapflag "lou_fild01.gat",mf_clouds;
+setmapflag "louyang.gat",mf_clouds;
+setmapflag "nguild_gef.gat",mf_clouds;
+setmapflag "nguild_prt.gat",mf_clouds;
+setmapflag "nguild_pay.gat",mf_clouds;
+setmapflag "nguild_alde.gat",mf_clouds;
+setmapflag "jawaii.gat",mf_clouds;
+setmapflag "jawaii_in.gat",mf_clouds;
+setmapflag "gefenia01.gat",mf_clouds;
+setmapflag "gefenia02.gat",mf_clouds;
+setmapflag "gefenia03.gat",mf_clouds;
+setmapflag "gefenia04.gat",mf_clouds;
+setmapflag "payon.gat",mf_clouds;
+setmapflag "ayothaya.gat",mf_clouds;
+setmapflag "ayo_in01.gat",mf_clouds;
+setmapflag "ayo_in02.gat",mf_clouds;
+setmapflag "ayo_fild01.gat",mf_clouds;
+setmapflag "ayo_fild02.gat",mf_clouds;
+setmapflag "que_god01.gat",mf_clouds;
+setmapflag "que_god02.gat",mf_clouds;
+setmapflag "yuno_fild05.gat",mf_clouds;
+setmapflag "yuno_fild07.gat",mf_clouds;
+setmapflag "yuno_fild08.gat",mf_clouds;
+setmapflag "yuno_fild09.gat",mf_clouds;
+setmapflag "yuno_fild11.gat",mf_clouds;
+setmapflag "yuno_fild12.gat",mf_clouds;
+setmapflag "alde_tt02.gat",mf_clouds;
+setmapflag "einbech.gat",mf_clouds;
+setmapflag "einbroch.gat",mf_clouds;
+setmapflag "ein_fild06.gat",mf_clouds;
+setmapflag "ein_fild07.gat",mf_clouds;
+setmapflag "ein_fild08.gat",mf_clouds;
+setmapflag "ein_fild09.gat",mf_clouds;
+setmapflag "ein_fild10.gat",mf_clouds;
+setmapflag "que_sign01.gat",mf_clouds;
+setmapflag "ein_fild03.gat",mf_clouds;
+setmapflag "ein_fild04.gat",mf_clouds;
+setmapflag "lhz_fild02.gat",mf_clouds;
+setmapflag "lhz_fild03.gat",mf_clouds;
+return;
+}
+
+function script RcloudFlag {
+removemapflag "alb2trea.gat",mf_clouds;
+removemapflag "alberta.gat",mf_clouds;
+removemapflag "aldebaran.gat",mf_clouds;
+removemapflag "gef_fild00.gat",mf_clouds;
+removemapflag "gef_fild01.gat",mf_clouds;
+removemapflag "gef_fild02.gat",mf_clouds;
+removemapflag "gef_fild03.gat",mf_clouds;
+removemapflag "gef_fild04.gat",mf_clouds;
+removemapflag "gef_fild05.gat",mf_clouds;
+removemapflag "gef_fild06.gat",mf_clouds;
+removemapflag "gef_fild07.gat",mf_clouds;
+removemapflag "gef_fild08.gat",mf_clouds;
+removemapflag "gef_fild09.gat",mf_clouds;
+removemapflag "gef_fild10.gat",mf_clouds;
+removemapflag "gef_fild11.gat",mf_clouds;
+removemapflag "geffen.gat",mf_clouds;
+removemapflag "gl_church.gat",mf_clouds;
+removemapflag "gl_chyard.gat",mf_clouds;
+removemapflag "gl_knt01.gat",mf_clouds;
+removemapflag "gl_knt02.gat",mf_clouds;
+removemapflag "gl_step.gat",mf_clouds;
+removemapflag "glast_01.gat",mf_clouds;
+removemapflag "hunter_1-1.gat",mf_clouds;
+removemapflag "hunter_2-1.gat",mf_clouds;
+removemapflag "hunter_3-1.gat",mf_clouds;
+removemapflag "izlude.gat",mf_clouds;
+removemapflag "mjolnir_01.gat",mf_clouds;
+removemapflag "mjolnir_02.gat",mf_clouds;
+removemapflag "mjolnir_03.gat",mf_clouds;
+removemapflag "mjolnir_04.gat",mf_clouds;
+removemapflag "mjolnir_05.gat",mf_clouds;
+removemapflag "mjolnir_06.gat",mf_clouds;
+removemapflag "mjolnir_07.gat",mf_clouds;
+removemapflag "mjolnir_08.gat",mf_clouds;
+removemapflag "mjolnir_09.gat",mf_clouds;
+removemapflag "mjolnir_10.gat",mf_clouds;
+removemapflag "mjolnir_11.gat",mf_clouds;
+removemapflag "mjolnir_12.gat",mf_clouds;
+removemapflag "moc_fild01.gat",mf_clouds;
+removemapflag "moc_fild02.gat",mf_clouds;
+removemapflag "moc_fild03.gat",mf_clouds;
+removemapflag "moc_fild04.gat",mf_clouds;
+removemapflag "moc_fild05.gat",mf_clouds;
+removemapflag "moc_fild06.gat",mf_clouds;
+removemapflag "moc_fild07.gat",mf_clouds;
+removemapflag "moc_fild08.gat",mf_clouds;
+removemapflag "moc_fild09.gat",mf_clouds;
+removemapflag "moc_fild10.gat",mf_clouds;
+removemapflag "moc_fild11.gat",mf_clouds;
+removemapflag "moc_fild12.gat",mf_clouds;
+removemapflag "moc_fild13.gat",mf_clouds;
+removemapflag "moc_fild14.gat",mf_clouds;
+removemapflag "moc_fild15.gat",mf_clouds;
+removemapflag "moc_fild16.gat",mf_clouds;
+removemapflag "moc_fild17.gat",mf_clouds;
+removemapflag "moc_fild18.gat",mf_clouds;
+removemapflag "moc_fild19.gat",mf_clouds;
+removemapflag "moc_pryd01.gat",mf_clouds;
+removemapflag "moc_pryd02.gat",mf_clouds;
+removemapflag "moc_pryd03.gat",mf_clouds;
+removemapflag "moc_pryd04.gat",mf_clouds;
+removemapflag "moc_pryd05.gat",mf_clouds;
+removemapflag "moc_pryd06.gat",mf_clouds;
+removemapflag "moc_prydb1.gat",mf_clouds;
+removemapflag "moc_ruins.gat",mf_clouds;
+removemapflag "morocc.gat",mf_clouds;
+removemapflag "new_1-1.gat",mf_clouds;
+removemapflag "new_1-2.gat",mf_clouds;
+removemapflag "new_1-3.gat",mf_clouds;
+removemapflag "new_1-4.gat",mf_clouds;
+removemapflag "pay_arche.gat",mf_clouds;
+removemapflag "pay_fild01.gat",mf_clouds;
+removemapflag "pay_fild02.gat",mf_clouds;
+removemapflag "pay_fild03.gat",mf_clouds;
+removemapflag "pay_fild04.gat",mf_clouds;
+removemapflag "pay_fild05.gat",mf_clouds;
+removemapflag "pay_fild06.gat",mf_clouds;
+removemapflag "pay_fild07.gat",mf_clouds;
+removemapflag "pay_fild08.gat",mf_clouds;
+removemapflag "pay_fild09.gat",mf_clouds;
+removemapflag "pay_fild10.gat",mf_clouds;
+removemapflag "pay_fild11.gat",mf_clouds;
+removemapflag "priest_1-1.gat",mf_clouds;
+removemapflag "priest_2-1.gat",mf_clouds;
+removemapflag "priest_3-1.gat",mf_clouds;
+removemapflag "prontera.gat",mf_clouds;
+removemapflag "prt_are01.gat",mf_clouds;
+removemapflag "prt_fild00.gat",mf_clouds;
+removemapflag "prt_fild01.gat",mf_clouds;
+removemapflag "prt_fild02.gat",mf_clouds;
+removemapflag "prt_fild03.gat",mf_clouds;
+removemapflag "prt_fild04.gat",mf_clouds;
+removemapflag "prt_fild05.gat",mf_clouds;
+removemapflag "prt_fild06.gat",mf_clouds;
+removemapflag "prt_fild07.gat",mf_clouds;
+removemapflag "prt_fild08.gat",mf_clouds;
+removemapflag "prt_fild09.gat",mf_clouds;
+removemapflag "prt_fild10.gat",mf_clouds;
+removemapflag "prt_fild11.gat",mf_clouds;
+removemapflag "prt_maze01.gat",mf_clouds;
+removemapflag "prt_maze02.gat",mf_clouds;
+removemapflag "prt_maze03.gat",mf_clouds;
+removemapflag "prt_monk.gat",mf_clouds;
+removemapflag "cmd_fild01.gat",mf_clouds;
+removemapflag "cmd_fild02.gat",mf_clouds;
+removemapflag "cmd_fild03.gat",mf_clouds;
+removemapflag "cmd_fild04.gat",mf_clouds;
+removemapflag "cmd_fild05.gat",mf_clouds;
+removemapflag "cmd_fild06.gat",mf_clouds;
+removemapflag "cmd_fild07.gat",mf_clouds;
+removemapflag "cmd_fild08.gat",mf_clouds;
+removemapflag "cmd_fild09.gat",mf_clouds;
+removemapflag "gef_fild12.gat",mf_clouds;
+removemapflag "gef_fild13.gat",mf_clouds;
+removemapflag "gef_fild14.gat",mf_clouds;
+removemapflag "alde_gld.gat",mf_clouds;
+removemapflag "pay_gld.gat",mf_clouds;
+removemapflag "prt_gld.gat",mf_clouds;
+removemapflag "alde_alche.gat",mf_clouds;
+removemapflag "yuno.gat",mf_clouds;
+removemapflag "yuno_fild01.gat",mf_clouds;
+removemapflag "yuno_fild02.gat",mf_clouds;
+removemapflag "yuno_fild03.gat",mf_clouds;
+removemapflag "yuno_fild04.gat",mf_clouds;
+removemapflag "ama_fild01.gat",mf_clouds;
+removemapflag "ama_test.gat",mf_clouds;
+removemapflag "amatsu.gat",mf_clouds;
+removemapflag "gon_fild01.gat",mf_clouds;
+removemapflag "gon_in.gat",mf_clouds;
+removemapflag "gon_test.gat",mf_clouds;
+removemapflag "gonryun.gat",mf_clouds;
+removemapflag "umbala.gat",mf_clouds;
+removemapflag "um_fild01.gat",mf_clouds;
+removemapflag "um_fild02.gat",mf_clouds;
+removemapflag "um_fild03.gat",mf_clouds;
+removemapflag "um_fild04.gat",mf_clouds;
+removemapflag "niflheim.gat",mf_clouds;
+removemapflag "nif_fild01.gat",mf_clouds;
+removemapflag "nif_fild02.gat",mf_clouds;
+removemapflag "nif_in.gat",mf_clouds;
+removemapflag "yggdrasil01.gat",mf_clouds;
+removemapflag "valkyrie.gat",mf_clouds;
+removemapflag "lou_fild01.gat",mf_clouds;
+removemapflag "louyang.gat",mf_clouds;
+removemapflag "nguild_gef.gat",mf_clouds;
+removemapflag "nguild_prt.gat",mf_clouds;
+removemapflag "nguild_pay.gat",mf_clouds;
+removemapflag "nguild_alde.gat",mf_clouds;
+removemapflag "jawaii.gat",mf_clouds;
+removemapflag "jawaii_in.gat",mf_clouds;
+removemapflag "gefenia01.gat",mf_clouds;
+removemapflag "gefenia02.gat",mf_clouds;
+removemapflag "gefenia03.gat",mf_clouds;
+removemapflag "gefenia04.gat",mf_clouds;
+removemapflag "payon.gat",mf_clouds;
+removemapflag "ayothaya.gat",mf_clouds;
+removemapflag "ayo_in01.gat",mf_clouds;
+removemapflag "ayo_in02.gat",mf_clouds;
+removemapflag "ayo_fild01.gat",mf_clouds;
+removemapflag "ayo_fild02.gat",mf_clouds;
+removemapflag "que_god01.gat",mf_clouds;
+removemapflag "que_god02.gat",mf_clouds;
+removemapflag "yuno_fild05.gat",mf_clouds;
+removemapflag "yuno_fild07.gat",mf_clouds;
+removemapflag "yuno_fild08.gat",mf_clouds;
+removemapflag "yuno_fild09.gat",mf_clouds;
+removemapflag "yuno_fild11.gat",mf_clouds;
+removemapflag "yuno_fild12.gat",mf_clouds;
+removemapflag "alde_tt02.gat",mf_clouds;
+removemapflag "einbech.gat",mf_clouds;
+removemapflag "einbroch.gat",mf_clouds;
+removemapflag "ein_fild06.gat",mf_clouds;
+removemapflag "ein_fild07.gat",mf_clouds;
+removemapflag "ein_fild08.gat",mf_clouds;
+removemapflag "ein_fild09.gat",mf_clouds;
+removemapflag "ein_fild10.gat",mf_clouds;
+removemapflag "que_sign01.gat",mf_clouds;
+removemapflag "ein_fild03.gat",mf_clouds;
+removemapflag "ein_fild04.gat",mf_clouds;
+removemapflag "lhz_fild02.gat",mf_clouds;
+removemapflag "lhz_fild03.gat",mf_clouds;
+return;
+}
+
+
diff --git a/npc/custom/MVP_arena/amvp_func.txt b/npc/custom/MVP_arena/amvp_func.txt
new file mode 100644
index 000000000..c8ee2fc65
--- /dev/null
+++ b/npc/custom/MVP_arena/amvp_func.txt
@@ -0,0 +1,101 @@
+// ---- MVP ARENA!!!!!! By Darkchild with 16 diff MVP's inside
+// -- Optimised The MVP arena!!!! By massdriller
+// - NPC in prontera
+
+// --- Optimising Functions
+
+function script Ramvp_1 {
+
+ mes "[ ^0065DFAlpha MVP^000000 ]";
+ mes "Here you go!";
+ return;
+}
+
+function script Ramvp_2 {
+
+ mes "[ ^0065DFBeta MVP^000000 ]";
+ mes "Here you go!";
+ return;
+}
+
+function script Ramvp_3 {
+
+ mes "[ ^0065DFTheta MVP^000000 ]";
+ mes "Here you go!";
+ return;
+
+}
+
+
+function script Ramvp_4 {
+
+ mes "[ ^0065DFEpsilon MVP^000000 ]";
+ mes "Here you go!";
+ return;
+
+}
+
+function script Ramvp_M {
+
+ mes "How do you need help?.";
+ menu "Harder Monsters",L_Next,"Heal Please",L_Heal,"Leave",L_Leave;
+
+ L_Next:
+ return;
+
+ L_Heal:
+ percentheal 100,100;
+ close;
+
+ L_Leave:
+ warp "prontera.gat",156,179;
+ close;
+
+}
+
+function script Ramvp_M2 {
+
+ mes "How do you need help?.";
+ menu "Heal Please",L_Heal,"Leave",L_Leave;
+
+ L_Heal:
+ percentheal 100,100;
+ close;
+
+ L_Leave:
+ warp "prontera.gat",156,179;
+ close;
+
+}
+
+function script Ramvp_Main {
+
+menu "Intro",L_Intro,"I want to go back",L_Leave,"Heal me please",L_Heal,"Cancel",L_Cancel;
+
+L_Intro:
+mes "[ ^0065DFMVP Arena Guide^000000 ]";
+mes "Welcome and behold this sacred place, Here you will find out if you truly have what it takes to call yourself a warrior, and a Team mate.";
+next;
+mes "Here in [ ^0065DFSvRO^000000 ] we like to be a family, and as a family you learn you must help and assist one-another, so if you want to survive you should learn to Co-operate.";
+next;
+mes "There are Plenty of rooms with MVP's in them so don't all fight over the one room just cause you think it's the only one, just move to the next one.";
+next;
+mes "If you can't get along, and there is too much complaining about people stealing MVP kills and items... then this place will be removed.";
+next;
+mes "Now the npc's are in groups of monsters, there are 4 different mvps per each npc, i wont tell you which it's a surprise hehe.";
+next;
+mes "Good luck, Live long and Prosper!.";
+close;
+
+L_Leave:
+warp "prontera",156,179;
+close;
+
+L_Heal:
+Heal 32500,32500;
+close;
+
+L_Cancel:
+close;
+
+} \ No newline at end of file
diff --git a/npc/custom/MVP_arena/arena_mvp.txt b/npc/custom/MVP_arena/arena_mvp.txt
new file mode 100644
index 000000000..147a22b51
--- /dev/null
+++ b/npc/custom/MVP_arena/arena_mvp.txt
@@ -0,0 +1,791 @@
+// ---- MVP ARENA!!!!!! By Darkchild with 16 diff MVP's inside
+// -- Optimised The MVP arena!!!! By massdriller
+// - NPC in prontera
+
+prontera.gat,154,197,3 script MVP Warper 768,{
+mes "[ ^0065DFMVP Warper^000000 ]";
+mes "Would you like to go to the MVP Arena ?...";
+menu "Yes!",L_MVP,"No thanks.",L_No;
+
+L_MVP:
+warp "quiz_00",50,24;
+close;
+L_No:
+close;
+}
+// --- Inside the Arena
+// --- NPC's That explains thigns
+quiz_00.gat,49,31,4 script MVP Arena Guide 778,{
+ callfunc "Ramvp_Main";
+
+}
+
+// --- The first Alpha-MVP warper
+quiz_00.gat,56,31,4 script Alpha MVP 770,{
+mes "[ ^0065DFAlpha MVP^000000 ]";
+mes "I am the first Keeper, are you ready?.";
+menu "Yes!",L_Yes,"Urrr No.",L_No;
+
+L_Yes:
+mes "[ ^0065DFAlpha MVP^000000 ]";
+mes "Which Arena you want to go to??";
+ menu "Arena 1 [" + getmapusers("pvp_n_1-2.gat") + " / 50]",Larena1,
+ "Arena 2 [" + getmapusers("pvp_n_2-2.gat") + " / 50]",Larena2,
+ "Arena 3 [" + getmapusers("pvp_n_3-2.gat") + " / 15]",Larena3,
+ "Arena 4 [" + getmapusers("pvp_n_4-2.gat") + " / 15]",Larena4,
+ "Arena 5 [" + getmapusers("pvp_n_5-2.gat") + " / 15]",Larena5,
+ "Arena 6 [" + getmapusers("pvp_n_2-2.gat") + " / 15]",Larena6,
+ "Arena 7 [" + getmapusers("pvp_n_3-2.gat") + " / 15]",Larena7,
+ "Arena 8 [" + getmapusers("pvp_n_4-2.gat") + " / 15]",Larena8,
+ "Quit",Lcancel;
+
+L_No:
+close;
+
+Larena1:
+if (getmapusers("pvp_n_1-2.gat") > 49) goto Lsorry;
+callfunc "Ramvp_1";
+warp "pvp_n_1-2",102,102;
+close;
+
+Larena2:
+if (getmapusers("pvp_n_2-2.gat") > 49) goto Lsorry;
+callfunc "Ramvp_1";
+warp "pvp_n_2-2",102,102;
+close;
+
+Larena3:
+if (getmapusers("pvp_n_3-2.gat") > 14) goto Lsorry;
+callfunc "Ramvp_1";
+warp "pvp_n_3-2",102,102;
+close;
+
+Larena4:
+if (getmapusers("pvp_n_4-2.gat") > 14) goto Lsorry;
+callfunc "Ramvp_1";
+warp "pvp_n_4-2",102,102;
+close;
+
+Larena5:
+if (getmapusers("pvp_n_5-2.gat") > 14) goto Lsorry;
+callfunc "Ramvp_1";
+warp "pvp_n_5-2",102,102;
+close;
+
+Larena6:
+if (getmapusers("pvp_n_6-2.gat") > 14) goto Lsorry;
+callfunc "Ramvp_1";
+warp "pvp_n_6-2",102,102;
+close;
+
+Larena7:
+if (getmapusers("pvp_n_7-2.gat") > 14) goto Lsorry;
+callfunc "Ramvp_1";
+warp "pvp_n_7-2",102,102;
+close;
+
+Larena8:
+if (getmapusers("pvp_n_8-2.gat") > 14) goto Lsorry;
+callfunc "Ramvp_1";
+warp "pvp_n_8-2",102,102;
+close;
+
+Lsorry:
+mes "[ ^0065DFAlpha MVP^000000 ]";
+mes "Sorry but this Arena is already full, maybe you can try another one!";
+close;
+}
+
+// --- The first Beta-MVP warper
+quiz_00.gat,58,31,4 script Beta MVP 773,{
+mes "[ ^0065DFAlpha MVP^000000 ]";
+mes "I am the first Keeper, are you ready?.";
+menu "Yes!",L_Yes,"Urrr No.",L_No;
+
+L_Yes:
+mes "[ ^0065DFBeta MVP^000000 ]";
+mes "Which Arena you want to go to??";
+ menu "Arena 1 [" + getmapusers("pvp_n_1-3.gat") + " / 50]",Larena1,
+ "Arena 2 [" + getmapusers("pvp_n_2-3.gat") + " / 15]",Larena2,
+ "Arena 3 [" + getmapusers("pvp_n_3-3.gat") + " / 15]",Larena3,
+ "Arena 4 [" + getmapusers("pvp_n_4-3.gat") + " / 15]",Larena4,
+ "Arena 5 [" + getmapusers("pvp_n_5-3.gat") + " / 15]",Larena5,
+ "Arena 6 [" + getmapusers("pvp_n_2-3.gat") + " / 15]",Larena6,
+ "Arena 7 [" + getmapusers("pvp_n_3-3.gat") + " / 15]",Larena7,
+ "Arena 8 [" + getmapusers("pvp_n_4-3.gat") + " / 15]",Larena8,
+ "Quit",Lcancel;
+
+L_No:
+close;
+
+Lcancel:
+close;
+
+Larena1:
+if (getmapusers("pvp_n_1-3.gat") > 49) goto Lsorry;
+callfunc "Ramvp_2";
+warp "pvp_n_1-3",102,102;
+close;
+
+Larena2:
+if (getmapusers("pvp_n_2-3.gat") > 14) goto Lsorry;
+callfunc "Ramvp_2";
+warp "pvp_n_2-3",102,102;
+close;
+
+Larena3:
+if (getmapusers("pvp_n_3-3.gat") > 14) goto Lsorry;
+callfunc "Ramvp_2";
+warp "pvp_n_3-3",102,102;
+close;
+
+Larena4:
+if (getmapusers("pvp_n_4-3.gat") > 14) goto Lsorry;
+callfunc "Ramvp_2";
+warp "pvp_n_4-3.gat",102,102;
+close;
+
+Larena5:
+if (getmapusers("pvp_n_5-3.gat") > 14) goto Lsorry;
+callfunc "Ramvp_2";
+warp "pvp_n_5-3.gat",102,102;
+close;
+
+Larena6:
+if (getmapusers("pvp_n_6-3.gat") > 14) goto Lsorry;
+callfunc "Ramvp_2";
+warp "pvp_n_6-3.gat",102,102;
+close;
+
+Larena7:
+if (getmapusers("pvp_n_7-3.gat") > 14) goto Lsorry;
+callfunc "Ramvp_2";
+warp "pvp_n_7-3.gat",102,102;
+close;
+
+Larena8:
+if (getmapusers("pvp_n_8-3.gat") > 14) goto Lsorry;
+callfunc "Ramvp_2";
+warp "pvp_n_8-3.gat",102,102;
+close;
+
+Lsorry:
+mes "[ ^0065DFBeta MVP^000000 ]";
+mes "Sorry but this Arena is already full, maybe you can try another one!";
+close;
+}
+
+
+// --- The first Theta-MVP warper
+quiz_00.gat,60,31,4 script Theta MVP 774,{
+mes "[ ^0065DFTheta MVP^000000 ]";
+mes "I am the first Keeper, are you ready?.";
+menu "Yes!",L_Yes,"Urrr No.",L_No;
+
+L_Yes:
+mes "[ ^0065DFTheta MVP^000000 ]";
+mes "Which Arena you want to go to??";
+ menu "Arena 1 [" + getmapusers("pvp_n_1-4.gat") + " / 50]",Larena1,
+ "Arena 2 [" + getmapusers("pvp_n_2-4.gat") + " / 15]",Larena2,
+ "Arena 3 [" + getmapusers("pvp_n_3-4.gat") + " / 15]",Larena3,
+ "Arena 4 [" + getmapusers("pvp_n_4-4.gat") + " / 15]",Larena4,
+ "Arena 5 [" + getmapusers("pvp_n_5-4.gat") + " / 15]",Larena5,
+ "Arena 6 [" + getmapusers("pvp_n_2-4.gat") + " / 15]",Larena6,
+ "Arena 7 [" + getmapusers("pvp_n_3-4.gat") + " / 15]",Larena7,
+ "Arena 8 [" + getmapusers("pvp_n_4-4.gat") + " / 15]",Larena8,
+ "Quit",Lcancel;
+
+L_No:
+close;
+
+Larena1:
+if (getmapusers("pvp_n_1-4.gat") > 49) goto Lsorry;
+callfunc "Ramvp_3";
+warp "pvp_n_1-4.gat",102,102;
+close;
+
+Larena2:
+if (getmapusers("pvp_n_2-4.gat") > 14) goto Lsorry;
+callfunc "Ramvp_3";
+warp "pvp_n_2-4.gat",102,102;
+close;
+
+Larena3:
+if (getmapusers("pvp_n_3-4.gat") > 14) goto Lsorry;
+callfunc "Ramvp_3";
+warp "pvp_n_3-4.gat",102,102;
+close;
+
+Larena4:
+if (getmapusers("pvp_n_4-4.gat") > 14) goto Lsorry;
+mes "[ ^0065DFTheta MVP^000000 ]";
+mes "Here you go!";
+warp "pvp_n_4-4.gat",102,102;
+close;
+
+Larena5:
+if (getmapusers("pvp_n_5-4.gat") > 14) goto Lsorry;
+callfunc "Ramvp_3";
+warp "pvp_n_5-4.gat",102,102;
+close;
+
+Larena6:
+if (getmapusers("pvp_n_6-4.gat") > 14) goto Lsorry;
+callfunc "Ramvp_3";
+warp "pvp_n_6-4.gat",102,102;
+close;
+
+Larena7:
+if (getmapusers("pvp_n_7-4.gat") > 14) goto Lsorry;
+callfunc "Ramvp_3";
+warp "pvp_n_7-4.gat",102,102;
+close;
+
+Larena8:
+if (getmapusers("pvp_n_8-4.gat") > 14) goto Lsorry;
+callfunc "Ramvp_3";
+warp "pvp_n_8-4.gat",102,102;
+close;
+
+Lsorry:
+mes "[ ^0065DFTheta MVP^000000 ]";
+mes "Sorry but this Arena is already full, maybe you can try another one!";
+close;
+}
+
+
+// --- The first Epsilon-MVP warper
+quiz_00.gat,62,31,4 script Epsilon MVP 776,{
+mes "[ ^0065DFEpsilon MVP^000000 ]";
+mes "I am the first Keeper, are you ready?.";
+menu "Yes!",L_Yes,"Urrr No.",L_No;
+
+L_Yes:
+mes "[ ^0065DFEpsilon MVP^000000 ]";
+mes "Which Arena you want to go to??";
+ menu "Arena 1 [" + getmapusers("pvp_n_1-5.gat") + " / 50]",Larena1,
+ "Arena 2 [" + getmapusers("pvp_n_2-5.gat") + " / 15]",Larena2,
+ "Arena 3 [" + getmapusers("pvp_n_3-5.gat") + " / 15]",Larena3,
+ "Arena 4 [" + getmapusers("pvp_n_4-5.gat") + " / 15]",Larena4,
+ "Arena 5 [" + getmapusers("pvp_n_5-5.gat") + " / 15]",Larena5,
+ "Arena 6 [" + getmapusers("pvp_n_2-5.gat") + " / 15]",Larena6,
+ "Arena 7 [" + getmapusers("pvp_n_3-5.gat") + " / 15]",Larena7,
+ "Arena 8 [" + getmapusers("pvp_n_4-5.gat") + " / 15]",Larena8,
+ "Quit",Lcancel;
+
+L_No:
+close;
+
+Larena1:
+if (getmapusers("pvp_n_1-5.gat") > 49) goto Lsorry;
+callfunc "Ramvp_4";
+warp "pvp_n_1-5.gat",102,102;
+close;
+
+Larena2:
+if (getmapusers("pvp_n_2-5.gat") > 14) goto Lsorry;
+callfunc "Ramvp_4";
+warp "pvp_n_2-5.gat",102,102;
+close;
+
+Larena3:
+if (getmapusers("pvp_n_3-5.gat") > 14) goto Lsorry;
+callfunc "Ramvp_4";
+warp "pvp_n_3-5.gat",102,102;
+close;
+
+Larena4:
+if (getmapusers("pvp_n_4-5.gat") > 14) goto Lsorry;
+callfunc "Ramvp_4";
+warp "pvp_n_4-5.gat",102,102;
+close;
+
+Larena5:
+if (getmapusers("pvp_n_5-5.gat") > 14) goto Lsorry;
+callfunc "Ramvp_4";
+warp "pvp_n_5-5.gat",102,102;
+close;
+
+Larena6:
+if (getmapusers("pvp_n_6-5.gat") > 14) goto Lsorry;
+callfunc "Ramvp_4";
+warp "pvp_n_6-5.gat",102,102;
+close;
+
+Larena7:
+if (getmapusers("pvp_n_7-5.gat") > 14) goto Lsorry;
+callfunc "Ramvp_4";
+warp "pvp_n_7-5.gat",102,102;
+close;
+
+Larena8:
+if (getmapusers("pvp_n_8-5.gat") > 14) goto Lsorry;
+callfunc "Ramvp_4";
+warp "pvp_n_8-5.gat",102,102;
+close;
+
+Lsorry:
+mes "[ ^0065DFEpsilon MVP^000000 ]";
+mes "Sorry but this Arena is already full, maybe you can try another one!";
+close;
+}
+
+
+// ---- Inside MVP-Arena NPC's
+// --- Alpha-MVP #1
+pvp_n_1-2.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_2-2",102,102;
+ close;
+
+}
+
+// --- Alpha-MVP #2
+pvp_n_2-2.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_3-2",102,102;
+ close;
+
+}
+// --- Alpha-MVP #3
+pvp_n_3-2.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_4-2.gat",102,102;
+ close;
+
+}
+// --- Alpha-MVP #4
+pvp_n_4-2.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_5-2.gat",102,102;
+ close;
+
+}
+// --- Alpha-MVP #5
+pvp_n_5-2.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_6-2.gat",102,102;
+ close;
+
+}
+// --- Alpha-MVP #6
+pvp_n_6-2.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_7-2.gat",102,102;
+ close;
+
+}
+// --- Alpha-MVP #7
+pvp_n_7-2.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_8-2.gat",102,102;
+ close;
+}
+// --- Alpha-MVP #8
+pvp_n_8-2.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M2";
+}
+// --- Beta-MVP #1
+pvp_n_1-3.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_2-3.gat",102,102;
+ close;
+
+}
+
+// --- Beta-MVP #2
+pvp_n_2-3.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_3-3.gat",102,102;
+ close;
+
+}
+// --- Beta-MVP #3
+pvp_n_3-3.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_4-3.gat",102,102;
+ close;
+
+}
+// --- Beta-MVP #4
+pvp_n_4-3.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_5-3.gat",102,102;
+ close;
+
+}
+// --- Beta-MVP #5
+pvp_n_5-3.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_6-3.gat",102,102;
+ close;
+
+}
+// --- Beta-MVP #6
+pvp_n_6-3.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_7-3.gat",102,102;
+ close;
+
+}
+// --- Beta-MVP #7
+pvp_n_7-3.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_8-3.gat",102,102;
+ close;
+
+}
+// --- Beta-MVP #8
+pvp_n_8-3.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M2";
+}
+// --- Theta-MVP #1
+pvp_n_1-4.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_2-4.gat",102,102;
+ close;
+
+}
+
+// --- Theta-MVP #2
+pvp_n_2-4.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_3-4.gat",102,102;
+ close;
+
+}
+// --- Theta-MVP #3
+pvp_n_3-4.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_4-4.gat",102,102;
+ close;
+
+}
+// --- Theta-MVP #4
+pvp_n_4-4.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_5-4.gat",102,102;
+ close;
+
+}
+// --- Theta-MVP #5
+pvp_n_5-4.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_6-4.gat",102,102;
+ close;
+
+}
+// --- Theta-MVP #6
+pvp_n_6-4.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_7-4.gat",102,102;
+ close;
+
+}
+// --- Theta-MVP #7
+pvp_n_7-4.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_8-4.gat",102,102;
+ close;
+
+}
+// --- Theta-MVP #8
+pvp_n_8-4.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M2";
+}
+// --- Epsilon-MVP #1
+pvp_n_1-5.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_2-5.gat",102,102;
+ close;
+
+}
+
+// --- Epsilon-MVP #2
+pvp_n_2-5.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_3-5.gat",102,102;
+ close;
+
+}
+// --- Epsilon-MVP #3
+pvp_n_3-5.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_4-5.gat",102,102;
+ close;
+
+}
+// --- Epsilon-MVP #4
+pvp_n_4-5.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_5-5.gat",102,102;
+ close;
+
+}
+// --- Epsilon-MVP #5
+pvp_n_5-5.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_6-5.gat",102,102;
+ close;
+
+}
+// --- Epsilon-MVP #6
+pvp_n_6-5.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_7-5.gat",102,102;
+ close;
+
+}
+// --- Epsilon-MVP #7
+pvp_n_7-5.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M";
+
+ L_Next:
+ warp "pvp_n_8-5.gat",102,102;
+ close;
+}
+// --- Epsilon-MVP #8
+pvp_n_8-5.gat,100,100,4 script MVP-Protector 727,{
+ mes "[ ^0065DFMVP-Protector^000000 ]";
+ callfunc "Ramvp_M2";
+}
+
+// ---- Monsters for the MVP-Arena
+// --- Alpha-MVP Maps
+// --- First Alpha-MVP area
+pvp_n_1-2.gat,0,0,0,0 monster Eddga 1115,3,60000,66000
+pvp_n_1-2.gat,0,0,0,0 monster Mistress 1059,1,60000,66000
+// --- Second Alpha-MVP area
+pvp_n_2-2.gat,0,0,0,0 monster Mistress 1059,3,60000,66000
+pvp_n_2-2.gat,0,0,0,0 monster Moonlight 1150,1,60000,66000
+// --- Third Alpha-MVP area
+pvp_n_3-2.gat,0,0,0,0 monster Mistress 1059,1,60000,66000
+pvp_n_3-2.gat,0,0,0,0 monster Moonlight 1150,2,60000,66000
+pvp_n_3-2.gat,0,0,0,0 monster Maya 1147,1,60000,66000
+// --- Fourth Alpha-MVP area
+pvp_n_4-2.gat,0,0,0,0 monster Eddga 1115,1,60000,66000
+pvp_n_4-2.gat,0,0,0,0 monster Mistress 1059,1,60000,66000
+pvp_n_4-2.gat,0,0,0,0 monster Moonlight 1150,1,60000,66000
+pvp_n_4-2.gat,0,0,0,0 monster Maya 1147,1,60000,66000
+// --- Fifth Alpha-MVP area
+pvp_n_5-2.gat,0,0,0,0 monster Eddga 1115,1,60000,66000
+pvp_n_5-2.gat,0,0,0,0 monster Mistress 1059,2,60000,66000
+pvp_n_5-2.gat,0,0,0,0 monster Moonlight 1150,1,60000,66000
+pvp_n_5-2.gat,0,0,0,0 monster Maya 1147,2,60000,66000
+// --- Sixth Alpha-MVP area
+pvp_n_6-2.gat,0,0,0,0 monster Eddga 1115,2,60000,66000
+pvp_n_6-2.gat,0,0,0,0 monster Mistress 1059,3,60000,66000
+pvp_n_6-2.gat,0,0,0,0 monster Moonlight 1150,1,60000,66000
+pvp_n_6-2.gat,0,0,0,0 monster Maya 1147,2,60000,66000
+// --- Seventh Alpha-MVP area
+pvp_n_7-2.gat,0,0,0,0 monster Eddga 1115,3,60000,66000
+pvp_n_7-2.gat,0,0,0,0 monster Mistress 1059,3,60000,66000
+pvp_n_7-2.gat,0,0,0,0 monster Moonlight 1150,2,60000,66000
+pvp_n_7-2.gat,0,0,0,0 monster Maya 1147,2,60000,66000
+// --- Eighth Alpha-MVP area
+pvp_n_8-2.gat,0,0,0,0 monster Eddga 1115,3,60000,66000
+pvp_n_8-2.gat,0,0,0,0 monster Mistress 1059,3,60000,66000
+pvp_n_8-2.gat,0,0,0,0 monster Moonlight 1150,3,60000,66000
+pvp_n_8-2.gat,0,0,0,0 monster Maya 1147,3,60000,66000
+
+// --- Beta-MVP Maps
+// --- First Beta-MVP area
+pvp_n_1-3.gat,0,0,0,0 monster Phreeoni 1159,3,60000,66000
+pvp_n_1-3.gat,0,0,0,0 monster Turtle General 1312,1,60000,66000
+// --- Second Beta-MVP area
+pvp_n_2-3.gat,0,0,0,0 monster Phreeoni 1159,2,60000,66000
+pvp_n_3-3.gat,0,0,0,0 monster Turtle General 1312,1,60000,66000
+pvp_n_2-3.gat,0,0,0,0 monster Orc Hero 1087,1,60000,66000
+// --- Third Beta-MVP area
+pvp_n_3-3.gat,0,0,0,0 monster Phreeoni 1159,1,60000,66000
+pvp_n_3-3.gat,0,0,0,0 monster Turtle General 1312,1,60000,66000
+pvp_n_3-3.gat,0,0,0,0 monster Orc Hero 1087,1,60000,66000
+pvp_n_3-3.gat,0,0,0,0 monster Orc Lord 1190,1,60000,66000
+// --- Fourth Beta-MVP area
+pvp_n_4-3.gat,0,0,0,0 monster Phreeoni 1159,2,60000,66000
+pvp_n_4-3.gat,0,0,0,0 monster Turtle General 1312,1,60000,66000
+pvp_n_4-3.gat,0,0,0,0 monster Orc Hero 1087,1,60000,66000
+pvp_n_4-3.gat,0,0,0,0 monster Orc Lord 1190,1,60000,66000
+// --- Fifth Beta-MVP area
+pvp_n_5-3.gat,0,0,0,0 monster Phreeoni 1159,1,60000,66000
+pvp_n_5-3.gat,0,0,0,0 monster Turtle General 1312,2,60000,66000
+pvp_n_5-3.gat,0,0,0,0 monster Orc Hero 1087,2,60000,66000
+pvp_n_5-3.gat,0,0,0,0 monster Orc Lord 1190,1,60000,66000
+// --- Sixth Beta-MVP area
+pvp_n_6-3.gat,0,0,0,0 monster Phreeoni 1159,2,60000,66000
+pvp_n_6-3.gat,0,0,0,0 monster Turtle General 1312,1,60000,66000
+pvp_n_6-3.gat,0,0,0,0 monster Orc Hero 1087,2,60000,66000
+pvp_n_6-3.gat,0,0,0,0 monster Orc Lord 1190,2,60000,66000
+// --- Seventh Beta-MVP area
+pvp_n_7-3.gat,0,0,0,0 monster Phreeoni 1159,3,60000,66000
+pvp_n_7-3.gat,0,0,0,0 monster Turtle General 1312,1,60000,66000
+pvp_n_7-3.gat,0,0,0,0 monster Orc Hero 1087,2,60000,66000
+pvp_n_7-3.gat,0,0,0,0 monster Orc Lord 1190,3,60000,66000
+// --- Eighth Beta-MVP area
+pvp_n_8-3.gat,0,0,0,0 monster Phreeoni 1159,3,60000,66000
+pvp_n_8-3.gat,0,0,0,0 monster Turtle General 1312,3,60000,66000
+pvp_n_8-3.gat,0,0,0,0 monster Orc Hero 1087,3,60000,66000
+pvp_n_8-3.gat,0,0,0,0 monster Orc Lord 1190,3,60000,66000
+
+// --- Theta-MVP Maps
+// --- First Theta-MVP area
+pvp_n_1-4.gat,0,0,0,0 monster Drake 1112,3,60000,66000
+pvp_n_1-4.gat,0,0,0,0 monster Osiris 1038,1,60000,66000
+// --- Second Theta-MVP area
+pvp_n_2-4.gat,0,0,0,0 monster Drake 1112,2,60000,66000
+pvp_n_2-4.gat,0,0,0,0 monster Osiris 1038,1,60000,66000
+pvp_n_2-4.gat,0,0,0,0 monster Doppelganger 1046,1,60000,66000
+// --- Third Theta-MVP area
+pvp_n_3-4.gat,0,0,0,0 monster Drake 1112,1,60000,66000
+pvp_n_3-4.gat,0,0,0,0 monster Osiris 1038,1,60000,66000
+pvp_n_3-4.gat,0,0,0,0 monster Doppelganger 1046,1,60000,66000
+pvp_n_3-4.gat,0,0,0,0 monster Lord of Death 1373,1,60000,66000
+// --- Fourth Theta-MVP area
+pvp_n_4-4.gat,0,0,0,0 monster Drake 1112,2,60000,66000
+pvp_n_4-4.gat,0,0,0,0 monster Osiris 1038,1,60000,66000
+pvp_n_4-4.gat,0,0,0,0 monster Doppelganger 1046,2,60000,66000
+pvp_n_4-4.gat,0,0,0,0 monster Lord of Death 1373,1,60000,66000
+// --- Fifth Theta-MVP area
+pvp_n_5-4.gat,0,0,0,0 monster Drake 1112,3,60000,66000
+pvp_n_5-4.gat,0,0,0,0 monster Osiris 1038,2,60000,66000
+pvp_n_5-4.gat,0,0,0,0 monster Doppelganger 1046,2,60000,66000
+pvp_n_5-4.gat,0,0,0,0 monster Lord of Death 1373,1,60000,66000
+// --- Sixth Theta-MVP area
+pvp_n_6-4.gat,0,0,0,0 monster Drake 1112,3,60000,66000
+pvp_n_6-4.gat,0,0,0,0 monster Osiris 1038,2,60000,66000
+pvp_n_6-4.gat,0,0,0,0 monster Doppelganger 1046,2,60000,66000
+pvp_n_6-4.gat,0,0,0,0 monster Lord of Death 1373,2,60000,66000
+// --- Seventh Theta-MVP area
+pvp_n_7-4.gat,0,0,0,0 monster Drake 1112,3,60000,66000
+pvp_n_7-4.gat,0,0,0,0 monster Osiris 1038,2,60000,66000
+pvp_n_7-4.gat,0,0,0,0 monster Doppelganger 1046,3,60000,66000
+pvp_n_7-4.gat,0,0,0,0 monster Lord of Death 1373,2,60000,66000
+// --- Eighth Theta-MVP area
+pvp_n_8-4.gat,0,0,0,0 monster Drake 1112,3,60000,66000
+pvp_n_8-4.gat,0,0,0,0 monster Osiris 1038,3,60000,66000
+pvp_n_8-4.gat,0,0,0,0 monster Doppelganger 1046,3,60000,66000
+pvp_n_8-4.gat,0,0,0,0 monster Lord of Death 1373,3,60000,66000
+
+// --- Epsilon-MVP Maps
+// --- First Epsilon-MVP area
+pvp_n_1-5.gat,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000
+pvp_n_1-5.gat,0,0,0,0 monster Pharoh 1157,1,60000,66000
+// --- First Epsilon-MVP area
+pvp_n_2-5.gat,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
+pvp_n_2-5.gat,0,0,0,0 monster Pharoh 1157,1,60000,66000
+pvp_n_2-5.gat,0,0,0,0 monster Dark Lord 1272,1,60000,66000
+// --- First Epsilon-MVP area
+pvp_n_3-5.gat,0,0,0,0 monster Incantation Samurai 1492,1,60000,66000
+pvp_n_3-5.gat,0,0,0,0 monster Pharoh 1157,1,60000,66000
+pvp_n_3-5.gat,0,0,0,0 monster Dark Lord 1272,1,60000,66000
+pvp_n_3-5.gat,0,0,0,0 monster Baphomet 1039,1,60000,66000
+// --- First Epsilon-MVP area
+pvp_n_4-5.gat,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000
+pvp_n_4-5.gat,0,0,0,0 monster Pharoh 1157,1,60000,66000
+pvp_n_4-5.gat,0,0,0,0 monster Dark Lord 1272,1,60000,66000
+pvp_n_4-5.gat,0,0,0,0 monster Baphomet 1039,1,60000,66000
+// --- First Epsilon-MVP area
+pvp_n_5-5.gat,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
+pvp_n_5-5.gat,0,0,0,0 monster Pharoh 1157,2,60000,66000
+pvp_n_5-5.gat,0,0,0,0 monster Dark Lord 1272,2,60000,66000
+pvp_n_5-5.gat,0,0,0,0 monster Baphomet 1039,1,60000,66000
+// --- First Epsilon-MVP area
+pvp_n_6-5.gat,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
+pvp_n_6-5.gat,0,0,0,0 monster Pharoh 1157,2,60000,66000
+pvp_n_6-5.gat,0,0,0,0 monster Dark Lord 1272,2,60000,66000
+pvp_n_6-5.gat,0,0,0,0 monster Baphomet 1039,1,60000,66000
+// --- First Epsilon-MVP area
+pvp_n_7-5.gat,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
+pvp_n_7-5.gat,0,0,0,0 monster Pharoh 1157,2,60000,66000
+pvp_n_7-5.gat,0,0,0,0 monster Dark Lord 1272,2,60000,66000
+pvp_n_7-5.gat,0,0,0,0 monster Baphomet 1039,2,60000,66000
+// --- First Epsilon-MVP area
+pvp_n_8-5.gat,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000
+pvp_n_8-5.gat,0,0,0,0 monster Pharoh 1157,2,60000,66000
+pvp_n_8-5.gat,0,0,0,0 monster Dark Lord 1272,2,60000,66000
+pvp_n_8-5.gat,0,0,0,0 monster Baphomet 1039,2,60000,66000
diff --git a/npc/custom/WoE_Setter.txt b/npc/custom/WoE_Setter.txt
new file mode 100644
index 000000000..977693c0d
--- /dev/null
+++ b/npc/custom/WoE_Setter.txt
@@ -0,0 +1,187 @@
+//===== eAthena Script =======================================
+//= War of Emperium - Time Setter
+//===== By: ==================================================
+//= Fredzilla
+//===== Current Version: =====================================
+//= 1.5a
+//===== Compatible With: =====================================
+//= eAthena 1.0 Final TXT
+//===== Description: =========================================
+//= Lets a GM set WoE times from inside the game
+//===== Additional Comments: =================================
+//= Loops used = 4 (I like loops ^_^)
+//= Only GM's of lvl 99 can use it
+//= If anyone else tries to use it they will just get a list of WoE times
+//= It give you the option, as a GM, to Add a new time, Reset all times,
+//= or just view the current set times
+//= If a WoE is in Progress no time reset is possible
+//= A maximum of 200 WoE times can be set, if that is even possible ;)
+//= Added in v1.5
+//= Change day setting to a menu call, more GUI this way
+//= You can choose for the WoE to last between days
+//= IE, Sat 23 till Sun 01, is now possible
+//= Not even the normal WoE script can do this (by dafault)
+//= Removed the need for disabling the normal agit_event
+//= 1.5a Applied Playtester's fix. [Vicious]
+//============================================================
+prontera.gat,162,194,5 script WoE Setter 806,{
+ mes "[Woe Setter]";
+ if(getgmlevel(99)<1) goto L_NotGM;
+ mes "Welcome, I can set WoE times for you";
+ mes "Simply follow the intruction given in each section after this, and it should be set and ready to use";
+ next;
+ mes "[Woe Setter]";
+ mes "Now the fun starts";
+ mes "Please select what you want to do";
+ next;
+ menu "Add a WoE time",L_Add,"Reset All WoE times",L_Reset,"View Current WoE times",-;
+ mes "[Woe Setter]";
+ mes "Ok currently you have WoE times set for:-";
+ set @num,0;
+L_LoopList:
+ if($sday[@num] == 0 && $eday[@num] == 0 && $woetime[@num] == 0 && $woetime2[@num] == 0) goto L_LoopListEnd;
+ if($sday[@num]==0) set $@tempday$,"Sunday";
+ if($sday[@num]==1) set $@tempday$,"Monday";
+ if($sday[@num]==2) set $@tempday$,"Tuesday";
+ if($sday[@num]==3) set $@tempday$,"Wednesday";
+ if($sday[@num]==4) set $@tempday$,"Thursday";
+ if($sday[@num]==5) set $@tempday$,"Friday";
+ if($sday[@num]==6) set $@tempday$,"Saturday";
+ if($eday[@num]==0) set $@tempday2$,"Sunday";
+ if($eday[@num]==1) set $@tempday2$,"Monday";
+ if($eday[@num]==2) set $@tempday2$,"Tuesday";
+ if($eday[@num]==3) set $@tempday2$,"Wednesday";
+ if($eday[@num]==4) set $@tempday2$,"Thursday";
+ if($eday[@num]==5) set $@tempday2$,"Friday";
+ if($eday[@num]==6) set $@tempday2$,"Saturday";
+ if($eday[@num]==$sday[@num]) mes $@tempday$+" from "+$woetime[@num]+":00 till "+$woetime2[@num]+":00";
+ if($eday[@num]!=$sday[@num]) mes "From "+$@tempday$+" "+$woetime[@num]+":00 till "+$@tempday2$+" "+$woetime2[@num]+":00";
+ set @num,@num+1;
+ goto L_LoopList;
+L_LoopListEnd:
+ close;
+L_Add:
+ set @num,0;
+L_AddLoop:
+ if($sday[@num] == 0 && $eday[@num] == 0 && $woetime[@num] == 0 && $woetime2[@num] == 0) goto L_AddLoopEnd;
+ set @num,@num+1;
+ goto L_AddLoop;
+L_AddLoopEnd:
+ mes "[Woe Setter]";
+ mes "What day do you want the WoE to start ^FF0000start^000000 in?";
+ next;
+ menu "Sunday",-,"Monday",-,"Tuesday",-,"Wednesday",-,"Thursday",-,"Friday",-,"Saturday",-;
+ if(@menu==1) set $sday[@num],0;
+ if(@menu==2) set $sday[@num],1;
+ if(@menu==3) set $sday[@num],2;
+ if(@menu==4) set $sday[@num],3;
+ if(@menu==5) set $sday[@num],4;
+ if(@menu==6) set $sday[@num],5;
+ if(@menu==7) set $sday[@num],6;
+ mes "[Woe Setter]";
+ mes "Ok, now please enter the hour you wish the WoE to ^FF0000start^000000 at";
+ mes "This is using a 24 hour clock";
+ mes "00 = Midnight";
+ mes "12 = Mid-day";
+ mes "23 = 11pm";
+ next;
+ input @input;
+ if (@input < 0 || @input > 24) goto L_BadNumber;
+ set $woetime[@num],@input;
+ mes "[Woe Setter]";
+ mes "What day do you want the WoE to start ^FF0000finish^000000 in?";
+ next;
+ menu "Same as start",-,"Sunday",-,"Monday",-,"Tuesday",-,"Wednesday",-,"Thursday",-,"Friday",-,"Saturday",-;
+ if(@menu==1) set $eday[@num],$sday[@num];
+ if(@menu==2) set $eday[@num],0;
+ if(@menu==3) set $eday[@num],1;
+ if(@menu==4) set $eday[@num],2;
+ if(@menu==5) set $eday[@num],3;
+ if(@menu==6) set $eday[@num],4;
+ if(@menu==7) set $eday[@num],5;
+ if(@menu==8) set $eday[@num],6;
+ mes "[Woe Setter]";
+ mes "Ok, now please enter the hour you wish the WoE to ^FF0000finish^000000 at";
+ mes "This also uses the 24 hour clock";
+ mes "00 = Midnight";
+ mes "12 = Mid-day";
+ mes "23 = 11pm";
+ next;
+ input @input;
+ if (@input < 0 || @input > 24) goto L_BadNumber;
+ set $woetime2[@num],@input;
+ mes "[Woe Setter]";
+ mes "You WoE time has now been set";
+ mes "To confirm this, ask me to show you the ^FF0000'View Current WoE times'^000000";
+ close;
+L_Reset:
+ mes "[Woe Setter]";
+ mes "You are about to reset all the set WoE times you have created";
+ mes "Are you sure?";
+ next;
+ menu "No, what was I thinking",L_No,"Yes I really want to do it",-;
+ if(agitcheck(0)==1) goto L_WoEOn;
+ deletearray $sday[0],200;
+ deletearray $eday[0],200;
+ deletearray $woetime[0],200;
+ deletearray $woetime2[0],200;
+ mes "[Woe Setter]";
+ mes "They are all gone now, please remember to set new ones";
+ close;
+L_WoEOn:
+ mes "[Woe Setter]";
+ mes "Sorry since there is a WoE in progress you cannot reset the WoE times";
+ close;
+L_No:
+ mes "[Woe Setter]";
+ mes "Oh, good, come back whenever";
+ close;
+L_NotGM:
+ mes "The current WoE times are :-";
+ set @num,0;
+ goto L_LoopList;
+ end;
+L_BadNumber:
+ mes "[Woe Setter]";
+ mes "Sorry that was an invalid number, please try again";
+ close;
+}
+- script Agit_Event2 -1,{
+ end;
+OnInit:
+disablenpc "Agit_Event";
+OnMinute00:
+OnAgitInit:
+
+// starting time check
+ set $@num,0;
+L_StartLoop:
+ if($sday[$@num] == 0 && $eday[$@num] == 0 && $woetime[$@num] == 0 && $woetime2[$@num] == 0) goto L_StartLoopEnd;
+ if(gettime(4)==$sday[$@num] && gettime(3)>=$woetime[$@num] && (gettime(3)<$woetime2[$@num] || $sday[$@num]!=$eday[$@num])) goto L_Start;
+ set $@num,$@num+1;
+ goto L_StartLoop;
+
+// end time checks
+ L_StartLoopEnd:
+ set $@num,0;
+ L_EndLoop:
+ if($eday[$@num] == 0 && $woetime[$@num] == 0 && $woetime2[$@num] == 0) end;
+ if((gettime(4)==$eday[$@num]) && (gettime(3)==$woetime2[$@num])) goto L_End;
+ set $@num,$@num+1;
+ goto L_EndLoop;
+ end;
+
+// Stop WoE
+L_End:
+ if(agitcheck(0)==0) end;
+ Announce "The War Of Emperium is over!",8;
+ AgitEnd;
+ end;
+
+// Start WoE
+L_Start:
+ if(agitcheck(0)==1) end;
+ Announce "The War Of Emperium has begun!",8;
+ AgitStart;
+ end;
+}
diff --git a/npc/custom/adoption.txt b/npc/custom/adoption.txt
new file mode 100644
index 000000000..77bfc4498
--- /dev/null
+++ b/npc/custom/adoption.txt
@@ -0,0 +1,502 @@
+//===== Athena Script =======================================
+//= Simple Adoption Script
+//===== By ================================================
+//= Fredzilla with help from Kamari,Acky
+//===== Version ===========================================
+//= 1.6 Removed call to function Is_Taekwon_Class in favor of baseClass == Job_Taekwon [Silentdragon]
+//= 1.5 Added GM menu to reset current adoption [Lupus]
+//= 1.4 Got rid of useless "event_adoptXXX" variables [Lupus]
+//= 1.3c - Slightly rewrote the anti-taekwon protection to
+//= detect problems more easily [DracoRPG]
+//= 1.3a - Added anti Taekwon Classes protection (they can't
+//= be adopted) [Lupus]
+//= 1.3 - Now it can teach parents/baby their missing skills.
+//= Your old families should talk to these NPCs to get
+//= their family skills [Lupus]
+//= 1.2b - More fixes + Added Acky's teacher to the end
+//= (stoped it from saying a particular word I thought
+//= was inapropriate for a kids game)
+//= 1.1 - Minor correction, replaced missing close; and mes :D
+//= 1.0 - First Release, most likely going to have some bugs
+//= Is using @adopt instead of proper NPC script command
+//===== Compatible With ===================================
+//= eAthena Final (SVN), any version that contained the GM command @adopt
+//= This is any version released after 03/29/05, dont know the number
+//===== Description =======================================
+//= A simple adoption script that lets couples adopt a
+//= lvl 1/1 novice without the help of a GM there
+//===== Comments ==========================================
+//= List or Variables used
+//= $@AdoptionActive = Stops other people trying to use
+//= the adoption NPC's intill the currant one is over.
+//= @AdoptionReady = Marks person that talks to first NPC,
+//= this person will end up being ParentOne.
+//= $@ParentOne$ = Explains itself.
+//= $@ParentTwo$ = "" ""
+//= $@Baby$ = "" ""
+//= $@GenderBaby$ = Set so it can state boy or girl.
+//= $@FinalQuestion = Lets the parents take one last chance
+//= to cancel the adoption before it is perminant.
+//= $@CheckAll = Follow on from the last one, when this = 3,
+//= the adoption will take place and will be perminant.
+//= @regged = Stops the same person being counted twice
+//= before the adoption is completed.
+//= Lupus removed:
+//= *event_adopt = Put on the parents so they cannot adopt again.
+//= *event_adopted = Put on baby so it cant be adopted again.
+//= Use "getchildid()>0" insread of event_adopt
+//= Use "Upper==2" insread of event_adopted
+//=========================================================
+
+prt_church.gat,115,122,0 warp prtch03 1,2,prt_church.gat,164,171
+prt_church.gat,162,171,0 warp prtch01-3 1,2,prt_church.gat,113,122
+
+prt_church.gat,166,176,3 script Adoption Man 61,{
+
+//GM Menu: Start
+//If u're a GM you can always reset current Adoption process
+ if(getgmlevel(99)<90) goto L_SKIP;
+ mes "[GM Menu]";
+ mes "Would you like to reset curent adoption?";
+ next;
+ menu "Yes",-,"No",L_SKIP;
+ callfunc "AdoptReset","GM reset";
+ close;
+L_SKIP:
+//GM Menu: End
+
+ if($@AdoptionActive == 1) goto A_Cannot;
+ mes "[Oliver]";
+ if (Upper==2) goto A_YouBaby;
+ if (getchildid()>0 && getskilllv(410)<=0) goto A_GetSkill;
+ if (getchildid()>0) goto A_Already;
+ mes "Would you like to adopt someone?";
+ next;
+ menu "Yes",A_Yes,"No",-;
+A_No:
+ mes "[Oliver]";
+ mes "I am sorry to hear that, please come back when you believe you are ready.";
+ close;
+A_Cannot:
+ mes "[Oliver]";
+ mes "There is currentally an adoption inprogress, come back when it has finished.";
+ close;
+A_Yes:
+ mes "[Oliver]";
+ mes "Good to hear it!";
+ mes "But do you meet the requirments for adoption?";
+ next;
+ mes "[Oliver]";
+ mes "We cant just give out babies at the drop of a hat.";
+ mes "Before we can let you leave with a baby we have to know you are strong enough to take care of it.";
+ next;
+ mes "[Oliver]";
+ mes "We also need to know you have a partner you are married to.";
+ mes "We wont give a baby to an un-married couple.";
+ next;
+ mes "[Oliver]";
+ mes "Do you think you meet these criteria?";
+ next;
+ menu "Yes, I would love to adopt?",-,"No, I dont think I can",A_No;
+ mes "[Oliver]";
+ mes "Well you seem set on this.";
+ next;
+ deltimer "timeadopt";
+ addtimer 300000,"timeadopt";
+ if ($@AdoptionActive == 1) goto A_Cannot;
+ set $@AdoptionActive,1;
+ set @AdoptionReady,1;
+ mes "[Oliver]";
+ mes "I will refer you to my coleage over there.";
+ close;
+
+A_GetSkill:
+ mes "You have just adopted a baby. I'll teach you a useful skill CALL BABY !";
+ next;
+ emotion 46;
+ skill 410,1,0;
+ mes "[Oliver]";
+ mes "Done! Tell your partner to call me, too.";
+ mes "Our children are our future!";
+ close;
+A_Already:
+ emotion 1;
+ mes "How is your baby today?";
+ close;
+A_YouBaby:
+ emotion 2;
+ mes "Say HI to your parents! Be cool!";
+ if (getskilllv(408)<=0 || getskilllv(409)<=0) mes "By the way, our Teacher's wanting to see you.";
+ close;
+}
+
+prt_church.gat,172,177,3 script Adoption Lady 103,{
+ if (Upper==2) goto A_YouBaby;
+ if (getchildid()>0 && getskilllv(410)<=0) goto A_GetSkill;
+ if (getchildid()>0) goto A_Already;
+ if ($@FinalQuestion==1 && $@ParentOne$==strcharinfo(0)) goto A_ParentOneEnd;
+ if ($@FinalQuestion==1 && $@ParentTwo$==strcharinfo(0)) goto A_ParentTwoEnd;
+ if ($@FinalQuestion==1 && $@Baby$==strcharinfo(0)) goto A_BabyEnd;
+ if (strcharinfo(0)==$@Baby$) goto A_FinalTest;
+ if (strcharinfo(0)==$@ParentTwo$) goto A_SecondReg;
+ if (@AdoptionReady==0 || $@AdoptionActive==0) goto A_SeeFriend;
+ mes "[Inanna]";
+ deltimer "timeadopt";
+ addtimer 300000,"timeadopt";
+ mes "So you think you meet our strict requirments?";
+ mes "Let's see here, are you over level 70?";
+ next;
+ menu "Yes, I am over level 70",A_lvl,"No, sorry to bother you",-;
+ mes "[Inanna]";
+ mes "Oh, I am sorry to hear that, please return when you meet this requirment.";
+ callfunc "AdoptReset","the parent didnt meet level requirments";
+ close;
+A_SeeFriend:
+ mes "[Inanna]";
+ mes "Seems you havent talked to my friend here.";
+ mes "He will refer you to me, when he thinks you are ready.";
+ close;
+A_lvl:
+ if(BaseLevel >= 70) goto A_lvlpassed;
+ mes "[Inanna]";
+ mes "Not only should I fail you on being a low level, but you also lied to me.";
+ next;
+ mes "[Inanna]";
+ mes "I cant give a baby to you";
+ callfunc "AdoptReset","the parent didnt meet level requirments";
+ close;
+A_lvlpassed:
+ mes "[Inanna]";
+ mes "WOW, you have passed the test of strength.";
+ next;
+ mes "[Inanna]";
+ mes "But lets see if you are happily married.";
+ mes "For this I will need to see your wedding ring.";
+ next;
+ mes "[Inanna]";
+ mes "Do you have you wedding ring on you now?";
+ next;
+ menu "Yes, here you go",A_Wedring,"No, Sorry I dont",A_Noring,"I am not married",-;
+ mes "[Inanna]";
+ mes "Well, as my fried said here, we will not give a baby to a family that is not married";
+ callfunc "AdoptReset","the parent isnt married";
+ close;
+A_Noring:
+ mes "[Inanna]";
+ mes "I cant believe you are in a loving marrige when you dont have your ring on you at all times!!!";
+ next;
+ mes "[Inanna]";
+ mes "I dont believe you deserve a baby.";
+ callfunc "AdoptReset","the parent hasnt got a wedding ring as proof of marriage.";
+ close;
+A_Wedring:
+ if ( countitem(2634)>0 || countitem(2635)>0 ) goto A_Wedringpassed;
+ goto A_Noring;
+A_Wedringpassed:
+ mes "[Inanna]";
+ mes "Awwwww, such a lovely ring, you must love your partner.";
+ next;
+ if (getchildid()>0) goto A_AlreadyHaveBaby;
+ mes "[Inanna]";
+ mes "I need to see them, please tell me their name.";
+ next;
+ input $@ParentTwo$;
+ set $@ParentOne$, strcharinfo(0);
+ mes "[Inanna]";
+ mes "Your partner now has 5 min to talk to me before the adoption is canceled.";
+ next;
+ deltimer "timeadopt";
+ addtimer 300000,"timeadopt";
+ areaannounce "prt_church.gat",0,0,350,350,"Can I please see "+$@ParentTwo$+" please",0;
+ mes "[Inanna]";
+ mes "Can you now please wait for me to call you again, thank you.";
+ close;
+A_AlreadyHaveBaby:
+ mes "Now lets look at the inscription on your ring, oh it seems you already have a baby.";
+ next;
+ mes "[Inanna]";
+ mes "I am sorry, you can only ever adopt once.";
+ mes "Please take care of you baby.";
+ callfunc "AdoptReset","the parent has already adopted once before";
+ close;
+A_SecondReg:
+ deltimer "timeadopt";
+ addtimer 300000,"timeadopt";
+ mes "[Inanna]";
+ mes "You must be "+$@ParentTwo$+", I just talked to your partner "+$@ParentOne$+", they mentioned you want to adopt baby.";
+ next;
+ mes "[Inanna]";
+ mes "Do you agree with "+$@ParentOne$+", do you want to adopt?";
+ next;
+ menu "Yes, I agree with them",A_agree,"No, I dont want to adopt",-;
+ mes "[Inanna]";
+ mes "This is bad news, I am very sorry to hear this.";
+ callfunc "AdoptReset","the 2nd parent does not want to adopt";
+ close;
+A_agree:
+ mes "[Inanna]";
+ mes "Now I will put you through the same test as your partner.";
+ next;
+ if(BaseLevel >= 70) goto A_lvltwo;
+ mes "[Inanna]";
+ mes "Sorry you are not over level 70.";
+ callfunc "AdoptReset","the 2nd parent didnt meet the level requirments";
+ close;
+A_lvltwo:
+ if ( countitem(2634)>0 || countitem(2635)>0 ) goto A_Wedringtwo;
+ mes "[Inanna]";
+ mes "Sorry you dont have a wedding ring on you as proof of marriage.";
+ callfunc "AdoptReset","the 2nd parent hasnt got a wedding ring as proof of marriage";
+ close;
+A_Wedringtwo:
+ if (getchildid()>0) goto A_AlreadyHaveBaby;
+ mes "[Inanna]";
+ mes "You have checked out, and have passed all the requirments.";
+ mes "All you need is a novice to adopt.";
+ next;
+ mes "[Inanna]";
+ mes "Do you have a novice to adopt?";
+ next;
+ menu "Yes, right here",A_YesBaby,"No, I'm sorry",-;
+ mes "[Inanna]";
+ mes "I suggest you find one, remember to get your parent to talk to my friend first when you return.";
+ callfunc "AdoptReset","there is no novice present to be adopted";
+ close;
+A_YesBaby:
+ mes "[Inanna]";
+ mes "Can I please know thier name?";
+ next;
+ input $@Baby$;
+ mes "[Inanna]";
+ mes "The novice now has 5min to come and talk to me, or the adopt will be canceled.";
+ next;
+ deltimer "timeadopt";
+ addtimer 300000,"timeadopt";
+ mes "[Inanna]";
+ mes "Thank you, can you please wait with your partner, and wait to be called back.";
+ areaannounce "prt_church.gat",0,0,350,350,"Can I please see "+$@Baby$+", please",0;
+ close;
+A_FinalTest:
+ deltimer "timeadopt";
+ addtimer 300000,"timeadopt";
+ if(Upper==2) goto A_AlreadyAdopted;
+ if(baseClass == Job_Taekwon) goto A_CantBeAdopted;
+ mes "[Inanna]";
+ mes "You must be "+$@Baby$+", its very nice to meet you.";
+ mes "Some very nice people, "+$@ParentOne$+" and "+$@ParentTwo$+", have asked to adopt you.";
+ next;
+ if(sex!=0) set $@GenderBaby$,"boy";
+ if(sex==0) set $@GenderBaby$,"girl";
+
+ mes "[Inanna]";
+ mes "Now can you be a good "+$@GenderBaby$+" and go with these nice people?";
+ next;
+ menu "Yes, me would luv too",A_BabyYes,"NOOOOO!!!",-;
+ mes "[Inanna]";
+ mes "Please calm down.";
+ mes "I will try and find better parents for you next time.";
+ callfunc "AdoptReset","the novice didnt want to be adopted";
+ close;
+A_BabyYes:
+ mes "[Inanna]";
+ mes "Awwww, so cute, good to hear it.";
+ mes "Now lets see here.";
+ next;
+ mes "[Inanna]";
+ mes "I need to do a check on your level to prove you are a novice, stand still.";
+ next;
+ if (BaseLevel == 1 && JobLevel == 1) goto A_Ready;
+ mes "[Inanna]";
+ mes "Sorry but you are higher than level one, and cause of this you are a true novice.";
+ callfunc "AdoptReset","the person that would be adopted, is over level 1";
+ close;
+A_Ready:
+ mes "[Inanna]";
+ mes "You are just as sweet an inocent as the day our lord made you.";
+ next;
+ mes "[Inanna]";
+ mes "I have no objections to you being adopted.";
+ mes "Before you can be adopted I will need to see your parents, and you, one last time.";
+ set $@FinalQuestion,1;
+ areaannounce "prt_church.gat",0,0,350,350,"Can I please see all people involved with this adoption please",0;
+ deltimer "timeadopt";
+ addtimer 300000,"timeadopt";
+ close;
+A_AlreadyAdopted:
+ mes "[Inanna]";
+ mes "Oh you are already adopted, so you cant be adopted again.";
+ callfunc "AdoptReset","the person that would be adopted has already been adopted before";
+ close;
+A_CantBeAdopted:
+ mes "[Inanna]";
+ mes "Sorry, but your job does not allow adoption.";
+ callfunc "AdoptReset","the person that would be adopted has a job that can't be adopted";
+ close;
+A_ParentOneEnd:
+ if (@regged>1) goto AlreadyReged;
+ if ($@ParentOne$==$@ParentTwo$) goto A_SameFail;
+ mes "[Inanna]";
+ mes "Nice to talk to you again "+$@ParentOne$;
+ mes "This is you last chance to back out";
+ next;
+ mes "[Inanna]";
+ mes "You can only ever adopt once, so if you adopt "+$@Baby$+", you can never adopt any one else ever";
+ next;
+ mes "[Inanna]";
+ mes "Are you sure you want to proceed";
+ next;
+ menu "Yes",A_FinalYesP,"No",-;
+ mes "[Inanna]";
+ mes "I cannot believe you would come this far to say no!";
+ mes "Are you sure you want to stop now?";
+ next;
+ menu "Yes, I dont want to adopt",-,"No, I made a mistake",A_ParentOneEnd;
+A_Failend:
+ mes "[Inanna]";
+ mes "Well if you are sure";
+ callfunc "AdoptReset","a parent or the novice pulled out";
+ close;
+A_FinalYesP:
+ mes "[Inanna]";
+ mes "OK everything is ready to start this adoption";
+ mes "I will announce to everyone when it is complete";
+ set @regged,1;
+ set $@checkall,$@checkall+1;
+ if ($@checkall==3) goto THEEND;
+ close;
+A_ParentTwoEnd:
+ if (@regged>1) goto AlreadyReged;
+ mes "[Inanna]";
+ mes "Nice to talk to you again "+$@ParentTwo$;
+ mes "This is you last chance to back out";
+ next;
+ mes "[Inanna]";
+ mes "You can only ever adopt once, so if you adopt "+$@Baby$+", you can never adopt any one else ever";
+ next;
+ mes "[Inanna]";
+ mes "Are you sure you want to proceed";
+ next;
+ menu "Yes",A_FinalYesP,"No",-;
+ mes "[Inanna]";
+ mes "I cannot believe you would come this far to say no!";
+ mes "Are you sure you want to stop now?";
+ next;
+ menu "Yes, I dont want to adopt",A_Failend,"No, I made a mistake",A_ParentTwoEnd;
+A_AlreadyReged:
+ mes "[Inanna]";
+ mes "Please wait for the others to talk to me";
+ close;
+A_BabyEnd:
+ if (@regged>1) goto AlreadyReged;
+ mes "[Inanna]";
+ mes "Nice to talk to you again "+$@Baby$;
+ mes "This is you last chance to back out";
+ next;
+ mes "[Inanna]";
+ mes "You can only ever be adopted once, so if you are adopted by "+$@ParentOne$+" and "+$@ParentTwo$+", you can never be adopted again";
+ next;
+ mes "[Inanna]";
+ mes "Are you sure you want to proceed";
+ next;
+ menu "Yes",A_FinalYesB,"No",-;
+ mes "[Inanna]";
+ mes "I cannot believe you would come this far to say no!";
+ mes "Are you sure you want to stop now?";
+ next;
+ menu "Yes, I dont want to adopt",A_Failend,"No, I made a mistake",A_BabyEnd;
+A_FinalYesB:
+ mes "[Inanna]";
+ mes "OK everything is ready to start this adoption";
+ mes "I will announce to everyone when it is complete";
+ set @regged,1;
+ set $@checkall,$@checkall+1;
+ if ($@checkall==3) goto THEEND;
+ close;
+A_SameFail:
+ mes "[Inanna]";
+ mes "Sorry, it seems you have registerd as both parents, this isnt allowed";
+ callfunc "AdoptReset","both parents are the same person";
+ close;
+
+A_GetSkill:
+ emotion 20;
+ mes "[Inanna]";
+ mes "You can't see your baby often?.. I'll try to teach you one skil... Where's my skills manual?";
+ next;
+ mes "[Oliver]";
+ mes "Hey, Inanna! This is my job. Pass them to me!";
+ close;
+A_Already:
+ mes "[Inanna]";
+ emotion 21;
+ mes "How is your baby now?";
+ close;
+A_YouBaby:
+ mes "[Inanna]";
+ emotion 30;
+ mes "Tell your father he's a good father!";
+ if (getskilllv(408)<=0 || getskilllv(409)<=0) mes "You should talk to our Teacher.";
+ close;
+
+THEEND:
+ logmes "Adoption: "+$@Baby$+" adopted by "+$@ParentOne$+" and "+$@ParentTwo$+".";
+ adopt $@ParentOne$,$@ParentTwo$,$@Baby$;
+ announce $@ParentOne$+" and "+$@ParentTwo$+" has just adopted a new baby "+$@GenderBaby$+", called "+$@Baby$,5;
+ deltimer "timeadopt";
+ set $@AdoptionActive, 0;
+ set $@ParentOne$, null;
+ set $@ParentTwo$, null;
+ set $@Baby$, null;
+ set $@GenderBaby$, null;
+ set $@FinalQuestion, 0;
+ set $@CheckAll, 0;
+ close;
+ end;
+}
+
+prt_church.gat,165,175,0 script timeadopt -1,{
+ callfunc "AdoptReset","too much time has passed between steps";
+ end;
+}
+function script AdoptReset {
+ deltimer "timeadopt";
+ set $@AdoptionActive, 0;
+ set $@ParentOne$, null;
+ set $@ParentTwo$, null;
+ set $@Baby$, null;
+ set $@GenderBaby$, null;
+ set $@FinalQuestion, 0;
+ set $@CheckAll, 0;
+ areaannounce "prt_church.gat",0,0,350,350,"The adoption has been canceled because "+getarg(0),0;
+ return;
+}
+
+prt_church.gat,165,166,6 script Teacher 97,{
+ mes "[Mario]";
+ if (Upper==2 && (getskilllv(408)<=0 || getskilllv(409)<=0)) goto L_Teach;
+ if (Upper==2) mes "Hello, baby! How are you?";
+ if (Upper!=2) mes "How are you?";
+ next;
+ menu "Great!",-,"Fine.",-,"So-so...",-,"Shoot me, please.",-;
+ mes "[Mario]";
+ mes "So nice!";
+ emotion rand(19,21);
+ close;
+
+L_Teach:
+ skill 408,1,0;
+ skill 409,1,0;
+ mes "Ta-da! Now you know 2 quite useful skills!";
+ mes "1. Call your Parents (when you're in a danger).";
+ mes "2. Protect your parents' EXP with yor love!";
+ emotion 41;
+ next;
+ mes "[Mario]";
+ mes "On seeing a baby tell them to visit me.";
+ next;
+
+L_Cancel:
+ mes "[Mario]";
+ mes "Bye bye!";
+ close;
+}
diff --git a/npc/custom/airplane.txt b/npc/custom/airplane.txt
new file mode 100644
index 000000000..854ba98ee
--- /dev/null
+++ b/npc/custom/airplane.txt
@@ -0,0 +1,436 @@
+//===== eAthena Script =======================================
+//= elRO Airship
+//===== By: ==================================================
+//= Edited And removed irrelevent comments by eAthena Dev Team
+//= Draike\Bluto\Hephaestus
+//===== Current Version: =====================================
+//= 2.0 eAthena Release
+//===== Compatible With: =====================================
+//= eAthena SVN 02/05/2005 +
+//===== Description: =========================================
+//= It's the elRO airship. XD
+//===== Additional Comments: =================================
+//= ALWAYS HAVE AT LEAST TWELVE (12) LOCATIONS AS THE MINIMUM. This is unless you modify to OnMinutes and change the schedule around.
+//= If you have "airplane.gat,103,72,0 warp airs02a 1,1,airplane.gat,102,200" as a warp, remove it. Where it's supposed to go, I have no clue.
+//============================================================
+payon.gat,153,43,5 script itinsetter -1,{
+
+//This is just OnInit stuff to set the hourly intinerary.
+OnInit:
+deletearray $locationsname$[0],500;
+deletearray $locationsmap$[0],500;
+deletearray $locationsx[0],500;
+deletearray $locationsy[0],500;
+deletearray $alreadygoneto[0],500;
+setarray $locationsname$[0],"Airport";
+setarray $locationsname$[1],"Prontera";
+setarray $locationsname$[2],"Payon";
+setarray $locationsname$[3],"Aldebaran";
+setarray $locationsname$[4],"Alberta";
+setarray $locationsname$[5],"Geffen";
+setarray $locationsname$[6],"Morocc";
+setarray $locationsname$[7],"Glast Heim";
+setarray $locationsname$[8],"Umbala";
+setarray $locationsname$[9],"Comodo";
+setarray $locationsname$[10],"Amatsu";
+setarray $locationsname$[11],"Niflheim";
+setarray $locationsname$[12],"Lutie";
+setarray $locationsname$[13],"Louyang";
+setarray $locationsname$[14],"Gonryun";
+setarray $locationsname$[15],"Yuno";
+setarray $locationsname$[16],"Ant Hell";
+setarray $locationsname$[17],"Jawaii";
+setarray $locationsname$[18],"Orc Village";
+setarray $locationsname$[19],"Mjolnir Coal Mines";
+setarray $locationsname$[20],"Gefenia Ruins";
+setarray $locationsname$[21],"Ayothaya";
+setarray $locationsname$[22],"Lighthalzen";
+setarray $locationsname$[23],"Juperos";
+setarray $locationsmap$[0],"airport.gat";
+setarray $locationsmap$[1],"prt_fild08.gat";
+setarray $locationsmap$[2],"pay_fild08.gat";
+setarray $locationsmap$[3],"mjolnir_12.gat";
+setarray $locationsmap$[4],"pay_fild03.gat";
+setarray $locationsmap$[5],"gef_fild00.gat";
+setarray $locationsmap$[6],"moc_fild10.gat";
+setarray $locationsmap$[7],"glast_01.gat";
+setarray $locationsmap$[8],"umbala.gat";
+setarray $locationsmap$[9],"comodo.gat";
+setarray $locationsmap$[10],"amatsu.gat";
+setarray $locationsmap$[11],"niflheim.gat";
+setarray $locationsmap$[12],"xmas.gat";
+setarray $locationsmap$[13],"louyang.gat";
+setarray $locationsmap$[14],"gonryun.gat";
+setarray $locationsmap$[15],"yuno.gat";
+setarray $locationsmap$[16],"moc_fild04.gat";
+setarray $locationsmap$[17],"jawaii.gat";
+setarray $locationsmap$[18],"gef_fild10.gat";
+setarray $locationsmap$[19],"mjolnir_02.gat";
+setarray $locationsmap$[20],"gefenia01.gat";
+setarray $locationsmap$[21],"ayothaya.gat";
+setarray $locationsmap$[22],"lighthalzen.gat";
+setarray $locationsmap$[23],"jupe_gate.gat";
+setarray $locationsx[0],148;
+setarray $locationsx[1],206;
+setarray $locationsx[2],159;
+setarray $locationsx[3],62;
+setarray $locationsx[4],194;
+setarray $locationsx[5],50;
+setarray $locationsx[6],163;
+setarray $locationsx[7],196;
+setarray $locationsx[8],187;
+setarray $locationsx[9],203;
+setarray $locationsx[10],115;
+setarray $locationsx[11],132;
+setarray $locationsx[12],232;
+setarray $locationsx[13],36;
+setarray $locationsx[14],82;
+setarray $locationsx[15],58;
+setarray $locationsx[16],209;
+setarray $locationsx[17],248;
+setarray $locationsx[18],158;
+setarray $locationsx[19],76;
+setarray $locationsx[20],98;
+setarray $locationsx[21],183;
+setarray $locationsx[22],99;
+setarray $locationsx[23],46;
+setarray $locationsy[0],45;
+setarray $locationsy[1],280;
+setarray $locationsy[2],92;
+setarray $locationsy[3],381;
+setarray $locationsy[4],182;
+setarray $locationsy[5],365;
+setarray $locationsy[6],172;
+setarray $locationsy[7],327;
+setarray $locationsy[8],98;
+setarray $locationsy[9],76;
+setarray $locationsy[10],79;
+setarray $locationsy[11],241;
+setarray $locationsy[12],308;
+setarray $locationsy[13],279;
+setarray $locationsy[14],96;
+setarray $locationsy[15],194;
+setarray $locationsy[16],326;
+setarray $locationsy[17],175;
+setarray $locationsy[18],95;
+setarray $locationsy[19],363;
+setarray $locationsy[20],21;
+setarray $locationsy[21],104;
+setarray $locationsy[22],240;
+setarray $locationsy[23],19;
+goto resetgoneto;
+end;
+
+setrandomitin:
+set $@settervariable,$@settervariable + 1;
+setarray $locationn[$@settervariable],rand(0,getarraysize($locationsname$) - 1);
+if($alreadygoneto[$locationn[$@settervariable]]==1)set $@settervariable,$@settervariable - 1;
+if($alreadygoneto[$locationn[$@settervariable]]==1)goto setrandomitin;
+setarray $alreadygoneto[$locationn[$@settervariable]], 1;
+if($@settervariable<12)goto setrandomitin;
+end;
+
+resetgoneto:
+deletearray $alreadygoneto[0], 500;
+set $@currenttime, 0;
+goto setrandomitin;
+
+OnMinute00:
+set $@currenttime, 1;
+callfunc "F_Itinreset",12,1,2;
+
+OnMinute03:
+set $destination,250;
+end;
+
+OnMinute05:
+set $@currenttime, 2;
+callfunc "F_Itinreset",1,2,3;
+
+OnMinute08:
+set $destination,250;
+end;
+
+OnMinute10:
+set $@currenttime, 3;
+callfunc "F_Itinreset",2,3,4;
+
+OnMinute13:
+set $destination,250;
+end;
+
+OnMinute15:
+set $@currenttime, 4;
+callfunc "F_Itinreset",3,4,5;
+
+OnMinute18:
+set $destination,250;
+end;
+
+OnMinute20:
+set $@currenttime, 5;
+callfunc "F_Itinreset",4,5,6;
+
+OnMinute23:
+set $destination,250;
+end;
+
+OnMinute25:
+set $@currenttime, 6;
+callfunc "F_Itinreset",5,6,7;
+
+OnMinute28:
+set $destination,250;
+end;
+
+OnMinute30:
+set $@currenttime, 7;
+callfunc "F_Itinreset",6,7,8;
+
+OnMinute33:
+set $destination,250;
+end;
+
+OnMinute35:
+set $@currenttime, 8;
+callfunc "F_Itinreset",7,8,9;
+
+OnMinute38:
+set $destination,250;
+end;
+
+OnMinute40:
+set $@currenttime, 9;
+callfunc "F_Itinreset",8,9,10;
+
+OnMinute43:
+set $destination,250;
+end;
+
+OnMinute45:
+set $@currenttime, 10;
+callfunc "F_Itinreset",9,10,11;
+
+OnMinute48:
+set $destination,250;
+end;
+
+OnMinute50:
+set $@currenttime, 11;
+callfunc "F_Itinreset",10,11,12;
+
+OnMinute53:
+set $destination,250;
+end;
+
+OnMinute55:
+set $@currenttime, 12;
+callfunc "F_Itinreset",11,12,1;
+
+OnMinute58:
+set $destination,250;
+end;
+}
+function script F_Porter {
+ if($destination==getarg(0))goto Board;
+ if($destination!=getarg(0))goto Notime;
+
+Board:
+ mes "^FF0000[Porter]^000000";
+ mes "The plane is currently ported. Would you like to board?";
+ menu "Yes.",L_Yes,"No.",L_Nope,"View Hourly Itinerary.",Itin;
+
+L_Yes:
+ if($destination!=getarg(0))goto Notime;
+ warp "airplane.gat", 105, 72;
+ specialeffect2 501;
+L_Nope:
+ mes "^FF0000[Porter]^000000";
+ mes "Have a good day. Thank you for traveling with Airship.";
+ close;
+
+Notime:
+ mes "^FF0000[Porter]^000000";
+ if(sex==0) mes "Sorry, ma'am, but the plane currently isn't ported. However, you can view the airplane's hourly itinerary.";
+ if(sex==1) mes "Sorry, sir, but the plane currently isn't ported. However, you can view the airplane's hourly itinerary.";
+ menu "Yes, please.",Itin,"No thanks.",L_Nope;
+ close;
+ end;
+
+Itin:
+next;
+mes "^FF0000[Porter]^000000";
+callfunc "F_Itin";
+}
+airport.gat,153,43,5 script Airport Porter 774,{
+callfunc "F_Porter",0;
+}
+prt_fild08.gat,206,279,5 script Porter 774,{
+callfunc "F_Porter",1;
+}
+gef_fild00.gat,50,364,5 script Porter 774,{
+callfunc "F_Porter",5;
+}
+moc_fild10.gat,163,173,5 script Porter 774,{
+callfunc "F_Porter",6;
+}
+mjolnir_12.gat,61,380,5 script Porter 774,{
+callfunc "F_Porter",3;
+}
+pay_fild08.gat,159,91,5 script Porter 774,{
+callfunc "F_Porter",2;
+}
+pay_fild03.gat,194,181,5 script Porter 774,{
+callfunc "F_Porter",4;
+}
+glast_01.gat,196,326,1 script Porter 774,{
+callfunc "F_Porter",7;
+}
+umbala.gat,188,98,3 script Porter 774,{
+callfunc "F_Porter",8;
+}
+comodo.gat,203,75,8 script Porter 774,{
+callfunc "F_Porter",9;
+}
+amatsu.gat,115,78,8 script Porter 774,{
+callfunc "F_Porter",10;
+}
+niflheim.gat,132,242,5 script Porter 774,{
+callfunc "F_Porter",11;
+}
+xmas.gat,232,309,5 script Porter 774,{
+callfunc "F_Porter",12;
+}
+louyang.gat,35,279,8 script Porter 774,{
+callfunc "F_Porter",13;
+}
+gonryun.gat,82,95,7 script Porter 774,{
+callfunc "F_Porter",14;
+}
+yuno.gat,58,195,4 script Porter 774,{
+callfunc "F_Porter",15;
+}
+moc_fild04.gat,210,326,2 script Porter 774,{
+callfunc "F_Porter",16;
+}
+jawaii.gat,247,174,7 script Porter 774,{
+callfunc "F_Porter",17;
+}
+gef_fild10.gat,159,95,2 script Porter 774,{
+callfunc "F_Porter",18;
+}
+mjolnir_02.gat,76,364,5 script Porter 774,{
+callfunc "F_Porter",19;
+}
+gefenia01.gat,97,22,6 script Porter 774,{
+callfunc "F_Porter",20;
+}
+ayothaya.gat,182,105,5 script Porter 774,{
+callfunc "F_Porter",21;
+}
+lighthalzen.gat,99,241,4 script Porter 774,{
+callfunc "F_Porter",22;
+}
+jupe_gate.gat,46,18,7 script Porter 774,{
+callfunc "F_Porter",23;
+}
+airport.gat,141,43,5 script Itinerary Schedule 837,{
+mes "^FF0000[Itinerary]^000000";
+callfunc "F_Itin";
+}
+airplane.gat,102,68,5 script Docker 852,{
+ if($destination == 250) goto Nowhere;
+ mes "^FF0000[Airplane Attendant]^000000";
+ if($destination == 250)goto Notime;
+ set @dockky, $destination;
+ if($destination != 250)mes "We are currently docked at "+$locationsname$[$destination]+". Would you like to exit?";
+ menu "Yes.",Lyes,"No.",Lnope;
+
+Lyes:
+ if($destination == 250)goto Notime;
+ if($destination != @dockky)goto Notime;
+ warp $locationsmap$[$destination], $locationsx[$destination], $locationsy[$destination];
+ specialeffect2 501;
+
+Lnope:
+ next;
+ mes "^FF0000[Airplane Attendant]^000000";
+ mes "Have a good day. Thank you for traveling with us.";
+ close;
+
+Notime:
+ mes "^FF0000[Airplane Attendant]^000000";
+ if(sex==0) mes "Sorry, ma'am, but the plane currently isn't docked. Please wait.";
+ if(sex==1) mes "Sorry, sir, but the plane currently isn't docked. Please wait.";
+ close;
+
+Nowhere:
+ mes "^FF0000[Airplane Attendant]^000000";
+ mes "We're currently in air. Please wait until the pilot has announced that we have safely landed.";
+ close;
+}
+function script F_Itin {
+//This is the itinerary's function. It should work well enough.
+if($@currenttime==0)mes "Try again later. A recent server reboot or rehash has messed the itinerary up for a bit.";
+if($@currenttime==0)close;
+if($@currenttime==0)end;
+set @tempo, 0;
+set @tempo, $@currenttime - 1;
+goto seta;
+close;
+
+seta:
+set @tempo, @tempo + 1;
+set @time, gettime(3);
+set @minutes, 5 * @tempo - 5;
+set @minutess, 5 * @tempo - 2;
+if(@minutes<10)set @minutes$, "0" + @minutes;
+if(@minutes>9)set @minutes$, @minutes;
+if(@minutess<10)set @minutess$, "0" + @minutess;
+if(@minutess>9)set @minutess$, @minutess;
+if(@time<12)set @time$,@time;
+if(@time==12)set @time$,12;
+if(@time>12)set @time$,@time - 12;
+if(@time<12)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. - "+"^FF0000"+$locationsname$[$locationn[@tempo]]+"^000000";
+if(@time==12)mes @time$+":"+ @minutes$ + " P.M. - "+@time$+ ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
+if(@time>12 && time<24)mes @time$ +":"+ @minutes$ + " P.M. - "+@time$ + ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
+if(@time==24)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
+if(@tempo<12)goto seta;
+set @tempo, 0;
+goto setb;
+
+setb:
+if($@currenttime - 1==@tempo)goto setc;
+set @tempo, @tempo + 1;
+set @time, gettime(3) + 1;
+set @minutes, 5 * @tempo - 5;
+set @minutess, 5 * @tempo - 2;
+if(@minutes<10)set @minutes$, "0" + @minutes;
+if(@minutes>9)set @minutes$, @minutes;
+if(@minutess<10)set @minutess$, "0" + @minutess;
+if(@minutess>9)set @minutess$, @minutess;
+if(@time<12)set @time$,@time;
+if(@time==12)set @time$,12;
+if(@time>12)set @time$,@time - 12;
+if(@time<12)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. - "+"^FF0000"+$locationsname$[$locationn[@tempo]]+"^000000";
+if(@time==12)mes @time$+":"+ @minutes$ + " P.M. - "+@time$+ ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
+if(@time>12 && time<24)mes @time$ +":"+ @minutes$ + " P.M. - "+@time$+ ":"+ @minutess$ + " P.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
+if(@time==24)mes @time$+":"+ @minutes$ + " A.M. - "+@time$+ ":"+ @minutess$ + " A.M. -"+"^FF0000 "+$locationsname$[$locationn[@tempo]]+"^000000";
+goto setb;
+
+setc:
+close;
+end;
+}
+function script F_Itinreset {
+setarray $alreadygoneto[$locationn[getarg(0)]], 0;
+goto sest;
+
+sest:
+setarray $locationn[getarg(0)],rand(0,getarraysize($locationsname$) - 1);
+if($alreadygoneto[$locationn[getarg(0)]]==1)goto sest;
+setarray $alreadygoneto[$locationn[getarg(0)]], 1;
+set $destination,$locationn[$@currenttime];
+announce "Pilot: The plane has arrived at "+$locationsname$[$locationn[getarg(1)]]+". Departure to "+ $locationsname$[$locationn[getarg(2)]] + " is in 3 minutes.",16;
+end;
+} \ No newline at end of file
diff --git a/npc/custom/banks/bank.txt b/npc/custom/banks/bank.txt
new file mode 100644
index 000000000..67889a139
--- /dev/null
+++ b/npc/custom/banks/bank.txt
@@ -0,0 +1,126 @@
+//===== eAthena Script =======================================
+//= Banker Script
+//===== By: ==================================================
+//= Syrus22 (1.0)
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= Any eAthena version with Account variables.
+//===== Description: =========================================
+//= An account wide Banker to store Zeny
+//===== Additional Comments: =================================
+//= Syrus22 - There's an optional transaction fee at the top of
+//= the script. To use it simply change the first set command
+//= to set the cost variable to whatever you want the fee to be.
+//============================================================
+prontera.gat,132,217,5 script Banker 109,{
+set @cost,500;
+mes "[Banker]";
+mes "Welcome to the First Bank of Prontera. How can I help you today?";
+next;
+menu "I'd like to make a deposit.",Ldeposit,"I'd like to make a withdrawl.",Lwithdrawl,"What's my current balance?",Lbalance,"Cancel",Lcancel;
+
+Ldeposit:
+ mes "[Banker]";
+ mes "Very well... How much would you like to deposit? The maximum you can deposit at once is 999,999 Zeny.";
+ next;
+ if (@cost > 0) goto Ldepocost;
+ goto Ldepocont;
+
+ Ldepocost:
+ mes "[Banker]";
+ mes "Oh and don't forget there is a " + @cost + " Zeny charge on all transactions.";
+ next;
+ goto Ldepocont;
+
+Ldepocont:
+ input @deposit;
+ if (@deposit < 1) goto Lrealamount;
+ if (@deposit > Zeny) goto Lneedzeny;
+ if (@deposit > (Zeny - @cost)) goto Lneedzeny2;
+ set Zeny,Zeny - @deposit;
+ set Zeny,Zeny - @cost;
+ set #bankstorage,#bankstorage + @deposit;
+ mes "[Banker]";
+ mes "Thank you very much... Your zeny is in good hands.";
+ close;
+
+Lwithdrawl:
+ mes "[Banker]";
+ mes "Very well... How much would you like to withdraw? The maximum you can withdraw at one time is 999,999 Zeny";
+ next;
+ if (@cost > 0) goto Lwithcost;
+ goto Lwithcont;
+
+ Lwithcost:
+ mes "[Banker]";
+ mes "Oh and don't forget there is a " + @cost + " Zeny charge on all transactions.";
+ next;
+ goto Lwithcont;
+
+Lwithcont:
+ input @withdrawl;
+ if (@withdrawl < 1) goto Lrealamount;
+ if (@withdrawl > #bankstorage) goto Lneedzeny3;
+ if ((@cost > Zeny) && ((Zeny + @withdrawl) > @cost)) goto Lcostask;
+ if (@cost > Zeny) goto Lneedzeny2;
+ goto Lwithcont2;
+
+ Lcostask:
+ mes "[Banker]";
+ mes "You don't have the Zeny for the transaction fee right now. Would you like me to take the fee directly from your withdrawl?";
+ next;
+ menu "Yes please.",Lwithtake,"No thank you.",Lcancel;
+
+ Lwithtake:
+ mes "[Banker]";
+ mes "Ok then.";
+ set @withdrawl,@withdrawl - @cost;
+ set #bankstorage,#bankstorage - @cost;
+ set @cost,0;
+ next;
+ goto Lwithcont2;
+
+Lwithcont2:
+ set Zeny,Zeny - @cost;
+ set Zeny,Zeny + @withdrawl;
+ set #bankstorage,#bankstorage - @withdrawl;
+ mes "[Banker]";
+ mes "There's your Zeny. Have a good day.";
+ close;
+
+Lbalance:
+ mes "[Banker]";
+ mes "Hmmmm lemme check the paper work.";
+ next;
+ mes "*Rustle, Rustle*";
+ next;
+ mes "[Banker]";
+ mes "You currently have " + #bankstorage + " Zeny in your account.";
+ close;
+
+Lrealamount:
+ mes "[Banker]";
+ mes "Don't play jokes with me please. Next time ask for a real amount.";
+ close;
+
+Lneedzeny:
+ mes "[Banker]";
+ mes "You don't have enough Zeny to make that deposit.";
+ close;
+
+Lneedzeny2:
+ mes "[Banker]";
+ mes "You don't have enough Zeny to cover the transaction fee.";
+ close;
+
+Lneedzeny3:
+ mes "[Banker]";
+ mes "You don't have enough Zeny in your account.";
+ close;
+
+Lcancel:
+ mes "[Banker]";
+ mes "Very well... come again soon.";
+ close;
+} \ No newline at end of file
diff --git a/npc/custom/banks/kafra_bank.txt b/npc/custom/banks/kafra_bank.txt
new file mode 100644
index 000000000..941501e88
--- /dev/null
+++ b/npc/custom/banks/kafra_bank.txt
@@ -0,0 +1,116 @@
+//===== eAthena Script =======================================
+//= The 2nd Bank of Prontera ( with daily 0.01% income! )
+//===== By: ==================================================
+//= Lupus (1.0)
+//===== Current Version: =====================================
+//= 1.2
+//===== Compatible With: =====================================
+//= eAthena 1.x
+//===== Description: =========================================
+//= A bank which has an interest %
+//===== Additional Comments: =================================
+// Look for this formula and setup your Bank daily % interest
+// #kafrabank/1000 = 0.1% of interest per day
+// #kafrabank/100 = 1% of interest per day
+// #kafrabank/10 = 10% of interest per day
+//
+// 1.1 Added log of bank operation -> logmes "some info";
+// 1.2 Set max income to 100,000z. It would help to avoid
+// zeny exploits when you change DATE at your server
+//============================================================
+
+prontera.gat,131,190,1 script Bank Clerk::bankg 833,{
+ mes"[Maniss]";
+ mes strcharinfo(0)+", welcome to the 2nd Bank of Prontera!";
+
+ set @kb_int,(gettime(6)*31)+gettime(5); //today's number
+ set @income,0;
+//calculate %
+ if (#kafrabank<=0 || #kb_int>=@kb_int) goto L_NoIncomeToday;
+ set @income,(#kafrabank/1000)*(@kb_int-#kb_int); //@income == % of the sum
+//max income constant:
+ if (@income>100000) set @income,100000;
+L_NoIncomeToday:
+ set #kb_int,@kb_int; //reset days timer
+
+ if(#kafrabank==0) mes "We could open you an account.";
+ if(@income>0) mes "Today's income: ^135445" + @income + "^000000 zeny.";
+ set #kafrabank,#kafrabank+@income;
+ if(#kafrabank>0) mes "Your account: ^135445" + #kafrabank + "^000000 zeny.";
+ mes "What would you like?";
+ next;
+ if(#kafrabank==0) menu "-Open an account",-,"-Quit",B_EXIT2;
+ if(#kafrabank>0) menu "-Deposit money",-,"-Withdraw money",M_WITHDRAW,"-Quit",B_EXIT2;
+
+ mes"[Maniss]";
+ mes "Please, tell me how much zeny you would like to deposit.";
+ next;
+ input @kafrabank;
+
+ if(@kafrabank<1000) goto L_LESS_1000;
+ if(@kafrabank>10000000) goto L_TOO_BIG_AMOUNT;
+ if(@kafrabank>zeny) goto L_NOT_ENOUGH;
+ set zeny,zeny-@kafrabank;
+ set #kafrabank,#kafrabank+@kafrabank;
+ mes"[Maniss]";
+ mes "You've made a deposit of ^135445" + @kafrabank + "z^000000.";
+//we log these zeny operations into the log db
+ logmes "Bank %: " + @income +"z, Deposit: "+ @kafrabank +"z, Final: "+ #kafrabank +"z";
+ goto B_EXIT;
+
+M_WITHDRAW:
+ if(#kafrabank==0) goto L_ZERO_ACCOUNT;
+ mes"[Maniss]";
+ mes "Your account: ^135445" + #kafrabank + "^000000 zeny.";
+ mes "How much zeny would you like to withdraw?";
+ next;
+ input @kafrabank;
+
+ if(@kafrabank<1) goto B_EXIT2;
+ if(@kafrabank>10000000) goto L_TOO_BIG_AMOUNT;
+ if(@kafrabank>#kafrabank) goto L_NOT_ENOUGH;
+ set #kafrabank,#kafrabank-@kafrabank;
+ set zeny,zeny+@kafrabank;
+ mes"[Maniss]";
+ mes "Here is your ^135445" + @kafrabank + "z^000000, put your sign here...";
+//we log these zeny operations into the log db
+ logmes "Bank %: " + @income +"z, Withdraw: "+ @kafrabank +"z, Final: "+ #kafrabank +"z";
+ goto B_EXIT;
+
+L_NOT_ENOUGH:
+ mes"[Maniss]";
+ mes "You don't have enough zeny for this operation.";
+ next;
+ goto B_EXIT2;
+
+L_ZERO_ACCOUNT:
+ mes"[Maniss]";
+ mes "You don't have any zeny on your account!";
+ next;
+ goto B_EXIT2;
+
+L_TOO_BIG_AMOUNT:
+ mes"[Maniss]";
+ mes "Sorry. The maximum deposit you can make on a time is 10,000,000 zeny.";
+ next;
+ goto B_EXIT2;
+
+L_LESS_1000:
+ mes"[Maniss]";
+ mes "We're sorry, the minimum amount of zeny you can deposit is 1,000 zeny.";
+ next;
+ goto B_EXIT2;
+
+B_EXIT:
+ mes "Very well... Come again soon!";
+ next;
+
+B_EXIT2:
+ mes"[Maniss]";
+ mes "Thank you for using our Bank Service. We hope to see you again soon.";
+ close;
+}
+
+geffen.gat,125,73,3 duplicate(bankg) Bank Clerk#2 833
+izlude.gat,145,107,1 duplicate(bankg) Bank Clerk#3 833
+morocc.gat,147,84,7 duplicate(bankg) Bank Clerk#4 833
diff --git a/npc/custom/blackjack.txt b/npc/custom/blackjack.txt
new file mode 100644
index 000000000..0f8aa4e2a
--- /dev/null
+++ b/npc/custom/blackjack.txt
@@ -0,0 +1,349 @@
+//===== eAthena Script =======================================
+//= Black Jack
+//===== By: ==================================================
+//= kobra_k88
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//=
+//===== Description: =========================================
+//= Black Jack card game. Gameplay based off standard casino
+//= black jack rules. Dealer must have at least 17 to stay and will
+//= automatically stay at 17 and up. Player must have at least
+//= 13 to stay. Aces counted as 11 or 1. Option to "Double Down".
+//= Currently does not allow for "insurance", or "splitting"
+//= of pairs.
+//===== Additional Comments: =================================
+//=
+//============================================================
+
+
+cmd_in02.gat,188,89,1 script Black Jack Dealer 57,{
+
+ mes "[Dealer]";
+ mes "Hello there! Would you like to play a game of Black Jack?";
+ M_Menu:
+ next;
+ menu "What are the rules?",M_0, "I want to play.",L_Play, "No thanks.",M_End;
+
+ M_0:
+ mes "[Dealer]";
+ mes "What would you like to know?";
+ sM_Menu0:
+ next;
+ menu "The basics.",sM_0a, "Winning and loosing.",sM_0b, "'Double Down'.",sM_0c,
+ "Ace value.",sM_0d, "Nothing.",M_Menu;
+
+ sM_0a:
+ mes "[Dealer]";
+ mes "Black Jack is a card game in which the goal is to get 21, or as";
+ mes "close to 21 points as possible, without going over 21.";
+ next;
+ mes "[Dealer]";
+ mes "Before the game starts, the player must make a bet. Once the bet";
+ mes "has been made, both the dealer and the player are dealt 2 cards";
+ mes "each. Depending on what cards you have, you can choose to ^5533FF'stay'^000000,";
+ mes "or you can choose to ^5533FF'pull'^000000.";
+ next;
+ mes "[Dealer]";
+ mes "When you choose to 'stay', you are telling the dealer that you don't";
+ mes "need anymore cards. This allows the dealer to pull if he/she";
+ mes "wants to. In order to stay, you must have ^FF3355at least 13 points^000000. The";
+ mes "dealer can only stay when he/she has^FF3355 17 points or more^000000.";
+ next;
+ mes "[Dealer]";
+ mes "When you choose to 'pull', you are telling the dealer that you want";
+ mes "another card. By pulling more cards you can increase your point";
+ mes "total. As long has you have ^FF3355less than 21^000000 points you can pull a";
+ mes "card from the deck.";
+ goto sM_Menu0;
+ sM_0b:
+ mes "[Dealer]";
+ mes "There are 3 ways to win and loose at Black Jack.";
+ next;
+ mes "[Dealer]";
+ mes "1.) At the end of a Black Jack round, if you have more points";
+ mes "than the dealer you will win the round. Conversely if you have";
+ mes "less points than the dealer you will loose.";
+ next;
+ mes "[Dealer]";
+ mes "2.) If you pull a card that makes your point total go over 21 you";
+ mes "will automatically loose the round. This is called a ^5533FF'bust'^000000. If";
+ mes "the dealer busts then you will win the round.";
+ next;
+ mes "[Dealer]";
+ mes "3.) If you have a point total of 21 with the first 2 cards, you";
+ mes "will automatically win the round. This is called a ^5533FF'Black Jack'^000000";
+ mes "and happens when you get an 'Ace' and a '10 valued' card. If the";
+ mes "dealer gets a Black Jack he/she will automatically win the round.";
+ next;
+ mes "[Dealer]";
+ mes "4.) Besides winning and loosing, you can tie with the dealer. If";
+ mes "both you and the dealer have the same point total at the end of a";
+ mes "round, this will result in a tie with no winner and no loss or gain";
+ mes "in money.";
+ next;
+ mes "[Dealer]";
+ mes "This is called a ^5533FF'push'^000000 with the dealer. This also";
+ mes "applies to both you and the dealer having Black Jack at the same";
+ mes "time.";
+ goto sM_Menu0;
+ sM_0c:
+ mes "[Dealer]";
+ mes "The 'Double Down' option allows you to double your current bet,";
+ mes "but with the drawback that you will only be able to pull one";
+ mes "additional card. This option is only available at the beggining of";
+ mes "each round.";
+ next;
+ mes "[Dealer]";
+ mes "An example of when doubling down is usefull, is when";
+ mes "your first 2 cards give you a point total of 11. You have a good";
+ mes "chance of getting 21 or 20 with the next card that you draw. This";
+ mes "would be a good hand to double down on.";
+ goto sM_Menu0;
+ sM_0d:
+ mes "[Dealer]";
+ mes "The 'Ace' card is a unique card in the game of Black Jack because";
+ mes "it can have 2 values. An Ace can be counted as either 11 points,";
+ mes "or just 1 point. For example if you had an Ace and a 4, that would";
+ mes "give you either 15 or 5 points.";
+ next;
+ mes "[Dealer]";
+ mes "If you decided to stay, the Ace would automatically be counted as";
+ mes "11 points to give you 15 points total.";
+ next;
+ mes "[Dealer]";
+ mes "If you had decided to pull and recieved a 9, the ace would";
+ mes "automatically be counted as 1 point to give you a total of 14";
+ mes "points. If the Ace was counted as 11 points, you would have a";
+ mes "point total over 21 and would have lost.";
+ next;
+ mes "[Dealer]";
+ mes "It is because of the flexibilty you have with the 'Ace' that makes";
+ mes "it the most powerfull card in the game.";
+ goto sM_Menu0;
+ M_End:
+ mes "[Dealer]";
+ mes "Feel free to come back anytime";
+ close;
+
+//================
+L_Play:
+ mes "[Dealer]";
+ mes "Please place your bets...";
+ next;
+ menu "2z",M_1a, "10z",M_1b, "20z",M_1c, "100z",M_1d, "Too rich for my blood....",M_End;
+
+ M_1a:
+ if(Zeny < 2) goto sL_NotEnuf;
+ set @bet, 2;
+ goto L_Cont0;
+ M_1b:
+ if(Zeny < 10) goto sL_NotEnuf;
+ set @bet, 10;
+ goto L_Cont0;
+ M_1c:
+ if(Zeny < 20) goto sL_NotEnuf;
+ set @bet, 20;
+ goto L_Cont0;
+ M_1d:
+ if(Zeny < 100) goto sL_NotEnuf;
+ set @bet, 100;
+ goto L_Cont0;
+
+ sL_NotEnuf:
+ mes "[Dealer]";
+ mes "I'm sorry but you don't have enough zeny to make that bet.";
+ close;
+
+ L_Cont0:
+ mes "(the cards are being dealt)";
+ next;
+ deletearray $@card[0],13;
+ set @dealerTurn, 0;
+ set @numP, 0;
+ set @numD, 0;
+ set @pAce, 0;
+ set @dAce, 0;
+ callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
+ callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
+ callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce;
+ callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce;
+
+//==============
+L_Start:
+ callsub sF_GetTot;
+
+ mes "- Here are the ^FF5533DEALER'S^000000 cards:";
+ if (@numD==2) callsub sF_D2cards;
+ if (@numD==3) callsub sF_D3cards;
+ if (@numD==4) callsub sF_D4cards;
+ if (@numD==5) callsub sF_D5cards;
+ mes " The DEALER has: ^FF5533"+@dealTot+"^000000";
+ mes " ";
+ mes "- Here are ^5533FFYOUR^000000 cards:";
+ if (@numP==2) callsub sF_P2cards;
+ if (@numP==3) callsub sF_P3cards;
+ if (@numP==4) callsub sF_P4cards;
+ if (@numP==5) callsub sF_P5cards;
+ if(@pAce != 1 || @playTot == 21) mes " YOU have: ^5533FF" +@playTot+ "^000000";
+ if(@pAce == 1 && @playTot != 21) mes " You have: ^5533FF" +@playTot+ "^000000, or ^5533FF" +(@playTot-10)+ "^000000";
+ next;
+ if(@playTot==21 && @dealTot==21) goto sL_Push;
+ if(@numP==2 && @playTot == 21) goto sL_Win;
+ if(@numD==2 && @dealTot == 21) goto sL_Lose;
+ if(@playTot > 21) goto sL_Lose;
+ if(@dealTot > 21) goto sL_Win;
+ if(@numP==2 && @dealerTurn==0) menu "Hit me(pull)",M_Hit, "Stay",M_Stay, "Double Down",M_Double;
+ if(@dealerTurn == 0) menu "Hit me(pull)",M_Hit, "Stay",M_Stay;
+
+ M_Stay:
+ mes "[Dealer]";
+ if(@playTot < 13) goto sL_PlayToLow;
+ if(@dealTot > 16) mes "The Dealer stays.";
+ if(@dealTot > 16 || @numD == 5) goto L_Check;
+ mes "The Dealer is going to pull";
+ next;
+ callsub sF_GetCards, @numD, @dealCard[@numD], @dealCard$[@numD], @dAce;
+ set @dealerTurn, 1;
+ goto L_Start;
+
+ sL_PlayToLow:
+ mes "I'm sorry but you do not have a high enough total to stay. You must pull.";
+ next;
+ goto M_Hit;
+
+ M_Hit:
+ if(@numP == 5) goto M_Stay;
+ callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
+ goto L_Start;
+ M_Double:
+ mes "[Dealer]";
+ mes "Player has chosen to Double Down. You're current bet will be";
+ mes "doubled, and you will only be able to pull 1 extra card.";
+ next;
+ set @dealerTurn, 1;
+ set @bet, @bet*2;
+ callsub sF_GetCards, @numP, @playCard[@numP], @playCard$[@numP], @pAce;
+ goto L_Start;
+
+//=============
+L_Check:
+ next;
+ if(@playTot < @dealTot) goto sL_Lose;
+ if(@playTot == @dealTot) goto sL_Push;
+
+ sL_Win:
+ mes "[Dealer]";
+ mes "Congratulations, you've won!";
+ next;
+ set Zeny, Zeny + @bet;
+ goto L_Play;
+ sL_Lose:
+ mes "[Dealer]";
+ mes "I'm sorry but you've lost.";
+ set Zeny, Zeny - @bet;
+ next;
+ goto L_Play;
+ sL_Push:
+ mes "[Dealer]";
+ mes "Its a push. You tied with the Dealer.";
+ next;
+ goto L_Play;
+
+
+//==================================
+// Sub function for dealing/pulling the cards
+sF_GetCards:
+ set @rnd, rand(1,13);
+ if($@card[@rnd] == 4) goto sF_GetCards;
+ set $@card[@rnd], $@card[@rnd] + 1;
+ set getarg(1), @rnd;
+ if(getarg(1) > 10) set getarg(1), 10;
+ if(getarg(1) == 1 && getarg(3) < 1) set getarg(1), 11;
+ if(getarg(1) == 11) set getarg(3), 1;
+ set getarg(2), " " + getarg(1) + " ";
+ if(@rnd == 10) set getarg(2), getarg(1);
+ if(@rnd == 1) set getarg(2), " A ";
+ if(@rnd == 11) set getarg(2), " J ";
+ if(@rnd == 12) set getarg(2), " Q ";
+ if(@rnd == 13) set getarg(2), " K ";
+ set getarg(0), getarg(0) + 1;
+ return;
+
+//==================================
+// Sub function for getting the total score for each hand
+sF_GetTot:
+ set @i, 0;
+ set @dealTot, 0;
+ set @playTot, 0;
+
+ GetDealTot:
+ set @dealTot, @dealTot + @dealCard[@i];
+ set @i, @i + 1;
+ if(@i < @numD) goto GetDealTot;
+ if(@dAce == 1 && @dealTot > 21) set @dealTot, @dealTot - 10;
+ set @i, 0;
+ GetPlayTot:
+ set @playTot, @playTot + @playCard[@i];
+ set @i, @i + 1;
+ if(@i < @numP) goto GetPlayTot;
+ if(@pAce == 1 && @playTot > 21) set @pAce, 2;
+ if(@pAce > 0 && @playTot > 21) set @playTot, @playTot - 10;
+ return;
+
+//=======================================
+// Sub function for displaying the Cards
+sF_D2cards:
+ mes " .-----. .-----. ";
+ mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | ";
+ mes " '-----' '-----' ";
+ return;
+sF_P2cards:
+ mes " .-----. .-----. ";
+ mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | ";
+ mes " '-----' '-----' ";
+ return;
+sF_D3cards:
+ mes " .-----. .-----. .-----. ";
+ mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | ";
+ mes " '-----' '-----' '-----' ";
+ return;
+sF_P3cards:
+ mes " .-----. .-----. .-----. ";
+ mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" | ";
+ mes " '-----' '-----' '-----' ";
+ return;
+sF_D4cards:
+ mes " .-----. .-----. .-----. ";
+ mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | ";
+ mes " '-----' '-----' '-----' ";
+ mes " .-----. ";
+ mes " | "+@dealCard$[3]+" |";
+ mes " '-----' ";
+ return;
+sF_P4cards:
+ mes " .-----. .-----. .-----. ";
+ mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" |";
+ mes " '-----' '-----' '-----' ";
+ mes " .-----. ";
+ mes " | "+@playCard$[3]+" |";
+ mes " '-----' ";
+ return;
+sF_D5cards:
+ mes " .-----. .-----. .-----. ";
+ mes " | "+@dealCard$[0]+" | | "+@dealCard$[1]+" | | "+@dealCard$[2]+" | ";
+ mes " '-----' '-----' '-----' ";
+ mes " .-----. .-----. ";
+ mes " | "+@dealCard$[3]+" | | "+@dealCard$[4]+" | ";
+ mes " '-----' '-----' ";
+ return;
+sF_P5cards:
+ mes " .-----. .-----. .-----. ";
+ mes " | "+@playCard$[0]+" | | "+@playCard$[1]+" | | "+@playCard$[2]+" | ";
+ mes " '-----' '-----' '-----' ";
+ mes " .-----. .-----. ";
+ mes " | "+@playCard$[3]+" | | "+@playCard$[4]+" | ";
+ mes " '-----' '-----' ";
+ return;
+}
diff --git a/npc/custom/breeder.txt b/npc/custom/breeder.txt
new file mode 100644
index 000000000..03ed47d9d
--- /dev/null
+++ b/npc/custom/breeder.txt
@@ -0,0 +1,87 @@
+//===== eAthena Script =======================================
+//= Custom Free Breeder aka Universal Renter (not reccomended)
+//===== By: ==================================================
+//= eAthena Team
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= eAthena 1.0 Final +
+//===== Description: =========================================
+//= A Free PecoPeco and Falcon Breeder
+//===== Additional Comments: =================================
+//FIXED checkriding/cart/falcon funcs [Lupus]
+//Added Rebirth/Advanced Class support [Mass Zero]
+//Simplified the checks of job [Silentdragon]
+//============================================================
+
+
+prontera.gat,122,200,1 script Universal Rental Npc 726,{
+ mes "[Universal Rental Npc]";
+ mes "Hi, here you can rent Carts, Falcons or Pecopecos.";
+ next;
+
+L_Menu:
+ menu "Rent a Cart",L_Cart,"Rent a Falcon",L_Falcon,"Rent a Pecopeco",L_Peco,"Quit",L_Quit;
+ close;
+
+L_Cart:
+ if((BaseClass == Job_Merchant || BaseJob == Job_SuperNovice) && checkcart(0) == 0) goto L_Cart_Ok;
+ if(getskilllv(39)<1) goto L_Need_Skill;
+
+ mes "[Universal Rental Npc]";
+ mes "Sorry " + strcharinfo(0) + ", but I only rent carts to people with the Merchant job root, who have enough skills to handle a cart.";
+ close;
+
+L_Cart_Ok:
+ setcart;
+ goto L_Quit2;
+
+L_Need_Skill:
+ mes "[Universal Rental Npc]";
+ mes "Sorry you don't have the required skill to rent a cart.";
+ close;
+
+L_Falcon:
+ if(BaseJob != Job_Archer && BaseClass == Job_Archer && checkfalcon(0) == 0) goto L_Falc;
+ if(getskilllv(127)<1) goto L_Need_Skill2;
+
+ mes "[Universal Rental Npc]";
+ mes "Sorry " + strcharinfo(0) + ", but I only rent falcons to Hunters and Snipers who the ability to handle 'em.";
+ close;
+
+L_Falc:
+ setfalcon;
+ goto L_Quit2;
+
+L_Need_Skill2:
+ mes "[Universal Rental Npc]";
+ mes "Sorry you don't have the required skill to own a Falcon.";
+ close;
+
+L_Peco:
+ if (BaseJob != Job_Swordman && BaseClass == Job_Swordman && checkriding(0) == 0) goto L_Peco_Ok;
+ if(getskilllv(63)<1) goto L_Need_Skill3;
+
+ mes "[Universal Rental Npc]";
+ mes "Sorry " + strcharinfo(0) + ", but I only rent Pecopecos to Knights and Crusaders who have the ability to handle 'em.";
+ close;
+
+L_Peco_Ok:
+ setriding;
+ goto L_Quit2;
+
+L_Need_Skill3:
+ mes "[Universal Rental Npc]";
+ mes "Sorry you don't have the required skill to ride a Peco Peco.";
+ close;
+
+L_Quit:
+ mes "[Universal Rental Npc]";
+ mes strcharinfo(0) + ", please come back when you are ready to rent something.";
+ close;
+
+L_Quit2:
+ mes "[Universal Rental Npc]";
+ mes strcharinfo(0) + ", please come again when you want another...";
+ close;
+}
diff --git a/npc/custom/card_remover.txt b/npc/custom/card_remover.txt
new file mode 100644
index 000000000..8af6ed157
--- /dev/null
+++ b/npc/custom/card_remover.txt
@@ -0,0 +1,175 @@
+// Card removal NPC by TyrNemesis^
+// DANGEROUS! TODO: Think.. think 8) [Lupus]
+
+
+prt_in.gat,28,73,4 script Wise Old Woman 78,{
+
+UPGRADEROOT:
+ mes "[Wise Old Woman]";
+ mes "Good day, young one. I have the power to remove cards that you have compounded onto your equipment. Does this idea please you?";
+ next;
+ menu "Yes, it does.",REMOVEMENU,
+ "What do you charge?",REMOVEPRICE,
+ "No thanks.",CLOSEOUT;
+
+REMOVEPRICE:
+ mes "[Wise Old Woman]";
+ mes "I charge a flat fee of 200000 zeny, plus 25000 zeny for each card I remove from the item. In addition, I need a star crumb and a yellow gemstone to work my magic.";
+ next;
+ menu "Very well. Let's do it.",REMOVEMENU,
+ "No thanks.",CLOSEOUT;
+
+REMOVEMENU:
+ mes "[Wise Old Woman]";
+ mes "Very well. Which item shall I examine for you?";
+ next;
+ menu "I changed my mind.",CLOSEOUT,
+ getequipname(1),SLOT1,
+ getequipname(2),SLOT2,
+ getequipname(3),SLOT3,
+ getequipname(4),SLOT4,
+ getequipname(5),SLOT5,
+ getequipname(6),SLOT6,
+ getequipname(7),SLOT7,
+ getequipname(8),SLOT8,
+ getequipname(9),SLOT9,
+ getequipname(10),SLOT10;
+
+SLOT1:
+ set @part,1;
+ goto CARDNUMCHECK;
+
+SLOT2:
+ set @part,2;
+ goto CARDNUMCHECK;
+
+SLOT3:
+ set @part,3;
+ goto CARDNUMCHECK;
+
+SLOT4:
+ set @part,4;
+ goto CARDNUMCHECK;
+
+SLOT5:
+ set @part,5;
+ goto CARDNUMCHECK;
+
+SLOT6:
+ set @part,6;
+ goto CARDNUMCHECK;
+
+SLOT7:
+ set @part,7;
+ goto CARDNUMCHECK;
+
+SLOT8:
+ set @part,8;
+ goto CARDNUMCHECK;
+
+SLOT9:
+ set @part,9;
+ goto CARDNUMCHECK;
+
+SLOT10:
+ set @part,10;
+ goto CARDNUMCHECK;
+
+CARDNUMCHECK:
+ if(getequipcardcnt(@part) == 0) goto DENYCARDCOUNT;
+ set @cardcount,getequipcardcnt(@part);
+ if(@cardcount > 1) goto CARDNUMMULTIMSG;
+ mes "[Wise Old Woman]";
+ mes "This item has " + @cardcount + " card compounded on it. To perform my magic, I will need 225000 zeny, a ^0000FFStar Crumb^000000, and a ^0000FFYellow Gemstone^000000.";
+ goto CARDNUMPOSTMSG;
+CARDNUMMULTIMSG:
+ mes "[Wise Old Woman]";
+ mes "This item has " + @cardcount + " cards compounded on it. To perform my magic, I will need " + (200000+(@cardcount * 25000)) + " zeny, a ^0000FFStar Crumb^000000, and a ^0000FFYellow Gemstone^000000.";
+CARDNUMPOSTMSG:
+ next;
+ menu "Very well. Do it.",REMOVECARDWARNING,
+ "Never mind.",CLOSEOUT;
+
+REMOVECARDWARNING:
+ mes "[Wise Old Woman]";
+ mes "Before I begin, I must warn you--I may fail. If I do, I may destroy the cards, the item, or both. I do not give refunds. That being said, which is more important to you: The cards, or the item?";
+ next;
+ menu "I changed my mind about this.",CLOSEOUT,
+ "The item.",PRIORITYITEM,
+ "The cards.",PRIORITYCARD;
+
+PRIORITYITEM:
+ set @failtype,1;
+ goto REMOVECARD;
+
+PRIORITYCARD:
+ set @failtype,2;
+ goto REMOVECARD;
+
+REMOVECARD:
+ mes "[Wise Old Woman]";
+ mes "Very well. I shall begin.";
+ if((zeny < (200000+(@cardcount * 25000))) || (countitem(1000) < 1) || (countitem(715) < 1)) goto DENYMATERIAL;
+ set zeny,zeny - (200000+(@cardcount * 25000));
+ delitem 1000,1;
+ delitem 715,1;
+// Replace the constants in the next 3 lines with failure chance values defined in refine_db.txt
+// First value = Total failure chance (item and cards destroyed)
+// Second value = Partial failure chance (one or the other is destroyed, player decides which one is safe)
+// Third value = Harmless failure chance (all that's lost is your investment)
+
+ set @failchance,rand(100);
+// if(@failchance < 2) goto FAILREMOVECARD0;
+// if((@failchance < 8) && (@failtype == 1)) goto FAILREMOVECARD1;
+// if((@failchance < 8) && (@failtype == 2)) goto FAILREMOVECARD2;
+ if(@failchance < 10) goto FAILREMOVECARD3;
+ successremovecards @part;
+ next;
+ mes "[Wise Old Woman]";
+ mes "The process was a success. Here are your cards and your item. Farewell.";
+ close;
+
+FAILREMOVECARD0:
+ failedremovecards @part,0;
+ next;
+ mes "[Wise Old Woman]";
+ mes "The process was a total failure. I am afraid the item and the cards were destroyed.";
+ close;
+
+FAILREMOVECARD1:
+ failedremovecards @part,1;
+ next;
+ mes "[Wise Old Woman]";
+ mes "While I have managed to remove the cards from the item, they were destroyed in the process. The item, however, is okay.";
+ close;
+
+FAILREMOVECARD2:
+ failedremovecards @part,2;
+ next;
+ mes "[Wise Old Woman]";
+ mes "Most unfortunate. I succeeded at removing the cards, but the item itself was destroyed in the process.";
+ close;
+
+FAILREMOVECARD3:
+ failedremovecards @part,3;
+ next;
+ mes "[Wise Old Woman]";
+ mes "I have failed to remove the cards. Luckily, however, both the item and the cards are still okay.";
+ close;
+
+DENYCARDCOUNT:
+ mes "[Wise Old Woman]";
+ mes "Young one... There are no cards compounded on this item. I can do nothing with it, I'm afraid.";
+ close;
+
+DENYMATERIAL:
+ next;
+ mes "[Wise Old Woman]";
+ mes "You do not have all the items I require to work my magic, child. Come again when you do.";
+ close;
+
+CLOSEOUT:
+ mes "[Wise Old Woman]";
+ mes "Very well. Return at once if you seek my services.";
+ close;
+}
diff --git a/npc/custom/devnpc.txt b/npc/custom/devnpc.txt
new file mode 100644
index 000000000..6e17bb170
--- /dev/null
+++ b/npc/custom/devnpc.txt
@@ -0,0 +1,508 @@
+//===== eAthena Script =======================================
+//= Dev edition NPCs!
+//===== By: ==================================================
+//= Most NPCs by Aria
+//= MouseJstr NPC by MouseJstr
+//= Massdriller NPC by massdriller
+//= Evera NPC by Evera
+//= Kevin NPC by Kevin
+//===== Current Version: =====================================
+//= 0.5
+//===== Compatible With: =====================================
+//= eAthena 1.0 Final +
+//===== Description: =========================================
+//= NPCs of the devs!
+//===== Additional Comments: =================================
+//= Some devs don't have their quotes yet >_>
+//= currently we only have Aria, Mouse, and MC_Cameri done.
+//= David is there because he has coords, but he's incomplete;
+//= he has no biography
+//============================================================
+
+// MouseJstr =========================================================>\\
+ayothaya.gat,76,145,5 script MouseJstr 763,{
+ npcspeed 50;
+ mes "[MouseJstr]";
+ mes "Yo homeslices..";
+ mes "I am MouseJstr on AIM and josh in real life..";
+ next;
+ mes "I enjoy maintaining a RO server because of the abuse I get";
+ close;
+ OnTimer15000:
+ npcwalkto 70+rand(17),135+rand(16);
+ setnpctimer 0;
+
+doitagain:
+ set $foo,rand(5);
+ if($foo == 0) goto Lquote0;
+ if($foo == 1) goto Lquote1;
+ if($foo == 2) goto Lquote2;
+ if($foo == 3) goto Lquote3;
+ if($foo == 4) goto Lquote4;
+ goto doitagain;
+
+Lquote0:
+ npctalk "Brb.. my baby is throwing up on my leg.";
+ setnpctimer 0;
+ end;
+Lquote1:
+ npctalk "The only difference between a hurricane and skydiving is which direction the tree's come at you from..";
+ setnpctimer 0;
+ end;
+Lquote2:
+ npctalk "Wanna be a GM? Write me a C routine that reverses a string in place..";
+ setnpctimer 0;
+ end;
+Lquote3:
+ npctalk "Wanna be a GM? Write me a C routine that finds me the highest bit set in a network order 32 bit integer...";
+ setnpctimer 0;
+ end;
+Lquote4:
+ npctalk "I am the dark angel of eAthena.. withen weeks of my arrival, almost everybody was gone or dead.. fear me...";
+ setnpctimer 0;
+ end;
+OnInit:
+ initnpctimer;
+ end;
+}
+
+// MC Cameri =========================================================>\\
+morocc.gat,160,97,4 script MC Cameri 706,{
+ npcspeed 100;
+ mes "[MC Cameri]";
+ mes "I'm the @command guy from oA...";
+ mes "^FF8040Real Name^000000: Can't tell you my name";
+ mes "^FF8040Age^000000: 16 years";
+ mes "^FF8040Where I live^000000: Dominican Republic, in the caribbean";
+ next;
+ mes "[MC Cameri]";
+ mes "^FF8040What I Do^000000: mostly working on @commands for GMs...";
+ mes "^FF8040Why I'm here^000000: Because I like programming...";
+ next;
+ mes "[MC Cameri]";
+ mes "I'm a senior student, programmer, body builder(yes, I lift weights), etc.";
+ close;
+ OnTimer15000:
+ npcwalkto 154+rand(17),87+rand(16);
+ setnpctimer 0;
+
+Lmctalk:
+ set $mctalk,rand(10);
+ if($mctalk == 0) goto Lquote0;
+ if($mctalk == 1) goto Lquote1;
+ if($mctalk == 2) goto Lquote2;
+ if($mctalk == 3) goto Lquote3;
+ if($mctalk == 4) goto Lquote4;
+ if($mctalk == 5) goto Lquote5;
+ if($mctalk == 6) goto Lquote6;
+ if($mctalk == 7) goto Lquote7;
+ if($mctalk == 8) goto Lquote8;
+ if($mctalk == 9) goto Lquote9;
+ if($mctalk == 10) goto Lquote10;
+ goto Lmctalk;
+Lquote0:
+ npctalk "OMGWTFBBQ";
+ setnpctimer 0;
+ end;
+Lquote1:
+ npctalk "I owns you all, under my commands. *lol*";
+ setnpctimer 0;
+ end;
+Lquote2:
+ npctalk "I forgot my script, what do I have to say again? *_*U";
+ setnpctimer 0;
+ end;
+Lquote3:
+ npctalk "¿Donde estoy? *wonders* (<-- Means, where am I?)";
+ setnpctimer 0;
+ end;
+Lquote4:
+ npctalk "Are you guys my friends?";
+ setnpctimer 0;
+ end;
+Lquote5:
+ npctalk "My mom told me not to talk to strangers. *stares*";
+ setnpctimer 0;
+ end;
+Lquote6:
+ npctalk "How can you be SO ugly!?";
+ setnpctimer 0;
+ end;
+Lquote7:
+ npctalk "I need a friend to play with =(. *sobs*";
+ setnpctimer 0;
+ end;
+Lquote8:
+ npctalk "I've been kicking this rock for as long as I can remember.";
+ setnpctimer 0;
+ end;
+Lquote9:
+ npctalk "My computer just broke, and I don't know how to format. *sobs*";
+ setnpctimer 0;
+ end;
+Lquote10:
+ setnpctimer 0;
+ end;
+OnInit:
+ initnpctimer;
+ end;
+}
+
+
+// Davidsiaw =========================================================>\\
+payon.gat,182,104,4 script Davidsiaw 1002,{
+ npcspeed 150;
+ mes "[Davidsiaw]";
+ mes "omghi";
+ close;
+OnTimer15000:
+ npcwalkto 176+rand(17),94+rand(16);
+ setnpctimer 0;
+
+Ldavidtalk:
+ set $davidtalk,rand(10);
+ if($davidtalk == 0) goto Lquote0;
+ if($davidtalk == 1) goto Lquote1;
+ if($davidtalk == 2) goto Lquote2;
+ if($davidtalk == 3) goto Lquote3;
+ if($davidtalk == 4) goto Lquote4;
+ if($davidtalk == 5) goto Lquote5;
+ if($davidtalk == 6) goto Lquote6;
+ goto Ldavidtalk;
+Lquote0:
+ npctalk "OMGWTFBBQ";
+ setnpctimer 0;
+ end;
+Lquote1:
+ npctalk "Wud are you looking at?";
+ setnpctimer 0;
+ end;
+Lquote2:
+ npctalk "baka...";
+ setnpctimer 0;
+ end;
+Lquote3:
+ npctalk "¿Donde estoy? *wonders* (<-- Means, where am I?)";
+ setnpctimer 0;
+ end;
+Lquote4:
+ npctalk "*drops 100 Mjolnirs on the floor*";
+ setnpctimer 0;
+ end;
+Lquote5:
+ npctalk "There ya go ;)";
+ setnpctimer 0;
+ end;
+Lquote6:
+ setnpctimer 0;
+ end;
+OnInit:
+ initnpctimer;
+ end;
+}
+
+//Aria\\
+prontera.gat,156,179,4 script Aria 805,{
+ npcspeed 150;
+ mes "[Aria]";
+ mes "Okay, I'm Evera's brother, Aria";
+ mes "^FF00FFAge^000000: 13 years";
+ mes "^FF00FFWhat I do^000000: Graphics and NPCs";
+ mes "^FF00FFWhy I'm here^000000: Cuz eAthena ROX";
+ close;
+OnTimer15000:
+ npcwalkto 150+rand(17),169+rand(16);
+ setnpctimer 0;
+
+Lariatalk:
+ set $ariatalk,rand(10);
+ if($ariatalk == 0) goto Lquote0;
+ if($ariatalk == 1) goto Lquote1;
+ if($ariatalk == 2) goto Lquote2;
+ if($ariatalk == 3) goto Lquote3;
+ if($ariatalk == 4) goto Lquote4;
+ if($ariatalk == 5) goto Lquote5;
+ if($ariatalk == 6) goto Lquote6;
+ if($ariatalk == 7) goto Lquote7;
+ if($ariatalk == 8) goto Lquote8;
+ if($ariatalk == 9) goto Lquote9;
+ if($ariatalk == 10) goto Lquote10;
+ goto Lariatalk;
+
+Lquote0:
+ npctalk "OMGWTFBBQ";
+ end;
+Lquote1:
+ npctalk "So its u -> 0";
+ npctalk "... That did not look right";
+ end;
+Lquote2:
+ npctalk "????";
+ end;
+
+Lquote3:
+ npctalk "OMGITSJEEBUS!#!@%!";
+ setnpctimer 0;
+ end;
+
+Lquote4:
+ npctalk "Evera died. I guess.";
+ setnpctimer 0;
+ end;
+
+Lquote5:
+ npctalk "I CLICK THE BUTTON AND THEY DON'T DIE!";
+ setnpctimer 0;
+ end;
+
+Lquote6:
+ npctalk "RO? wtf?";
+ npctalk "Oh yeah.";
+ setnpctimer 0;
+ end;
+
+Lquote7:
+ npctalk "omgnoob. DIE!";
+ setnpctimer 0;
+ end;
+
+Lquote8:
+ npctalk "WooT!";
+ setnpctimer 0;
+ end;
+
+Lquote9:
+ npctalk "is that why u bought windows";
+ npctalk "cuz bill has red hair";
+ setnpctimer 0;
+ end;
+
+Lquote10:
+ setnpctimer 0;
+ end;
+
+OnInit:
+ initnpctimer;
+ end;
+}
+
+// Evera =========================================================>\\
+prontera.gat,156,183,5 script Evera 769,{
+ npcspeed 50;
+ mes "[Evera]";
+ mes "Hi";
+ mes "I betcha you thoguht I was dead, right?";
+ next;
+ mes "Well, I'M (not really) BACK!";
+ mes "And I also enjoy long walks on the beach ^.^";
+ close;
+ OnTimer15000:
+ npcwalkto 150+rand(17),173+rand(16);
+ setnpctimer 0;
+
+doitagain:
+ set $lol,rand(5);
+ if($lol == 0) goto Lquote0;
+ if($lol == 1) goto Lquote1;
+ if($lol == 2) goto Lquote2;
+ if($lol == 3) goto Lquote3;
+ if($lol == 4) goto Lquote4;
+ if($lol == 5) goto Lquote5;
+ goto doitagain;
+
+Lquote0:
+ npctalk "Does anyone actually remember who I am?";
+ setnpctimer 0;
+ end;
+Lquote1:
+ npctalk "O_o";
+ setnpctimer 0;
+ end;
+Lquote2:
+ npctalk "Bananaphone!";
+ setnpctimer 0;
+ end;
+Lquote3:
+ npctalk "Go away troll.";
+ setnpctimer 0;
+ end;
+Lquote4:
+ npctalk "Aria can go to hell.";
+ setnpctimer 0;
+ end;
+Lquote5:
+ npctalk "Sup, I'm back.";
+ setnpctimer 0;
+ end;
+Lquote6:
+ npctalk "WTFPWNED";
+ setnpctimer 0;
+ end;
+OnInit:
+ initnpctimer;
+ end;
+}
+
+// Kevin =========================================================>\\
+prontera.gat,178,204,5 script Kevin 774,{
+ npcspeed 50;
+ mes "[Kevin]";
+ mes "SUP?!?!?!?!";
+ mes "YOU JUST GOT PWNED!!!";
+ next;
+ mes "OUCH, ANOTHER PERSON PWNED BY KEVIN!";
+ close;
+ OnTimer15000:
+ npcwalkto 170+rand(17),200+rand(16);
+ setnpctimer 0;
+
+doitagain:
+ set $lol,rand(9);
+ if($lol == 0) goto Lquote0;
+ if($lol == 1) goto Lquote1;
+ if($lol == 2) goto Lquote2;
+ if($lol == 3) goto Lquote3;
+ if($lol == 4) goto Lquote4;
+ if($lol == 5) goto Lquote1;
+ if($lol == 6) goto Lquote2;
+ if($lol == 7) goto Lquote3;
+ if($lol == 8) goto Lquote4;
+ goto doitagain;
+
+Lquote0:
+ npctalk "OMFGLMFAO I HAVE PWNED SO MANY PEOPLE!";
+ setnpctimer 0;
+ end;
+Lquote1:
+ npctalk "GO EA DEVS!";
+ setnpctimer 0;
+ end;
+Lquote2:
+ npctalk "WATCH OUT FOR ME ON THE IRC CHANNEL! HAHAHA!";
+ setnpctimer 0;
+ end;
+Lquote3:
+ npctalk "WANNA SEE MY NEW MIRC SCRIPT?!?";
+ setnpctimer 0;
+ end;
+Lquote4:
+ npctalk "w00t! YOU ARE SUCH A N00B YOU... N00B";
+ setnpctimer 0;
+ end;
+Lquote5:
+ npctalk "d00d! i r l337!";
+ setnpctimer 0;
+ end;
+Lquote6:
+ npctalk "pssst: what do you think of my evil plot to take over the da irc network?";
+ setnpctimer 0;
+ end;
+Lquote7:
+ npctalk "ORANGE COUNTY LIBERATION FRONT!";
+ setnpctimer 0;
+ end;
+Lquote8:
+ npctalk "OMFG YOU ARE SO UGLY!";
+ setnpctimer 0;
+ end;
+OnInit:
+ initnpctimer;
+ end;
+}
+
+
+// massdriller =========================================================>\\
+geffen.gat,122,63,5 script massdriller 823,{
+ npcspeed 50;
+ mes "[massdriller]";
+ mes "Who am i? I am A nobody!";
+ mes "I like pwning people!";
+ next;
+ mes "[massdriller]";
+ mes "Main goal in life is to annoy and pwn Kevin";
+ close;
+ OnTimer15000:
+ npcwalkto 170+rand(17),200+rand(16);
+ setnpctimer 0;
+
+doitagain:
+ set $lol,rand(9);
+ if($lol == 0) goto Lquote0;
+ if($lol == 1) goto Lquote1;
+ if($lol == 2) goto Lquote2;
+ if($lol == 3) goto Lquote3;
+ if($lol == 4) goto Lquote4;
+ if($lol == 5) goto Lquote1;
+ if($lol == 6) goto Lquote2;
+ if($lol == 7) goto Lquote3;
+ if($lol == 8) goto Lquote4;
+ goto doitagain;
+
+Lquote0:
+ npctalk "Hmm....What script needs to be fixed...";
+ setnpctimer 0;
+ end;
+Lquote1:
+ npctalk "OMFG...you suck!";
+ setnpctimer 0;
+ end;
+Lquote2:
+ npctalk "The worst kind of noobs are the heal! zeny! items plz! type.";
+ setnpctimer 0;
+ end;
+Lquote3:
+ npctalk "What happens when you die of boredom?";
+ setnpctimer 0;
+ end;
+Lquote4:
+ npctalk "I'm such a kewl Person...";
+ setnpctimer 0;
+ end;
+Lquote5:
+ npctalk "OMFGWTFBBQ...I'm also known as MadDawg";
+ setnpctimer 0;
+ end;
+Lquote6:
+ npctalk "Gimme your items...I'll eat them and eat you...";
+ setnpctimer 0;
+ end;
+Lquote7:
+ npctalk "Aren't porings cute?";
+ setnpctimer 0;
+ end;
+Lquote8:
+ npctalk "Omfg..you are full of shit....";
+ setnpctimer 0;
+ end;
+OnInit:
+ initnpctimer;
+ end;
+}
+aldebaran.gat,137,118,5 script Fredzilla 4020,0,0,{
+ npcspeed 140;
+OnTouch:
+ mes "[Fredzilla]";
+ mes "I dont really know what I do";
+ mes "Well I have made some scripts, translated some scripts and corrected some scripts.";
+ next;
+ mes "[Fredzilla]";
+ mes "But other than that I do nothing.";
+ close;
+OnTimer25000:
+ npcwalkto 137+rand(5),118+rand(5);
+ setnpctimer 0;
+doitagain:
+ set $fred,rand(6);
+ if($fred == 0) npctalk "I have the most optimized Dev NPC";
+ if($fred == 1) npctalk "Yeah I am a Dev, what do you mean I'm just a member on the forum !!!";
+ if($fred == 2) npctalk "I probably the worst speller on the Dev team.";
+ if($fred == 3) npctalk "You didnt think I was a real player did you?!?";
+ if($fred == 4) npctalk "Golden, Ripe, Boneless Bananas, 39 Cents A Pound.";
+ if($fred == 5) npctalk "All those who believe in telekinesis, raise my hand.";
+ if($fred > 5 || $fred < 0) goto doitagain;
+ setnpctimer 0;
+ end;
+OnInit:
+ initnpctimer;
+ end;
+}
diff --git a/npc/custom/dye.txt b/npc/custom/dye.txt
new file mode 100644
index 000000000..4ebfc41f9
--- /dev/null
+++ b/npc/custom/dye.txt
@@ -0,0 +1,176 @@
+//===== eAthena Script =======================================
+//= Stylist Script
+//===== By: ==================================================
+//= eAthena Dev team
+//= Revised by Nekosume [pyRO v3.0]
+//===== Current Version: =====================================
+//= 4.0
+//===== Compatible With: =====================================
+//= Any eAthena Version
+//===== Description: =========================================
+//= Revised dye NPC
+//===== Additional Comments: =================================
+//= v4.1 - New hairstyles added [Mass Zero]
+//= v4.0 - Refined and Combined [Darkchild]
+//= v3.0 - Added the 'Browse' options
+//= v2.5 - Added more hair colors
+//= v2.0 - Changed palette and hair style select
+//= v1.5 - Revised script / different dialog
+//= v1.0 - Split into two NPCs
+//============================================================
+
+
+//Stylist------------------------------------------------------------------------------------------------------------
+prontera.gat,170,180,1 script Stylist 122,{
+ mes "[^FF8000Stylist^000000]";
+ mes "I'm the greatest stylist in all of Rune-Midgard~~!";
+ mes "I can change your hair style or color!";
+ mes "What do you wish to change?";
+ next;
+ menu "Hair style",Lstyle,"Hair color",Lcolor,"Cloth Color",Lcloth,"Nothing",LCancel;
+
+ Lstyle:
+ mes "[^FF8000Stylist^000000]";
+ mes "Do you want to browse through the choices, or do you know what you want?";
+ next;
+ menu "Browse",Lbrowsesty,"I know what I want",Lwantsty;
+
+ Lwantsty:
+ mes "[^FF8000Stylist^000000]";
+ mes "Great! Now just pick a style and I'll get started!";
+ next;
+ mes "[^FF8000Stylist^000000]";
+ mes "Please pick a style number ^0000FFbetween 0 and 23^000000.";
+ mes "Number 0, by the way, is the default style for your character.";
+ next;
+ input @sty;
+ if (@sty>23) close;
+ if (@sty<0) close;
+ setlook 1,@sty;
+ next;
+ mes "[^FF8000Stylist^000000]";
+ mes "Is this good, or do you want a different style?";
+ next;
+ menu "This is good",-,"Different style, please",Lwantsty;
+ next;
+ mes "[^FF8000Stylist^000000]";
+ mes "You look great~! Come back again, okay?";
+ close;
+
+ Lbrowsesty:
+ set @look, -1;
+ mes "[^FF8000Stylist^000000]";
+ mes "Okay, here we go~! Just stop me when you see something you like, okay?";
+ next;
+
+ Lbrowserep:
+ set @look,@look+1;
+ setlook 1,@look;
+ mes "This is Pallete Number^FF9009 "+@look+" ^000000!";
+ if(@look == 23) menu "Back To The Begin",Lbrowsesty,"I like this one",Lstop;
+ if(@look != 23) menu "Keep going",Lbrowserep,"I like this one",Lstop;
+
+ Lcolor:
+ mes "[^FF8000Stylist^000000]";
+ mes "Do you want to browse through the choices, or do you know what you want?";
+ next;
+ menu "Browse",Lbrowsecolor,"I know what I want",Lwantcolor;
+
+ Lwantcolor:
+ mes "[^FF8000Stylist^000000]";
+ mes "Just pick a color and we can get started.";
+ next;
+ mes "[^FF8000Stylist^000000]";
+ mes "Please pick a style number ^0000FFbetween 0 and 20^000000.";
+ mes "Number 0, by the way, is the default color for your character.";
+ next;
+ mes "[^FF8000Stylist^000000]";
+ mes "0 is default...";
+ mes "1 is blonde...";
+ mes "2 is lavender...";
+ mes "3 is brown...";
+ mes "4 is green...";
+ mes "5 is blue...";
+ mes "6 is white...";
+ mes "7 is black...";
+ mes "8 is red...";
+ mes "and 9-20 are new colors.";
+ input @color;
+ if (@color>20) close;
+ if (@color<0) close;
+ setlook 6,@color;
+ next;
+ mes "[^FF8000Stylist^000000]";
+ mes "Is this good, or do you want a different color?";
+ next;
+ menu "This is good",-,"Different color, please",Lwantcolor;
+ next;
+ mes "[^FF8000Stylist^000000]";
+ mes "You look great~! Come back again, okay?";
+ close;
+
+ Lbrowsecolor:
+ set @look, -1;
+ mes "[^FF8000Stylist^000000]";
+ mes "Okay, here we go~! Just stop me when you see something you like, okay?";
+ next;
+
+ Lbrowsecolorrep:
+ set @look,@look+1;
+ setlook 6,@look;
+ mes "This is Pallete Number^FF9009 "+@look+" ^000000!";
+ if(@look == 20) menu "Back To The Begin",Lbrowsecolor,"I like this one",Lstop;
+ if(@look != 20) menu "Keep going",Lbrowsecolorrep,"I like this one",Lstop;
+
+ Lstop:
+ mes "[^FF8000Stylist^000000]";
+ mes "You look great~! I love it~! ^_^";
+ close;
+
+ LCancel:
+ mes "[^FF8000Stylist^000000]";
+ mes "Well come again.";
+ close;
+
+ Lcloth:
+ mes "[^FF8000Stylist^000000]";
+ mes "Do you want to browse through the choices, or do you know what you want?";
+ next;
+ menu "Browse",Lbrowsecloth,"I know what I want",Lwantcloth;
+
+ Lwantcloth:
+ mes "[^FF8000Stylist^000000]";
+ mes "Great! Now just pick a pallete and I'll get started!";
+ next;
+ mes "[^FF8000Stylist^000000]";
+ mes "Please pick a style number ^0000FFbetween 0 and 77^000000.";
+ mes "Number 0, by the way, is the default style for your character.";
+ next;
+ input @pal;
+ if (@pal>77) close;
+ if (@pal<0) close;
+ setlook 7,@pal;
+ next;
+ mes "[^FF8000Stylist^000000]";
+ mes "Is this good, or do you want a different pallet";
+ next;
+ menu "This is good",-,"Different pallet, please",Lwantcloth;
+ next;
+ mes "[^FF8000Stylist^000000]";
+ mes "You look great~! Come back again, okay?";
+ close;
+
+ Lbrowsecloth:
+ set @look, -1;
+ mes "[^FF8000Stylist^000000]";
+ mes "Okay, here we go~! Just stop me when you see something you like, okay?";
+ next;
+
+ Lbrowseclothrep:
+ set @look,@look+1;
+ setlook 7,@look;
+ mes "This is Pallete Number^FF9009 "+@look+" ^000000!";
+ if(@look == 77) menu "Back To The Begin",Lbrowsecloth,"I like this one",Lstop;
+ if(@look != 77) menu "Keep going",Lbrowseclothrep,"I like this one",Lstop;
+}
+
diff --git a/npc/custom/eliza.txt b/npc/custom/eliza.txt
new file mode 100644
index 000000000..7915492b5
--- /dev/null
+++ b/npc/custom/eliza.txt
@@ -0,0 +1,702 @@
+prontera.gat,152,181,5 script MouseJstr 763,{
+
+// hello
+Lquote0:
+ npctalk "How do you do. Please state your problem.";
+ end;
+// computer
+Lquote1:
+ set $foo,rand(4);
+ if($foo == 0) goto Lquote1a;
+ if($foo == 1) goto Lquote1b;
+ if($foo == 2) goto Lquote1c;
+ if($foo == 3) goto Lquote1d;
+Lquote1a:
+ npctalk "Do computers worry you?";
+ end;
+Lquote1b:
+ npctalk "What do you think about machines?";
+ end;
+Lquote1c:
+ npctalk "Why do you mention computers?";
+ end;
+Lquote1d:
+ npctalk "What do you think machines have to do with your problem?";
+ end;
+// name
+Lquote2:
+ npctalk "I am not interested in names";
+ end;
+// sorry
+Lquote3:
+ set $foo,rand(3);
+ if($foo == 0) goto Lquote3a;
+ if($foo == 1) goto Lquote3b;
+ if($foo == 2) goto Lquote3c;
+
+Lquote3a:
+ npctalk "Please don't apologize";
+ end;
+
+Lquote3b:
+ npctalk "Apologies are not necessary";
+ end;
+
+Lquote3c:
+ npctalk "What feelings do you have when you apologize";
+ end;
+
+// I remember $p2$
+Lquote4:
+ set $foo,rand(6);
+ if($foo == 0) goto Lquote4a;
+ if($foo == 1) goto Lquote4b;
+ if($foo == 2) goto Lquote4c;
+ if($foo == 3) goto Lquote4d;
+ if($foo == 4) goto Lquote4e;
+ if($foo == 5) goto Lquote4f;
+
+Lquote4a:
+ npctalk "Do you often think of "+$p2$+"?";
+ end;
+
+Lquote4b:
+ npctalk "Does thinking of "+$p2$+" bring anything else to mind?";
+ end;
+
+Lquote4c:
+ npctalk "What else do you remember?";
+ end;
+
+Lquote4d:
+ npctalk "Why do you recall "+$p2$+" right now?";
+ end;
+
+Lquote4e:
+ npctalk "What in the present situation reminds you of "+$p2$+"?";
+ end;
+
+Lquote4f:
+ npctalk "What is the connection between me and "+$p2$+"?";
+ end;
+
+// do you remember
+Lquote5:
+ set $foo,rand(4);
+ if($foo == 0) goto Lquote5a;
+ if($foo == 1) goto Lquote5b;
+ if($foo == 2) goto Lquote5c;
+ if($foo == 3) goto Lquote5d;
+Lquote5a:
+ npctalk "Did you think I would forget "+$p2$+" ?";
+ end;
+
+Lquote5b:
+ npctalk "Why do you think I should recall "+$p2$+" now";
+ end;
+
+Lquote5c:
+ npctalk "What about "+$p2$+"";
+ end;
+
+Lquote5d:
+ npctalk "You mentioned "+$p2$+"";
+ end;
+
+// if
+Lquote6:
+ set $foo,rand(4);
+ if($foo == 0) goto Lquote6a;
+ if($foo == 1) goto Lquote6b;
+ if($foo == 2) goto Lquote6c;
+ if($foo == 3) goto Lquote6d;
+Lquote6a:
+ npctalk "Do you really think its likely that "+$p2$+"";
+ end;
+
+Lquote6b:
+ npctalk "Do you wish that "+$p2$+"?";
+ end;
+
+Lquote6c:
+ npctalk "What do you think about "+$p2$+"?";
+ end;
+
+Lquote6d:
+ npctalk "Really-- if "+$p2$+"?";
+ end;
+
+// i dreamt
+Lquote7:
+ set $foo,rand(3);
+ if($foo == 0) goto Lquote7a;
+ if($foo == 1) goto Lquote7b;
+ if($foo == 2) goto Lquote7c;
+Lquote7a:
+ npctalk "Really-- "+$p2$+"";
+ end;
+
+Lquote7b:
+ npctalk "Have you ever fantasized "+$p2$+" while you were awake?";
+ end;
+
+Lquote7c:
+ npctalk "Have you dreamt "+$p2$+" before?";
+ end;
+
+// dream about
+
+Lquote8:
+ npctalk "How do you feel about "+$p2$+" in reality?";
+ end;
+
+// dream
+Lquote9:
+ set $foo,rand(4);
+ if($foo == 0) goto Lquote9a;
+ if($foo == 1) goto Lquote9b;
+ if($foo == 2) goto Lquote9c;
+ if($foo == 3) goto Lquote9d;
+Lquote9a:
+ npctalk "What does this dream suggest to you?";
+ end;
+
+Lquote9b:
+ npctalk "Do you dream often?";
+ end;
+
+Lquote9c:
+ npctalk "What persons appear in your dreams?";
+ end;
+
+Lquote9d:
+ npctalk "Don't you believe that dream has to do with your problem?";
+ end;
+
+// my mother
+Lquote10:
+ set $foo,rand(2);
+ if($foo == 0) goto Lquote10a;
+ if($foo == 1) goto Lquote10b;
+Lquote10a:
+ npctalk "Who else in your family "+$p2$+"";
+ end;
+
+Lquote10b:
+ npctalk "Tell me more about your family";
+ end;
+
+// my father
+Lquote11:
+ set $foo,rand(3);
+ if($foo == 0) goto Lquote11a;
+ if($foo == 1) goto Lquote11b;
+ if($foo == 2) goto Lquote11c;
+Lquote11a:
+ npctalk "Your father";
+ end;
+
+Lquote11b:
+ npctalk "Does he influence you strongly?";
+ end;
+
+Lquote11c:
+ npctalk "What else comes to mind when you think of your father?";
+ end;
+
+// I want
+Lquote12:
+ set $foo,rand(3);
+ if($foo == 0) goto Lquote12a;
+ if($foo == 1) goto Lquote12b;
+ if($foo == 2) goto Lquote12c;
+Lquote12a:
+ npctalk "What would it mean if you got "+$p2$+"";
+ end;
+
+Lquote12b:
+ npctalk "Why do you want "+$p2$+"";
+ end;
+
+Lquote12c:
+ npctalk "Suppose you got "+$p2$+" soon";
+ end;
+
+// I am glad
+Lquote13:
+ set $foo,rand(3);
+ if($foo == 0) goto Lquote13a;
+ if($foo == 1) goto Lquote13b;
+ if($foo == 2) goto Lquote13c;
+Lquote13a:
+ npctalk "How have I helped you to be "+$p2$+"";
+ end;
+
+Lquote13b:
+ npctalk "What makes you happy just now";
+ end;
+
+Lquote13c:
+ npctalk "Can you explain why you are suddenly "+$p2$+"";
+ end;
+
+// I am sad
+Lquote14:
+ set $foo,rand(2);
+ if($foo == 0) goto Lquote14a;
+ if($foo == 1) goto Lquote14b;
+Lquote14a:
+ npctalk "I am sorry to hear you are depressed";
+ end;
+
+Lquote14b:
+ npctalk "I'm sure its not pleasant to be sad";
+ end;
+
+// $p2 are like "+$p3$+"
+Lquote15:
+ npctalk "What resemblance do you see between "+$p2$+" and "+$p3$+"";
+ end;
+
+// "+$p2$+" is like "+$p3$+"
+Lquote16:
+ set $foo,rand(4);
+ if($foo == 0) goto Lquote16a;
+ if($foo == 1) goto Lquote16b;
+ if($foo == 2) goto Lquote16c;
+ if($foo == 3) goto Lquote16d;
+Lquote16a:
+ npctalk "In what way is it that "+$p2$+" is like "+$p3$+"";
+ end;
+
+Lquote16b:
+ npctalk "What resemblance do you see?";
+ end;
+
+Lquote16c:
+ npctalk "Could there really be some connection?";
+ end;
+
+Lquote16d:
+ npctalk "How?";
+ end;
+// alike
+Lquote17:
+ set $foo,rand(2);
+ if($foo == 0) goto Lquote17a;
+ if($foo == 1) goto Lquote17b;
+Lquote17a:
+ npctalk "In what way?";
+ end;
+
+Lquote17b:
+ npctalk "What similarities are there?";
+ end;
+// same
+Lquote18:
+ npctalk "What other connections do you see?";
+ end;
+
+// I was "+$p2$+"
+Lquote19:
+ set $foo,rand(3);
+ if($foo == 0) goto Lquote19a;
+ if($foo == 1) goto Lquote19b;
+ if($foo == 2) goto Lquote19c;
+Lquote19a:
+ npctalk "Were you really?";
+ end;
+
+Lquote19b:
+ npctalk "Perhaps I already knew you were "+$p2$+"";
+ end;
+
+Lquote19c:
+ npctalk "Why do you tell me you were "+$p2$+" now?";
+ end;
+
+// was I
+Lquote20:
+ set $foo,rand(3);
+ if($foo == 0) goto Lquote20a;
+ if($foo == 1) goto Lquote20b;
+ if($foo == 2) goto Lquote20c;
+Lquote20a:
+ npctalk "What if you were "+$p2$+" ?";
+ end;
+
+Lquote20b:
+ npctalk "Do you thin you were "+$p2$+"";
+ end;
+
+Lquote20c:
+ npctalk "What would it mean if you were "+$p2$+"";
+ end;
+
+// I am
+Lquote21:
+ set $foo,rand(2);
+ if($foo == 0) goto Lquote21a;
+ if($foo == 1) goto Lquote21b;
+Lquote21a:
+ npctalk "In what way are you "+$p2$+"";
+ end;
+
+Lquote21b:
+ npctalk "Do you want to be "+$p2$+" ?";
+ end;
+
+// am I
+Lquote22:
+ set $foo,rand(4);
+ if($foo == 0) goto Lquote22a;
+ if($foo == 1) goto Lquote22b;
+ if($foo == 2) goto Lquote22c;
+ if($foo == 3) goto Lquote22d;
+Lquote22a:
+ npctalk "Do you believe you are "+$p2$+"";
+ end;
+
+Lquote22b:
+ npctalk "Would you want to be "+$p2$+"";
+ end;
+
+Lquote22c:
+ npctalk "You wish I would tell you you are "+$p2$+"";
+ end;
+
+Lquote22d:
+ npctalk "What would it mean if you were "+$p2$+"";
+ end;
+
+// am
+Lquote23:
+ set $foo,rand(2);
+ if($foo == 0) goto Lquote23a;
+ if($foo == 1) goto Lquote23b;
+
+Lquote23a:
+ npctalk "Why do you say AM?";
+ end;
+
+Lquote23b:
+ npctalk "I don't understand that";
+ end;
+
+// are you
+Lquote24:
+ set $foo,rand(3);
+ if($foo == 0) goto Lquote24a;
+ if($foo == 1) goto Lquote24b;
+ if($foo == 2) goto Lquote24c;
+Lquote24a:
+ npctalk "Why are you interested in whether I am "+$p2$+" or not?";
+ end;
+
+Lquote24b:
+ npctalk "Would you prefer if I weren't "+$p2$+"";
+ end;
+
+Lquote24c:
+ npctalk "Perhaps I am "+$p2$+" in your fantasies";
+ end;
+
+// you are
+Lquote25:
+ npctalk "What makes you think I am "+$p2$+" ?";
+ end;
+
+// because
+Lquote26:
+ set $foo,rand(3);
+ if($foo == 0) goto Lquote26a;
+ if($foo == 1) goto Lquote26b;
+ if($foo == 2) goto Lquote26c;
+Lquote26a:
+ npctalk "Is that the real reason?";
+ end;
+
+Lquote26b:
+ npctalk "What other reasons might there be?";
+ end;
+
+Lquote26c:
+ npctalk "Does that reason seem to explain anything else?";
+ end;
+
+// were you
+Lquote27:
+ set $foo,rand(3);
+ if($foo == 0) goto Lquote27a;
+ if($foo == 1) goto Lquote27b;
+ if($foo == 2) goto Lquote27c;
+Lquote27a:
+ npctalk "Perhaps I was "+$p2$+"";
+ end;
+
+Lquote27b:
+ npctalk "What do you think?";
+ end;
+
+Lquote27c:
+ npctalk "What if I had been "+$p2$+"";
+ end;
+
+// I can't
+Lquote28:
+ set $foo,rand(2);
+ if($foo == 0) goto Lquote28a;
+ if($foo == 1) goto Lquote28b;
+Lquote28a:
+ npctalk "Maybe you could "+$p2$+" now";
+ end;
+
+Lquote28b:
+ npctalk "What if you could "+$p2$+" ?";
+ end;
+
+// I feel
+Lquote29:
+ npctalk "Do you often feel "+$p2$+" ?";
+ end;
+
+// I felt
+Lquote30:
+ npctalk "What other feelings do you have?";
+ end;
+
+// $p1$ I $p2$ you $p3$
+Lquote31:
+ npctalk "Perhaps in your fantasy we "+$p3$+" each other?";
+ end;
+
+// why don't you
+Lquote32:
+ set $foo,rand(3);
+ if($foo == 0) goto Lquote32a;
+ if($foo == 1) goto Lquote32b;
+ if($foo == 2) goto Lquote32c;
+Lquote32a:
+ npctalk "Should you "+$p2$+" yourself?";
+ end;
+
+Lquote32b:
+ npctalk "Do you believe I don't "+$p2$+"";
+ end;
+
+Lquote32c:
+ npctalk "Perhaps I will "+$p2$+" in good time";
+ end;
+
+// yes
+Lquote33:
+ set $foo,rand(3);
+ if($foo == 0) goto Lquote33a;
+ if($foo == 1) goto Lquote33b;
+ if($foo == 2) goto Lquote33c;
+Lquote33a:
+ npctalk "You seem quite positive";
+ end;
+
+Lquote33b:
+ npctalk "You are sure?";
+ end;
+
+Lquote33c:
+ npctalk "I understand";
+ end;
+
+// no
+Lquote34:
+ set $foo,rand(3);
+ if($foo == 0) goto Lquote34a;
+ if($foo == 1) goto Lquote34b;
+ if($foo == 2) goto Lquote34c;
+Lquote34a:
+ npctalk "Why not?";
+ end;
+
+Lquote34b:
+ npctalk "You are being a bit negative";
+ end;
+
+Lquote34c:
+ npctalk "Are you saying NO just to be negative?";
+ end;
+
+// someone
+Lquote35:
+ npctalk "Can you be more specific?";
+ end;
+
+// everyone
+Lquote36:
+ set $foo,rand(4);
+ if($foo == 0) goto Lquote36a;
+ if($foo == 1) goto Lquote36b;
+ if($foo == 2) goto Lquote36c;
+ if($foo == 3) goto Lquote36d;
+Lquote36a:
+ npctalk "surely not everyone";
+ end;
+
+Lquote36b:
+ npctalk "Can you think of anyone in particular?";
+ end;
+
+Lquote36c:
+ npctalk "Who for example?";
+ end;
+
+Lquote36d:
+ npctalk "You are thinking of a special person?";
+ end;
+
+// always
+Lquote37:
+ set $foo,rand(4);
+ if($foo == 0) goto Lquote37a;
+ if($foo == 1) goto Lquote37b;
+ if($foo == 2) goto Lquote37c;
+ if($foo == 3) goto Lquote37d;
+Lquote37a:
+ npctalk "Can you think of a specific example?";
+ end;
+
+Lquote37b:
+ npctalk "When?";
+ end;
+
+Lquote37c:
+ npctalk "What incident are you thinking of?";
+ end;
+
+Lquote37d:
+ npctalk "Really-- always?";
+ end;
+
+// what
+Lquote38:
+ set $foo,rand(5);
+ if($foo == 0) goto Lquote38a;
+ if($foo == 1) goto Lquote38b;
+ if($foo == 2) goto Lquote38c;
+ if($foo == 3) goto Lquote38d;
+ if($foo == 4) goto Lquote38e;
+Lquote38a:
+ npctalk "Why do you ask?";
+ end;
+
+Lquote38b:
+ npctalk "Does that question interest you?";
+ end;
+
+Lquote38c:
+ npctalk "What is it you really want to know?";
+ end;
+
+Lquote38d:
+ npctalk "What do you think?";
+ end;
+
+Lquote38e:
+ npctalk "What comes to your mind when you ask that?";
+ end;
+
+// perhaps
+Lquote39:
+ npctalk "You do not seem quite certain";
+ end;
+
+// are
+Lquote40:
+ set $foo,rand(2);
+ if($foo == 0) goto Lquote40a;
+ if($foo == 1) goto Lquote40b;
+Lquote40a:
+ npctalk "Did you think they might not be "+$p2$+"";
+ end;
+
+Lquote40b:
+ npctalk "Possibly they are "+$p2$;
+ end;
+
+// default
+Lquote41:
+ set $foo,rand(6);
+ if($foo == 0) goto Lquote41a;
+ if($foo == 1) goto Lquote41b;
+ if($foo == 2) goto Lquote41c;
+ if($foo == 3) goto Lquote41d;
+ if($foo == 4) goto Lquote41e;
+ if($foo == 5) goto Lquote41f;
+Lquote41a:
+ npctalk "Very interesting";
+ end;
+
+Lquote41b:
+ npctalk "I am not sure I understand you fully";
+ end;
+
+Lquote41c:
+ npctalk "What does that suggest to you?";
+ end;
+
+Lquote41d:
+ npctalk "Please continue";
+ end;
+
+Lquote41e:
+ npctalk "Go on";
+ end;
+
+Lquote41f:
+ npctalk "Do you feel strongly about discussing such things?";
+ end;
+OnInit:
+ defpattern 1, "([^:]+):.*\\shello.*", "Lquote0";
+ defpattern 1, "([^:]+):.*\\scomputer.*", "Lquote1";
+ defpattern 1, "([^:]+):.*\\sname.*", "Lquote2";
+ defpattern 1, "([^:]+):.*\\ssorry.*", "Lquote3";
+ defpattern 1, "([^:]+):.*\\si\\s+remember\\s+(.*)", "Lquote4";
+ defpattern 1, "([^:]+):.*\\sdo\\s+you\\s+remember\\s+(.*)", "Lquote5";
+ defpattern 1, "([^:]+):.*\\sif\\s+(.*)", "Lquote6";
+ defpattern 1, "([^:]+):.*\\si\\s+dreamt\\s+(.*)", "Lquote7";
+ defpattern 1, "([^:]+):.*\\sdream\\s+about\\s+(.*)", "Lquote8";
+ defpattern 1, "([^:]+):.*\\sdream\\s+(.*)", "Lquote9";
+ defpattern 1, "([^:]+):.*\\smy\\s+mother\\s+(.*)", "Lquote10";
+ defpattern 1, "([^:]+):.*\\smy\\s+father\\s+(.*)", "Lquote11";
+ defpattern 1, "([^:]+):.*\\si\\s+want\\s+(.*)", "Lquote12";
+ defpattern 1, "([^:]+):.*\\si\\s+am\\s+glad\\s+(.*)", "Lquote13";
+ defpattern 1, "([^:]+):\\s+(.*)\\s+i\\s+am\\s+sad\\s+(.*)", "Lquote14";
+ defpattern 1, "([^:]+):\\s+(.*)\\s+are\\s+like\\s+(.*)", "Lquote15";
+ defpattern 1, "([^:]+):\\s+(.*)\\s+is\\s+like\\s+(.*)", "Lquote16";
+ defpattern 1, "([^:]+):.*\\salike\\s+(.*)", "Lquote17";
+ defpattern 1, "([^:]+):.*\\ssame\\s+(.*)", "Lquote18";
+ defpattern 1, "([^:]+):.*\\si\\s+was\\s+(.*)", "Lquote19";
+ defpattern 1, "([^:]+):.*\\swas\\s+i\\s+(.*)", "Lquote20";
+ defpattern 1, "([^:]+):.*\\si\\s+am\\s+(.*)", "Lquote21";
+ defpattern 1, "([^:]+):.*\\sam\\s+i\\s+(.*)", "Lquote22";
+ defpattern 1, "([^:]+):.*\\sam\\s+(.*)", "Lquote23";
+ defpattern 1, "([^:]+):.*\\sare\\s+you\\s+(.*)", "Lquote24";
+ defpattern 1, "([^:]+):.*\\syou\\s+are\\s+(.*)", "Lquote25";
+ defpattern 1, "([^:]+):.*\\sbecause\\s+(.*)", "Lquote26";
+ defpattern 1, "([^:]+):.*\\swere\\s+you\\s+(.*)", "Lquote27";
+ defpattern 1, "([^:]+):.*\\si\\s+(cant|can't|cannot)\\s+(.*)", "Lquote28";
+ defpattern 1, "([^:]+):.*\\si\\s+feel\\s+(.*)", "Lquote29";
+ defpattern 1, "([^:]+):.*\\si\\s+felt\\s+(.*)", "Lquote30";
+ defpattern 1, "([^:]+):.*\\si\\s+(.*)\\s+you\\s+(.*)", "Lquote31";
+ defpattern 1, "([^:]+):.*\\swhy\\s+(don't|dont)\\s+you\\s+(.*)", "Lquote32";
+ defpattern 1, "([^:]+):.*\\syes\\s+(.*)", "Lquote33";
+ defpattern 1, "([^:]+):.*\\sno\\s+(.*)", "Lquote34";
+ defpattern 1, "([^:]+):.*\\ssomeone\\s+(.*)", "Lquote35";
+ defpattern 1, "([^:]+):.*\\severyone\\s+(.*)", "Lquote36";
+ defpattern 1, "([^:]+):.*\\salways\\s+(.*)", "Lquote37";
+ defpattern 1, "([^:]+):.*\\swhat\\s+(.*)", "Lquote38";
+ defpattern 1, "([^:]+):.*\\sperhaps\\s+(.*)", "Lquote39";
+ defpattern 1, "([^:]+):.*\\sare\\s+(.*)", "Lquote40";
+ defpattern 1, "([^:]+):(.*)", "Lquote41";
+
+ activatepset 1;
+ end;
+}
diff --git a/npc/custom/gefenia.txt b/npc/custom/gefenia.txt
new file mode 100644
index 000000000..af6d07b4a
--- /dev/null
+++ b/npc/custom/gefenia.txt
@@ -0,0 +1,34 @@
+//===== Athena Script ========================================
+//= Gefenia Warper Script
+//===== By: ==================================================
+//= Darkchild (1.0)
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= Any Athena Version; RO Episode 6+
+//===== Description: =========================================
+//= Temp Warper to Gefenia
+//===== Additional Comments: =================================
+//= IF you know how you SHOULD get there then please tell me
+//= there's OFFICIAL The Sign quest
+//============================================================
+
+
+prontera.gat,154,198,5 script Geovani 805,{
+ mes "[Geovani]";
+ mes "Hi there my friend,";
+ mes "A while ago a very wise man taught me something.";
+ next;
+ mes "[Geovani]";
+ mes "He taught me how to warp people";
+ mes "And yesterday i finally mastered it!!";
+ next;
+ mes "[Geovani]";
+ mes "Want me to show you?";
+ mes "I can warp you to Gefenia, the old ruins of the rebuild city, Geffen";
+ next;
+ menu "Sure, Warp Me ;)",Mwarpme,"Nah, Don't Try It On me",-;
+ close;
+Mwarpme:
+ warp "gefenia01.gat", 40, 103; close;
+} \ No newline at end of file
diff --git a/npc/custom/healers/heal.txt b/npc/custom/healers/heal.txt
new file mode 100644
index 000000000..d065d30c1
--- /dev/null
+++ b/npc/custom/healers/heal.txt
@@ -0,0 +1,52 @@
+//===== eAthena Script =======================================
+//= Heal Npc
+//===== By: ==================================================
+//= Lotsa People (1.x)
+//===== Current Version: =====================================
+//= 3.0
+//===== Compatible With: =====================================
+//= eAthena 0.1+;
+//===== Description: =========================================
+//= Healer NPC Which Heals For Free
+//===== Additional Comments: =================================
+//= 3.0 By massdriller, Changed and edited the script
+//= added other warp points of maps.
+//= 2.0 By Darkchild, Duplicates And Changed A Bit
+//= you can replace this script file by heal_payment.txt
+//= if you want that players have to pay their healings.
+//============================================================
+
+prontera.gat,150,184,5 script Healer#h1-1::Healer 742,{
+
+ mes "[Healer]";
+ mes "I have amazing healing powers!!";
+ mes "You look like a person who needs them";
+ mes "Want some?";
+ next;
+ menu "Heal",-,"No thanks",CANCEL;
+ percentheal 100,100;
+ mes "[Healer]";
+ mes "Wonderfull, You are now healed!.";
+ mes "Have fun adventuring!!";
+ close;
+ CANCEL:
+ mes "[Healer]";
+ mes "Allright, come back if you need a heal.";
+ close;
+}
+
+morocc.gat,159,96,5 duplicate(Healer) Healer#h1-2 742
+ayothaya.gat,155,111,5 duplicate(Healer) Healer#h1-3 742
+geffen.gat,121,61,5 duplicate(Healer) Healer#h1-4 742
+umbala.gat,94,162,5 duplicate(Healer) Healer#h1-5 742
+payon.gat,180,105,5 duplicate(Healer) Healer#h1-6 742
+alberta.gat,185,144,5 duplicate(Healer) Healer#h1-7 742
+aldebaran.gat,134,123,5 duplicate(Healer) Healer#h1-8 742
+izlude.gat,125,118,5 duplicate(Healer) Healer#h1-9 742
+xmas.gat,149,136,5 duplicate(Healer) Healer#h1-10 742
+comodo.gat,188,162,5 duplicate(Healer) Healer#h1-11 742
+amatsu.gat,200,80,5 duplicate(Healer) Healer#h1-12 742
+gonryun.gat,164,130,5 duplicate(Healer) Healer#h1-13 742
+yuno.gat,152,186,5 duplicate(Healer) Healer#h1-14 742
+niflheim.gat,188,180,5 duplicate(Healer) Healer#h1-15 742
+louyang.gat,225,103,5 duplicate(Healer) Healer#h1-16 742 \ No newline at end of file
diff --git a/npc/custom/healers/heal_payment.txt b/npc/custom/healers/heal_payment.txt
new file mode 100644
index 000000000..325bfd008
--- /dev/null
+++ b/npc/custom/healers/heal_payment.txt
@@ -0,0 +1,105 @@
+//===== eAthena Script =======================================
+//= Healer Script (/w payments)
+//===== By: ==================================================
+//= Yor & abunch of other people
+//===== Current Version: =====================================
+//= 1.2
+//===== Compatible With: =====================================
+//= Any Athena Version
+//===== Description: =========================================
+//= NPC heals/regenerates people against zenys
+//===== Additional Comments: =================================
+//= alternative dog with payment.
+//= each HP need 1 zeny
+//= each SP need (baselevel / 5) zenys
+//= calculation is done at start of the script
+//= Added Duplicates And Correct payon Loc [Darkchild]
+//= Some modifications. Added NPC locations. [massdriller]
+//============================================================
+
+prontera.gat,150,184,5 script Healer#h1-1::Healer 742,{
+ set @tempHp, MaxHp-Hp;
+ set @tempSp, ((MaxSp-Sp) * BaseLevel) / 5;
+ if (@tempHp > 0) goto WOUNDED;
+ if (@tempSp > 0) goto ONLY_REGENERATION;
+
+ mes "[Healer]";
+ mes "Oh?";
+ mes "You do not look like a person in pain.";
+ close;
+
+ WOUNDED:
+ if (@tempSp > 0) goto WITH_REGENERATION;
+ mes "[Healer]";
+ mes "Oh dear, you look really hurt,";
+ mes "I can cure you for: "+@tempHp+" z)";
+ mes "Do you want me to cure you?";
+ next;
+ menu "Healings ("+@tempHp+"z)",HEALINGS,"No, thanks",CANCEL;
+
+ WITH_REGENERATION:
+ mes "[Healer]";
+ mes "Do you want only your HP to be healed? ("+@tempHp+" z)";
+ mes "Do you want only your SP to be healed? ("+@tempSp+" z)?";
+ mes "Or Would you like both? ("+(@tempHp+@tempSp)+" z)";
+ next;
+ menu "Only HP ("+@tempHp+"z)",HEALINGS,"Only SP ("+@tempSp+"z)",REGENERATION,"Both HP & SP ("+(@tempHp+@tempSp)+"z)",HEALINGS_AND_REGEN,"Nothing, thanks",CANCEL;
+
+ ONLY_REGENERATION:
+ mes "[Healer]";
+ mes "So, you only want your SP to heal? ("+@tempSp+" z)";
+ mes "I need to make a living...";
+ next;
+ menu "Regeneration ("+@tempSp+"z)",REGENERATION,"No, thanks",CANCEL;
+
+ HEALINGS:
+ if (Zeny < @tempHp) goto NO_ZENYS;
+ set Zeny, Zeny-@tempHp;
+ heal 30000,0;
+ goto FIN;
+
+ REGENERATION:
+ if (Zeny < @tempSp) goto NO_ZENYS;
+ set Zeny, Zeny-@tempSp;
+ heal 0,30000;
+ goto FIN;
+
+ HEALINGS_AND_REGEN:
+ if (Zeny < (@tempHp+@tempSp)) goto NO_ZENYS;
+ set Zeny, Zeny-(@tempHp+@tempSp);
+ heal 30000,30000;
+ goto FIN;
+
+ NO_ZENYS:
+ mes "[Healer]";
+ mes "Oh dear, you don't look like you have enough zeny.";
+ mes "Sorry, i can't help you.";
+ close;
+
+ FIN:
+ mes "[Healer]";
+ mes "You are Completely Healed.";
+ close;
+
+ CANCEL:
+ mes "[Healer]";
+ mes "Allright. Please come again if you need anything.";
+ close;
+}
+
+
+morocc.gat,159,96,5 duplicate(Healer) Healer#h2-2 742
+ayothaya.gat,155,111,5 duplicate(Healer) Healer#h2-3 742
+geffen.gat,121,61,5 duplicate(Healer) Healer#h2-4 742
+umbala.gat,94,162,5 duplicate(Healer) Healer#h2-5 742
+payon.gat,180,105,5 duplicate(Healer) Healer#h2-6 742
+alberta.gat,185,144,5 duplicate(Healer) Healer#h2-7 742
+aldebaran.gat,134,123,5 duplicate(Healer) Healer#h2-8 742
+izlude.gat,125,118,5 duplicate(Healer) Healer#h2-9 742
+xmas.gat,149,136,5 duplicate(Healer) Healer#h2-10 742
+comodo.gat,188,162,5 duplicate(Healer) Healer#h2-11 742
+amatsu.gat,200,80,5 duplicate(Healer) Healer#h2-12 742
+gonryun.gat,164,130,5 duplicate(Healer) Healer#h2-13 742
+yuno.gat,152,186,5 duplicate(Healer) Healer#h2-14 742
+niflheim.gat,188,180,5 duplicate(Healer) Healer#h2-15 742
+louyang.gat,225,103,5 duplicate(Healer) Healer#h2-16 742 \ No newline at end of file
diff --git a/npc/custom/jobs/jobmaster.txt b/npc/custom/jobs/jobmaster.txt
new file mode 100644
index 000000000..8dc3d01fc
--- /dev/null
+++ b/npc/custom/jobs/jobmaster.txt
@@ -0,0 +1,499 @@
+//===== eAthena Script =======================================
+//= eAthena Jobchanger AKA Job Master
+//===== By: ==================================================
+//= eAthena Dev Team [LunatikBunnie] (Editted by Amada`)
+//===== Current Version: =====================================
+//= 1.3
+//===== Compatible With: =====================================
+//= Any Athena Version
+//===== Description: =========================================
+//= Changes your job without asking too much
+//= For other info, please contact me at Lunatikbunnie@gmail.com
+//= Editted menu to avoid button mashing.
+//= 1.3 Added TK/SL/SG, thanks to Haplo. Fixed minor bugs [Lupus]
+//= script leaves grabage variable: 'lastJob'
+//============================================================
+
+// ------------------------------ Start ------------------------------
+prontera.gat,153,193,6 script Job Master 123,{
+// Variable Setup
+ set @MinimumJB, 40; //Minimum job level for changing between 2nd and advance Class (Default : 40)
+ set @GivePlat, 1; //Give Platinum skills on Jobchange (Default : 1-yes)
+ set @SupNovM, 45; //Base Level to change into Super Novice (Default : 45)
+// Check Jobtype
+ if(Upper == 1 && Class >= Job_Lord_Knight) goto L_cantCh;
+ if(SkillPoint != 0) goto L_skillUsed;
+ if(Class == Job_Novice) goto L_novice;
+ if(JobLevel <10) goto L_notEn;
+ if((Class ==Job_Novice_High) && ((lastJob ==7) || (lastJob ==14))) goto L_cHsword;
+ if((Class ==Job_Novice_High) && ((lastJob ==9) || (lastJob ==16))) goto L_cHmage;
+ if((Class ==Job_Novice_High) && ((lastJob ==11) || (lastJob ==19) || (lastJob ==20))) goto L_cHarcher;
+ if((Class ==Job_Novice_High) && ((lastJob ==8) || (lastJob ==15))) goto L_cHacolyte;
+ if((Class ==Job_Novice_High) && ((lastJob ==10) || (lastJob ==18))) goto L_cHmerchant;
+ if((Class ==Job_Novice_High) && ((lastJob ==12) || (lastJob ==17))) goto L_cHthief;
+ if(JobLevel <@MinimumJB) goto L_notEn;
+ if(Class ==1) goto L_iSword;
+ if(Class ==2) goto L_iMage;
+ if(Class ==3) goto L_iArcher;
+ if(Class ==4) goto L_iAcolyte;
+ if(Class ==5) goto L_iMerchant;
+ if(Class ==6) goto L_iThief;
+ if(Class ==4046) goto L_iTaekwon;
+ if(checkfalcon(0) || checkcart(0) || checkriding(0)) goto L_remove;
+ if(lastJob ==7) goto L_iKnight;
+ if(lastJob ==8) goto L_iPriest;
+ if(lastJob ==9) goto L_iWizard;
+ if(lastJob ==10) goto L_iBlacksmith;
+ if(lastJob ==11) goto L_iHunter;
+ if(lastJob ==12) goto L_iAssassin;
+ if(lastJob ==14) goto L_iCrusader;
+ if(lastJob ==15) goto L_iMonk;
+ if(lastJob ==16) goto L_iSage;
+ if(lastJob ==17) goto L_iRogue;
+ if(lastJob ==18) goto L_iAlchemist;
+ if(lastJob ==19) goto L_iBard;
+ if(lastJob ==20) goto L_iDancer;
+ if((Class >=7) && (Class <=20)) goto L_rebirth;
+ close;
+
+// Novice
+ L_novice:
+ skill 142,1,0;
+ skill 143,1,0;
+ if(JobLevel<10) goto L_notEn;
+ mes "^ff0000[Job Master]^000000";
+ mes "Welcome, please select the job you wish to change into";
+ menu "Swordsman",L_sword,"Mage",L_mage,"Archer",L_archer,"Acolyte",L_acolyte,"Merchant",L_merchant,"Thief",L_thief,"Super Novice",L_superN,"Taekwon",L_taekwon;
+// Change to Swordsman
+ L_sword:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 1;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Mage
+ L_mage:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 2;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Archer
+ L_archer:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 3;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Acolyte
+ L_acolyte:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 4;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Merchant
+ L_merchant:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 5;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Thief
+ L_thief:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 6;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Super Novice
+ L_superN:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ if(BaseLevel<@SupNovM) goto L_notSup;
+ jobchange 23;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Taekwon
+ L_taekwon:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange Job_Taekwon;
+ callfunc "F_ClearJobVar";
+ close;
+// Change to Knight/Crusader
+ L_iSword:
+ mes "^ff0000[Job Master]^000000";
+ mes "Welcome, please select the job you wish to change into";
+ menu "Knight",L_knight,"Crusader",L_crusader;
+ L_knight:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 7;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+ L_crusader:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 14;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Wizard/Sage
+ L_iMage:
+ mes "^ff0000[Job Master]^000000";
+ mes "Welcome, please select the job you wish to change into";
+ menu "Wizard",L_wizard,"Sage",L_sage;
+ L_wizard:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 9;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+ L_sage:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 16;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Hunter/Bard/Dancer
+ L_iArcher:
+ mes "^ff0000[Job Master]^000000";
+ mes "Welcome, please select the job you wish to change into";
+ menu "Hunter",L_hunter,"Bard/Dancer",L_bandd;
+ L_hunter:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 11;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+ L_bandd:
+ if(sex==0) goto L_dancer;
+ if(sex==1) goto L_bard;
+ L_bard:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 19;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+ L_dancer:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 20;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Priest/Monk
+ L_iAcolyte:
+ mes "^ff0000[Job Master]^000000";
+ mes "Welcome, please select the job you wish to change into";
+ menu "Priest",L_priest,"Monk",L_monk;
+ L_priest:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 8;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+ L_monk:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 15;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Blacksmith/Alchemist
+ L_iMerchant:
+ mes "^ff0000[Job Master]^000000";
+ mes "Welcome, please select the job you wish to change into";
+ menu "Blacksmith",L_blacksmith,"Alchemist",L_alchemist;
+ L_blacksmith:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 10;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+ L_alchemist:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 18;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Assassin/Rogue
+ L_iThief:
+ mes "^ff0000[Job Master]^000000";
+ mes "Welcome, please select the job you wish to change into";
+ menu "Assassin",L_assassin,"Rogue",L_rogue;
+ L_assassin:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 12;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+ L_rogue:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 17;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Star Gladiator/Soul Linker
+ L_iTaekwon:
+ mes "^ff0000[Job Master]^000000";
+ mes "Welcome, please select the job you wish to change into";
+ menu "Star Gladiator",L_SG,"Soul Linker",L_SL;
+ L_SG:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange Job_Star_Gladiator;
+ callfunc "F_ClearJobVar";
+ close;
+ L_SL:
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ jobchange Job_Soul_Linker;
+ callfunc "F_ClearJobVar";
+ close;
+// Rebirth
+ L_rebirth:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to reborn?";
+ next;
+ mes "Are you SURE?";
+ menu "No",L_quit,"Yes",-;
+ if ((BaseLevel < 99) || (JobLevel < 50)) goto L_cantCh;
+ set lastJob, readparam(19);
+ jobchange 24;
+ resetlvl(1);
+ skill 142,1,0;
+ skill 143,1,0;
+ mes "^ff0000[Job Master]^000000";
+ mes "You are now reborn.";
+ mes "Please come again soon.";
+ close;
+ L_cHsword:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a High Swordsman?";
+ next;
+ menu "No",L_quit,"Yes",-;
+ jobchange 25;
+ mes "^ff0000[Job Master]^000000";
+ mes "Thank you, please come again soon!";
+ close;
+ L_cHmage:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a High Mage?";
+ next;
+ menu "No",L_quit,"Yes",-;
+ jobchange 26;
+ mes "^ff0000[Job Master]^000000";
+ mes "Thank you, please come again soon!";
+ close;
+ L_cHarcher:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a High Archer?";
+ next;
+ menu "No",L_quit,"Yes",-;
+ jobchange 27;
+ mes "^ff0000[Job Master]^000000";
+ mes "Thank you, please come again soon!";
+ close;
+ L_cHacolyte:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a High Acolyte?";
+ next;
+ menu "No",L_quit,"Yes",-;
+ jobchange 28;
+ mes "^ff0000[Job Master]^000000";
+ mes "Thank you, please come again soon!";
+ close;
+ L_cHmerchant:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a High Merchant?";
+ next;
+ menu "No",L_quit,"Yes",-;
+ jobchange 29;
+ mes "^ff0000[Job Master]^000000";
+ mes "Thank you, please come again soon!";
+ close;
+ L_cHthief:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a High Thief?";
+ next;
+ menu "No",L_quit,"Yes",-;
+ jobchange 30;
+ mes "^ff0000[Job Master]^000000";
+ mes "Thank you, please come again soon!";
+ close;
+// Change to Lord Knight
+ L_iKnight:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a Lord Knight?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 31;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Paladin
+ L_iCrusader:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a Paladin?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 38;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to High Priest
+ L_iPriest:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a High Priest?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 32;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Champion
+ L_iMonk:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a Champion?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 39;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Whitesmith
+ L_iBlacksmith:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a Whitesmith?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 34;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Creator
+ L_iAlchemist:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a Creator?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 42;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to High Wizard
+ L_iWizard:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a High Wizard?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 33;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Professor
+ L_iSage:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a Professor?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 40;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Sniper
+ L_iHunter:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a Sniper?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 35;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Clown
+ L_iBard:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a Clown?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 43;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Gypsy
+ L_iDancer:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a Gypsy?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 44;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Assassin Cross
+ L_iAssassin:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into an Assassin Cross?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 36;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Change to Stalker
+ L_iRogue:
+ mes "^ff0000[Job Master]^000000";
+ mes "Do you want to change into a Stalker?";
+ menu "No",L_quit,"Yes",-;
+ jobchange 41;
+ if(@GivePlat) goto L_GivePlat;
+ close;
+// Giving Platinum Skills
+ L_GivePlat:
+ if (BaseJob==Job_SuperNovice) goto L_sSuperN;
+ if ((Class==Job_Swordman) || (Class==7) || (Class==13) || (Class==14)|| (Class==21) || (Class==4002) || (Class==4008)) goto L_sSword;
+ if ((Class==Job_Mage) || (Class==9) || (Class==16) || (Class==4003) || (Class==4010) || (Class==4017)) goto L_sMage;
+ if ((Class==Job_Archer) || (Class==11) || (Class==19) || (Class==20) || (Class==4004) || (Class==4012) || (Class==4020) || (Class==4021)) goto L_sArcher;
+ if ((Class==Job_Acolyte) || (Class==8) || (Class==15) || (Class==50) || (Class==54) || (Class==61) || (Class==4005) || (Class==4009) || (Class==4016)) goto L_sAcolyte;
+ if ((Class==Job_Merchant) || (Class==10) || (Class==18) || (Class==51) || (Class==56) || (Class==64) || (Class==4006) || (Class==4011) || (Class==4019)) goto L_sMerchant;
+ if ((Class==Job_Thief) || (Class==12) || (Class==17) || (Class==52) || (Class==58) || (Class==63) || (Class==4007) || (Class==4013) || (Class==4018)) goto L_sThief;
+ L_sSuperN:
+ skill 142,1,0;
+ close;
+ L_sSword:
+ skill 142,1,0;
+ skill 144,1,0;
+ skill 145,1,0;
+ skill 146,1,0;
+ L_sMage:
+ skill 142,1,0;
+ skill 157,1,0;
+ close;
+ L_sArcher:
+ skill 142,1,0;
+ skill 147,1,0;
+ skill 148,1,0;
+ close;
+ L_sAcolyte:
+ skill 142,1,0;
+ skill 156,1,0;
+ close;
+ L_sMerchant:
+ skill 142,1,0;
+ skill 153,1,0;
+ skill 154,1,0;
+ skill 155,1,0;
+ close;
+ L_sThief:
+ skill 142,1,0;
+ skill 149,1,0;
+ skill 150,1,0;
+ skill 151,1,0;
+ skill 152,1,0;
+ close;
+ L_quit:
+ close;
+// Errors
+ L_cantCh:
+ mes "^ff0000[Job Master]^000000";
+ mes "I'm sorry, you do not meet the requirements to change";
+ mes "Please come again soon!";
+ close;
+ L_skillUsed:
+ mes "^ff0000[Job Master]^000000";
+ mes "I'm sorry, please use up all your skill points before changing jobs";
+ mes "Please come again soon!";
+ close;
+ L_notEn:
+ mes "^ff0000[Job Master]^000000";
+ mes "I'm sorry, you do not seem to have enough Job Levels";
+ mes "Please come again soon!";
+ close;
+ L_notSup:
+ mes "^ff0000[Job Master]^000000";
+ mes "I'm sorry, you do not seem to have enough Base Levels";
+ mes "Please come again soon!";
+ close;
+ L_remove:
+ mes "^ff0000[Job Master]^000000";
+ mes "Please remove your cart,falcon or peco";
+ mes "Please come again soon!";
+ close;
+}
+// ------------------------------ End -------------------
diff --git a/npc/custom/jobs/old/jobchange.txt b/npc/custom/jobs/old/jobchange.txt
new file mode 100644
index 000000000..d1921a3b8
--- /dev/null
+++ b/npc/custom/jobs/old/jobchange.txt
@@ -0,0 +1,734 @@
+//===== eAthena Script =======================================
+//= Jobchanger Script
+//===== By: ==================================================
+//= eAthena Scripting Team
+//===== Current Version: =====================================
+//= 2.1
+//===== Compatible With: =====================================
+//= Athena Version RC1+
+//===== Description: =========================================
+//= Changes to every class ingame.
+//= Making sure they become the right class.
+//===== Additional Comments: =================================
+//Added missing param into resetlevel [Lupus]
+//Remade Adv. Classes Menu. [shadowlady]
+//Fixed some bugs, by midas
+//Fixed Mounted Class bugs and Baby Class bugs [Zoc]
+//============================================================
+
+prontera.gat,160,186,6 script Job Changer 94,{
+cutin "kafra_01",2;
+mes "[ ^0065DFJobra^000000 ]";
+mes "Sup? I'm the insanely cool and uber cute jobchanger thingy for eAthena! First of all, what class would you like to change into (must meet preliminary requirements for each class..)?";
+next;
+menu "First Class",LFirstClass,"Second Class (2-1)",LSecondClass,"Alternate Second Class (2-2)",LSecondClass2,"Novice High",LNovice2,"Advance First Class",Llevelcheck,"Advance Second Class",Llevelcheck,"Super Novice",LSuperNovice;
+LNovice2:
+ if ((readparam(11) >= 99) && (readparam(55) >= 50) || ((readparam(19) > 20) && (readparam(19) != 23))) goto Lchange;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Ummmm, excuse me... o.O...";
+ mes "Hey! You don't MEET the class requirements...";
+ mes "You're not ready! Get away, punk! *rolls eyes*";
+ mes "Only the bravest and highest level 2nd Classes and Alternate 2nd Classes can change into the Novice High... jeeze.";
+ cutin "kafra_01",255;
+ close;
+
+Lchange:
+ if (((readparam(19) >= 46) && (readparam(19) <= 68)) || ((readparam(19) >= 4023) && (readparam(19) <= 4045))) goto Babynochange;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "We shall start the ceremony....";
+ next;
+ if(oldclass > 0) goto Llevelcheck;
+ set oldclass, readparam(19);
+ jobchange 24;
+ resetlvl(1);
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "You have been reborn...";
+ cutin "kafra_01",255;
+ close;
+
+Babynochange:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Sorry little one, baby classes can't change to Novice High. They would loose their cuteness and their parents won't allow it.";
+ cutin "kafra_01",255;
+ close;
+
+Llevelcheck:
+ if(readparam(55) >= 45 || readparam(19) == 4001 && readparam(55) >= 10) goto Ladvclasses;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "You need a higher level to change...";
+ cutin "kafra_01",255;
+ close;
+
+Ladvclasses:
+ if(SkillPoint != 0) goto Lskillpt;
+//Lord Knight & Paladin
+ if(oldclass == 7 && readparam(19) == 4001 || oldclass == 13 && readparam(19) == 4001 || oldclass == 14 &&
+readparam(19) == 4001 || oldclass == 21 && readparam(19) == 4001) goto Lswordsmanhigh;
+ if(readparam(19) == 4002 && oldclass == 7 || readparam(19) == 4002 && oldclass == 13) goto Llordknight;
+ if(readparam(19) == 4002 && oldclass == 14 || readparam(19) == 4002 && oldclass == 21) goto Lpaladin;
+//Assassin Cross & Stalker
+ if(oldclass == 12 && readparam(19) == 4001 || oldclass == 17 && readparam(19) == 4001) goto Lthiefhigh;
+ if(readparam(19) == 4007 && oldclass == 12) goto Lassassincross;
+ if(readparam(19) == 4007 && oldclass == 17) goto Lstalker;
+//High Priest & Champion
+ if(oldclass == 8 && readparam(19) == 4001 || oldclass == 15 && readparam(19) == 4001) goto Lacolytehigh;
+ if(readparam(19) == 4005 && oldclass == 8) goto Lhighpriest;
+ if(readparam(19) == 4005 && oldclass == 15) goto Lchampion;
+//Sniper & Clown & Gypsy
+ if(oldclass == 11 && readparam(19) == 4001 || oldclass == 19 && readparam(19) == 4001 || oldclass == 20 && readparam(19) == 4001) goto Larcherhigh;
+ if(readparam(19) == 4004 && oldclass == 11) goto Lsniper;
+ if(readparam(19) == 4004 && oldclass == 19) goto Lclown;
+ if(readparam(19) == 4004 && oldclass == 20) goto Lgypsy;
+//Whitesmith & Creator
+ if(oldclass == 10 && readparam(19) == 4001 || oldclass == 18 && readparam(19) == 4001) goto Lmerchanthigh;
+ if(readparam(19) == 4006 && oldclass == 10) goto Lwhitesmith;
+ if(readparam(19) == 4006 && oldclass == 18) goto Lcreator;
+//High Wizard & Professor
+ if(oldclass == 9 && readparam(19) == 4001 || oldclass == 16 && readparam(19) == 4001) goto Lhighmage;
+ if(readparam(19) == 4003 && oldclass == 9) goto Lhighwizard;
+ if(readparam(19) == 4003 && oldclass == 16) goto Lprofessor;
+ if ( oldclass == 0 && readparam(19) >= 4001) goto Nooldclasset;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Please... Remove your cart, leave your falcon and get off your peco before you change.";
+ mes "[" + readparam(19) + "] [" + oldclass + "]";
+ cutin "kafra_01",255;
+ close;
+//Lord Knight & Paladin
+ Nooldclasset:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Say, what were you before you were reborn?";
+ if (readparam(19) == 4001) goto Ishnov;
+ if (readparam(19) == 4002) goto Ishsword;
+ if (readparam(19) == 4003) goto Ishmage;
+ if (readparam(19) == 4004 && Sex == 0) goto Isharcherf;
+ if (readparam(19) == 4004 && Sex == 1) goto Isharcherm;
+ if (readparam(19) == 4005) goto Ishacco;
+ if (readparam(19) == 4006) goto Ishmerch;
+ if (readparam(19) == 4002) goto Ishthief;
+
+ Ishnov:
+ menu "Knight",Wasknight,"Priest",Waspriest,"Wizard",Waswizard,"Blacksmith",Wasblacksmith,"Hunter",Washunter,"Assasin",Wasassa,"Crusader",Wascrusader,"Monk",Wasmonk,"Sage",Wassage,"Rogue",Wasrogue,"Alchemist",Wasalche,"Bard",Wasbard,"Dancer",Wasdancer;
+ Ishsword:
+ menu "Knight",Wasknight,"Crusader",Wascrusader;
+ Ishmage:
+ menu "Wizard",Waswizard,"Sage",Wassage;
+ Isharcherf:
+ menu "Hunter",Washunter,"Dancer",Wasdancer;
+ Isharcherm:
+ menu "Hunter",Washunter,"Bard",Wasbard;
+ Ishacco:
+ menu "Priest",Waspriest,"Monk",Wasmonk;
+ Ishmerch:
+ menu "Blacksmith",Wasblacksmith,"Alchemist",Wasalche;
+ Ishthief:
+ menu "Assasin",Wasassa,"Rogue",Wasrogue;
+// now finally the setting of oldclass
+ Wasknight:
+ set oldclass,7;
+ goto Ladvclasses;
+ Waspriest:
+ set oldclass,8;
+ goto Ladvclasses;
+ Waswizard:
+ set oldclass,9;
+ goto Ladvclasses;
+ Wasblacksmith:
+ set oldclass,10;
+ goto Ladvclasses;
+ Washunter:
+ set oldclass,11;
+ goto Ladvclasses;
+ Wasassa:
+ set oldclass,12;
+ goto Ladvclasses;
+ Wascrusader:
+ set oldclass,14;
+ goto Ladvclasses;
+ Wasmonk:
+ set oldclass,15;
+ goto Ladvclasses;
+ Wassage:
+ set oldclass,16;
+ goto Ladvclasses;
+ Wasrogue:
+ set oldclass,17;
+ goto Ladvclasses;
+ Wasalche:
+ set oldclass,18;
+ goto Ladvclasses;
+ Wasbard:
+ set oldclass,19;
+ goto Ladvclasses;
+ Wasdancer:
+ set oldclass,20;
+ goto Ladvclasses;
+
+//Lord Knight & Paladin
+Lswordsmanhigh:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Wow, fantastic! Doesn't all that hard work feel like its paid off? *kekeke* I see the ^B70004BLOOD of Porings^000000 on your hands! You truly are fit for the ^0005CESwordsman^000000 job! ^_^";
+ cutin "kafra_01",255;
+ jobchange 4002;
+ close;
+
+Llordknight:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "w00t w00t! You are Job Level 40, you've been a Swordie High all your life...";
+ mes "Alrite, you are ready to become the doer of Justice, the embodiment of Heroism, the very soul and life of Valor! ";
+ mes "...";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Yes! You are ready to become... a Lord Knight! ";
+ mes "Go save a Damsel in Distress or something..";
+ cutin "kafra_01",255;
+ jobchange 4008;
+ close;
+
+Lpaladin:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Mmmmm, I always liked Paladins.. their broad shoulders always turned me on....";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Go Forth On Your Mission To Serve God";
+ mes "This Mission is Free of Charge";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "That means your not getting paid dumbass!";
+ emotion 29;
+ cutin "kafra_01",255;
+ jobchange 38;
+ close;
+//Assassin Cross & Stalker
+Lthiefhigh:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Those devious hand of yours really look like they need to grab something (no comment)..... go forth and steal!!";
+ cutin "kafra_01",255;
+ jobchange 4007;
+ close;
+
+Lassassincross:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Poof! Kekeke... ";
+ cutin "kafra_01",255;
+ jobchange 4013;
+ close;
+
+Lstalker:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Hmf.";
+ mes "How goes the stalking lately?";
+ mes "Found Any New Victims?";
+ cutin "kafra_01",255;
+ jobchange 41;
+ close;
+//High Priest & Champion
+Lacolytehigh:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Yay.. go read a Bible.. or whatever.. er..yeah";
+ cutin "kafra_01",255;
+ jobchange 4005;
+ close;
+
+Lhighpriest:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "I bet you are GODDAMNED TIRED of NOT having Sp Recovery, right? Well I am tired of hearing little Jesus-Hugging Acolytes scream this every time they're low on Sp... ";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Yay! You've now reached Priesthood! It's sorta like Manhood.. but not really, see with Manhood, you get this little thingy between your legs.. WHOOPs, I am getting so off topic..";
+ cutin "kafra_01",255;
+ jobchange 4009;
+ close;
+
+Lchampion:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "You are the Champion of the Weak and Poor.";
+ mes "Wow it must suck being you ^_^!!!";
+ cutin "kafra_01",255;
+ jobchange 39;
+ close;
+
+//Sniper & Clown & Gypsy
+Larcherhigh:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "I used to poke things with a stick when I was a child..";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "I guess you're like me! You hurl pointed sticks at things! Kekeke...";
+ cutin "kafra_01",255;
+ jobchange 4004;
+ close;
+
+Lsniper:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Oh goodie, you've met all the requirements... did you have fun hurling pointed sticks at monsters? Well guess what?";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Now you can hurl pointed sticks at monsters AND keep them in one place! w00t, yea! Traps are a great thing...";
+ jobchange 35;// Job: Job_Sniper
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "You know what... since I'm just soooo nice... (as long as you dont piss me off *grumble grumble*)";
+ mes "I'm gonna give you a complimentary falcon! Use it well! Oh.. and you might wanna wear a hat, this falcon sometimes, uh... poops..";
+ cutin "kafra_01",255;
+ setfalcon;
+ jobchange 4012;
+ close;
+Lclown:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "What an amusing fellow.";
+ mes "Yay! Go play some ballads for some Dancers or something, I just can't stand your clothes... ewww.";
+ cutin "kafra_01",255;
+ jobchange 43;
+ next;
+Lgypsy:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Uh-huh, swivel those hips girl! Gypsies are sooo sexy.. too bad I'm stuck in this ugly Kafra dress.. blah, if only I could strip down to a little thong too... *sigh*";
+ cutin "kafra_01",255;
+ jobchange 44;
+ close;
+
+//Whitesmith & Creator
+Lmerchanthigh:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Oh yeah, Mr. Moneybags, SOMEBODY here just loves the sound of coins jinglin'...";
+ mes "Well its not me!.. >_>..... <_<... bah.. ";
+ cutin "kafra_01",255;
+ jobchange 4006;
+ close;
+
+Lwhitesmith:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Oooo~~ Goodie goodie gumdrops! You meet all the requirements! Guess what I'm gonna do ^_^...";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "YUP! You guessed it! I turned you into a Whitesmith! Aren't you PROUD of yourself... Go and make a few weapons! Open up shops across the nation! Yea yea yea! Go go go! w00t! Ho yeah! ";
+ cutin "kafra_01",255;
+ jobchange 4011;
+ close;
+Lcreator:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Create potions for the brave heros of Rune-Midgart";
+ cutin "kafra_01",255;
+ jobchange 42;
+ close;
+//High Wizard & Professor
+Lhighmage:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Nice, now you can finally wield the power of ^2200DFM^7600F9A^AF00FBN^DA00DFA^000000, your spiritual energy!!!";
+ cutin "kafra_01",255;
+ jobchange 4003;
+ close;
+
+Lhighwizard:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Weeee, doesn't it feel great to finally become a High Wizard? It's like a warm bath.... ahhhhhhh......";
+ cutin "kafra_01",255;
+ jobchange 4010;
+ close;
+
+Lprofessor:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Time for you to teach your first quantum physics class";
+ cutin "kafra_01",255;
+ jobchange 40;
+ close;
+
+LFirstClass:
+ if(class != 0) goto Lnovice;
+ if(joblevel<10) goto Ljobten;
+ if(SkillPoint != 0) goto Lskillpt;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "So... getting your first job, eh? Thats cool, we all need to grow up sometime I guess...";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Pick a job, any job! Bwahaha.........";
+ menu "Swordsman",LSword,"Mage",LMage,"Thief",LThief,"Merchant",LMerc,"Acolyte",LAco,"Archer",LArch,"Cancel",LCancel;
+
+Lnovice:
+ cutin "kafra_01",255;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Ummmm, excuse me... o.O...";
+ mes "You don't LOOK like a novice...";
+ mes "Hey! You're no novice! Get away, punk!";
+ mes "*rolls eyes*";
+ mes "Only NOVICES can change into the First Job... jeeze.";
+ cutin "kafra_01",255;
+ close;
+
+Lskillpt:
+ cutin "kafra_01",255;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Please use up all your skill points before changing into the next job! ";
+ cutin "kafra_01",255;
+ close;
+
+Ljobten:
+ cutin "kafra_01",255;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Ugh, you need to have at least a Job Level of 10 before changing into the first class... go kill some porings or something.. >.>'";
+ cutin "kafra_01",255;
+ close;
+
+LSword:
+ cutin "kafra_01",255;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Wow, fantastic! Doesn't all that hard work feel like its paid off? *kekeke* I see the ^B70004BLOOD of Porings^000000 on your hands! You truly are fit for the ^0005CESwordsman^000000 job! ^_^";
+ cutin "kafra_01",255;
+ jobchange 1;// Job: Job_Swordman
+ close;
+
+LMage:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Nice, now you can finally wield the power of ^2200DFM^7600F9A^AF00FBN^DA00DFA^000000, your spiritual energy!!!";
+ cutin "kafra_01",255;
+ jobchange 2;// Job: Job_Mage
+ close;
+
+LThief:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Those devious hand of yours really look like they need to grab something (no comment)..... go forth and steal!!";
+ cutin "kafra_01",255;
+ jobchange 6;// Job: Job_Thief
+ close;
+
+LMerc:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Oh yeah, Mr. Moneybags, SOMEBODY here just loves the sound of coins jinglin'...";
+ mes "Well its not me!.. >_>..... <_<... bah.. ";
+ cutin "kafra_01",255;
+ jobchange 5;// Job: Job_Merchant
+ close;
+
+LAco:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Yay.. go read a Bible.. or whatever.. er..yeah";
+ cutin "kafra_01",255;
+ jobchange 4;// Job: Job_Acolyte
+ close;
+
+LArch:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "I used to poke things with a stick when I was a child..";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "I guess you're like me! You hurl pointed sticks at things! Kekeke...";
+ cutin "kafra_01",255;
+ jobchange 3;// Job: Job_Archer
+ close;
+
+LSecondClass:
+ if(SkillPoint != 0) goto Lskillpt;
+ if(joblevel<40) goto Ljobforty;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Nice... you are ready to change into the Second Job! Things get really fun after this!";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "What would you like to be? (Please be the preliminary job)";
+ menu "Knight",LKnight,"Wizard",LWizard,"Hunter",LHunter,"Blacksmith",LBlacksmith,"Assassin",LAssassin,"Priest",LPriest,"Cancel",LCancel;
+
+ Ljobforty:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "You must be at least Job Level 40 before even thinking about changing into the Second Job.";
+ cutin "kafra_01",255;
+ close;
+
+ LKnight:
+ if(class !=1) goto LNotSword;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "w00t w00t! You are Job Level 40, you've been a Swordie all your life...";
+ mes "Alrite, you are ready to become the doer of Justice, the embodiment of Heroism, the very soul and life of Valor! ";
+ mes "...";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Yes! You are ready to become... a Knight! ";
+ mes "Go save a Damsel in Distress or something..";
+ jobchange 7;// Job: Job_Knight
+ cutin "kafra_01",255;
+ close;
+
+
+ LNotSword:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Well... you see, there's a little, teensy-weensy problem with YOU becoming a Knight.";
+ mes "Please be a Swordman before even thinking about 'magically' turning into a Knight... jeeze. *rolls eyes*";
+ cutin "kafra_01",255;
+ close;
+
+ LHunter:
+ if(class !=3) goto LNotArcher;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Oh goodie, you've met all the requirements... did you have fun hurling pointed sticks at monsters? Well guess what?";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Now you can hurl pointed sticks at monsters AND keep them in one place! w00t, yea! Traps are a great thing...";
+ jobchange 11;// Job: Job_Hunter
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "You know what... since I'm just soooo nice... (as long as you dont piss me off *grumble grumble*)";
+ mes "I'm gonna give you a complimentary falcon! Use it well! Oh.. and you might wanna wear a hat, this falcon sometimes, uh... poops..";
+ cutin "kafra_01",255;
+ setfalcon;
+ close;
+
+ LNotArcher:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Guess what?";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "YOU'RE NOT AN ARCHER >_<....";
+ mes "WTF?! Do you really think you can magically turn into a Hunter!? I DONT THINK SO BIYATCH!!! >8-(...";
+ mes "Go away! *grumble grumble*";
+ cutin "kafra_01",255;
+ close;
+
+ LBlacksmith:
+ mes "[ ^0065DFJobra^000000 ]";
+ if(class !=5) goto LNotMerc;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Oooo~~ Goodie goodie gumdrops! You meet allll the requirements! Guess what I'm gonna do ^_^...";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "YUP! You guessed it! I turned you into a Blacksmith! Aren't you PROUD of yourself... Go and make a few weapons! Open up shops across the nation! Yea yea yea! Go go go! w00t! Ho yeah! ";
+ cutin "kafra_01",255;
+ jobchange 10;// Job: Job_Blacksmith
+ close;
+
+ LNotMerc:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "No, uh-uh, you are no Merchant! Go away! Only MERCHANTS can change into Blacksmiths!!";
+ mes "Its like the cycle of life or something! Stop trying to disrupt the order of the universe >_<!!";
+ cutin "kafra_01",255;
+ close;
+
+ LAssassin:
+ if(class !=6) goto LNotThief;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Did you know I used to be a male Assassin? Well, I had a few things done to my hair, got a face lift, some implants here and there...";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Oh my, too much information, right? Kekeke, okay, go off and become the most sinister of all Jobs in this world... ^6500BFAssassin...";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Poof! Kekeke... ";
+ jobchange 12;// Job: Job_Assassin
+ cutin "kafra_01",255;
+ close;
+
+ LNotThief:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes ".... You're not even a thief.. >_>... go away..";
+ cutin "kafra_01",255;
+ close;
+
+ LPriest:
+ if(class !=4) goto LNotAco;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "I bet you are GODDAMNED TIRED of NOT having Sp Recovery, right? Well I am tired of hearing little Jesus-Hugging Acolytes scream this every time they're low on Sp... ";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Yay! You've now reached Priesthood! It's sorta like Manhood.. but not really, see with Manhood, you get this little thingy between your legs.. WHOOPs, I am getting so off topic..";
+ jobchange 8;// Job: Job_Priest
+ cutin "kafra_01",255;
+ close;
+
+ LNotAco:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Okay I'm getting tired of this.. you are NOT an Acolyte... I bet you haven't even read the Bible ONCE! You're going to HELL!";
+ cutin "kafra_01",255;
+ close;
+
+ LWizard:
+ if(class !=2) goto LNotMage;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Weeee, doesn't it feel great to finally become a Wizard? It's like a warm bath.... ahhhhhhh......";
+ jobchange 9;// Job: Job_Wizard
+ cutin "kafra_01",255;
+ close;
+
+ LNotMage:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "I bet you've never cast a spell in your life.. go away >_>...";
+ cutin "kafra_01",255;
+ close;
+
+LSecondClass2:
+ if(SkillPoint != 0) goto Lskillpt;
+ if(joblevel<40) goto Ljobforty;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Wow, your ready to become second job already?!";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Very well then, what would you like to be?";
+ menu "Crusader",LCrusader,"Sage",LSage,"Bard / Dancer",LBardDancer,"Alchemist",LAlchemist,"Rogue",LRogue,"Monk",LMonk,"Cancel",LCancel;
+
+ LCrusader:
+ if(class !=1) goto LNotSword2;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Mmmmm, I always liked Crusaders.. their Broad Shoulders always turned me on....";
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Oooo~~~ yeah, thats it... yummy...";
+ jobchange 14;// Job: Job_Crusader
+ cutin "kafra_01",255;
+ close;
+
+ LNotSword2:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Nuh-uh... you ain't no Swordman! Get out of here! Scat!";
+ mes ".......Everybody can't be a Crusader.";
+ cutin "kafra_01",255;
+ close;
+
+ LBardDancer:
+ if(sex==0) goto LDancer;
+ if(sex==1) goto LBard;
+
+ LBard:
+ if(class !=3) goto LNotArch3;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Yay! Go play some ballads for some Dancers or something, I just can't stand your clothes... ewww.";
+ jobchange 19;// Job: Job_Bard
+ cutin "kafra_01",255;
+ close;
+
+ LNotArch3:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Nope.. you got it wrong bub.. you gotta be an ARCHER before becoming a Bard..";
+ mes "Silly players.. just don't know when to stop...";
+ cutin "kafra_01",255;
+ close;
+
+ LDancer:
+ if(class !=3) goto LNotArch2;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Uh-huh, swivel those hips girl ^_~ Dancers are sooo sexy.. too bad I'm stuck in this ugly Kafra dress.. blah, if only I could strip down to a little thong too... *sigh*";
+ jobchange 20;// Job: Job_Dancer
+ cutin "kafra_01",255;
+ close;
+
+ LNotArch2:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Nope.. you got it wrong girl.. you gotta be an ARCHER before becoming a Dancer..";
+ mes "Silly players.. just don't know when to stop...";
+ cutin "kafra_01",255;
+ close;
+
+ LAlchemist:
+ mes "[ ^0065DFJobra^000000 ]";
+ if(class !=5) goto LNotMerc2;
+ mes "Cool! Go make some potions! Open a Pharmacy! yeah yeah yeah! ^_^";
+ jobchange 18;// Job: Job_Alchem
+ cutin "kafra_01",255;
+ close;
+
+
+ LNotMerc2:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Ummm... no, you gotta be a Merchant first...";
+ cutin "kafra_01",255;
+ close;
+
+ LRogue:
+ if(class !=6) goto LNotThief2;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Wow! ^_^ You.. are.. SOOOOO COOOL!! KYAAHH XD!! *drools*";
+ jobchange 17;// Job: Job_Rogue
+ cutin "kafra_01",255;
+ close;
+
+ LNotThief2:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Look... you gotta be a THIEF before becoming a Rogue..";
+ mes "I know you think they are really cool.. but NO is NO!";
+ cutin "kafra_01",255;
+ close;
+
+ LMonk:
+ if(class !=4) goto LNotAco2;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Nice.... Monks are pretty darn cool!";
+ jobchange 15;// Job: Job_Monk
+ cutin "kafra_01",255;
+ close;
+
+ LNotAco2:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Go read a Bible.. you're not an Acolyte.. and guess what?";
+ mes "YOU GOTTA BE A ACO BEFORE BECOMING A MONK!!! >_<";
+ cutin "kafra_01",255;
+ close;
+
+ LSage:
+ if(class !=2) goto LNotMage2;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Ahhhh, soo cool! I'll never get tired of seeing people turn into those new 2-2 sprites.. KYAHH XD!!";
+ mes "Go forth Sage! Show those wizzies what a real mana-wielder can do! Mwahaha...";
+ jobchange 16;// Job: Job_Sage
+ cutin "kafra_01",255;
+ close;
+
+ LNotMage2:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Other jobs except `Mage' are not permitted to be Sages.";
+ cutin "kafra_01",255;
+ close;
+
+LCancel:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Blah.. be that way.. >_>..";
+ cutin "kafra_01",255;
+ close;
+
+LSuperNovice:
+ if(Class == 23) goto L_Twice;
+ if(Class != 0) goto L_Otherjob;
+ if(JobLevel < 10) goto L_LowSkill;
+ if(BaseLevel < 45) goto L_LowLevel;
+ if(SkillPoint != 0) goto L_StillSk;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Hello, Novice!";
+ mes "Are you enjoying yourself as a novice, the preferred class of the common man?";
+ menu "Yes, I love Novices!",L_SNChange,"Ewww, Novices sucks...",LCancel;
+
+L_SNChange:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "We pride ourselves on our slogan 'Common Man, Common Goals, Common Dreams'!";
+ mes "Have fun with all those skills.";
+ cutin "kafra_01",255;
+ jobchange 23;
+ close;
+
+L_LowSkill:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Well...it seems your level is a little too common at the moment.";
+ mes "You need to have a class level of ^0000FFat least 9^000000 in order to become a Super Novice.";
+ cutin "kafra_01",255;
+ close;
+
+L_LowLevel:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Well...it seems your level is a little too common at the moment.";
+ mes "You need to have a primary level of ^0000FFat least 45^000000 in order to become a Super Novice.";
+ cutin "kafra_01",255;
+ close;
+
+L_StillSk:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Well...it seems you still have some skill points.";
+ mes "You need to have ^0000FFNO^000000 skill points left in order to change jobs.";
+ cutin "kafra_01",255;
+ close;
+
+L_Twice:
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "You are already a Super Novice...";
+ cutin "kafra_01",255;
+ close;
+
+L_Otherjob:
+ next;
+ mes "[ ^0065DFJobra^000000 ]";
+ mes "Such people don't have a place in Novice common society. I'm sorry.";
+ cutin "kafra_01",255;
+ close;
+}
diff --git a/npc/custom/jobs/reset.txt b/npc/custom/jobs/reset.txt
new file mode 100644
index 000000000..5caaf6ad2
--- /dev/null
+++ b/npc/custom/jobs/reset.txt
@@ -0,0 +1,40 @@
+//Reset NPC for Athena by Script&DB Team
+prontera.gat,150,193,4 script Reset Girl 124,{
+ mes "[Reset Girl]";
+ mes "I am a Reset Girl.";
+ mes "Reset Stats: 5,000z";
+ mes "Reset Skills: 5,000z";
+ mes "Reset Both: 9,000z";
+ next;
+ mes "Please select the service you want:";
+ menu "^FF3355Reset Skills",L0,"Reset Stats",L1,"Reset Both^000000",L2,"Quit",LEnd;
+
+ L0:
+ mes "[Reset Girl]";
+ if (Zeny < 5000) goto NeedZenys;
+ mes "Alright, here we go now.. Remember, changes won't take effect until you log back on!";
+ set Zeny,zeny-5000;
+ ResetSkill;
+ close;
+ L1:
+ mes "[Reset Girl]";
+ if (Zeny < 5000) goto NeedZenys;
+ mes "Alright, here we go now.. Remember, changes won't take effect until you log back on!";
+ set Zeny,zeny-5000;
+ ResetStatus;
+ close;
+ L2:
+ mes "[Reset Girl]";
+ if (Zeny < 9000) goto NeedZenys;
+ mes "Alright, here we go now.. Remember, changes won't take effect until you log back on!";
+ set Zeny,zeny-9000;
+ ResetSkill;
+ ResetStatus;
+ close;
+
+ NeedZenys:
+ mes "Sorry, you don't have enough Zeny.";
+ close;
+ LEnd:
+ close;
+} \ No newline at end of file
diff --git a/npc/custom/lottery.txt b/npc/custom/lottery.txt
new file mode 100644
index 000000000..218fb4feb
--- /dev/null
+++ b/npc/custom/lottery.txt
@@ -0,0 +1,457 @@
+//===== eAthena Script =======================================
+//= Lottery Script
+//===== By: ==================================================
+//= acky - god@acky.com
+//===== Current Version: =====================================
+//= 1.2.1a
+//===== Compatible With: =====================================
+//= Any eAthena Version
+//===== Description: =========================================
+//= Daily lottery draw.
+//===== Additional Comments: =================================
+//= Numbers drawn daily (Time is configured line 29)
+//= *Added GM-Riggability
+//= *Ability to renew ticket
+//= *Improved interface
+//= *Fixed minor bug where first load didn't work.
+//= 1.2.1a fix due to new script engine
+//============================================================
+
+prontera.gat,1,1,1 script lotterygenerator 111,{
+OnInit:
+set $L_TicketPrice,4750; // TICKET COST
+set $L_Prize_Money,5000000; // JACKPOT AMOUNT
+set $L_Prize_Money_Small,1000000; // SECONDARY PRIZE
+if ($LID == 0) goto L_GenID;
+end;
+
+//Modify for own time
+OnClock2045:
+// CHECKS IF LOTTERY IS RIGGED
+if ($L_Rigged == 1) goto L_Rigged_Draw;
+// GENERATES RANDOM NUMBERS 1-40
+Pick1:
+set $LW1,rand (1,40);
+
+Pick2:
+set $LW2,rand (1,40);
+if ($LW2 == $LW1) goto Pick2;
+
+Pick3:
+set $LW3,rand (1,40);
+if ($LW3 == $LW2) goto Pick3;
+if ($LW3 == $LW1) goto Pick3;
+
+Pick4:
+set $LW4,rand (1,40);
+if ($LW4 == $LW2) goto Pick4;
+if ($LW4 == $LW1) goto Pick4;
+if ($LW4 == $LW3) goto Pick4;
+
+Pick5:
+set $LW5,rand (1,40);
+if ($LW5 == $LW1) goto Pick5;
+if ($LW5 == $LW2) goto Pick5;
+if ($LW5 == $LW3) goto Pick5;
+if ($LW5 == $LW4) goto Pick5;
+
+Pick6:
+set $LW6,rand (1,40);
+if ($LW6 == $LW1) goto Pick6;
+if ($LW6 == $LW2) goto Pick6;
+if ($LW6 == $LW3) goto Pick6;
+if ($LW6 == $LW4) goto Pick6;
+if ($LW6 == $LW5) goto Pick6;
+
+// BROADCASTS DRAW
+L_Broadcast:
+Announce "Lottery: Welcome to tonight's lotto draw!",8;
+Announce "The numbers are as follows: [" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]",8;
+Announce "Congratulations to the winners of tonight!",8;
+
+// GENERATES DRAW ID CODE
+L_GenID:
+set $LID2,$LID;
+// SETS TOMORROW'S ID NUMBER
+set $LID,rand (100000,999999);
+end;
+
+// SETS DRAW TO RIGGED NUMBERS
+L_Rigged_Draw:
+set $LW1,$LR1;
+set $LW2,$LR2;
+set $LW3,$LR3;
+set $LW4,$LR4;
+set $LW5,$LR5;
+set $LW6,$LR6;
+set $L_Rigged,0;
+goto L_Broadcast;
+}
+
+// BEGIN LOTTERY SCRIPT
+- script lottery 76,{
+L_Begin:
+mes "[Lottery]";
+mes "Winning Lotto Numbers ("+$LID2+"):";
+mes "^0000FF[" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]^000000";
+if ($LID > 99999) mes "Your Ticket ("+#LID+"):";
+if ($LID > 99999) mes "^FF0000[" + #LW1 + "] [" + #LW2 + "] [" + #LW3 + "] [" + #LW4 + "] [" + #LW5 + "] [" + #LW6 + "]^000000";
+mes "Next Draw-ID: ^FF0000" + $LID + "^000000.";
+next;
+if (getgmlevel(3) > 90) goto L_GM;
+menu "Claim Prize",L_Claim,"Buy New Ticket",L_Buy,"Cancel",L_Cancel;
+
+// PURCHASE TICKET
+L_Buy:
+if (#LID == $LID && #L1 != 0) goto L_DoubleTicket;
+mes "[Lottery]";
+mes "Tickets cost ^0000FF" + $L_TicketPrice + "z^000000.";
+mes "The Jackpot is ^FF0000" + $L_Prize_Money + "z^000000.";
+next;
+menu "Buy Ticket",-,"Cancel",L_Cancel;
+if (zeny < $L_TicketPrice) goto L_NoZeny;
+set zeny,zeny-$L_TicketPrice;
+mes "[Lottery]";
+mes "Would you like your numbers hand picked or computer generated?";
+next;
+menu "Computer Generated",L_ComputerGen,"Hand Picked",L_HandPick,"Renew Ticket",L_Renew;
+
+// RENEW LAST TICKET
+L_Renew:
+if ($LID < 99999) goto L_Invalid;
+set #LID,$LID;
+goto L_Confirm2;
+
+L_ComputerGen:
+// SELECTS RANDOM NUMBERS
+set @L1,0;
+set @L2,0;
+set @L3,0;
+set @L4,0;
+set @L5,0;
+set @L6,0;
+Pick1:
+set @L1,rand (1,40);
+Pick2:
+set @L2,rand (1,40);
+if (@L2 == @L1) goto Pick2;
+Pick3:
+set @L3,rand (1,40);
+if (@L3 == @L2) goto Pick3;
+if (@L3 == @L1) goto Pick3;
+Pick4:
+set @L4,rand (1,40);
+if (@L4 == @L2) goto Pick4;
+if (@L4 == @L1) goto Pick4;
+if (@L4 == @L3) goto Pick4;
+Pick5:
+set @L5,rand (1,40);
+if (@L5 == @L1) goto Pick5;
+if (@L5 == @L2) goto Pick5;
+if (@L5 == @L3) goto Pick5;
+if (@L5 == @L4) goto Pick5;
+Pick6:
+set @L6,rand (1,40);
+if (@L6 == @L1) goto Pick6;
+if (@L6 == @L2) goto Pick6;
+if (@L6 == @L3) goto Pick6;
+if (@L6 == @L4) goto Pick6;
+if (@L6 == @L5) goto Pick6;
+mes "[Lottery]";
+mes "The computer has selected the following numbers:";
+mes "^0000FF" + @L1 + " " + @L2 + " " + @L3 + " " + @L4 + " " + @L5 + " " + @L6 + "^000000";
+next;
+menu "Confirm",L_Confirm,"Re-Generate",L_ComputerGen;
+
+// HAND PICK LOTTERY NUMBERS
+L_HandPick:
+mes "[Lottery]";
+mes "Please pick your numbers (1-40):";
+set @L1,0;
+set @L2,0;
+set @L3,0;
+set @L4,0;
+set @L5,0;
+set @L6,0;
+Input1:
+input @L1;
+if (@L1 < 1 || @L1 > 40) goto Input1;
+mes @L1;
+Input2:
+input @L2;
+if (@L2 < 1 || @L2 > 40) goto Input2;
+if (@L2 == @L1) goto Input2;
+mes @L2;
+Input3:
+input @L3;
+if (@L3 < 1 || @L3 > 40) goto Input3;
+if (@L3 == @L1) goto Input3;
+if (@L3 == @L2) goto Input3;
+mes @L3;
+Input4:
+input @L4;
+if (@L4 < 1 || @L4 > 40) goto Input4;
+if (@L4 == @L1) goto Input4;
+if (@L4 == @L2) goto Input4;
+if (@L4 == @L3) goto Input4;
+mes @L4;
+Input5:
+input @L5;
+if (@L5 < 1 || @L5 > 40) goto Input5;
+if (@L5 == @L1) goto Input5;
+if (@L5 == @L2) goto Input5;
+if (@L5 == @L3) goto Input5;
+if (@L5 == @L4) goto Input5;
+mes @L5;
+Input6:
+input @L6;
+if (@L6 < 1 || @L6 > 40) goto Input6;
+if (@L6 == @L1) goto Input6;
+if (@L6 == @L2) goto Input6;
+if (@L6 == @L3) goto Input6;
+if (@L6 == @L4) goto Input6;
+if (@L6 == @L5) goto Input6;
+mes @L6;
+next;
+mes "[Lottery]";
+mes "Your numbers are:";
+mes "^0000FF" + @L1 + " " + @L2 + " " + @L3 + " " + @L4 + " " + @L5 + " " + @L6 + "^000000";
+next;
+menu "Confirm",L_Confirm,"Re-Pick",L_HandPick;
+
+L_Confirm:
+set #LW1,@L1;
+set #LW2,@L2;
+set #LW3,@L3;
+set #LW4,@L4;
+set #LW5,@L5;
+set #LW6,@L6;
+set #LID,$LID;
+L_Confirm2:
+mes "[Lottery]";
+mes "The live broadcasted draw is at 9pm.";
+mes "You can claim your ticket between then and the next draw.";
+next;
+mes "[Lottery]";
+mes "Good luck!";
+close;
+
+L_Claim:
+// CHECKS TICKET VALIDILITY
+if (#LID != $LID2) goto L_Invalid;
+// CHECKS HOW MANY NUMBERS MATCHED
+set @LPrize,0;
+if (#LW1 == $LW1) set @LPrize,@LPrize+1;
+if (#LW1 == $LW2) set @LPrize,@LPrize+1;
+if (#LW1 == $LW3) set @LPrize,@LPrize+1;
+if (#LW1 == $LW4) set @LPrize,@LPrize+1;
+if (#LW1 == $LW5) set @LPrize,@LPrize+1;
+if (#LW1 == $LW6) set @LPrize,@LPrize+1;
+if (#LW2 == $LW1) set @LPrize,@LPrize+1;
+if (#LW2 == $LW2) set @LPrize,@LPrize+1;
+if (#LW2 == $LW3) set @LPrize,@LPrize+1;
+if (#LW2 == $LW4) set @LPrize,@LPrize+1;
+if (#LW2 == $LW5) set @LPrize,@LPrize+1;
+if (#LW2 == $LW6) set @LPrize,@LPrize+1;
+if (#LW3 == $LW1) set @LPrize,@LPrize+1;
+if (#LW3 == $LW2) set @LPrize,@LPrize+1;
+if (#LW3 == $LW3) set @LPrize,@LPrize+1;
+if (#LW3 == $LW4) set @LPrize,@LPrize+1;
+if (#LW3 == $LW5) set @LPrize,@LPrize+1;
+if (#LW3 == $LW6) set @LPrize,@LPrize+1;
+if (#LW4 == $LW1) set @LPrize,@LPrize+1;
+if (#LW4 == $LW2) set @LPrize,@LPrize+1;
+if (#LW4 == $LW3) set @LPrize,@LPrize+1;
+if (#LW4 == $LW4) set @LPrize,@LPrize+1;
+if (#LW4 == $LW5) set @LPrize,@LPrize+1;
+if (#LW4 == $LW6) set @LPrize,@LPrize+1;
+if (#LW5 == $LW1) set @LPrize,@LPrize+1;
+if (#LW5 == $LW2) set @LPrize,@LPrize+1;
+if (#LW5 == $LW3) set @LPrize,@LPrize+1;
+if (#LW5 == $LW4) set @LPrize,@LPrize+1;
+if (#LW5 == $LW5) set @LPrize,@LPrize+1;
+if (#LW5 == $LW6) set @LPrize,@LPrize+1;
+if (#LW6 == $LW1) set @LPrize,@LPrize+1;
+if (#LW6 == $LW2) set @LPrize,@LPrize+1;
+if (#LW6 == $LW3) set @LPrize,@LPrize+1;
+if (#LW6 == $LW4) set @LPrize,@LPrize+1;
+if (#LW6 == $LW5) set @LPrize,@LPrize+1;
+if (#LW6 == $LW6) set @LPrize,@LPrize+1;
+
+if (@LPrize == 6) goto LWinBig;
+if (@LPrize > 3 && @LPrize < 6) goto LWinSmall;
+
+// NO WINNER
+mes "[Lottery]";
+mes "Bad luck, it appears you do not hold a winning ticket.";
+next;
+mes "[Lottery]";
+mes "Better luck next time!.";
+close;
+
+// MATCHED ALL SIX
+LWinBig:
+mes "[Lottery]";
+mes "You have matched all six numbers!";
+mes "Jackpot!";
+mes "You've won ^0000FF" + $L_Prize_Money + "z^000000.";
+set zeny,zeny+$L_Prize_Money;
+Announce "Lottery: " + strcharinfo(0) + " has won the JACKPOT of " + $L_Prize_Money + "z!",8;
+set #LID,0;
+close;
+
+// MATCHED AT LEAST 4
+LWinSmall:
+mes "[Lottery]";
+mes "You have matched at least 4 numbers!";
+mes "You've won ^0000FF" + $L_Prize_Money_Small + "z^000000.";
+set zeny,zeny+$L_Prize_Money_Small;
+Announce "Lottery: " + strcharinfo(0) + " has won a prize of " + $L_Prize_Money_Small + "z!",8;
+set #LID,0;
+close;
+
+// NO ZENY
+L_NoZeny:
+mes "[Lottery]";
+mes "You can't afford a lottery ticket.";
+close;
+
+// INVALID TICKET
+L_Invalid:
+mes "[Lottery]";
+mes "I'm sorry but it appears that you have an invalid ticket.";
+close;
+
+// DOUBLE TICKET
+L_DoubleTicket:
+mes "[Lottery]";
+mes "It appears that you already have a ticket for today.";
+mes "You may only purchase one ticket per draw.";
+close;
+
+L_Cancel:
+mes "[Lottery]";
+mes "Come back soon!";
+close;
+
+// GM MENU (Lets you manually do draws)
+L_GM:
+menu "Claim Prize",L_Claim,"Buy New Ticket",L_Buy,"[GM]Do Draw Now",-,"[GM]Rig the Lottery",L_GM_Rig,"Cancel",L_Cancel;
+
+// CHECKS IF LOTTERY IS RIGGED
+if ($L_Rigged == 1) goto L_Rigged_Draw;
+// GENERATES RANDOM NUMBERS 1-40
+GMPick1:
+set $LW1,rand (1,40);
+
+GMPick2:
+set $LW2,rand (1,40);
+if ($LW2 == $LW1) goto GMPick2;
+
+GMPick3:
+set $LW3,rand (1,40);
+if ($LW3 == $LW2) goto GMPick3;
+if ($LW3 == $LW1) goto GMPick3;
+
+GMPick4:
+set $LW4,rand (1,40);
+if ($LW4 == $LW2) goto GMPick4;
+if ($LW4 == $LW1) goto GMPick4;
+if ($LW4 == $LW3) goto GMPick4;
+
+GMPick5:
+set $LW5,rand (1,40);
+if ($LW5 == $LW1) goto GMPick5;
+if ($LW5 == $LW2) goto GMPick5;
+if ($LW5 == $LW3) goto GMPick5;
+if ($LW5 == $LW4) goto GMPick5;
+
+GMPick6:
+set $LW6,rand (1,40);
+if ($LW6 == $LW1) goto GMPick6;
+if ($LW6 == $LW2) goto GMPick6;
+if ($LW6 == $LW3) goto GMPick6;
+if ($LW6 == $LW4) goto GMPick6;
+if ($LW6 == $LW5) goto GMPick6;
+
+// BROADCASTS DRAW
+L_Broadcast:
+Announce "Lottery: Welcome to the special GM's lotto draw!",8;
+Announce "The numbers are as follows: [" + $LW1 + "] [" + $LW2 + "] [" + $LW3 + "] [" + $LW4 + "] [" + $LW5 + "] [" + $LW6 + "]",8;
+Announce "Congratulations to the winners!",8;
+
+// GENERATES DRAW ID CODE
+L_GenID:
+set $LID2,$LID;
+// SETS TOMORROW'S ID NUMBER
+set $LID,rand (100000,999999);
+close;
+
+// SETS DRAW TO RIGGED NUMBERS
+L_Rigged_Draw:
+set $LW1,$LR1;
+set $LW2,$LR2;
+set $LW3,$LR3;
+set $LW4,$LR4;
+set $LW5,$LR5;
+set $LW6,$LR6;
+set $L_Rigged,0;
+goto L_Broadcast;
+
+// ALLOWS GM TO DO A RIGGED DRAW
+L_GM_Rig:
+mes "[Lottery]";
+mes "Please pick your numbers (1-40):";
+set $LR1,0;
+set $LR2,0;
+set $LR3,0;
+set $LR4,0;
+set $LR5,0;
+set $LR6,0;
+GMInput1:
+Input $LR1;
+if ($LR1 < 1 || $LR1 > 40) goto GMInput1;
+mes $LR1;
+GMInput2:
+Input $LR2;
+if ($LR2 < 1 || $LR2 > 40) goto GMInput2;
+if ($LR2 == $LR1) goto GMInput2;
+mes $LR2;
+GMInput3:
+Input $LR3;
+if ($LR3 < 1 || $LR3 > 40) goto GMInput3;
+if ($LR3 == $LR1) goto GMInput3;
+if ($LR3 == $LR2) goto GMInput3;
+mes $LR3;
+GMInput4:
+Input $LR4;
+if ($LR4 < 1 || $LR4 > 40) goto GMInput4;
+if ($LR4 == $LR1) goto GMInput4;
+if ($LR4 == $LR2) goto GMInput4;
+if ($LR4 == $LR3) goto GMInput4;
+mes $LR4;
+GMInput5:
+Input $LR5;
+if ($LR5 < 1 || $LR5 > 40) goto GMInput5;
+if ($LR5 == $LR1) goto GMInput5;
+if ($LR5 == $LR2) goto GMInput5;
+if ($LR5 == $LR3) goto GMInput5;
+if ($LR5 == $LR4) goto GMInput5;
+mes $LR5;
+GMInput6:
+Input $LR6;
+if ($LR6 < 1 || $LR6 > 40) goto GMInput6;
+if ($LR6 == $LR1) goto GMInput6;
+if ($LR6 == $LR2) goto GMInput6;
+if ($LR6 == $LR3) goto GMInput6;
+if ($LR6 == $LR4) goto GMInput6;
+if ($LR6 == $LR5) goto GMInput6;
+mes $LR6;
+next;
+mes "[Lottery]";
+mes "Lottery rigged for next draw.";
+set $L_Rigged,1;
+close;
+}
+
+prontera.gat,141,182,5 duplicate(lottery) Lottery 76 \ No newline at end of file
diff --git a/npc/custom/morroc_raceway.txt b/npc/custom/morroc_raceway.txt
new file mode 100644
index 000000000..910cdc592
--- /dev/null
+++ b/npc/custom/morroc_raceway.txt
@@ -0,0 +1,245 @@
+//===== eAthena Script =======================================
+//= Morroc Raceway Script
+//===== By: ==================================================
+//= acky (god@acky.com)
+//===== Current Version: =====================================
+//= 1.1
+//===== Compatible With: =====================================
+//= Any eAthena Version
+//===== Description: =========================================
+//= Lets players race around Morroc (pvp_y_1-5.gat)
+//===== Additional Comments: =================================
+//= If there are more than 3 players, at least 3 people
+//= must finish before a new race can be started.
+//=
+//= If there are less than 3 players, at least 1 person
+//= must finish before a new race can be started.
+//=
+//= Removed permanent global variables
+//============================================================
+
+//Warps you into race way
+morocc.gat,166,105,6 script Race Girl 116,{
+mes "[Race Girl]";
+mes "Would you like to visit ^0000FFMorroc Raceway^000000?";
+next;
+menu "Yes",L_Warp,"No",-;
+mes "[Race Girl]";
+mes "Alright, talk to me again when you want to go.";
+close;
+
+L_Warp:
+warp "pvp_y_1-5.gat",165,256;
+close;
+}
+
+//Warps you out of raceway
+pvp_y_1-5.gat,169,265,5 script Race Girl 116,{
+mes "[Race Girl]";
+mes "Welcome to Morroc Raceway!";
+next;
+menu "Information",-,"Leave",L_Warp,"Cancel",L_Cancel;
+mes "[Race Girl]";
+mes "Someone must click on the Starter NPC to start the race.";
+next;
+mes "[Race Girl]";
+mes "Once the race is started, run around Morroc anti-clockwise.";
+next;
+mes "[Race Girl]";
+mes "You must reach all the checkpoints - No cheating!";
+close;
+
+L_Warp:
+warp "morocc.gat",165,101;
+
+L_Cancel:
+mes "[Race Girl]";
+mes "Come again soon!";
+close;
+}
+
+//Counts down and starts race
+pvp_y_1-5.gat,145,269,5 script Starter 733,{
+if ($@race != 0) goto L_Started;
+if ($@counting != 0) goto L_Started;
+if ($@racecount == 1) goto L_Started;
+L_Menu:
+mes "[Race Starter]";
+mes "Please stay on the Eastern side of me.";
+menu "Start Race",L_Count,"Cancel",-;
+close;
+
+ L_Count:
+ set $@counting,1;
+ mes "Counting down...";
+ addtimer 1000, "Starter::OnCount1000";
+ addtimer 2000, "Starter::OnCount2000";
+ addtimer 3000, "Starter::OnCount3000";
+ addtimer 4000, "Starter::OnCount4000";
+ announce strcharinfo(0) + "Started a countdown",1;
+ announce "Get ready to race!",1;
+ close;
+
+
+ OnCount1000:
+ announce "[3]",1;
+ end;
+
+ OnCount2000:
+ announce "[2]",1;
+ end;
+
+ OnCount3000:
+ announce "[1]",1;
+ end;
+
+ OnCount4000:
+ emotion 27;
+ specialeffect 267;
+ announce "[GO!]",1;
+ set $@race,1;
+ set $@position,0;
+ set $@counting,0;
+ set $@raceid,rand(100000,999999);
+ end;
+
+
+L_Started:
+if ((getmapusers("pvp_y_1-5.gat") < 3) && ($@position > 0)) goto L_Menu;
+if ($@position > 2) goto L_Menu;
+mes "[Starter]";
+mes "Race in progress";
+close;
+
+OnInit:
+set $@race,0;
+set $@position,0;
+set $@racecount,0;
+end;
+}
+
+//Checkpoint 1
+pvp_y_1-5.gat,144,262,5 script Check Point 1 111,0,5,{
+end;
+OnTouch:
+if (@raceid != $@raceid) goto L_Started;
+if (@race == 6) goto L_Finished;
+if ($@race == 1) goto L_Started;
+mes "The race has not started, please move back.";
+close;
+L_Started:
+set @race,1;
+set @raceid,$@raceid;
+end;
+L_Finished:
+mes "You have already completed the race.";
+close;
+}
+
+//Checkpoint 2
+pvp_y_1-5.gat,73,247,5 script Check Point 2 111,6,6,{
+end;
+OnTouch:
+if (@race != 1) goto L_Miss;
+set @race,2;
+announce "[" + strcharinfo(0) +"] has reached Checkpoint [1]",1;
+end;
+L_Miss:
+mes "You have missed a Checkpoint. Please go back.";
+close;
+}
+
+//Checkpoint 3
+pvp_y_1-5.gat,77,44,5 script Check Point 3 111,6,6,{
+end;
+OnTouch:
+if (@race != 2) goto L_Miss;
+set @race,3;
+announce "[" + strcharinfo(0) +"] has reached Checkpoint [2]",1;
+end;
+L_Miss:
+mes "You have missed a Checkpoint. Please go back.";
+close;
+}
+
+//Checkpoint 3
+pvp_y_1-5.gat,249,60,5 script Check Point 4 111,6,6,{
+end;
+OnTouch:
+if (@race != 3) goto L_Miss;
+set @race,4;
+announce "[" + strcharinfo(0) +"] has reached Checkpoint [3]",1;
+end;
+L_Miss:
+mes "You have missed a Checkpoint. Please go back.";
+close;
+}
+
+//Checkpoint 4
+pvp_y_1-5.gat,255,256,5 script Check Point 5 111,6,6,{
+end;
+OnTouch:
+if (@race != 4) goto L_Miss;
+set @race,5;
+announce "[" + strcharinfo(0) +"] has reached Checkpoint [4]",1;
+end;
+L_Miss:
+mes "You have missed a Checkpoint. Please go back.";
+close;
+}
+
+//Finish Line
+pvp_y_1-5.gat,174,244,5 script Finish Line 111,6,6,{
+end;
+OnTouch:
+if (@raceid != $@raceid) goto L_WrongRace;
+if (@race != 5) goto L_Miss;
+set @race,6;
+set $@position,$@position+1;
+announce "[" + strcharinfo(0) +"] has reached The Finish line! [Position: " + $@position + "]",1;
+end;
+L_Miss:
+mes "You have missed a Checkpoint. Please go back.";
+close;
+L_WrongRace:
+mes "You are not in this race.";
+close;
+}
+
+//Check Point Marker Flags
+pvp_y_1-5.gat,144,267,4 script Check Point 1 722,{
+end;
+}
+pvp_y_1-5.gat,144,257,4 script Check Point 1 722,{
+end;
+}
+pvp_y_1-5.gat,70,252,3 script Check Point 2 722,{
+end;
+}
+pvp_y_1-5.gat,77,243,3 script Check Point 2 722,{
+end;
+}
+pvp_y_1-5.gat,81,48,1 script Check Point 3 722,{
+end;
+}
+pvp_y_1-5.gat,72,40,1 script Check Point 3 722,{
+end;
+}
+pvp_y_1-5.gat,244,65,7 script Check Point 4 722,{
+end;
+}
+pvp_y_1-5.gat,252,57,7 script Check Point 4 722,{
+end;
+}
+pvp_y_1-5.gat,259,260,5 script Check Point 5 722,{
+end;
+}
+pvp_y_1-5.gat,251,252,5 script Check Point 5 722,{
+end;
+}
+pvp_y_1-5.gat,174,249,4 script Finish Line 722,{
+end;
+}
+pvp_y_1-5.gat,174,238,4 script Finish Line 722,{
+end;
+} \ No newline at end of file
diff --git a/npc/custom/mvm.txt b/npc/custom/mvm.txt
new file mode 100644
index 000000000..8059fcc30
--- /dev/null
+++ b/npc/custom/mvm.txt
@@ -0,0 +1,895 @@
+//===== eAthena Script =======================================
+//= Monster vs Monster
+//===== By: ==================================================
+//= acky - god@acky.com
+//===== Current Version: =====================================
+//= 1.1.2
+//===== Compatible With: =====================================
+//= eAthena SVN
+//===== Description: =========================================
+//= Players train monsters and battle other players.
+//= Experience can be earned and monsters upgraded.
+//===== Additional Comments: =================================
+//= To add monsters, add lines after the commends labled:
+//= '// #. ---Change to Add Monsters--- //'
+//= There are 6 steps to add a monster at the moment.
+//= Added Duel Room
+//= ---------------------------------------------------------
+//= Script is messy! Be careful!
+//= 1.1.2 Changed all gmcommand to atcommand as Poki#3 suggested. [Vicious]
+//============================================================
+
+// Entrance //
+prontera.gat,158,193,6 script Monster Arena 702,{
+mes "[Monster Arena]";
+mes "Would you like to enter the Monster Arena?";
+mes "Currently ^FF0000" + getmapusers("gon_test.gat") + "^000000 players";
+mes "^FF0000Note:^000000 Pecos, Falcons and Carts will be lost on entry.";
+L_Menu:
+next;
+menu "Enter",-,"Information",L_Info,"Cancel",L_Exit;
+
+set @marena,1;
+savepoint "gon_test.gat",56,99;
+set @battle,0;
+warp "gon_test.gat",57,99;
+close;
+
+L_Exit:
+mes "[Monster Arena]";
+mes "Come back any time.";
+close;
+
+L_Info:
+mes "[Monster Arena]";
+mes "You must purchase a pet from the Monster Tamer to start fighting.";
+next;
+mes "[Monster Arena]";
+mes "Then talk to the Usher and tell him you would like to compete.";
+next;
+mes "[Monster Arena]";
+mes "Talk to the referee to summon your monster.";
+mes "Once your monster has fought, you must talk to the Usher again and choose to spectate.";
+next;
+mes "[Monster Arena]";
+mes "Talk to the Monster Trainer, he will ask you to heal your pet.";
+next;
+mes "[Monster Arena]";
+mes "To do this, click the Nurse repearedly until it says your pet is healed.";
+next;
+mes "[Monster Arena]";
+mes "The more monsters you kill, the more exp you get and the quicker you can upgrade.";
+next;
+mes "[Monster Arena]";
+mes "The stronger your monster is, the longer it will take to summon again.";
+
+goto L_Menu;
+}
+
+// Monster Summon Function //
+function script monstersummon -1,{
+// 1. ---Change to Add Monsters--- //
+if (#monster == 10) summon strcharinfo(0) + "'s Poring",1002, "OnPoringKilled";
+if (#monster == 20) summon strcharinfo(0) + "'s Fabre",1007, "OnFaberKilled";
+if (#monster == 30) summon strcharinfo(0) + "'s Lunatic",1063, "OnLunaticKilled";
+if (#monster == 31) summon strcharinfo(0) + "'s Drops",1113, "OnDropsKilled";
+if (#monster == 32) summon strcharinfo(0) + "'s Picky",1049, "OnPickyKilled";
+if (#monster == 40) summon strcharinfo(0) + "'s ChonChon",1011, "OnChonChonKilled";
+if (#monster == 41) summon strcharinfo(0) + "'s Super Picky",1050, "OnSPickyKilled";
+if (#monster == 42) summon strcharinfo(0) + "'s Willow",1010, "OnWillowKilled";
+if (#monster == 50) summon strcharinfo(0) + "'s Roda Frog",1012, "OnRodaKilled";
+if (#monster == 51) summon strcharinfo(0) + "'s Condor",1009, "OnCondorKilled";
+if (#monster == 60) summon strcharinfo(0) + "'s Thief Bug Larva",1051, "OnThiefKilled";
+if (#monster == 70) summon strcharinfo(0) + "'s Savage Babe",1167, "OnSavageKilled";
+if (#monster == 80) summon strcharinfo(0) + "'s Familiar",1005, "OnFamiliarKilled";
+if (#monster == 81) summon strcharinfo(0) + "'s Hornet",1004, "OnHornetKilled";
+if (#monster == 90) summon strcharinfo(0) + "'s Desert Wolf Puppy",1107, "OnPuppyKilled";
+if (#monster == 91) summon strcharinfo(0) + "'s Spore",1014, "OnSporeKilled";
+if (#monster == 92) summon strcharinfo(0) + "'s Rocker",1052, "OnRockerKilled";
+if (#monster == 100) summon strcharinfo(0) + "'s Skeleton",1076, "OnSkeletonKilled";
+if (#monster == 101) summon strcharinfo(0) + "'s Plankton",1161, "OnPlanktonKilled";
+if (#monster == 102) summon strcharinfo(0) + "'s Antonio",1247, "OnAntonioKilled";
+if (#monster == 103) summon strcharinfo(0) + "'s Thief Bug Female",1017, "OnThiefFemaleKilled";
+close;
+}
+
+// Referee //
+- script monsterreferee 61,{
+if (@fighting == 1) end;
+if (@battle == 1) goto L_Start;
+end;
+
+L_Start:
+mes "[Referee]";
+mes "Your monster is:";
+
+// 2. ---Change to Add Monsters--- //
+if (#monster == 10) mes "Poring";
+if (#monster == 20) mes "Faber";
+if (#monster == 30) mes "Lunatic";
+if (#monster == 31) mes "Drops";
+if (#monster == 32) mes "Picky";
+if (#monster == 40) mes "ChonChon";
+if (#monster == 41) mes "Super Picky";
+if (#monster == 42) mes "Willow";
+if (#monster == 50) mes "Roda Frog";
+if (#monster == 51) mes "Condor";
+if (#monster == 60) mes "Thief Bug Larva";
+if (#monster == 70) mes "Savage Babe";
+if (#monster == 80) mes "Familiar";
+if (#monster == 81) mes "Hornet";
+if (#monster == 90) mes "Desert Wolf Puppy";
+if (#monster == 91) mes "Spore";
+if (#monster == 92) mes "Rocker";
+if (#monster == 100) mes "Skeleton";
+if (#monster == 101) mes "Plankton";
+if (#monster == 102) mes "Antonio";
+if (#monster == 103) mes "Thief Bug Female";
+
+mes "Would you like to fight?";
+next;
+menu "Fight",-,"Cancel",L_Exit;
+
+set @fighting,1;
+set #heal,1;
+set @special,rand (100); // Chance of special summon
+if (@special == 1) goto Special1;
+if (@special == 2) goto Special2;
+if (@special == 3) goto Special3;
+if (@special == 4) goto Special4;
+if (@special == 5) goto Special5;
+
+callfunc "monstersummon";
+close;
+
+// Special Summons //
+Special1:
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+summon strcharinfo(0) + "'s Assault Team",1002, "OnPoringKilled";
+close;
+
+Special2:
+summon strcharinfo(0) + "'s Mastering",1090, "OnSpecialKilled";
+close;
+
+Special3:
+summon strcharinfo(0) + "'s Eclipse",1093, "OnSpecialKilled";
+close;
+
+Special4:
+summon strcharinfo(0) + "'s Dragon Fly",1091, "OnSpecialKilled";
+close;
+
+Special5:
+summon strcharinfo(0) + "'s Toad",1089, "OnSpecialKilled";
+close;
+
+L_Exit:
+mes "[Referee]";
+mes "Alright";
+close;
+}
+gon_test.gat,56,91,6 duplicate(monsterreferee) Referee 61
+
+
+// Usher //
+gon_test.gat,58,94,6 script Usher 86,{
+set @marena,1;
+mes "[Usher]";
+mes "What would you like to do?";
+next;
+menu "^0000FFSpectate",L_Spec,"^FF0000Compete^000000",-,"Return to Town",L_Exit,"Cancel",L_Cancel;
+
+if (#monster == 0) goto L_NoMon;
+if (#heal == 1) goto L_Heal;
+
+if (#monster < 40) goto L_Low;
+if (#monster > 30 && #monster < 80) goto L_Med;
+if (#monster > 70) goto L_High;
+
+L_Low:
+menu "Level 1-3",L_1to3,"^FF0000All Levels",L_High;
+close;
+
+L_Med:
+menu "Level 4-7",L_4to6,"^FF0000All Levels",L_High;
+close;
+
+L_High:
+savepoint "gon_test.gat",56,99;
+set @battle,1;
+warp "gon_test.gat",72,87;
+atcommand strcharinfo(0) + "@option 64 0 64";
+close;
+
+L_4to6:
+savepoint "gon_test.gat",56,99;
+set @battle,1;
+warp "gon_test.gat",57,86;
+atcommand strcharinfo(0) + "@option 64 0 64";
+close;
+
+L_1to3:
+savepoint "gon_test.gat",56,99;
+set @battle,1;
+warp "gon_test.gat",43,87;
+atcommand strcharinfo(0) + "@option 64 0 64";
+close;
+
+
+L_Exit:
+savepoint "prontera.gat",149,186;
+set @battle,0;
+atcommand strcharinfo(0) + "@option 0 0 0";
+warp "prontera.gat",149,186;
+end;
+close;
+
+L_Spec:
+atcommand strcharinfo(0) + "@option 0 0 0";
+savepoint "gon_test.gat",56,99;
+set @battle,0;
+warp "gon_test.gat",57,99;
+close;
+
+L_NoMon:
+mes "[Usher]";
+mes "You haven't got a monster, you can only spectate.";
+close;
+
+L_Heal:
+mes "[Usher]";
+mes "You have to heal your monster before you can fight again.";
+close;
+
+L_Cancel:
+close;
+}
+
+// Monster Trainer //
+gon_test.gat,52,103,6 script Monster Trainer 87,{
+mes "[Monster Trainer]";
+if (#monster != 0) goto L_Mon;
+
+mes "Welcome to the monster arena, would you like to start training?";
+next;
+menu "Yes",-,"No",L_Exit;
+
+mes "[Monster Trainer]";
+mes "New trainers may only start with Porings.";
+mes "They cost 1000z, Would you like to buy one?";
+next;
+menu "Yes",-,"No",L_Exit;
+
+if (zeny < 1000) goto L_NoZeny;
+set zeny,zeny-1000;
+set #monster,10;
+mes "[Monster Trainer]";
+mes "Congratulations!";
+mes "When your Poring earns enough experience, talk to me to upgrade.";
+close;
+
+L_Mon:
+mes "Welcome back, " + strcharinfo(0) + ".";
+mes "Your monster has " + #monpoints + " exp points.";
+next;
+if (@fighting == 1) goto L_Heal;
+menu "Upgrade Monster",L_Upgrade,"Sell Experience",L_Sell,"^FF0000Abandon Monster^000000",L_Abandon,"Cancel",L_Exit;
+
+L_Abandon:
+mes "[Monster Trainer]";
+mes "Are you sure you want to abandon your monster?";
+next;
+menu "Yes",-,"No",L_Exit;
+set #monster,0;
+set #monpoints,0;
+mes "[Monster Trainer]";
+mes "Monster released into the wild.";
+close;
+
+L_Sell:
+mes "[Monster Trainer]";
+mes "You can sell your monster's experience for 100z each.";
+next;
+menu "Sell",-,"Cancel",L_Exit;
+mes "[Monster Trainer]";
+mes "You have: ^FF0000" + #monpoints + "^000000 experience points";
+mes "How many would you like to sell?";
+next;
+input @sellexp;
+if (@sellexp > #monpoints) goto L_NoExp;
+set #monpoints,#monpoints-@sellexp;
+set @sellearn,100*@sellexp; // Price of exp
+set zeny,zeny+@sellearn;
+mes "[Monster Trainer]";
+mes "You earned ^0000FF" + @sellearn + "^000000z.";
+close;
+
+
+L_NoExp:
+mes "[Monster Trainer]";
+mes "You do not have enough experience.";
+next;
+goto L_Exit;
+
+// Monster Upgrades //
+L_Upgrade:
+mes "[Monster Trainer]";
+// 3. ---Change to Add Monsters - May not be required--- //
+if (#monster > 1 && #monster < 20) mes "You need 10 exp points to upgrade your monster.";
+if (#monster > 19 && #monster < 30) mes "You need 20 exp points to upgrade your monster.";
+if (#monster > 29 && #monster < 40) mes "You need 40 exp points to upgrade your monster.";
+if (#monster > 39 && #monster < 50) mes "You need 80 exp points to upgrade your monster.";
+if (#monster > 49 && #monster < 60) mes "You need 160 exp points to upgrade your monster.";
+if (#monster > 59 && #monster < 70) mes "You need 320 exp points to upgrade your monster.";
+if (#monster > 69 && #monster < 80) mes "You need 640 exp points to upgrade your monster.";
+if (#monster > 79 && #monster < 90) mes "You need 1280 exp points to upgrade your monster.";
+if (#monster > 89 && #monster < 100) mes "You need 2560 exp points to upgrade your monster.";
+next;
+menu "Continue",-,"Cancel",L_Exit;
+mes "[Monster Trainer]";
+
+// 4. ---Change to Add Monsters - May not be required--- //
+if (#monster > 1 && #monster < 20 && #monpoints > 9) goto L_Up1;
+if (#monster > 19 && #monster < 30 && #monpoints > 19) goto L_Up2;
+if (#monster > 29 && #monster < 40 && #monpoints > 39) goto L_Up3;
+if (#monster > 39 && #monster < 50 && #monpoints > 79) goto L_Up4;
+if (#monster > 49 && #monster < 60 && #monpoints > 159) goto L_Up5;
+if (#monster > 59 && #monster < 70 && #monpoints > 319) goto L_Up6;
+if (#monster > 69 && #monster < 80 && #monpoints > 639) goto L_Up7;
+if (#monster > 79 && #monster < 90 && #monpoints > 1279) goto L_Up8;
+if (#monster > 89 && #monster < 100 && #monpoints > 2559) goto L_Up9;
+
+mes "Unable to upgrade.";
+close;
+
+// 5. ---Change to Add Monsters--- //
+ L_Up1:
+ set #monster,20;
+ set #monpoints,#monpoints-10;
+ mes "Upgraded to Fabre!";
+ close;
+
+ L_Up2:
+ mes "Which monster would you like to upgrade to?";
+ next;
+ menu "Lunatic",U_Lunatic,"Drops",U_Drops,"Picky",U_Picky;
+
+ U_Drops:
+ set #monster,31;
+ set #monpoints,#monpoints-20;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Drops!";
+ close;
+
+ U_Picky:
+ set #monster,32;
+ set #monpoints,#monpoints-20;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Picky!";
+ close;
+
+ U_Lunatic:
+ set #monster,30;
+ set #monpoints,#monpoints-20;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Lunatic!";
+ close;
+
+ L_Up3:
+ mes "Which monster would you like to upgrade to?";
+ next;
+ menu "ChonChon",U_ChonChon,"Super Picky",U_SPicky,"Willow",U_Willow;
+
+ U_ChonChon:
+ set #monster,40;
+ set #monpoints,#monpoints-40;
+ mes "[Monster Trainer]";
+ mes "Upgraded to ChonChon!";
+ close;
+
+ U_SPicky:
+ set #monster,41;
+ set #monpoints,#monpoints-40;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Super Picky!";
+ close;
+
+ U_Willow:
+ set #monster,42;
+ set #monpoints,#monpoints-40;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Willow!";
+ close;
+
+ L_Up4:
+ mes "Which monster would you like to upgrade to?";
+ next;
+ menu "Condor",U_Condor,"Roda Frog",U_Roda;
+
+ U_Condor:
+ set #monster,51;
+ set #monpoints,#monpoints-80;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Condor!";
+ close;
+
+ U_Roda:
+ set #monster,50;
+ set #monpoints,#monpoints-80;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Roda Frog!";
+ close;
+
+ L_Up5:
+ set #monster,60;
+ set #monpoints,#monpoints-160;
+ mes "Upgraded to Thief Bug Larva!";
+ close;
+
+ L_Up6:
+ set #monster,70;
+ set #monpoints,#monpoints-320;
+ mes "Upgraded to Savage Babe!";
+ close;
+
+ L_Up7:
+ mes "Which monster would you like to upgrade to?";
+ next;
+ menu "Familiar",U_Familiar,"Hornet",U_Hornet;
+
+ U_Hornet:
+ set #monster,81;
+ set #monpoints,#monpoints-640;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Hornet!";
+ close;
+
+ U_Familiar:
+ set #monster,80;
+ set #monpoints,#monpoints-640;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Familiar!";
+ close;
+
+ L_Up8:
+ mes "[Monster Trainer]";
+ mes "Which monster would you like to upgrade to?";
+ next;
+ menu "Desert Wolf Puppy",U_Puppy,"Spore",U_Spore,"Rocker",U_Rocker;
+
+ U_Spore:
+ set #monster,91;
+ set #monpoints,#monpoints-1280;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Spore!";
+ close;
+
+ U_Rocker:
+ set #monster,92;
+ set #monpoints,#monpoints-1280;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Rocker!";
+ close;
+
+ U_Puppy:
+ set #monster,90;
+ set #monpoints,#monpoints-1280;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Desert Wolf Puppy!";
+ close;
+
+ L_Up9:
+ mes "Which monster would you like to upgrade to?";
+ next;
+ menu "Skeleton",U_Skeleton,"Antonio",U_Antonio,"Plankton",U_Plankton,"Thief Bug Female",U_ThiefFemale;
+
+ U_Plankton:
+ set #monster,101;
+ set #monpoints,#monpoints-2560;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Plankton!";
+ close;
+
+ U_Antonio:
+ set #monster,102;
+ set #monpoints,#monpoints-2560;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Antonio!";
+ close;
+
+ U_ThiefFemale:
+ set #monster,103;
+ set #monpoints,#monpoints-2560;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Thief Bug Female!";
+ close;
+
+ U_Skeleton:
+ set #monster,100;
+ set #monpoints,#monpoints-2560;
+ mes "[Monster Trainer]";
+ mes "Upgraded to Skeleton!";
+ close;
+
+L_NoZeny:
+mes "[Monster Trainer]";
+mes "You don't have enough zeny!";
+close;
+
+L_Exit:
+mes "[Monster Trainer]";
+mes "Goodbye.";
+close;
+
+L_Heal:
+mes "[Monster Trainer]";
+mes "Your monster needs to heal.";
+mes "It will heal faster if you click the nurse faster.";
+set #heal,1;
+close;
+}
+
+// Kill Trigger //
+// 6/Final. ---Change to Add Monsters--- //
+ gon_test.gat,56,91,6 script OnPoringKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+1;
+ announce "You killed a Poring - Gained 1 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnFaberKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+2;
+ announce "You killed a Faber - Gained 2 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnLunaticKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+4;
+ announce "You killed a Lunatic - Gained 4 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnDropsKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+4;
+ announce "You killed a Drops - Gained 4 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnPickyKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+4;
+ announce "You killed a Picky - Gained 4 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnChonChonKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+8;
+ announce "You killed a ChonChon - Gained 8 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnSPickyKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+8;
+ announce "You killed a Super Picky - Gained 8 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnWillowKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+8;
+ announce "You killed a Willow - Gained 8 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnRodaKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+16;
+ announce "You killed a Roda Frog - Gained 16 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnCondorKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+16;
+ announce "You killed a Condor - Gained 16 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnThiefKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+32;
+ announce "You killed a Theif Bug Larva - Gained 32 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnSavageKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+64;
+ announce "You killed a Savage Babe - Gained 64 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnFamiliarKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+128;
+ announce "You killed a Familiar - Gained 128 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnHornetKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+128;
+ announce "You killed a Hornet - Gained 128 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnPuppyKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+256;
+ announce "You killed a Desert Wolf Puppy - Gained 256 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnRockerKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+256;
+ announce "You killed a Rocker - Gained 256 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnSporeKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+256;
+ announce "You killed a Spore - Gained 256 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnSkeletonKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+512;
+ announce "You killed a Skeleton - Gained 512 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnPlanktonKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+512;
+ announce "You killed a Plankton - Gained 512 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnAntonioKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+512;
+ announce "You killed an Antonio - Gained 512 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnThiefFemaleKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+512;
+ announce "You killed a Thief Bug Female - Gained 512 exp",19;
+ callfunc "duelkill";
+ }
+
+ gon_test.gat,56,91,6 script OnSpecialKilled -1,{
+ if (@marena == 0) callfunc "illegalkill";
+ set #monpoints,#monpoints+512;
+ announce "You killed a Special Monster - Gained 1024 exp",19;
+ callfunc "duelkill";
+ }
+
+function script duelkill -1,{
+if (strcharinfo(0) == $@duelist1$ || strcharinfo(0) == $@duelist2$) goto L_Heal;
+end;
+ L_Heal:
+ announce strcharinfo(0) + " won the Duel",1;
+ set @fighting,0;
+ set #heal,0;
+ set @healing,0;
+ end;
+}
+
+function script illegalkill -1,{
+announce "Illegal Kill by " + strcharinfo(0) + " Detected",1;
+percentheal -100,-100;
+end;
+}
+
+// Healer //
+gon_test.gat,55,103,6 script Nurse 90,{
+if (@battle == 1 || #heal == 0) goto L_NoHeal;
+if (#heal == 1 && @healing < 100) goto L_Heal; //Total healing required
+set @fighting,0;
+set #heal,0;
+set @healing,0;
+specialeffect2 364;
+announce "Your monster has healed.",19;
+end;
+
+ L_Heal:
+ set @healrate,140 / #monster; //Rate of heal per click
+ set @healing,@healing + @healrate;
+ end;
+
+ L_NoHeal:
+ announce "Your monster does not need healing yet.",19;
+ end;
+}
+
+// Warps players //
+- script SummonPad 111,2,2,{
+end;
+OnTouch:
+set @marena,1;
+warp "gon_test.gat",57,99;
+}
+gon_test.gat,57,86,5 duplicate(SummonPad) Summon Pad 1 111,2,2
+gon_test.gat,43,87,5 duplicate(SummonPad) Summon Pad 2 111,2,2
+gon_test.gat,72,87,5 duplicate(SummonPad) Summon Pad 3 111,2,2
+
+
+
+// Skill Disabler //
+gon_test.gat,57,99,5 script Skill Disable 111,3,3,{
+atcommand strcharinfo(0) + "@skilloff";
+disablenpc "Skill Disable";
+end;
+}
+
+// Duel Arena //
+gon_test.gat,58,103,5 script Duel Master 92,{
+if ($@duelist1$ == "") set @duel,0;
+if ($@monster1 == "") set @duel,0;
+set @marena,1;
+if (#monster == 0) goto L_NoMon;
+mes "[Duel Master]";
+if ($@duel == 1) goto L_Waiting;
+if ($@duel == 2) goto L_Dueling;
+
+mes "There are currently no players dueling.";
+next;
+menu "Join",-,"Spectate",L_Spec,"Cancel",L_Exit;
+
+// Player 1 Enters Duel Area //
+if (#heal == 1) goto L_NeedHeal;
+if ($@duel == 1) goto L_Duel2;
+set $@duel,1;
+if (#monster > 1 && #monster < 20) set $@monster1,1;
+if (#monster > 19 && #monster < 30) set $@monster1,2;
+if (#monster > 29 && #monster < 40) set $@monster1,3;
+if (#monster > 39 && #monster < 50) set $@monster1,4;
+if (#monster > 49 && #monster < 60) set $@monster1,5;
+if (#monster > 59 && #monster < 70) set $@monster1,6;
+if (#monster > 69 && #monster < 80) set $@monster1,7;
+if (#monster > 79 && #monster < 90) set $@monster1,8;
+if (#monster > 89 && #monster < 100) set $@monster1,9;
+if (#monster > 99 && #monster < 110) set $@monster1,10;
+set $@duelist1$,strcharinfo(0);
+set @battle,1;
+announce strcharinfo(0) + " [Monster Level: " + $@monster1 + "] is waiting for a duel",1;
+atcommand strcharinfo(0) + "@option 64 0 64";
+warp "gon_test.gat",49,5;
+close;
+
+L_Waiting:
+mes "^0000FF " + $@duelist1$ + "^000000 [Monster Level: ^FF0000" + $@monster1 + "^000000]";
+mes "Is waiting for an opponent";
+next;
+menu "Join",-,"Spectate",L_Spec,"Cancel",L_Exit;
+
+// Player 2 Enters Duel Area //
+if (#heal == 1) goto L_NeedHeal;
+L_Duel2:
+if ($@duel == 2) goto L_Spec;
+set $@duel,2;
+if (#monster > 1 && #monster < 20) set $@monster2,1;
+if (#monster > 19 && #monster < 30) set $@monster2,2;
+if (#monster > 29 && #monster < 40) set $@monster2,3;
+if (#monster > 39 && #monster < 50) set $@monster2,4;
+if (#monster > 49 && #monster < 60) set $@monster2,5;
+if (#monster > 59 && #monster < 70) set $@monster2,6;
+if (#monster > 69 && #monster < 80) set $@monster2,7;
+if (#monster > 79 && #monster < 90) set $@monster2,8;
+if (#monster > 89 && #monster < 100) set $@monster2,9;
+if (#monster > 99 && #monster < 110) set $@monster2,10;
+set $@duelist2$,strcharinfo(0);
+set @battle,1;
+announce strcharinfo(0) + " [Monster Level: " + $@monster2 + "] has joined the duel",1;
+atcommand strcharinfo(0) + "@option 64 0 64";
+warp "gon_test.gat",49,5;
+close;
+
+ L_Dueling:
+ mes "^0000FF" + $@duelist1$ + "^000000 [Monster Level: ^0000FF" + $@monster1 + "^000000]";
+ mes " VS.";
+ mes "^FF0000" + $@duelist2$ + "^000000 [Monster Level: ^FF0000" + $@monster2 + "^000000]";
+ next;
+ menu "Spectate",L_Spec,"Cancel",L_Exit;
+
+ L_Spec:
+ set @battle,0;
+ atcommand strcharinfo(0) + "@option 64 0 64";
+ warp "gon_test.gat",49,5;
+ close;
+
+ L_Exit:
+ mes "[Duel Master]";
+ mes "Goodbye.";
+ close;
+
+ L_NoMon:
+ mes "[Duel Master]";
+ mes "You haven't got a monster, you can't participate.";
+ close;
+
+ L_NeedHeal:
+ mes "[Duel Master]";
+ mes "You need to heal before you can join.";
+ close;
+}
+
+// Duel Exit //
+gon_test.gat,42,8,5 script Duel Master 92,{
+mes "[Duel Master]";
+mes "Would you like to return?";
+menu "Yes",L_Leave,"No",-;
+mes "Alright";
+close;
+
+ L_Leave:
+ if ($@duelist1$ == strcharinfo(0)) goto L_Leave1;
+ if ($@duelist2$ == strcharinfo(0)) goto L_Leave2;
+
+ L_Leave3:
+ atcommand strcharinfo(0) + "@option 0 0 0";
+ set @battle,0;
+ warp "gon_test.gat",57,99;
+ close;
+
+ L_Leave1:
+ set $@duelist1$,$@duelist2$;
+ set $@monster1,$@monster2;
+ set $@duel,$@duel-1;
+ announce strcharinfo(0) + " stopped dueling",1;
+ goto L_Leave3;
+
+ L_Leave2:
+ set $@duelist2$,"";
+ set $@monster2,0;
+ set $@duel,$@duel-1;
+ announce strcharinfo(0) + " stopped dueling",1;
+ goto L_Leave3;
+}
+
+gon_test.gat,49,5,5 duplicate(SummonPad) Summon Pad 4 111,2,2
+gon_test.gat,55,8,6 duplicate(monsterreferee) Referee 61 \ No newline at end of file
diff --git a/npc/custom/penal_servitude.txt b/npc/custom/penal_servitude.txt
new file mode 100644
index 000000000..343e9d983
--- /dev/null
+++ b/npc/custom/penal_servitude.txt
@@ -0,0 +1,182 @@
+//===== Athena Script =======================================
+//= Penal Servitude Script
+//===== By ================================================
+//= Lupus
+//===== Version ===========================================
+//= 1.1
+//===== Compatible With ===================================
+//= eAthena Final (SVN)
+//===== Description =======================================
+//= A simple Penal Servitude Script.
+//= It could cheer up your prisoners a bit.
+//===== Comments ==========================================
+// This script uses CHEQUES of the 2nd KAFRA_BANK.TXT
+// var PRISON - it counts number of your imprisonments.
+// 1.1 English translation
+//=========================================================
+
+sec_pri.gat,36,58,1 script Chief Warder 105,{
+ mes "[Saddeus]";
+ emotion 1;
+ if (sex) mes "Mr. Prisoner #"+BaseLevel+JobLevel+",";
+ if (!sex) mes "Ms. Prisoner #"+BaseLevel+JobLevel+",";
+ mes "what's the noise over there?";
+ next;
+ menu "Let me free, I'll pay!",-, "Let me to work off my freedom!",M_Q1, "Nothing",M_NO_THANKS;
+
+M_PAY:
+ mes "[Saddeus]";
+ set @MUSTPAY,(PRISON+1)*1000000;
+ if (@MUSTPAY<1000000) set @MUSTPAY,1000000;
+ if (@MUSTPAY>100000000) set @MUSTPAY,100000000;
+ if (PRISON==1) mes "I can't remember you. Is it your 1st time?";
+ if (PRISON>1) mes "You again? Sombody hasn't grown wiser from the very first visit...";
+ mes "OK, we could release you for ^FF0000"+@MUSTPAY+"z^000000.";
+ next;
+ menu "I pay cash!",M_PAYCASH,"Do you accept cheques?",M_PAYBANK,"I've changed my mind.",-;
+
+ mes "[Saddeus]";
+ mes "You've got some time to think about...";
+ close;
+
+M_PAYCASH:
+ if (@MUSTPAY>Zeny) goto L_NOCASH;
+ set Zeny,Zeny-@MUSTPAY;
+ mes "[Saddeus]";
+ mes "OK, sing here and there.";
+ goto L_RELEASE;
+
+L_NOCASH:
+ mes "[Saddeus]";
+ mes "What's this? It's not enough!";
+ close;
+
+M_PAYBANK:
+ if (@MUSTPAY>#kafrabank) goto L_NOBANK;
+ set #kafrabank,#kafrabank-@MUSTPAY;
+ mes "[Saddeus]";
+ mes "OK, sign your cheque. And put down your name in my book.";
+ goto L_RELEASE;
+
+L_NOBANK:
+ mes "[Saddeus]";
+ if (#kafrabank==0) mes "Your case says nothing about your bank accounts.";
+ if (#kafrabank!=0) mes "Alas, there's your bank account info... ^FF0000"+#kafrabank+"z^000000... in the case. It's not enough.";
+ mes "Stop your silly games now!";
+ close;
+
+L_RELEASE:
+ set PRISON,PRISON+1; //EáûâàEEEðüE...
+ next;
+ mes "[Saddeus]";
+ mes "You are free now!";
+ next;
+ savepoint "izlude.gat",105,112;
+ warp "izlude.gat",105,112;
+ close;
+
+M_Q1:
+//EåñE1
+ mes "[Saddeus]";
+ mes "Our stocks are short of toadstools. Remember your morning's skilly? What about some work at our sponsored mushroom farm?";
+ next;
+ menu "OK, I'll work off!",-, "I love this prison!",M_NO_THANKS;
+
+ mes "[Saddeus]";
+ mes "Talk to our overseer, Oliver.";
+ next;
+
+ nude;
+
+ set @rw,rand(1,4);
+ if (@rw==2) goto L_W2;
+ if (@rw==3) goto L_W3;
+ if (@rw==4) goto L_W4;
+
+L_W1:
+ savepoint "sec_in02.gat",179,76;
+ warp "sec_in02.gat",179,76;
+ close;
+
+L_W2:
+ savepoint "sec_in02.gat",139,32;
+ warp "sec_in02.gat",139,32;
+ close;
+
+L_W3:
+ savepoint "sec_in02.gat",100,28;
+ warp "sec_in02.gat",100,28;
+ close;
+
+L_W4:
+ savepoint "sec_in02.gat",107,75;
+ warp "sec_in02.gat",107,75;
+ close;
+
+M_NO_THANKS:
+ mes "[Saddeus]";
+ if (rand(2)) mes "Is today X-Mas time, huh?";
+ mes "Now shut up and back off!";
+ if (rand(2)) emotion 23;
+ close;
+}
+
+sec_in02.gat,137,57,1 script Overseer 708,{
+ mes "[Oliver]";
+
+ delitem 4002,countitem(4002);//Items: Fabre_Card,
+ delitem 4009,countitem(4009);//Items: Chonchon_Card,
+ delitem 4022,countitem(4022);//Items: Spore_Card,
+ delitem 4048,countitem(4048);//Items: Poison_Spore_Card,
+
+ if (PRISON_Q <= 0 ) goto L_GET_Q;
+
+ mes "I want you to gather ^FF0000"+PRISON_Q+" Orange Net Mushroom^000000.";
+ if ( countitem(1069)<PRISON_Q ) close;//Items: Orange_Net_Mushroom,
+ mes "OK... hand me all the shrooms...";
+ mes "Let me see... "+countitem(1069)+" of almost eadible ones...";//Items: Orange_Net_Mushroom,
+ mes "And "+countitem(1070)+" useless deadly ones.";//Items: Orange_Gooey_Mushroom_,
+ next;
+ mes "[Oliver]";
+ mes "Thank you. You are free!";
+ set PRISON_Q,0;
+ delitem 1069,countitem(1069);//Items: Orange_Net_Mushroom,
+ delitem 1070,countitem(1070);//Items: Orange_Gooey_Mushroom_,
+ next;
+ savepoint "izlude.gat",105,112;
+ warp "izlude.gat",105,112;
+ close;
+
+L_GET_Q:
+ set PRISON,PRISON+1; //EáûâàEEEðüE...
+ if (PRISON > 1) mes "Hmm... You've been here already... Well-well...";
+
+ if ( countitem(1069) || countitem(1070) ) mes "Drop these mushrooms!! They are poisonous!";//Items: Orange_Net_Mushroom, Orange_Gooey_Mushroom_,
+ delitem 1069,countitem(1069);//Items: Orange_Net_Mushroom,
+ delitem 1070,countitem(1070);//Items: Orange_Gooey_Mushroom_,
+
+ set PRISON_Q, PRISON*3 + BaseLevel/3;
+ set PRISON_Q, PRISON_Q * (readparam(bAspd)/55 + 1);
+ set PRISON_Q, PRISON_Q+rand(50,60);
+ mes "OK, you must bring me ^FF0000"+PRISON_Q+"^000000 edible ^FF0000Orange Net Mushroom^000000 toadstoo.. shrooms.";
+ if(readparam(bAspd)>=100) mes "You're a fast fella! You'll have to get more shrooms, then.";
+ if (rand(10)<4) mes "And you may eat the deadly ones for breakfast.";
+ close;
+}
+
+
+sec_in02.gat mapflag nomemo
+sec_in02.gat mapflag nosave SavePoint
+sec_in02.gat mapflag noteleport
+sec_in02.gat mapflag nobranch
+sec_in02.gat mapflag nowarp
+//sec_in02.gat mapflag pvp
+sec_in02.gat mapflag pvp_noparty
+//sec_in02.gat mapflag gvg
+sec_in02.gat mapflag pvp_nightmaredrop random,all,300
+
+sec_in02.gat,138,55,100,100 monster Toadstool 1182,30,10000,10000,1
+sec_in02.gat,138,55,100,100 monster Fabre 1184,10,20000,20000
+sec_in02.gat,138,55,100,100 monster Chonchon 1183,11,20000,20000
+sec_in02.gat,138,55,100,100 monster Spore 1014,12,20000,20000
+sec_in02.gat,138,55,100,100 monster Poison Spore 1077,3,20000,20000
diff --git a/npc/custom/platinum_skills.txt b/npc/custom/platinum_skills.txt
new file mode 100644
index 000000000..3be00a151
--- /dev/null
+++ b/npc/custom/platinum_skills.txt
@@ -0,0 +1,112 @@
+//===== eAthena Script ======================================================================
+//= Platinum Skills NPC
+//===== By: =================================================================================
+//= Keichii and edited by DarkChild
+//===== Current Version: ====================================================================
+//= 2.2
+//===== Compatible With: ====================================================================
+//= Any eAthena Version
+//===== Description: ========================================================================
+//= Single NPC that assigns quests skills for all classes.
+//===== Additional Comments: ================================================================
+//= Added advanced classes by ShadowLady.
+//= Added baby clases by Midas
+//= Simplified Job Checks [Silentdragon]
+//===========================================================================================
+prontera.gat,128,200,6 script Platinum Skill NPC 94,{
+mes "[Platinum Skill NPC]";
+mes "I can give you the special skills available to your job. Would you like these skills now?";
+next;
+menu "Yes",Lgetskills,"No",Lnogetskills;
+
+Lgetskills:
+if (BaseClass==Job_Novice) goto Lskillsnovice;
+if (BaseClass==Job_Swordman) goto Lskillsswordie;
+if (BaseClass==Job_Mage) goto Lskillsmage;
+if (BaseClass==Job_Archer) goto Lskillsarcher;
+if (BaseClass==Job_Acolyte) goto Lskillsaco;
+if (BaseClass==Job_Merchant) goto Lskillsmerchie;
+if (BaseClass==Job_Thief) goto Lskillsthief;
+Lskillsnovice:
+mes "[Platinum Skill NPC]";
+mes "I see that you are a Novice Class. I will now add the special skills available to these jobs.";
+skill 142,1,0;
+if(BaseJob==0) skill 143,1,0;
+mes " ";
+mes "You now have all the special skills available to the these jobs.";
+next;
+goto LskillsEND;
+Lskillsswordie:
+mes "[Platinum Skill NPC]";
+mes "I see that you are a Swordman Class. I will now add the special skills available to these jobs.";
+skill 142,1,0;
+skill 144,1,0;
+skill 145,1,0;
+skill 146,1,0;
+mes " ";
+mes "You now have all the special skills available to the these jobs.";
+next;
+goto LskillsEND;
+Lskillsmage:
+mes "[Platinum Skill NPC]";
+mes "I see that you are a Mage Class. I will now add the special skills available to these jobs.";
+skill 142,1,0;
+skill 157,1,0;
+mes " ";
+mes "You now have all the special skills available to the these jobs.";
+next;
+goto LskillsEND;
+Lskillsarcher:
+mes "[Platinum Skill NPC]";
+mes "I see that you are an Archer Class. I will now add the special skills available to these jobs.";
+skill 142,1,0;
+skill 147,1,0;
+skill 148,1,0;
+mes " ";
+mes "You now have all the special skills available to the these jobs.";
+next;
+goto LskillsEND;
+Lskillsaco:
+mes "[Platinum Skill NPC]";
+mes "I see that you are an Acolyte Class. I will now add the special skills available to these jobs.";
+skill 142,1,0;
+skill 156,1,0;
+mes " ";
+mes "You now have all the special skills available to the these jobs.";
+next;
+goto LskillsEND;
+Lskillsmerchie:
+mes "[Platinum Skill NPC]";
+mes "I see that you are a Merchant Class.I will now add the special skills available to these jobs.";
+skill 142,1,0;
+skill 153,1,0;
+skill 154,1,0;
+skill 155,1,0;
+mes " ";
+mes "You now have all the special skills available to the these jobs.";
+next;
+goto LskillsEND;
+Lskillsthief:
+mes "[Platinum Skill NPC]";
+mes "I see that you are a Thief Class. I will now add the special skills available to these jobs.";
+skill 142,1,0;
+skill 149,1,0;
+skill 150,1,0;
+skill 151,1,0;
+skill 152,1,0;
+mes " ";
+mes "You now have all the special skills available to the these jobs.";
+next;
+goto LskillsEND;
+LskillsEND:
+mes "[Platinum Skill NPC]";
+mes "Have a nice day.";
+close;
+Lnogetskills:
+mes "[Platinum Skill NPC]";
+mes "Aww, how come you dont want my special skills?";
+mes "*sob* FINE!";
+mes "Have a nice day... >.>";
+close;
+}
+
diff --git a/npc/custom/poetry/ayothaya.txt b/npc/custom/poetry/ayothaya.txt
new file mode 100644
index 000000000..e4b842df4
--- /dev/null
+++ b/npc/custom/poetry/ayothaya.txt
@@ -0,0 +1,724 @@
+//===== eAthena Script =======================================
+//= Wandering poet NPC
+//===== By: ==================================================
+//= by MouseJstr
+//===== Current Version: =====================================
+//= 0.2a
+//===== Compatible With: =====================================
+//= eAthena 1.0 Final +
+//===== Description: =========================================
+
+ayothaya.gat,58,134,5 script Louise Gluck 763,{
+ mes "[Louise Gluck]";
+ mes "What is the next line? ";
+ close;
+
+ OnTimer5000:
+ npcwalkto 65,129;
+ npctalk "Twas brillig, and the slithy toves Did gyre and gimble in the wabe:";
+ end;
+
+ OnTimer10000:
+ npcwalkto 71,131;
+ npctalk "All mimsy were the bogoroves, And the mome raths outgrabe.";
+ end;
+
+ OnTimer15000:
+ npcwalkto 75,127;
+ npctalk "Beware the Jabberwock, my son! The jaws that bite, theh claws that catch!";
+ end;
+
+ OnTimer20000:
+ npcwalkto 80,122;
+ npctalk "Beware the Jubjub bird and shun The frumious Bandersnatch!";
+ end;
+
+ OnTimer25000:
+ npcwalkto 82,118;
+ npctalk "He took his vorpal sword in hand: Long time the manxome foe he sought-";
+ end;
+
+ OnTimer30000:
+ npcwalkto 93,115;
+ npctalk "So rested he by the Tumtum tree, And stood a while in thought.";
+ end;
+
+ OnTimer35000:
+ npcwalkto 94,112;
+ npctalk "And, as in uffish thought he stood, The Jabberwock, with eyes of flame,";
+ end;
+
+ OnTimer40000:
+ npcwalkto 88,124;
+ npctalk "Came whiffling through the tulgey wood, And burbled as it came!";
+ end;
+
+ OnTimer45000:
+ npcwalkto 81,129;
+ npctalk "One, two! One, two! And through and through The vorpal blade went snicker-snack!";
+ end;
+
+ OnTimer50000:
+ npcwalkto 76,139;
+ npctalk "He left it dead, and with its head He went galumphing back.";
+ end;
+
+ OnTimer55000:
+ npcwalkto 67,138;
+ npctalk "And hast though slain the Jabberwock? Come to my arms beamish boy!";
+ end;
+
+ OnTimer60000:
+ npcwalkto 59,144;
+ npctalk "O frabjous day! Callooh! Callay! He chortled in his joy.";
+ end;
+
+ OnTimer65000:
+ npcwalkto 55,124;
+ npctalk "Twas brillig, and the slithy toves Did gyre and gimble in the wabe:";
+ end;
+
+ OnTimer70000:
+ npcwalkto 58,134;
+ npctalk "All mimsy were the bogoroves, And the mome raths outgrabe.";
+ setnpctimer 0;
+ end;
+
+ OnInit:
+ npcspeed 150;
+ initnpctimer;
+ end;
+}
+
+
+ayothaya.gat,212,276,0 script Romeo 50,{
+ mes "[Romeo]";
+ mes "What is the next line? ";
+ close;
+ OnTimer0:
+ npctalk "He jests at scars that never felt a wound.";
+ end;
+ OnTimer6000:
+ npctalk "But, soft! what light through yonder window breaks?";
+ end;
+ OnTimer8000:
+ npctalk "It is the east, and Juliet is the sun.";
+ end;
+ OnTimer10000:
+ npctalk "Arise, fair sun, and kill the envious moon,";
+ end;
+ OnTimer12000:
+ npctalk "Who is already sick and pale with grief,";
+ end;
+ OnTimer14000:
+ npctalk "That thou her maid art far more fair than she:";
+ end;
+ OnTimer16000:
+ npctalk "Be not her maid, since she is envious;";
+ end;
+ OnTimer18000:
+ npctalk "Her vestal livery is but sick and green";
+ end;
+ OnTimer20000:
+ npctalk "And none but fools do wear it; cast it off.";
+ end;
+ OnTimer22000:
+ npctalk "It is my lady, O, it is my love!";
+ end;
+ OnTimer24000:
+ npctalk "O, that she knew she were!";
+ end;
+ OnTimer26000:
+ npctalk "She speaks yet she says nothing: what of that?";
+ end;
+ OnTimer28000:
+ npctalk "Her eye discourses; I will answer it.";
+ end;
+ OnTimer30000:
+ npctalk "I am too bold, tis not to me she speaks:";
+ end;
+ OnTimer32000:
+ npctalk "Two of the fairest stars in all the heaven,";
+ end;
+ OnTimer34000:
+ npctalk "Having some business, do entreat her eyes";
+ end;
+ OnTimer36000:
+ npctalk "To twinkle in their spheres till they return.";
+ end;
+ OnTimer38000:
+ npctalk "What if her eyes were there, they in her head?";
+ end;
+ OnTimer40000:
+ npctalk "The brightness of her cheek would shame those stars,";
+ end;
+ OnTimer42000:
+ npctalk "As daylight doth a lamp; her eyes in heaven";
+ end;
+ OnTimer44000:
+ npctalk "Would through the airy region stream so bright";
+ end;
+ OnTimer46000:
+ npctalk "That birds would sing and think it were not night.";
+ end;
+ OnTimer48000:
+ npctalk "See, how she leans her cheek upon her hand!";
+ end;
+ OnTimer50000:
+ npctalk "O, that I were a glove upon that hand,";
+ end;
+ OnTimer52000:
+ npctalk "That I might touch that cheek!";
+ end;
+ OnTimer56000:
+ npctalk "She speaks:";
+ end;
+ OnTimer58000:
+ npctalk "O, speak again, bright angel! for thou art";
+ end;
+ OnTimer60000:
+ npctalk "As glorious to this night, being oer my head";
+ end;
+ OnTimer62000:
+ npctalk "As is a winged messenger of heaven";
+ end;
+ OnTimer64000:
+ npctalk "Unto the white-upturned wondering eyes";
+ end;
+ OnTimer66000:
+ npctalk "Of mortals that fall back to gaze on him";
+ end;
+ OnTimer68000:
+ npctalk "When he bestrides the lazy-pacing clouds";
+ end;
+ OnTimer70000:
+ npctalk "And sails upon the bosom of the air.";
+ end;
+ OnTimer80000:
+ npctalk "Shall I hear more, or shall I speak at this?";
+ end;
+ OnTimer106000:
+ npctalk "I take thee at thy word:";
+ end;
+ OnTimer108000:
+ npctalk "Call me but love, and Ill be new baptized;";
+ end;
+ OnTimer110000:
+ npctalk "Henceforth I never will be Romeo.";
+ end;
+ OnTimer116000:
+ npctalk "By a name";
+ end;
+ OnTimer118000:
+ npctalk "I know not how to tell thee who I am:";
+ end;
+ OnTimer120000:
+ npctalk "My name, dear saint, is hateful to myself,";
+ end;
+ OnTimer122000:
+ npctalk "Because it is an enemy to thee;";
+ end;
+ OnTimer124000:
+ npctalk "Had I it written, I would tear the word.";
+ end;
+ OnTimer132000:
+ npctalk "Neither, fair saint, if either thee dislike.";
+ end;
+ OnTimer142000:
+ npctalk "With loves light wings did I oer-perch these walls;";
+ end;
+ OnTimer144000:
+ npctalk "For stony limits cannot hold love out,";
+ end;
+ OnTimer146000:
+ npctalk "And what love can do that dares love attempt;";
+ end;
+ OnTimer148000:
+ npctalk "Therefore thy kinsmen are no let to me.";
+ end;
+ OnTimer152000:
+ npctalk "Alack, there lies more peril in thine eye";
+ end;
+ OnTimer154000:
+ npctalk "Than twenty of their swords: look thou but sweet,";
+ end;
+ OnTimer156000:
+ npctalk "And I am proof against their enmity.";
+ end;
+ OnTimer160000:
+ npctalk "I have nights cloak to hide me from their sight;";
+ end;
+ OnTimer162000:
+ npctalk "And but thou love me, let them find me here:";
+ end;
+ OnTimer164000:
+ npctalk "My life were better ended by their hate,";
+ end;
+ OnTimer166000:
+ npctalk "Than death prorogued, wanting of thy love.";
+ end;
+ OnTimer170000:
+ npctalk "By love, who first did prompt me to inquire;";
+ end;
+ OnTimer172000:
+ npctalk "He lent me counsel and I lent him eyes.";
+ end;
+ OnTimer174000:
+ npctalk "I am no pilot; yet, wert thou as far";
+ end;
+ OnTimer176000:
+ npctalk "As that vast shore washd with the farthest sea,";
+ end;
+ OnTimer178000:
+ npctalk "I would adventure for such merchandise.";
+ end;
+ OnTimer224000:
+ npctalk "Lady, by yonder blessed moon I swear";
+ end;
+ OnTimer226000:
+ npctalk "That tips with silver all these fruit-tree tops--";
+ end;
+ OnTimer234000:
+ npctalk "What shall I swear by?";
+ end;
+ OnTimer244000:
+ npctalk "If my hearts dear love--";
+ end;
+ OnTimer264000:
+ npctalk "O, wilt thou leave me so unsatisfied?";
+ end;
+ OnTimer268000:
+ npctalk "The exchange of thy loves faithful vow for mine.";
+ end;
+ OnTimer274000:
+ npctalk "Wouldst thou withdraw it? for what purpose, love?";
+ end;
+ OnTimer294000:
+ npctalk "O blessed, blessed night! I am afeard.";
+ end;
+ OnTimer296000:
+ npctalk "Being in night, all this is but a dream,";
+ end;
+ OnTimer298000:
+ npctalk "Too flattering-sweet to be substantial.";
+ end;
+ OnTimer330000:
+ npctalk "So thrive my soul--";
+ end;
+ OnTimer334000:
+ npctalk "A thousand times the worse, to want thy light.";
+ end;
+ OnTimer336000:
+ npctalk "Love goes toward love, as schoolboys from";
+ end;
+ OnTimer338000:
+ npctalk "their books,";
+ end;
+ OnTimer340000:
+ npctalk "But love from love, toward school with heavy looks.";
+ end;
+ OnTimer356000:
+ npctalk "It is my soul that calls upon my name:";
+ end;
+ OnTimer358000:
+ npctalk "How silver-sweet sound lovers tongues by night,";
+ end;
+ OnTimer360000:
+ npctalk "Like softest music to attending ears!";
+ end;
+ OnTimer364000:
+ npctalk "My dear?";
+ end;
+ OnTimer370000:
+ npctalk "At the hour of nine.";
+ end;
+ OnTimer376000:
+ npctalk "Let me stand here till thou remember it.";
+ end;
+ OnTimer382000:
+ npctalk "And Ill still stay, to have thee still forget,";
+ end;
+ OnTimer384000:
+ npctalk "Forgetting any other home but this.";
+ end;
+ OnTimer398000:
+ npctalk "I would I were thy bird.";
+ end;
+ OnTimer410000:
+ npctalk "Sleep dwell upon thine eyes, peace in thy breast!";
+ end;
+ OnTimer412000:
+ npctalk "Would I were sleep and peace, so sweet to rest!";
+ end;
+ OnTimer414000:
+ npctalk "Hence will I to my ghostly fathers cell,";
+ end;
+ OnTimer416000:
+ npctalk "His help to crave, and my dear hap to tell.";
+ end;
+ OnTimer538000:
+ setnpctimer 0;
+ end;
+ OnInit:
+ npcspeed 150;
+ initnpctimer;
+ end;
+}
+
+ayothaya.gat,214,279,3 script Juliet 53,{
+ mes "[Juliet]";
+ mes "What is the next line? ";
+ close;
+ OnTimer54000:
+ npctalk "Ay me!";
+ end;
+ OnTimer72000:
+ npctalk "O Romeo, Romeo! wherefore art thou Romeo?";
+ end;
+ OnTimer74000:
+ npctalk "Deny thy father and refuse thy name;";
+ end;
+ OnTimer76000:
+ npctalk "Or, if thou wilt not, be but sworn my love,";
+ end;
+ OnTimer78000:
+ npctalk "And Ill no longer be a Capulet.";
+ end;
+ OnTimer82000:
+ npctalk "Tis but thy name that is my enemy;";
+ end;
+ OnTimer84000:
+ npctalk "Thou art thyself, though not a Montague.";
+ end;
+ OnTimer86000:
+ npctalk "Whats Montague? it is nor hand, nor foot,";
+ end;
+ OnTimer88000:
+ npctalk "Nor arm, nor face, nor any other part";
+ end;
+ OnTimer90000:
+ npctalk "Belonging to a man. O, be some other name!";
+ end;
+ OnTimer92000:
+ npctalk "Whats in a name? that which we call a rose";
+ end;
+ OnTimer94000:
+ npctalk "By any other name would smell as sweet;";
+ end;
+ OnTimer96000:
+ npctalk "So Romeo would, were he not Romeo calld,";
+ end;
+ OnTimer98000:
+ npctalk "Retain that dear perfection which he owes";
+ end;
+ OnTimer100000:
+ npctalk "Without that title. Romeo, doff thy name,";
+ end;
+ OnTimer102000:
+ npctalk "And for that name which is no part of thee";
+ end;
+ OnTimer104000:
+ npctalk "Take all myself.";
+ end;
+ OnTimer112000:
+ npctalk "What man art thou that thus bescreend in night";
+ end;
+ OnTimer114000:
+ npctalk "So stumblest on my counsel?";
+ end;
+ OnTimer126000:
+ npctalk "My ears have not yet drunk a hundred words";
+ end;
+ OnTimer128000:
+ npctalk "Of that tongues utterance, yet I know the sound:";
+ end;
+ OnTimer130000:
+ npctalk "Art thou not Romeo and a Montague?";
+ end;
+ OnTimer134000:
+ npctalk "How camest thou hither, tell me, and wherefore?";
+ end;
+ OnTimer136000:
+ npctalk "The orchard walls are high and hard to climb,";
+ end;
+ OnTimer138000:
+ npctalk "And the place death, considering who thou art,";
+ end;
+ OnTimer140000:
+ npctalk "If any of my kinsmen find thee here.";
+ end;
+ OnTimer150000:
+ npctalk "If they do see thee, they will murder thee.";
+ end;
+ OnTimer158000:
+ npctalk "I would not for the world they saw thee here.";
+ end;
+ OnTimer168000:
+ npctalk "By whose direction foundst thou out this place?";
+ end;
+ OnTimer180000:
+ npctalk "Thou knowst the mask of night is on my face,";
+ end;
+ OnTimer182000:
+ npctalk "Else would a maiden blush bepaint my cheek";
+ end;
+ OnTimer184000:
+ npctalk "For that which thou hast heard me speak to-night";
+ end;
+ OnTimer186000:
+ npctalk "Fain would I dwell on form, fain, fain deny";
+ end;
+ OnTimer188000:
+ npctalk "What I have spoke: but farewell compliment!";
+ end;
+ OnTimer190000:
+ npctalk "Dost thou love me? I know thou wilt say Ay,";
+ end;
+ OnTimer192000:
+ npctalk "And I will take thy word: yet if thou swearst,";
+ end;
+ OnTimer194000:
+ npctalk "Thou mayst prove false; at lovers perjuries";
+ end;
+ OnTimer196000:
+ npctalk "Then say, Jove laughs. O gentle Romeo,";
+ end;
+ OnTimer198000:
+ npctalk "If thou dost love, pronounce it faithfully:";
+ end;
+ OnTimer200000:
+ npctalk "Or if thou thinkst I am too quickly won,";
+ end;
+ OnTimer202000:
+ npctalk "Ill frown and be perverse an say thee nay,";
+ end;
+ OnTimer204000:
+ npctalk "So thou wilt woo; but else, not for the world.";
+ end;
+ OnTimer206000:
+ npctalk "In truth, fair Montague, I am too fond,";
+ end;
+ OnTimer208000:
+ npctalk "And therefore thou mayst think my havior light:";
+ end;
+ OnTimer210000:
+ npctalk "But trust me, gentleman, Ill prove more true";
+ end;
+ OnTimer212000:
+ npctalk "Than those that have more cunning to be strange.";
+ end;
+ OnTimer214000:
+ npctalk "I should have been more strange, I must confess,";
+ end;
+ OnTimer216000:
+ npctalk "But that thou overheardst, ere I was ware,";
+ end;
+ OnTimer218000:
+ npctalk "My true loves passion: therefore pardon me,";
+ end;
+ OnTimer220000:
+ npctalk "And not impute this yielding to light love,";
+ end;
+ OnTimer222000:
+ npctalk "Which the dark night hath so discovered.";
+ end;
+ OnTimer228000:
+ npctalk "O, swear not by the moon, the inconstant moon,";
+ end;
+ OnTimer230000:
+ npctalk "That monthly changes in her circled orb,";
+ end;
+ OnTimer232000:
+ npctalk "Lest that thy love prove likewise variable.";
+ end;
+ OnTimer236000:
+ npctalk "Do not swear at all;";
+ end;
+ OnTimer238000:
+ npctalk "Or, if thou wilt, swear by thy gracious self,";
+ end;
+ OnTimer240000:
+ npctalk "Which is the god of my idolatry,";
+ end;
+ OnTimer242000:
+ npctalk "And Ill believe thee.";
+ end;
+ OnTimer246000:
+ npctalk "Well, do not swear: although I joy in thee,";
+ end;
+ OnTimer248000:
+ npctalk "I have no joy of this contract to-night:";
+ end;
+ OnTimer250000:
+ npctalk "It is too rash, too unadvised, too sudden;";
+ end;
+ OnTimer252000:
+ npctalk "Too like the lightning, which doth cease to be";
+ end;
+ OnTimer254000:
+ npctalk "Ere one can say It lightens. Sweet, good night!";
+ end;
+ OnTimer256000:
+ npctalk "This bud of love, by summers ripening breath,";
+ end;
+ OnTimer258000:
+ npctalk "May prove a beauteous flower when next we meet.";
+ end;
+ OnTimer260000:
+ npctalk "Good night, good night! as sweet repose and rest";
+ end;
+ OnTimer262000:
+ npctalk "Come to thy heart as that within my breast!";
+ end;
+ OnTimer266000:
+ npctalk "What satisfaction canst thou have to-night?";
+ end;
+ OnTimer270000:
+ npctalk "I gave thee mine before thou didst request it:";
+ end;
+ OnTimer272000:
+ npctalk "And yet I would it were to give again.";
+ end;
+ OnTimer276000:
+ npctalk "But to be frank, and give it thee again.";
+ end;
+ OnTimer278000:
+ npctalk "And yet I wish but for the thing I have:";
+ end;
+ OnTimer280000:
+ npctalk "My bounty is as boundless as the sea,";
+ end;
+ OnTimer282000:
+ npctalk "My love as deep; the more I give to thee,";
+ end;
+ OnTimer284000:
+ npctalk "The more I have, for both are infinite.";
+ end;
+ OnTimer288000:
+ npctalk "I hear some noise within; dear love, adieu!";
+ end;
+ OnTimer290000:
+ npctalk "Anon, good nurse! Sweet Montague, be true.";
+ end;
+ OnTimer292000:
+ npctalk "Stay but a little, I will come again.";
+ end;
+ OnTimer302000:
+ npctalk "Three words, dear Romeo, and good night indeed.";
+ end;
+ OnTimer304000:
+ npctalk "If that thy bent of love be honourable,";
+ end;
+ OnTimer306000:
+ npctalk "Thy purpose marriage, send me word to-morrow,";
+ end;
+ OnTimer308000:
+ npctalk "By one that Ill procure to come to thee,";
+ end;
+ OnTimer310000:
+ npctalk "Where and what time thou wilt perform the rite;";
+ end;
+ OnTimer312000:
+ npctalk "And all my fortunes at thy foot Ill lay";
+ end;
+ OnTimer314000:
+ npctalk "And follow thee my lord throughout the world.";
+ end;
+ OnTimer318000:
+ npctalk "I come, anon.--But if thou meanst not well,";
+ end;
+ OnTimer320000:
+ npctalk "I do beseech thee--";
+ end;
+ OnTimer324000:
+ npctalk "By and by, I come:--";
+ end;
+ OnTimer326000:
+ npctalk "To cease thy suit, and leave me to my grief:";
+ end;
+ OnTimer328000:
+ npctalk "To-morrow will I send.";
+ end;
+ OnTimer332000:
+ npctalk "A thousand times good night!";
+ end;
+ OnTimer344000:
+ npctalk "Hist! Romeo, hist! O, for a falconers voice,";
+ end;
+ OnTimer346000:
+ npctalk "To lure this tassel-gentle back again!";
+ end;
+ OnTimer348000:
+ npctalk "Bondage is hoarse, and may not speak aloud;";
+ end;
+ OnTimer350000:
+ npctalk "Else would I tear the cave where Echo lies,";
+ end;
+ OnTimer352000:
+ npctalk "And make her airy tongue more hoarse than mine,";
+ end;
+ OnTimer354000:
+ npctalk "With repetition of my Romeos name.";
+ end;
+ OnTimer362000:
+ npctalk "Romeo!";
+ end;
+ OnTimer366000:
+ npctalk "At what oclock to-morrow";
+ end;
+ OnTimer368000:
+ npctalk "Shall I send to thee?";
+ end;
+ OnTimer372000:
+ npctalk "I will not fail: tis twenty years till then.";
+ end;
+ OnTimer374000:
+ npctalk "I have forgot why I did call thee back.";
+ end;
+ OnTimer378000:
+ npctalk "I shall forget, to have thee still stand there,";
+ end;
+ OnTimer380000:
+ npctalk "Remembering how I love thy company.";
+ end;
+ OnTimer386000:
+ npctalk "Tis almost morning; I would have thee gone:";
+ end;
+ OnTimer388000:
+ npctalk "And yet no further than a wantons bird;";
+ end;
+ OnTimer390000:
+ npctalk "Who lets it hop a little from her hand,";
+ end;
+ OnTimer392000:
+ npctalk "Like a poor prisoner in his twisted gyves,";
+ end;
+ OnTimer394000:
+ npctalk "And with a silk thread plucks it back again,";
+ end;
+ OnTimer396000:
+ npctalk "So loving-jealous of his liberty.";
+ end;
+ OnTimer400000:
+ npctalk "Sweet, so would I:";
+ end;
+ OnTimer402000:
+ npctalk "Yet I should kill thee with much cherishing.";
+ end;
+ OnTimer404000:
+ npctalk "Good night, good night! parting is such";
+ end;
+ OnTimer406000:
+ npctalk "sweet sorrow,";
+ end;
+ OnTimer408000:
+ npctalk "That I shall say good night till it be morrow.";
+ end;
+ OnTimer538000:
+ setnpctimer 0;
+ end;
+ OnInit:
+ npcspeed 150;
+ initnpctimer;
+ end;
+}
diff --git a/npc/custom/quests/bandit_beard.txt b/npc/custom/quests/bandit_beard.txt
new file mode 100644
index 000000000..8efb0243a
--- /dev/null
+++ b/npc/custom/quests/bandit_beard.txt
@@ -0,0 +1,234 @@
+//===== eAthena Script =======================================
+//= Bandit Beard Quest
+//===== By: ==================================================
+//= Mega Man Expert & Lupus
+//===== Current Version: =====================================
+//= 1.1b
+//===== Compatible With: =====================================
+//= eAthena 0.5.2 +
+//===== Description: =========================================
+//= A harmless quest for a simply item w/o any bonuses "Bandit Beard"
+//===== Additional Comments: =================================
+//= Fully working.
+//= 1.0 First release
+//= 1.1 Fixed some exploits, bugs and typos. Optimized 8) [Lupus]
+//= 1.1b fixed some typos
+//============================================================
+
+umbala.gat,126,129,4 script Bearded Man 120,{
+ if(BEARD_QUEST == 4 ) goto L_MAKE;
+ if(BEARD_QUEST >= 5 ) goto L_DONE;
+ if(BEARD_QUEST >= 1 ) goto L_THREAD;
+
+ mes "[Bearded Man]";
+ mes "Beards! Get your wonderful beards!";
+ mes "Would you like a beard?";
+ next;
+ menu "Yes, I'd like some facial hair!",-,"No thanks, thats gross!",M_NO;
+
+ mes "[Bearded Man]";
+ mes "HoHo~ So you want some whiskers.";
+ emotion 18;
+ mes "Well I would give you my beards but there not cheap.";
+ mes "Matter of fact I have only one left...";
+ mes "but I'm not selling it.";
+ mes "But don't get mad! I can make you one.";
+ next;
+ set BEARD_QUEST,1;
+L_THREAD:
+ mes "[Bearded Man]";
+ mes "I would need some ^8080FFThread^000000 for the Beard.";
+ mes "Talk to my friend in Izlude for some ^8080FFThread^000000.";
+ next;
+
+ mes "[Bearded Man]";
+ mes "Also I would need you to get me some things for the beard.";
+ mes "They are:";
+L_LIST:
+ mes "^8080FFElastic Band^000000";
+ mes "^8080FF5 Animal Skins^000000";
+ mes "^8080FFBlack Dye Stuff^000000";
+ mes "^8080FFGranpa Beard^000000";
+ mes "^8080FF100 sticky Mucus^000000";
+ mes "^8080FFCounteragent^000000";
+ mes " and one ^8080FF2 Carat Diamond^000000";
+ close;
+
+M_NO:
+ mes "[Bearded Man]";
+ mes "Fine, be that way!";
+ emotion 7;
+ close;
+
+L_DONE:
+ mes "[Bearded Man]";
+ mes "Sorry, I can only make one per person.";
+ mes "We dont want too many beards now. Right?";
+ emotion 29;
+ close;
+
+L_MAKE:
+ mes "[Bearded Man]";
+ mes "Let's make you your beard!";
+ next;
+ if(countitem(7200) < 1 || countitem(919) < 1 || countitem(983) < 1 || countitem(2241) < 1 ||
+ countitem(938) < 100 || countitem(973) < 1 || countitem(731) < 1) goto L_NOITEMS;
+ delitem 7200, 1;
+ delitem 919, 1;
+ delitem 983, 1;
+ delitem 2241, 1;
+ delitem 938, 100;
+ delitem 973, 1;
+ delitem 731, 1;
+ mes "^8080FF~You see him cutting and sewing the beard together~^000000";
+ next;
+ mes "^8080FF~He hands you the finished beard~^000000";
+ next;
+ getitem 2237, 1;
+ set BEARD_QUEST, 5;
+ mes "[Bearded Man]";
+ mes "Have a nice day!";
+ emotion 29;
+ close;
+
+L_NOITEMS:
+ mes "[Bearded Man]";
+ mes "What the hell! I can't make a beard without the items!";
+ mes "Here is the list again:";
+ emotion 23;
+ goto L_LIST;
+}
+
+//Master Tailor----------
+izlude_in.gat,123,175,4 script Master Tailor 50,{
+ mes "[Master Tailor]";
+ mes "Good evening! I am the Master Tailor!";
+ if(BEARD_QUEST != 1 ) close;
+
+ next;
+ mes "[Master Tailor]";
+ mes "What? A Bearded Man sent you...";
+ mes "Well I'm sorry to say that I am out of ^8080FFThread^000000.";
+ mes "But I have the address to where I get the shipments.";
+ mes "It is in Al de Baran Karfa Inc. warehouse area.";
+ mes "The address is: Al de Baran 59, 221";
+ mes "See you later.";
+ set BEARD_QUEST, 2;
+ close;
+}
+// Karfa Thread Clerk---
+aldeba_in.gat,70,179,5 script Karfa Clerk 113,{
+ mes "[Karfa Clerk]";
+ if(BEARD_QUEST == 3 ) goto L_REPEAT;
+ if(BEARD_QUEST > 3 ) goto L_DONE;
+
+ mes "What can I do for you?";
+ next;
+ if(BEARD_QUEST == 2 ) goto L_DELIVERY;
+
+ menu "What's in the boxes?",-,"Nothing.",M_NOPE;
+
+ mes "[Karfa Clerk]";
+ mes "They're empty.";
+M_NOPE:
+ close;
+
+L_DELIVERY:
+
+ mes "[Karfa Clerk]";
+ mes "Sorry but we have not received any ^8080FFThread^000000.";
+ mes "Our shipments have been put off until its safe.";
+ mes "You see we get our ^8080FFThread^000000 from Alberta and a monsters keeps attacking our merchants.";
+ next;
+ mes "[Karfa Clerk]";
+ mes "Now this monsters has not been doing this before.";
+ mes "It may have to do with the warmer months.";
+ mes "Please help us out!";
+ set BEARD_QUEST,3;
+ next;
+ mes "[Karfa Clerk]";
+L_REPEAT:
+ mes "Oh by the way, that Thread Merchant is somewhere around Alberta 60 and 100...";
+L_DONE:
+ mes "Thank You!";
+ close;
+}
+
+//Thread Merchant ------
+alberta.gat,65,123,6 script Man 85,{
+ if(BEARD_QUEST == 3 && $@beardMobD) goto L_KILLED;
+ if(BEARD_QUEST > 3) goto L_DONE;
+
+ mes "[Thread Merchant]";
+ mes "ARGGG!! I can never get my stuff to Al de Baran!";
+ mes "I keep getting mobbed by some bugs.";
+ mes "They steal all my supplies and ^8080FFThread^000000.";
+ next;
+ mes "[Thread Merchant]";
+
+ if(BEARD_QUEST != 3) mes "What am I to do?";
+ if(BEARD_QUEST != 3) close;
+
+ if($@beardmob > 0) mes "Kill! Kill them already!!!";
+ if($@beardmob > 0) close;
+ mes "Are you here to help me?";
+ emotion 1;
+ next;
+ menu "Yes",-,"No",M_NO;
+
+ mes "[Thread Merchant]";
+ mes "Oh thank the Gods!";
+ mes "If you can only just kill the bugs I would be able to make my delivery.";
+ next;
+ mes "[Thread Merchant]";
+ mes "Oh NO! Here they come!!";
+ emotion 19;
+ donpcevent "BRDQ_MOBS";
+ close;
+
+L_KILLED:
+ set $@beardMobD,0;
+ mes "[Thread Merchant]";
+ mes "Thank you for killing the Thief Bugs.";
+ mes "As a token of my gratitude here is a box full of ^8080FFThread^000000.";
+ set BEARD_QUEST,4;
+ close;
+
+L_DONE:
+ mes "[Thread Merchant]";
+ mes "Thank you again!";
+ emotion 15;
+ close;
+
+M_NO:
+ mes "[Thread Merchant]";
+ mes "What to do...";
+ close;
+}
+
+//mobsummons -------
+alberta.gat,1,1,1 script BRDQ_MOBS -1,{
+ set $@beardMob,10;
+ set $@beardMobD,0;
+ monster "alberta.gat",65,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie";
+ monster "alberta.gat",66,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie";
+ monster "alberta.gat",67,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie";
+ monster "alberta.gat",68,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie";
+ monster "alberta.gat",66,121,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie";
+ monster "alberta.gat",67,121,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie";
+ monster "alberta.gat",68,121,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie";
+ monster "alberta.gat",66,122,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie";
+ monster "alberta.gat",67,122,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie";
+ monster "alberta.gat",68,122,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie";
+ end;
+OnDie:
+ set $@beardmob, $@beardmob - 1;
+ if($@beardmob > 0) end;
+ set $@beardMobD,1;
+ end;
+On1201:
+On0001:
+ set $@beardMob,0;
+ set $@beardMobD,0;
+ end;
+} \ No newline at end of file
diff --git a/npc/custom/quests/berzebub.txt b/npc/custom/quests/berzebub.txt
new file mode 100644
index 000000000..9b26f7ad0
--- /dev/null
+++ b/npc/custom/quests/berzebub.txt
@@ -0,0 +1,74 @@
+//===== eAthena Script =======================================
+//= Berzebub Card Quest Script
+//===== By: ==================================================
+//= jabs
+//===== Current Version: =====================================
+//= 1.1
+//===== Compatible With: =====================================
+//= Any eAthena Version; RO Episode XX
+//===== Description: =========================================
+//= Quest to get the Berzebub Card
+//===== Additional Comments: =================================
+//= 1.1 Fixed ingredients. Was too exploitable [Lupus]
+//============================================================
+prontera.gat,165,178,8 script Old Woman 103,{
+ mes "[Old Woman]";
+ if(BerzQuest == 1) goto L_Already;
+ mes "Greeting lad. I found a really nifty item while I was picking mushrooms near Glast Heim.";
+ next;
+ menu "Keep talking",-, "Leave", M_Leave;
+
+ mes "[Old Woman]";
+ mes "I have never seen an item like this before. I am told it can be placed inside am accessory that has a slot avaiable in it.";
+ next;
+ mes "[Old Woman]";
+ mes "If you're interested in this item, tell me and I'll tell you what you need for me to make you one of your own. I can only give one of these to each player, so once you finish this quest once, you may not do it again.";
+ next;
+ menu "Tell me more about it",-, "Nah, I don't care about it", M_Leave;
+
+ mes "[Old Woman]";
+ mes "I believe the item is called a ^FF0000Berzebub Card^000000. It can make any spell caster cast spells really fast!";
+ next;
+ mes "[Old Woman]";
+ mes "I need all of the following items:";
+ mes "^0080FF25^000000 Emperiums";
+ mes "^0080FF100^000000 Witched Starsands";
+ mes "^0080FF200^000000 Needles of Alarm";
+ mes "^0080FF10^000000 Worn Out Scrolls";
+ mes "^0080FF2^000000 Biblies";
+ mes "^0080FF1^000000 Wand of the Occult";
+ mes "^0080FF20^000000 Opals";
+ next;
+ menu "I have all that!",-, "I'll get those ASAP", M_Leave;
+
+ mes "[Old Woman]";
+ mes "Anyone can say they have the items, but do they really have them? Let's take a look here...";
+ next;
+ mes "[Old Woman]";
+ if(countitem(714) < 25 || countitem(1061) < 100 || countitem(1095) < 200 || countitem(618) < 10 || countitem(1551) < 2 || countitem(1614) < 1 || countitem(727) < 20) goto L_noItems;
+ delitem 714, 25;
+ delitem 1061, 100;
+ delitem 1095, 200;
+ delitem 618, 10;
+ delitem 1551, 2;
+ delitem 1614, 1;
+ delitem 727, 20;
+ getitem 4145, 1;
+ set BerzQuest, 1;
+ mes "Well congratulations! You have all the items. Here is your ^FF0000Berzebub Card^000000, just as I promised.";
+ emotion e_grat;
+ close;
+
+ M_Leave:
+ mes "[Old Woman]";
+ mes "Such a great item I have right here...";
+ close;
+
+ L_noItems:
+ mes "I knew you were lying! Get out of here and get those items you sorry excuse for a rock star.";
+ close;
+
+ L_Already:
+ mes "Hey I remember you! I already told you that you may only complete this quest once.";
+ close;
+}
diff --git a/npc/custom/quests/dead_branch.txt b/npc/custom/quests/dead_branch.txt
new file mode 100644
index 000000000..73e226fe7
--- /dev/null
+++ b/npc/custom/quests/dead_branch.txt
@@ -0,0 +1,105 @@
+//===== eAthena Script =======================================
+//= Dead Branch (+Bloody Branch) Quest
+//===== By: ==================================================
+//= GM-Yevon
+//===== Current Version: =====================================
+//= 1.1
+//===== Compatible With: =====================================
+//= eAthena 0.5.2 +
+//===== Description: =========================================
+// Simple item trade-in quest, a person can get a Dead Branch
+// by simply providing the items: Log x3 (7201), Wooden Heart x1 (7189),
+// Trunk x5 (1019), and Wooden Gnarl x1 (7222).
+//===== Additional Comments: =================================
+//= Fully working.
+//= 1.1 Optimized, added Bloody Branch with 0.01% chance [Lupus]
+//============================================================
+
+niflheim.gat,204,179,3 script Mister Mobry 121,{
+
+ mes "[Mister Mobry]";
+ mes "Trees possess spirits you know...";
+ next;
+
+ mes "[Mister Mobry]";
+ mes "In fact I know a secret about these spirits that can in some way... perhaps aid you...";
+ next;
+
+ mes "[Mister Mobry]";
+ mes "I can create a spirited branch... That is, if you can provide me with the correct materials...";
+ next;
+ goto L_MENU;
+
+L_MENU:
+ menu "What Do I Need?",-,"Where Can I find this Crap?",M_FIND,"Make me a Dead Branch!",M_CREATE,"Forget it...",M_END;
+
+ mes "[Mister Mobry]";
+ mes "Mwehehe... I see you want to control tree spirits am I right? Ok... I need:";
+ mes "^1354453 Logs^000000";
+ mes "^1354451 Wooden Heart^000000";
+ mes "^1354455 Trunk^000000";
+ mes "^1354451 Wooden Gnarl^000000";
+ next;
+ goto L_MENU;
+
+M_FIND:
+ mes "[Mister Mobry]";
+ mes "You can find the following items from certain monsters heheh...";
+ mes "^135445Logs can be found off of Tree Golems.^000000";
+ mes "^135445Wooden Hearts the essence of Tree Golems.^000000";
+ mes "^135445Trunks? Seriously, think wood...^000000";
+ mes "^135445Wooden Gnarl... Gibbet...^000000";
+ next;
+ goto L_MENU;
+
+L_NOLOG:
+ mes "[Mister Mobry]";
+ mes "^135445Logs^000000 are the body... I need more of them.";
+ mes "Get me three logs and I'll make you the spirit...";
+ close;
+
+L_NOHEART:
+ mes "[Mister Mobry]";
+ mes "The ^135445Wooden Heart^000000 is the essence of the spirit.";
+ mes "Get me one wooden heart and I'll make you the spirit...";
+ close;
+
+L_NOTRUNK:
+ mes "[Mister Mobry]";
+ mes "What? You couldn't even find ^1354455 Trunks^000000?";
+ mes "Kill Elder Willows or something... Geez... no trunks heh... pathetic.";
+ close;
+
+L_NOGNARL:
+ mes "[Mister Mobry]";
+ mes "How can I make one without a ^135445Wooden Gnarl^000000?";
+ mes "I said Gibbet... they are all around this place...";
+ close;
+
+M_CREATE:
+ mes "[Mister Mobry]";
+ mes "Well...let us see what you brought me...";
+ next;
+ if(countitem(7201)<3) goto L_NOLOG;
+ if(countitem(7189)<1) goto L_NOHEART;
+ if(countitem(1019)<5) goto L_NOTRUNK;
+ if(countitem(7222)<1) goto L_NOGNARL;
+ delitem 7201,3;
+ delitem 7189,1;
+ delitem 1019,5;
+ delitem 7222,1;
+ mes "[Mister Mobry]";
+ mes "Heh... Hope you have fun with the tree spirits... Careful now...";
+ mes "Heh... careful now? What do I care if you di..... Never mind.";
+ if(rand(1000)==0) goto L_GIVE2;
+ getitem 604,1; //Dead Branch
+ close;
+L_GIVE2:
+ getitem 12103,1; //Bloody Branch
+ close;
+
+M_END:
+ mes "[Mister Mobry]";
+ mes "No spirit for you... then go!";
+ close;
+}
diff --git a/npc/custom/quests/elvenear.txt b/npc/custom/quests/elvenear.txt
new file mode 100644
index 000000000..475f7c87f
--- /dev/null
+++ b/npc/custom/quests/elvenear.txt
@@ -0,0 +1,67 @@
+//===== eAthena Script =======================================
+//= Daily Job Quest For Elven Ears
+//===== By: ==================================================
+//= Someone
+//===== Current Version: =====================================
+//= 1.2
+//===== Compatible With: =====================================
+//= eAthena 1.0
+//===== Description: =========================================
+//= Elven Ears (require 75+ Base Level)
+//===== Additional Comments: =================================
+//= Optimized [Lupus], 1.1 misc fix
+//= 1.2 Fixed exploit [Lupus]
+//============================================================
+
+geffen.gat,127,49,5 script Elven Ears Quest 84,{
+ mes "[Elven Ears Quest]";
+ mes "Hi, today's quest is....";
+ mes "Ah, the ^61B031Elven Ears ^000000Quest!";
+ next;
+ menu "Requirements",L_Bl, "Make Item",-, "Cancel",L_Cancel;
+
+ mes "[Elven Ears quest]";
+ mes "Good good, let me just check";
+ if(countitem(2213)<1 || countitem(1040)<20 || countitem(919)<20) goto L_NoMake;
+ delitem 2213,1;
+ delitem 1040,20;
+ delitem 919,20;
+ next;
+ mes "[Elven Ears quest]";
+ mes "Give me a second.....";
+ next;
+ getitem 2286,1;
+ mes "[Elven Ears Quest]";
+ mes "Ok done!";
+ close;
+
+L_NoMake:
+ mes "[Elven Ears Quest]";
+ mes "You don't have the requirements.";
+ mes "Please come back another time...";
+ close;
+
+L_Bl:
+ mes "Ok all you have to do is collect:";
+ mes "^362ED61 Kitty Band^000000";
+ mes "^362ED620 Elder Pixie Mustaches^000000";
+ mes "and ^362ED620 Animal Skin^000000";
+ next;
+
+ menu "Accept",-, "Leave",L_Leave;
+
+ mes "When you are done, bring the items to me. Ok good luck finding those items.";
+ close;
+
+L_Leave:
+ mes "[Elven Ears quest]";
+ mes "Maybe another time?";
+ close;
+
+L_Cancel:
+ mes "[Elven Ears quest]";
+ mes "Aw, what a shame";
+ mes "Giving up already?";
+ mes "Oh well maybe you will participate in tommorow's quest.";
+ close;
+}
diff --git a/npc/custom/quests/event_6_new_hats.txt b/npc/custom/quests/event_6_new_hats.txt
new file mode 100644
index 000000000..4c00ede00
--- /dev/null
+++ b/npc/custom/quests/event_6_new_hats.txt
@@ -0,0 +1,372 @@
+//===== eAthena Script =======================================
+//= Custom Quest For New Headgears
+//===== By: ==================================================
+//= RedxSwordxHero, Lupus
+//===== Current Version: =====================================
+//= 1.4
+//===== Compatible With: =====================================
+//= eAthena 1.0
+//===== Description: =========================================
+//= 4 brothers give you quests to get 6 new hats (missing
+//= from official quests)
+//= Use this custom quest instead of event_32_new_hats.txt
+//= -Bongun Hat
+//= -Poring Hat, Sphinx Hat
+//= -Kafra Band, Panda Hat
+//= -Crescent Hairpin
+//===== Additional Comments: =================================
+//= Event New Hats by RedxSwordxHero
+//= Ported and improved with timers [Lupus]
+//= Thanks to x[tsk],fixed all item requirments to iRO specs exept
+//= for hats which cannot be made on the real server. [Lupus]
+//= 1.2 removed already existing official hat quests [Lupus]
+//= 1.3 Spiffed up the NPC coords and their appearance [Lupus]
+//= 1.4 Fixed exploits [Lupus]
+//============================================================
+
+
+prt_in.gat,130,66,5 script Zac 704,{
+ mes "[Zac]";
+ mes "I am the oldest and strongest of the 4 brothers that makes all the newer hats. You will need to bring me the correct items for each hat, so I can make them.";
+ next;
+ mes "[Zac]";
+ mes "I provide 8 hats and my brothers provides the other 24.";
+ next;
+ menu "Join",L1,"Information",L2,"Cancel",L3;
+L1:
+ mes "[Zac]";
+ mes "What hat do you want me to make?";
+ next;
+ menu "Bongun Hat",L1_4;
+L1_4:
+ mes "[Zac]";
+ mes "Let me check the items you have brought here.";
+ next;
+ if(countitem(609) < 10) goto L_ITEM_1c;//Items: Amulet,
+ if(countitem(978) < 1) goto L_ITEM_2c;//Items: Cobaltblue Dyestuff,
+ if(countitem(2264) < 1) goto L_ITEM_3c;//Items: Munak Hat,
+ delitem 609,10;//Items: Amulet,
+ delitem 978,1;//Items: Cobaltblue Dyestuff,
+ delitem 2264,1; //Items: Munak Hat,
+ mes "[Zac]";
+ mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Bongun Hat for you right away. Please Wait a Moment.";
+ next;
+ mes "[Zac]";
+ mes "Tah Dah! ^FF0000Bongun Hat^000000...! Please Take it!";
+ getitem 5046,1;//Items: Bongun Hat,
+ next;
+ mes "[Zac]";
+ mes "I liked that, I look forward to making more. Thank you.";
+ close;
+L_ITEM_1c:
+ mes "[Zac]";
+ mes "Oh, dear. You need 10 Amulets...";
+ close;
+L_ITEM_2c:
+ mes "[Zac]";
+ mes "Oh, dear. You need 1 Cobaltblue Dyestuff...";
+ close;
+L_ITEM_3c:
+ mes "[Zac]";
+ mes "Oh, dear. You need 1 Munak Hat...";
+ close;
+L2:
+ mes "[Zac]";
+ mes "Which hat materials do you wish to know?";
+ next;
+ menu "Bongun Hat",L2_4;
+L2_4:
+ mes "[Zac]";
+ mes "You need 10 Amulets, 1 Cobaltblue Dyestuff and 1 Munak Hat for Bongun Hat.";
+ close;
+L3:
+ mes "[Zac]";
+ mes "Stop by some other time with the right materials, so I can make the hats for you.";
+ close;
+}
+
+prt_in.gat,162,131,5 script Blac 732,{
+ mes "[Blac]";
+ mes "I am the youngest and sexiest of the 4 brothers that makes all the newer hats. You will need to bring me the correct items for each hat, so I can make them.";
+ next;
+ mes "[Blac]";
+ mes "I provide 8 hats and my brothers provides the other 24.";
+ next;
+ menu "Join",L1,"Information",L2,"Cancel",L3;
+L1:
+ mes "[Blac]";
+ mes "What hat do you want me to make?";
+ next;
+ menu "Crescent Hairpin",L1_9;
+L1_9:
+ mes "[Blac]";
+ mes "Let me check the items you have brought here.";
+ next;
+ if(countitem(5041) < 1) goto L_ITEM_1;//Items: Heart Hairpin,
+ if(countitem(999) < 10) goto L_ITEM_2;//Items: Steel,
+ delitem 5041,1;//Items: Heart Hairpin,
+ delitem 999,10; //Items: Steel,
+ mes "[Blac]";
+ mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Crescent Hairpin for you right away. Please Wait a Moment.";
+ next;
+ mes "[Blac]";
+ mes "Tah Dah! ^FF0000Crescent Hairpin^000000...! Please Take it!";
+ getitem 5048,1;//Items: Cresent Hairpin,
+ next;
+ mes "[Blac]";
+ mes "I liked that, I look forward to making more. Thank you.";
+ close;
+L_ITEM_1:
+ mes "[Blac]";
+ mes "Oh, dear. You need 1 Heart Hairpin...";
+ close;
+L_ITEM_2:
+ mes "[Blac]";
+ mes "Oh, dear. You need 10 Steels...";
+ close;
+L2:
+ mes "[Blac]";
+ mes "Which hat materials do you wish to know?";
+ next;
+ menu "Crescent Hairpin",L2_9;
+L2_9:
+ mes "[Blac]";
+ mes "You need 1 Heart Hairpin and 10 Steels for Crescent Hairpin.";
+ close;
+L3:
+ mes "[Blac]";
+ mes "Stop by some other time with the right materials, so I can make the hats for you.";
+ close;
+}
+
+prt_in.gat,53,56,5 script Jac 107,{
+ mes "[Jac]";
+ mes "I am the 2nd oldest and calmest of the 4 brothers that makes all the newer hats. You will need to bring me the correct items for each hat, so I can make them.";
+ next;
+ mes "[Jac]";
+ mes "I provide 8 hats and my brothers provides the other 24.";
+ next;
+ menu "Join",L1,"Information",L2,"Cancel",L3;
+L1:
+ mes "[Jac]";
+ mes "What hat do you want me to make?";
+ next;
+ menu "Kafra Band",L1_19,"Panda Hat",L1_24;
+L1_19:
+ mes "[Jac]";
+ mes "Let me check the items you have brought here.";
+ next;
+ if(countitem(10007) < 1) goto L_ITEM_1b;//Items: Silk Ribbon,
+ if(countitem(10008) < 1) goto L_ITEM_2b;//Items: Punisher,
+ delitem 10007,1;//Items: Silk Ribbon,
+ delitem 10009,1; //Items: Wild Flower,
+ mes "[Jac]";
+ mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Kafra Band for you right away. Please Wait a Moment.";
+ next;
+ mes "[Jac]";
+ mes "Tah Dah! ^FF0000Kafra Band^000000...! Please Take it!";
+ getitem 5020,1;//Items: Kafra's Band,
+ next;
+ mes "[Jac]";
+ mes "I liked that, I look forward to making more. Thank you.";
+ close;
+L_ITEM_1b:
+ mes "[Jac]";
+ mes "Oh, dear. You need 1 Silk Ribbon...";
+ close;
+L_ITEM_2b:
+ mes "[Jac]";
+ mes "Oh, dear. You need 1 Wild Flower...";
+ close;
+L1_24:
+ mes "[Jac]";
+ mes "Let me check the items you have brought here.";
+ next;
+ if(countitem(999) < 10) goto L_ITEM_1g;//Items: Steel,
+ if(countitem(948) < 200) goto L_ITEM_2g;//Items: Bears Footskin,
+ delitem 999,10;//Items: Steel,
+ delitem 948,200; //Items: Bears Footskin,
+ mes "[Jac]";
+ mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Panda Hat for you right away. Please Wait a Moment.";
+ next;
+ mes "[Jac]";
+ mes "Tah Dah! ^FF0000Panda Hat^000000...! Please Take it!";
+ getitem 5030,1;//Items: Panda Hat,
+ next;
+ mes "[Jac]";
+ mes "I liked that, I look forward to making more. Thank you.";
+ close;
+L_ITEM_1g:
+ mes "[Jac]";
+ mes "Oh, dear. You need 10 Steels...";
+ close;
+L_ITEM_2g:
+ mes "[Jac]";
+ mes "Oh, dear. You need 200 Bear Footskins...";
+ close;
+L2:
+ mes "[Jac]";
+ mes "Which hat materials do you wish to know?";
+ next;
+ menu "Kafra Band",L2_19,"Panda Hat",L2_24;
+L2_19:
+ mes "[Jac]";
+ mes "You need 1 Silk Ribbon and 1 Wild Flower for Kafra Band.";
+ close;
+L2_24:
+ mes "[Jac]";
+ mes "You need 10 Steels and 200 Bear Footskins for Panda Hat.";
+ close;
+L3:
+ mes "[Jac]";
+ mes "Stop by some other time with the right materials, so I can make the hats for you.";
+ close;
+}
+
+prt_in.gat,45,113,5 script Pac 705,{
+ mes "[Pac]";
+ mes "I am 3rd oldest and wisest of the 4 brothers that makes all the newer hats. You will need to bring me the correct items for each hat so I can make them.";
+ next;
+ mes "[Pac]";
+ mes "I provide 8 hats and my brothers provides the other 24.";
+ next;
+ menu "Join",L1,"Information",L2,"Cancel",L3;
+L1:
+ mes "[Pac]";
+ mes "What hat do you want me to make?";
+ next;
+ menu "Poring Hat",L1_26,"Sphinx Hat",L1_29;
+L1_26:
+ mes "[Pac]";
+ mes "Let me check the items you have brought here.";
+ next;
+ if(countitem(741) < 1) goto L_ITEM_1a;//Items: Poring Doll,
+ if(countitem(909) < 300) goto L_ITEM_2a;//Items: Jellopy,
+ delitem 741,1;//Items: Poring Doll,
+ delitem 909,300;//Items: Jellopy,
+ mes "[Pac]";
+ mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Poring Hat for you right away. Please Wait a Moment.";
+ next;
+ mes "[Pac]";
+ mes "Tah Dah! ^FF0000Poring Hat^000000...! Please Take it!";
+ getitem 5035,1;//Items: Poring Hat,
+ next;
+ mes "[Pac]";
+ mes "I liked that, I look forward to making more. Thank you.";
+ close;
+L_ITEM_1a:
+ mes "[Pac]";
+ mes "Oh, dear. You need 1 Poring Doll...";
+ close;
+L_ITEM_2a:
+ mes "[Pac]";
+ mes "Oh, dear. You need 300 Jellopys...";
+ close;
+L1_29:
+ mes "[Pac]";
+ mes "Let me check the items you have brought here.";
+ next;
+ if(countitem(999) < 25) goto L_ITEM_1d;//Items: Steel,
+ if(countitem(979) < 1) goto L_ITEM_2d;//Items: Darkgreen Dyestuff,
+ if(countitem(976) < 1) goto L_ITEM_3d;//Items: Lemon Dyestuffs,
+ if(countitem(1059) < 150) goto L_ITEM_4d;//Items: Fabric,
+ if(countitem(969) < 2) goto L_ITEM_5d;//Items: Gold,
+ delitem 999,25;//Items: Steel,
+ delitem 979,1;//Items: Darkgreen Dyestuff,
+ delitem 976,1;//Items: Lemon Dyestuffs,
+ delitem 1059,150;//Items: Fabric,
+ delitem 969,2; //Items: Gold,
+ mes "[Pac]";
+ mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Sphinx Hat for you right away. Please Wait a Moment.";
+ next;
+ mes "[Pac]";
+ mes "Tah Dah! ^FF0000Sphinx Hat^000000...! Please Take it!";
+ getitem 5053,1;//Items: Sphinx Hat,
+ next;
+ mes "[Pac]";
+ mes "I liked that, I look forward to making more. Thank you.";
+ close;
+L_ITEM_1d:
+ mes "[Pac]";
+ mes "Oh, dear. You need 25 Steels...";
+ close;
+L_ITEM_2d:
+ mes "[Pac]";
+ mes "Oh, dear. You need 1 DarkGreen Dyestuff...";
+ close;
+L_ITEM_3d:
+ mes "[Pac]";
+ mes "Oh, dear. You need 1 Lemon Dyestuff...";
+ close;
+L_ITEM_4d:
+ mes "[Pac]";
+ mes "Oh, dear. You need 150 Fabric...";
+ close;
+L_ITEM_5d:
+ mes "[Pac]";
+ mes "Oh, dear. You need 2 Gold Bar's...";
+ close;
+L2:
+ mes "[Pac]";
+ mes "Which hat materials do you wish to know?";
+ next;
+ menu "Poring Hat",L2_26,"Sphinx Hat",L2_29;
+L2_26:
+ mes "[Pac]";
+ mes "You need 1 Poring Doll and 300 Jellopys for Poring Hat.";
+ close;
+L2_29:
+ mes "[Pac]";
+ mes "You need 25 Steels, 1 DarkGreen Dyestuff, 1 Lemon Dyestuff, 150 Fabric and 2 Gold Bar's for Sphinx Hat.";
+ close;
+L3:
+ mes "[Pac]";
+ mes "Stop by some other time with the right materials, so I can make the hats for you.";
+ close;
+}
+
+
+//these scripts make our brothers to appear and disappear in order
+- script EDZac -1,{
+OnInit:
+OnMinute15:
+ disablenpc "Zac";
+ end;
+OnMinute01:
+ if(rand(2)) end;
+ enablenpc "Zac";
+ end;
+}
+
+- script EDJac -1,{
+OnInit:
+OnMinute30:
+ disablenpc "Jac";
+ end;
+OnMinute16:
+ if(rand(2)) end;
+ enablenpc "Jac";
+ end;
+}
+
+- script EDPac -1,{
+OnInit:
+OnMinute45:
+ disablenpc "Pac";
+ end;
+OnMinute31:
+ if(rand(2)) end;
+ enablenpc "Pac";
+ end;
+}
+
+- script EDBlac -1,{
+OnInit:
+OnMinute00:
+ disablenpc "Blac";
+ end;
+OnMinute46:
+ if(rand(2)) end;
+ enablenpc "Blac";
+ end;
+}
diff --git a/npc/custom/quests/fashion.txt b/npc/custom/quests/fashion.txt
new file mode 100644
index 000000000..8058f07a0
--- /dev/null
+++ b/npc/custom/quests/fashion.txt
@@ -0,0 +1,67 @@
+//===== eAthena Script =======================================
+//= Quest for Fashion Glasses (Daily Job Quest)
+//===== By: ==================================================
+//= 1.1 None
+//===== Current Version: =====================================
+//= Any
+//===== Compatible With: =====================================
+//= eAthena
+//===== Description: =========================================
+//= Quest for Fashion Glasses
+//===== Additional Comments: =================================
+//= 1.0 Fully Working [Lupus]
+//= 1.1 fixed exploit [Lupus]
+//============================================================
+
+izlude.gat,135,96,5 script Fashion Glasses Quest 76,{
+ mes "[Fashionable Glasses Quest]";
+ mes "Hi, today's quest is....";
+ mes "Ah, the ^CC6633Fashionable Glasses^000000 Quest!";
+ next;
+ menu "Requirements",M_INFO,"Make Item",-,"Cancel",M_CANCEL;
+
+ mes "[Fashionable Glasses Quest]";
+ mes "Good good, let me just check";
+ if(countitem(2271)<1 || countitem(975)<1) goto M_NOITEMS;
+ delitem 2271,1;
+ delitem 975,1;
+ next;
+ mes "[Fashionable Glasses Quest]";
+ mes "Give me a second.....";
+ next;
+ getitem 5047,1;
+ mes "[Fashionable Glasses Quest]";
+ mes "Ok done!";
+ close;
+
+M_NOITEMS:
+ mes "[Fashionable Glasses Quest]";
+ mes "You don't have the requirements.";
+ mes "Please come back another time...";
+ close;
+
+M_INFO:
+ mes "Ok all you have to do is collect";
+ mes "^CC66331 Jack'a Dandy^000000";
+ mes "and ^CC66331 Scalet Dyestuff^000000.";
+ next;
+ menu "Accept",-,"Leave",M_LEAVE;
+
+ mes "When you are done, bring the items to me,";
+ mes "Ok good luck finding those items.";
+ close;
+
+M_LEAVE:
+ mes "[Fashionable Glasses Quest]";
+ mes "Maybe another time?";
+ close;
+
+M_CANCEL:
+ mes "[Fashionable Glasses Quest]";
+ mes "Aw, what a shame";
+ mes "Giving up already?";
+ mes "Oh well maybe you will";
+ mes "participate in tommorow's";
+ mes "quest.";
+ close;
+}
diff --git a/npc/custom/quests/ironcane.txt b/npc/custom/quests/ironcane.txt
new file mode 100644
index 000000000..39b5f0aaa
--- /dev/null
+++ b/npc/custom/quests/ironcane.txt
@@ -0,0 +1,49 @@
+//===== eAthena Script =======================================
+//= Quest For Iron Cain
+//===== By: ==================================================
+//= eA Dev Team
+//===== Current Version: =====================================
+//= 1.1
+//===== Compatible With: =====================================
+//= eAthena 1.0
+//===== Description: =========================================
+//= Iron Cain (lower part of a full helmet)
+//===== Additional Comments: =================================
+//= 1.1 Fixed exploit [Lupus]
+//============================================================
+
+payon.gat,109,118,5 script Iron Cain Quest 76,{
+ mes "[Iron Cain Quest]";
+ mes "Here's what you need";
+ mes "The requirements, should you be brave enough to collect them, are:";
+ mes "- 200 Orcish vouchers";
+ mes "- 1 Heroic Emblem";
+ next;
+ mes "[Iron Cain Quest]";
+ mes "Are you ready for me to make this special item?";
+ next;
+ menu "Sure am!",-, "The requirements are unfathomable!",L_Unfathomable;
+
+ mes "[Iron Cain Quest]";
+ if(countitem(931) < 200 || countitem(968) < 1) goto L_NotEnough;
+ delitem 931,200;
+ delitem 968,1;
+ mes "Wow! You are brave indeed!";
+ next;
+ mes "[Iron Cain Quest]";
+ mes "Enjoy!";
+ getitem 2266,1;
+ close;
+
+L_NotEnough:
+ mes ". . .I'm sorry. You don't have enough money and items.";
+ mes "I can't afford to make this if you don't bring all materials needed.";
+ mes "Please understand this is to benefit heroes such as yourself!";
+ close;
+
+L_Unfathomable:
+ mes "[Iron Cain Quest]";
+ mes "What I had to go through was more unfathomable..";
+ mes "If you succeed in getting these items, you will have incredible strength!";
+ close;
+}
diff --git a/npc/custom/quests/kaho_balmung.txt b/npc/custom/quests/kaho_balmung.txt
new file mode 100644
index 000000000..a0a0975aa
--- /dev/null
+++ b/npc/custom/quests/kaho_balmung.txt
@@ -0,0 +1,76 @@
+// $Id: kaho_balmung.txt,v 1.1.1.1 2004/09/10 17:26:46 MagicalTux Exp $
+//-------------------- 'Balmung & Lord Kaho's Horns' Quest --------------------
+// Warning! Don't use this quest 8)
+
+prontera.gat,158,356,4 script Royal Messenger 105,{
+ mes "[Royal Messenger]";
+ mes "Welcome to prontera, I am the Royal Messenger in charge of the royal quest.";
+ next;
+ menu "Listen",-,"No",Lend;
+
+ mes "[Royal Messenger]";
+ mes "There are too quests please chose the one you must like.";
+ next;
+ menu "Balmung",-,"Lord Kahos horns",Lkahos,"No",Lend;
+
+ mes "[Royal Messenger]";
+ mes "The Balmung quest consist of the next items:";
+ mes "120 Steel";
+ mes "10 Oridecon";
+ mes "10 Rough Wind";
+ mes "10 Flame Heart";
+ mes "10 Mystic Frozen";
+ mes "10 Great Nature";
+ mes "1,000,000z";
+ next;
+ if(countitem(999)<120 || countitem(984)<10 || countitem(996)<10 || countitem(994)<10
+ || countitem(995)<10 || countitem(997)<10 || Zeny<1000000) goto NoItems;
+ delitem 999,120;
+ delitem 984,10;
+ delitem 996,10;
+ delitem 994,10;
+ delitem 995,10;
+ delitem 997,10;
+ set Zeny,Zeny-1000000;
+ mes "[Royal Messenger]";
+ mes "I see you already have all the items you need.";
+ mes "nice work.";
+ getitem 1161,1;
+ close;
+
+Lkahos:
+ mes "[Royal Messenger]";
+ mes "The Lord Kahos horns quest consists of the next items:";
+ mes "1 Green Feelers";
+ mes "10 Star Dust";
+ mes "10 Rough Wind";
+ mes "10 Flame Heart";
+ mes "10 Mystic Frozen";
+ mes "10 Great Nature";
+ mes "1,000,000z";
+ next;
+ if(countitem(2298)<1 || countitem(1001)<10 || countitem(996)<10 || countitem(994)<10
+ || countitem(995)<10 || countitem(997)<10 || Zeny<1000000) goto NoItems;
+ delitem 2298,1;
+ delitem 1001,10;
+ delitem 996,10;
+ delitem 994,10;
+ delitem 995,10;
+ delitem 997,10;
+ set Zeny,Zeny-1000000;
+ mes "[Royal Messenger]";
+ mes "I see you already have all the items you need.";
+ mes "nice work.";
+ getitem 5013,1;
+ close;
+
+Lend:
+ mes "[Royal Messenger]";
+ mes "Have a nice day.";
+ close;
+NoItems:
+ mes "[Royal Messenger]";
+ mes "Sorry you dont have all the items or zeny I need.";
+ mes "Come back when you have them all";
+ close;
+}
diff --git a/npc/custom/quests/kahohorn.txt b/npc/custom/quests/kahohorn.txt
new file mode 100644
index 000000000..2a74b6c06
--- /dev/null
+++ b/npc/custom/quests/kahohorn.txt
@@ -0,0 +1,84 @@
+//This quest is custom. Don't use it.
+
+geffen.gat,115,107,5 script Lord Kaho's Servant 61,{
+ mes "[Lord Kaho's Servant]";
+ mes "I worked myself to death trying to fulfill Lord Kaho's ridiculous expectations for a headgear!";
+ mes "Now that I've finally found the formula for the perfect headgear, I'm willing to share my time and talents";
+ next;
+ mes "You need the following to get the Kaho horns!";
+ mes "3 emperiums";
+ mes "Oh yea... i also forgot to mention these X_X";
+ next;
+ mes "1 Skull - From Dark Lord";
+ mes "1 Heroic Emblem - From Orc Hero";
+ mes "1 Evil Horn - From Baphomet";
+ mes "1 Red Frame - From Doppelganger";
+ mes "1 Smoking Pipe - From Eddga";
+ mes "1 Fang of Garm - From Garm";
+ mes "1 Mother's Nightmare - From Maya";
+ mes "1 Sphynx Hat - from Osiris";
+ mes "1 Diamond Ring - from Mistress";
+ next;
+ mes "Were' not done yet sweety...";
+ mes "Im a big fan of dolls, so you need to bring me these cuties";
+ mes "1 Poring Doll - a Poring drop";
+ mes "1 Chonchon Doll - a Chonchon Drop";
+ mes "1 Baphomet Doll - a Baphomet drop";
+ mes "1 Osiris Doll - an Osiris drop";
+ mes "1 Rocker Doll - a Rocker drop";
+ mes "1 Apez Fanitem Doll - a Yoyo drop";
+ mes "1 Racoon Doll - a Smokie drop";
+ mes "1 Spore Doll - a Spore drop";
+ next;
+ mes "Finally, i worked hard to make these horns for my master with all the mentioned items above...";
+ mes "Please include 5 million zeny for my efforts.";
+ next;
+ mes "[Lord Kaho's Servant]";
+ mes ". . . . . .";
+ mes "Are you ready for me to make this special item?";
+ next;
+ menu "Sure am!",-,"These requirements are unfathomable!",LUnfathomable;
+
+ mes "[Lord Kaho's Servant]";
+ if(countitem(754) < 1 || countitem(753) < 1 || countitem(752) < 1 || countitem(751) < 1 || countitem(750) < 1
+ || countitem(743) < 1 || countitem(742) < 1 || countitem(741) < 1 || countitem(2613) < 1
+ || countitem(5053) < 1 || countitem(7020) < 1 || countitem(7036) < 1 || countitem(2268) < 1
+ || countitem(734) < 1 || countitem(923) < 1 || countitem(968) < 1 || countitem(7005) < 1
+ || countitem(714) < 3 || Zeny < 5000000) goto LNotEnough;
+ delitem 754,1;
+ delitem 753,1;
+ delitem 752,1;
+ delitem 751,1;
+ delitem 750,1;
+ delitem 743,1;
+ delitem 742,1;
+ delitem 741,1;
+ delitem 2613,1;
+ delitem 5053,1;
+ delitem 7020,1;
+ delitem 7036,1;
+ delitem 2268,1;
+ delitem 734,1;
+ delitem 923,1;
+ delitem 968,1;
+ delitem 7005,1;
+ delitem 714,3;
+ set Zeny,Zeny-5000000;
+ mes "Wow! You are brave indeed!";
+ getitem 5013,1;
+ mes ". . . . .";
+ mes "Enjoy being God of Rune Midgard!";
+ close;
+
+ LNotEnough:
+ mes ". . . . .";
+ mes ". . .I'm sorry .. You don't have enough money and items ..";
+ mes "I can't afford to make this if you don't bring all materials needed. Please understand this is to benefit heroes such as yourself!";
+ close;
+
+ LUnfathomable:
+ mes ". . . . .";
+ mes "What I had to go through was more unfathomable..";
+ mes "If you succeed in getting these items, you will have incredible strength!";
+ close;
+}
diff --git a/npc/custom/quests/magicalhatquest.txt b/npc/custom/quests/magicalhatquest.txt
new file mode 100644
index 000000000..130091385
--- /dev/null
+++ b/npc/custom/quests/magicalhatquest.txt
@@ -0,0 +1,57 @@
+//===== eAthena Script =======================================
+//= Wizard Hat Custom Quest
+//===== By: ==================================================
+//= Who
+//===== Current Version: =====================================
+//= 1.1
+//===== Compatible With: =====================================
+//= eAthena
+//===== Description: =========================================
+//= Wizard Hat quest. Harmless, doesn't screw game balance.
+//===== Additional Comments: =================================
+//= 1.1 Reversed ingreadients and the quest result due to
+//= treasue boxes drops fix [Lupus]
+//============================================================
+
+geffen.gat,126,107,5 script Wizard Hat Dude 51,{
+ mes "[Wizard Hat Dude]";
+ mes "Huh! What do you want?";
+ mes "Ohh, I see, you want me to make you something.";
+ emotion e_what;
+ next;
+ mes "[Wizard Hat Dude]";
+ mes "Well if you want this Wizard Hat here is a list of the items I need you to go out and get them for me:";
+ mes "1 Magican Hat";
+ mes "1 Bathory Card";
+ mes "and 200,000z for my efforts";
+ next;
+ mes "[Wizard Hat Dude]";
+ mes "Are you ready for me to make this magical item?";
+ next;
+ menu "Sure am!",-,"These requirements are unfathomable!",M_RIPOFF;
+
+ mes "[Wizard Hat Dude]";
+ if(countitem(5045) < 1 || countitem(4119) < 1 || Zeny < 200000) goto L_NotEnough;
+ delitem 5045,1;
+ delitem 4119,1;
+ set Zeny,Zeny-200000;
+ mes "Wow! You are brave indeed!";
+ emotion e_no1;
+ next;
+ mes "[Wizard Hat Dude]";
+ mes "Enjoy your Wizard Hat!";
+ getitem 2252,1;
+ close;
+
+L_NotEnough:
+ mes ". . .I'm sorry .. You don't have enough money and items ..";
+ mes "I can't afford to make this if you don't bring all materials needed. Please understand this is to benefit heroes such as yourself!";
+ emotion e_sry;
+ close;
+
+M_RIPOFF:
+ mes "What I had to go through was more unfathomable..";
+ mes "If you succeed in getting these items, you will have incredible strength!";
+ emotion e_hmm;
+ close;
+}
diff --git a/npc/custom/quests/sunglasses.txt b/npc/custom/quests/sunglasses.txt
new file mode 100644
index 000000000..f8830eec6
--- /dev/null
+++ b/npc/custom/quests/sunglasses.txt
@@ -0,0 +1,144 @@
+//===== eAthena Script =======================================
+//= Quest For Slotted Sunglasses
+//===== By: ==================================================
+//= Aegis - amichan
+//===== Current Version: =====================================
+//= 1.5
+//===== Compatible With: =====================================
+//= Any eAthena Version;
+//===== Description: =========================================
+//= Quest to get Slotted Sunglasses
+//===== Additional Comments: =================================
+//= 1.0 by Aegis 1.1 by aichan 1.2 by x[tsk] 1.3 by Darkchild
+//= 1.5 Fixed Exploit [Lupus]
+//============================================================
+
+// quest will reset it self after 1 pair of Slotted Sunglasses is made.
+// 1st part of the quest
+
+alberta.gat,88,193,5 script Sunglasses Trader 73,{
+ if(SG_QUEST1 == 1) goto L_SG_Q1_Done;
+ mes "[Sunglasses Trader]";
+ mes "Hello. What can I do for you?";
+ next;
+ menu "I heard that you can make ^0000FFSlotted Sunglasses^000000.",-,"Nothing, sorry to bother you.",L_SG_No;
+
+ mes "[Sunglasses Trader]";
+ mes "I do not make them, but I can tell you where to find the person who does. For a small fee...";
+ next;
+ menu "How much?",L_SG_1,"No way, I will find her, myself!",-;
+
+ mes "[Sunglasses Trader]";
+ mes "Suit yourself, the Maker will not make you ^0000FFSlotted Sunglasses^000000 unless she knows that you are coming.";
+ mes "Only I can tell her you are coming.";
+ next;
+ mes "[Sunglasses Trader]";
+ mes "Come back to me, when you have given up. Hahaha.";
+ close;
+L_SG_1:
+ mes "[Sunglasses Trader]";
+ mes "In order for me to tell you information on ^0000FFSlotted Sunglasses^000000 you need to get me: ";
+ mes "^0000881 Carat Diamond^000000, ";
+ mes "^00008850 Feathers^000000, ";
+ mes "and ^000088100000z^000000.";
+ next;
+ menu "Alright, here.",L_SG_1_Check,"That's too much!",-;
+
+ mes "[Sunglasses Trader]";
+ mes "Suit Yourself.";
+ close;
+L_SG_1_Check:
+ if (countitem(730) < 1) goto L_SG_Diamond;
+ if (countitem(949) < 50) goto L_SG_Feathers;
+ if (zeny<100000) goto L_SG_Funds;
+ delitem 730,1;
+ delitem 949,50;
+ set zeny,zeny-100000;
+ set SG_QUEST1,1;
+ mes "[Sunglasses Trader]";
+ mes "Great. Now, listen carefully.";
+ next;
+ mes "[Sunglasses Trader]";
+ mes "Look for someone name Maseph somewhere in the east of Morroc.";
+ mes "I will send her a message to let her know that you are coming.";
+ close;
+L_SG_Diamond:
+ mes "[Sunglasses Trader]";
+ mes "You do not have the ^0000881 Carat Diamond^000000. Come back to me when you do.";
+ close;
+L_SG_Feathers:
+ mes "[Sunglasses Trader]";
+ mes "You do not have ^00008850 Feathers^000000. Come back to me when you do.";
+ close;
+L_SG_Funds:
+ mes "[Sunglasses Trader]";
+ mes "You do not have ^000088100000z^000000. Come back to me when you do.";
+ close;
+L_SG_Q1_Done:
+ mes "[Sunglasses Trader]";
+ mes "There is nothing more I can tell you.";
+ next;
+ mes "[Sunglasses Trader]";
+ mes "Go see Maseph. She is somewhere east of Morroc.";
+ close;
+L_SG_No:
+ mes "[Sunglasses Trader]";
+ mes "Come back to me than you are ready.";
+ close;
+}
+
+// 2nd part of the quest
+
+moc_fild09.gat,209,128,5 script Maseph 702,{
+ if(SG_QUEST1 == 1) goto L_SG_2;
+ mes "[Maseph]";
+ mes "Lovely Day, isn't it ?";
+ close;
+L_SG_2:
+ mes "[Maseph]";
+ mes "Hello there.";
+ next;
+ mes "[Maseph]";
+ mes "You came for the ^000088Slotted Sunglasses^000000, right?";
+ next;
+ menu "Yes",L_SG_2_Start,"No, sorry to bother you.",-;
+
+ mes "[Maseph]";
+ mes "Off you go, then.";
+ close;
+L_SG_2_Start:
+ mes "[Maseph]";
+ mes "To make one, I will need one pair of ^000088Sunglasses^000000 and 400000z.";
+ next;
+ menu "Here you go.",L_SG_Q2_Check,"No, thanks.",-;
+
+ mes "[Maseph]";
+ mes "As you wish.";
+ close;
+L_SG_Q2_Check:
+ if(countitem(2201) < 1) goto L_SG_Sunglasses;
+ if(zeny<400000) goto L_SG_Funds;
+ delitem 2201,1;
+ set zeny,zeny-400000;
+ mes "[Maseph]";
+ mes "Thank you. I will get on it right away.";
+ next;
+ mes "[Maseph]";
+ mes "Here you go my friend.";
+ getitem 2202,1;
+ next;
+ mes "[Maseph]";
+ mes "Enjoy your ^000088Slotted Sunglasses^000000.";
+// quest reset
+ set SG_QUEST1,0;
+ close;
+L_SG_Sunglasses:
+ mes "[Maseph]";
+ mes "I need one pair of ^000088Sunglasses^000000. Come back to me when you have one.";
+ close;
+L_SG_Funds:
+ mes "[Maseph]";
+ mes "You do not have enough money. Please come back to me when you do.";
+ close;
+}
+
diff --git a/npc/custom/quests/tha_statues.txt b/npc/custom/quests/tha_statues.txt
new file mode 100644
index 000000000..d860d5c30
--- /dev/null
+++ b/npc/custom/quests/tha_statues.txt
@@ -0,0 +1,260 @@
+//===== eAthena Script =======================================
+//= Custom Thanatos Tower Quest
+//===== By: ==================================================
+//= Bibilol & Moryagorn
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= Any eAthena Version;
+//===== Description: =========================================
+//= Custom Thanatos Tower Quest
+//===== Additional Comments: =================================
+//=
+//============================================================
+
+
+//Statue (NPC)(U: UP, D: DOWN, R: RIGHT, L: LEFT) :
+// Explain Npc
+tha_t08.gat,69,106,4 script Statue 111,{
+
+ mes "You can read on the back of the statue:";
+ mes "'By the spirit of olds, the walls are closed";
+ mes "Upper floors or foreign taboo";
+ mes "By the order of the Statues you will find the way";
+ mes "Which perhaps a day will bring you to me.";
+ mes ".....Thanatos '";
+ close;
+}
+
+//Tha_t09 :
+//(Thalos)(U,L)-->tha_t09.gat,17,158,4
+//(Mediane)(D,R)-->tha_t09.gat,84,99,4
+//Script:
+
+tha_t09.gat,17,158,4 script Thalos 111,{
+
+ if(TSQ_CHK == 1) goto done;
+ mes "[Thalos]";
+ mes "You must find the 2nd Statue now.";
+ set TSQ_CHK,1;
+ close;
+
+done:
+ mes "[Thalos]";
+ mes "Go search the 2nd Statue!";
+ close;
+
+}
+
+tha_t09.gat,84,99,4 script Mediane 111,{
+
+ if(TSQ_CHK != 1) goto nook;
+ mes "[Mediane]";
+ mes "Okay, i am warping you to the next floor now.";
+ next;
+ set TSQ_CHK,0;
+ warp "tha_t10.gat", 165, 138;
+ close;
+nook:
+ mes "[Mediane]";
+ mes "You must talk with the Spirit in the 1st Statue.";
+ close;
+}
+
+//Tha_t10 :
+//(Melkor)(U)-->tha_t10.gat,130,159,4
+//(Zebrus)(D,R)-->tha_t10.gat,160,98,4
+//(Veriaelle)(D,L)-->tha_t10.gat,99,97,4
+//Script:
+
+tha_t10.gat,130,159,4 script Melkor 111,{
+
+ if(TSQ_CHK == 1) goto done;
+ mes "[Melkor]";
+ mes "You must find the other Spirits now.";
+ mes "We are 3.";
+ set TSQ_CHK,1;
+ close;
+done:
+ mes "[Melkor]";
+ mes "Go Search, They are in this floor.";
+ close;
+}
+
+tha_t10.gat,160,98,4 script Zebrus 111,{
+
+ if(TSQ_CHK != 1) goto nook;
+ mes "[Zebrus]";
+ mes "Keep on this way, There is one Spirit left";
+ set TSQ_CHK,2;
+ close;
+nook:
+ mes "[Zebrus]";
+ mes "You seems to be lost, Go back and talk to Melkor.";
+ next;
+ set TSQ_CHK,0;
+ close;
+}
+
+tha_t10.gat,99,97,4 script Veriaelle 111,{
+
+ if(TSQ_CHK != 2) goto nook;
+ mes "[Veriaelle]";
+ mes "Okay, i am warping you to the next floor.";
+ next;
+ set TSQ_CHK,0;
+ warp "tha_t11.gat", 86, 38;
+ close;
+nook:
+ mes "[Veriaelle]";
+ mes "You seems to be lost, Go back and talk to Melkor.";
+ next;
+ set TSQ_CHK,0;
+ close;
+}
+
+//Tha_t11 :
+//(Throtre)(U,L)-->tha_t11.gat,16,85,4
+//(Klermaz)(D,R)-->tha_t11.gat,85,16,4
+//(Mihane)(D,L)-->tha_t11.gat,16,16,4
+//(Seranes)(U,R)-->tha_t11.gat,85,85,4
+//Script:
+
+tha_t11.gat,16,85,4 script Throtre 111,{
+ if(TSQ_CHK == 1) goto done;
+ mes "[Throtre]";
+ mes "You got my authorization for the next floor";
+ mes "However, you must show how strong you are to the other Spirits";
+ set TSQ_CHK,1;
+ close;
+done:
+ mes "[Throtre]";
+ mes "Go search, They Can't leave this floor.";
+ close;
+}
+
+tha_t11.gat,85,16,4 script Klermaz 111,{
+ if(TSQ_CHK != 1) goto nook;
+ mes "[Klermaz]";
+ mes "Hmm it seems that Throtre allowed you to pass.";
+ mes "Well then you have my blessing, 2 Spirits remaining.";
+ set TSQ_CHK,2;
+ close;
+nook:
+ mes "[Klermaz]";
+ mes "You seems to be lost, Go back and talk to Throtre.";
+ next;
+ set TSQ_CHK,0;
+ close;
+}
+
+tha_t11.gat,16,16,4 script Mihane 111,{
+ if(TSQ_CHK != 2) goto nook;
+ mes "[Mihane]";
+ mes "Keep on this way, Only 1 Left.";
+ set TSQ_CHK,3;
+ close;
+nook:
+ mes "[Mihane]";
+ mes "Sorry, You must start over from the begining.";
+ next;
+ set TSQ_CHK,0;
+ close;
+}
+
+tha_t11.gat,85,85,4 script Seranes 111,{
+ if(TSQ_CHK != 3 ) goto nook;
+ mes "[Seranes]";
+ mes "Perfect, it seems that the other spirits grants you the access.";
+ mes "I am warping you to the next floor.";
+ next;
+ set TSQ_CHK,0;
+ warp "tha_t12.gat", 129, 58;
+ close;
+nook:
+ mes "[Seranes]";
+ mes "You did not follow the good order, starts again from the begining.";
+ next;
+ set TSQ_CHK,0;
+ close;
+}
+
+//Tha_t12 ( M: Middle):
+//(Nox)(D,L)-->tha_t12.gat,103,18,4
+//(Vox)(R)-->tha_t12.gat,162,58,4
+//(Hox)(L)-->tha_t12.gat,96,57,4
+//(Dox)(D,R)-->tha_t12.gat,153,17,4
+//(Sox)(U)-->tha_t12.gat,128,88,4
+//Script:
+
+tha_t12.gat,103,18,4 script Nox 111,{
+ if(TSQ_CHK == 1 ) goto done;
+ mes "[Nox]";
+ mes "Fine, 4 Spirits left.";
+ set TSQ_CHK,1;
+ close;
+done:
+ mes "[Nox]";
+ mes "Go search, They can't leave this floor.";
+ close;
+}
+
+tha_t12.gat,162,58,4 script Vox 111,{
+ if(TSQ_CHK != 1 ) goto nook;
+ mes "[Vox]";
+ mes "Keep on this way, 3 Spirits remaining !";
+ set TSQ_CHK,2;
+ close;
+nook:
+ mes "[Vox]";
+ mes "Sorry, Go back and talk to Nox.";
+ next;
+ set TSQ_CHK,0;
+ close;
+}
+
+tha_t12.gat,96,57,4 script Hox 111,{
+ if(TSQ_CHK != 2 ) goto nook;
+ mes "[Hox]";
+ mes "You are on the good way, 2 Spirits remaining !";
+ set TSQ_CHK,3;
+ close;
+nook:
+ mes "[Hox]";
+ mes "Sorry, Go back and talk to Nox.";
+ next;
+ set TSQ_CHK,0;
+ close;
+}
+
+tha_t12.gat,153,17,4 script Dox 111,{
+ if(TSQ_CHK != 3 ) goto nook;
+ mes "[Dox]";
+ mes "Perfect, 1 Spirit left.";
+ set TSQ_CHK,4;
+ close;
+nook:
+ mes "[Dox]";
+ mes "Sorry, Go back and talk to Nox.";
+ next;
+ set TSQ_CHK,0;
+ close;
+}
+
+tha_t12.gat,128,88,4 script Sox 111,{
+ if(TSQ_CHK != 4 ) goto nook;
+ mes "[Sox]";
+ mes "You have just passed the test successfully.";
+ mes "I will now warp you to steps of Fate.";
+ mes "Good-bye.";
+ next;
+ set TSQ_CHK,0;
+ warp "thana_step.gat", 186, 223;
+ close;
+nook:
+ mes "[Sox]";
+ mes "Sorry, Go back and talk to Nox.";
+ next;
+ set TSQ_CHK,0;
+ close;
+}
diff --git a/npc/custom/quests/thq/THQS_ChatingNPC.txt b/npc/custom/quests/thq/THQS_ChatingNPC.txt
new file mode 100644
index 000000000..d7ec81d2c
--- /dev/null
+++ b/npc/custom/quests/thq/THQS_ChatingNPC.txt
@@ -0,0 +1,103 @@
+//===== Athena Script =====================================
+//= Treasure Hunter Script
+//===== Converted By ======================================
+//= Fredzilla
+//= Original
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Treasure Hunter Quests //
+// By: Ezekial //
+// for the use on nRO run by Newbe5 //
+// revised By Warlock //
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//===== Version ===========================================
+//= 1.0 - Straight conversion of Aegis NPC file
+//===== Compatible With ===================================
+//= eAthena 1.0
+//===== Description =======================================
+//= Start for Treasure hunter quests
+//===== Comments ==========================================
+//= Event_THQS - Used to check if you have already registerd
+//= #Treasure_Token - used to keep track of tokens
+//////////////////////////////////////////////////////////
+
+
+//Entrance Flags
+yuno.gat,48,101,6 script Notice 722,{
+ mes "^FF0000[ Treasure Hunter Guild House ]^000000";
+ mes " ";
+ mes "Welcome to the Treasure Hunter's Guild House.";
+ mes "Feel free to drop in and look around";
+ mes "and feel free to become a memeber if you wish.";
+ mes " ";
+ mes "For membership applications please talk to Keegan";
+ mes "up the stairs and down the hall.";
+ close;
+}
+//Saver Girl;
+yuno_in01.gat,32,178,3 script Ahlma 94,{
+ mes "[Ahlma]";
+ if (Event_THQS == 0) goto N_Member;
+ mes "Welcome to The Treasure Hunter Guild.";
+ mes "How may I help you?";
+ next;
+ menu "Save",-,"Quit",N_Quit;
+ mes "[Ahlma]";
+ mes "Ok, saved. Thank you ~ See you soon~";
+ savepoint "yuno_in01.gat",34,176;
+ close;
+N_Quit:
+ mes "[Ahlma]";
+ mes "Well if you think you are safe, good on you.";
+ close;
+N_Member:
+ mes "Sorry, members only.";
+ close;
+}
+//Retired Smile mask girl;
+yuno_in01.gat,33,162,3 script Smile Helper 92,{
+ mes "[Smile Gal]";
+ mes "Oh man...I am so sick of";
+ mes "trading Mr. Smile masks for crap.";
+ mes " ";
+ mes "You ask me for one and you'll find yourself 10 pounds lighter!";
+ close;
+}
+//Usless Female Assasin;
+yuno_in01.gat,22,162,6 script Female Assasin 725,{
+ mes "[Sharlet]";
+ if (Event_THQS > 0) goto N_Member;
+ mes "Umm sorry I'm not gona waste my time talking to you if you arn't even a member!";
+ close;
+N_Member:
+ set @TEMP,rand(1,2);
+ if (@TEMP == 1) goto N_Chat1;
+ if (@TEMP == 2) goto N_Chat2;
+ mes "How are you reading this???";
+ mes "Well unless you are reading the code :)";
+ close;
+N_Chat1:
+ mes "Ahh welcome fellow Treasure Hunter "+strcharinfo(0)+".";
+ mes "Did you hear about that brave man that went into Glast Heim alone?! He must be crazy.";
+ close;
+N_Chat2:
+ mes ""+strcharinfo(0)+" don't you have something better you could be doing? Like a quest.";
+ close;
+}
+//another usless member
+yuno_in01.gat,25,162,6 script Female Wizard 123,{
+ mes "[Sasha]";
+ if (Event_THQS > 0) goto N_Member;
+ mes "Umm sorry I'm not gona waste my time talking to you if you arn't even a member!";
+ close;
+N_Member:
+ set @TEMP,rand(2);
+ if (@TEMP == 1) goto N_Chat;
+ mes "Ahh welcome fellow Treasure Hunter "+strcharinfo(0)+".";
+ mes "Did you hear about that goat man running around in the trees?";
+ mes " ";
+ mes "Aperently his name is Baphomet and he has been runing around the Forest Maze out side of prontera for quite some time now.";
+ close;
+N_Chat:
+ mes ""+strcharinfo(0)+" don't you have something better you could be doing? Like a quest.";
+ close;
+} \ No newline at end of file
diff --git a/npc/custom/quests/thq/THQS_GuildNPC.txt b/npc/custom/quests/thq/THQS_GuildNPC.txt
new file mode 100644
index 000000000..8a8da7e4c
--- /dev/null
+++ b/npc/custom/quests/thq/THQS_GuildNPC.txt
@@ -0,0 +1,95 @@
+//===== Athena Script =====================================
+//= Treasure Hunter Script
+//===== Converted By ======================================
+//= Fredzilla
+//= Original
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Treasure Hunter Quests //
+// By: Ezekial //
+// for the use on nRO run by Newbe5 //
+// revised By Warlock //
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//===== Version ===========================================
+//= 1.0 - Straight conversion of Aegis NPC file
+//===== Compatible With ===================================
+//= eAthena 1.0
+//===== Description =======================================
+//= Start for Treasure hunter quests
+//===== Comments ==========================================
+//= Event_THQS - Used to check if you have already registerd
+//= #Treasure_Token - used to keep track of tokens
+//////////////////////////////////////////////////////////
+
+
+yuno_in01.gat,124,164,6 script Guild Leader 108,{
+ mes "[Keegan]";
+ mes "What brings you here? Have something to say?";
+ next;
+ menu "I want to be a Treasure Hunter",-,"Take a New Quest.",N_NQuest,"Take me to the Official Shop.",N_OShop,"Nevermind.",N_NVM;
+ if(Event_THQS==1) goto N_AlreadyReg;
+ mes "[Keegan]";
+ mes "Well "+strcharinfo(0)+" if you want to be a Treasure Hunter first you must.";
+ mes " ";
+ mes "^FF00001.^000000 You well be changed ^FF000025,000z^000000 for basic training and your proof of being a member.";
+ mes " ";
+ mes "Umm... Well that is all you need to do. Hahaha.";
+ next;
+ menu "Pay ^FF000025,000z^000000.",-,"Thats way to high!!",N_HighPrice;
+ if (zeny < 25000) goto N_NoZeny;
+ set Zeny,Zeny-25000;
+ //getitem 7950, 1;
+ //getitem 7951, 1;
+ set Event_THQS,1;
+ mes "[Keegan]";
+ mes "Congratulations!";
+ emotion 46;
+ next;
+ mes "[Keegan]";
+ mes "Welcome to the Guild of Treasure Hunters.";
+ mes "You may now take a Treasure Hunting Quest as you see fit.";
+ close;
+N_NoZeny:
+ mes "[Keegan]";
+ mes "Hmmm you don't seem to have ^FF000025,000z^000000 "+strcharinfo(0)+". Please come back when you do.";
+ close;
+N_HighPrice:
+ mes "[Keegan]";
+ mes "Well if you can't afford a small ^FF000025,000z^000000 you shouldent be a Treasure Hunter yet.";
+ close;
+N_AlreadyReg:
+ mes "[Keegan]";
+ mes "Ha ha ha...you are already a member.";
+ close;
+N_NQuest:
+ if (Event_THQS!=1) goto A_NeedReg;
+ mes "[Keegan]";
+ mes "Well "+strcharinfo(0)+" if you wish to take a quest go talk to the fellow Treasure Hunter in the other room there.";
+ close;
+A_NeedReg:
+ mes "[Keegan]";
+ mes "Sorry you must be a member of the Treasure Hunter Guild if you wish to take a quest.";
+ mes " ";
+ mes "Also now that you are a member feel free to use our shops anytime you wish.They are all located on this floor.";
+ mes " ";
+ mes "We also have another shop for members only,in which we use little metal diamonds called Treasure Hunter Tokens to exchange for rare goods.";
+ mes " ";
+ mes "You will even have access to our exclusive personal Dungeon.";
+ close;
+N_OShop:
+ if (Event_THQS!=1) goto N_NeedMem;
+ mes "[Keegan]";
+ mes "Yes "+strcharinfo(0)+" I will take you to our shop right away!";
+ next;
+ warp "prt_in.gat",166,171;
+ close;
+ end;
+N_NeedMem:
+ mes "[Keegan]";
+ mes "Im sorry only members may visit our private shop.";
+ close;
+N_NVM:
+ mes "[Keegan]";
+ mes "Alright come back when you have the free time to spare.";
+ close;
+
+} \ No newline at end of file
diff --git a/npc/custom/quests/thq/THQS_QuestNPC.txt b/npc/custom/quests/thq/THQS_QuestNPC.txt
new file mode 100644
index 000000000..a2e7ddb21
--- /dev/null
+++ b/npc/custom/quests/thq/THQS_QuestNPC.txt
@@ -0,0 +1,560 @@
+//===== Athena Script =====================================
+//= Treasure Hunter Script
+//===== Converted By ======================================
+//= Fredzilla
+//= Original
+///////////////////////////////////////////////////////////
+// Treasure Hunter Quests //
+// By: Ezekial //
+// for the use on nRO run by Newbe5 //
+// revised By Warlock //
+///////////////////////////////////////////////////////////
+//===== Version ===========================================
+//= 1.2
+//===== Compatible With ===================================
+//= eAthena 1.0
+//===== Description =======================================
+//= Start for Treasure hunter quests
+//===== Comments ==========================================
+//= Event_THQS - Used to check if you have already registerd
+//= #Treasure_Token - used to keep track of tokens
+//= 1.0 - Straight conversionof Aegis NPC file
+//= 1.1 Added time penalty to prevent get quests to often [Lupus]
+//= 1.2 Fixed not working penalty, added anti-cheat [Lupus]
+//////////////////////////////////////////////////////////
+
+
+yuno_in01.gat,112,151,6 script Quest Manager 62,{
+ mes "[Guy]";
+ mes "Welcome to the Treasure Hunters Guild "+strcharinfo(0)+".";
+ next;
+ if (On_Quest == 0) goto N_NewQuest;
+ mes "[Guy]";
+ mes "Look " +strcharinfo(0)+ ", you can only 1 quest at a time, you should finish the quest unless you have given up.";
+ mes "Giving up will cost you ^FF00002500z^000000.";
+ next;
+ menu "No, never would I leave a quest!",-,"Yah I'm pathetic... Pay 2500z",N_PayZeny;
+ mes "[Guy]";
+ mes "Good well get back out there.";
+ close;
+N_PayZeny:
+ if (zeny < 2500) goto N_ZenyFail;
+ set one_qset, 0;
+ set two_qset, 0;
+ set three_qset, 0;
+ set four_qset, 0;
+ set five_qset, 0;
+ set six_qset, 0;
+ set seven_qset, 0;
+ set eight_qset, 0;
+ set nine_qset, 0;
+ set ten_qset, 0;
+ set On_Quest, 0;
+ set Zeny,Zeny-2500;
+ //add time delay penalty. You can get another quest after 2 - 3 hours. [Lupus]
+ set #THQ_DELAY, (GetTime(7)*12*31*24+GetTime(6)*31*24+GetTime(5)*24+GetTime(3)+rand(2,3));
+ mes "[Guy]";
+ mes "Its sad to see someone give a quest up...";
+ mes "Shame on you.";
+ emotion 7;
+ close;
+
+N_ZenyFail:
+ mes "[Guy]";
+ mes "Thats sad you don't even have ^FF00002500z^000000.";
+ close;
+
+N_NewQuest:
+ if (Event_THQS == 0) goto N_Signup;
+ //checking if time penalty is over [Lupus]
+ if (#THQ_DELAY > (GetTime(7)*12*31*24 + GetTime(6)*31*24 + GetTime(5)*24 + GetTime(3)) ) goto L_NoQuestsForYet;
+ mes "[Guy]";
+ mes "Ahh welcome fellow Treasure Hunter.";
+ mes "You currently have ^FF0000"+#Treasure_Token+"^000000 treasure tokens!!!";
+ mes "Would you like me to asign you a Quest?";
+ next;
+ menu "Yes I would like a Quest Please.",-,"Sorry Guy no time today.",N_NoTime;
+
+ mes "[Guy]";
+ mes "Ok lets see what quest we can give you today.";
+ mes "The quest names in ^FF0000This Colour^000000 mean that they are more challanging then the rest, but have better rewards.";
+ next;
+ set #THQ_DELAY,(GetTime(7)*12*31*24+GetTime(6)*31*24+GetTime(5)*24+GetTime(3) + 1); //you can get another quest after 1 hour [Lupus]
+ emotion 21;
+ if(@treasure_job==0) set @treasure_job,rand(1,10); //doesn't allow cheaters to pick any quest they want
+ if(@treasure_job==2) goto N_JobList2;
+ if(@treasure_job==3) goto N_JobList3;
+ if(@treasure_job==4) goto N_JobList4;
+ if(@treasure_job==5) goto N_JobList5;
+ if(@treasure_job==6) goto N_JobList6;
+ if(@treasure_job==7) goto N_JobList7;
+ if(@treasure_job==8) goto N_JobList8;
+ if(@treasure_job==9) goto N_JobList9;
+ if(@treasure_job==10) goto N_JobList10;
+ goto N_JobList1; //if(@treasure_job==1)
+
+N_NoTime:
+ mes "[Guy]";
+ mes "Alright maybe next time "+strcharinfo(0)+".";
+ emotion 20;
+ close;
+
+N_Signup:
+ mes "[Guy]";
+ mes "I'm afraid you must sign up for the guild before you can go on a quest!";
+ emotion 17;
+ close;
+
+L_NoQuestsForYet:
+ mes "[Guy]";
+ mes "I'm afraid there aren't any Quests for you yet.";
+ mes "Call in "+ (#THQ_DELAY - (GetTime(7)*12*31*24+GetTime(6)*31*24+GetTime(5)*24+GetTime(3)) )+" hours later.";
+ emotion 17;
+ close;
+
+L_QuestGiven:
+ set On_Quest,1;
+ set @treasure_job,0; //next time u get random quest
+ close;
+
+///////Job list 1///////
+N_JobList1:
+ mes "[Guy]";
+ mes "Ok you have a couple quests that can be done here.";
+ next;
+ menu "Lost Old Man.",-,"Master needs his Bow.",N_MasterBow,"The Hit List.",N_HitList,"^FF0000The Sad Widow.^000000",N_SadWidow;
+ mes "[Guy]";
+ mes "^FF0000Lost Old Man^000000";
+ mes "^FF0000------------^000000";
+ mes "This is an easy and low payed quest.";
+ mes " ";
+ mes "A wife came in asking us to find his husband, she seems to come in alot asking us to find him over and over again.";
+ next;
+ mes "[Guy]";
+ mes "But he always seems to be around the same place so there isn't much looking involved,check the mountains 1 west and 1 north of prontera.";
+ set one_qset,1;
+ goto L_QuestGiven;
+
+N_MasterBow:
+ mes "[Guy]";
+ mes "^FF0000Master needs his Bow^000000";
+ mes "^FF0000--------------------^000000";
+ mes "This is just a package delivery run, no big deal or anything.";
+ mes " ";
+ mes "Take this to an archer in the Archer Village outside of Payon.";
+ getitem 1072,1; //Delivery_Box
+ set one_qset,2;
+ goto L_QuestGiven;
+
+N_HitList:
+ mes "[Guy]";
+ mes "^FF0000The Hit List^000000";
+ mes "^FF0000------------^000000";
+ mes "In this quest you get to see some action.";
+ mes " ";
+ mes "There has been a farmer that keeps having all his crops eaten by ^FF0000Thief Bugs, Porings, and Lunitics^000000 here is a lost of what I need you to do. He is nexting East of Prontera.";
+ next;
+ mes "[Guy]";
+ mes "Ok go to the east and bash those little bastards like there is no tommorow. When you are done with that list you have just discard it, but you will NOT get another one!.";
+ set one_qset,3;
+ goto L_QuestGiven;
+
+N_SadWidow:
+ mes "^FF0000The Sad Widow^000000";
+ mes "^FF0000*************^000000";
+ mes "This is just another quest with possable well pay.";
+ mes " ";
+ mes "There is an old Widow in pontera, she recently lost her husband due to a monster attack.She has requested a Guild member to come talk to her at the Pontera Graveyard.";
+ set one_qset,4;
+ goto L_QuestGiven;
+
+///////Job list 2///////
+N_JobList2:
+ mes "[Guy]";
+ mes "Ok you have a couple quests that can be done here.";
+ next;
+ menu "The Strange Letter",-,"Jur for Jeramiah",N_JurJeramiah,"Bee Keepers Hunny",N_BeeHunny,"^FF0000The Wander Man^000000",N_WanderMan;
+
+ mes "^FF0000The Strange Letter^000000";
+ mes "^FF0000------------------^000000";
+ mes "I do not know much about this quest.";
+ mes " ";
+ mes "A strange man came in here yesterday and asked me to deliver this ^FF0000Strange Letter^000000 to some woman in Morroc. Knowing us we do not ask questions so you must take care of this delivery.";
+ mes "The Woman is in located in Morroc and her name is Erika.";
+ set two_qset, 1;
+ getitem 1072,1; //Delivery_Message
+ goto L_QuestGiven;
+
+N_JurJeramiah:
+ mes "^FF0000Jur for Jeramiah^000000";
+ mes "^FF0000----------------^000000";
+ mes "Standard delivery quest.";
+ mes " ";
+ mes "Jeramiah ordered a Special Jur from our weapon shop.Your Job is to deliver it to him in the Assasin Temple.";
+ getitem 1998,1; //Jeramiah's_Jur
+ set two_qset,2;
+ goto L_QuestGiven;
+
+N_BeeHunny:
+ mes "^FF0000Bee Keepers Hunny^000000";
+ mes "^FF0000-----------------^000000";
+ mes "Strange man in the marsh need your help.";
+ mes " ";
+ mes "There is a strange man in the forest in ^FF00001 south and 1 west^000000 of Prontera, he need your help with something.";
+ set two_qset,3;
+ goto L_QuestGiven;
+
+N_WanderMan:
+ mes "^FF0000The Wander Man^000000";
+ mes "^FF0000**************^000000";
+ mes "There is a woman in Payon that is in desperate for aid.";
+ mes " ";
+ mes "There is a woman in Payon named Molly please get to her as soon as possable the letter she sent here sounded like someone was killing her.";
+ set two_qset,4;
+ goto L_QuestGiven;
+
+///////Job list 3///////
+N_JobList3:
+ mes "[Guy]";
+ mes "Ok you have a couple quests that can be done here.";
+ next;
+ menu "Damn Pixies!",-,"Package Delivery",N_Delivery1,"Prontera Culvert",N_ProntCulvert,"^FF0000Trouble at the Coal Mine^000000",N_CoalMine;
+ mes "^FF0000Damn Pixies!^000000";
+ mes "^FF0000------------^000000";
+ mes "Have you ever been to Hell?";
+ mes " ";
+ mes "A man outside of ^FF0000Ant Hell^000000 has requested your audiance, I suggest you hurry.";
+ set three_qset,1;
+ goto L_QuestGiven;
+
+N_Delivery1:
+ mes "^FF0000Package Delivery^000000";
+ mes "^FF0000----------------^000000";
+ mes "Standard drop off quest.";
+ mes " ";
+ mes "In this quest you need to deliver a mystery box to someone names ^FF0000Flank at the bridge between Aldebaran and Juno^000000.";
+ getitem 1082,1; //Delivery_Box_
+ set three_qset,2;
+ goto L_QuestGiven;
+
+N_ProntCulvert:
+ mes "^FF0000Prontera Culvert^000000";
+ mes "^FF0000----------------^000000";
+ mes "The bugs,They are everywere!.";
+ mes " ";
+ mes "The ^FF0000Prontera Culvert^000000 is out of control!Sign up as a volenteer to clean out some of the culvert.";
+ next;
+ mes "I know it seems like there is no stoping them but however many you kill does makes a differance. After you have signed up, inside the Culvert there will be a Knight that will give you a quest.";
+ set three_qset,3;
+ goto L_QuestGiven;
+
+N_CoalMine:
+ mes "^FF0000Trouble at the Coal Mine^000000";
+ mes "^FF0000************************^000000";
+ mes "The fun...err...trouble never stops in Rune Midgar.";
+ mes " ";
+ mes "Recently there was an acident at the coal mines. There was a huge chasm that released some undead Evil Druids.";
+ next;
+ mes "The Evil Druids started to turn all the workers into the undead. We do not know why, but we do not want to find out, contact a man named Rudolfo outside the Coal Mines.";
+ set three_qset,4;
+ goto L_QuestGiven;
+
+///////Job list 4///////
+N_JobList4:
+ mes "[Guy]";
+ mes "Ok you have a couple quests that can be done here.";
+ next;
+ menu "Zombie Attack",-,"Mystic Wizard",N_MWizard,"Aww shoot!",N_Shoot,"^FF0000Emperium^000000",N_Emp;
+ mes "^FF0000Zombie Attack^000000";
+ mes "^FF0000-------------^000000";
+ mes "The undead have invaded Payon Cave!";
+ mes " ";
+ mes "I remember when Payon Cave used to be a safe place to visit, but now undead Zombies have infested the cave! Please contact ^FF0000Flora outside on Payon Cave^000000 and aid her.";
+ set four_qset,1;
+ goto L_QuestGiven;
+
+N_MWizard:
+ mes "^FF0000Mystic Wizard^000000";
+ mes "^FF0000-------------^000000";
+ mes "Proto-type of a Staff must be delivered to Zed the Wizard.";
+ mes " ";
+ mes "Zed the Wizard has requested to try out a new un-named proto-type staff. It will be your job to deliver this to him. Zed tend to stay within the general area of Juno.";
+ getitem 1999,1; //Zed's_Staff
+ set four_qset,2;
+ goto L_QuestGiven;
+
+N_Shoot:
+ mes "^FF0000Aww shoot!^000000";
+ mes "^FF0000----------^000000";
+ mes "A little girl is in trouble.";
+ mes " ";
+ mes "There is a little girl in trouble, her name is Dassy and she is ^FF0000east of the prontera fountan^000000.";
+ set four_qset,3;
+ goto L_QuestGiven;
+
+N_Emp:
+ mes "^FF0000Emperium^000000";
+ mes "^FF0000********^000000";
+ mes "This is a strange quest that I know little about.";
+ mes " ";
+ mes "Someone in ^FF0000Prontera Guild Hall^000000 has requested to see one of our members, his name is Czhore.";
+ set four_qset,4;
+ goto L_QuestGiven;
+
+///////Job list 5///////
+N_JobList5:
+ mes "[Guy]";
+ mes "Ok you have a couple quests that can be done here.";
+ next;
+ menu "Savage Land",-,"Pyramid's part 1",N_PyrPRT1,"Thinking first",N_Thinkfirst,"^FF0000The not so friendly ghost^000000",N_Ghost;
+ mes "^FF0000Savage Land^000000";
+ mes "^FF0000-----------^000000";
+ mes "Easy for some very hard for others.";
+ mes " ";
+ mes "A man named Lithin wish's to give you a quest, you can find him north of prontera inside of ^FF0000The Hidden Temple^000000";
+ set five_qset,1;
+ goto L_QuestGiven;
+
+N_PyrPRT1:
+ mes "^FF0000Pyramid's^000000";
+ mes "^FF0000---------^000000";
+ mes "Its funny cause no one knows how these were really made.";
+ mes " ";
+ mes "Aperently the Pyramids have are beganing to be infested with undead activity,outside the pyramids a man will be nexting for you. He did no give us his name but he asked for you to hurry.";
+ set five_qset,2;
+ goto L_QuestGiven;
+
+N_Thinkfirst:
+ mes "^FF0000Thinking first^000000";
+ mes "^FF0000--------------^000000";
+ mes "This sounds like another one of those ditzy girl quests...";
+ mes " ";
+ mes "Dazzy the local blond around Geffen has asked for you to deliver her these flowers. I don't know why someone would send flowers to herself...";
+ getitem 744,1; //Bouquet
+ set five_qset,3;
+ goto L_QuestGiven;
+
+N_Ghost:
+ mes "^FF0000The not so friendly ghost^000000";
+ mes "^FF0000*************************^000000";
+ mes "Well no one ever said Casper was nice behind the sceens.";
+ mes " ";
+ mes "A wizard on the 3rd floor of geffen tower want's to talk to you about the anchient ruins underneath the city.";
+ set five_qset,4;
+ goto L_QuestGiven;
+
+///////Job list 6///////
+N_JobList6:
+ mes "[Guy]";
+ mes "Ok you have a couple quests that can be done here.";
+ next;
+ menu "Package for thiefs",-,"Pyramid's part 2",N_PyrPRT2,"Special delivery",N_Delivery2,"^FF0000Geffenia^000000",N_Gef;
+ mes "^FF0000Package for thiefs^000000";
+ mes "^FF0000------------------^000000";
+ mes "How ironic.";
+ mes " ";
+ mes "Deliver this Box to the Thiefs guild.";
+ set six_qset,1;
+ getitem 1083,1; //Delivery_Box__
+ goto L_QuestGiven;
+
+N_PyrPRT2:
+ mes "^FF0000Pyramid's part 2^000000";
+ mes "^FF0000----------------^000000";
+ mes "More undead action in this triangle!";
+ mes " ";
+ mes "Talk to a man outside the entrance of the pyramids, he seems to have another quest for you.";
+ set six_qset,2;
+ goto L_QuestGiven;
+
+N_Delivery2:
+ mes "^FF0000Special delivery^000000";
+ mes "^FF0000----------------^000000";
+ mes "Well most of what we do is run packages, this is no different from other's.";
+ mes " ";
+ mes "Take this box, DO NOT OPEN IT! To a little girl in Lutie named Chirach she should be around santa.";
+ set six_qset,3;
+ getitem 1083,1; //Delivery_Box__
+ goto L_QuestGiven;
+
+N_Gef:
+ mes "^FF0000Geffenia^000000";
+ mes "^FF0000********^000000";
+ mes "The little children of Geffen have been haveing strange nightmares.";
+ mes " ";
+ mes "We belive that the ruins underneath geffen are causeing this problem, talk to a Wizard named Zuuzuu inside Geffen Tower for your mission.";
+ set six_qset,4;
+ goto L_QuestGiven;
+
+///////Job list 7///////
+N_JobList7:
+ mes "[Guy]";
+ mes "Ok you have a couple quests that can be done here.";
+ next;
+ menu "Apple Juice",-,"Delivery",N_Delivery3,"^FF0000Golden Thief Bug^000000",N_GTB,"^FF0000Evil Pirates^000000",N_EvilPirates;
+ mes "^FF0000Apple Juice^000000";
+ mes "^FF0000-----------^000000";
+ mes "Can't say no to some good apple juice.";
+ mes " ";
+ mes "There is a little girl up in prontera Square a bit north from the fountain, go talk to her.";
+ set seven_qset,1;
+ goto L_QuestGiven;
+
+N_Delivery3:
+ mes "^FF0000Delivery^000000";
+ mes "^FF0000--------^000000";
+ mes "So many packages so little time.";
+ mes " ";
+ mes "Take this box to a man in Alberta named Charles.";
+ getitem 1082,1; //Delivery_Box_
+ set seven_qset,2;
+ goto L_QuestGiven;
+
+N_GTB:
+ mes "^FF0000Golden Thief Bug^000000";
+ mes "^FF0000****************^000000";
+ mes "The prontera Culvert has never been the same...";
+ mes " ";
+ mes "Well there have been reports of a Golden Thief Bug running around the bottem on the Culvert. Talk to a Knight inside the Culvert.";
+ set seven_qset,3;
+ goto L_QuestGiven;
+
+N_EvilPirates:
+ mes "^FF0000Evil Pirates^000000";
+ mes "^FF0000************^000000";
+ mes "A ghost ship has washed up on shore on an island outside of Izlude.";
+ mes " ";
+ mes "A female assasin has a quest for you, she is nexting outside the Ghost Ship.There have been reports of evil undead pirates lurking around inside the ship.";
+ set seven_qset,4;
+ goto L_QuestGiven;
+
+///////Job list 8///////
+N_JobList8:
+ mes "[Guy]";
+ mes "Ok you have a couple quests that can be done here.";
+ next;
+ menu "Banana Juice",-,"Another Delivery",N_Delivery4,"My lost beeds",N_LostBeeds,"^FF0000Baphomet!^000000",N_Bapho;
+ mes "^FF0000Banana Juice^FF0000";
+ mes "^FF0000------------^FF0000";
+ mes "Sound gross to some good to others.";
+ mes " ";
+ mes "There is a little girl up in prontera Square a bit north from the fountain, go talk to her.";
+ set eight_qset,1;
+ goto L_QuestGiven;
+
+N_Delivery4:
+ mes "^FF0000Another Delivery^FF0000";
+ mes "^FF0000----------------^FF0000";
+ mes "Well yah box delivering is in high demand,lots of lazy people.";
+ mes " ";
+ mes "Take this package to a man in Morroc named Klye.";
+ set eight_qset,2;
+ getitem 1081,1; //Delivery_Box
+ goto L_QuestGiven;
+
+N_Bapho:
+ mes "^FF0000Baphomet!^FF0000";
+ mes "^FF0000*********^FF0000";
+ mes "Hidden in the Temple he watches and guards.";
+ mes " ";
+ mes "Rumor has it that a Goat Man is lurking in the Hidden Temple, There is also a man in the Hidden Temple names Zack that needs you help with this Goat Man known as Baphomet.";
+ set eight_qset,3;
+ goto L_QuestGiven;
+
+N_LostBeeds:
+ mes "^FF0000My lost Beeds^FF0000";
+ mes "^FF0000-------------^FF0000";
+ mes "Oh great I smell stupidity...";
+ mes " ";
+ mes "A little girl in Payon wants to talk to you, her name is Flower, What a stupid name,Hahaha.";
+ set eight_qset,4;
+ goto L_QuestGiven;
+
+///////Job list 9///////
+N_JobList9:
+ mes "[Guy]";
+ mes "Ok you have a couple quests that can be done here.";
+ next;
+ menu "Smelly Box",-,"Payon Cave",N_PayonC,"^FF0000Sohee's Everywere!^000000",N_Sohee,"^FF0000Moonlight Flower^000000",N_Moonlight;
+ mes "^FF0000Smelly Box^FF0000";
+ mes "^FF0000----------^FF0000";
+ mes "Oh god please get this out of here fast.";
+ mes " ";
+ mes "Oh man smells like someone died in here.Take this to the Magic School in Geffen and hurry,ahh the smell its burning my eye's!!!";
+ getitem 1082,1; //Delivery_Box_
+ set nine_qset,1;
+ goto L_QuestGiven;
+
+N_Sohee:
+ mes "^FF0000Sohee's Everywere!^FF0000";
+ mes "^FF0000******************^FF0000" ;
+ mes "Hmmm seem's a man named Jack wants to speak to you in the Archer Guild House.";
+ mes " ";
+ mes "Well what we know about Payon is that a while ago there was a freak fire that burnt down the old school.";
+ next;
+ mes "The strange thing about what happened was that the children inside did not seem to die from the flames.";
+ mes "Speak to the little school girl somewere in Payon.";
+ set nine_qset,2;
+ goto L_QuestGiven;
+
+N_Moonlight:
+ mes "^FF0000Moonlight Flower^FF0000";
+ mes "^FF0000****************^FF0000" ;
+ mes "Hmmm seem's a man named Jack wants to speak to you in the Archer Guild House.";
+ mes " ";
+ mes "Well I don't know much about this, it has to do with the deepest reagions of Payon Cave, We don't know much because no one ever seems to make it back alive.";
+ set nine_qset,3;
+ goto L_QuestGiven;
+
+N_PayonC:
+ mes "^FF0000Payon Cave^FF0000";
+ mes "^FF0000----------^FF0000" ;
+ mes "Hmmm seem's a man named Jack wants to speak to you in the Archer Guild House.";
+ mes " ";
+ mes "The farther we go into the cave the stranger it gets.";
+ set nine_qset,4;
+ goto L_QuestGiven;
+
+///////Job list 10///////
+N_JobList10:
+ mes "[Guy]";
+ mes "Ok you have a couple quests that can be done here.";
+ next;
+ menu "The Blank Box",-,"^FF0000Eddga^000000",N_Eddga,"^FF0000Phreeoni^000000",N_Phreeoni,"^FF0000Maya^000000",N_Maya;
+
+ mes "^FF0000The Blank Box^FF0000";
+ mes "^FF0000-------------^FF0000";
+ mes "Package to Morroc";
+ mes " ";
+ mes "There is nothing writen on this box but a notice to deliver it to a man Kreg.";
+ getitem 1082,1; //Delivery_Box_
+ set ten_qset,1;
+ goto L_QuestGiven;
+
+N_Eddga:
+ mes "^FF0000Eddga^FF0000";
+ mes "^FF0000*****^FF0000";
+ mes "Tony the Tiger is on crack and destroying the forest.";
+ mes " ";
+ mes "Talk to a man outside the 'Hidden' Hunter Guild, He needs your help.";
+ set ten_qset,2;
+ goto L_QuestGiven;
+
+N_Phreeoni:
+ mes "^FF0000Phreeoni^FF0000";
+ mes "^FF0000********^FF0000";
+ mes "He is big and Pink and you run and hide!";
+ mes " ";
+ mes "This guy just poped into some hole one day, He dosent look that tough but you would be supprised. Talk to a man named Caral outside of Ant Hell.";
+ set ten_qset,3;
+ goto L_QuestGiven;
+
+N_Maya:
+ mes "^FF0000Maya^FF0000";
+ mes "^FF0000****^FF0000";
+ mes "Something scary!";
+ mes " ";
+ mes "This half naked freak need an army to take down, now its your job, good luck. Meet a girl named Jeni outside of the back entrance to Ant Hell.";
+ set ten_qset,4;
+ goto L_QuestGiven;
+}
diff --git a/npc/custom/quests/thq/THQS_Quests.txt b/npc/custom/quests/thq/THQS_Quests.txt
new file mode 100644
index 000000000..ca282164f
--- /dev/null
+++ b/npc/custom/quests/thq/THQS_Quests.txt
@@ -0,0 +1,1050 @@
+//===== Athena Script =====================================
+//= Treasure Hunter Script
+//===== Converted By ======================================
+//= Fredzilla
+//= Original
+///////////////////////////////////////////////////////////
+// Treasure Hunter Quests //
+// By: Ezekial //
+// for the use on nRO run by Newbe5 //
+// revised By Warlock //
+///////////////////////////////////////////////////////////
+//===== Version ===========================================
+//= 1.2
+//===== Compatible With ===================================
+//= eAthena 1.0
+//===== Description =======================================
+//= Start for Treasure hunter quests
+//===== Comments ==========================================
+//= Event_THQS - Used to check if you have already registerd
+//= #Treasure_Token - used to keep track of tokens
+//= 1.0 - Straight conversionof Aegis NPC file
+//= 1.2 some bugfixes, typos [Lupus]
+//////////////////////////////////////////////////////////
+
+
+///////Job list 1///////
+//1-1
+mjolnir_09.gat,187,189,6 script Old Man 107,{
+ if (one_qset==1) goto N_QuestStart;
+ mes "[Old Man]";
+ mes "Eh! Can't and old man walk in peace anymore?!";
+ close;
+N_QuestStart:
+ mes "[Old Man]";
+ mes "Eh? whats that?!";
+ mes " ";
+ mes "My wife wants me home?! Alright, alright... I'm going, I'm going. Thank you for telling me the message.";
+ mes " ";
+ mes "Here take this Treasure Token.";
+ set one_qset,0;
+ set On_Quest,0;
+ set #Treasure_Token,#Treasure_Token+1;
+ close;
+}
+//1-2;
+pay_arche.gat,86,129,6 script Archer 732,{
+ if (one_qset == 2) goto N_QuestStart;
+ mes "[Kieth]";
+ mes "Sorry can't talk, I'm a busy man, I'm waiting for my package.";
+ close;
+N_QuestStart:
+ mes "[Kieth]";
+ mes "Ahh, you must be from the Treasure Hunter Agensy. Do you have my bow??";
+ mes " ";
+ mes "Ahh, good,thank you for your time. Take this Treasure Token.";
+ set one_qset,0;
+ set On_Quest,0;
+ delitem 1072,1;
+ set #Treasure_Token,#Treasure_Token+1;
+ close;
+}
+//1-3
+prt_fild06.gat,37,192,6 script Farmer 125,{
+ if (one_qset == 3 && countitem(909) > 19 && countitem(955) > 19 && countitem(914) > 19 && countitem(705) > 19) goto N_QuestComp;
+ if (one_qset==3) goto N_QuestStart;
+ mes "[Billy-Bob]";
+ mes "Arrrg!... Those Bastard Bugs have eaten everything, this place donest even look like my farm anymore!!";
+ close;
+N_QuestComp:
+ mes "[Billy-Bob]";
+ mes "Ohhh, thank you thats a good start for me.";
+ mes "Well those bugs can bugger off...";
+ mes " ";
+ mes "Well here take these 2 Treasure Tokens.";
+ set one_qset,0;
+ set #Treasure_Token,#Treasure_Token+2;
+ set On_Quest,0;
+ delitem 909,20;
+ delitem 955,20;
+ delitem 914,20;
+ delitem 705,20;
+ close;
+N_QuestStart:
+ mes "[Billy-Bob]";
+ mes "Those Bastard Bugs are Everywere!!!";
+ mes "You must be from the guild! OK, bring me 20 Worm Peelings, 20 Jellopys, 20 fluff and 20 Clovers.";
+ close;
+}
+//1-4
+prontera.gat,264,353,6 script Old Lady 103,{
+ if (one_qset == 4 && countitem(934) > 14) goto N_QuestComp;
+ if (one_qset == 4) goto N_QuestStart;
+ mes "[Old Lady]";
+ mes "This is my husbands grave... I'm just paying him a little visit.";
+ close;
+N_QuestComp:
+ mes "[Old Lady]";
+ mes "You have them?!";
+ next;
+ mes "[Old Lady]";
+ mes "Thank you sooo much here have these 3 Treasure Tokens.";
+ set #Treasure_Token,#Treasure_Token+3;
+ delitem 934,15;
+ set one_qset,0;
+ set On_Quest,0;
+ close;
+N_QuestStart:
+ mes "[Old Lady]";
+ mes "So your the one that has come to help me?";
+ mes " ";
+ mes "Ok well this is what I wanted you to do,this greave beside me is my husbands grave and I promised him that I would bury some Mementos with him, The problem is that I have no Mementos...";
+ next;
+ mes "[Old Lady]";
+ mes "Bring me 15 Mementos, please.";
+ close;
+}
+///////Job list 2///////
+//2-1;
+morocc.gat,59,109,6 script Erika 700,{
+ if (two_qset == 1 && countitem(1072) > 0) goto N_QuestComp;
+ if (two_qset == 1) goto N_QuestStart;
+ mes "[Erika]";
+ mes "Hello my name is Erika.";
+ close;
+N_QuestComp:
+ mes "[Erika]";
+ mes "What's that? You have a letter for me!!";
+ mes "Oooooh I just love,love letters :D. next here will I open it.";
+ next;
+ mes "[Letter]";
+ mes "Dear Erika";
+ mes " ";
+ mes "Sorry to inform you but you have been evicted, please move out within 3-5 days.";
+ mes " ";
+ mes "-Managment";
+ next;
+ mes "[Erika]";
+ mes "Oh... um... Well fuck, that bastard thinks he can kick me out!!!!! He's got another thing coming!";
+ mes " ";
+ mes "Well thank you for delivering this anyway have this Treasure Token.";
+ delitem 1072,1;
+ set two_qset,0;
+ set #Treasure_Token,#Treasure_Token+1;
+ set On_Quest,0;
+ close;
+N_QuestStart:
+ mes "[Erika]";
+ mes "So your the one that has a letter for me?";
+ mes " ";
+ mes "Ok well where's the letter?";
+ close;
+}
+//2-2;
+in_moc_16.gat,15,30,6 script Jeramiah 730,{
+ if (two_qset == 2 && countitem(1998) > 0) goto N_QuestComp;
+ if (two_qset == 2) goto N_QuestStart;
+ mes "[Jeramiah]";
+ mes "Its so boring when you have to next on people...";
+ close;
+N_QuestComp:
+ mes "[Jeramiah]";
+ mes "Ahh hello, you must be from the Treasure Hunter Guild.";
+ mes "Do you have my Jur? Ahh good good. Thank you.";
+ mes "Here have this Treasure Hunter Token.";
+ set two_qset,0;
+ set On_Quest,0;
+ delitem 1998,1;
+ set #Treasure_Token,#Treasure_Token+1;
+ close;
+N_QuestStart:
+ mes "[Jeramiah]";
+ mes "So your the one that is supposed to bring my Jur?";
+ mes "So where's my Jur?";
+ close;
+}
+//2-3;
+prt_fild07.gat,316,263,6 script Marsh Man 84,{
+ if (two_qset == 3 && countitem(518) > 19) goto N_QuestComp;
+ if (two_qset == 3) goto N_QuestStart;
+ mes "[Lenith]";
+ mes "Hello, sorry I don't have much time to talk I'm waiting for someone.";
+ close;
+N_QuestComp:
+ mes "[Lenith]";
+ mes "Oh hello, OH you have my honey, my bees and I thank you.";
+ mes " ";
+ mes "Here have these 2 Treasure Hunter Tokens.";
+ delitem 518,20;
+ set #Treasure_Token,#Treasure_Token+2;
+ set two_qset,0;
+ set On_Quest,0;
+ close;
+N_QuestStart:
+ mes "[Lenith]";
+ mes "Hello, my name is Lenith and I have a quest for you.";
+ mes "Well resently a bunch of stupid bears stole the supers off all my bee's nests...Stupid bears.";
+ mes " ";
+ mes "What I need you to do is find me some more honey so these bee's can get through the winter. I will need about 20 Honey.";
+ close;
+}
+//2-4;
+payon.gat,161,72,6 script Molly 714,{
+ if (two_qset == 4 && countitem(7005) > 0) goto N_QuestComp;
+ if (two_qset == 4) goto N_QuestStart;
+ mes "[Molly]";
+ mes "Sorry can't talk, I'm waiting for someone.";
+ close;
+N_QuestComp:
+ mes "[Molly]";
+ mes "WOW YOU DID IT!!!";
+ mes " ";
+ mes "I knew you looked strong, I have no idea how you could have killed that monster though.";
+ mes "thank you so much, here have these 3 Guild Tokens as a reward.";
+ set two_qset,0;
+ set On_Quest,0;
+ set #Treasure_Token,#Treasure_Token+3;
+ delitem 7005,1;
+ close;
+N_QuestStart:
+ mes "[Molly]";
+ mes "Wow you must be the brave man from the treasure hunter guild!";
+ mes "Ok here is whats happening, I don't know what started it but there is a strange Ronan Skeleton running aroung the woods 2 East from here.";
+ next;
+ mes "[Molly]";
+ mes "We have try to kill him in the past but it was not...ummm...It was a bad idea. What I want you to do is go there and bring me back his Skull as proof of you killing him.";
+ mes " ";
+ mes "Good Luck";
+ close;
+}
+///////Job list 3///////
+//3-1;
+moc_fild04.gat,208,322,6 script Clark 65,{
+ if (three_qset == 1 && countitem(1040) > 29) goto N_QuestComp;
+ if (three_qset == 1) goto N_QuestStart;
+ mes "[Clark]";
+ mes "Love to chat, but I'm waiting for someone.";
+ close;
+N_QuestComp:
+ mes "[Clark]";
+ mes "Ok well this is a start.";
+ mes " ";
+ mes "I hope that this hole will go away 1 day, and I might have another quest for you in the future.";
+ mes "here take these 2 Treasure Tokens.";
+ set #Treasure_Token,#Treasure_Token+2;
+ delitem 1040,30;
+ set three_qset,0;
+ set On_Quest,0;
+ close;
+N_QuestStart:
+ mes "[Clark]";
+ mes "Well hello to you.";
+ mes "You must be from the Treasure Hunter Guild.";
+ mes " ";
+ mes "Ok well this is my problem, yah see that hole in the ground? Yah that thing just popped out of nowhere a couple years ago, inside its full of these ugly ants and these monsters called Giearths.";
+ next;
+ mes "[Clark]";
+ mes "What I want you to do is kill some of the Giearths.Bring me 30 of there little Moustaches.";
+ close;
+}
+//3-2;
+yuno_fild01.gat,186,162,6 script Flank 73,{
+ if (three_qset == 2 && countitem(1082) > 0) goto N_QuestComp;
+ if (three_qset == 2) goto N_QuestStart;
+ mes "[Flank]";
+ mes "Sorry I'm waiting for my package so I don't want to talk.";
+ close;
+N_QuestComp:
+ mes "[Flank]";
+ mes "Perfect right on time, now I must be going to plant this bomb.... Err I meen give this package to my mother for her birthday.";
+ next;
+ mes "[Flank]";
+ mes "Thanks";
+ mes "Have this Treasure Token";
+ set three_qset,0;
+ delitem 1082,1;
+ set #Treasure_Token,#Treasure_Token+1;
+ set On_Quest,0;
+ close;
+N_QuestStart:
+ mes "[Flank]";
+ mes "So you have my packages?";
+ mes "Well where is it then?";
+ close;
+}
+//3-3 Goes to 7-3 using callfunc
+prt_sewb1.gat,120,245,6 script Sewer Managment Knight 705,{
+ if (three_qset == 3 && countitem(955) > 149) goto N_QuestComp;
+ if (three_qset == 3) goto N_QuestStart;
+ if (seven_qset == 3) goto N_QuestStart2;
+ mes "[Sewer Managmant]";
+ mes "Live dosent get any worse for me,working in the bug filled Culvert every day...";
+ close;
+N_QuestComp:
+ mes "[Sewer Managment]";
+ mes "Well that looked like it was no trouble for you.";
+ mes "Thanks have these 4 Treause Tokens.";
+ delitem 955,150;
+ set #Treasure_Token,#Treasure_Token+4;
+ set three_qset,0;
+ set On_Quest,0;
+ close;
+N_QuestStart:
+ mes "[Sewer Managmant]";
+ mes "For a while now we have had monster, mostly bugs infesting the culvert...";
+ mes " ";
+ mes "What I want you to do is kinda clean some of it out, every little bit counts.";
+ mes "Bring me 150 Worm Peelings.";
+ close;
+N_QuestStart2:
+ callfunc "seven_qset-3";
+ close;
+}
+//3-4
+mjolnir_02.gat,87,357,6 script Man 51,{
+ if (three_qset == 4 && countitem(1041) > 49) goto N_QuestComp;
+ if (three_qset == 4) goto N_QuestStart;
+ mes "[Rudolfo]";
+ mes "Danger, the Coal Mine is now a hostile area.";
+ close;
+N_QuestComp:
+ mes "[Rudolfo]";
+ mes "Well its good to see that you have come back alive.";
+ mes "I had my doughts but thank you for your help.";
+ mes " ";
+ mes "Here have these 4 Treasure Tokens.";
+ set three_qset,0;
+ set On_Quest,0;
+ delitem 1041,50;
+ set #Treasure_Token,#Treasure_Token+4;
+ close;
+N_QuestStart:
+ mes "[Rudolfo]";
+ mes "Hello, you must be from the Treasure Hunter Guild.";
+ mes " ";
+ mes "They must have filled you in on what is happening on the lower levels of this Coal Mine, I know its desturbing and we are still trying to figure out why and how 2 Evil Druids got down there.";
+ mes " ";
+ mes "Well what I want you to do is bring me 50 Lantern's as proof that you have cleaned some of them out, any loot you find down there you may keep other then what I have asked you to get for me.";
+ close;
+}
+///////Job list 4///////
+//4-1;
+pay_arche.gat,45,138,6 script Flora 724,{
+ if (four_qset == 1 && countitem(957) > 49) goto N_QuestComp;
+ if (four_qset == 1) goto N_QuestStart;
+ mes "[Flora]";
+ mes "Well hello be carfull in the cave, we have heard reports of Undead monster funning around.";
+ close;
+N_QuestComp:
+ mes "[Flora]";
+ mes "Welcome back, good job you did it. (I wonder if that Flaming Bastard is still alive)";
+ mes "Well I hope that cut down a bit on the monsters and here have these 2 Tokens.";
+ set #Treasure_Token,#Treasure_Token+2;
+ delitem 957,50;
+ set four_qset,0;
+ set On_Quest,0;
+ killmonster "pay_dun00.gat","kaho";
+ close;
+N_QuestStart:
+ mes "[Flora]";
+ mes "Well hello there.";
+ mes " ";
+ mes "Well this is what I need you to do, bring me 50 Decayed Nails - awile back Payon Cave used to be a safe place to go...But now things have gone out of controll and Zombies have invaded the first floor...";
+ mes " ";
+ mes "There is also these new monsters that have just poped out of no were, we call them Flaming Bastards...Be carfull if you arn't powerfull yet because they are very strong.";
+ next;
+ mes "[Flora]";
+ mes "Good Luck";
+ mes "Remember I need 50 Nail's";
+ monster "pay_dun00.gat",0,0,"Flaming Bastard",1072,1,"kaho";
+ monster "pay_dun00.gat",0,0,"Flaming Bastard",1072,1,"kaho";
+ close;
+}
+//4-2;
+yuno.gat,45,138,6 script Zed 735,{
+ if (four_qset == 2 && countitem(1999) > 0) goto N_QuestComp;
+ if (four_qset == 2) goto N_QuestStart;
+ mes "[Zed]";
+ mes "Get out of my face you flake.";
+ close;
+N_QuestComp:
+ mes "[Zed]";
+ mes "Dear god took you long enough you bastard!";
+ mes "You know how much my time is worth!!!!";
+ mes "Your slow and I'm never gona recomend a job for you, Gimmie my staff and get out of me face!";
+ next;
+ mes "[Zed]";
+ mes "Well you can take this crapy Treausre Token.";
+ set On_Quest,0;
+ set four_qset,0;
+ delitem 1999,1;
+ set #Treasure_Token,#Treasure_Token+1;
+ close;
+N_QuestStart:
+ mes "[Zed]";
+ mes "Where's my staff?";
+ close;
+}
+//4-3;
+prontera.gat,176,204,6 script Dassy 95,{
+ if (four_qset == 3 && countitem(711) > 19) goto N_QuestComp;
+ if (four_qset == 3) goto N_QuestStart;
+ mes "[Dassy]";
+ mes "Hello!";
+ close;
+N_QuestComp:
+ mes "[Dassy]";
+ mes "Yes! Now my pet will not starve!";
+ mes "Thank you so much!";
+ mes "Have this Treasure Token.";
+ set On_Quest,0;
+ set four_qset,0;
+ delitem 711,20;
+ set #Treasure_Token,#Treasure_Token+1;
+ close;
+N_QuestStart:
+ mes "[Dassy]";
+ mes "Hello person!!";
+ mes "You have come to help me? Yes, yes.";
+ mes " ";
+ mes "Ok I don't want to talk about it but I need you to fine me 20 Shoot's";
+ mes "Thank you!";
+ close;
+}
+//4-4;
+prt_gld.gat,157,99,6 script Czhore 752,{
+ if (four_qset == 4 && countitem(714) > 0) goto N_QuestComp;
+ if (four_qset == 4) goto N_QuestStart;
+ mes "[Czhore]";
+ mes "Hello friend";
+ mes "Have you come to check out one of these guild halls?";
+ close;
+N_QuestComp:
+ mes "[Czhore]";
+ mes "Thank god!";
+ mes " ";
+ mes "I'm so happy to see one of these Emperiums! Thank you "+strcharinfo(0)+".";
+ next;
+ mes "[Czhore]";
+ mes "Here have these 2 Treasure Tokens.";
+ mes "And some of my old treasure...";
+ monster "prt_gld.gat",155,99,"Old Man's Treasure",1324,1,"treasure";
+ set four_qset,0;
+ set On_Quest,0;
+ delitem 714,1;
+ set #Treasure_Token,#Treasure_Token+2;
+ close;
+N_QuestStart:
+ mes "[Czhore]";
+ mes "Hello friend";
+ mes "I know this may sound stupid but ever since I was a boy I have dreamed of having an Emperium...";
+ mes "As I know I look old, I have just never been able to find one, now that I am retired from the Treasure Hunter Guild there is no more action for me...";
+ mes " ";
+ mes "If you can get me one I shall reward you.";
+ close;
+}
+///////Job list 5///////
+//5-1;
+prt_maze01.gat,18,184,6 script Lithin 752,{
+ if (five_qset == 1 && countitem(1028) > 14) goto N_QuestComp;
+ if (five_qset == 1) goto N_QuestStart;
+ mes "[Lithin]";
+ mes "Well hello.";
+ mes "Welcome to the Forest Maze.";
+ close;
+N_QuestComp:
+ mes "[Lithin]";
+ mes "Oh thank you so much, but they will be back...";
+ next;
+ mes "Take these 2 Treasure Tokens";
+ set five_qset,0;
+ set On_Quest,0;
+ set #Treasure_Token,#Treasure_Token+2;
+ delitem 1028,15;
+ close;
+N_QuestStart:
+ mes "[Lithin]";
+ mes "Well hello.";
+ mes "Welcome to the Forest Maze, I have a task for you.";
+ mes " ";
+ mes "Ever heard of a moster called a Savage? It looks like a boar but it makes very annoying noices.";
+ mes "What I want you to do is bring me 15 Manes from the savages.";
+ close;
+}
+//5-2 goes to 6-2 using callfunc;
+moc_ruins.gat,75,167,6 script Lithin 87,{
+ if (five_qset == 2 && countitem(932) > 29) goto N_QuestComp;
+ if (five_qset == 2) goto N_QuestStart;
+ if (six_qset == 2) goto N_QuestStart2;
+ mes "[Strange Man]";
+ mes "...";
+ close;
+N_QuestComp:
+ mes "[Strange Man]";
+ mes "Much thanks I have for you.";
+ next;
+ mes "Take with you these 2 Treasure Token's.";
+ set #Treasure_Token,#Treasure_Token+2;
+ set five_qset,0;
+ set On_Quest,0;
+ delitem 932,30;
+ close;
+N_QuestStart:
+ mes "[Strange Man]";
+ mes "Must do for me you shall.Venture through the Pyramid.";
+ mes "When second floor you have reached,slay skeletons of evil.";
+ mes "Bring me back there bones you must.";
+ mes "It is 30 that I desire.";
+ close;
+N_QuestStart2:
+ callfunc "six_qset2";
+}
+//5-3;
+geffen.gat,57,130,6 script Blonde Girl 724,{
+ if (five_qset == 3 && countitem(744) > 0) goto N_QuestComp;
+ if (five_qset == 3) goto N_QuestStart;
+ mes "[Blonde Girl]";
+ mes "I wonder what happened to my flowers";
+ close;
+N_QuestComp:
+ mes "[Blonde Girl]";
+ mes "Oh are these my flower! To bad I don't want them anymore...";
+ mes " ";
+ mes "You can keep them is you want.";
+ next;
+ mes "[Blonde Girl]";
+ mes "Here take this Treasure Token as a reward.";
+ set five_qset,0;
+ set On_Quest,0;
+ set #Treasure_Token,#Treasure_Token+1;
+ close;
+N_QuestStart:
+ mes "[Blonde Girl]";
+ mes "Hello, did you bring me flowers!?!";
+ close;
+}
+//5-4;
+gef_tower.gat,49,27,6 script Wizard 735,{
+ if (five_qset == 4 && countitem(1059) > 49) goto N_QuestComp;
+ if (five_qset == 4) goto N_QuestStart;
+ mes "[Wizard]";
+ mes "Hello, have you seen my Whisper friend?";
+ close;
+N_QuestComp:
+ mes "[Wizard]";
+ mes "Thank you for helping me, I presume the worse.";
+ next;
+ mes "[Wizard]";
+ mes "Here take these 4 Treasure Tokens.";
+ set five_qset,0;
+ set On_Quest,0;
+ delitem 1059,50;
+ set #Treasure_Token,#Treasure_Token+4;
+ close;
+N_QuestStart:
+ mes "[Wizard]";
+ mes "Hello, the reason why I brought you here was because of a long time ago I made a friend, which happened to be a Whipser.";
+ mes "He told me that he was always bullied by the other ghosts down there and I havent seen him in a while.";
+ mes "Thinking of the worse case here, I want vengance!";
+ mes " ";
+ mes "Bring me 50 Fabrics!";
+ close;
+}
+///////Job list 6///////
+//6-1;
+moc_prydb1.gat,47,132,6 script Thief 48,{
+ if (six_qset == 1 && countitem(1083) > 0) goto N_QuestComp;
+ if (six_qset == 1) goto N_QuestStart;
+ mes "[Thief]";
+ mes "Welcome to the Thiefs Guild.";
+ close;
+N_QuestComp:
+ mes "[Thief]";
+ mes "Thank you for this delivery.";
+ next;
+ mes "[Thief]";
+ mes "Here take this Treasure Token as a reward.";
+ set six_qset,0;
+ delitem 1083,1;
+ set On_Quest,0;
+ set #Treasure_Token,#Treasure_Token+1;
+ close;
+N_QuestStart:
+ mes "[Thief]";
+ mes "Where's my delivery?";
+ close;
+}
+//6-2
+function script six_qset2 {
+ if (six_qset == 2 && countitem(930) > 29) goto N_QuestComp2;
+ mes "[Strange Man]";
+ mes "Another quest for you I have.";
+ mes "Futher into the pyramid you must go.";
+ mes "Fighting Mummys is future for you.";
+ mes " ";
+ mes "Bring back for me their wrappings you must.";
+ mes "It is 30 Rotten bandages I desire.";
+ close;
+N_QuestComp2:
+ mes "[Strange Man]";
+ mes "Much thanks for you that I have.";
+ next;
+ mes "[Strange Man]";
+ mes "Take with you these 3 tokens.";
+ set #Treasure_Token,#Treasure_Token+3;
+ delitem 930,30;
+ set On_Quest,0;
+ set six_qset,0;
+ close;
+}
+//6-3;
+xmas.gat,144,136,6 script Chirach 48,{
+ if (six_qset == 3 && countitem(1083) > 0) goto N_QuestComp;
+ if (six_qset == 3) goto N_QuestStart;
+ mes "[Chirach]";
+ mes "Welcome.";
+ close;
+N_QuestComp:
+ mes "[Chirach]";
+ mes "Thank you for this delivery.";
+ next;
+ mes "[Chirach]";
+ mes "Here take this Treasure Token as a reward.";
+ set six_qset,0;
+ delitem 1083,1;
+ set On_Quest,0;
+ set #Treasure_Token,#Treasure_Token+1;
+ close;
+N_QuestStart:
+ mes "[Chirach]";
+ mes "Where's my delivery?";
+ close;
+}
+//6-4;
+gef_tower.gat,52,87,6 script Wizard 735,{
+ if (six_qset == 4 && countitem(944) > 19) goto N_QuestComp;
+ if (six_qset == 4) goto N_QuestStart;
+ mes "[Zuuzuu]";
+ mes "Hello, welcome to geffen tower.";
+ close;
+N_QuestComp:
+ mes "[Wizard]";
+ mes "Thank you for helping me.";
+ next;
+ mes "Here take these 4 Treasure Tokens.";
+ set six_qset,0;
+ set On_Quest,0;
+ delitem 944,20;
+ set #Treasure_Token,#Treasure_Token+4;
+ next;
+ mes "[Zuuzuu]";
+ mes "Oh dear god!!!";
+ mes "One of those evil mosters has followed you up here, Kill it, Kill it!!!";
+ next;
+ monster "gef_tower.gat",42,89,"Evil Nightmare",1061,1,"nightsum";
+ close;
+N_QuestStart:
+ mes "[Zuuzuu]";
+ mes "Hello, the reason I sent for a young adventurer was because of the problems we are having under the tower.";
+ mes "There seem to be more ghosts day after day down there. What I need you to do is go down there and find these mosters we call Nightmares.";
+ mes " ";
+ mes "You must slay them and bring me 20 of there horse shoes.";
+ close;
+}
+///////Job list 7///////
+//7-1 goes to 8-1 using callfunc;
+prontera.gat,123,208,6 script Little Girl 717,{
+ if (seven_qset == 1 && countitem(531) > 4) goto N_QuestComp;
+ if (seven_qset == 1) goto N_QuestStart;
+ if (eight_qset == 1) goto N_QuestStart2;
+ mes "[Girl]";
+ mes "Hello mister "+strcharinfo(0)+".";
+ close;
+N_QuestComp:
+ mes "[Girl]";
+ mes "Thank you so much!";
+ next;
+ mes "[Girl]";
+ mes "Have these 1 Treasure Tokens.";
+ set seven_qset,0;
+ set On_Quest,0;
+ delitem 531,5;
+ set #Treasure_Token,#Treasure_Token+1;
+ close;
+N_QuestStart:
+ mes "[Girl]";
+ mes "Hi mister person. Can you get me some apple juice?";
+ mes "I want 5 of them.";
+ close;
+N_QuestStart2:
+ callfunc "eight_qset1";
+}
+//7-2;
+alberta.gat,101,84,6 script Charles 48,{
+ if (seven_qset == 2 && countitem(1082) > 0) goto N_QuestComp;
+ if (seven_qset == 2) goto N_QuestStart;
+ mes "[Charles]";
+ mes "Hello "+strcharinfo(0)+" welcome to Alberta.";
+ close;
+N_QuestComp:
+ mes "[Charles]";
+ mes "Thank you for this delivery.";
+ next;
+ mes "[Charles]";
+ mes "Here take this Treasure Token as a reward.";
+ set seven_qset,0;
+ delitem 1082,1;
+ set On_Quest,0;
+ set #Treasure_Token,#Treasure_Token+1;
+ close;
+N_QuestStart:
+ mes "[Charles]";
+ mes "So where is my package?";
+ close;
+}
+//7-3
+function script seven_qset-3 {
+ if (seven_qset == 3 && countitem(969) > 0) goto N_QuestComp2;
+ mes "[Sewer Managment]";
+ mes "Well there have been reports of a Golden Thief Bug running around the bottem on the Culvert";
+ mes " ";
+ mes "Bring me 1 Gold Bar from him.";
+ close;
+N_QuestComp2:
+ mes "[Sewer Managment]";
+ mes "Thank you for helping me.";
+ next;
+ mes "[Sewer Managment]";
+ mes "Here take these 4 Treasure Tokens.";
+ set seven_qset,0;
+ set On_Quest,0;
+ delitem 969,1;
+ set #Treasure_Token,#Treasure_Token+4;
+ close;
+}
+//7-4;
+alb2trea.gat,94,102,6 script Scarlet 725,{
+ if (seven_qset == 4 && countitem(1127) > 0) goto N_QuestComp;
+ if (seven_qset == 4) goto N_QuestStart;
+ mes "[Scarlet]";
+ mes "Sorry, busy.";
+ close;
+N_QuestComp:
+ mes "[Scarlet]";
+ mes "Thank you for helping me, I presume the worse.";
+ next;
+ mes "[Scarlet]";
+ mes "Here take these 4 Treasure Tokens.";
+ set seven_qset,0;
+ set On_Quest,0;
+ delitem 1127,1;
+ set #Treasure_Token,#Treasure_Token+4;
+ close;
+N_QuestStart:
+ mes "[Scarlet]";
+ mes "Good your here. Ok there are reports of an old captain named Drake abored this ship. Kill Him!";
+ mes " ";
+ mes "Bring me his Saber as proof!";
+ close;
+}
+///////Job list 8///////
+//8-1
+function script eight_qset1 {
+ if (eight_qset == 1 && countitem(532) > 4) goto N_QuestComp2;
+ mes "[Girl]";
+ mes "Hi mister person. Can you get me some Banana juice?";
+ mes "I want 5 of them.";
+ close;
+N_QuestComp2:
+ mes "[Girl]";
+ mes "Thank you so much!";
+ next;
+ mes "[Girl]";
+ mes "Have these 1 Treasure Tokens.";
+ set eight_qset,0;
+ set On_Quest,0;
+ delitem 532,5;
+ set #Treasure_Token,#Treasure_Token+1;
+ close;
+}
+//8-2;
+morocc.gat,165,55,6 script Klye 48,{
+ if (eight_qset == 2 && countitem(1081) > 0) goto N_QuestComp;
+ if (eight_qset == 2) goto N_QuestStart;
+ mes "[Klye]";
+ mes "Hello "+strcharinfo(0)+".";
+ close;
+N_QuestComp:
+ mes "[Klye]";
+ mes "Thank you for this delivery.";
+ next;
+ mes "[Klye]";
+ mes "Here take this Treasure Token as a reward.";
+ set eight_qset,0;
+ delitem 1081,1;
+ set On_Quest,0;
+ set #Treasure_Token,#Treasure_Token+1;
+ close;
+N_QuestStart:
+ mes "[Kyle]";
+ mes "So where's my Delivery";
+ close;
+
+}
+//8-3;
+prt_maze02.gat,103,86,6 script Zack 751,{
+ if (eight_qset == 3 && countitem(923) > 0) goto N_QuestComp;
+ if (eight_qset == 3) goto N_QuestStart;
+ mes "[Zack]";
+ mes "Hello, have you seen my Whisper friend?";
+ close;
+N_QuestComp:
+ mes "[Zack]";
+ mes "Thank you for helping me, I presume the worse.";
+ next;
+ mes "[Zack]";
+ mes "Here take these 5 Treasure Tokens.";
+ set eight_qset,0;
+ set On_Quest,0;
+ delitem 923,1;
+ set #Treasure_Token,#Treasure_Token+5;
+ close;
+N_QuestStart:
+ mes "[Zack]";
+ mes "Hello,the reason why I brought you here was because of a very strange monster known as Baphomet.";
+ mes "People say that Baphomet guilds the gate to the under-world but I don't belive them, Kill Baphomet!";
+ mes " ";
+ mes "Bring me his Evil Horn!";
+ close;
+}
+//8-4;
+payon.gat,136,129,6 script Flower 703,{
+ if (eight_qset == 4 && countitem(746) > 9) goto N_QuestComp;
+ if (eight_qset == 4) goto N_QuestStart;
+ mes "[Flower]";
+ mes "Sorry I'm waiting for someone. You will have to come back later.";
+ close;
+N_QuestComp:
+ mes "[Flower]";
+ mes "Thank you for helping me, I presume the worse.";
+ next;
+ mes "[Flower]";
+ mes "Here take these 2 Treasure Tokens.";
+ set eight_qset,0;
+ set On_Quest,0;
+ delitem 746,10;
+ set #Treasure_Token,#Treasure_Token+2;
+ close;
+N_QuestStart:
+ mes "[Flower]";
+ mes "Help, help I have lost my Beads!! My brother Bush is going to kill me please help";
+ mes " ";
+ mes "Bring me 10 Glass Beads!";
+ close;
+}
+///////Job list 9///////
+//9-1;
+geffen_in.gat,168,124,6 script Mage 48,{
+ if (nine_qset == 1 && countitem(1082) > 0) goto N_QuestComp;
+ if (nine_qset == 1) goto N_QuestStart;
+ mes "[Mage]";
+ mes "Hello "+strcharinfo(0)+" welcome to the Mage Guild.";
+ close;
+N_QuestComp:
+ mes "[Mage]";
+ mes "Thank you for this delivery. Sorry about the smell, Its a box of Toad Tounges";
+ next;
+ mes "[Mage]";
+ mes "Here take this Treasure Token as a reward.";
+ set nine_qset,0;
+ delitem 1082,1;
+ set On_Quest,0;
+ set #Treasure_Token,#Treasure_Token+1;
+ close;
+N_QuestStart:
+ mes "[Mage]";
+ mes "Hello "+strcharinfo(0)+", Where is my box of Toad Tounges?.";
+ close;
+}
+//9-2;
+pay_arche.gat,98,74,6 script School Girl 703,{
+ if (nine_qset == 2 && countitem(1020) > 19) goto N_QuestComp;
+ if (nine_qset == 2) goto N_QuestStart;
+ mes "[School Girl]";
+ mes "Sorry I'm waiting for someone, you will have to come back later";
+ close;
+N_QuestComp:
+ mes "[School Girl]";
+ mes "Thank you for helping me.";
+ next;
+ mes "[School Girl]";
+ mes "Here take these 4 Treasure Tokens.";
+ set nine_qset,0;
+ set On_Quest,0;
+ delitem 1020,20;
+ set #Treasure_Token,#Treasure_Token+4;
+ close;
+N_QuestStart:
+ mes "[School Girl]";
+ mes "Help, Well what we know about Payon is that a while ago there was a freak fire that burnt down the old school.";
+ next;
+ mes "[School Girl]";
+ mes "The strange thing about what happened was that the children inside did not seem to die from the flames. They have taken over the entire 3rd floor of Payon Cave.";
+ mes " ";
+ mes "Bring me 20 Black Hair!";
+ close;
+}
+//9-3
+payon_in02.gat,19,33,6 script Jack 740,{
+ if (nine_qset == 3 && countitem(1022) > 0) goto N_QuestComp;
+ if (nine_qset == 3) goto N_QuestStart;
+ if (nine_qset == 4) goto N_QuestStart2;
+ mes "[Jack]";
+ mes "Sorry I'm waiting for someone, you will have to come back later";
+ close;
+N_QuestComp:
+ mes "[Jack]";
+ mes "Thank you for helping me.";
+ next;
+ mes "[Jack]";
+ mes "Here take these 4 Treasure Tokens.";
+ set nine_qset,0;
+ set On_Quest,0;
+ delitem 1022,1;
+ set #Treasure_Token,#Treasure_Token+4;
+ close;
+N_QuestStart:
+ mes "[Jack]";
+ mes "Well I don't know much about this, it has to do with the deepest reagions of Payon Cave. We don't know much because no one ever seems to make it back alive. We suspect a monster we call the Moonlight Flower";
+ mes " ";
+ mes "Bring me back 1 Nine Tales!";
+ close;
+N_QuestStart2:
+//9-4
+ if (nine_qset == 4 && countitem(901) > 39) goto N_QuestComp2;
+ mes "[Jack]";
+ mes "Hello, we need you to investigate some crap in the 3rd level of payon.";
+ mes " ";
+ mes "Bring me back 40 Daenggie's.";
+ close;
+N_QuestComp2:
+ mes "[Jack]";
+ mes "Thank you for helping me.";
+ next;
+ mes "[Jack]";
+ mes "Here take these 3 Treasure Tokens.";
+ set nine_qset,0;
+ set On_Quest,0;
+ delitem 901,40;
+ set #Treasure_Token,#Treasure_Token+3;
+ close;
+}
+///////Job list 10///////
+//10-1
+morocc.gat,193,51,6 script Kreg 48,{
+ if (ten_qset == 1 && countitem(1082) > 0) goto N_QuestComp;
+ if (ten_qset == 1) goto N_QuestStart;
+ mes "[Kreg]";
+ mes "Hello "+strcharinfo(0)+" welcome to Morroc.";
+ close;
+N_QuestComp:
+ mes "[Kreg]";
+ mes "Thank you for this delivery.";
+ next;
+ mes "[Kreg]";
+ mes "Here take this Treasure Token as a reward.";
+ set ten_qset,0;
+ delitem 1082,1;
+ set On_Quest,0;
+ set #Treasure_Token,#Treasure_Token+1;
+ close;
+N_QuestStart:
+ mes "[Kreg]";
+ mes "So where's my Delivery";
+ close;
+}
+//10-2;
+pay_fild10.gat,145,252,6 script Man 122,{
+ if (ten_qset == 2 && countitem(1029) > 0) goto N_QuestComp;
+ if (ten_qset == 2) goto N_QuestStart;
+ mes "[Man]";
+ mes "Sorry I'm waiting for someone, you will have to come back later";
+ close;
+N_QuestComp:
+ mes "[Man]";
+ mes "Thank you for helping me.";
+ next;
+ mes "[Man]";
+ mes "Here take these 4 Treasure Tokens.";
+ set ten_qset,0;
+ set On_Quest,0;
+ delitem 1029,1;
+ set #Treasure_Token,#Treasure_Token+4;
+ close;
+N_QuestStart:
+ mes "[Man]";
+ mes "Tony the Tiger is on Crack! He must be stoped, KILL HIM!";
+ mes " ";
+ mes "Bring me back 1 Tiger's_Skin!";
+ close;
+}
+//10-3;
+moc_fild04.gat,193,51,6 script Caral 119,{
+ if (ten_qset == 3 && countitem(1015) > 0) goto N_QuestComp;
+ if (ten_qset == 3) goto N_QuestStart;
+ mes "[Caral]";
+ mes "Sorry I'm waiting for someone, you will have to come back later.";
+ close;
+N_QuestComp:
+ mes "[Caral]";
+ mes "Thank you for helping me.";
+ next;
+ mes "[Caral]";
+ mes "Here take these 4 Treasure Tokens.";
+ set ten_qset,0;
+ set On_Quest,0;
+ delitem 1015,1;
+ set #Treasure_Token,#Treasure_Token+4;
+ close;
+N_QuestStart:
+ mes "[Caral]";
+ mes "Phreeoni the Pink Fluff is terrorizing little novices! He must be stoped, KILL HIM!";
+ mes " ";
+ mes "Bring me back 1 Tounge!";
+ close;
+}
+//10-4
+moc_fild15.gat,250,251,6 script Jeni 727,{
+ if (ten_qset == 4 && countitem(1096) > 0) goto N_QuestComp;
+ if (ten_qset == 4) goto N_QuestStart;
+ mes "[Jeni]";
+ mes "Sorry I'm waiting for someone, You will have to come back later";
+ close;
+N_QuestComp:
+ mes "[Jeni]";
+ mes "Thank you for helping me.";
+ next;
+ mes "[Jeni]";
+ mes "Here take these 3 Treasure Tokens.";
+ set ten_qset,0;
+ set On_Quest,0;
+ delitem 1096,1;
+ set #Treasure_Token,#Treasure_Token+3;
+ close;
+N_QuestStart:
+ mes "[Jeni]";
+ mes "This half naked freak need an army to take down, now its your job,good luck.";
+ mes " ";
+ mes "Bring me back 1 Round Shell!";
+ close;
+}
diff --git a/npc/custom/quests/thq/THQS_TTShop.txt b/npc/custom/quests/thq/THQS_TTShop.txt
new file mode 100644
index 000000000..5a6b2a70e
--- /dev/null
+++ b/npc/custom/quests/thq/THQS_TTShop.txt
@@ -0,0 +1,523 @@
+//===== Athena Script =====================================
+//= Treasure Hunter Script
+//===== Converted By ======================================
+//= Fredzilla
+//= Original
+///////////////////////////////////////////////////////////
+// Treasure Hunter Quests //
+// By: Ezekial //
+// for the use on nRO run by Newbe5 //
+// revised By Warlock //
+///////////////////////////////////////////////////////////
+//===== Version ===========================================
+//= 1.1
+//===== Compatible With ===================================
+//= eAthena 1.0
+//===== Description =======================================
+//= Start for Treasure hunter quests
+//===== Comments ==========================================
+//= Event_THQS - Used to check if you have already registerd
+//= #Treasure_Token - used to keep track of tokens
+//= v1.0 - Straight conversion of Aegis NPC file
+//= v1.1 - balanced some prices, fixed 1 missing label
+//= removed Executioner&Mysteltain swords [Lupus]
+//////////////////////////////////////////////////////////
+
+prt_in.gat,159,172,0 warp thqwrp 3,3,yuno_in01.gat,123,155
+
+prt_in.gat,164,174,1 script Treasure Hunter's Shop 65,{
+ mes "[Ash]";
+ mes "Ahh, "+strcharinfo(0)+"! Welcome to the Offical Treasure Hunter's Guild Shop.";
+ mes "You currently have ^FF0000"+#Treasure_Token+"^000000 treasure tokens!!!";
+ next;
+ menu "How does this place work?",-,"What do you have in stock?",N_Shop,"Nevermind",N_NVM;
+ mes "[Ash]";
+ mes "Well you see here you can exchange your treasure hunter tokens for zeny or rare weapons forged by our blacksmiths.";
+ mes " ";
+ mes "Everything has its own price value and the only way you can get the tokens is by completing quests assigned to you,the system normally works like this.";
+ mes " ";
+ mes "The harder the mission the more Tokens you will earn. All red quests are worth 4-8 Tokens, and the rest are worth 1-5.";
+ mes " ";
+ mes "Hope that solves your problem and questions.";
+ close;
+N_NVM:
+ close;
+ end;
+N_Shop:
+//This is when it gets hard :)
+ mes "[Ash]";
+ mes "Ok here is our Big list of goods.";
+ mes " ";
+ mes "(Note T stands for a Treasure Token.)";
+ next;
+ menu "Trade for Zeny",-,"Trade for Weapons",N_BuyWeps,"Trade for Cards",N_BuyCards,"Nevermind",N_NVM;
+ mes "[Ash]";
+ mes "This is what we have to offer.";
+ next;
+ menu "1000z - 1T",-,"10000z - 10T",N_10T,"100000z - 100T",N_100T,"Nevermind",N_NVM;
+ if (#Treasure_Token > 0) goto N_GetZeny1k;
+ mes "You don't have enough tokens!";
+ close;
+N_GetZeny1k:
+ set #Treasure_Token,#Treasure_Token-1;
+ set zeny,zeny+1000;
+ close;
+N_10T:
+ if (#Treasure_Token > 9) goto N_GetZeny10k;
+ mes "You don't have enough tokens!";
+ close;
+N_GetZeny10k:
+ set #Treasure_Token,#Treasure_Token-10;
+ set zeny,zeny+10000;
+ close;
+N_100T:
+ if (#Treasure_Token > 99) goto N_GetZeny100k;
+ mes "You don't have enough tokens!";
+ close;
+N_GetZeny100k:
+ set #Treasure_Token,#Treasure_Token-100;
+ set zeny,zeny+100000;
+ close;
+
+N_BuyWeps:
+ mes "[Ash]";
+ mes "This is what we have to offer.";
+ next;
+ menu "Axe's",-,"1 Handed Swords",N_1HandSword,"2 Handed Swords",N_2HandSword,"Book's",N_Book,"Bow's",N_Bow,"Katar's",N_Katar,"Knuckle's",N_Knuckle,"Mace's",N_Mace,"Whips",N_Whip,"Wands",N_Wand,"Nevermind",N_NVM;
+
+ mes "[Ash]";
+ mes "This is what we have to offer.";
+ next;
+ menu "Sabbath - 160T",-,"Slaughter - 160T",N_Slau,"Tomahawk - 180T",N_Toma,"Great Axe - 200T",N_GreatA,"Guillotine - 200T",N_Guill,"Nevermind",N_NVM;
+
+ if (#Treasure_Token < 160) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-160;
+ getitem 1365,1;
+ logmes "Treasure Token: Bought a Sabbath";
+ close;
+N_Slau:
+ if (#Treasure_Token < 160) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-160;
+ getitem 1367,1;
+ logmes "Treasure Token: Bought a Slaughter";
+ close;
+N_Toma:
+ if (#Treasure_Token < 180) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-180;
+ getitem 1368,1;
+ logmes "Treasure Token: Bought a Tomahawk";
+ close;
+N_GreatA:
+ if (#Treasure_Token < 200) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-200;
+ getitem 1364,1;
+ logmes "Treasure Token: Bought a Great Axe";
+ close;
+N_Guill:
+ if (#Treasure_Token < 200) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-200;
+ getitem 1369,1;
+ logmes "Treasure Token: Bought a Guillotine";
+ close;
+N_NeedToken:
+ mes "[Ash]";
+ mes "You don't have enough tokens!";
+ close;
+
+
+N_1HandSword:
+ mes "[Ash]";
+ mes "This is what we have to offer.";
+ next;
+ menu "Edge - 130T",-,"Solar Sword - 150T",N_SolarS,"Caesar's Sword - 170T",N_CaesarS,"Nagan - 180T",N_Nagan,"Immaterial Sword - 200T",N_ImmatS,"Excalibur - 200T",N_Excal,"Byeollungum - 240T",N_Byeoll,"Talefing - 320T",N_Talef,"Nevermind",N_NVM;
+
+ if (#Treasure_Token < 130) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-130;
+ getitem 1132,1;
+ logmes "Treasure Token: Bought a Edge";
+ close;
+N_SolarS:
+ if (#Treasure_Token < 150) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-150;
+ logmes "Treasure Token: Bought a Solar Sword";
+ getitem 1136,1;
+ close;
+N_CaesarS:
+ if (#Treasure_Token < 170) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-170;
+ logmes "Treasure Token: Bought a Caesars Sword";
+ getitem 1134,1;
+ close;
+N_Nagan:
+ if (#Treasure_Token < 180) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-180;
+ logmes "Treasure Token: Bought a Nagan";
+ getitem 1130,1;
+ close;
+N_ImmatS:
+ if (#Treasure_Token < 200) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-200;
+ logmes "Treasure Token: Bought a Immaterial Sword";
+ getitem 1141,1;
+ close;
+N_Excal:
+ if (#Treasure_Token < 200) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-200;
+ logmes "Treasure Token: Bought a Excalibur";
+ getitem 1137,1;
+ close;
+N_Byeoll:
+ if (#Treasure_Token < 240) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-240;
+ logmes "Treasure Token: Bought a Byeollungum";
+ getitem 1140,1;
+ close;
+N_Talef:
+ if (#Treasure_Token < 320) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-320;
+ logmes "Treasure Token: Bought a Talefing";
+ getitem 1139,1;
+ close;
+
+
+N_2HandSword:
+ mes "[Ash]";
+ mes "This is what we have to offer.";
+ next;
+ menu "Dragon Slayer - 140T",-,"Schweizersabel - 200T",N_Schwe,"Katzbalger - 300T",N_Katzb,"Muramasa - 300T",N_Murama,"Masamune - 400T",N_Masamu,"Balmung - 2000T",N_Balmu,"Nevermind",N_NVM;
+
+ if (#Treasure_Token < 140) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-140;
+ logmes "Treasure Token: Bought a Dragon Slayer";
+ getitem 1166,1;
+ close;
+N_Schwe:
+ if (#Treasure_Token < 200) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-200;
+ logmes "Treasure Token: Bought a Schweizersabel";
+ getitem 1167,1;
+ close;
+N_Katzb:
+ if (#Treasure_Token < 300) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-300;
+ logmes "Treasure Token: Bought a Katzbalger";
+ getitem 1170,1;
+ close;
+N_Murama:
+ if (#Treasure_Token < 300) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-300;
+ logmes "Treasure Token: Bought a Muramasa";
+ getitem 1164,1;
+ close;
+N_Masamu:
+ if (#Treasure_Token < 400) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-400;
+ logmes "Treasure Token: Bought a Masamune";
+ getitem 1165,1;
+ close;
+N_Balmu:
+ if (#Treasure_Token < 2000) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-2000;
+ logmes "Treasure Token: Bought a Balmung";
+ getitem 1161,1;
+ close;
+
+
+N_Book:
+ mes "[Ash]";
+ mes "This is what we have to offer.";
+ next;
+ menu "Book of the Burning Sun - 80T",-,"Book of the Rough Seas - 80T",N_RoughSea,"Book of the Dry Winds - 80T",N_DryWinds,"Book of the Ripe Earth - 80T",N_RipeEarth,"Book of the Revelations - 80T",N_Revela,"Bible - 90T",N_Bible,"Tablet - 120T",N_Tablet,"Nevermind",N_NVM;
+
+ if (#Treasure_Token < 80) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-80;
+ logmes "Treasure Token: Bought a Book of the Burning Sun";
+ getitem 1555,1;
+ close;
+N_RoughSea:
+ if (#Treasure_Token < 80) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-80;
+ logmes "Treasure Token: Bought a Book of the Rough Seas";
+ getitem 1553,1;
+ close;
+N_DryWinds:
+ if (#Treasure_Token < 80) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-80;
+ logmes "Treasure Token: Bought a Book of the Dry Winds";
+ getitem 1556,1;
+ close;
+N_RipeEarth:
+ if (#Treasure_Token < 80) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-80;
+ logmes "Treasure Token: Bought a Book of the Ripe Earth";
+ getitem 1554,1;
+ close;
+N_Revela:
+ if (#Treasure_Token < 80) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-80;
+ logmes "Treasure Token: Bought a Book of the Revelations";
+ getitem 1557,1;
+ close;
+N_Bible:
+ if (#Treasure_Token < 90) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-90;
+ logmes "Treasure Token: Bought a Bible";
+ getitem 1551,1;
+ close;
+N_Tablet:
+ if (#Treasure_Token < 120) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-120;
+ logmes "Treasure Token: Bought a Tablet";
+ getitem 1552,1;
+ close;
+
+N_Bow:
+ mes "[Ash]";
+ mes "This is what we have to offer.";
+ next;
+ menu "Rudra's Bow - 150T",-,"Roguemaster's Bow - 150T",N_Rogue,"Nevermind",N_NVM;
+
+ if (#Treasure_Token < 150) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-150;
+ logmes "Treasure Token: Bought a Rudra Bow";
+ getitem 1720,1;
+ close;
+N_Rogue:
+ if (#Treasure_Token < 150) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-150;
+ logmes "Treasure Token: Bought a Roguemaster Bow";
+ getitem 1719,1;
+ close;
+
+N_Katar:
+ mes "[Ash]";
+ mes "This is what we have to offer.";
+ next;
+ menu "Katar of the Blazing Rage - 70T",-,"Katar of the Cold Icicle - 70T",N_ColdIce,"Katar of the Piercing Wind - 70T",N_PiercWind,"Katar of the Dusty Thornbush - 70T",N_DustyT,"Sharpened Legbone of Ghoul - 125T",N_Legbone,"Infiltrator - 150T",N_Infiltra,"Nevermind",N_NVM;
+
+ if (#Treasure_Token < 70) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-70;
+ logmes "Treasure Token: Bought a Katar of the Blazing Rage";
+ getitem 1258,1;
+ close;
+N_ColdIce:
+ if (#Treasure_Token < 70) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-70;
+ logmes "Treasure Token: Bought a Katar of the Cold Icicle";
+ getitem 1256,1;
+ close;
+N_PiercWind:
+ if (#Treasure_Token < 70) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-70;
+ logmes "Treasure Token: Bought a Katar of the Piercing Wind";
+ getitem 1259,1;
+ close;
+N_DustyT:
+ if (#Treasure_Token < 70) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-70;
+ logmes "Treasure Token: Bought a Katar of the Dusty Thornbush";
+ getitem 1257,1;
+ close;
+N_Legbone:
+ if (#Treasure_Token < 125) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-125;
+ logmes "Treasure Token: Bought a Sharpened Legbone of Ghoul";
+ getitem 1260,1;
+ close;
+N_Infiltra:
+ if (#Treasure_Token < 150) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-150;
+ logmes "Treasure Token: Bought a Infiltrator";
+ getitem 1261,1;
+ close;
+
+N_Knuckle:
+ mes "[Ash]";
+ mes "This is what we have to offer.";
+ next;
+ menu "Kaiser Knuckle - 75T",-,"Berserk - 75T",N_Berserk,"Nevermind",N_NVM;
+
+ if (#Treasure_Token < 75) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-75;
+ logmes "Treasure Token: Bought a Kaiser Knuckle";
+ getitem 1813,1;
+ close;
+N_Berserk:
+ if (#Treasure_Token < 75) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-75;
+ logmes "Treasure Token: Bought a Berserk";
+ getitem 1814,1;
+ close;
+
+N_Mace:
+ mes "[Ash]";
+ mes "This is what we have to offer.";
+ next;
+ menu "Spike - 65T",-,"Slash - 90T",N_Slash,"Grand Cross - 100T",N_GrandC,"Quadrille - 110T",N_Quadr,"Mjolnir - 1000T",N_MJ,"Nevermind",N_NVM;
+
+ if (#Treasure_Token < 65) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-65;
+ logmes "Treasure Token: Bought a Spike";
+ getitem 1523,1;
+ close;
+N_Slash:
+ if (#Treasure_Token < 90) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-90;
+ logmes "Treasure Token: Bought a Slash";
+ getitem 1526,1;
+ close;
+N_GrandC:
+ if (#Treasure_Token < 100) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-100;
+ logmes "Treasure Token: Bought a Grand Cross";
+ getitem 1528,1;
+ close;
+N_Quadr:
+ if (#Treasure_Token < 110) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-110;
+ logmes "Treasure Token: Bought a Quadrille";
+ getitem 1527,1;
+ close;
+N_MJ:
+ if (#Treasure_Token < 1000) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-1000;
+ logmes "Treasure Token: Bought a Mjolnir";
+ getitem 1530,1;
+ close;
+
+N_Whip:
+ mes "[Ash]";
+ mes "This is what we have to offer.";
+ next;
+ menu "Rapture Rose - 50T",-,"Chemeti - 65T",N_Chemeti,"Nevermind",N_NVM;
+
+ if (#Treasure_Token < 50) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-50;
+ logmes "Treasure Token: Bought a Rapture Rose";
+ getitem 1963,1;
+ close;
+N_Chemeti:
+ if (#Treasure_Token < 65) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-65;
+ logmes "Treasure Token: Bought a Chemeti";
+ getitem 1964,1;
+ close;
+
+N_Wand:
+ mes "[Ash]";
+ mes "This is what we have to offer.";
+ next;
+ menu "Mighty Staff - 90T",-,"Wizardry Staff - 150T",N_Wizardry,"Bone Wand - 110T",N_BoneW,"Staff of Soul - 120T",N_SOSoul,"Nevermind",N_NVM;
+
+ if (#Treasure_Token < 90) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-90;
+ logmes "Treasure Token: Bought a Mighty Staff";
+ getitem 1613,1;//Items: Mighty_Staff,
+ close;
+N_Wizardry:
+ if (#Treasure_Token < 150) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-150;
+ logmes "Treasure Token: Bought a Wizardry Staff";
+ getitem 1473,1;//Items: Wizardy_Staff,
+ close;
+N_BoneW:
+ if (#Treasure_Token < 110) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-110;
+ logmes "Treasure Token: Bought a Bone Wand";
+ getitem 1615,1;//Items: Bone_Wand,
+ close;
+N_SOSoul:
+ if (#Treasure_Token < 120) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-120;
+ logmes "Treasure Token: Bought a Staff of Soul";
+ getitem 1472,1;//Items: Staff_of_Soul,
+ close;
+
+N_BuyCards:
+ mes "[Ash]";
+ mes "This is what we have to offer. All Cards are 300T";
+ next;
+ menu "Poring Card - 2T",-,"Pasana Card - 420T",N_CPasana,"Dokebi Card - 420T",N_CDok,"Swordfish Card - 420T",N_CSFish,
+ "Sandman Card - 420T",N_CSMan,"Drainliar Card - 360T",N_CDrain,"Kaho Card - 360T",N_CKaho,"Mandragora Card - 360T",N_CMand,
+ "Vadon Card - 360T",N_CVadon,"Mummy Card - 540T",N_CMummy,"Zenorc Card - 240T",N_CZeno,"Condor Card - 240T",N_CCond,
+ "Zombie Card - 210T",N_CZomb,"Nevermind",N_NVM;
+
+ if (#Treasure_Token < 2) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-2;
+ logmes "Treasure Token: Bought a Poring Card";
+ getitem 4001,1;//Items: Poring_Card,
+ close;
+
+N_CPasana:
+ if (#Treasure_Token < 420) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-420;
+ logmes "Treasure Token: Bought a Pasana Card";
+ getitem 4099,1;//Items: Pasana_Card,
+ close;
+N_CDok:
+ if (#Treasure_Token < 420) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-420;
+ logmes "Treasure Token: Bought a Dokebi Card";
+ getitem 4098,1;//Items: Dokebi_Card,
+ close;
+N_CSFish:
+ if (#Treasure_Token < 420) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-420;
+ logmes "Treasure Token: Bought a Swordfish Card";
+ getitem 4089,1;//Items: Sword_Fish_Card,
+ close;
+N_CSMan:
+ if (#Treasure_Token < 420) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-420;
+ logmes "Treasure Token: Bought a Sandman Card";
+ getitem 4101,1;//Items: Sand_Man_Card,
+ close;
+N_CDrain:
+ if (#Treasure_Token < 360) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-360;
+ logmes "Treasure Token: Bought a Drainliar Card";
+ getitem 4069,1;//Items: Drainliar_Card,
+ close;
+N_CKaho:
+ if (#Treasure_Token < 360) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-360;
+ logmes "Treasure Token: Bought a Kaho Card";
+ getitem 4065,1;//Items: Kaho_Card,
+ close;
+N_CMand:
+ if (#Treasure_Token < 360) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-360;
+ logmes "Treasure Token: Bought a Mandragora Card";
+ getitem 4030,1;//Items: Mandragora_Card,
+ close;
+N_CVadon:
+ if (#Treasure_Token < 360) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-360;
+ logmes "Treasure Token: Bought a Vadon Card";
+ getitem 4049,1;//Items: Vadon_Card,
+ close;
+N_CMummy:
+ if (#Treasure_Token < 540) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-540;
+ logmes "Treasure Token: Bought a Mummy Card";
+ getitem 4106,1;//Items: Mummy_Card,
+ close;
+N_CZeno:
+ if (#Treasure_Token < 240) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-240;
+ logmes "Treasure Token: Bought a Zenorc Card";
+ getitem 4096,1;//Items: Zenorc_Card,
+ close;
+N_CCond:
+ if (#Treasure_Token < 240) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-240;
+ logmes "Treasure Token: Bought a Condor Card";
+ getitem 4015,1;//Items: Condor_Card,
+ close;
+N_CZomb:
+ if (#Treasure_Token < 210) goto N_NeedToken;
+ set #Treasure_Token,#Treasure_Token-210;
+ logmes "Treasure Token: Bought a Zombie Card";
+ getitem 4038,1;//Items: Zombie_Card,
+ close;
+}
diff --git a/npc/custom/quests/valhallen.txt b/npc/custom/quests/valhallen.txt
new file mode 100644
index 000000000..911888fe5
--- /dev/null
+++ b/npc/custom/quests/valhallen.txt
@@ -0,0 +1,198 @@
+//===== eAthena Script =======================================
+//= Valhallen items Quests NPC
+//===== By: ==================================================
+//= Avaji
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= eAthena 7.15 +
+//===== Description: =========================================
+//= All-in-one: Mjollnir,Sleipnir,Brisingammen,Gleipnir,Megingjard
+//===== Additional Comments: =================================
+//= Custom quest, ingredients based on official RO FAQ
+//============================================================
+
+prontera.gat,147,171,5 script Lenneth 811,{
+ mes "[Lenneth]";
+ mes "I come from Valhalla to aid you.";
+ mes "I can transmute for you many of the Valhallen items.";
+ mes "Although they require many rare elements to make.";
+ next;
+ mes "[Lenneth]";
+ mes "What would you like?";
+ next;
+ menu "Mjollnir",-,"Sleipnir",L_SLE,"Brisingammen",L_BRI,"Gleipnir",L_GLE,"Megingjard",L_MEG;
+
+ mes "[Lenneth]";
+ mes "^3355FFMjollnir^000000 is the mighty Hammer of Thor.";
+ mes "The items I need to transmute 2 ^3355FFSpanners^000000 into ^3355FFMjollnir^000000 are as follows:";
+ mes "20 ^3355FFOridecon^000000 5 ^3355FFElunium^000000 and 40 ^3355FFGold^000000";
+ mes "I also need the following essences:";
+ mes "2 ^3355FFThor's Guntlet^000000";
+ mes "4 ^3355FFIron Maiden^000000";
+ mes "5 ^3355FFWrath of Valkyrie^000000";
+ mes "5 ^3355FFBreath of Soul^000000";
+ mes "5 ^3355FFOmen of tempest^000000";
+ next;
+ mes "[Lenneth]";
+ mes "Do you desire ^3355FFMjollnir^000000?";
+ next;
+ menu "Yes",-,"No",L_OUT;
+
+ if(countitem(984) < 20 || countitem(985) < 5 || countitem(969) < 40 || countitem(1531) < 2 || countitem(7089) < 5
+ || countitem(7074) < 2 || countitem(7075) < 4 || countitem(7078) < 5 || countitem(7087) < 5) goto L_NOTENOUGH;
+
+ delitem 984,20;
+ delitem 985,5;
+ delitem 969,40;
+ delitem 1531,2;
+ delitem 7074,2;
+ delitem 7075,4;
+ delitem 7078,5;
+ delitem 7087,5;
+ delitem 7089,5;
+
+ getitem 1530,1;
+
+ mes "[Lenneth]";
+ mes "Here is your ^3355FFMjollnir^000000, may it serve you well.";
+ close;
+L_SLE:
+
+ mes "[Lenneth]";
+ mes "^3355FFSleipnir^000000 are boots made after Odin's War Horse.";
+ mes "To be able to transmute 2 ^3355FFBoots^000000 into ^3355FFSleipnir^000000 I will need:";
+ mes "1 ^3355FFOridecon^000000 10 ^3355FFElunium^000000 and 20 ^3355FFGold^000000";
+ mes "I also need the following essences:";
+ mes "3 ^3355FFWheel of the Unknown^000000";
+ mes "5 ^3355FFFeather of Angel^000000";
+ mes "3 ^3355FFSprirt of Fish^000000";
+ mes "3 ^3355FFEmblem of the Sun God^000000";
+ next;
+ mes "[Lenneth]";
+ mes "Do you desire ^3355FFSleipnir^000000?";
+ next;
+ menu "Yes",-,"No",L_OUT;
+
+ if(countitem(969) < 20 || countitem(985) < 10 || countitem(984) < 1 || countitem(2406) < 2 || countitem(7076) < 3
+ || countitem(7079) < 5 || countitem(7083) < 3 || countitem(7086) < 3) goto L_NOTENOUGH;
+
+ delitem 969,20;
+ delitem 985,10;
+ delitem 984,1;
+ delitem 2406,2;
+ delitem 7076,3;
+ delitem 7079,5;
+ delitem 7083,3;
+ delitem 7086,3;
+
+ getitem 2410,1;
+
+ mes "[Lenneth]";
+ mes "Here is your ^3355FFSleipnir^000000, may they help you.";
+ close;
+L_BRI:
+
+ mes "[Lenneth]";
+ mes "^3355FFBrisingammen^000000 is the magical Necklace of Freyja, goddess of Beauty.";
+ mes "The items I need to transmute a ^3355FFNecklace^000000 into ^3355FFBrisingammen^000000 are as follows:";
+ mes "2 ^3355FFSapphire^000000 3 ^3355FFPearl^000000 10 ^3355FFOpal^000000";
+ mes "5 ^3355FFRuby^000000 and 20 ^3355FFGold^000000";
+ mes "I also need the following essences:";
+ mes "4 ^3355FFFreya's Jewel^000000";
+ mes "4 ^3355FFSilver Ornament^000000";
+ mes "3 ^3355FFSnow Crystal^000000";
+ mes "3 ^3355FFQuiet Wave^000000";
+ mes "3 ^3355FFDrifting Air^000000";
+ next;
+ mes "[Lenneth]";
+ mes "Do you desire ^3355FFBrisingammen^000000?";
+ next;
+ menu "Yes",-,"No",L_OUT;
+
+ if(countitem(969) < 20 || countitem(723) < 5 || countitem(727) < 10 || countitem(722) < 3 || countitem(726) < 2
+ || countitem(7090) < 3 || countitem(7088) < 3 || countitem(7077) < 4 || countitem(7073) < 4 || countitem(2603) < 1
+ || countitem(7092) < 3) goto L_NOTENOUGH;
+
+ delitem 726,2;
+ delitem 722,3;
+ delitem 727,10;
+ delitem 723,5;
+ delitem 969,20;
+ delitem 2603,1;
+ delitem 7073,4;
+ delitem 7077,4;
+ delitem 7088,3;
+ delitem 7090,3;
+ delitem 7092,3;
+
+ getitem 2630,1;
+
+ mes "[Lenneth]";
+ mes "Here is ^3355FFBrisingammen^000000, may it serve you well.";
+ close;
+L_GLE:
+
+ mes "[Lenneth]";
+ mes "The ^3355FFGleipnir^000000 is a light yet strong rope required to make ^3355FFMegingjard^000000";
+ mes "I will need the following essences to transmute ^3355FFGleipnir^000000:";
+ mes "4 ^3355FFTread of Cat^000000";
+ mes "5 ^3355FFWoman's Moustache^000000";
+ mes "4 ^3355FFStone Fragment^000000";
+ mes "3 ^3355FFSaliva of Bird^000000";
+ mes "3 ^3355FFSinew of Bear^000000";
+ next;
+ mes "[Lenneth]";
+ mes "Do you desire ^3355FFGleipnir^000000?";
+ next;
+ menu "Yes",-,"No",L_OUT;
+
+ if(countitem(7085) < 3 || countitem(7084) < 3 || countitem(7082) < 4 || countitem(7081) < 5 || countitem(7080) < 4) goto L_NOTENOUGH;
+
+ delitem 7080,4;
+ delitem 7081,5;
+ delitem 7082,4;
+ delitem 7084,3;
+ delitem 7085,3;
+
+ getitem 7058,1;
+
+ mes "[Lenneth]";
+ mes "Here is your ^3355FFGleipnir^000000.";
+ close;
+L_MEG:
+
+ mes "[Lenneth]";
+ mes "The ^3355FFMegingjard^000000 is the powerful Belt of Thor.";
+ mes "To transmute a ^3355FFBelt^000000 into ^3355FFMegingjard^000000 I will need the following:";
+ mes "10 ^3355FFGold^000000 10 ^3355FFSapphire^000000";
+ mes "5 ^3355FFOridecon^000000 and 1 ^3355FFGleipnir^000000";
+ next;
+ mes "[Lenneth]";
+ mes "Do you desire ^3355FFMegingjard^000000?";
+ next;
+ menu "Yes",-,"No",L_OUT;
+
+ if(countitem(2627) < 1 || countitem(984) < 5 || countitem(726) < 10 || countitem(969) < 10 || countitem(7058) < 1) goto L_NOTENOUGH;
+
+ delitem 7058,1;
+ delitem 969,10;
+ delitem 726,10;
+ delitem 984,5;
+ delitem 2627,1;
+
+ getitem 2629,1;
+
+ mes "[Lenneth]";
+ mes "Here is ^3355FFMegingjard^000000, may it serve you well.";
+ close;
+L_NOTENOUGH:
+ mes "[Lenneth]";
+ mes "You are lacking a few items, please return when you have them.";
+ close;
+L_OUT:
+ next;
+ mes "[Lenneth]";
+ mes "Please return when you change your mind.";
+ close;
+}
diff --git a/npc/custom/rpsroulette.txt b/npc/custom/rpsroulette.txt
new file mode 100644
index 000000000..aecd48425
--- /dev/null
+++ b/npc/custom/rpsroulette.txt
@@ -0,0 +1,286 @@
+//===== eAthena Script =======================================
+//= Rock Scissors Roulette Script
+//===== By: ==================================================
+//= acky (1.1)
+//===== Current Version: =====================================
+//= 1.2
+//===== Compatible With: =====================================
+//= Any eAthena Version
+//===== Description: =========================================
+//= Plays a hybrid Russian Roulette Rock Scissors Paper game.
+//===== Additional Comments: =================================
+//= Prizes customisable, Added emotions.
+//= 1.2 Fixes by Blackthunder and me [Poki#3]
+//============================================================
+
+cmd_in02.gat,182,126,2 script Crazy Boris 85,{
+ mes "Crazy Boris";
+ set @counter,1;
+ mes "Hey you! Up for Rock Scissors Roulette?";
+ next;
+ menu "Let me play.",PLAY,"Explain the rules.",RULES,"Leave",LEAVE;
+ SAME:
+ mes "Draw! Again!";
+ next;
+ goto PLAY;
+
+WIN:
+ mes "Damnit, You Win!";
+ emotion 19;
+ next;
+ goto OPPPULL;
+
+LOSE:
+ emotion 18;
+ mes "Boorah! You Lose!";
+ next;
+ goto YOUPULL;
+
+PLAY:
+ mes "Rock... Paper...";
+ set @opp,rand (1,3);
+ menu "^0000FFROCK!",ROCK,"^FF0000SCISSORS!",SCISSORS,"^00FF00PAPER!^000000",PAPER;
+
+ROCK:
+ if (@lastchoice == 1) set @opp,rand (1,3);
+ if (@opp == 1) emotion 11;
+ if (@opp == 2) emotion 10;
+ if (@opp == 3) emotion 12;
+ set @lastchoice,1;
+ if (@opp == 1) goto SAME;
+ if (@opp == 2) goto WIN;
+ if (@opp == 3) goto LOSE;
+
+SCISSORS:
+ if (@lastchoice == 2) set @opp,rand (1,2);
+ if (@opp == 1) emotion 11;
+ if (@opp == 2) emotion 10;
+ if (@opp == 3) emotion 12;
+ set @lastchoice,2;
+ if (@opp == 1) goto LOSE;
+ if (@opp == 2) goto SAME;
+ if (@opp == 3) goto WIN;
+
+PAPER:
+ if (@lastchoice == 3) set @opp,rand (2,3);
+ if (@opp == 1) emotion 11;
+ if (@opp == 2) emotion 10;
+ if (@opp == 3) emotion 12;
+ set @lastchoice,3;
+ if (@opp == 1) goto WIN;
+ if (@opp == 2) goto LOSE;
+ if (@opp == 3) goto SAME;
+
+YOUPULL:
+ if (@counter == 1) goto ONE;
+ if (@counter == 2) goto TWO;
+ if (@counter == 3) goto THREE;
+ if (@counter == 4) goto FOUR;
+ if (@counter == 5) goto FIVE;
+ if (@counter == 6) goto SIX;
+
+OPPPULL:
+ if (@counter == 1) goto ONEa;
+ if (@counter == 2) goto TWOa;
+ if (@counter == 3) goto THREEa;
+ if (@counter == 4) goto FOURa;
+ if (@counter == 5) goto FIVEa;
+ if (@counter == 6) goto SIXa;
+
+ONE:
+ set @counter,2;
+ mes "1 of 6";
+ set @pull,rand (1,6);
+ next;
+ if (@pull == 1) goto DIE;
+ if (@pull != 1) goto SAFE;
+
+TWO:
+ set @counter,3;
+ mes "2 of 6";
+ set @pull,rand (1,5);
+ next;
+ if (@pull == 1) goto DIE;
+ if (@pull != 1) goto SAFE;
+
+THREE:
+ set @counter,4;
+ mes "3 of 6";
+ set @pull,rand (1,4);
+ next;
+ if (@pull == 1) goto DIE;
+ if (@pull != 1) goto SAFE;
+
+FOUR:
+ set @counter,5;
+ mes "4 of 6";
+ set @pull,rand (1,3);
+ next;
+ if (@pull == 1) goto DIE;
+ if (@pull != 1) goto SAFE;
+
+FIVE:
+ set @counter,6;
+ mes "5 of 6";
+ set @pull,rand (1,2);
+ if (@pull == 1) set @pull,rand (1,2);
+ next;
+ if (@pull == 1) goto DIE;
+ if (@pull != 1) goto SAFE;
+
+SIX:
+ mes "6 of 6";
+ mes "Say your prayers";
+ set @pull,1;
+ next;
+ if (@pull == 1) goto DIE;
+ if (@pull != 1) goto SAFE;
+
+ONEa:
+ set @counter,2;
+ mes "1 of 6";
+ set @pull,rand (1,6);
+ next;
+ if (@pull == 1) goto KILL;
+ if (@pull != 1) goto SAFE;
+
+TWOa:
+ set @counter,3;
+ mes "2 of 6";
+ set @pull,rand (1,5);
+ next;
+ if (@pull == 1) goto KILL;
+ if (@pull != 1) goto SAFE;
+
+THREEa:
+ set @counter,4;
+ mes "3 of 6";
+ set @pull,rand (1,4);
+ next;
+ if (@pull == 1) goto KILL;
+ if (@pull != 1) goto SAFE;
+
+FOURa:
+ set @counter,5;
+ mes "4 of 6";
+ set @pull,rand (1,3);
+ next;
+ if (@pull == 1) goto KILL;
+ if (@pull != 1) goto SAFE;
+
+FIVEa:
+ set @counter,6;
+ mes "5 of 6";
+ set @pull,rand (1,2);
+ next;
+ if (@pull == 1) goto KILL;
+ if (@pull != 1) goto SAFE;
+
+SIXa:
+ mes "6 of 6";
+ mes "Say your prayers";
+ set @pull,1;
+ next;
+ if (@pull == 1) goto KILL;
+ if (@pull != 1) goto SAFE;
+
+SAFE:
+ emotion 32;
+ mes "*^0000FFClick^000000* whew...";
+ goto PLAY;
+
+DIE:
+ specialeffect2 183;
+ emotion 29;
+ percentheal -100,-100;
+ mes "*^0000FFClick^000000* *^FF0000BANG^000000*";
+ mes "You're dead!";
+ close;
+
+KILL:
+ specialeffect 183;
+ emotion 23;
+ mes "*^0000FFClick^000000* *^FF0000BANG^000000*";
+ mes "OWWW @#$%^!! THAT HURT LIKE HELL!!";
+ next;
+ goto PRIZE;
+
+RULES:
+ mes "Ok here are the rules:";
+ mes "I have with me a ^FF00006^000000 chamber pistol with ^FF00001^000000 round. First we play ^FF0000Scissors ^00FF00Paper ^0000FFRock^000000. The loser pulls the trigger. The winner is whoever comes out best.";
+ mes "Beat me to win a prize.";
+ menu "Let me play.",CONT,"No thanks.",LEAVE;
+
+CONT:
+ mes "Ok here we go...";
+ next;
+ goto PLAY;
+
+PRIZE:
+ mes "Congratulations! You have won...";
+ set @prize,rand (1,10);
+ if (@prize == 1) goto P1;
+ if (@prize == 2) goto P2;
+ if (@prize == 3) goto P3;
+ if (@prize == 4) goto P4;
+ if (@prize == 5) goto P5;
+ if (@prize == 6) goto P6;
+ if (@prize == 7) goto P7;
+ if (@prize == 8) goto P8;
+ if (@prize == 9) goto P9;
+ if (@prize == 10) goto P10;
+
+P1:
+ mes "10x Oridicon!";
+ getitem 984,10;
+ close;
+
+P2:
+ mes "10x Elunium!";
+ getitem 985,10;
+ close;
+
+P3:
+ mes "100x Fly Wings!";
+ getitem 601,100;
+ close;
+
+P4:
+ mes "8x Old Blue Box!";
+ getitem 603,8;
+ close;
+
+P5:
+ mes "4x Old Violet Box!";
+ getitem 617,4;
+ close;
+
+P6:
+ mes "1x Old Card Album!";
+ getitem 616,1;
+ close;
+
+P7:
+ mes "10x Dead Branch!";
+ getitem 604,10;
+ close;
+
+P8:
+ mes "3x Gold!";
+ getitem 969,3;
+ close;
+
+P9:
+ mes "10x Elunium!";
+ getitem 985,10;
+ close;
+
+P10:
+ mes "20x Blue Potion!";
+ getitem 505,10;
+ close;
+
+LEAVE:
+ mes "Pansy.";
+ close;
+}
diff --git a/npc/custom/shifty_assassin.txt b/npc/custom/shifty_assassin.txt
new file mode 100644
index 000000000..9c225e10f
--- /dev/null
+++ b/npc/custom/shifty_assassin.txt
@@ -0,0 +1,208 @@
+//===== eAthena Script =======================================
+//= Shifty Assassin
+//===== By: ==================================================
+//= acky - god@acky.com
+//===== Current Version: =====================================
+//= 1.1.1
+//===== Compatible With: =====================================
+//= eAthena SVN
+//===== Description: =========================================
+//= Players buy ninjas to assassinate other players
+//===== Additional Comments: =================================
+//= 1.1.1 Changed all gmcommand to atcommand as Poki#3 suggested. [Vicious]
+//============================================================
+
+morocc.gat,148,86,5 script Shifty Assassin 725,{
+set $ninja_price,250000;
+
+// STARTS THE MENU //
+M_Start:
+mes "[Shifty Assassin]";
+mes "What do you want?";
+next;
+if (getgmlevel(3) > 90) goto M_GM;
+menu "Buy Ninjas",M_Buy,"Assassinate somebody",M_Kill,"Check your Ninjas",M_Check,"Cancel",M_Exit;
+M_GM:
+menu "Buy Ninjas",M_Buy,"Assassinate somebody",M_Kill,"Check your Ninjas",M_Check,"Add Ninjas",M_Add,"Cancel",M_Exit;
+
+// GM MENU TO ADD NINJAS //
+M_Add:
+mes "[Shifty Assassin]";
+mes "How many ninjas do you want to make available?";
+next;
+set @add,0;
+input @add;
+set $ninja_avail,$ninja_avail+@add;
+mes @add + " ninjas added.";
+close;
+
+// BUY NINJAS //
+M_Buy:
+mes "[Shifty Assassin]";
+mes "How many ninjas do you want buy?";
+mes "There are ^0000FF" + $ninja_avail + "^000000 ninjas available.";
+mes "They cost ^0000FF" + $ninja_price + " zeny ^000000each.";
+
+set @buy,0;
+input @buy;
+next;
+if ($ninja_avail < 1) goto NoNinjas;
+if ($ninja_avail < @buy) goto NotEnoughNinjas;
+set @price,@buy*$ninja_price;
+if (zeny < @price ) goto NoZeny;
+
+mes "[Shifty Assassin]";
+mes "That will cost you ^0000FF" + @price + " zeny^000000.";
+next;
+menu "Continue",-,"Cancel",M_Exit;
+
+set zeny,zeny-@price;
+set #ninjas,#ninjas+@buy;
+set $ninja_avail,$ninja_avail-@buy;
+
+mes "[Shifty Assassin]";
+mes "Thank you.";
+close;
+
+// ASSASSINATE SOMEBODY //
+M_Kill:
+if ($AgitStarted != 0) goto M_Busy;
+mes "[Shifty Assassin]";
+mes "Enter the name of the target.";
+mes "^FF0000Type the name exactly, otherwise I won't be able to find the victim.^000000";
+next;
+menu "Continue",-,"Cancel",M_Exit;
+set @name$,"0";
+input @name$;
+next;
+mes "[Shifty Assassin]";
+mes "Active Ninjas: "+#ninjas;
+mes "Resting Ninjas: "+#ninjasr;
+mes "How many do you want to send?";
+set @number,0;
+input @number;
+if (@number < 1) goto NoNinjasSent;
+if (@number > #ninjas) goto NotEnoughNinjas1;
+if (@number > 10) goto TooManyNinjas;
+set @chance,rand (1,12);
+set #ninjas,#ninjas-@number;
+set #ninjas,#ninjas+#ninjasr;
+set #ninjasr,0;
+if (@number < @chance) goto M_Failure;
+
+// SUCCESSFUL ATTACK //
+mes "Sending ninjas now.";
+next;
+mes "[Shifty Assassin]";
+set @ninjasurvived,rand (1,@number);
+set #ninjasr,@number-@ninjasurvived;
+mes "Your attack succeeded but only ^FF0000" + #ninjasr + "^000000 Ninjas survived.";
+
+atcommand strcharinfo(0) + "@kill "+@name$;
+announce @name$+" has been assassinated by " + strcharinfo(0) +"'s Ninjas.",8;
+close;
+
+// FAILED ATTACK //
+M_Failure:
+mes "Sending ninjas now.";
+next;
+mes "[Shifty Assassin]";
+set @ninjasurvived,rand (1,@number);
+set #ninjasr,@number-@ninjasurvived;
+mes "Your attack failed and only ^FF0000" + #ninjasr + "^000000 Ninjas survived.";
+
+announce @name$+" has survived " + strcharinfo(0) +"'s Ninja attack.",8;
+close;
+
+// NINJAS BUSY FOR WOE //
+M_Busy:
+mes "[Shifty Assassin]";
+mes "Sorry, all my ninjas are busy doing War of Emperium.";
+close;
+
+// CHECK YOUR NINJAS //
+M_Check:
+mes "[Shifty Assassin]";
+mes "You have:";
+mes "^FF0000" + #ninjas + "^000000 Active Ninjas.";
+mes "^0000FF" + #ninjasr + "^000000 Resting Ninjas.";
+next;
+goto M_Start;
+
+
+// LIMIT //
+NoNinjasSent:
+mes "[Shifty Assassin]";
+mes "You can't kill anyone without ninjas.";
+next;
+goto M_Start;
+
+TooManyNinjas:
+mes "[Shifty Assassin]";
+mes "You can only send 10 ninjas max.";
+next;
+goto M_Start;
+
+NoZeny:
+mes "[Shifty Assassin]";
+mes "You do not have enough zeny.";
+close;
+
+NotEnoughNinjas:
+mes "[Shifty Assassin]";
+mes "There aren't that many ninjas to buy.";
+next;
+goto M_Start;
+
+NoNinjas:
+mes "[Shifty Assassin]";
+mes "There are no ninjas left to buy.";
+close;
+
+NotEnoughNinjas1:
+mes "[Shifty Assassin]";
+mes "You do not have that many ninjas.";
+next;
+goto M_Start;
+
+M_Exit:
+mes "[Shifty Assassin]";
+mes "Goodbye.";
+close;
+
+// TIMER DELAY NINJA ADDER //
+
+OnClock0600:
+set $ninja_avail,$ninja_avail+2;
+end;
+
+OnClock1200:
+set $ninja_avail,$ninja_avail+2;
+end;
+
+OnClock1500:
+set $ninja_avail,$ninja_avail+2;
+end;
+
+
+OnClock1800:
+set $ninja_avail,$ninja_avail+3;
+end;
+
+OnClock1900:
+set $ninja_avail,$ninja_avail+2;
+end;
+
+OnClock2000:
+set $ninja_avail,$ninja_avail+2;
+end;
+
+
+OnClock0000:
+set $ninja_avail,$ninja_avail+2;
+end;
+
+OnInit:
+set $ninja_avail,$ninja_avail+1;
+end;
+} \ No newline at end of file
diff --git a/npc/custom/sign_your_items.txt b/npc/custom/sign_your_items.txt
new file mode 100644
index 000000000..af7e759e3
--- /dev/null
+++ b/npc/custom/sign_your_items.txt
@@ -0,0 +1,215 @@
+//===== eAthena Script =======================================
+//= * Sign Your Items *
+//===== By: ==================================================
+//= Lupus
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= eAthena 1
+//===== Description: =========================================
+//= Write you name on your rare equipment or weapon ^_-
+//= Original X-Mas mini-quest(could be used as a permanent one)
+//===== Additional Comments: =================================
+//= 1.0 First release
+//============================================================
+
+prt_in.gat,24,61,7 script Perchik 47,{
+ mes "[Perchik]";
+ if(BaseJob==Job_Novice || BaseLevel<50) {
+ mes "Sorry, I don't help newbies. Go kill more Porings.";
+ emotion e_sry;
+ close;
+ }
+ mes "Hi, I can ^000090sign your name^000000 on almost any rare item you can hold.";
+ next;
+ menu "Tell me more...",-, "Sign my items, please",M_DO;
+
+ mes "[Perchik]";
+ mes "I can put your name on any slotless equipment or weapon.";
+ emotion e_ic;
+ next;
+ mes "[Perchik]";
+ mes "A week ago, my BOSS told me to send away newbies. I dunno why.";
+ next;
+ mes "[Perchik]";
+ mes "For my work I accept ^0000803 Gift Box^000000es (gray one)";
+ mes "plus ^FF00005000z^000000 per each refine of your item.";
+ next;
+ emotion e_cry;
+ mes "[Perchik]";
+ mes "Alas, I have 12 hungry children";
+ mes "and a very angry wife.";
+ next;
+ mes "[Perchik]";
+ mes "Or it was... 12 angry children";
+ mes "and a very hungry wife...";
+ emotion e_hmm;
+ close;
+
+M_DO:
+ mes "[Perchik]";
+ mes "Show me your items to sign...";
+M_MENU:
+ next;
+ menu getequipname(1),M_PART1,getequipname(9),M_PART9,getequipname(10),M_PART10,getequipname(2),M_PART2,getequipname(4),M_PART4,
+ getequipname(3),M_PART3,getequipname(5),M_PART5,getequipname(6),M_PART6,getequipname(7),M_PART7,getequipname(8),M_PART8;
+
+ //Head Gear
+ M_PART1:
+ set @part,1;
+ if (getequipisequiped(1)) goto L_CHECK1;
+ mes "[Perchik]";
+ mes "A bald head under a cheap wig... There's nothing worthy to sign.";
+ emotion 6;
+ goto M_MENU;
+ M_PART9:
+ set @part,9;
+ if (getequipisequiped(9)) goto L_CHECK1;
+ mes "[Perchik]";
+ mes "Glasses... I can't see any glasses...";
+ emotion 20;
+ goto M_MENU;
+ M_PART10:
+ set @part,10;
+ if (getequipisequiped(10)) goto L_CHECK1;
+ mes "[Perchik]";
+ mes "I don't see any mask here.";
+ emotion 20;
+ goto M_MENU;
+ //Armor
+ M_PART2:
+ set @part,2;
+ if (getequipisequiped(2)) goto L_CHECK1;
+ mes "[Perchik]";
+ mes "Your belly...? Yes, it's rather fat.";
+ emotion 6;
+ goto M_MENU;
+ //Left Hand
+ M_PART3:
+ set @part,3;
+ if (getequipisequiped(3)) goto L_CHECK1;
+ mes "[Perchik]";
+ mes "Sign your left hand? I'm not a celebrity, you know...";
+ emotion 4;
+ goto M_MENU;
+ //Right Hand
+ M_PART4:
+ set @part,4;
+ if (getequipisequiped(4)) goto L_CHECK1;
+ mes "[Perchik]";
+ mes "It isn't an armor... It's a mud!!! Wash your hands more often.";
+ emotion 4;
+ goto M_MENU;
+ //Garment
+ M_PART5:
+ set @part,5;
+ if (getequipisequiped(5)) goto L_CHECK1;
+ mes "[Perchik]";
+ mes "Look... It's empty...";
+ goto M_MENU;
+ //Foot Gear
+ M_PART6:
+ set @part,6;
+ if (getequipisequiped(6)) goto L_CHECK1;
+ mes "[Perchik]";
+ mes "Aw!! I don't like stinky feet.";
+ emotion 16;
+ goto M_MENU;
+ //Accessory1
+ M_PART7:
+ set @part,7;
+ if (getequipisequiped(7)) goto L_CHECK1;
+ mes "[Perchik]";
+ mes "Yep... a pocket with a huge hole...";
+ emotion 20;
+ goto M_MENU;
+ //Accessory2
+ M_PART8:
+ set @part,8;
+ if (getequipisequiped(8)) goto L_CHECK1;
+ mes "[Perchik]";
+ mes "I see your fat belly...";
+ emotion 20;
+ goto M_MENU;
+
+L_CHECK1:
+ set @ref,0;
+ set @id,getequipid(@part);
+ if(getequipisidentify(@part)) goto L_CHECK2;
+ mes "[Perchik]";
+ mes "How could you equip such unknown item?";
+ npctalk "What a sneaky cheater!";
+ emotion e_wah;
+ close;
+
+L_CHECK2:
+ set @ref,getequiprefinerycnt(@part);
+ mes "[Perchik]";
+ mes "You want me to sign your "+getitemname(@id)+"...";
+ if(BaseJob==Job_Novice) {
+ mes "But you're a Novice. My BOSS told me to send such weaklings away.";
+ emotion e_sry;
+ goto M_MENU;
+ }
+ set @slot0,getequipcardid(@part,0);
+ set @slot1,getequipcardid(@part,1);
+ set @slot2,getequipcardid(@part,2);
+ set @slot3,getequipcardid(@part,3);
+
+ if(@slot0==255 || @slot0==254 || @slot0<0) {
+ mes "Alas, this item's already signed.";
+ mes "I would never touch masters work.";
+ emotion e_hmm;
+ goto M_MENU;
+ }
+ if(@slot0>4000 && @slot0<5000) {
+ mes "A card? Here?!";
+ mes "As I said before, I don't sign items with cards.";
+ emotion e_hmm;
+ goto M_MENU;
+ }
+ if(getiteminfo(@id,10)) {
+ mes "Sorry. I don't sign slotted items.";
+ emotion e_sry;
+ goto M_MENU;
+ }
+
+ if(@ref)mes "It has been refined "+@ref+" times... Adding ^FF00005000z^000000 per time.";
+ mes "Give me ^0000803 gray Gift Boxes^000000";
+ if(@ref)mes "and ^FF0000"+(5000*@ref)+"z^000000.";
+ next;
+ menu "Ok!",-, "Leave",M_END;
+ if(Zeny>=(5000*@ref) && countitem(644)>=3) {
+ delitem 644,3;
+ set Zeny,Zeny-(5000*@ref);
+ goto L_MAKE;
+ }
+ mes "[Perchik]";
+ mes "I don't work for 'thanks'.";
+ emotion e_sry;
+ close;
+
+L_MAKE:
+ if(countitem2(@id,1,@ref,0,@slot0,@slot1,@slot2,@slot3)==0) {
+ mes "[Perchik]";
+ mes "Where is... "+getitemname(@id)+"?";
+ npctalk "You're a snoozy cheater!";
+ logmes "CHEATER: Tried to sign an item not having it: "+getitemname(@id);
+ emotion e_wah;
+ close;
+ }
+ delitem2 @id,1,1,@ref,0,@slot0,@slot1,@slot2,@slot3;
+
+ mes "[Perchik]";
+ mes "Done!";
+ emotion e_proud;
+
+ getitem2 @id,1,1,@ref,0,254,0,getcharid(0)&0xffff,(getcharid(0)>>16)&0xffff;
+ close;
+
+M_END:
+ mes "[Perchik]";
+ mes "See you...";
+ emotion e_yawn;
+ close;
+}
diff --git a/npc/custom/stock_market.txt b/npc/custom/stock_market.txt
new file mode 100644
index 000000000..a4a4f7919
--- /dev/null
+++ b/npc/custom/stock_market.txt
@@ -0,0 +1,793 @@
+//===== eAthena Script =======================================
+//= Stock Market Game
+//===== By: ==================================================
+//= acky (acky@bigpond.net.au)
+//===== Current Version: =====================================
+//= 1.3.1
+//===== Compatible With: =====================================
+//= Any eAthena Version
+//===== Description: =========================================
+//= NPC for a stock market game.
+//===== Additional Comments: =================================
+//= GM Must activate the NPC before use.
+//= Fixed MAJOR exploit. - players could buy for free
+//= Low prices likely to rise, High prices likely to drop
+//= Small fix by Galeon
+//= Lupus: This script lets players make 40,000,000z a day
+//= so use it on your own risk
+//============================================================
+
+prontera.gat,140,181,5 script sharenames -1,{
+end;
+OnInit:
+// Sets the names of the shares //
+set $S1N$,"JIN";
+set $S2N$,"VNG";
+set $S3N$,"SHA";
+set $S4N$,"RGC";
+set $S5N$,"PSC";
+set $S6N$,"GNG";
+set $S7N$,"XRO";
+set $S8N$,"GRM";
+set $S9N$,"DOP";
+set $S10N$,"POR";
+
+// Transaction fee //
+set $S_Trans,1500;
+
+// Min & Max buyable //
+set $S_BuyMin,1;
+set $S_BuyMax,1000000;
+end;
+
+// Average Price (Your start prices) //
+set $S_Avg,100;
+
+// Set times of fluctuation //
+OnClock1100:
+set $S_LastUpd$,"12:00";
+goto S_Fluc;
+end;
+
+OnClock0000:
+set $S_LastUpd$,"00:00";
+goto S_Fluc;
+end;
+
+OnClock0600:
+set $S_LastUpd$,"06:00";
+goto S_Fluc;
+end;
+
+OnClock1800:
+set $S_LastUpd$,"18:00";
+goto S_Fluc;
+end;
+
+OnClock2100:
+set $S_LastUpd$,"21:00";
+goto S_Fluc;
+end;
+
+OnClock0900:
+set $S_LastUpd$,"09:00";
+goto S_Fluc;
+end;
+
+OnClock1500:
+set $S_LastUpd$,"15:00";
+goto S_Fluc;
+end;
+
+S_Fluc:
+set $fluc,rand (-6,6);
+set $S1B,$S1;
+set $S1,$S1+$fluc;
+if ($S1 < 25) set $S1,$S1+3;
+if ($S1 < 50) set $S1,$S1+2;
+if ($S1 > 150) set $S1,$S1-2;
+if ($S1 > 175) set $S1,$S1-3;
+if ($S1 < 1) set $S1,1;
+
+set $fluc,rand (-6,6);
+set $S2B,$S2;
+set $S2,$S2+$fluc;
+if ($S2 < 25) set $S2,$S2+3;
+if ($S2 < 50) set $S2,$S2+2;
+if ($S2 > 150) set $S2,$S2-2;
+if ($S2 > 175) set $S2,$S2-3;
+if ($S2 < 1) set $S2,1;
+
+set $fluc,rand (-6,6);
+set $S3B,$S3;
+set $S3,$S3+$fluc;
+if ($S3 < 25) set $S3,$S3+3;
+if ($S3 < 50) set $S3,$S3+2;
+if ($S3 > 150) set $S3,$S3-2;
+if ($S3 > 175) set $S3,$S3-3;
+if ($S3 < 1) set $S3,1;
+
+set $fluc,rand (-6,6);
+set $S4B,$S4;
+set $S4,$S4+$fluc;
+if ($S4 < 25) set $S4,$S4+3;
+if ($S4 < 50) set $S4,$S4+2;
+if ($S4 > 150) set $S4,$S4-2;
+if ($S4 > 175) set $S4,$S4-3;
+if ($S4 < 1) set $S4,1;
+
+set $fluc,rand (-6,6);
+set $S5B,$S5;
+set $S5,$S5+$fluc;
+if ($S5 < 25) set $S5,$S5+3;
+if ($S5 < 50) set $S5,$S5+2;
+if ($S5 > 150) set $S5,$S5-2;
+if ($S5 > 175) set $S5,$S5-3;
+if ($S5 < 1) set $S5,1;
+
+set $fluc,rand (-6,6);
+set $S6B,$S6;
+set $S6,$S6+$fluc;
+if ($S6 < 25) set $S6,$S6+3;
+if ($S6 < 50) set $S6,$S6+2;
+if ($S6 > 150) set $S6,$S6-2;
+if ($S6 > 175) set $S6,$S6-3;
+if ($S6 < 1) set $S6,1;
+
+set $fluc,rand (-6,6);
+set $S7B,$S7;
+set $S7,$S7+$fluc;
+if ($S7 < 25) set $S7,$S7+3;
+if ($S7 < 50) set $S7,$S7+2;
+if ($S7 > 150) set $S7,$S7-2;
+if ($S7 > 175) set $S7,$S7-3;
+if ($S7 < 1) set $S7,1;
+
+set $fluc,rand (-6,6);
+set $S8B,$S8;
+set $S8,$S8+$fluc;
+if ($S8 < 25) set $S8,$S8+3;
+if ($S8 < 50) set $S8,$S8+2;
+if ($S8 > 150) set $S8,$S8-2;
+if ($S8 > 175) set $S8,$S8-3;
+if ($S8 < 1) set $S8,1;
+
+set $fluc,rand (-6,6);
+set $S9B,$S9;
+set $S9,$S9+$fluc;
+if ($S9 < 25) set $S9,$S9+3;
+if ($S9 < 50) set $S9,$S9+2;
+if ($S9 > 150) set $S9,$S9-2;
+if ($S9 > 175) set $S9,$S9-3;
+if ($S9 < 1) set $S9,1;
+
+set $fluc,rand (-6,6);
+set $S10B,$S10;
+set $S10,$S10+$fluc;
+if ($S10 < 25) set $S10,$S10+3;
+if ($S10 < 50) set $S10,$S10+2;
+if ($S10 > 150) set $S10,$S10-2;
+if ($S10 > 175) set $S10,$S10-3;
+if ($S10 < 1) set $S10,1;
+end;
+}
+
+- script Stock Market::stockmarket 109,{
+// Ensures no trading when default prices have not been set //
+set @stotal,$S1+$S2+$S3+$S4+$S5+$S6+$S7+$S8+$S9+$S10;
+if (@stotal > 0) goto S_Start;
+mes "[Stock Market]";
+mes "Trading is currently closed.";
+if (getgmlevel(3) > 90) goto GM_Open;
+close;
+
+// Begining of interface //
+S_Start:
+mes "[Stock Market]";
+mes "Last fluctuation: " + $S_LastUpd$;
+
+// Loss/Gain in price //
+set @S1Update,$S1-$S1B;
+set @S2Update,$S2-$S2B;
+set @S3Update,$S3-$S3B;
+set @S4Update,$S4-$S4B;
+set @S5Update,$S5-$S5B;
+set @S6Update,$S6-$S6B;
+set @S7Update,$S7-$S7B;
+set @S8Update,$S8-$S8B;
+set @S9Update,$S9-$S9B;
+set @S10Update,$S10-$S10B;
+
+// Makes Loss/Gain Red/Green //
+if (@S1Update < 0) set @S1Update$,"^FF0000"+@S1Update+"^000000";
+if (@S1Update > 0) set @S1Update$,"^00FF00+"+@S1Update+"^000000";
+if (@S1Update == 0) set @S1Update$,@S1Update;
+
+if (@S2Update < 0) set @S2Update$,"^FF0000"+@S2Update+"^000000";
+if (@S2Update > 0) set @S2Update$,"^00FF00+"+@S2Update+"^000000";
+if (@S2Update == 0) set @S2Update$,@S2Update;
+
+if (@S3Update < 0) set @S3Update$,"^FF0000"+@S3Update+"^000000";
+if (@S3Update > 0) set @S3Update$,"^00FF00+"+@S3Update+"^000000";
+if (@S3Update == 0) set @S3Update$,@S3Update;
+
+if (@S4Update < 0) set @S4Update$,"^FF0000"+@S4Update+"^000000";
+if (@S4Update > 0) set @S4Update$,"^00FF00+"+@S4Update+"^000000";
+if (@S4Update == 0) set @S4Update$,@S4Update;
+
+if (@S5Update < 0) set @S5Update$,"^FF0000"+@S5Update+"^000000";
+if (@S5Update > 0) set @S5Update$,"^00FF00+"+@S5Update+"^000000";
+if (@S5Update == 0) set @S5Update$,@S5Update;
+
+if (@S6Update < 0) set @S6Update$,"^FF0000"+@S6Update+"^000000";
+if (@S6Update > 0) set @S6Update$,"^00FF00+"+@S6Update+"^000000";
+if (@S6Update == 0) set @S6Update$,@S6Update;
+
+if (@S7Update < 0) set @S7Update$,"^FF0000"+@S7Update+"^000000";
+if (@S7Update > 0) set @S7Update$,"^00FF00+"+@S7Update+"^000000";
+if (@S7Update == 0) set @S7Update$,@S7Update;
+
+if (@S8Update < 0) set @S8Update$,"^FF0000"+@S8Update+"^000000";
+if (@S8Update > 0) set @S8Update$,"^00FF00+"+@S8Update+"^000000";
+if (@S8Update == 0) set @S8Update$,@S8Update;
+
+if (@S9Update < 0) set @S9Update$,"^FF0000"+@S9Update+"^000000";
+if (@S9Update > 0) set @S9Update$,"^00FF00+"+@S9Update+"^000000";
+if (@S9Update == 0) set @S9Update$,@S9Update;
+
+if (@S10Update < 0) set @S10Update$,"^FF0000"+@S10Update+"^000000";
+if (@S10Update > 0) set @S10Update$,"^00FF00+"+@S10Update+"^000000";
+if (@S10Update == 0) set @S10Update$,@S10Update;
+
+// Displays shares & prices //
+mes "^21698F"+$S1N$+"^000000" + " " + $S1 + "z (" + @S1Update$ + ")";
+mes "^21698F"+$S2N$+"^000000" + " " + $S2 + "z (" + @S2Update$ + ")";
+mes "^21698F"+$S3N$+"^000000" + " " + $S3 + "z (" + @S3Update$ + ")";
+mes "^21698F"+$S4N$+"^000000" + " " + $S4 + "z (" + @S4Update$ + ")";
+mes "^21698F"+$S5N$+"^000000" + " " + $S5 + "z (" + @S5Update$ + ")";
+mes "^21698F"+$S6N$+"^000000" + " " + $S6 + "z (" + @S6Update$ + ")";
+mes "^21698F"+$S7N$+"^000000" + " " + $S7 + "z (" + @S7Update$ + ")";
+mes "^21698F"+$S8N$+"^000000" + " " + $S8 + "z (" + @S8Update$ + ")";
+mes "^21698F"+$S9N$+"^000000" + " " + $S9 + "z (" + @S9Update$ + ")";
+mes "^21698F"+$S10N$+"^000000" + " " + $S10 + "z (" + @S10Update$ + ")";
+next;
+
+// GM Menu link //
+if (getgmlevel(3) > 90) goto GM_subMenu;
+menu "Portfolio",S_Port,"Buy Shares",S_Buy,"Sell Shares",S_Sell,"Cancel",S_Quit;
+
+GM_subMenu:
+menu "Portfolio",S_Port,"Buy Shares",S_Buy,"Sell Shares",S_Sell,"GM Menu",GM_Menu,"Cancel",S_Quit;
+
+// Selling Shares //
+S_Sell:
+ mes "[Stock Market]";
+ mes "Enter the name of the share you wish to sell.";
+ mes "Transaction fee of ^FF0000" + $S_Trans + "z^000000 will apply.";
+ if (#S1 > 0) mes "^0000FF"+$S1N$+"^FF0000" + " x " + #S1 + " [" + $S1 + "z]";
+ if (#S2 > 0) mes "^0000FF"+$S2N$+"^FF0000" + " x " + #S2 + " [" + $S2 + "z]";
+ if (#S3 > 0) mes "^0000FF"+$S3N$+"^FF0000" + " x " + #S3 + " [" + $S3 + "z]";
+ if (#S4 > 0) mes "^0000FF"+$S4N$+"^FF0000" + " x " + #S4 + " [" + $S4 + "z]";
+ if (#S5 > 0) mes "^0000FF"+$S5N$+"^FF0000" + " x " + #S5 + " [" + $S5 + "z]";
+ if (#S6 > 0) mes "^0000FF"+$S6N$+"^FF0000" + " x " + #S6 + " [" + $S6 + "z]";
+ if (#S7 > 0) mes "^0000FF"+$S7N$+"^FF0000" + " x " + #S7 + " [" + $S7 + "z]";
+ if (#S8 > 0) mes "^0000FF"+$S8N$+"^FF0000" + " x " + #S8 + " [" + $S8 + "z]";
+ if (#S9 > 0) mes "^0000FF"+$S9N$+"^FF0000" + " x " + #S9 + " [" + $S9 + "z]";
+ if (#S10 > 0) mes "^0000FF"+$S10N$+"^FF0000" + " x " + #S10 + " [" + $S10 + "z]";
+ set @sellname$,"0";
+ input @sellname$;
+ set @sellamount,0;
+ input @sellamount;
+ if (@sellamount < 1) goto S_SellInv;
+ if (zeny < $S_Trans) goto S_NoZeny;
+ set zeny,zeny-$S_Trans;
+
+ SELLS1:
+ if (@sellname$ != $S1N$) goto SELLS2;
+ if (@sellamount > #S1) goto S_SellTooHigh;
+ set @price,@sellamount*$S1;
+ set #S1,#S1-@sellamount;
+ set zeny,zeny+@price;
+ next;
+ mes "Sold " + @sellamount + " " + $S1N$ + " shares.";
+ mes "Earned ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ SELLS2:
+ if (@sellname$ != $S2N$) goto SELLS3;
+ if (@sellamount > #S2) goto S_SellTooHigh;
+ set @price,@sellamount*$S2;
+ set #S2,#S2-@sellamount;
+ set zeny,zeny+@price;
+ next;
+ mes "Sold " + @sellamount + " " + $S2N$ + " shares.";
+ mes "Earned ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ SELLS3:
+ if (@sellname$ != $S3N$) goto SELLS4;
+ if (@sellamount > #S3) goto S_SellTooHigh;
+ set @price,@sellamount*$S3;
+ set #S3,#S3-@sellamount;
+ set zeny,zeny+@price;
+ next;
+ mes "Sold " + @sellamount + " " + $S3N$ + " shares.";
+ mes "Earned ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ SELLS4:
+ if (@sellname$ != $S4N$) goto SELLS5;
+ if (@sellamount > #S4) goto S_SellTooHigh;
+ set @price,@sellamount*$S4;
+ set #S4,#S4-@sellamount;
+ set zeny,zeny+@price;
+ next;
+ mes "Sold " + @sellamount + " " + $S4N$ + " shares.";
+ mes "Earned ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ SELLS5:
+ if (@sellname$ != $S5N$) goto SELLS6;
+ if (@sellamount > #S5) goto S_SellTooHigh;
+ set @price,@sellamount*$S5;
+ set #S5,#S5-@sellamount;
+ set zeny,zeny+@price;
+ next;
+ mes "Sold " + @sellamount + " " + $S5N$ + " shares.";
+ mes "Earned ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ SELLS6:
+ if (@sellname$ != $S6N$) goto SELLS7;
+ if (@sellamount > #S6) goto S_SellTooHigh;
+ set @price,@sellamount*$S6;
+ set #S6,#S6-@sellamount;
+ set zeny,zeny+@price;
+ next;
+ mes "Sold " + @sellamount + " " + $S6N$ + " shares.";
+ mes "Earned ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ SELLS7:
+ if (@sellname$ != $S7N$) goto SELLS8;
+ if (@sellamount > #S7) goto S_SellTooHigh;
+ set @price,@sellamount*$S7;
+ set #S7,#S7-@sellamount;
+ set zeny,zeny+@price;
+ next;
+ mes "Sold " + @sellamount + " " + $S7N$ + " shares.";
+ mes "Earned ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ SELLS8:
+ if (@sellname$ != $S8N$) goto SELLS9;
+ if (@sellamount > #S8) goto S_SellTooHigh;
+ set @price,@sellamount*$S8;
+ set #S8,#S8-@sellamount;
+ set zeny,zeny+@price;
+ next;
+ mes "Sold " + @sellamount + " " + $S8N$ + " shares.";
+ mes "Earned ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ SELLS9:
+ if (@sellname$ != $S9N$) goto SELLS10;
+ if (@sellamount > #S9) goto S_SellTooHigh;
+ set @price,@sellamount*$S9;
+ set #S9,#S9-@sellamount;
+ set zeny,zeny+@price;
+ next;
+ mes "Sold " + @sellamount + " " + $S9N$ + " shares.";
+ mes "Earned ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ SELLS10:
+ if (@sellname$ != $S10N$) goto SELLS11;
+ if (@sellamount > #S10) goto S_SellTooHigh;
+ set @price,@sellamount*$S10;
+ set #S10,#S10-@sellamount;
+ set zeny,zeny+@price;
+ next;
+ mes "Sold " + @sellamount + " " + $S10N$ + " shares.";
+ mes "Earned ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ SELLS11:
+ mes "^FF0000Invalid Share Name.^000000";
+ next;
+ goto S_Start;
+
+ S_SellTooHigh:
+ mes "^FF0000You don't have that many shares.^000000";
+ next;
+ goto S_Start;
+
+ S_SellInv:
+ mes "^FF0000Invalid integer.^000000";
+ next;
+ goto S_Start;
+
+// Buying Shares //
+S_Buy:
+ mes "[Stock Market]";
+ mes "Available shares:";
+ mes $S1N$;
+ mes $S2N$;
+ mes $S3N$;
+ mes $S4N$;
+ mes $S5N$;
+ mes $S6N$;
+ mes $S7N$;
+ mes $S8N$;
+ mes $S9N$;
+ mes $S10N$;
+ next;
+ menu "Continue",-,"Cancel",S_Start;
+
+ mes "Enter the name of the share company";
+ mes "Transaction fee of ^FF0000" + $S_Trans + "z^000000 will apply.";
+ set @buyname$,"0";
+ input @buyname$;
+
+ set @buyamount,0;
+ input @buyamount;
+ // Checks valid number //
+ if (@buyamount < $S_BuyMin) goto S_TooLow;
+ if (@buyamount > $S_BuyMax) goto S_TooHigh;
+ if (zeny < $S_Trans) goto S_NoZeny;
+ set zeny,zeny-$S_Trans;
+
+ // Purchases the shares //
+
+ PURS1:
+ if (@buyname$ != $S1N$) goto PURS2;
+ set @price,@buyamount*$S1;
+ if (zeny < @price) goto S_NoZeny;
+ set #S1,#S1+@buyamount;
+ set @price,@buyamount*$S1;
+ set zeny,zeny-@price;
+ mes "Bought " + @buyamount + " " + $S1N$ + " shares.";
+ mes "Lost ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ PURS2:
+ if (@buyname$ != $S2N$) goto PURS3;
+ set @price,@buyamount*$S2;
+ if (zeny < @price) goto S_NoZeny;
+ set #S2,#S2+@buyamount;
+ set zeny,zeny-@price;
+ mes "Bought " + @buyamount + " " + $S2N$ + " shares.";
+ mes "Lost ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ PURS3:
+ if (@buyname$ != $S3N$) goto PURS4;
+ set @price,@buyamount*$S3;
+ if (zeny < @price) goto S_NoZeny;
+ set #S3,#S3+@buyamount;
+ set zeny,zeny-@price;
+ mes "Bought " + @buyamount + " " + $S3N$ + " shares.";
+ mes "Lost ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ PURS4:
+ if (@buyname$ != $S4N$) goto PURS5;
+ set @price,@buyamount*$S4;
+ if (zeny < @price) goto S_NoZeny;
+ set #S4,#S4+@buyamount;
+ set zeny,zeny-@price;
+ mes "Bought " + @buyamount + " " + $S4N$ + " shares.";
+ mes "Lost ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ PURS5:
+ if (@buyname$ != $S5N$) goto PURS6;
+ set @price,@buyamount*$S5;
+ if (zeny < @price) goto S_NoZeny;
+ set #S5,#S5+@buyamount;
+ set zeny,zeny-@price;
+ mes "Bought " + @buyamount + " " + $S5N$ + " shares.";
+ mes "Lost ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ PURS6:
+ if (@buyname$ != $S6N$) goto PURS7;
+ set @price,@buyamount*$S6;
+ if (zeny < @price) goto S_NoZeny;
+ set #S6,#S6+@buyamount;
+ set zeny,zeny-@price;
+ mes "Bought " + @buyamount + " " + $S6N$ + " shares.";
+ mes "Lost ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ PURS7:
+ if (@buyname$ != $S7N$) goto PURS8;
+ set @price,@buyamount*$S7;
+ if (zeny < @price) goto S_NoZeny;
+ set #S7,#S7+@buyamount;
+ set zeny,zeny-@price;
+ mes "Bought " + @buyamount + " " + $S7N$ + " shares.";
+ mes "Lost ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ PURS8:
+ if (@buyname$ != $S8N$) goto PURS9;
+ set @price,@buyamount*$S8;
+ if (zeny < @price) goto S_NoZeny;
+ set #S8,#S8+@buyamount;
+ set zeny,zeny-@price;
+ mes "Bought " + @buyamount + " " + $S8N$ + " shares.";
+ mes "Lost ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ PURS9:
+ if (@buyname$ != $S9N$) goto PURS10;
+ set @price,@buyamount*$S9;
+ if (zeny < @price) goto S_NoZeny;
+ set #S9,#S9+@buyamount;
+ set zeny,zeny-@price;
+ mes "Bought " + @buyamount + " " + $S9N$ + " shares.";
+ mes "Lost ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ PURS10:
+ if (@buyname$ != $S10N$) goto PURS11;
+ set @price,@buyamount*$S10;
+ if (zeny < @price) goto S_NoZeny;
+ set #S10,#S10+@buyamount;
+ set zeny,zeny-@price;
+ mes "Bought " + @buyamount + " " + $S10N$ + " shares.";
+ mes "Lost ^0000FF"+@price+"z^000000.";
+ next;
+ goto S_Start;
+
+ PURS11:
+ goto S_InvName;
+
+ // Number too low //
+ S_TooLow:
+ mes "^FF0000Minimum of " + $S_BuyMin + " shares can be bought at a time.^000000";
+ next;
+ goto S_Start;
+
+ // Number too high //
+ S_TooHigh:
+ mes "^FF0000Maximum number of " + $S_BuyMax + " shares can be bought at a time.^000000";
+ next;
+ goto S_Start;
+
+ S_NoZeny:
+ mes "^FF0000You do not have enough zeny.^000000";
+ next;
+ goto S_Start;
+
+ // Sends user to start if name invalid //
+ S_InvName:
+ mes "^FF0000Invalid share name.^000000";
+ next;
+ goto S_Start;
+
+// Displays your total amount //
+S_Port:
+mes "[Stock Market]";
+
+ ACCS1:
+ if (#S1 < 1) goto ACCS2;
+ set @S1,#S1*$S1;
+ mes $S1N$ + ": " + #S1 + " x " + $S1 + "z = " + @S1 + "z";
+
+ ACCS2:
+ if (#S2 < 1) goto ACCS3;
+ set @S2,#S2*$S2;
+ mes $S2N$ + ": " + #S2 + " x " + $S2 + "z = " + @S2 + "z";
+
+ ACCS3:
+ if (#S3 < 1) goto ACCS4;
+ set @S3,#S3*$S3;
+ mes $S3N$ + ": " + #S3 + " x " + $S3 + "z = " + @S3 + "z";
+
+ ACCS4:
+ if (#S4 < 1) goto ACCS5;
+ set @S4,#S4*$S4;
+ mes $S4N$ + ": " + #S4 + " x " + $S4 + "z = " + @S4 + "z";
+
+ ACCS5:
+ if (#S5 < 1) goto ACCS6;
+ set @S5,#S5*$S5;
+ mes $S5N$ + ": " + #S5 + " x " + $S5 + "z = " + @S5 + "z";
+
+ ACCS6:
+ if (#S6 < 1) goto ACCS7;
+ set @S6,#S6*$S6;
+ mes $S6N$ + ": " + #S6 + " x " + $S6 + "z = " + @S6 + "z";
+
+ ACCS7:
+ if (#S7 < 1) goto ACCS8;
+ set @S7,#S7*$S7;
+ mes $S7N$ + ": " + #S7 + " x " + $S7 + "z = " + @S7 + "z";
+
+ ACCS8:
+ if (#S8 < 1) goto ACCS9;
+ set @S8,#S8*$S8;
+ mes $S8N$ + ": " + #S8 + " x " + $S8 + "z = " + @S8 + "z";
+
+ ACCS9:
+ if (#S9 < 1) goto ACCS10;
+ set @S9,#S9*$S9;
+ mes $S9N$ + ": " + #S9 + " x " + $S9 + "z = " + @S9 + "z";
+
+ ACCS10:
+ if (#S10 < 1) goto ACCS11;
+ set @S10,#S10*$S10;
+ mes $S10N$ + ": " + #S10 + " x " + $S10 + "z = " + @S10 + "z";
+
+ // Total //
+ ACCS11:
+ set @total,@S1 + @S2 + @S3 + @S4 + @S5 + @S6 + @S7 + @S8 + @S9 + @S10;
+ mes "Total value: "+@total+"z";
+ next;
+ goto S_Start;
+
+
+// GM MENU //
+GM_Menu:
+mes "[Stock Market]";
+mes "Master, do you require anything?";
+menu "Fluctuate Market",S_Fluc,"Reset Prices",GM_Open,"Nothing",S_Start;
+
+S_Fluc:
+set $fluc,rand (-6,6);
+set $S1B,$S1;
+set $S1,$S1+$fluc;
+if ($S1 < 25) set $S1,$S1+3;
+if ($S1 < 50) set $S1,$S1+2;
+if ($S1 > 150) set $S1,$S1-2;
+if ($S1 > 175) set $S1,$S1-3;
+if ($S1 < 1) set $S1,1;
+
+set $fluc,rand (-6,6);
+set $S2B,$S2;
+set $S2,$S2+$fluc;
+if ($S2 < 25) set $S2,$S2+3;
+if ($S2 < 50) set $S2,$S2+2;
+if ($S2 > 150) set $S2,$S2-2;
+if ($S2 > 175) set $S2,$S2-3;
+if ($S2 < 2) set $S2,1;
+
+set $fluc,rand (-6,6);
+set $S3B,$S3;
+set $S3,$S3+$fluc;
+if ($S3 < 25) set $S3,$S3+3;
+if ($S3 < 50) set $S3,$S3+2;
+if ($S3 > 150) set $S3,$S3-2;
+if ($S3 > 175) set $S3,$S3-3;
+if ($S3 < 1) set $S3,1;
+
+set $fluc,rand (-6,6);
+set $S4B,$S4;
+set $S4,$S4+$fluc;
+if ($S4 < 25) set $S4,$S4+3;
+if ($S4 < 50) set $S4,$S4+2;
+if ($S4 > 150) set $S4,$S4-2;
+if ($S4 > 175) set $S4,$S4-3;
+if ($S4 < 1) set $S4,1;
+
+set $fluc,rand (-6,6);
+set $S5B,$S5;
+set $S5,$S5+$fluc;
+if ($S5 < 25) set $S5,$S5+3;
+if ($S5 < 50) set $S5,$S5+2;
+if ($S5 > 150) set $S5,$S5-2;
+if ($S5 > 175) set $S5,$S5-3;
+if ($S5 < 1) set $S5,1;
+
+set $fluc,rand (-6,6);
+set $S6B,$S6;
+set $S6,$S6+$fluc;
+if ($S6 < 25) set $S6,$S6+3;
+if ($S6 < 50) set $S6,$S6+2;
+if ($S6 > 150) set $S6,$S6-2;
+if ($S6 > 175) set $S6,$S6-3;
+if ($S6 < 1) set $S6,1;
+
+set $fluc,rand (-6,6);
+set $S7B,$S7;
+set $S7,$S7+$fluc;
+if ($S7 < 25) set $S7,$S7+3;
+if ($S7 < 50) set $S7,$S7+2;
+if ($S7 > 150) set $S7,$S7-2;
+if ($S7 > 175) set $S7,$S7-3;
+if ($S7 < 1) set $S7,1;
+
+set $fluc,rand (-6,6);
+set $S8B,$S8;
+set $S8,$S8+$fluc;
+if ($S8 < 25) set $S8,$S8+3;
+if ($S8 < 50) set $S8,$S8+2;
+if ($S8 > 150) set $S8,$S8-2;
+if ($S8 > 175) set $S8,$S8-3;
+if ($S8 < 1) set $S8,1;
+
+set $fluc,rand (-6,6);
+set $S9B,$S9;
+set $S9,$S9+$fluc;
+if ($S9 < 25) set $S9,$S9+3;
+if ($S9 < 50) set $S9,$S9+2;
+if ($S9 > 150) set $S9,$S9-2;
+if ($S9 > 175) set $S9,$S9-3;
+if ($S9 < 1) set $S9,1;
+
+set $fluc,rand (-6,6);
+set $S10B,$S10;
+set $S10,$S10+$fluc;
+if ($S10 < 25) set $S10,$S10+3;
+if ($S10 < 50) set $S10,$S10+2;
+if ($S10 > 150) set $S10,$S10-2;
+if ($S10 > 175) set $S10,$S10-3;
+if ($S10 < 1) set $S10,1;
+
+set $S_LastUpd$,"GM Fluctuation";
+mes "Market fluctuated.";
+close;
+
+GM_Open:
+menu "Set prices to...",GM_Set,"Cancel",-;
+mes "Farewell.";
+close;
+
+GM_Set:
+mes "Are you sure you want to reset?";
+mes "^FF0000All share values will become the same.^000000";
+next;
+menu "Yes",-,"No",GM_Menu;
+set @gmset,0;
+input @gmset;
+set $S1,@gmset;
+set $S2,@gmset;
+set $S3,@gmset;
+set $S4,@gmset;
+set $S5,@gmset;
+set $S6,@gmset;
+set $S7,@gmset;
+set $S8,@gmset;
+set $S9,@gmset;
+set $S10,@gmset;
+set $S1B,@gmset;
+set $S2B,@gmset;
+set $S3B,@gmset;
+set $S4B,@gmset;
+set $S5B,@gmset;
+set $S6B,@gmset;
+set $S7B,@gmset;
+set $S8B,@gmset;
+set $S9B,@gmset;
+set $S10B,@gmset;
+mes "All prices changed to " + @gmset + "z.";
+close;
+
+S_Quit:
+mes "[Stock Market]";
+mes "Goodbye.";
+close;
+}
+
+prontera.gat,140,181,5 duplicate(stockmarket) Stock Market 109 \ No newline at end of file
diff --git a/npc/custom/tougijou.txt b/npc/custom/tougijou.txt
new file mode 100644
index 000000000..8c9fc8cca
--- /dev/null
+++ b/npc/custom/tougijou.txt
@@ -0,0 +1,343 @@
+/===============================================================================
+// Tougijou (Arena) EVENT
+//===============================================================================
+gonryun.gat,180,117,0 script Son Mudo 85,{
+ if (Class == 0) goto Lnovice;
+ if (event_tougijou == 1) goto LStart2;
+ mes "[Son Mudo]";
+ mes "Ahh... this cool guy does not come. ";
+ mes "Hmm? Hey, you. You look strong. I have a little thing todo, are you interested?";
+ next;
+ menu "I am",L1,"No, not interested",L2,"(ignore him)",L3;
+L1:
+ mes "[Son Mudo]";
+ mes "Oh... It looks like my eyes were right.";
+ mes "But I have to check some things. First, your preparation.";
+ next;
+ if (checkweight(7049,730)) goto Lweightok;
+ mes "^0000ffSon Mudo points to a quite big stone, telling you to lift it up. But because you are too heavy, you cannot raise it.^000000";
+ next;
+ mes "[Son Mudo]";
+ mes "It looks like your training was insufficient. Come back when you have trained a bit more.";
+ close;
+Lweightok:
+ getitem 7049,730;
+ set event_tougijou,1;
+ mes "^0000ffSon Mudo points to a quite big stone, telling you to lift it up and you raise it easily.^000000";
+ next;
+ emotion 21;
+ mes "[Son Mudo]";
+ mes "Haha, My eyes were absolutely right. When it is about time, I show you a good place. See you then.";
+ close;
+L2:
+ mes "[Son Mudo]";
+ mes "Really?";
+ mes "But don't you think, if you have some power, you can get interesting experiences?";
+ mes "Haha, when you change your mind, come and take the challenge.";
+ close;
+L3:
+ emotion 32;
+ mes "[Son Mudo]";
+ mes "This is... I must have mistaken this one for someone else.";
+ mes "Haha......";
+ close;
+LStart2:
+ mes "[Son Mudo]";
+ mes "Oh, we meet again!";
+ mes "Want to go to the interesting passage now?";
+ next;
+ menu "I want to",-,"No, I don't",Lno;
+ mes "[Son Mudo]";
+ mes "Really?";
+ mes "Ah Hahahaha.";
+ mes "Well then, have fun!";
+ next;
+ warp "gon_test.gat",53,6;
+ end;
+ Lno:
+ mes "[Son Mudo]";
+ mes "What, you hesitate? Well, it's ok. See you later then.";
+ close;
+Lnovice:
+ mes "[Son Mudo]";
+ mes "Hey, you are just a Novice. Go back to town.";
+ close;
+}
+//===============================================================================
+gon_test.gat,50,14,4 script Gonryun Arena Staff 780,{
+ mes "[Waiting Room Staff]";
+ mes "Hello.";
+ mes "Just enter the Chat and wait for your turn.";
+ close;
+OnInit:
+ waitingroom "Please enter here!!",1,"Gonryun Arena Staff::OnMax";
+ end;
+OnMax:
+ warpwaitingpc "gon_test.gat",44,86;
+ killmonsterall "gon_test.gat";
+ initnpctimer "gontimer";
+ disablenpc "Gonryun Arena Staff";
+ set $@addmon,0;
+ set $@kengaku,0;
+ end;
+}
+//===============================================================================
+gon_test.gat,46,14,4 script Arena Guide 770,{
+ mes "[Son Fiyon]";
+ mes "......";
+ mes "Ah...... Welcome. This is the Arena.";
+ mes "What can I do for you?";
+ next;
+ menu "Arena?",L1,"Fraulein, would you like to go out with me?",L2,"I want to go to the seats.",L3,"I wanna go back",L4,"Nothing, thanks.",L5;
+L1:
+ mes "[Son Fiyon]";
+ mes "The Arena is the section of the village where fights with mosters take place.";
+ next;
+ mes "[Son Fiyon]";
+ mes "Because it is necessary to prepare the correct leveled monster, please talk to the Summoner and call for your favorite monster.";
+ next;
+ mes "[Son Fiyon]";
+ mes "In addition there is a time restriction to 3 minutes starting from admission. Please take care of this.";
+ close;
+L2:
+ mes "[Son Fiyon]";
+ mes "Eh.... what?";
+ mes "Oh, sorry, but I have to work right now......";
+ mes "Please accept my appologies.";
+ close;
+L3:
+ mes "[Son Fiyon]";
+ mes "Certainly! Thank you. Please have a nice time.";
+ next;
+ set $@kengaku,1;
+ warp "gon_test.gat",25,99;
+ end;
+L4:
+ mes "[Son Fiyon]";
+ mes "Thank you. Please use our service again.";
+ next;
+ warp "gonryun.gat",177,112;
+ end;
+L5:
+ mes "[Son Fiyon]";
+ mes "......";
+ mes "Good bye.";
+ close;
+}
+//===============================================================================
+gon_test.gat,42,89,4 script Summoner 774,{
+ if ($@kengaku == 1) goto LError;
+ if ($@addmon == 1) goto Lalready;
+ mes "[Son Yon'u]";
+ mes "Welcome.";
+ mes "What Monster shall I summon?";
+ next;
+ L0:
+ menu "Group 1",L1,"Group 2",L2,"Group 3",L3,"Group 4",L4,"Group 5",L5,"Group 6",L6,"Group 7",L7,"Group 8",L8,"Group 9",L9,"Group 10",L10,"Group 11",L11;
+ L1:
+ menu "Dizziness",L1_1,"The Poison Food",L1_2,"Anemia",L1_3,"The Bug",L1_4,"Incision",L1_5,"Rabies",L1_6,"back",L0;
+ L1_1:
+ monster "gon_test.gat",58,87,"Dizziness",1419,1,"mobend";set $@addmon,1;close;
+ L1_2:
+ monster "gon_test.gat",58,87,"The Poison Food",1428,1,"mobend";set $@addmon,1;close;
+ L1_3:
+ monster "gon_test.gat",58,87,"Anemia",1434,1,"mobend";set $@addmon,1;close;
+ L1_4:
+ monster "gon_test.gat",58,87,"The Bug",1430,1,"mobend";set $@addmon,1;close;
+ L1_5:
+ monster "gon_test.gat",58,87,"Incision",1457,1,"mobend";set $@addmon,1;close;
+ L1_6:
+ monster "gon_test.gat",58,87,"Rabies",1432,1,"mobend";set $@addmon,1;close;
+ L2:
+ menu "Samael",L2_1,"Toror",L2_2,"Kangeishi",L2_3,"Blackdock",L2_4,"Merou",L2_5,"Kyoushi",L2_6,"back",L0;
+ L2_1:
+ monster "gon_test.gat",58,87,"Samael",1462,1,"mobend";set $@addmon,1;close;
+ L2_2:
+ monster "gon_test.gat",58,87,"Toror",1442,1,"mobend";set $@addmon,1;close;
+ L2_3:
+ monster "gon_test.gat",58,87,"Kangeishi",1469,1,"mobend";set $@addmon,1;close;
+ L2_4:
+ monster "gon_test.gat",58,87,"Blackdock",1460,1,"mobend";set $@addmon,1;close;
+ L2_5:
+ monster "gon_test.gat",58,87,"Merou",1425,1,"mobend";set $@addmon,1;close;
+ L2_6:
+ monster "gon_test.gat",58,87,"Kyoushi",1472,1,"mobend";set $@addmon,1;close;
+ L3:
+ menu "Ashimoto",L3_1,"Mushibamu",L3_2,"Sorappo",L3_3,"Freezer",L3_4,"Heat",L3_5,"The Rotten",L3_6,"back",L0;
+ L3_1:
+ monster "gon_test.gat",58,87,"Ashimoto",1454,1,"mobend";set $@addmon,1;close;
+ L3_2:
+ monster "gon_test.gat",58,87,"Mushibamu",1443,1,"mobend";set $@addmon,1;close;
+ L3_3:
+ monster "gon_test.gat",58,87,"Sorappo",1455,1,"mobend";set $@addmon,1;close;
+ L3_4:
+ monster "gon_test.gat",58,87,"Freezer",1426,1,"mobend";set $@addmon,1;close;
+ L3_5:
+ monster "gon_test.gat",58,87,"Heat",1436,1,"mobend";set $@addmon,1;close;
+ L3_6:
+ monster "gon_test.gat",58,87,"The Rotten",1423,1,"mobend";set $@addmon,1;close;
+ L4:
+ menu "Priest",L4_1,"Onion",L4_2,"Big Centipede",L4_3,"Marionette",L4_4,"Matchstick Girl",L4_5,"Firefly",L4_6,"back",L0;
+ L4_1:
+ monster "gon_test.gat",58,87,"Priest",1458,1,"mobend";set $@addmon,1;close;
+ L4_2:
+ monster "gon_test.gat",58,87,"Onion",1440,1,"mobend";set $@addmon,1;close;
+ L4_3:
+ monster "gon_test.gat",58,87,"Big Centipede",1429,1,"mobend";set $@addmon,1;close;
+ L4_4:
+ monster "gon_test.gat",58,87,"Marionette",1459,1,"mobend";set $@addmon,1;close;
+ L4_5:
+ monster "gon_test.gat",58,87,"Matchstick Girl",1444,1,"mobend";set $@addmon,1;close;
+ L4_6:
+ monster "gon_test.gat",58,87,"Fly",1422,1,"mobend";set $@addmon,1;close;
+ L5:
+ menu "Femal Curse",L5_1,"Ikitsuchi",L5_2,"Master Snake",L5_3,"Poison Dragon",L5_4,"Seiryuu, the Blue Dragon",L5_5,"Epidemic Devil",L5_6,"back",L0;
+ L5_1:
+ monster "gon_test.gat",58,87,"Femal Curse",1421,1,"mobend";set $@addmon,1;close;
+ L5_2:
+ monster "gon_test.gat",58,87,"Ikitsuchi",1481,1,"mobend";set $@addmon,1;close;
+ L5_3:
+ monster "gon_test.gat",58,87,"Master Snake",1424,1,"mobend";set $@addmon,1;close;
+ L5_4:
+ monster "gon_test.gat",58,87,"Poison Dragon",1465,1,"mobend";set $@addmon,1;close;
+ L5_5:
+ monster "gon_test.gat",58,87,"Seiryuu, the Blue Dragon",1466,1,"mobend";set $@addmon,1;close;
+ L5_6:
+ monster "gon_test.gat",58,87,"Epidemic Devil",1433,1,"mobend";set $@addmon,1;close;
+ L6:
+ menu "Tapir",L6_1,"Moat Putter",L6_2,"God of Lightning",L6_3,"Revengeing Ghost",L6_4,"Fusoushin",L6_5,"Hanmou",L6_6,"back",L0;
+ L6_1:
+ monster "gon_test.gat",58,87,"Tapir",1427,1,"mobend";set $@addmon,1;close;
+ L6_2:
+ monster "gon_test.gat",58,87,"Moat Putter",1473,1,"mobend";set $@addmon,1;close;
+ L6_3:
+ monster "gon_test.gat",58,87,"God of Lightning",1431,1,"mobend";set $@addmon,1;close;
+ L6_4:
+ monster "gon_test.gat",58,87,"Revengeing Ghost",1446,1,"mobend";set $@addmon,1;close;
+ L6_5:
+ monster "gon_test.gat",58,87,"Fusoushin",1474,1,"mobend";set $@addmon,1;close;
+ L6_6:
+ monster "gon_test.gat",58,87,"Hanmou",1471,1,"mobend";set $@addmon,1;close;
+ L7:
+ menu "Cane",L7_1,"Axe",L7_2,"Big Hammer",L7_3,"Armor",L7_4,"Bow",L7_5,"Iron Bullet",L7_6,"back",L0;
+ L7_1:
+ monster "gon_test.gat",58,87,"Cane",1450,1,"mobend";set $@addmon,1;close;
+ L7_2:
+ monster "gon_test.gat",58,87,"Axe",1439,1,"mobend";set $@addmon,1;close;
+ L7_3:
+ monster "gon_test.gat",58,87,"Big Hammer",1461,1,"mobend";set $@addmon,1;close;
+ L7_4:
+ monster "gon_test.gat",58,87,"Armor",1467,1,"mobend";set $@addmon,1;close;
+ L7_5:
+ monster "gon_test.gat",58,87,"Bow",1453,1,"mobend";set $@addmon,1;close;
+ L7_6:
+ monster "gon_test.gat",58,87,"Iron Bullet",1479,1,"mobend";set $@addmon,1;close;
+ L8:
+ menu "Lips",L8_1,"Tooth",L8_2,"Hair",L8_3,"The Hand",L8_4,"Muscle",L8_5,"Bone",L8_6,"back",L0;
+ L8_1:
+ monster "gon_test.gat",58,87,"Lips",1451,1,"mobend";set $@addmon,1;close;
+ L8_2:
+ monster "gon_test.gat",58,87,"Tooth",1475,1,"mobend";set $@addmon,1;close;
+ L8_3:
+ monster "gon_test.gat",58,87,"The Hair",1437,1,"mobend";set $@addmon,1;close;
+ L8_4:
+ monster "gon_test.gat",58,87,"Hand",1441,1,"mobend";set $@addmon,1;close;
+ L8_5:
+ monster "gon_test.gat",58,87,"Muscle",1476,1,"mobend";set $@addmon,1;close;
+ L8_6:
+ monster "gon_test.gat",58,87,"Bone",1435,1,"mobend";set $@addmon,1;close;
+ L9:
+ menu "Ball",L9_1,"Mirror",L9_2,"Book",L9_3,"Glove",L9_4,"Bag",L9_5,"Clothes",L9_6,"back",L0;
+ L9_1:
+ monster "gon_test.gat",58,87,"Ball",1477,1,"mobend";set $@addmon,1;close;
+ L9_2:
+ monster "gon_test.gat",58,87,"Mirror",1448,1,"mobend";set $@addmon,1;close;
+ L9_3:
+ monster "gon_test.gat",58,87,"Book",1478,1,"mobend";set $@addmon,1;close;
+ L9_4:
+ monster "gon_test.gat",58,87,"Glove",1489,1,"mobend";set $@addmon,1;close;
+ L9_5:
+ monster "gon_test.gat",58,87,"Bag",1488,1,"mobend";set $@addmon,1;close;
+ L9_6:
+ monster "gon_test.gat",58,87,"Clothes",1438,1,"mobend";set $@addmon,1;close;
+ L10:
+ menu "The Queen",L10_1,"Hot-Blood-Man",L10_2,"Executioner",L10_3,"Mutant Dragon",L10_4,"Syntetic Beast",L10_5,"Satan",L10_6,"back",L0;
+ L10_1:
+ monster "gon_test.gat",58,87,"The Queen",1482,1,"mobend";set $@addmon,1;close;
+ L10_2:
+ monster "gon_test.gat",58,87,"Hot-Blood-Man",1464,1,"mobend";set $@addmon,1;close;
+ L10_3:
+ monster "gon_test.gat",58,87,"Executioner",1487,1,"mobend";set $@addmon,1;close;
+ L10_4:
+ monster "gon_test.gat",58,87,"Mutant Dragon",1449,1,"mobend";set $@addmon,1;close;
+ L10_5:
+ monster "gon_test.gat",58,87,"Syntetic Beast",1456,1,"mobend";set $@addmon,1;close;
+ L10_6:
+ monster "gon_test.gat",58,87,"Satan",1486,1,"mobend";set $@addmon,1;close;
+ L11:
+ menu "Hunter",L11_1,"Assassin",L11_2,"Samurai",L11_3,"Budoka",L11_4,"Fencer",L11_5,"back",L0;
+ L11_1:
+ monster "gon_test.gat",58,87,"Hunter",1447,1,"mobend";set $@addmon,1;close;
+ L11_2:
+ monster "gon_test.gat",58,87,"Assassin",1483,1,"mobend";set $@addmon,1;close;
+ L11_3:
+ monster "gon_test.gat",58,87,"Samurai",1490,1,"mobend";set $@addmon,1;close;
+ L11_4:
+ monster "gon_test.gat",58,87,"Budoka",1484,1,"mobend";set $@addmon,1;close;
+ L11_5:
+ monster "gon_test.gat",58,87,"Fencer",1485,1,"mobend";set $@addmon,1;close;
+Lalready:
+ mes "[Son Yon'u]";
+ mes "The monster has been summoned already. It is only possible to summon one monster at a time. Please re-enter the arena, if you wish another opponent.";
+ close;
+LError:
+ mes "[Son Yon'u]";
+ mes "Please attend after applying formally.";
+ close;
+}
+//===============================================================================
+gon_test.gat,58,87,0 script mobend -1,{
+ mapannounce "gon_test.gat","Summoner: Congratulations.",0;
+ stopnpctimer "gontimer";
+ addtimer 5000, "mobend::OnReturn";
+ end;
+OnReturn:
+ enablenpc "Gonryun Arena Staff";
+ donpcevent "Gonryun Arena Staff::OnInit";
+ warp "gon_test.gat",44,4;
+ end;
+}
+//===============================================================================
+gon_test.gat,70,103,4 script Gateway Staff 773,{
+ mes "[Che En'en]";
+ mes "You want to return?";
+ next;
+ menu "Return",-,"Stay",Lno;
+ mes "[Che En'en]";
+ mes "Thank you. Please come again.";
+ next;
+ warp "gon_test.gat",44,4;
+ set $@kengaku,0;
+ end;
+ Lno:
+ mes "[Che En'en]";
+ mes "Thank you. ";
+ close;
+}
+//===============================================================================
+gon_test.gat,51,90,0 script gontimer -1,{
+OnTimer1000:
+ mapannounce "gon_test.gat","Time limit is 3 Minutes from now.",8;
+ end;
+OnTimer120000:
+ mapannounce "gon_test.gat","1 minute remaining.",0;
+ end;
+OnTimer180000:
+ stopnpctimer "gontimer";
+ mapannounce "gon_test.gat","Time Limit exceeded.",0;
+ areawarp "gon_test.gat",42,82,73,91,"gon_test.gat",44,4;
+ enablenpc "Gonryun Arena Staff";
+ donpcevent "Gonryun Arena Staff::OnInit";
+ killmonsterall "gon_test.gat";
+ end;
+}
diff --git a/npc/custom/warper/warper.txt b/npc/custom/warper/warper.txt
new file mode 100644
index 000000000..501ce99e1
--- /dev/null
+++ b/npc/custom/warper/warper.txt
@@ -0,0 +1,137 @@
+//===== eAthena Script =======================================
+//= Warper Script
+//===== By: ==================================================
+//= Darkchild
+//===== Current Version: =====================================
+//= 1.6
+//===== Compatible With: =====================================
+//= Any eAthena Version;
+//===== Description: =========================================
+//= Generic warper...
+//===== Additional Comments: =================================
+//= 1.0 by Darkchild
+//= 1.1 by jabs
+//= 1.2 by Lupus (placement fixed in Amatsu)
+//= 1.3 fixed Louyang label typo, added warp and WARPRA into
+//= Nifleheim. Also sorted all names in alphabet order [Lupus]
+//= 1.4 fixed morroc warp npc overlaying kafra [Aria]
+//= 1.4a Added Ayothaya and Einbroch to list, and town Warpra's [Fredzilla]
+//= 1.4b fixed Izlude warp npc overlaying BBS [Justin84]
+//= 1.5 Added this NPC to more places [Lupus]
+//= 1.6 Rewrote a lot. Changed the sprite, some locations. [Poki#3]
+//= TODO Add an option for selecting the level of the dungeon. [Poki#3]
+//============================================================
+//============================================================
+//= To allow selecting the Level of the Dungeon you want to
+//= Warp to set the @lvlselect variable to 1 (Not implemented yet!)
+//============================================================
+
+- script Warp Agent::warpra 859,{
+// set @lvlselect,0;
+ mes "[Warp Agent]";
+ mes "Hello,";
+ mes "I can teleport you to any Town or Dungeon!";
+ mes "Were do you want to go?";
+ next;
+ menu "To a Town",-,"To a Dungeon",L_dungeon;
+ next;
+ mes "[Warp Agent]";
+ mes "Please select your destination.";
+ next;
+ menu "Alberta",walberta,"Aldebaran",waldebaran,"Amatsu",wamatsu,"Ayothaya",wayothaya,"Comodo",wcomodo,"Einbroch",weinbroch,"Einbech",weinbech,"Geffen",wgeffen,"Gonryun",wgonryun,"Hugel",whugel,"Izlude",wizlude,"Lighthalzen",wlighthalzen,"Louyang",wlouyang,"Lutie",wxmas,"Morroc",wmorroc,"Payon",wpayon,"Prontera",wprontera,"Umbala",wumbala,"Yuno",wyuno;
+L_dungeon:
+ mes "[Warp Agent]";
+ mes "Please select your destination.";
+ next;
+ menu "Abyss Lake",dabbys,"Amatsu Dungeon",damatsu,"Anthell",dant,"Ayothaya Dungeon",dayothaya,"Bibilan Dungeon",dbibilan,"Coal Mine (Dead Pit)",dcoal,"Culvert",dculvert,"Einbech Dungeon",dein,"Glast Heim",dglast,"Gonryun Dungeon",dgonryun,"Juperos",djuperos,"Lighthalzen Bio Lab",dlighthalzen,"Magma Dungeon",dmagma,"Niflheim",dniflheim,"Odin Temple",dodin,"Orc Dungeon",dorc,"Payon Dungeon",dpayon,"Pyramids",dpyramids,"Sphinx",dsphinx,"Sunken Ship",dsunken,"Thanatos Tower",dthanatos,"Turtle Dungeon",dturtle;
+
+
+//----------------Towns----------------\\
+walberta: warp "alberta.gat", 27, 236; end;
+waldebaran: warp "aldebaran.gat", 145, 120; end;
+wamatsu: warp "amatsu.gat", 197, 86; end;
+wayothaya: warp "ayothaya.gat", 149, 118; end;
+wcomodo: warp "comodo.gat", 188, 161; end;
+weinbroch: warp "einbroch.gat", 64, 200; end;
+weinbech: warp "einbech.gat", 70, 95; end;
+wgeffen: warp "geffen.gat", 119, 66; end;
+wgonryun: warp "gonryun.gat", 150, 130; end;
+whugel: warp "hugel.gat", 96, 145; end;
+wizlude: warp "izlude.gat", 128, 111; end;
+wlighthalzen: warp "lighthalzen.gat", 158, 92; end;
+wlouyang: warp "louyang.gat", 210, 108; end;
+wmorroc: warp "morocc.gat", 159, 93; end;
+wprontera: warp "prontera.gat", 156, 187; end;
+wpayon: warp "payon.gat", 152, 75; end;
+wumbala: warp "umbala.gat", 130, 130; end;
+wxmas: warp "xmas.gat", 148, 131; end;
+wyuno: warp "yuno.gat", 160, 168; end;
+
+//----------------Dungeons----------------\\
+dabbys: warp "hu_fild05.gat", 189, 207; end;
+damatsu: warp "ama_dun01.gat", 229, 12; end;
+dant: warp "moc_fild04.gat", 210, 328; end;
+dayothaya: warp "ayo_fild02.gat", 280, 149; end;
+dbibilan: warp "izlu2dun.gat", 106, 88; end;
+dculvert: warp "prt_sewb1.gat", 126, 248; end;
+dcoal: warp "mjolnir_02.gat", 81, 359; end;
+dein: warp "einbech.gat", 135, 249; end;
+dglast: warp "glast_01.gat", 368, 303; end;
+dgonryun: warp "gonryun.gat", 160, 195; end;
+djuperos: warp "yuno_fild07.gat", 218, 176; end;
+dlighthalzen: warp "lighthalzen.gat", 158, 285; end;
+dmagma: warp "yuno_fild03.gat", 39, 140; end;
+dniflheim: warp "niflheim.gat", 35, 161; end;
+dodin: warp "odin_tem01.gat", 98, 144; end;
+dorc: warp "gef_fild10.gat", 70, 332; end;
+dpayon: warp "pay_arche.gat", 43, 132; end;
+dpyramids: warp "moc_ruins.gat", 62, 162; end;
+dsphinx: warp "moc_fild19.gat", 107, 100; end;
+dsunken: warp "alb2trea.gat", 75, 98; end;
+dthanatos: warp "tha_scene01.gat", 131, 223; end;
+dturtle: warp "tur_dun01.gat", 149, 238; end;
+}
+
+//----------------Towns----------------\\
+alberta.gat,31,240,4 duplicate(warpra) Warp Agent 859
+aldebaran.gat,145,118,4 duplicate(warpra) Warp Agent 859
+amatsu.gat,192,81,1 duplicate(warpra) Warp Agent 859
+ayothaya.gat,144,117,6 duplicate(warpra) Warp Agent 859
+comodo.gat,194,158,4 duplicate(warpra) Warp Agent 859
+einbroch.gat,59,205,4 duplicate(warpra) Warp Agent 859
+einbroch.gat,243,189,2 duplicate(warpra) Warp Agent 859
+einbech.gat,135,249,4 duplicate(warpra) Warp Agent 859
+geffen.gat,115,66,4 duplicate(warpra) Warp Agent 859
+gonryun.gat,151,130,4 duplicate(warpra) Warp Agent 859
+izlude.gat,133,117,4 duplicate(warpra) Warp Agent 859
+lighthalzen.gat,155,79,6 duplicate(warpra) Warp Agent 859
+louyang.gat,210,106,4 duplicate(warpra) Warp Agent 859
+morocc.gat,156,95,4 duplicate(warpra) Warp Agent 859
+prontera.gat,161,192,4 duplicate(warpra) Warp Agent 859
+payon.gat,182,110,4 duplicate(warpra) Warp Agent 859
+umbala.gat,132,130,4 duplicate(warpra) Warp Agent 859
+xmas.gat,150,136,4 duplicate(warpra) Warp Agent 859
+yuno.gat,137,162,4 duplicate(warpra) Warp Agent 859
+
+//----------------Dungeons----------------\\
+ama_dun01.gat,233,9,1 duplicate(warpra) Warp Agent 859
+moc_fild04.gat,207,331,4 duplicate(warpra) Warp Agent 859
+ayo_fild02.gat,279,154,4 duplicate(warpra) Warp Agent 859
+izlu2dun.gat,104,82,4 duplicate(warpra) Warp Agent 859
+prt_sewb1.gat,125,253,4 duplicate(warpra) Warp Agent 859
+mjolnir_02.gat,85,363,4 duplicate(warpra) Warp Agent 859
+einbech.gat,81,101,1 duplicate(warpra) Warp Agent 859
+glast_01.gat,370,308,4 duplicate(warpra) Warp Agent 859
+yuno_fild03.gat,37,135,4 duplicate(warpra) Warp Agent 859
+niflheim.gat,32,161,4 duplicate(warpra) Warp Agent 859
+gef_fild10.gat,71,339,4 duplicate(warpra) Warp Agent 859
+pay_arche.gat,39,135,4 duplicate(warpra) Warp Agent 859
+moc_ruins.gat,64,166,4 duplicate(warpra) Warp Agent 859
+moc_fild19.gat,106,97,4 duplicate(warpra) Warp Agent 859
+alb2trea.gat,73,101,4 duplicate(warpra) Warp Agent 859
+tur_dun01.gat,148,239,4 duplicate(warpra) Warp Agent 859
+lhz_dun01.gat,157,285,4 duplicate(warpra) Warp Agent 859
+hu_fild05.gat,186,210,4 duplicate(warpra) Warp Agent 859
+yuno_fild07.gat,221,179,4 duplicate(warpra) Warp Agent 859
+tha_scene01.gat,139,194,1 duplicate(warpra) Warp Agent 859
+odin_tem01.gat,96,149,4 duplicate(warpra) Warp Agent 859