diff options
Diffstat (limited to 'npc/custom')
87 files changed, 28345 insertions, 28345 deletions
diff --git a/npc/custom/Auctioneer.txt b/npc/custom/Auctioneer.txt index 9a36bc268..14ca7d331 100644 --- a/npc/custom/Auctioneer.txt +++ b/npc/custom/Auctioneer.txt @@ -1,563 +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;
-
-}
+//===== 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 index e82a9590f..ed03a6af2 100644 --- a/npc/custom/Lance/FR_HallOfFame.c +++ b/npc/custom/Lance/FR_HallOfFame.c @@ -1,297 +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 OnPCLoginEvent -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;
-
+//===== 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 OnPCLoginEvent -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 index 8111f3dea..f0a6a4638 100644 --- a/npc/custom/Lance/FR_MailSystem.c +++ b/npc/custom/Lance/FR_MailSystem.c @@ -1,118 +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!";
+//(=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=) +//( (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; - emotion e_no1;
- menu "Delete another mail", DELMAIL, "Back", MENUSYS;
- close;
-
-OnTouch:
- npctalk "Relax.. I'm no bad guy..";
- emotion e_heh;
- end;
+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 index db808d8af..b7c803876 100644 --- a/npc/custom/Lance/FR_WeatherController.c +++ b/npc/custom/Lance/FR_WeatherController.c @@ -1,403 +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;
-}
-
-
+- 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 index c8ee2fc65..ba66795c8 100644 --- a/npc/custom/MVP_arena/amvp_func.txt +++ b/npc/custom/MVP_arena/amvp_func.txt @@ -1,101 +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;
-
+// ---- 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 index bb19d6a23..816879c21 100644 --- a/npc/custom/MVP_arena/arena_mvp.txt +++ b/npc/custom/MVP_arena/arena_mvp.txt @@ -1,792 +1,792 @@ -// ---- MVP ARENA!!!!!! By Darkchild with 16 diff MVP's inside
-// -- Optimised The MVP arena!!!! By massdriller
-// - NPC in prontera
-// - Removed Duplicates [Silent]
-
-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#01 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#02 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#03 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#04 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#05 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#06 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#07 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#08 727,{
- mes "[ ^0065DFMVP-Protector^000000 ]";
- callfunc "Ramvp_M2";
-}
-// --- Beta-MVP #1
-pvp_n_1-3.gat,100,100,4 script MVP-Protector#09 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#10 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#11 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#12 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#13 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#14 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#15 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#16 727,{
- mes "[ ^0065DFMVP-Protector^000000 ]";
- callfunc "Ramvp_M2";
-}
-// --- Theta-MVP #1
-pvp_n_1-4.gat,100,100,4 script MVP-Protector#17 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#18 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#19 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#20 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#21 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#22 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#23 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#24 727,{
- mes "[ ^0065DFMVP-Protector^000000 ]";
- callfunc "Ramvp_M2";
-}
-// --- Epsilon-MVP #1
-pvp_n_1-5.gat,100,100,4 script MVP-Protector#25 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#26 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#27 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#28 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#29 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#30 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#31 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#32 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
+// ---- MVP ARENA!!!!!! By Darkchild with 16 diff MVP's inside +// -- Optimised The MVP arena!!!! By massdriller +// - NPC in prontera +// - Removed Duplicates [Silent] + +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#01 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#02 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#03 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#04 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#05 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#06 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#07 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#08 727,{ + mes "[ ^0065DFMVP-Protector^000000 ]"; + callfunc "Ramvp_M2"; +} +// --- Beta-MVP #1 +pvp_n_1-3.gat,100,100,4 script MVP-Protector#09 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#10 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#11 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#12 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#13 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#14 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#15 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#16 727,{ + mes "[ ^0065DFMVP-Protector^000000 ]"; + callfunc "Ramvp_M2"; +} +// --- Theta-MVP #1 +pvp_n_1-4.gat,100,100,4 script MVP-Protector#17 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#18 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#19 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#20 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#21 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#22 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#23 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#24 727,{ + mes "[ ^0065DFMVP-Protector^000000 ]"; + callfunc "Ramvp_M2"; +} +// --- Epsilon-MVP #1 +pvp_n_1-5.gat,100,100,4 script MVP-Protector#25 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#26 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#27 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#28 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#29 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#30 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#31 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#32 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 index 7a0d92971..8a842dec7 100644 --- a/npc/custom/WoE_Setter.txt +++ b/npc/custom/WoE_Setter.txt @@ -1,187 +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;
-}
+//===== 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 index a027a437a..af0c8d3b2 100644 --- a/npc/custom/adoption.txt +++ b/npc/custom/adoption.txt @@ -1,503 +1,503 @@ -//===== Athena Script =======================================
-//= Simple Adoption Script
-//===== By ================================================
-//= Fredzilla with help from Kamari,Acky
-//===== Version ===========================================
-//= 1.6a Fixed wrong label name [KarLaeda]
-//= 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,{
-
- //If u're a GM you can always reset current Adoption process
- if(getgmlevel(99)>=90) {
- mes "[GM Menu]";
- mes "Would you like to reset curent adoption?";
- next;
- menu "Yes",-,"No",L_SKIP;
- callfunc "AdoptReset","GM reset";
- close;
- }
-L_SKIP:
-
- 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 currentlly an adoption in progress, come back when it is 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::OnAdopt";
- addtimer 300000,"timeadopt::OnAdopt";
- 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::OnAdopt";
- addtimer 300000,"timeadopt::OnAdopt";
- 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::OnAdopt";
- addtimer 300000,"timeadopt::OnAdopt";
- 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::OnAdopt";
- addtimer 300000,"timeadopt::OnAdopt";
- 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::OnAdopt";
- addtimer 300000,"timeadopt::OnAdopt";
- 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::OnAdopt";
- addtimer 300000,"timeadopt::OnAdopt";
- 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::OnAdopt";
- addtimer 300000,"timeadopt::OnAdopt";
- 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 A_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 A_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 A_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::OnAdopt";
- 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,{
-OnAdopt:
- callfunc "AdoptReset","too much time has passed between steps";
- end;
-}
-function script AdoptReset {
- deltimer "timeadopt::OnAdopt";
- 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;
-}
+//===== Athena Script ======================================= +//= Simple Adoption Script +//===== By ================================================ +//= Fredzilla with help from Kamari,Acky +//===== Version =========================================== +//= 1.6a Fixed wrong label name [KarLaeda] +//= 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,{ + + //If u're a GM you can always reset current Adoption process + if(getgmlevel(99)>=90) { + mes "[GM Menu]"; + mes "Would you like to reset curent adoption?"; + next; + menu "Yes",-,"No",L_SKIP; + callfunc "AdoptReset","GM reset"; + close; + } +L_SKIP: + + 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 currentlly an adoption in progress, come back when it is 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::OnAdopt"; + addtimer 300000,"timeadopt::OnAdopt"; + 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::OnAdopt"; + addtimer 300000,"timeadopt::OnAdopt"; + 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::OnAdopt"; + addtimer 300000,"timeadopt::OnAdopt"; + 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::OnAdopt"; + addtimer 300000,"timeadopt::OnAdopt"; + 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::OnAdopt"; + addtimer 300000,"timeadopt::OnAdopt"; + 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::OnAdopt"; + addtimer 300000,"timeadopt::OnAdopt"; + 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::OnAdopt"; + addtimer 300000,"timeadopt::OnAdopt"; + 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 A_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 A_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 A_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::OnAdopt"; + 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,{ +OnAdopt: + callfunc "AdoptReset","too much time has passed between steps"; + end; +} +function script AdoptReset { + deltimer "timeadopt::OnAdopt"; + 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 index 5f99d7f04..87f6729c8 100644 --- a/npc/custom/airplane.txt +++ b/npc/custom/airplane.txt @@ -1,439 +1,439 @@ -//===== eAthena Script =======================================
-//= elRO Airship
-//===== By: ==================================================
-//= Edited And removed irrelevent comments by eAthena Dev Team
-//= Draike\Bluto\Hephaestus
-//===== Current Version: =====================================
-//= 2.2a
-//===== 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.
-//= 2.1 Removed Duplicates [Silent]
-//= 2.2 Added missing next;'s [Evera]
-//============================================================
-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?";
- next;
- 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.";
- next;
- menu "Yes, please.",Itin,"No thanks.",L_Nope;
- close;
- end;
-
-Itin:
-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#01 774,{
-callfunc "F_Porter",1;
-}
-gef_fild00.gat,50,364,5 script Porter#02 774,{
-callfunc "F_Porter",5;
-}
-moc_fild10.gat,163,173,5 script Porter#03 774,{
-callfunc "F_Porter",6;
-}
-mjolnir_12.gat,61,380,5 script Porter#04 774,{
-callfunc "F_Porter",3;
-}
-pay_fild08.gat,159,91,5 script Porter#05 774,{
-callfunc "F_Porter",2;
-}
-pay_fild03.gat,194,181,5 script Porter#06 774,{
-callfunc "F_Porter",4;
-}
-glast_01.gat,196,326,1 script Porter#07 774,{
-callfunc "F_Porter",7;
-}
-umbala.gat,188,98,3 script Porter#08 774,{
-callfunc "F_Porter",8;
-}
-comodo.gat,203,75,8 script Porter#09 774,{
-callfunc "F_Porter",9;
-}
-amatsu.gat,115,78,8 script Porter#10 774,{
-callfunc "F_Porter",10;
-}
-niflheim.gat,132,242,5 script Porter#11 774,{
-callfunc "F_Porter",11;
-}
-xmas.gat,232,309,5 script Porter#12 774,{
-callfunc "F_Porter",12;
-}
-louyang.gat,35,279,8 script Porter#13 774,{
-callfunc "F_Porter",13;
-}
-gonryun.gat,82,95,7 script Porter#14 774,{
-callfunc "F_Porter",14;
-}
-yuno.gat,58,195,4 script Porter#15 774,{
-callfunc "F_Porter",15;
-}
-moc_fild04.gat,210,326,2 script Porter#16 774,{
-callfunc "F_Porter",16;
-}
-jawaii.gat,247,174,7 script Porter#17 774,{
-callfunc "F_Porter",17;
-}
-gef_fild10.gat,159,95,2 script Porter#18 774,{
-callfunc "F_Porter",18;
-}
-mjolnir_02.gat,76,364,5 script Porter#19 774,{
-callfunc "F_Porter",19;
-}
-gefenia01.gat,97,22,6 script Porter#20 774,{
-callfunc "F_Porter",20;
-}
-ayothaya.gat,182,105,5 script Porter#21 774,{
-callfunc "F_Porter",21;
-}
-lighthalzen.gat,99,241,4 script Porter#22 774,{
-callfunc "F_Porter",22;
-}
-jupe_gate.gat,46,18,7 script Porter#23 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?";
- next;
- 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:
- 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;
+//===== eAthena Script ======================================= +//= elRO Airship +//===== By: ================================================== +//= Edited And removed irrelevent comments by eAthena Dev Team +//= Draike\Bluto\Hephaestus +//===== Current Version: ===================================== +//= 2.2a +//===== 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. +//= 2.1 Removed Duplicates [Silent] +//= 2.2 Added missing next;'s [Evera] +//============================================================ +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?"; + next; + 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."; + next; + menu "Yes, please.",Itin,"No thanks.",L_Nope; + close; + end; + +Itin: +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#01 774,{ +callfunc "F_Porter",1; +} +gef_fild00.gat,50,364,5 script Porter#02 774,{ +callfunc "F_Porter",5; +} +moc_fild10.gat,163,173,5 script Porter#03 774,{ +callfunc "F_Porter",6; +} +mjolnir_12.gat,61,380,5 script Porter#04 774,{ +callfunc "F_Porter",3; +} +pay_fild08.gat,159,91,5 script Porter#05 774,{ +callfunc "F_Porter",2; +} +pay_fild03.gat,194,181,5 script Porter#06 774,{ +callfunc "F_Porter",4; +} +glast_01.gat,196,326,1 script Porter#07 774,{ +callfunc "F_Porter",7; +} +umbala.gat,188,98,3 script Porter#08 774,{ +callfunc "F_Porter",8; +} +comodo.gat,203,75,8 script Porter#09 774,{ +callfunc "F_Porter",9; +} +amatsu.gat,115,78,8 script Porter#10 774,{ +callfunc "F_Porter",10; +} +niflheim.gat,132,242,5 script Porter#11 774,{ +callfunc "F_Porter",11; +} +xmas.gat,232,309,5 script Porter#12 774,{ +callfunc "F_Porter",12; +} +louyang.gat,35,279,8 script Porter#13 774,{ +callfunc "F_Porter",13; +} +gonryun.gat,82,95,7 script Porter#14 774,{ +callfunc "F_Porter",14; +} +yuno.gat,58,195,4 script Porter#15 774,{ +callfunc "F_Porter",15; +} +moc_fild04.gat,210,326,2 script Porter#16 774,{ +callfunc "F_Porter",16; +} +jawaii.gat,247,174,7 script Porter#17 774,{ +callfunc "F_Porter",17; +} +gef_fild10.gat,159,95,2 script Porter#18 774,{ +callfunc "F_Porter",18; +} +mjolnir_02.gat,76,364,5 script Porter#19 774,{ +callfunc "F_Porter",19; +} +gefenia01.gat,97,22,6 script Porter#20 774,{ +callfunc "F_Porter",20; +} +ayothaya.gat,182,105,5 script Porter#21 774,{ +callfunc "F_Porter",21; +} +lighthalzen.gat,99,241,4 script Porter#22 774,{ +callfunc "F_Porter",22; +} +jupe_gate.gat,46,18,7 script Porter#23 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?"; + next; + 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: + 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 index 67889a139..379ddc735 100644 --- a/npc/custom/banks/bank.txt +++ b/npc/custom/banks/bank.txt @@ -1,126 +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;
+//===== 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 index 941501e88..970581ce7 100644 --- a/npc/custom/banks/kafra_bank.txt +++ b/npc/custom/banks/kafra_bank.txt @@ -1,116 +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
+//===== 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 index 0f8aa4e2a..c3429b5ec 100644 --- a/npc/custom/blackjack.txt +++ b/npc/custom/blackjack.txt @@ -1,349 +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;
-}
+//===== 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 index 03ed47d9d..5f36d4165 100644 --- a/npc/custom/breeder.txt +++ b/npc/custom/breeder.txt @@ -1,87 +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;
-}
+//===== 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 index 8af6ed157..3b3e97dd8 100644 --- a/npc/custom/card_remover.txt +++ b/npc/custom/card_remover.txt @@ -1,175 +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;
-}
+// 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 index 6e17bb170..77f3dc16a 100644 --- a/npc/custom/devnpc.txt +++ b/npc/custom/devnpc.txt @@ -1,508 +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;
-}
+//===== 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 index 4ebfc41f9..f7fb16afc 100644 --- a/npc/custom/dye.txt +++ b/npc/custom/dye.txt @@ -1,176 +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;
-}
-
+//===== 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/eAAC_Scripts/DonationGirl/donate.txt b/npc/custom/eAAC_Scripts/DonationGirl/donate.txt index 84824b8d7..66e619333 100644 --- a/npc/custom/eAAC_Scripts/DonationGirl/donate.txt +++ b/npc/custom/eAAC_Scripts/DonationGirl/donate.txt @@ -1,365 +1,365 @@ -//===== Athena Script =======================================
-//= Donation NPC
-//===== By ==================================================
-//= Josh
-//===== Version =============================================
-//= 1.0 - First release. Probably contains bugs/security
-//= risks
-//= 1.1 - Added a check for whether the account exists when
-//= adding a donator. Need to improve ordering when
-//= viewing all donations.
-//= 1.2 - Modified for public use. Added checkweight feature.
-//= 2.0 - Many changes, especially ones I had always wanted
-//= to add to this script. Includes reading items from
-//= a separate SQL table and more database manipulation
-//= options for GMs.
-//= 2.1 - Made few changes including the add/remove items
-//= feature.
-//= 3.0 - All strings inputed by a user and user/char names
-//= in SQL queries are now escaped. Each item has a
-//= price rather than a quantity. This script can work
-//= with decimals.
-//= 3.1 - Added quotes to some queries, fixed a variable and
-//= removed a comment.
-//= 3.2 - Fixed a problem where eAthena would crash if a
-//= query returned NULL.
-//= 3.3 - Optimized query speeds by combining a few select
-//= queries into one. Requires Trunk 7975.
-//===== Compatible With =====================================
-//= eAthena - any version that contains the new query_sql
-//= command (Trunk 7975).
-//===== Description =========================================
-//= A script that lets a player claim an item for donating.
-//= Allows a GM to input each donation.
-//===== Comments ============================================
-//= This script uses SQL tables to store variables for the
-//= amount donated by users and the items claimable.
-//===== Installation ========================================
-//= You must execute donate.sql and donate_item_db.sql before
-//= using this script.
-//===========================================================
-//= Thanks to Vich for helping me with the SQL syntax.
-//= Thanks to Lance for helping me with the the arrays and
-//= for implementing query_sql.
-//= Thanks to Skotlex for implementing escape_sql.
-//= Thanks to Toms for implementing the new multi-column
-//= query_sql command.
-//===========================================================
-
-prontera.gat,145,179,5 script Donation Girl 714,{
-
-if (getgmlevel() >= 80) goto L_GM;
-
-L_START:
-mes "[Donation Girl]";
-mes "Hello! I'm the Donation Girl!";
-mes "If you have made a donation,";
-mes "you are entitled to a reward!";
-next;
-menu "More info",-,"Make a claim",L_CHECK,"Statistics",L_STATS;
-L_INFO:
-mes "[Donation Girl]";
-mes "Each month, a lot of money is paid to keep this server running.";
-next;
-mes "[Donation Girl]";
-mes "You can support us by donating any amount of money.";
-next;
-mes "[Donation Girl]";
-mes "To show our appreciation, we will gladly give you a reward.";
-next;
-menu "Continue",L_START,"Cancel",-;
-close;
-
-L_CHECK:
-query_sql "SELECT `amount`,`claimed` FROM `donate` WHERE `account_id` = "+getcharid(3)+"", @amount$, @claimed$;
-query_sql "SELECT MIN(price) FROM `donate_item_db`", @min$;
-query_sql "SELECT '"+@amount$+"' - '"+@claimed$+"'", @value$;
-query_sql "SELECT '"+@value$+"' >= '"+@min$+"'", @enough;
-if(@enough) goto L_CLAIM;
-mes "[Donation Girl]";
-mes "Sorry, you do not have enough to make a claim.";
-mes "If you have donated but have not made a claim,";
-mes "Please give us time to process your donation.";
-close;
-
-L_CLAIM:
-mes "[Donation Girl]";
-mes "Thankyou for donating!";
-mes "You have $"+@value$+" worth of credit!";
-mes "Would you like to claim an item now?";
-next;
-menu "No",-,"Yes",L_YES;
-mes "[Donation Girl]";
-mes "Ok! You are able to collect your item(s) any time!";
-close;
-
-L_YES:
-mes "[Donation Girl]";
-mes "Very well. Which item would you like?";
-next;
-query_sql "SELECT `name` FROM `donate_item_db` ORDER BY `name` ASC",$@name$;
-set $@menu$, $@name$[0];
- for(set $@i, 1; $@i < 127; set $@i, $@i + 1){
- set $@menu$, $@menu$ + ":" + $@name$[$@i];
- }
-
-set @menu, (select($@menu$))-1;
-
-query_sql "SELECT `id`,`price` FROM `donate_item_db` WHERE `name` = '"+$@name$[@menu]+"'", @id, @price$;
-query_sql "SELECT TRUNCATE("+@value$+" / "+@price$+",0)", @max;
-
-mes "[Donation Girl]";
-mes ""+$@name$[@menu]+"s cost $"+@price$+" each.";
-mes "How many "+$@name$[@menu]+"s would you like to claim?";
-mes "Maximum: "+@max+".";
-input @quantity;
-
-if(@quantity>@max) {
- mes "[Donation Girl]";
- mes "Sorry, but you do not have enough to claim "+@quantity+" "+$@name$[@menu]+"s.";
- next;
- goto L_CLAIM;
- }
-
-if(!@quantity) {
- mes "[Donation Girl]";
- mes "You can't have 0 as an amount!";
- next;
- goto L_CLAIM;
- }
-
-if (checkweight(@id,@quantity) == 0) {
- mes "[Donation Girl]";
- mes "I'm sorry, but you cannot carry "+@quantity+" "+$@name$[@menu]+"s.";
- next;
- goto L_CLAIM;
- }
-
-query_sql "SELECT "+@quantity+" * "+@price$+"", @total$;
-mes "Are you sure you want to claim "+@quantity+" "+$@name$[@menu]+"s for $"+@total$+"?";
-next;
-menu "No",L_CLAIM,"Yes",-;
-query_sql "UPDATE `donate` SET `claimed` = `claimed` + "+@total$+" WHERE `account_id` = '"+getcharid(3)+"'";
-getitem @id,@quantity;
-mes "[Donation Girl]";
-mes "Thankyou for donating! We hope you enjoy your gift!";
-close;
-
-L_STATS:
-mes "[Donation Girl]";
-query_sql "SELECT IFNULL((SELECT SUM(amount) FROM `donate`),0)", @total$;
-mes "Our fund is at a total of $"+@total$+"";
-next;
-menu "More info",L_INFO,"Make a claim",L_CHECK,"Statistics",L_STATS;
-close;
-
-L_GM:
-mes "[GM Menu]";
-mes "Hello GM!";
-mes "What would you like to do?";
-next;
-menu "Add/Remove Donation",L_GM2,"Add/Remove Items",L_ITEM,"Test Script",L_START;
-close;
-
-L_GM2:
-menu "Add a donation",L_DONATE,"Remove a donation",L_REMOVE,"View all donations",L_VIEWALL;
-close;
-
-L_ITEM:
-menu "Add an item",L_NEWITEM,"Remove an item",L_DELITEM,"View all items",L_ALLITEMS,"Return to main menu",L_GM;
-close;
-
-
-L_NEWITEM:
-mes "[GM Menu]";
-mes "Please enter the item name:";
-input @itemname$;
-query_sql "SELECT `id` FROM `item_db` WHERE `name_english` = '"+escape_sql(@itemname$)+"'", @iid;
-query_sql "SELECT `id` FROM `donate_item_db` WHERE `name` = '"+escape_sql(@itemname$)+"'", @check;
-if(@iid==0) goto L_INONE;
-mes "[GM Menu]";
-mes "Please enter the cost of each "+@itemname$+":";
-input @cost$;
-query_sql "SELECT "+escape_sql(@cost$)+" = 0", @invalid;
-if(@invalid) goto L_ZERO;
-query_sql "SELECT CAST('"+escape_sql(@cost$)+"' AS DECIMAL)", @cost$;
-mes "[GM Menu]";
-mes "You have specified that donators can claim "+@itemname$+"s for $"+@cost$+" each.";
-mes "Would you like to continue?";
-next;
-menu "No",L_ITEM,"Yes",-;
-if(@check!=0) goto L_REPLACE;
-query_sql "INSERT INTO `donate_item_db` VALUES ('"+@iid+"', '"+escape_sql(@itemname$)+"', '"+@cost$+"')";
-mes "[GM Menu]";
-mes "Item added successfully!";
-next;
-menu "Add annother item",L_NEWITEM,"Remove an item",L_DELITEM,"View all items",L_ALLITEMS;
-close;
-
-L_REPLACE:
-mes "[GM Menu]";
-mes "Item "+@itemname$+" already exists in the database.";
-mes "Would you like to replace it?";
-next;
-menu "No",L_ITEM,"Yes",-;
-query_sql "REPLACE INTO `donate_item_db` VALUES ('"+@iid+"', '"+@itemname$+"', '"+@cost$+"')";
-mes "[GM Menu]";
-mes "Item replaced successfully!";
-next;
-menu "Add annother item",L_NEWITEM,"Remove an item",L_DELITEM,"View all items",L_ALLITEMS;
-close;
-
-L_INONE:
-mes "[GM Menu]";
-mes "Item "+@itemname$+" does not exist.";
-next;
-goto L_ITEM;
-
-L_DELITEM:
-mes "[GM Menu]";
-mes "Please enter the item name:";
-input @itemname$;
-query_sql "SELECT `id` FROM `donate_item_db` WHERE `name` = '"+escape_sql(@itemname$)+"'", @iid;
-if(@iid==0) goto L_INONE;
-next;
-mes "[GM Menu]";
-mes "You have specified to delete "+@itemname$+" from the database.";
-mes "Would you like to continue?";
-next;
-menu "No",L_ITEM,"Yes",-;
-query_sql "DELETE FROM `donate_item_db` WHERE `id` = '"+@iid+"'";
-mes "[GM Menu]";
-mes "Item deleted successfully!";
-next;
-menu "Add an item",L_NEWITEM,"Remove another item",L_DELITEM,"View all items",L_ALLITEMS;
-close;
-
-L_ALLITEMS:
-mes "[GM Menu]";
-query_sql "SELECT `name`,`price` FROM `donate_item_db` ORDER BY `name` ASC", @items$, @itemamount$;
-for(set @i, 0; @i < getarraysize(@items$); set @i, @i + 1){
- mes ""+@items$[@i]+" - $"+@itemamount$[@i]+"";
- }
-next;
-goto L_GM;
-
-L_DONATE:
-mes "[GM Menu]";
-mes "Please enter the donator's username:";
-input @donator$;
-query_sql "SELECT `account_id` FROM `login` WHERE `userid` = '"+escape_sql(@donator$)+"'", @aid;
-if(@aid==0) goto L_NONE;
-query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid+"", @donated$;
-query_sql "SELECT '"+@donated$+"' > 0", @donated;
-switch(@donated) {
- case 0:
- mes ""+@donator$+" has not donated before.";
- break;
- case 1:
- mes ""+@donator$+" has donated $"+@donated$+".";
- break;
- }
-next;
-mes "[GM Menu]";
-mes "Please enter the amount donated by "+@donator$+"";
-input @donating$;
-query_sql "SELECT "+escape_sql(@donating$)+" = 0", @invalid;
-if(@invalid) goto L_ZERO;
-query_sql "SELECT CAST('"+escape_sql(@donating$)+"' AS DECIMAL)", @donating$;
-mes "[GM Menu]";
-mes "You have specified that "+@donator$+" has donated $"+@donating$+".";
-mes "Would you like to continue?";
-next;
-menu "No",L_GM,"Yes",-;
-switch(@donated) {
- case 0:
- query_sql "INSERT INTO `donate` VALUES ('"+@aid+"', '"+@donating$+"', '0')";
- break;
- case 1:
- query_sql "UPDATE `donate` SET `amount` = `amount` + "+@donating$+" WHERE `account_id` = '"+@aid+"'";
- break;
- }
-query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid+"", @newdonated$;
-mes "[GM Menu]";
-mes "Donation added successfully!";
-mes ""+@donator$+" has donated a total of $"+@newdonated$+"";
-next;
-goto L_GM;
-
-L_ZERO:
-mes "[GM Menu]";
-mes "You can't have 0 as an amount!";
-next;
-goto L_GM;
-
-L_NONE:
-mes "[GM Menu]";
-mes "Account name "+@donator$+" does not exist.";
-next;
-goto L_GM;
-
-L_REMOVE:
-mes "[GM Menu]";
-mes "Please enter the donator's username:";
-input @donator$;
-query_sql "SELECT `account_id` FROM `login` WHERE `userid` = '"+escape_sql(@donator$)+"'", @aid;
-if(@aid==0) goto L_NONE;
-query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid+"", @donated$;
-query_sql "SELECT '"+@donated$+"' > 0", @donated;
-
-if(@donated==0) {
- query_sql "DELETE FROM `donate` WHERE `account_id` = '"+@aid+"'";
- mes ""+@donator$+" is not a donator and has been deleted from the donation database.";
- goto L_GM;
- }
-
-mes ""+@donator$+" has donated $"+@donated$+".";
-next;
-menu "Deduct an amount from "+@donator$+"",L_MINUS,"Remove "+@donator$+" from the donation database",L_DELETE;
-close;
-
-L_MINUS:
-mes "[GM Menu]";
-mes "Please enter the amount "+@donator$+" is to be deducted by:";
-input @deduct$;
-query_sql "SELECT "+escape_sql(@deduct$)+" = 0", @invalid;
-if(@invalid) goto L_ZERO;
-query_sql "SELECT CAST('"+escape_sql(@deduct$)+"' AS DECIMAL)", @deduct$;
-mes "[GM Menu]";
-mes "You have specified that "+@donator$+" is to be deducted by $"+@deduct$+".";
-mes "Would you like to continue?";
-next;
-menu "No",L_GM,"Yes",-;
-query_sql "UPDATE `donate` SET `amount` = `amount` - "+@deduct$+" WHERE `account_id` = '"+@aid+"'";
-query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid+"", @afterdeduct$;
-mes "[GM Menu]";
-mes "Donation deducted successfully!";
-mes ""+@donator$+" has donated a total of $"+@afterdeduct$+"";
-next;
-goto L_GM;
-
-L_DELETE:
-mes "[GM Menu]";
-mes "You have specified to remove "+@donator$+" from the donation database.";
-mes "Would you like to continue?";
-next;
-menu "No",L_GM,"Yes",-;
-query_sql "DELETE FROM `donate` WHERE `account_id` = '"+@aid+"'";
-mes "[GM Menu]";
-mes "Donator deleted successfully!";
-next;
-goto L_GM;
-
-L_VIEWALL:
-mes "[GM Menu]";
-query_sql "SELECT `account_id`,`amount` FROM `donate` ORDER BY `amount` DESC", @donatoraid, @donatedamount$;
-for(set @i, 0; @i < getarraysize(@donatoraid); set @i, @i + 1){
- query_sql "SELECT `userid` FROM `login` WHERE `account_id` = '"+@donatoraid[@i]+"'", @donateruserid$;
- for(set @j, 0; @j < getarraysize(@donateruserid$); set @j, @j + 1){
- mes ""+@donateruserid$[@j]+" - "+@donatedamount$[@i]+"";
- }
-}
-next;
-goto L_GM;
-
+//===== Athena Script ======================================= +//= Donation NPC +//===== By ================================================== +//= Josh +//===== Version ============================================= +//= 1.0 - First release. Probably contains bugs/security +//= risks +//= 1.1 - Added a check for whether the account exists when +//= adding a donator. Need to improve ordering when +//= viewing all donations. +//= 1.2 - Modified for public use. Added checkweight feature. +//= 2.0 - Many changes, especially ones I had always wanted +//= to add to this script. Includes reading items from +//= a separate SQL table and more database manipulation +//= options for GMs. +//= 2.1 - Made few changes including the add/remove items +//= feature. +//= 3.0 - All strings inputed by a user and user/char names +//= in SQL queries are now escaped. Each item has a +//= price rather than a quantity. This script can work +//= with decimals. +//= 3.1 - Added quotes to some queries, fixed a variable and +//= removed a comment. +//= 3.2 - Fixed a problem where eAthena would crash if a +//= query returned NULL. +//= 3.3 - Optimized query speeds by combining a few select +//= queries into one. Requires Trunk 7975. +//===== Compatible With ===================================== +//= eAthena - any version that contains the new query_sql +//= command (Trunk 7975). +//===== Description ========================================= +//= A script that lets a player claim an item for donating. +//= Allows a GM to input each donation. +//===== Comments ============================================ +//= This script uses SQL tables to store variables for the +//= amount donated by users and the items claimable. +//===== Installation ======================================== +//= You must execute donate.sql and donate_item_db.sql before +//= using this script. +//=========================================================== +//= Thanks to Vich for helping me with the SQL syntax. +//= Thanks to Lance for helping me with the the arrays and +//= for implementing query_sql. +//= Thanks to Skotlex for implementing escape_sql. +//= Thanks to Toms for implementing the new multi-column +//= query_sql command. +//=========================================================== + +prontera.gat,145,179,5 script Donation Girl 714,{ + +if (getgmlevel() >= 80) goto L_GM; + +L_START: +mes "[Donation Girl]"; +mes "Hello! I'm the Donation Girl!"; +mes "If you have made a donation,"; +mes "you are entitled to a reward!"; +next; +menu "More info",-,"Make a claim",L_CHECK,"Statistics",L_STATS; +L_INFO: +mes "[Donation Girl]"; +mes "Each month, a lot of money is paid to keep this server running."; +next; +mes "[Donation Girl]"; +mes "You can support us by donating any amount of money."; +next; +mes "[Donation Girl]"; +mes "To show our appreciation, we will gladly give you a reward."; +next; +menu "Continue",L_START,"Cancel",-; +close; + +L_CHECK: +query_sql "SELECT `amount`,`claimed` FROM `donate` WHERE `account_id` = "+getcharid(3)+"", @amount$, @claimed$; +query_sql "SELECT MIN(price) FROM `donate_item_db`", @min$; +query_sql "SELECT '"+@amount$+"' - '"+@claimed$+"'", @value$; +query_sql "SELECT '"+@value$+"' >= '"+@min$+"'", @enough; +if(@enough) goto L_CLAIM; +mes "[Donation Girl]"; +mes "Sorry, you do not have enough to make a claim."; +mes "If you have donated but have not made a claim,"; +mes "Please give us time to process your donation."; +close; + +L_CLAIM: +mes "[Donation Girl]"; +mes "Thankyou for donating!"; +mes "You have $"+@value$+" worth of credit!"; +mes "Would you like to claim an item now?"; +next; +menu "No",-,"Yes",L_YES; +mes "[Donation Girl]"; +mes "Ok! You are able to collect your item(s) any time!"; +close; + +L_YES: +mes "[Donation Girl]"; +mes "Very well. Which item would you like?"; +next; +query_sql "SELECT `name` FROM `donate_item_db` ORDER BY `name` ASC",$@name$; +set $@menu$, $@name$[0]; + for(set $@i, 1; $@i < 127; set $@i, $@i + 1){ + set $@menu$, $@menu$ + ":" + $@name$[$@i]; + } + +set @menu, (select($@menu$))-1; + +query_sql "SELECT `id`,`price` FROM `donate_item_db` WHERE `name` = '"+$@name$[@menu]+"'", @id, @price$; +query_sql "SELECT TRUNCATE("+@value$+" / "+@price$+",0)", @max; + +mes "[Donation Girl]"; +mes ""+$@name$[@menu]+"s cost $"+@price$+" each."; +mes "How many "+$@name$[@menu]+"s would you like to claim?"; +mes "Maximum: "+@max+"."; +input @quantity; + +if(@quantity>@max) { + mes "[Donation Girl]"; + mes "Sorry, but you do not have enough to claim "+@quantity+" "+$@name$[@menu]+"s."; + next; + goto L_CLAIM; + } + +if(!@quantity) { + mes "[Donation Girl]"; + mes "You can't have 0 as an amount!"; + next; + goto L_CLAIM; + } + +if (checkweight(@id,@quantity) == 0) { + mes "[Donation Girl]"; + mes "I'm sorry, but you cannot carry "+@quantity+" "+$@name$[@menu]+"s."; + next; + goto L_CLAIM; + } + +query_sql "SELECT "+@quantity+" * "+@price$+"", @total$; +mes "Are you sure you want to claim "+@quantity+" "+$@name$[@menu]+"s for $"+@total$+"?"; +next; +menu "No",L_CLAIM,"Yes",-; +query_sql "UPDATE `donate` SET `claimed` = `claimed` + "+@total$+" WHERE `account_id` = '"+getcharid(3)+"'"; +getitem @id,@quantity; +mes "[Donation Girl]"; +mes "Thankyou for donating! We hope you enjoy your gift!"; +close; + +L_STATS: +mes "[Donation Girl]"; +query_sql "SELECT IFNULL((SELECT SUM(amount) FROM `donate`),0)", @total$; +mes "Our fund is at a total of $"+@total$+""; +next; +menu "More info",L_INFO,"Make a claim",L_CHECK,"Statistics",L_STATS; +close; + +L_GM: +mes "[GM Menu]"; +mes "Hello GM!"; +mes "What would you like to do?"; +next; +menu "Add/Remove Donation",L_GM2,"Add/Remove Items",L_ITEM,"Test Script",L_START; +close; + +L_GM2: +menu "Add a donation",L_DONATE,"Remove a donation",L_REMOVE,"View all donations",L_VIEWALL; +close; + +L_ITEM: +menu "Add an item",L_NEWITEM,"Remove an item",L_DELITEM,"View all items",L_ALLITEMS,"Return to main menu",L_GM; +close; + + +L_NEWITEM: +mes "[GM Menu]"; +mes "Please enter the item name:"; +input @itemname$; +query_sql "SELECT `id` FROM `item_db` WHERE `name_english` = '"+escape_sql(@itemname$)+"'", @iid; +query_sql "SELECT `id` FROM `donate_item_db` WHERE `name` = '"+escape_sql(@itemname$)+"'", @check; +if(@iid==0) goto L_INONE; +mes "[GM Menu]"; +mes "Please enter the cost of each "+@itemname$+":"; +input @cost$; +query_sql "SELECT "+escape_sql(@cost$)+" = 0", @invalid; +if(@invalid) goto L_ZERO; +query_sql "SELECT CAST('"+escape_sql(@cost$)+"' AS DECIMAL)", @cost$; +mes "[GM Menu]"; +mes "You have specified that donators can claim "+@itemname$+"s for $"+@cost$+" each."; +mes "Would you like to continue?"; +next; +menu "No",L_ITEM,"Yes",-; +if(@check!=0) goto L_REPLACE; +query_sql "INSERT INTO `donate_item_db` VALUES ('"+@iid+"', '"+escape_sql(@itemname$)+"', '"+@cost$+"')"; +mes "[GM Menu]"; +mes "Item added successfully!"; +next; +menu "Add annother item",L_NEWITEM,"Remove an item",L_DELITEM,"View all items",L_ALLITEMS; +close; + +L_REPLACE: +mes "[GM Menu]"; +mes "Item "+@itemname$+" already exists in the database."; +mes "Would you like to replace it?"; +next; +menu "No",L_ITEM,"Yes",-; +query_sql "REPLACE INTO `donate_item_db` VALUES ('"+@iid+"', '"+@itemname$+"', '"+@cost$+"')"; +mes "[GM Menu]"; +mes "Item replaced successfully!"; +next; +menu "Add annother item",L_NEWITEM,"Remove an item",L_DELITEM,"View all items",L_ALLITEMS; +close; + +L_INONE: +mes "[GM Menu]"; +mes "Item "+@itemname$+" does not exist."; +next; +goto L_ITEM; + +L_DELITEM: +mes "[GM Menu]"; +mes "Please enter the item name:"; +input @itemname$; +query_sql "SELECT `id` FROM `donate_item_db` WHERE `name` = '"+escape_sql(@itemname$)+"'", @iid; +if(@iid==0) goto L_INONE; +next; +mes "[GM Menu]"; +mes "You have specified to delete "+@itemname$+" from the database."; +mes "Would you like to continue?"; +next; +menu "No",L_ITEM,"Yes",-; +query_sql "DELETE FROM `donate_item_db` WHERE `id` = '"+@iid+"'"; +mes "[GM Menu]"; +mes "Item deleted successfully!"; +next; +menu "Add an item",L_NEWITEM,"Remove another item",L_DELITEM,"View all items",L_ALLITEMS; +close; + +L_ALLITEMS: +mes "[GM Menu]"; +query_sql "SELECT `name`,`price` FROM `donate_item_db` ORDER BY `name` ASC", @items$, @itemamount$; +for(set @i, 0; @i < getarraysize(@items$); set @i, @i + 1){ + mes ""+@items$[@i]+" - $"+@itemamount$[@i]+""; + } +next; +goto L_GM; + +L_DONATE: +mes "[GM Menu]"; +mes "Please enter the donator's username:"; +input @donator$; +query_sql "SELECT `account_id` FROM `login` WHERE `userid` = '"+escape_sql(@donator$)+"'", @aid; +if(@aid==0) goto L_NONE; +query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid+"", @donated$; +query_sql "SELECT '"+@donated$+"' > 0", @donated; +switch(@donated) { + case 0: + mes ""+@donator$+" has not donated before."; + break; + case 1: + mes ""+@donator$+" has donated $"+@donated$+"."; + break; + } +next; +mes "[GM Menu]"; +mes "Please enter the amount donated by "+@donator$+""; +input @donating$; +query_sql "SELECT "+escape_sql(@donating$)+" = 0", @invalid; +if(@invalid) goto L_ZERO; +query_sql "SELECT CAST('"+escape_sql(@donating$)+"' AS DECIMAL)", @donating$; +mes "[GM Menu]"; +mes "You have specified that "+@donator$+" has donated $"+@donating$+"."; +mes "Would you like to continue?"; +next; +menu "No",L_GM,"Yes",-; +switch(@donated) { + case 0: + query_sql "INSERT INTO `donate` VALUES ('"+@aid+"', '"+@donating$+"', '0')"; + break; + case 1: + query_sql "UPDATE `donate` SET `amount` = `amount` + "+@donating$+" WHERE `account_id` = '"+@aid+"'"; + break; + } +query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid+"", @newdonated$; +mes "[GM Menu]"; +mes "Donation added successfully!"; +mes ""+@donator$+" has donated a total of $"+@newdonated$+""; +next; +goto L_GM; + +L_ZERO: +mes "[GM Menu]"; +mes "You can't have 0 as an amount!"; +next; +goto L_GM; + +L_NONE: +mes "[GM Menu]"; +mes "Account name "+@donator$+" does not exist."; +next; +goto L_GM; + +L_REMOVE: +mes "[GM Menu]"; +mes "Please enter the donator's username:"; +input @donator$; +query_sql "SELECT `account_id` FROM `login` WHERE `userid` = '"+escape_sql(@donator$)+"'", @aid; +if(@aid==0) goto L_NONE; +query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid+"", @donated$; +query_sql "SELECT '"+@donated$+"' > 0", @donated; + +if(@donated==0) { + query_sql "DELETE FROM `donate` WHERE `account_id` = '"+@aid+"'"; + mes ""+@donator$+" is not a donator and has been deleted from the donation database."; + goto L_GM; + } + +mes ""+@donator$+" has donated $"+@donated$+"."; +next; +menu "Deduct an amount from "+@donator$+"",L_MINUS,"Remove "+@donator$+" from the donation database",L_DELETE; +close; + +L_MINUS: +mes "[GM Menu]"; +mes "Please enter the amount "+@donator$+" is to be deducted by:"; +input @deduct$; +query_sql "SELECT "+escape_sql(@deduct$)+" = 0", @invalid; +if(@invalid) goto L_ZERO; +query_sql "SELECT CAST('"+escape_sql(@deduct$)+"' AS DECIMAL)", @deduct$; +mes "[GM Menu]"; +mes "You have specified that "+@donator$+" is to be deducted by $"+@deduct$+"."; +mes "Would you like to continue?"; +next; +menu "No",L_GM,"Yes",-; +query_sql "UPDATE `donate` SET `amount` = `amount` - "+@deduct$+" WHERE `account_id` = '"+@aid+"'"; +query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid+"", @afterdeduct$; +mes "[GM Menu]"; +mes "Donation deducted successfully!"; +mes ""+@donator$+" has donated a total of $"+@afterdeduct$+""; +next; +goto L_GM; + +L_DELETE: +mes "[GM Menu]"; +mes "You have specified to remove "+@donator$+" from the donation database."; +mes "Would you like to continue?"; +next; +menu "No",L_GM,"Yes",-; +query_sql "DELETE FROM `donate` WHERE `account_id` = '"+@aid+"'"; +mes "[GM Menu]"; +mes "Donator deleted successfully!"; +next; +goto L_GM; + +L_VIEWALL: +mes "[GM Menu]"; +query_sql "SELECT `account_id`,`amount` FROM `donate` ORDER BY `amount` DESC", @donatoraid, @donatedamount$; +for(set @i, 0; @i < getarraysize(@donatoraid); set @i, @i + 1){ + query_sql "SELECT `userid` FROM `login` WHERE `account_id` = '"+@donatoraid[@i]+"'", @donateruserid$; + for(set @j, 0; @j < getarraysize(@donateruserid$); set @j, @j + 1){ + mes ""+@donateruserid$[@j]+" - "+@donatedamount$[@i]+""; + } +} +next; +goto L_GM; + }
\ No newline at end of file diff --git a/npc/custom/eAAC_Scripts/Kafra_Express_files.conf b/npc/custom/eAAC_Scripts/Kafra_Express_files.conf index 11e9fd23c..2244e8eb4 100644 --- a/npc/custom/eAAC_Scripts/Kafra_Express_files.conf +++ b/npc/custom/eAAC_Scripts/Kafra_Express_files.conf @@ -1,33 +1,33 @@ -//|-----------------------------------------------------------------|
-//|- English Athena Approved Certified Script: Kafra Express Set -|
-//|-----------------------------------------------------------------|
-//| Under this is the global_functions.txt needed for this set to work.
-//| Note that if you enable this, you will have to go to the scripts_main.conf
-//| and disable the original one.
-npc: npc/custom/eAAC_Scripts/kafraExpress/global_functionsKE.txt
-//|
-//| The configuration file.
-npc: npc/custom/eAAC_Scripts/kafraExpress/config.txt
-
-//| The files for this npc.
-
-npc: npc/custom/eAAC_Scripts/kafraExpress/kafras.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_main.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_bank.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_broadcast.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_dye.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_jobchange.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_jobswap.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_rent.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_shop.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_statmarket.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_stats.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_refine.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_uncard.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_warp_dungeon.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_warp_pvp.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_warp_town.txt
-npc: npc/custom/eAAC_Scripts/kafraExpress/ke_warp_woe.txt
-
-//| For more info referring this script, open the provided readme.txt in this folder.
+//|-----------------------------------------------------------------| +//|- English Athena Approved Certified Script: Kafra Express Set -| +//|-----------------------------------------------------------------| +//| Under this is the global_functions.txt needed for this set to work. +//| Note that if you enable this, you will have to go to the scripts_main.conf +//| and disable the original one. +npc: npc/custom/eAAC_Scripts/kafraExpress/global_functionsKE.txt +//| +//| The configuration file. +npc: npc/custom/eAAC_Scripts/kafraExpress/config.txt + +//| The files for this npc. + +npc: npc/custom/eAAC_Scripts/kafraExpress/kafras.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_main.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_bank.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_broadcast.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_dye.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_jobchange.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_jobswap.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_rent.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_shop.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_statmarket.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_stats.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_refine.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_uncard.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_warp_dungeon.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_warp_pvp.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_warp_town.txt +npc: npc/custom/eAAC_Scripts/kafraExpress/ke_warp_woe.txt + +//| For more info referring this script, open the provided readme.txt in this folder. //| Copyright © 2004 - 2006 Skotlex. All Rights Reserved for him (this is almost a trademark =X)
\ No newline at end of file diff --git a/npc/custom/eAAC_Scripts/banker.txt b/npc/custom/eAAC_Scripts/banker.txt index 7e0ac7584..ee98775de 100644 --- a/npc/custom/eAAC_Scripts/banker.txt +++ b/npc/custom/eAAC_Scripts/banker.txt @@ -1,461 +1,461 @@ -//| ~~~~~~~~~~~ Information ~~~~~~~~~~~
-//| | This is a simple banking npc, |
-//| | which uses coins to store zeny |
-//| | instead of using those global |
-//| | variables :P |
-//| | |
-//| | It's fully customizable, you |
-//| | can exchange the coin ID used |
-//| | at will, it won't affect the |
-//| | script whatsoever =3 |
-//| | |
-//| | The prices can also be set, the |
-//| | way you like the most, as they |
-//| | won't affect the script either |
-//| | |
-//| | No db/client files modification |
-//| | needed, just "Plug&Play" ;P |
-//| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-//| Revision:
-//| v.1.0: Released script. No problems or bugs found, at least :P
-//| It's your duty to find them now if there are.
-//| @minvalue must contain the coin price of the lowest coin value
-//| in order for the script to work correctly. By default it's set
-//| to the bronze coin
-
-//| Revision:
-//| v.2.0: Added a Mix option in the Zeny to Coin function,
-//| where it allows you to split your desired Zeny into
-//| the coins you wish to obtain, without having to go
-//| through the other functions to obtain them all. That way
-//| you can get them all at once ;3
-//|
-//| It also displays the total zeny being exchanged,
-//| the total coins obtained and the difference between
-//| the amount of zeny you've inputted and the sum of
-//| the coin's values.
-
-//| Revision:
-//| v.2.5: Replaced all the coin names with a variable that has
-//| getitemname(<coin_id), for more customization of the script.
-//|
-//| Fixed aswell a 0 at the mixing function, it had an unexistant
-//| variable plus it was rendering a message to 0. Pretty bad =/
-//|
-//| The implementation of the getitemname was because some people
-//| complaining that those items seemed to be wrong, that the name
-//| in the db was Platinum while the script had Silver, so well,
-//| there you have it. No more silver coins, thanks to you :)
-
-//| Revision:
-//| v.2.6: Added another Weight check to prevent coins from dropping
-//| to the ground because A) Too many coins (more than 30,000 ea)
-//| B) Your current weight + total coins weight were greater than
-//| your max weight, causing them to drop due to "over-weight".
-//| Thanks to Niktout for spotting it.
-
-//| Revision:
-//| v.2.7: Added a check to the Zeny -> Coin Mix label. It seems you
-//| can trade with negative zeny (meh...). This should prevent it.
-//| Thanks to Niktout.
-
-//| Revision:
-//| v.2.8: Added a n00b check for the Zeny -> Coin function. Should
-//| prevent zeny overflow. Also added a variable cleaning section
-//| at the beginning of the Mix function, to prevent old values
-//| to be used as a payout.
-
-//| Upcomming possible updates:
-//| v.3.0: Adding a refining system, so you can gather ore and the likes
-//| to make your own coins. They will have a failure chance
-//| of course. You will need, for now: 10 ores of the type of
-//| coin you wish, a mini furnace, an anvil depending on what
-//| You're crafting, and a hammer according to it.
-
-//| Copyright © 2006 erKURITA. All Rights Reserved
-
-prontera.gat,155,188,3 script Zacariath Madhat 872,{
-
-//|~~~~~~~~~ Settings of the NPC: ~~~~~~~~~~~~~~~~~
-set @npcname$,"^999999[Zach]^000000"; //|
-set @bronzeprice,10000; //|
-set @silverprice,100000; //|
-set @goldprice,1000000; //|
-set @mithrilprice,10000000; //|
-set @bronzecoinid,673; //|
-set @silvercoinid,677; //|
-set @goldcoinid,671; //|
-set @mithrilcoinid,674; //|
-set @minvalue,@bronzeprice; //|
-set @name1$,getitemname(@bronzecoinid); //|
-set @name2$,getitemname(@silvercoinid); //|
-set @name3$,getitemname(@goldcoinid); //|
-set @name4$,getitemname(@mithrilcoinid); //|
-set @MAX_ZENY,1000000000; //|
-//|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-mes @npcname$;
-mes "Hi "+strcharinfo(0)+", I'm this town's banker";
-mes "I can allow you to exchange your zeny into useful and handy coins, which you can use to make trades between players, or just save them";
-next;
-mes @npcname$;
-mes "^996600"+@name1$+"s^000000 are worth "+@bronzeprice+"z, ^999999"+@name2$+"s^000000 are worth "+@silverprice+"z, ^FFCC00"+@name3$+"s^000000 "+@goldprice+"z, ^CCCCCC"+@name4$+"s^000000 are worth "+@mithrilprice+"z";
-next;
-goto L_Menu;
-
-L_Menu:
-mes @npcname$;
-mes "What do you want to do then?";
-menu "Exchange my coins into zeny",L_CoinZeny,"Exchange my zeny into coins",L_ZenyCoin,"Nothing for now, sorry",L_End;
-
-//| Here starts the Coin to Zeny Exchange
-
-L_CoinZeny:
-
- next;
- mes @npcname$;
- mes "First than anything, what kind of coins are you going to exchange?";
- menu @name1$+"s",L_Bronze,@name2$+"s",L_Silver,@name3$+"s",L_Gold,@name4$+"s",L_Mithril,"None for now",L_Menu;
-
-
- L_Bronze:
- callsub L_Coincheckout,@bronzecoinid,@bronzeprice;
- goto L_CoinZeny;
-
- L_Silver:
- callsub L_Coincheckout,@silvercoinid,@silverprice;
- goto L_CoinZeny;
-
- L_Gold:
- callsub L_Coincheckout,@goldcoinid,@goldprice;
- goto L_CoinZeny;
-
- L_Mithril:
- callsub L_Coincheckout,@mithrilcoinid,@mithrilprice;
- goto L_CoinZeny;
-
-L_Coincheckout:
-
-switch(getarg(0)) {
- case @bronzecoinid:
- set @coinname$,"^996600"+getitemname(getarg(0))+"^000000";
- break;
- case @silvercoinid:
- set @coinname$,"^999999"+getitemname(getarg(0))+"^000000";
- break;
- case @goldcoinid:
- set @coinname$,"^FFCC00"+getitemname(getarg(0))+"^000000";
- break;
- case @mithrilcoinid:
- set @coinname$,"^CCCCCC"+getitemname(getarg(0))+"^000000";
- break;
- }
-
-
-L_PreInputing:
-next;
- mes @npcname$;
- mes "Let's see, how many coins do you want to exchange?";
- next;
- goto L_Inputing;
-
- L_Inputing:
- input @coinamount;
-
- if (@coinamount == 0) {
- mes @npcname$;
- mes "You didn't input any amount, please retry";
- next;
- goto L_Inputing;
- } else if (countitem(getarg(0)) < @coinamount) {
- mes @npcname$;
- mes "You don't have enough coins, please get some";
- next;
- goto L_Menu;
- } else if (@coinamount*getarg(1) > @MAX_ZENY) {
- mes @npcname$;
- mes "I'm sorry, the quantity you inputted gives a bigger zeny amount than the max allowed. I can't allow this.";
- next;
- goto L_Menu
- } else
-
- next;
- mes @npcname$;
- mes "So, you want to exchange "+@coinamount+" "+@coinname$+" ?";
- menu "Yes, I want to exchange this much",L_Proceed,"No, I want to exchange something else",L_CoinZeny,"No, I want to input another number",L_Inputing,"No, I dont want to exchange anything",L_Menu;
-
- L_Proceed:
- next;
- set @price,getarg(1)*@coinamount;
- set Zeny,Zeny+@price;
- delitem getarg(0),@coinamount;
- mes @npcname$;
- mes "There we go, here's your money";
- next;
- return;
-
-//| Here starts the Zeny to Coin exchange.
-
-L_ZenyCoin:
- next;
- if (MaxWeight*50/100 < Weight) {
- if (MaxWeight*90/100 < Weight) {
- mes @npcname$;
- mes "Sorry but you have more than 90% weight. Your coins might drop. I can't give you anything.";
- next;
- goto L_Menu;
- } else
- mes @npcname$;
- mes "You have 50% or more weight, do you still want to continue?";
- menu "Yes",L_ContinueZenyCoin,"No, thanks",L_Menu;
- }
-L_ContinueZenyCoin:
- mes @npcname$;
- mes "First, how much zeny do you want to exchange";
- callsub L_Inputingzeny;
- callsub L_Zenycoins;
- next;
- mes @npcname$;
- mes "You can have, with "+@zenyamount+":";
- mes "^996600"+@bronzezeny+"^000000 "+@name1$+"s";
- mes "^999999"+@silverzeny+"^000000 "+@name2$+"s";
- mes "^FFCC00"+@goldzeny+"^000000 "+@name3$+"s";
- mes "or";
- mes "^CCCCCC"+@mithrilzeny+"^000000 "+@name4$+"s";
- next;
- if (@zenyamount < @minvalue) goto L_Moremoney;
- goto L_ZenyCoin2;
-
- L_ZenyCoin2:
- mes @npcname$;
- mes "Which coins do you want? Or do you want a mix of them?";
- menu "I want the "+@name1$+"s",L_Bronzes,"I want the "+@name2$+"s",L_Silvers,"I want the "+@name3$+"s",L_Golds,"I want the "+@name4$+"s",L_Mithrils,"I want a mix of them",L_Mix,"Nothing for now, sorry",L_Menu;
-
- L_Bronzes:
- if (@bronzezeny == 0) goto L_Moremoney;
- callsub L_Zenycheckout,@bronzecoinid,@bronzeprice,@bronzezeny;
- goto L_Menu;
-
- L_Silvers:
- if (@silverzeny == 0) goto L_Moremoney;
- callsub L_Zenycheckout,@silvercoinid,@silverprice,@silverzeny;
- goto L_Menu;
-
- L_Golds:
- if (@goldzeny == 0) goto L_Moremoney;
- callsub L_Zenycheckout,@goldcoinid,@goldprice,@goldzeny;
- goto L_Menu;
-
- L_Mithrils:
- if (@mithrilzeny == 0) goto L_Moremoney;
- callsub L_Zenycheckout,@mithrilcoinid,@mithrilprice,@mithrilzeny;
- goto L_Menu;
-
-L_Zenycheckout:
- next;
- if (((getiteminfo(getarg(0),6))*getarg(2)) > (MaxWeight-Weight)) {
- mes @npcname$;
- mes "Sorry, your max weight does not allow me to give you this much of zeny coins";
- mes "Either choose another type of coins or a lower quantity, thanks";
- close;
- }
- if (getarg(2) > 30000) {
- mes @npcname$;
- mes "Sorry, I can't give you more than 30,000 ea";
- mes "Pick another coin type";
- close;
- }
- set @itemid,getarg(0);
- set @pricea,getarg(1)*getarg(2);
- getitem @itemid,getarg(2);
- set Zeny,Zeny-@pricea;
- mes @npcname$;
- mes "There you go, here's your coins";
- next;
- return;
-
-L_Zenycoins:
- set @bronzezeny,@zenyamount/@bronzeprice;
- set @silverzeny,@zenyamount/@silverprice;
- set @goldzeny,@zenyamount/@goldprice;
- set @mithrilzeny,@zenyamount/@mithrilprice;
- return;
-
-L_Inputingzeny:
-
- input @zenyamount;
- if (Zeny == 0) {
- mes @npcname$;
- mes "You don't have any Zeny left. I can't do anything. Get some Zeny first";
- next;
- goto L_Menu;
- } else if (@zenyamount == 0) {
- mes @npcname$;
- mes "You didn't input any amount, please retry";
- next;
- goto L_Inputingzeny;
- } else if (@zenyamount > Zeny) {
- mes @npcname$;
- mes "The inputted zeny amount is bigger than your actual zeny amount";
- mes "Please re-entry another amount";
- next;
- goto L_Inputingzeny;
-
- } else return;
-
-//| Other labels
-
-L_Moremoney:
- mes @npcname$;
- mes "You need to get more zeny, I can't give you anything with "+@zenyamount+"z, sorry";
- next;
- goto L_Menu;
-
-L_End:
- next;
- mes @npcname$;
- mes "Good to see you and hope to see you again. Bye";
- close;
-
-
-//| Mix function
-
-L_Mix:
- set @totalzeny,0;
- set @totalcoins,0;
- set @bronzecoins,0;
- set @silvercoins,0;
- set @goldcoins,0;
- set @mithrilcoins,0;
- next;
- mes @npcname$;
- mes "Ok, let's start with ^996600"+@name1$+"s^000000";
- next;
- mes @npcname$;
- mes "How many coins do you want?";
- input @bronzecoins;
- next;
- set @totalzeny,@bronzecoins*@bronzeprice;
- set @totalcoins,@bronzecoins;
- mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
- mes "Coins:";
- mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
- mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯";
- if (@totalzeny > @zenyamount || @totalzeny < 0) {
- mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
- mes "Zeny Left: "+(@zenyamount-@totalzeny);
- goto L_Overzeny;
- } else
- mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
- mes "Zeny Left: "+(@zenyamount-@totalzeny);
- next;
- if (@totalzeny > @zenyamount || @totalzeny < 0)
- mes @npcname$;
- mes "Is this enough or do you want more?";
- menu "It's enough, thanks",L_Payoff,"No, I want some more",-;
- next;
- mes @npcname$;
- mes "Now ^999999"+@name2$+"s^000000. How many coins do you want?";
- next;
- input @silvercoins;
- next;
- set @totalzeny,@bronzecoins*@bronzeprice+@silvercoins*@silverprice;
- set @totalcoins,@bronzecoins+@silvercoins;
- mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
- mes "Coins:";
- mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
- mes " ^999999"+@name2$+"s^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000";
- mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯";
- if (@totalzeny > @zenyamount || @totalzeny < 0) {
- mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
- mes "Zeny Left: "+(@zenyamount-@totalzeny);
- goto L_Overzeny;
- } else
- mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
- mes "Zeny Left: "+(@zenyamount-@totalzeny);
- next;
- if (@totalzeny > @zenyamount || @totalzeny < 0) goto L_Overzeny;
- mes @npcname$;
- mes "Is this enough or do you want more?";
- menu "It's enough, thanks",L_Payoff,"No, I want some more",-;
- next;
- mes @npcname$;
- mes "Now ^FFCC00"+@name3$+"s^000000. How many coins do you want?";
- input @goldcoins;
- next;
- set @totalzeny,@bronzecoins*@bronzeprice+@silvercoins*@silverprice+@goldcoins*@goldprice;
- set @totalcoins,@bronzecoins+@silvercoins+@goldcoins;
- mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
- mes "Coins:";
- mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
- mes " ^999999"+@name2$+"s^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000";
- mes " ^FFCC00"+@name3$+"s^000000: "+@goldcoins+" ^CC0000"+@goldcoins*@goldprice+"^000000";
- mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯";
- if (@totalzeny > @zenyamount || @totalzeny < 0) {
- mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
- mes "Zeny Left: "+(@zenyamount-@totalzeny);
- goto L_Overzeny;
- } else
- mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
- mes "Zeny Left: "+(@zenyamount-@totalzeny);
- next;
- if (@totalzeny > @zenyamount || @totalzeny < 0) goto L_Overzeny;
- mes @npcname$;
- mes "Is this enough or do you want more?";
- menu "It's enough, thanks",L_Payoff,"No, I want some more",-;
- next;
- mes @npcname$;
- mes "Now ^CCCCCC"+@name4$+"s^000000. How many coins do you want?";
- input @mithrilcoins;
- next;
- set @totalzeny,@bronzecoins*@bronzeprice+@silvercoins*@silverprice+@goldcoins*@goldprice+@mithrilcoins*@mithrilprice;
- set @totalcoins,@bronzecoins+@silvercoins+@goldcoins+@mithrilcoins;
- mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
- mes "Coins:";
- mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
- mes " ^999999"+@name2$+"s^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000";
- mes " ^FFCC00"+@name3$+"s^000000: "+@goldcoins+" ^CC0000"+@goldcoins*@goldprice+"^000000";
- mes " ^CCCCCC"+@name4$+"s^000000: "+@mithrilcoins+" ^CC0000"+@mithrilcoins*@mithrilprice+"^000000";
- mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯";
- if (@totalzeny > @zenyamount || @totalzeny < 0) {
- mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
- mes "Zeny Left: "+(@zenyamount-@totalzeny);
- goto L_Overzeny;
- } else
- mes "TOTAL: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
- mes "Zeny Left: "+(@zenyamount-@totalzeny);
- next;
- if (@totalzeny > @zenyamount || @totalzeny < 0) goto L_Overzeny;
- mes @npcname$;
- mes "Is this ok?: "+@bronzecoins+" "+@name1$+"s, "+@silvercoins+" "+@name2$+"s, "+@goldcoins+" "+@name3$+"s, "+@mithrilcoins+" "+@name4$+"s, for a total amount of "+@totalzeny;
- menu "Yes, it's ok",L_Payoff,"No, I want to re-intro them",L_Mix,"Sorry, I dont want anything",L_Menu;
-
-L_Payoff:
- next;
- if (@zenyamount > Zeny) goto L_Overzeny;
- set Zeny,Zeny-@totalzeny;
- getitem @bronzecoinid,@bronzecoins;
- getitem @silvercoinid,@silvercoins;
- getitem @goldcoinid,@goldcoins;
- getitem @mithrilcoinid,@mithrilcoins;
- mes @npcname$;
- mes "There you go, here's your coins";
- next;
- set @bronzecoins,0;
- set @silvercoins,0;
- set @goldcoins,0;
- set @mithrilcoins,0;
- goto L_End;
-
-L_Overzeny:
- next;
- mes @npcname$;
- mes "Sorry, I can't do anything else. Either the sum of all the coins you inputted is bigger than the zeny amount inputted, or the inputted amout of zeny is bigger that your total Zeny. Please retry.";
- next;
- goto L_Menu;
-
-OnInit:
-setitemscript 671,"{}";
-end;
+//| ~~~~~~~~~~~ Information ~~~~~~~~~~~ +//| | This is a simple banking npc, | +//| | which uses coins to store zeny | +//| | instead of using those global | +//| | variables :P | +//| | | +//| | It's fully customizable, you | +//| | can exchange the coin ID used | +//| | at will, it won't affect the | +//| | script whatsoever =3 | +//| | | +//| | The prices can also be set, the | +//| | way you like the most, as they | +//| | won't affect the script either | +//| | | +//| | No db/client files modification | +//| | needed, just "Plug&Play" ;P | +//| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +//| Revision: +//| v.1.0: Released script. No problems or bugs found, at least :P +//| It's your duty to find them now if there are. +//| @minvalue must contain the coin price of the lowest coin value +//| in order for the script to work correctly. By default it's set +//| to the bronze coin + +//| Revision: +//| v.2.0: Added a Mix option in the Zeny to Coin function, +//| where it allows you to split your desired Zeny into +//| the coins you wish to obtain, without having to go +//| through the other functions to obtain them all. That way +//| you can get them all at once ;3 +//| +//| It also displays the total zeny being exchanged, +//| the total coins obtained and the difference between +//| the amount of zeny you've inputted and the sum of +//| the coin's values. + +//| Revision: +//| v.2.5: Replaced all the coin names with a variable that has +//| getitemname(<coin_id), for more customization of the script. +//| +//| Fixed aswell a 0 at the mixing function, it had an unexistant +//| variable plus it was rendering a message to 0. Pretty bad =/ +//| +//| The implementation of the getitemname was because some people +//| complaining that those items seemed to be wrong, that the name +//| in the db was Platinum while the script had Silver, so well, +//| there you have it. No more silver coins, thanks to you :) + +//| Revision: +//| v.2.6: Added another Weight check to prevent coins from dropping +//| to the ground because A) Too many coins (more than 30,000 ea) +//| B) Your current weight + total coins weight were greater than +//| your max weight, causing them to drop due to "over-weight". +//| Thanks to Niktout for spotting it. + +//| Revision: +//| v.2.7: Added a check to the Zeny -> Coin Mix label. It seems you +//| can trade with negative zeny (meh...). This should prevent it. +//| Thanks to Niktout. + +//| Revision: +//| v.2.8: Added a n00b check for the Zeny -> Coin function. Should +//| prevent zeny overflow. Also added a variable cleaning section +//| at the beginning of the Mix function, to prevent old values +//| to be used as a payout. + +//| Upcomming possible updates: +//| v.3.0: Adding a refining system, so you can gather ore and the likes +//| to make your own coins. They will have a failure chance +//| of course. You will need, for now: 10 ores of the type of +//| coin you wish, a mini furnace, an anvil depending on what +//| You're crafting, and a hammer according to it. + +//| Copyright © 2006 erKURITA. All Rights Reserved + +prontera.gat,155,188,3 script Zacariath Madhat 872,{ + +//|~~~~~~~~~ Settings of the NPC: ~~~~~~~~~~~~~~~~~ +set @npcname$,"^999999[Zach]^000000"; //| +set @bronzeprice,10000; //| +set @silverprice,100000; //| +set @goldprice,1000000; //| +set @mithrilprice,10000000; //| +set @bronzecoinid,673; //| +set @silvercoinid,677; //| +set @goldcoinid,671; //| +set @mithrilcoinid,674; //| +set @minvalue,@bronzeprice; //| +set @name1$,getitemname(@bronzecoinid); //| +set @name2$,getitemname(@silvercoinid); //| +set @name3$,getitemname(@goldcoinid); //| +set @name4$,getitemname(@mithrilcoinid); //| +set @MAX_ZENY,1000000000; //| +//|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +mes @npcname$; +mes "Hi "+strcharinfo(0)+", I'm this town's banker"; +mes "I can allow you to exchange your zeny into useful and handy coins, which you can use to make trades between players, or just save them"; +next; +mes @npcname$; +mes "^996600"+@name1$+"s^000000 are worth "+@bronzeprice+"z, ^999999"+@name2$+"s^000000 are worth "+@silverprice+"z, ^FFCC00"+@name3$+"s^000000 "+@goldprice+"z, ^CCCCCC"+@name4$+"s^000000 are worth "+@mithrilprice+"z"; +next; +goto L_Menu; + +L_Menu: +mes @npcname$; +mes "What do you want to do then?"; +menu "Exchange my coins into zeny",L_CoinZeny,"Exchange my zeny into coins",L_ZenyCoin,"Nothing for now, sorry",L_End; + +//| Here starts the Coin to Zeny Exchange + +L_CoinZeny: + + next; + mes @npcname$; + mes "First than anything, what kind of coins are you going to exchange?"; + menu @name1$+"s",L_Bronze,@name2$+"s",L_Silver,@name3$+"s",L_Gold,@name4$+"s",L_Mithril,"None for now",L_Menu; + + + L_Bronze: + callsub L_Coincheckout,@bronzecoinid,@bronzeprice; + goto L_CoinZeny; + + L_Silver: + callsub L_Coincheckout,@silvercoinid,@silverprice; + goto L_CoinZeny; + + L_Gold: + callsub L_Coincheckout,@goldcoinid,@goldprice; + goto L_CoinZeny; + + L_Mithril: + callsub L_Coincheckout,@mithrilcoinid,@mithrilprice; + goto L_CoinZeny; + +L_Coincheckout: + +switch(getarg(0)) { + case @bronzecoinid: + set @coinname$,"^996600"+getitemname(getarg(0))+"^000000"; + break; + case @silvercoinid: + set @coinname$,"^999999"+getitemname(getarg(0))+"^000000"; + break; + case @goldcoinid: + set @coinname$,"^FFCC00"+getitemname(getarg(0))+"^000000"; + break; + case @mithrilcoinid: + set @coinname$,"^CCCCCC"+getitemname(getarg(0))+"^000000"; + break; + } + + +L_PreInputing: +next; + mes @npcname$; + mes "Let's see, how many coins do you want to exchange?"; + next; + goto L_Inputing; + + L_Inputing: + input @coinamount; + + if (@coinamount == 0) { + mes @npcname$; + mes "You didn't input any amount, please retry"; + next; + goto L_Inputing; + } else if (countitem(getarg(0)) < @coinamount) { + mes @npcname$; + mes "You don't have enough coins, please get some"; + next; + goto L_Menu; + } else if (@coinamount*getarg(1) > @MAX_ZENY) { + mes @npcname$; + mes "I'm sorry, the quantity you inputted gives a bigger zeny amount than the max allowed. I can't allow this."; + next; + goto L_Menu + } else + + next; + mes @npcname$; + mes "So, you want to exchange "+@coinamount+" "+@coinname$+" ?"; + menu "Yes, I want to exchange this much",L_Proceed,"No, I want to exchange something else",L_CoinZeny,"No, I want to input another number",L_Inputing,"No, I dont want to exchange anything",L_Menu; + + L_Proceed: + next; + set @price,getarg(1)*@coinamount; + set Zeny,Zeny+@price; + delitem getarg(0),@coinamount; + mes @npcname$; + mes "There we go, here's your money"; + next; + return; + +//| Here starts the Zeny to Coin exchange. + +L_ZenyCoin: + next; + if (MaxWeight*50/100 < Weight) { + if (MaxWeight*90/100 < Weight) { + mes @npcname$; + mes "Sorry but you have more than 90% weight. Your coins might drop. I can't give you anything."; + next; + goto L_Menu; + } else + mes @npcname$; + mes "You have 50% or more weight, do you still want to continue?"; + menu "Yes",L_ContinueZenyCoin,"No, thanks",L_Menu; + } +L_ContinueZenyCoin: + mes @npcname$; + mes "First, how much zeny do you want to exchange"; + callsub L_Inputingzeny; + callsub L_Zenycoins; + next; + mes @npcname$; + mes "You can have, with "+@zenyamount+":"; + mes "^996600"+@bronzezeny+"^000000 "+@name1$+"s"; + mes "^999999"+@silverzeny+"^000000 "+@name2$+"s"; + mes "^FFCC00"+@goldzeny+"^000000 "+@name3$+"s"; + mes "or"; + mes "^CCCCCC"+@mithrilzeny+"^000000 "+@name4$+"s"; + next; + if (@zenyamount < @minvalue) goto L_Moremoney; + goto L_ZenyCoin2; + + L_ZenyCoin2: + mes @npcname$; + mes "Which coins do you want? Or do you want a mix of them?"; + menu "I want the "+@name1$+"s",L_Bronzes,"I want the "+@name2$+"s",L_Silvers,"I want the "+@name3$+"s",L_Golds,"I want the "+@name4$+"s",L_Mithrils,"I want a mix of them",L_Mix,"Nothing for now, sorry",L_Menu; + + L_Bronzes: + if (@bronzezeny == 0) goto L_Moremoney; + callsub L_Zenycheckout,@bronzecoinid,@bronzeprice,@bronzezeny; + goto L_Menu; + + L_Silvers: + if (@silverzeny == 0) goto L_Moremoney; + callsub L_Zenycheckout,@silvercoinid,@silverprice,@silverzeny; + goto L_Menu; + + L_Golds: + if (@goldzeny == 0) goto L_Moremoney; + callsub L_Zenycheckout,@goldcoinid,@goldprice,@goldzeny; + goto L_Menu; + + L_Mithrils: + if (@mithrilzeny == 0) goto L_Moremoney; + callsub L_Zenycheckout,@mithrilcoinid,@mithrilprice,@mithrilzeny; + goto L_Menu; + +L_Zenycheckout: + next; + if (((getiteminfo(getarg(0),6))*getarg(2)) > (MaxWeight-Weight)) { + mes @npcname$; + mes "Sorry, your max weight does not allow me to give you this much of zeny coins"; + mes "Either choose another type of coins or a lower quantity, thanks"; + close; + } + if (getarg(2) > 30000) { + mes @npcname$; + mes "Sorry, I can't give you more than 30,000 ea"; + mes "Pick another coin type"; + close; + } + set @itemid,getarg(0); + set @pricea,getarg(1)*getarg(2); + getitem @itemid,getarg(2); + set Zeny,Zeny-@pricea; + mes @npcname$; + mes "There you go, here's your coins"; + next; + return; + +L_Zenycoins: + set @bronzezeny,@zenyamount/@bronzeprice; + set @silverzeny,@zenyamount/@silverprice; + set @goldzeny,@zenyamount/@goldprice; + set @mithrilzeny,@zenyamount/@mithrilprice; + return; + +L_Inputingzeny: + + input @zenyamount; + if (Zeny == 0) { + mes @npcname$; + mes "You don't have any Zeny left. I can't do anything. Get some Zeny first"; + next; + goto L_Menu; + } else if (@zenyamount == 0) { + mes @npcname$; + mes "You didn't input any amount, please retry"; + next; + goto L_Inputingzeny; + } else if (@zenyamount > Zeny) { + mes @npcname$; + mes "The inputted zeny amount is bigger than your actual zeny amount"; + mes "Please re-entry another amount"; + next; + goto L_Inputingzeny; + + } else return; + +//| Other labels + +L_Moremoney: + mes @npcname$; + mes "You need to get more zeny, I can't give you anything with "+@zenyamount+"z, sorry"; + next; + goto L_Menu; + +L_End: + next; + mes @npcname$; + mes "Good to see you and hope to see you again. Bye"; + close; + + +//| Mix function + +L_Mix: + set @totalzeny,0; + set @totalcoins,0; + set @bronzecoins,0; + set @silvercoins,0; + set @goldcoins,0; + set @mithrilcoins,0; + next; + mes @npcname$; + mes "Ok, let's start with ^996600"+@name1$+"s^000000"; + next; + mes @npcname$; + mes "How many coins do you want?"; + input @bronzecoins; + next; + set @totalzeny,@bronzecoins*@bronzeprice; + set @totalcoins,@bronzecoins; + mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000"; + mes "Coins:"; + mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000"; + mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯"; + if (@totalzeny > @zenyamount || @totalzeny < 0) { + mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000"; + mes "Zeny Left: "+(@zenyamount-@totalzeny); + goto L_Overzeny; + } else + mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000"; + mes "Zeny Left: "+(@zenyamount-@totalzeny); + next; + if (@totalzeny > @zenyamount || @totalzeny < 0) + mes @npcname$; + mes "Is this enough or do you want more?"; + menu "It's enough, thanks",L_Payoff,"No, I want some more",-; + next; + mes @npcname$; + mes "Now ^999999"+@name2$+"s^000000. How many coins do you want?"; + next; + input @silvercoins; + next; + set @totalzeny,@bronzecoins*@bronzeprice+@silvercoins*@silverprice; + set @totalcoins,@bronzecoins+@silvercoins; + mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000"; + mes "Coins:"; + mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000"; + mes " ^999999"+@name2$+"s^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000"; + mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯"; + if (@totalzeny > @zenyamount || @totalzeny < 0) { + mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000"; + mes "Zeny Left: "+(@zenyamount-@totalzeny); + goto L_Overzeny; + } else + mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000"; + mes "Zeny Left: "+(@zenyamount-@totalzeny); + next; + if (@totalzeny > @zenyamount || @totalzeny < 0) goto L_Overzeny; + mes @npcname$; + mes "Is this enough or do you want more?"; + menu "It's enough, thanks",L_Payoff,"No, I want some more",-; + next; + mes @npcname$; + mes "Now ^FFCC00"+@name3$+"s^000000. How many coins do you want?"; + input @goldcoins; + next; + set @totalzeny,@bronzecoins*@bronzeprice+@silvercoins*@silverprice+@goldcoins*@goldprice; + set @totalcoins,@bronzecoins+@silvercoins+@goldcoins; + mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000"; + mes "Coins:"; + mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000"; + mes " ^999999"+@name2$+"s^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000"; + mes " ^FFCC00"+@name3$+"s^000000: "+@goldcoins+" ^CC0000"+@goldcoins*@goldprice+"^000000"; + mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯"; + if (@totalzeny > @zenyamount || @totalzeny < 0) { + mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000"; + mes "Zeny Left: "+(@zenyamount-@totalzeny); + goto L_Overzeny; + } else + mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000"; + mes "Zeny Left: "+(@zenyamount-@totalzeny); + next; + if (@totalzeny > @zenyamount || @totalzeny < 0) goto L_Overzeny; + mes @npcname$; + mes "Is this enough or do you want more?"; + menu "It's enough, thanks",L_Payoff,"No, I want some more",-; + next; + mes @npcname$; + mes "Now ^CCCCCC"+@name4$+"s^000000. How many coins do you want?"; + input @mithrilcoins; + next; + set @totalzeny,@bronzecoins*@bronzeprice+@silvercoins*@silverprice+@goldcoins*@goldprice+@mithrilcoins*@mithrilprice; + set @totalcoins,@bronzecoins+@silvercoins+@goldcoins+@mithrilcoins; + mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000"; + mes "Coins:"; + mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000"; + mes " ^999999"+@name2$+"s^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000"; + mes " ^FFCC00"+@name3$+"s^000000: "+@goldcoins+" ^CC0000"+@goldcoins*@goldprice+"^000000"; + mes " ^CCCCCC"+@name4$+"s^000000: "+@mithrilcoins+" ^CC0000"+@mithrilcoins*@mithrilprice+"^000000"; + mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯"; + if (@totalzeny > @zenyamount || @totalzeny < 0) { + mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000"; + mes "Zeny Left: "+(@zenyamount-@totalzeny); + goto L_Overzeny; + } else + mes "TOTAL: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000"; + mes "Zeny Left: "+(@zenyamount-@totalzeny); + next; + if (@totalzeny > @zenyamount || @totalzeny < 0) goto L_Overzeny; + mes @npcname$; + mes "Is this ok?: "+@bronzecoins+" "+@name1$+"s, "+@silvercoins+" "+@name2$+"s, "+@goldcoins+" "+@name3$+"s, "+@mithrilcoins+" "+@name4$+"s, for a total amount of "+@totalzeny; + menu "Yes, it's ok",L_Payoff,"No, I want to re-intro them",L_Mix,"Sorry, I dont want anything",L_Menu; + +L_Payoff: + next; + if (@zenyamount > Zeny) goto L_Overzeny; + set Zeny,Zeny-@totalzeny; + getitem @bronzecoinid,@bronzecoins; + getitem @silvercoinid,@silvercoins; + getitem @goldcoinid,@goldcoins; + getitem @mithrilcoinid,@mithrilcoins; + mes @npcname$; + mes "There you go, here's your coins"; + next; + set @bronzecoins,0; + set @silvercoins,0; + set @goldcoins,0; + set @mithrilcoins,0; + goto L_End; + +L_Overzeny: + next; + mes @npcname$; + mes "Sorry, I can't do anything else. Either the sum of all the coins you inputted is bigger than the zeny amount inputted, or the inputted amout of zeny is bigger that your total Zeny. Please retry."; + next; + goto L_Menu; + +OnInit: +setitemscript 671,"{}"; +end; }
\ No newline at end of file diff --git a/npc/custom/eAAC_Scripts/disguiser.txt b/npc/custom/eAAC_Scripts/disguiser.txt index 218de0196..7b184cc90 100644 --- a/npc/custom/eAAC_Scripts/disguiser.txt +++ b/npc/custom/eAAC_Scripts/disguiser.txt @@ -1,179 +1,179 @@ -//===== eAthena Script =======================================
-//= Disguiser Quesr
-//===== By: ==================================================
-//= PalasX (http://cashaan.dontexist.org)
-//===== Current Version: =====================================
-//= v1.20 Unified
-//===== Compatible With: =====================================
-//= SVN 5690+ (getmonsterinfo)
-//===== Description: =========================================
-//= Baphomet disguises you if you find all his brothers.
-//===== Additional Comments: =================================
-//= Gotta find them all in order
-//= Dynamically edits item 2614(eye of dullahan) with
-//= setitemscript 2614,"{bonus bdisguise,var_disguise;}";
-//= so your SVN better support it
-//= Uses GetMonsterInfo to pull monster names from server, but
-//= without sql_query, the mob IDs are set statically
-//= Went crazy with the functions, the script is TINY now :)
-//============================================================
-
-//////////////////////////
-//Places all of our NPCs//
-//////////////////////////
-prt_fild05.gat,277,226,5 script Dullahan Master 736,{
- callfunc "PXC_Disguiser",0,quest_disguise;
-Close;
-}
-
-moc_fild10.gat,34,283,4 script Dullahan Master 736,{
- callfunc "PXC_Disguiser",1,quest_disguise;
-close;
-}
-
-gef_fild00.gat,97,123,4 script Dullahan Master 736,{
- callfunc "PXC_Disguiser",2,quest_disguise;
-close;
-}
-
-pay_fild01.gat,369,305,4 script Dullahan Master 736,{
- callfunc "PXC_Disguiser",3,quest_disguise;
-close;
-}
-
-pay_fild03.gat,313,40,4 script Dullahan Master 736,{
- callfunc "PXC_Disguiser",4,quest_disguise;
-close;
-}
-
-prt_fild08.gat,362,185,4 script Dullahan Master 736,{
- callfunc "PXC_Disguiser",5,quest_disguise;
- close;
-
-
-//////////////////////////
-// edits the item used ///
-//////////////////////////
-OnInit:
- //EDIT EYE OF DULLAHAN
- setitemscript 2614,"{ bonus bdisguise,var_disguise; }";
- end;
-}
-
-
-
-
-
-//////////////////////////
-// Function. Takes:
-// INTEGER, the order number that the bapho should be visited
-// VARIABLE, the quest progression variable quest_disguise. may be changed if conflicts occur
-//
-// Puts:
-// Everything the NPC does. If you are at the right one, increase your order variable, if not, tell you where to head next on the list, when you finish, offer you to change ring properties.
-// Whenever you dont have a ring, the script will push one on you in ALL instances (wrong NPC, right NPC, and done quest).
-//////////////////////////
-
-function script PXC_Disguiser {
-
- setarray $@PXC_Next$[0],"Culvert","Morocc","Geffen","Payon","Alberta","Izlude";
-
- if(var_disguise > 1) goto Complete;
- if(getarg(0) == 5 && getarg(1) == 5) goto Last;
- if(getarg(0) == getarg(1)) goto Quest;
-
-NotMe:
- mes "[Baphomet]";
- mes "You must visit us in the proper order, as is Thor's will. Only then can we teach you the power of self-transmutation! Hunt around "+$@PXC_Next$[getarg(1)]+" Next!";
- next;
- if(countitem(2614) < 1) goto NeedRing;
- close;
-
-Cancel:
- mes "[Baphomet]";
- mes "Later.";
- close;
-
-Quest:
- set quest_disguise,getarg(1)+1;
- mes "[Baphomet]";
- mes "What am I doing here? Find my brothers and you shall learn a great secret. It is one of the secret and ancient powers of Thor! Search around "+$@PXC_Next$[getarg(1)]+" next!";
- next;
- if(countitem(2614) < 1) goto NeedRing;
- close;
-
-NeedRing:
- mes "[Baphomet]";
- mes "You will need an Eye of Dullahan ring in order to obtain our secret. I can sell you one for 500,000 zeny. Simply bring me the money, and I'll offer it unto Thor in trade!";
- next;
- menu "Buy Ring",-,"Forget it!",Cancel;
- if(Zeny < 500000) goto Cancel;
- set Zeny,Zeny-500000;
- getitem 2614,1;
- mes "[Baphomet]";
- mes "Here is your ring.";
- next;
- goto Cancel;
- close;
-
-Last:
- set quest_disguise,0;
- set var_disguise,1002;
- mes "[Baphomet]";
- mes "I am the last of the six. Forgive us for giving such horrible directions, for we, too, are born from Thor's left eye, and have a terrible mean streak. Plus, being monsters, we're complete and total idiots with a shoddy A.I.! You shall now receive your reward.";
- next;
- goto Complete;
-
-
-Complete:
- if(countitem(2614) < 1) goto NeedRing;
-
- mes "[Baphomet]";
- mes "Several millenia ago, Thor, the creator breathed life onto Midgar. In the beginning, all was well, but Thor's left eye proved to be the bane of our existance. As it's gaze set upon our land, all the monsters were let loose from within Thor's soul. Thor cast out his own eye, the only thing that could control the monsters. Your ring is made from his eye, and will give you the same powers.";
- next;
- mes "[Baphomet]";
- mes "I can change your ring's mystical properties. Which monster spirit shall I weave into your ring?";
- next;
-
- if(getarg(0)==0) callfunc "PXC_DoMenu",1001,1125;
- if(getarg(0)==1) callfunc "PXC_DoMenu",1126,1250;
- if(getarg(0)==2) callfunc "PXC_DoMenu",1251,1375;
- if(getarg(0)==3) callfunc "PXC_DoMenu",1376,1500;
- if(getarg(0)==4) callfunc "PXC_DoMenu",1503,1625;
- if(getarg(0)==5) callfunc "PXC_DoMenu",1626,1721;
-
- close;
- end;
-}
-
-//////////////////////////
-// FUNCTION.
-// Takes:
-// integer, first monster ID to show
-// integer, last monster ID to show
-//////////////////////////
-function script PXC_DoMenu {
-
- //set menu options to mob names, doing the first one manualy so we dont have an empty :
- set $@menu$, getmonsterinfo(getarg(0),MOB_NAME);
-
- for(set $@i, getarg(0)+1; $@i <= getarg(1); set $@i, $@i + 1){
- set $@menu$, $@menu$ + ":" + getmonsterinfo($@i,MOB_NAME);
- }
-
- //Fire our menu
- set @menu, select($@menu$);
-
- //Zero deliminated (off-by-one errors sux0r!!!)
- set @menu, @menu-1;
-
- //congratulate our user
- mes "Behold, whilst you wear this ring, your form shall become that of a "+getmonsterinfo(@menu + getarg(0),MOB_NAME);
-
- //update our variable, with @menu offset addded to the base getarg(0)
- set var_disguise, @menu + getarg(0);
-
- close;
- end;
-
+//===== eAthena Script ======================================= +//= Disguiser Quesr +//===== By: ================================================== +//= PalasX (http://cashaan.dontexist.org) +//===== Current Version: ===================================== +//= v1.20 Unified +//===== Compatible With: ===================================== +//= SVN 5690+ (getmonsterinfo) +//===== Description: ========================================= +//= Baphomet disguises you if you find all his brothers. +//===== Additional Comments: ================================= +//= Gotta find them all in order +//= Dynamically edits item 2614(eye of dullahan) with +//= setitemscript 2614,"{bonus bdisguise,var_disguise;}"; +//= so your SVN better support it +//= Uses GetMonsterInfo to pull monster names from server, but +//= without sql_query, the mob IDs are set statically +//= Went crazy with the functions, the script is TINY now :) +//============================================================ + +////////////////////////// +//Places all of our NPCs// +////////////////////////// +prt_fild05.gat,277,226,5 script Dullahan Master 736,{ + callfunc "PXC_Disguiser",0,quest_disguise; +Close; +} + +moc_fild10.gat,34,283,4 script Dullahan Master 736,{ + callfunc "PXC_Disguiser",1,quest_disguise; +close; +} + +gef_fild00.gat,97,123,4 script Dullahan Master 736,{ + callfunc "PXC_Disguiser",2,quest_disguise; +close; +} + +pay_fild01.gat,369,305,4 script Dullahan Master 736,{ + callfunc "PXC_Disguiser",3,quest_disguise; +close; +} + +pay_fild03.gat,313,40,4 script Dullahan Master 736,{ + callfunc "PXC_Disguiser",4,quest_disguise; +close; +} + +prt_fild08.gat,362,185,4 script Dullahan Master 736,{ + callfunc "PXC_Disguiser",5,quest_disguise; + close; + + +////////////////////////// +// edits the item used /// +////////////////////////// +OnInit: + //EDIT EYE OF DULLAHAN + setitemscript 2614,"{ bonus bdisguise,var_disguise; }"; + end; +} + + + + + +////////////////////////// +// Function. Takes: +// INTEGER, the order number that the bapho should be visited +// VARIABLE, the quest progression variable quest_disguise. may be changed if conflicts occur +// +// Puts: +// Everything the NPC does. If you are at the right one, increase your order variable, if not, tell you where to head next on the list, when you finish, offer you to change ring properties. +// Whenever you dont have a ring, the script will push one on you in ALL instances (wrong NPC, right NPC, and done quest). +////////////////////////// + +function script PXC_Disguiser { + + setarray $@PXC_Next$[0],"Culvert","Morocc","Geffen","Payon","Alberta","Izlude"; + + if(var_disguise > 1) goto Complete; + if(getarg(0) == 5 && getarg(1) == 5) goto Last; + if(getarg(0) == getarg(1)) goto Quest; + +NotMe: + mes "[Baphomet]"; + mes "You must visit us in the proper order, as is Thor's will. Only then can we teach you the power of self-transmutation! Hunt around "+$@PXC_Next$[getarg(1)]+" Next!"; + next; + if(countitem(2614) < 1) goto NeedRing; + close; + +Cancel: + mes "[Baphomet]"; + mes "Later."; + close; + +Quest: + set quest_disguise,getarg(1)+1; + mes "[Baphomet]"; + mes "What am I doing here? Find my brothers and you shall learn a great secret. It is one of the secret and ancient powers of Thor! Search around "+$@PXC_Next$[getarg(1)]+" next!"; + next; + if(countitem(2614) < 1) goto NeedRing; + close; + +NeedRing: + mes "[Baphomet]"; + mes "You will need an Eye of Dullahan ring in order to obtain our secret. I can sell you one for 500,000 zeny. Simply bring me the money, and I'll offer it unto Thor in trade!"; + next; + menu "Buy Ring",-,"Forget it!",Cancel; + if(Zeny < 500000) goto Cancel; + set Zeny,Zeny-500000; + getitem 2614,1; + mes "[Baphomet]"; + mes "Here is your ring."; + next; + goto Cancel; + close; + +Last: + set quest_disguise,0; + set var_disguise,1002; + mes "[Baphomet]"; + mes "I am the last of the six. Forgive us for giving such horrible directions, for we, too, are born from Thor's left eye, and have a terrible mean streak. Plus, being monsters, we're complete and total idiots with a shoddy A.I.! You shall now receive your reward."; + next; + goto Complete; + + +Complete: + if(countitem(2614) < 1) goto NeedRing; + + mes "[Baphomet]"; + mes "Several millenia ago, Thor, the creator breathed life onto Midgar. In the beginning, all was well, but Thor's left eye proved to be the bane of our existance. As it's gaze set upon our land, all the monsters were let loose from within Thor's soul. Thor cast out his own eye, the only thing that could control the monsters. Your ring is made from his eye, and will give you the same powers."; + next; + mes "[Baphomet]"; + mes "I can change your ring's mystical properties. Which monster spirit shall I weave into your ring?"; + next; + + if(getarg(0)==0) callfunc "PXC_DoMenu",1001,1125; + if(getarg(0)==1) callfunc "PXC_DoMenu",1126,1250; + if(getarg(0)==2) callfunc "PXC_DoMenu",1251,1375; + if(getarg(0)==3) callfunc "PXC_DoMenu",1376,1500; + if(getarg(0)==4) callfunc "PXC_DoMenu",1503,1625; + if(getarg(0)==5) callfunc "PXC_DoMenu",1626,1721; + + close; + end; +} + +////////////////////////// +// FUNCTION. +// Takes: +// integer, first monster ID to show +// integer, last monster ID to show +////////////////////////// +function script PXC_DoMenu { + + //set menu options to mob names, doing the first one manualy so we dont have an empty : + set $@menu$, getmonsterinfo(getarg(0),MOB_NAME); + + for(set $@i, getarg(0)+1; $@i <= getarg(1); set $@i, $@i + 1){ + set $@menu$, $@menu$ + ":" + getmonsterinfo($@i,MOB_NAME); + } + + //Fire our menu + set @menu, select($@menu$); + + //Zero deliminated (off-by-one errors sux0r!!!) + set @menu, @menu-1; + + //congratulate our user + mes "Behold, whilst you wear this ring, your form shall become that of a "+getmonsterinfo(@menu + getarg(0),MOB_NAME); + + //update our variable, with @menu offset addded to the base getarg(0) + set var_disguise, @menu + getarg(0); + + close; + end; + }
\ No newline at end of file diff --git a/npc/custom/eAAC_Scripts/kafraExpress/Changelog.txt b/npc/custom/eAAC_Scripts/kafraExpress/Changelog.txt index aa027b96f..2f9555f1d 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/Changelog.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/Changelog.txt @@ -1,483 +1,483 @@ -09/February/2006
-* Refine v2.7
-- Fixed buying of ores being free.
-05/February/2006
-* Readme v1.8
-- Added Kafra Shop section
-* Config v1.9
-- Added Kafra Shop section
-* Shop v0.1
-- Initial release
-* Main v5.4
-- Added support for the Kafra Shop
-* Refine v2.6
-- Inverted order of item processing to prevent overweight problems (first the
- items are charged, then you get the refined ones)
-
-08/January/2006
-* Job Swap v3.1
-- Fixed incorrect menu entry causing crash in the 2nd job menu for female classes.
-- Fixed job names from the menu not matching the job you were about to change
- into (bard/dancer adjust was broken)
-- Fixed job revert saying your previous class was always the same as the current.
-
-04/January/2006
-* readme.txt v1.7
-- Added information about the new stat reset variables.
-
-30/December/2005
-* Main v5.3
-- Fixed NPC dialog freezing after healing both HP/SP
-* Stats v2.2
-- Added option to charge reset based on base/job levels.
-* Config v1.8
-- Added reset by level cost options.
-
-20/December/2005
-* Stats v2.1
-- Fixed resets charging you again when selecting return.
-
-12/December/2005
-* Bank v2.7
-- Fixed inifite loop that would trigger on year change.
-
-08/November/2005
-* Dungeon Warping v3.1
-- Fixed a crash when warping to GonRyun
-
-02/November/2005
-* Config v1.7
-- Added Taekwon equipment variables
-- Added dungeon variables for Abyss/Thanatos/Juperos
-
-01/November/2005
-* Job Changer v3.5
-- Clean up and optimized to the new scripting engine.
-- Added Taekwon Class support
-- Acquired items will now display the slot count they have.
-
-31/October/2005
-* Pvp Warps v1.7, Woe Warps v1.7
-- Clean up and optimized to the new scripting engine.
-
-30/October/2005
-* Dungeon Warps v3.0
-- Added Abyss Lake, Thanatos Tower and Juperos.
-
-29/October/2005
-* Dungeon Warps v2.9
-- Clean up and optimized to the new scripting engine.
-
-28/October/2005
-* Refine v2.5, Renter v1.8, Stat Market v2.0, Stats v2.0, Uncard v1.5
-- Clean up and optimized to the new scripting engine.
-
-27/October/2005
-* Broadcast v3.0, Bank v2.6, Dye v1.9, Job Swapper v3.0, Main v5.2
-- Clean up and optimized to the new scripting engine.
-
-14/October/2005
-* Pvp Warps v1.6
-- Fixed standard pvp mode warps.
-
-07/October/2005
-* JobSwapper v2.5
-- Updated to work on the new script engine.
-
-06/October/2005
-* Broadcast v2.8
-- Fixed a bug when broadcasting to Room Four.
-
-17/September/2005
-* Pvp Warps v1.5
-- Made warps random.
-
-04/September/2005
-* Town Warps v1.6
-- Label fix.
-
-11/August/2005
-* PvP Warps v1.4
-- Removed the obtained item, the pvp maps are "no return" areas afterall.
-
-02/August/2005
-* Job Changer v3.2
-- Fixed issues with UpperPolicy = 1 and SkipNovice = 1 not working correctly.
-
-* readme.txt v1.6
-- Updated to reflect current changes.
-
-* Bank v2.5, Broadcast v2.7, Dye v1.7, Job Changer v3,1, Job Swapper v2.4,
- Main v5.0, Refine v2.3, Renting v1.7, StatMarket v1.9, Stats v1.8,
- Uncarder v1.3, Warp Dungeon v2.7, Warp PvP v1.3, Warp Town v1.5, Warp WoE v1.6
-- Updated all 'emotion's to use a e_* constant instead of numbers.
-- Updated function F_keIntro to simplify code.
-- Updated headers to reflect actual script requirements.
-
-* Job Changer v3.0, Job Swapper v2.6, Config v1.6
-- Removed Upper type related code as this is not really implemented in eA.
-
-07/July/2005
-* readme v1.5
-- Updated documentation regarding traveller's mode.
-- Added descriptions for the new variables in the Stat Market.
-
-* Config v1.5
-- Updated comments for Traveller's warp mode.
-- Added variables kesm_skTradeCost, kesm_stTradeCost
-- Removed Gefenia
-
-* Stat Market v1.8
-- Added support for trading directly skills->stats or stats->skills.
-
-* Town Warps v1.4
-- Added again Einbech
-- Added Traveller's Warp mode 2
-
-* Dungeon Warps v2.6
-- Added Traveller's Warp mode 2
-- Sunken Ship Traveller mode bugfix.
-- Removed Gefenia
-
-* Kafras v1.9
-- Readded Einbech's town Kafra
-- Removed Gefenia
-
-05/July/2005
-* Town Warps v1.3
-- Fixed warps being free.
-- Some optimizations.
-
-04/July/2005
-* Job Swap v2.2
-- Fixed script 'freeze' when you don't have enough to revert to the previous job.
-- Fixed job-swapping being free if you did not have enough zeny.
-
-29/June/2005
-* Config v1.4
-- Added LightHalzen Rekkeben Cost
-
-* Dungeon Warps v2.5
-- Added LightHalzen
-- Miscellanous name corrections
-
-* Town Warps v1.2
-- Removed Einbech (it is just a Einbroch Station?)
-- Added LightHalzen
-
-* Kafras v1.8
-- Removed Einbech
-- Added LightHalzen (Town + Dungeon)
-
-* Broadcast v2.6
-- Added variable kebc_showOnline to display count of recipients.
-
-* Woe Warps v1.5, Town Warps v1.1, Pvp Warps v1.2, Dungeon Warps v1.4, Config v1.2
-- Changed variable kewd_onlineStr to ked_users
-
-* Main v4.9
-- Updated to use the new warp dungeon file.
-- Some cleanup and reorganization of menus.
-
-* Warp Dungeon v2.3
-- Merged Short Warps & Deep Warps into a single file.
-
-* Main v4.8
-- Moved the warping function here.
-- ke_warp_core.txt no longer needed (removed)
-
-* Job Changer v2.9, Job Swapper v2.1
-- Some cleaning
-
-* Config v1.1
-- Reorganized, some cleaning.
-
-28/June/2005
-* readme.txt v1.3
-- Updated and cleaned documentation.
-
-* Warp Town v1.0
-- Branched off Warp Core v3.1
-
-* Warp Core v3.2
-- Removed the Town warp code.
-
-* Main v4.7
-- Reorganized Menus
-
-* Bank v2.4, Broadcast v2.5, Dye v1.6, Job Changer v2.8, Job Swap v2.0,
- Main v4.6, Refine v2.2, Rent v1.6, Stat Market v1.7, Stats v1.7,
- Uncard v1.2, Warp Core v3.1, Warp Deep v2.2, Warp Short v2.1, Warp WoE v1.4
-- Upgraded to use config.txt
-
-27/June/2005
-* Job Swap v1.9
-- Fixed another stupid bug when job-reverting
-
-14/June/2005
-* Job Changer v2.7
-- Stupid fix for changing from adv 1st class to adv 2nd...
-
-10/June/2005
-* Job Swap v1.8
-- Fixed a silly bug with the announce option.
-
-05/June/2005
-* Core Warps v3.0, Short Warps v2.0
-- Bug Fix. kewd_pyramids -> kewd_pyramid
-- kewd_turtle -> kewd_turtleIsland
-
-04/June/2005
-* Core Warps v2.9, Deep Warps v2.1
-- Bug fix related to deep warps.
-- Fixed town warp costs being always zero.
-- Fixed Niflheim cost display when online count is on.
-
-02/June/2005
-* Core Warps v2.7, Short Warps 1.9, Deep Warps 2.0, Kafras v1.7
-- Added Einbech Mines
-
-* Kafras v1.6
-- Updated Kafras with Type 2
-
-* Deep Warp v1.9, Short Warps v1.8
-- Added support for kewd_travel
-
-* Main v4.5
-- Added kewd_travel for traveller's warp system.
-- Moved Warp Menu into this module.
-
-* Pvp Warp v1.0
-- Branched off ke_warp.txt v2.4
-
-* Core Warp v2.5:
-- Added kewt_discount for town warps discount
-- Added kewd_travel for traveller's warp system.
-- Changed cost display for towns, implemented Kafra Pass discount value
-
-1/June/2005
-* Bank v 2.3
-- Added kebk_capacity variable for limited account size.
-- Added kebk_useGlobalBank variable for enabling global counter.
-
-31/May/2005
-* Job Changer v2.5, Job Swapper v1.7
-- Modified code to work around the callfunc/menu bug
-
-* Main v2.4
-- Added SaveOnSpot option
-
-26/May/2005
-* Short Warps v1.7
-- Added option kewd_turtleCave for toggling island/cave warp (Turtle Island)
-
-* Bank v2.1, Broadcast v2.4, Dye v1.5, Main v4.2, Refine v2.1, Renting v1.5
- StatMarket v1.6, Stats v1.6, Uncarder v1.1, Warp Core v2.3, Deep Warps v1.8
- Short Warps v1.6, WoE Warps v1.3, JobSwapper 1.6, JobChanger 2.4
-- Label cleaning & standarization
-
-* JobChanger v2.3
-- Replaced functions with subfunctions
-- Implemented use of new global function GF_getJobId
-
-* JobSwapper v1.5
-- Replaced functions with subfunctions
-- Implemented use of new global function GF_getJobId
-- Added Support for Baby Classes
-
-25/May/2005
-* Kafras v1.5, Bank v2.0, Broadcast v2.3, Dye v1.4, JobChange v2.1,
- JobSwapper v1.3, Main v4.1, Refine v2.0, Renting v1.4, StatMarket v1.5,
- Stats & Resets v1.5, Warp Core v2.2, Deep Warps v1.7, WoE Warps v1.2
-- Header Cleanup
-- Global Variables standarized
-
-* Bank v1.9, Refine v1.8, Warp Core v2.1, Deep Warps v1.6
-- Changed callfunc's to callsub where applicable.
-
-* Broadcast v2.2
-- Changed callfunc's to callsub where applicable.
-- Updated calls to global functions file new version.
-
-* Dye v1.3
-- New variable kedy_clothJWED specifies max dye count for wedding class
-- Changed callfunc's to callsub where applicable.
-- Updated calls to global functions file new version.
-
-* Rent v1.3
-- Removed cost of GrandPeco, simplified script to enable all classes to rent
- anything (as long as they have the required skill)
-- Updated calls to global functions file new version.
-
-* Statmarket v1.4
-- Added some more overflow checks
-
-* Stats v1.4
-- Added ke_resetbasic, specifies if basic skills are reset as well.
-
-* JobChanger v2.0
-- Restructured, updated to work with Baby Classes
-
-* UnCarder v1.0
-- Initial Release
-
-01/Apr/2005
-* Kafras v1.5
-- Updated Niflheim Kafra type
-
-* Warp Core v2.0
-- Added Nifflheim Quest Support
-- Added Ayothaya Dungeon Cost
-
-* Warp Short v1.5, Warp Deep v1.5
-- Added Ayothaya Dungeon
-- Changed callfunc's to callsub where appliable.
-
-31/Mar/2005
-* Core Module v4.0
-- Added charge functions for Kafra Pass calculations
-- Added Nifflheim Quest Support
-
-* Broadcast v2.1, JobSwaper v1.2, Renting v1.1, StatMarket v1.3,
-* Stats v1.3, Core Warping v1.9, Deep Warping v1.4, Short Warping v1.4,
-* Woe Warping v1.1
-- Updated to new charge functions
-
-* Banker v1.8
-- Updated to new charge functions
-- Refined messages when charging monthly and not having enough
-
-* Refiner v1.8
-- Updated to new charge functions
-- Fixed bug where Kafra Pass discount was ignored when repairing equipment
-
-30/Mar/2005
-
-* Warper v1.8
-- Added Cities: Ayothaya, Einbroch, Einbech
-
-* Kafras v1.4
-- Added Kafras for towns: Ayothaya, Einbroch, Einbech
-
-26/Mar/2005
-* Job Changer v1.6
-- Shortened label lengths
-
-15/Mar/2005
-* Job Changer v1.5
-- Fixed infinite loop bug on change from High Novice to High First Class
-
-03/Mar/2005
-* Job Swapper v1.1
-- Added support for saving dye on revert
-- Added support to reset dye on swap
-
-* Job Changer v1.4
-- Added support for dye reset on change
-
-* Stylist v1.2
-- Added support for independent dye ranges per job-class
-
-24/Feb/2005
-* Job Swapper v1.0
-- Initial Release
-
-* Job Changer v1.3
-- Updated to work with the latest GF_getJob version
-
-* BroadCast Module v2.0
-- Updated to work with the latest GF_getJob version
-- Added confirmation before broadcasting
-
-* Core Module v3.8
-- Added support for the Job Swap entry
-- The Kafra image is now removed after the close
-- Added option to not expire Kafra Pass on exit
-
-23/Feb/2005
-* Job Changer v1.2
-- Added alternate weapons when changing at high job levels
-- Added "show details" to display detailed information of what will happen when you change jobs.
-- Added missing '-' on female (archer/thief) raising menu
-- Fixed a typo by which first High Classes could change regardless of job level
-
-19/Feb/2005
-* Job Changer v1.0
-- Initial Release
-
-* Core Module v3.6
-- Added support for the Job change entry
-
-18/Feb/2005
-* Dye v1.1
-- Added a missing 'end;' on the OnInit event
-
-* Stat Market v1.2
-- Added a missing 'end;' on the OnInit event
-
-* Stat/Reset System v1.2
-- Added a missing 'end;' on the OnInit event
-
-16/Feb/2005
-* Broadcasting v1.8
-- Updated use of GF_getJob
-
-11/Feb/2005
-* Warping Deep/Short v1.3
-- Updated Amatsu Entrance Warp
-
-01/Feb/2005
-* Bank Module v1.7
-- Fixed Monthly costs
-- Added overflow protection
-
-26/Jan/2005
-* Stat Market v1.1
-- Fixed overflow exploit when qty*price overflows.
-
-* Refining System v1.7
-- Fixed overflow exploit when qty*price overflows.
-
-* Banking Module v1.6
-- Added maximum transaction costs
-
-12/Jan/2005
-* Core Module v3.5
-- Fixed Negative Bug exploit on regular storage
-- Added Guild Storage Support
-
-* Banking Module v1.5
-- Fixed bug when gaining interests between years
-- Added monthly maintenance fees
-- Added minimum transaction costs
-
-* Refine Module v1.6
-- Added option to display success/failure chances
-- Item names are displayed now using getitemname()
-
-* Core Warping Module v.1.7
-- Minor name corrections
-- Added entry for Guild Wars warping
-
-* Deep Warping Module v1.2
-- Minor name corrections
-- Changed Orcs Dungeon warping location
-
-* Short Warping Module v.1.2
-- Minor name corrections
-- Changed Orcs Dungeon warping location
-
-* WoE Warping Module v1.0
-- Initial Release
-
-20/Nov/2004
-* Core Module v3.2
-- Fixed Kafra Image not being removed when opening storage
-
-* Warp Core Module v1.6
-- Expanded PvP system to use 8x5 rooms
-
-* Broadcast Module v1.7
-- Expanded to include new PvP rooms
-
--- Too old to remember :P
+09/February/2006 +* Refine v2.7 +- Fixed buying of ores being free. +05/February/2006 +* Readme v1.8 +- Added Kafra Shop section +* Config v1.9 +- Added Kafra Shop section +* Shop v0.1 +- Initial release +* Main v5.4 +- Added support for the Kafra Shop +* Refine v2.6 +- Inverted order of item processing to prevent overweight problems (first the + items are charged, then you get the refined ones) + +08/January/2006 +* Job Swap v3.1 +- Fixed incorrect menu entry causing crash in the 2nd job menu for female classes. +- Fixed job names from the menu not matching the job you were about to change + into (bard/dancer adjust was broken) +- Fixed job revert saying your previous class was always the same as the current. + +04/January/2006 +* readme.txt v1.7 +- Added information about the new stat reset variables. + +30/December/2005 +* Main v5.3 +- Fixed NPC dialog freezing after healing both HP/SP +* Stats v2.2 +- Added option to charge reset based on base/job levels. +* Config v1.8 +- Added reset by level cost options. + +20/December/2005 +* Stats v2.1 +- Fixed resets charging you again when selecting return. + +12/December/2005 +* Bank v2.7 +- Fixed inifite loop that would trigger on year change. + +08/November/2005 +* Dungeon Warping v3.1 +- Fixed a crash when warping to GonRyun + +02/November/2005 +* Config v1.7 +- Added Taekwon equipment variables +- Added dungeon variables for Abyss/Thanatos/Juperos + +01/November/2005 +* Job Changer v3.5 +- Clean up and optimized to the new scripting engine. +- Added Taekwon Class support +- Acquired items will now display the slot count they have. + +31/October/2005 +* Pvp Warps v1.7, Woe Warps v1.7 +- Clean up and optimized to the new scripting engine. + +30/October/2005 +* Dungeon Warps v3.0 +- Added Abyss Lake, Thanatos Tower and Juperos. + +29/October/2005 +* Dungeon Warps v2.9 +- Clean up and optimized to the new scripting engine. + +28/October/2005 +* Refine v2.5, Renter v1.8, Stat Market v2.0, Stats v2.0, Uncard v1.5 +- Clean up and optimized to the new scripting engine. + +27/October/2005 +* Broadcast v3.0, Bank v2.6, Dye v1.9, Job Swapper v3.0, Main v5.2 +- Clean up and optimized to the new scripting engine. + +14/October/2005 +* Pvp Warps v1.6 +- Fixed standard pvp mode warps. + +07/October/2005 +* JobSwapper v2.5 +- Updated to work on the new script engine. + +06/October/2005 +* Broadcast v2.8 +- Fixed a bug when broadcasting to Room Four. + +17/September/2005 +* Pvp Warps v1.5 +- Made warps random. + +04/September/2005 +* Town Warps v1.6 +- Label fix. + +11/August/2005 +* PvP Warps v1.4 +- Removed the obtained item, the pvp maps are "no return" areas afterall. + +02/August/2005 +* Job Changer v3.2 +- Fixed issues with UpperPolicy = 1 and SkipNovice = 1 not working correctly. + +* readme.txt v1.6 +- Updated to reflect current changes. + +* Bank v2.5, Broadcast v2.7, Dye v1.7, Job Changer v3,1, Job Swapper v2.4, + Main v5.0, Refine v2.3, Renting v1.7, StatMarket v1.9, Stats v1.8, + Uncarder v1.3, Warp Dungeon v2.7, Warp PvP v1.3, Warp Town v1.5, Warp WoE v1.6 +- Updated all 'emotion's to use a e_* constant instead of numbers. +- Updated function F_keIntro to simplify code. +- Updated headers to reflect actual script requirements. + +* Job Changer v3.0, Job Swapper v2.6, Config v1.6 +- Removed Upper type related code as this is not really implemented in eA. + +07/July/2005 +* readme v1.5 +- Updated documentation regarding traveller's mode. +- Added descriptions for the new variables in the Stat Market. + +* Config v1.5 +- Updated comments for Traveller's warp mode. +- Added variables kesm_skTradeCost, kesm_stTradeCost +- Removed Gefenia + +* Stat Market v1.8 +- Added support for trading directly skills->stats or stats->skills. + +* Town Warps v1.4 +- Added again Einbech +- Added Traveller's Warp mode 2 + +* Dungeon Warps v2.6 +- Added Traveller's Warp mode 2 +- Sunken Ship Traveller mode bugfix. +- Removed Gefenia + +* Kafras v1.9 +- Readded Einbech's town Kafra +- Removed Gefenia + +05/July/2005 +* Town Warps v1.3 +- Fixed warps being free. +- Some optimizations. + +04/July/2005 +* Job Swap v2.2 +- Fixed script 'freeze' when you don't have enough to revert to the previous job. +- Fixed job-swapping being free if you did not have enough zeny. + +29/June/2005 +* Config v1.4 +- Added LightHalzen Rekkeben Cost + +* Dungeon Warps v2.5 +- Added LightHalzen +- Miscellanous name corrections + +* Town Warps v1.2 +- Removed Einbech (it is just a Einbroch Station?) +- Added LightHalzen + +* Kafras v1.8 +- Removed Einbech +- Added LightHalzen (Town + Dungeon) + +* Broadcast v2.6 +- Added variable kebc_showOnline to display count of recipients. + +* Woe Warps v1.5, Town Warps v1.1, Pvp Warps v1.2, Dungeon Warps v1.4, Config v1.2 +- Changed variable kewd_onlineStr to ked_users + +* Main v4.9 +- Updated to use the new warp dungeon file. +- Some cleanup and reorganization of menus. + +* Warp Dungeon v2.3 +- Merged Short Warps & Deep Warps into a single file. + +* Main v4.8 +- Moved the warping function here. +- ke_warp_core.txt no longer needed (removed) + +* Job Changer v2.9, Job Swapper v2.1 +- Some cleaning + +* Config v1.1 +- Reorganized, some cleaning. + +28/June/2005 +* readme.txt v1.3 +- Updated and cleaned documentation. + +* Warp Town v1.0 +- Branched off Warp Core v3.1 + +* Warp Core v3.2 +- Removed the Town warp code. + +* Main v4.7 +- Reorganized Menus + +* Bank v2.4, Broadcast v2.5, Dye v1.6, Job Changer v2.8, Job Swap v2.0, + Main v4.6, Refine v2.2, Rent v1.6, Stat Market v1.7, Stats v1.7, + Uncard v1.2, Warp Core v3.1, Warp Deep v2.2, Warp Short v2.1, Warp WoE v1.4 +- Upgraded to use config.txt + +27/June/2005 +* Job Swap v1.9 +- Fixed another stupid bug when job-reverting + +14/June/2005 +* Job Changer v2.7 +- Stupid fix for changing from adv 1st class to adv 2nd... + +10/June/2005 +* Job Swap v1.8 +- Fixed a silly bug with the announce option. + +05/June/2005 +* Core Warps v3.0, Short Warps v2.0 +- Bug Fix. kewd_pyramids -> kewd_pyramid +- kewd_turtle -> kewd_turtleIsland + +04/June/2005 +* Core Warps v2.9, Deep Warps v2.1 +- Bug fix related to deep warps. +- Fixed town warp costs being always zero. +- Fixed Niflheim cost display when online count is on. + +02/June/2005 +* Core Warps v2.7, Short Warps 1.9, Deep Warps 2.0, Kafras v1.7 +- Added Einbech Mines + +* Kafras v1.6 +- Updated Kafras with Type 2 + +* Deep Warp v1.9, Short Warps v1.8 +- Added support for kewd_travel + +* Main v4.5 +- Added kewd_travel for traveller's warp system. +- Moved Warp Menu into this module. + +* Pvp Warp v1.0 +- Branched off ke_warp.txt v2.4 + +* Core Warp v2.5: +- Added kewt_discount for town warps discount +- Added kewd_travel for traveller's warp system. +- Changed cost display for towns, implemented Kafra Pass discount value + +1/June/2005 +* Bank v 2.3 +- Added kebk_capacity variable for limited account size. +- Added kebk_useGlobalBank variable for enabling global counter. + +31/May/2005 +* Job Changer v2.5, Job Swapper v1.7 +- Modified code to work around the callfunc/menu bug + +* Main v2.4 +- Added SaveOnSpot option + +26/May/2005 +* Short Warps v1.7 +- Added option kewd_turtleCave for toggling island/cave warp (Turtle Island) + +* Bank v2.1, Broadcast v2.4, Dye v1.5, Main v4.2, Refine v2.1, Renting v1.5 + StatMarket v1.6, Stats v1.6, Uncarder v1.1, Warp Core v2.3, Deep Warps v1.8 + Short Warps v1.6, WoE Warps v1.3, JobSwapper 1.6, JobChanger 2.4 +- Label cleaning & standarization + +* JobChanger v2.3 +- Replaced functions with subfunctions +- Implemented use of new global function GF_getJobId + +* JobSwapper v1.5 +- Replaced functions with subfunctions +- Implemented use of new global function GF_getJobId +- Added Support for Baby Classes + +25/May/2005 +* Kafras v1.5, Bank v2.0, Broadcast v2.3, Dye v1.4, JobChange v2.1, + JobSwapper v1.3, Main v4.1, Refine v2.0, Renting v1.4, StatMarket v1.5, + Stats & Resets v1.5, Warp Core v2.2, Deep Warps v1.7, WoE Warps v1.2 +- Header Cleanup +- Global Variables standarized + +* Bank v1.9, Refine v1.8, Warp Core v2.1, Deep Warps v1.6 +- Changed callfunc's to callsub where applicable. + +* Broadcast v2.2 +- Changed callfunc's to callsub where applicable. +- Updated calls to global functions file new version. + +* Dye v1.3 +- New variable kedy_clothJWED specifies max dye count for wedding class +- Changed callfunc's to callsub where applicable. +- Updated calls to global functions file new version. + +* Rent v1.3 +- Removed cost of GrandPeco, simplified script to enable all classes to rent + anything (as long as they have the required skill) +- Updated calls to global functions file new version. + +* Statmarket v1.4 +- Added some more overflow checks + +* Stats v1.4 +- Added ke_resetbasic, specifies if basic skills are reset as well. + +* JobChanger v2.0 +- Restructured, updated to work with Baby Classes + +* UnCarder v1.0 +- Initial Release + +01/Apr/2005 +* Kafras v1.5 +- Updated Niflheim Kafra type + +* Warp Core v2.0 +- Added Nifflheim Quest Support +- Added Ayothaya Dungeon Cost + +* Warp Short v1.5, Warp Deep v1.5 +- Added Ayothaya Dungeon +- Changed callfunc's to callsub where appliable. + +31/Mar/2005 +* Core Module v4.0 +- Added charge functions for Kafra Pass calculations +- Added Nifflheim Quest Support + +* Broadcast v2.1, JobSwaper v1.2, Renting v1.1, StatMarket v1.3, +* Stats v1.3, Core Warping v1.9, Deep Warping v1.4, Short Warping v1.4, +* Woe Warping v1.1 +- Updated to new charge functions + +* Banker v1.8 +- Updated to new charge functions +- Refined messages when charging monthly and not having enough + +* Refiner v1.8 +- Updated to new charge functions +- Fixed bug where Kafra Pass discount was ignored when repairing equipment + +30/Mar/2005 + +* Warper v1.8 +- Added Cities: Ayothaya, Einbroch, Einbech + +* Kafras v1.4 +- Added Kafras for towns: Ayothaya, Einbroch, Einbech + +26/Mar/2005 +* Job Changer v1.6 +- Shortened label lengths + +15/Mar/2005 +* Job Changer v1.5 +- Fixed infinite loop bug on change from High Novice to High First Class + +03/Mar/2005 +* Job Swapper v1.1 +- Added support for saving dye on revert +- Added support to reset dye on swap + +* Job Changer v1.4 +- Added support for dye reset on change + +* Stylist v1.2 +- Added support for independent dye ranges per job-class + +24/Feb/2005 +* Job Swapper v1.0 +- Initial Release + +* Job Changer v1.3 +- Updated to work with the latest GF_getJob version + +* BroadCast Module v2.0 +- Updated to work with the latest GF_getJob version +- Added confirmation before broadcasting + +* Core Module v3.8 +- Added support for the Job Swap entry +- The Kafra image is now removed after the close +- Added option to not expire Kafra Pass on exit + +23/Feb/2005 +* Job Changer v1.2 +- Added alternate weapons when changing at high job levels +- Added "show details" to display detailed information of what will happen when you change jobs. +- Added missing '-' on female (archer/thief) raising menu +- Fixed a typo by which first High Classes could change regardless of job level + +19/Feb/2005 +* Job Changer v1.0 +- Initial Release + +* Core Module v3.6 +- Added support for the Job change entry + +18/Feb/2005 +* Dye v1.1 +- Added a missing 'end;' on the OnInit event + +* Stat Market v1.2 +- Added a missing 'end;' on the OnInit event + +* Stat/Reset System v1.2 +- Added a missing 'end;' on the OnInit event + +16/Feb/2005 +* Broadcasting v1.8 +- Updated use of GF_getJob + +11/Feb/2005 +* Warping Deep/Short v1.3 +- Updated Amatsu Entrance Warp + +01/Feb/2005 +* Bank Module v1.7 +- Fixed Monthly costs +- Added overflow protection + +26/Jan/2005 +* Stat Market v1.1 +- Fixed overflow exploit when qty*price overflows. + +* Refining System v1.7 +- Fixed overflow exploit when qty*price overflows. + +* Banking Module v1.6 +- Added maximum transaction costs + +12/Jan/2005 +* Core Module v3.5 +- Fixed Negative Bug exploit on regular storage +- Added Guild Storage Support + +* Banking Module v1.5 +- Fixed bug when gaining interests between years +- Added monthly maintenance fees +- Added minimum transaction costs + +* Refine Module v1.6 +- Added option to display success/failure chances +- Item names are displayed now using getitemname() + +* Core Warping Module v.1.7 +- Minor name corrections +- Added entry for Guild Wars warping + +* Deep Warping Module v1.2 +- Minor name corrections +- Changed Orcs Dungeon warping location + +* Short Warping Module v.1.2 +- Minor name corrections +- Changed Orcs Dungeon warping location + +* WoE Warping Module v1.0 +- Initial Release + +20/Nov/2004 +* Core Module v3.2 +- Fixed Kafra Image not being removed when opening storage + +* Warp Core Module v1.6 +- Expanded PvP system to use 8x5 rooms + +* Broadcast Module v1.7 +- Expanded to include new PvP rooms + +-- Too old to remember :P diff --git a/npc/custom/eAAC_Scripts/kafraExpress/config.txt b/npc/custom/eAAC_Scripts/kafraExpress/config.txt index 1e2bf3e1b..4848cb88c 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/config.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/config.txt @@ -1,400 +1,400 @@ -//===== eAthena Script =======================================
-//= Kafra Express - Config Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 1.8
-//===== Compatible With: =====================================
-//= Any eAthena Version with function support
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= This module contains the configuration of all modules.
-//===== Additional Comments: =================================
-//= See <http://www.eathena.deltaanime.net/board/index.php?showtopic=20290>
-//= for indepth explanation of the Kafra Express Script Package.
-//============================================================
-
-- script keConfig -1,{
- //-------------------------------------------------------------------------------
- //Config for the Main Module
- //-------------------------------------------------------------------------------
-OnInit:
- set $@ke_saveOnSpot,0; //If 1, the respawn point is saved where the char is standing.
- set $@keh_hpCost,10; //Cost of HP healing (per 10HP)
- set $@keh_spCost,100; //Cost of SP healing (per 10SP)
- set $@kes_cost,50; //Cost of opening the storage
- set $@kegs_cost,500; //Cost of opening the guild storage
-
- //Kafra Pass Options:
- set $@kekp_reset,1; //Kafra passes Expire when you speak to a Kafra?
- //(otherwise duration is as long as a temporary variable)
- set $@kekp_reserveCost,100; //Cost of each Reserve Point in Zeny (0 disable)
- set $@kekp_minReserve,1; //Min Reserve Points you can earn in a single transaction
- set $@kekp_maxReserve,150; //Max Reserve Points you can earn in a single transaction
-
- //Display Options
- set $@ked_users$,"people"; //String used when referring to people (player count).
- // Values like "ppl", "users" or "on" are also recommended.
- end;
- //-------------------------------------------------------------------------------
- //Config for the Bank Module
- //-------------------------------------------------------------------------------
-OnLoadBank:
- set $@kebk_depositCost,0; //Fee for bank deposits in % (10 = 10%)
- set $@kebk_withdrawCost,5; //Fee for bank withdrawals in % (10 = 10%)
- set $@kebk_minTransact,1000; //Value of the Minimum Transaction (deposit/withdraw)
- set $@kebk_maxTransact,999999; //Value of the Maximum Transaction (deposit/withdraw)
- set $@kebk_capacity,99999999; //Account capacity: Max zeny that can be held.
- set $@kebk_dayInterest,10; //Savings daily interests in 0.01% units (100 = 1%)
- set $@kebk_monMaintenance,1000; //Monthly flat fee charged for account maintenance
- set $@kebk_useGlobalBank,0; //When 1, all charged fees go to $ke_globalbank
- end;
- //-------------------------------------------------------------------------------
- //Config for the Broadcast Module
- //-------------------------------------------------------------------------------
-OnLoadBroadcast:
- //Following costs are for current map costs:
- set $@kebc_showOnline,0; //if 1, count of recipients will be listed.
- set $@kebc_partyCost,2500; //party request broadcast cost
- set $@kebc_pvpCost,5000; //pvp request broadcast cost
- set $@kebc_cost,10000; //general broadcast cost
- set $@kebc_anonCost,100000; //anonymous broadcast cost
- set $@kebc_globalFactor,1000; //When doing server bcs, the prices are increased by this amount (500 = 500% = 5x)
- set $@kebc_discount,15; //% Discount to apply when the KafraPass is active
- end;
- //-------------------------------------------------------------------------------
- //Config for the Dye and Stylist Module
- //-------------------------------------------------------------------------------
-OnLoadDye:
- set $@kedy_enableHairstyle,0; //Set to 1 to enable haircut style change.
- set $@kedy_styles,23; //Highest available haircut style (default 23)
- set $@kedy_hair,8; //Highest available hair dye (RO default is 8)
-
- //Highest available cloth dye depending on job-class
- set $@kedy_clothJN,77; //Novice (+High/Baby)
- set $@kedy_clothJ1ST,77; //1st Jobs (+High/Baby)
- set $@kedy_clothJ2ND,77; //2nd Jobs (+High/Baby)
- set $@kedy_clothJSN,77; //Super Novice (+Baby)
- set $@kedy_clothJWED,77; //Wedding Class
- end;
- //-------------------------------------------------------------------------------
- //Config for the Job Changer Module
- //-------------------------------------------------------------------------------
-OnLoadJobChange:
- set $@kejc_skillsPolicy,0; //Remaining Skill Points Policy:
- //0: Do not allow job changing until points are used up
- //1: Discard the remaining skill points
- //2: Let extra skill points be carried to next job
-
- set $@kejc_upperPolicy,0; //Upper Job management policy:
- //0: Ignore Mode: People can change in any order
- //1: Force Mode: Job changes are forced on the correct path.
-
- set $@kejc_announce,1; //Do a global announce when someone changes job.
- set $@kejc_resetDye,1; //Set to 1 to reset cloth dye upon change
- set $@kejc_skipNovice,0; //0: Novice needs Job 10 to change, 1: Can Skip Novice Class
- set $@kejc_baseSN,30; //Base lv required to become a Super Novice
-
- //Note that the change costs can be converted into rewards by specifying a negative amount.
- set $@kejc_base2ND,1; //Base lv required to change into a second class
- set $@kejc_job2ND,40; //Job Lv required to change into a second Class
- set $@kejc_cost2ND,-25000; //Zeny cost when changing into a second Class
-
- set $@kejc_baseRebirth,99; //Base lv required to do the Rebirth
- set $@kejc_jobRebirth,50; //Job Lv required to do the Rebirth
- set $@kejc_costRebirth,1000000; //Zeny cost required to do the Rebirth
-
- set $@kejc_rebirthReset,1; //When changing to a high novice, reset base level to 1?
- set $@kejc_weaponPolicy,1; //Set to 1 to give a weapon upon job change
-
- if ($@kejc_weaponPolicy == 0) //don't touch
- end;
-
- set $@kejc_wBonusLv,50; //Job level for upgraded weapon version, use 0 to disable
-
- //Weapons awarded to each job upon change (use 0 to disable for a particular class)
- //First classes:
- set $@kejc_wAcolyte,1501; //Club
- set $@kejc_wArcher,1701; //Bow
- set $@kejc_wMage,1601; //Rod
- set $@kejc_wMerchant,1301; //Axe
- set $@kejc_wSwordman,1101; //Sword
- set $@kejc_wThief,1201; //Knife
- set $@kejc_wTaekwon,0; //Nothing (they don't wield weapons)
- set $@kejc_wSuperNovice,1202; //Knife
-
- //Normal Weapons for Second classes
- set $@kejc_wPriest,1551; //Bible
- set $@kejc_wMonk,1801; //Waghnak
- set $@kejc_wHunter,1704; //Composite Bow
- set $@kejc_wBard,1901; //Violin
- set $@kejc_wDancer,1950; //Rope
- set $@kejc_wWizard,1602; //Rod
- set $@kejc_wSage,1550; //Book
- set $@kejc_wBlacksmith,1351; //Battle Axe
- set $@kejc_wAlchemist,1351; //Battle Axe
- set $@kejc_wKnight,1116; //Katana
- set $@kejc_wCrusader,1107; //Blade
- set $@kejc_wAssassin,1250; //Jur
- set $@kejc_wRogue,1210; //Cutter
- set $@kejc_wStarGladiator,1550; //Book
- set $@kejc_wSoulLinker,1602; //Rod
-
- if ($@kejc_wBonusLv == 0) //Don't touch.
- end;
-
- //Improved versions awarded to second classes
- set $@kejc_w2Priest,1519; //Chain
- set $@kejc_w2Monk,1811; //Finger
- set $@kejc_w2Hunter,1714; //Gakkung
- set $@kejc_w2Bard,1911; //Guh Moon Goh
- set $@kejc_w2Dancer,1960; //Whip
- set $@kejc_w2Wizard,1610; //Arc Wand
- set $@kejc_w2Sage,1552; //Tablet
- set $@kejc_w2Blacksmith,1360; //Two-Handed Axe
- set $@kejc_w2Alchemist,1360; //Two-Handed Axe
- set $@kejc_w2Knight,1160; //Broad-Sword
- set $@kejc_w2Crusader,1119; //Tsurugi
- set $@kejc_w2Assassin,1254; //Jamadhar
- set $@kejc_w2Rogue,1222; //Damascus
- set $@kejc_w2StarGladiator,1552; //Tablet
- set $@kejc_w2SoulLinker,1610; //Arc Wand
- end;
- //-------------------------------------------------------------------------------
- //Config for the Job Swapping Module
- //-------------------------------------------------------------------------------
-OnLoadJobSwap:
- set $@kejs_SNpolicy,0; //Super Novice is considered as...
- //0: Super Novices can't swap job.
- //1: 1st Class Range: Can only be swapped with First classes (including baby)
-
- set $@kejs_revertPolicy,1; //Allows reverting to the last Class one changed from...
- // 0: do not allow reverting
- // 1: Can revert to last Job ONLY when the last job belongs to the same "level" as
- // the current one. (ie: it is lost on job change/upgrade)
- // 2: Can revert to the last job regardless of situation.
-
- set $@kejs_announce,0; //Do a global announce when someone swaps job.
- set $@kejs_revertCost,100000; //Cost of reverting back to previous Job.
- set $@kejs_saveDye,1; //Set to 1 to save and restore previous dye when reverting
- set $@kejs_resetDye,0; //Set to 1 to reset cloth dye when swapping
- set $@kejs_swapDiscount, 20; //Kafra Pass % Discount when swapping jobs
- set $@kejs_revertDiscount, 20; //Kafra Pass % Discount when reverting to a previous job.
-
- //Minimum Job level required for swapping
- set $@kejs_job1ST,20; //among 1st classes
- set $@kejs_job2ND,50; //among 2nd classes
-
- //Base Cost for swapping job at min job level required
- set $@kejs_cost1ST,25000; //among 1st jobs
- set $@kejs_cost2ND,250000; //among 2nd jobs
-
- //Percentage discount for every level over the minimum
- set $@kejs_discount1ST,3; //among 1st jobs
- set $@kejs_discount2ND,3; //among 2nd jobs
-
- //How much to preserve of the previous Job in %?
- //(25% means that if you change at Lv100, you will become a Lv25 upon swap)
- set $@kejs_preserve1ST,50; //among 1st jobs
- set $@kejs_preserve2ND,0; //among 2nd jobs
- end;
- //-------------------------------------------------------------------------------
- //Config for the Refining Module
- //-------------------------------------------------------------------------------
-OnLoadRefine:
- set $@kerf_maxLv,10; //Max refinement level for equipment
- set $@kerf_safe,0; //Set to 1 to enable 100% safe refinement.
- set $@kerf_showChance,0; //Set to 1 to see the refine Success Chance
- set $@kerf_refineAll,0; //Set to 1 to enable refinement of anything (ie: accesories)
- set $@kerf_discount,0; //Discount % rate for forging when Kafra Pass is active.
- set $@kerf_armorCost,2000; //Cost to refine armor (default 2000z)
- set $@kerf_weaponLv1Cost,50; //Cost to refine lv1 weapons (default 50z)
- set $@kerf_weaponLv2Cost,200; //Cost to refine lv2 weapons (default 200z)
- set $@kerf_weaponLv3Cost,5000; //Cost to refine lv3 weapons (default 5000z)
- set $@kerf_weaponLv4Cost,20000; //Cost to refine lv4 weapons (default 20000z)
- set $@kerf_purifyAll,0; //Set to 1 to enable purifying elemental stones and the like
- set $@kerf_repairCost,10000; //Cost to repair broken equipment.
- set $@kerf_repairDiscount,25; //Discount % rate for repairing when Kafra Pass is active
- set $@kerf_repairSteel,1; //Set to 1 to make repairing equipment require 1 Steel.
- end;
- //-------------------------------------------------------------------------------
- //Config for the Renting Module
- //-------------------------------------------------------------------------------
-OnLoadRent:
- set $@kert_cartOnly, 0; //Set to 1 to enable only cart rental, 0 enables all add-ons.
- set $@kert_cartCost, 1000; //Cost to rent a Cart.
- set $@kert_falconCost, 2000; //Cost to rent a Falcon.
- set $@kert_pecoCost, 2000; //Cost to rent a PecoPeco.
- end;
- //-------------------------------------------------------------------------------
- //Config for the Kafra Shop Module
- //-------------------------------------------------------------------------------
-OnLoadShop:
- set $@kesh_towntype, 0; //Town shop type (1: buy, 2: sell, Other: both)
- set $@kesh_duntype, 2; //Dungeon shop type (1: buy, 2: sell, Other: both)
- set $@kesh_townshop$, "ke_townshop"; //Name of town shop to invoke.
- set $@kesh_dunshop$, "ke_dunshop"; //Name of dungeon shop to invoke.
- end;
- //-------------------------------------------------------------------------------
- //Config for the Stat Market Module
- //-------------------------------------------------------------------------------
-OnLoadStatMarket:
- set $@kesm_stBuyPrice,10000; //Cost of buying stat points
- set $@kesm_stSellPrice,0; //Return cash for selling stat points
- set $@kesm_skBuyPrice,1000000; //Cost of buying skill points
- set $@kesm_skSellPrice,50000; //Return cash for selling skill points
- set $@kesm_skTradePrice, 20; //Stats needed to trade for a skill. (Stat->Skill)
- set $@kesm_stTradePrice, 15; //Stats received per Skill traded. (Skill->Stat)
- set $@kesm_discount,0; //Discount % applied when buying if Kafra Pass is active
- end;
- //-------------------------------------------------------------------------------
- //Config for the Stats Reset/Raising Module
- //-------------------------------------------------------------------------------
-OnLoadStats:
- set $@kest_stResetCost,50000; //Cost to reset stats
- set $@kest_skResetCost,50000; //Cost to reset skills
- set $@kest_resetCost,75000; //Cost to reset both
- set $@kest_BaseLvCost,25000; //Additional cost per base level to reset stats
- set $@kest_JobLvCost,25000; //Additional cost per job level to reset skills
- set $@kest_BothLvCost,20000; //Additional cost per base+job level to reset both
-
- set $@kest_discount,15; //Discount % to be applied when Kafra Pass is active.
- set $@kest_resetBasic,0; //Set to 1 if you want basic skills resetted as well.
- end;
- //-------------------------------------------------------------------------------
- //Config for the Uncarding Module
- //-------------------------------------------------------------------------------
-OnLoadUncard:
- set $@keuc_BaseCost, 100000; //Base Cost
- set $@keuc_CardCost, 25000; //Extra Cost per Card
- set $@keuc_UpgradeCostA, 1000; //Extra Cost per Upgrade, Armor
- set $@keuc_UpgradeCostW1, 1000; //Extra Cost per Upgrade, Weapons Lv1
- set $@keuc_UpgradeCostW2, 2000; //Extra Cost per Upgrade, Weapons Lv2
- set $@keuc_UpgradeCostW3, 3000; //Extra Cost per Upgrade, Weapons Lv3
- set $@keuc_UpgradeCostW4, 5000; //Extra Cost per Upgrade, Weapons Lv4
- set $@keuc_discount, 10; //% Discount when using a Kafra Pass
- set $@keuc_Mat1,1000; //Material #1 needed (Star Crumb)
- set $@keuc_Qty1,1; //Qty of material #1 needed (use 0 to disable)
- set $@keuc_Mat2,715; //Material #2 needed (Yellow Gemstone)
- set $@keuc_Qty2,1; //Qty of material #2 needed (use 0 to disable)
-
- //Failure Chances. 1000 = 100.0%, set to 0 to disable failing chance.
- set $@keuc_Fail0Chance, 250; //Chance of harmless failure
- set $@keuc_Fail1Chance, 100; //Chance of losing item OR card
- set $@keuc_Fail2Chance, 25; //Chance of losing both
- end;
- //-------------------------------------------------------------------------------
- //Config for the Town Warps Module
- //-------------------------------------------------------------------------------
-OnLoadWarpTown:
- set $@kewt_showOnline,1; //Set to 1 to show online count on cities
- set $@kewt_cost, 1000; //Cost of warping to a town
- set $@kewt_niflCost, 5000; //Cost of warping to Niflheim
- set $@kewt_travel, 0; //Traveller's Mode type for towns:
- //0: Disabled (normal warping)
- //1: You can only warp to towns you've been before (per character basis)
- //2: You can only warp to towns you've been before (per account basis)
- set $@kewt_free, 0; //Set to 1 to let people warp to towns even when poor
- set $@kewt_discount, 100; //Discount % to apply when the Kafra Pass is active (towns)
- end;
- //-------------------------------------------------------------------------------
- //Config for the Dungeons Warps Module
- //-------------------------------------------------------------------------------
-OnLoadWarpDungeon:
- set $@kewd_showOnline,0; //Set to 1 to show online count on dungeons
- set $@kewd_discount, 50; //Discount % to apply when the Kafra Pass is active
- set $@kewd_travel, 0; //Traveller's mode type for dungeons:
- //0: Disabled (normal warping)
- //1: You can only warp to dungeons you've been before (per character basis)
- //2: You can only warp to dungeons you've been before (per account basis)
- set $@kewd_deep, 1; //If 1, people can warp to all levels of dungeons.
- //If 0, people can only warp to the entrance of dungeons.
-
- //Variables for Deep Warping
- set $@kewd_levelCost, 30; // cost % increase for warping to floors deep into the dungeon
- set $@kewd_entryDiscount, 25; //Discount % when using the Kafra right next to the dungeon one is warping into
-
- //Variables for Short Warping
- set $@kewd_turtleCave,0; //If 1, Turtle Island's warp leads to the
- //entrance of the cave, not the Island's shore.
-
- //Dungeon Costs
- set $@kewd_abyssLake,5000; //Abyss Lake base cost
- set $@kewd_amatsu,2500; //Amatsu Dungeon base cost
- set $@kewd_antHell,1750; //Anthell base cost
- set $@kewd_ayothaya,1750; //Ayothaya Dungeon base cost
- set $@kewd_byalan,1250; //Byalan base cost
- set $@kewd_comodo,2500; //Comodo Caves base cost
- set $@kewd_clockTower,6250; //Clock Tower base cost
- set $@kewd_coalMines,3750; //Coal Mines base cost
- set $@kewd_culvert,500; //Prontera Culvert base cost
- set $@kewd_einbech,5000; //Einbech Mines base cost
- set $@kewd_gefenia,25000; //Gefenia base cost
- set $@kewd_geffen,5000; //Geffen Dungeon base cost
- set $@kewd_glastHeim,10000; //Glast Heim base cost
- set $@kewd_gonRyun,3750; //Gonryun Dungeon base cost
- set $@kewd_hiddenTemple,250; //Hidden Temple base cost
- set $@kewd_juperos,7500; //Juperos base cost
- set $@kewd_lightHalzen,15000; //LightHalzen Rekkenber base cost
- set $@kewd_louYang,2500; //Louyang Dungeon base cost
- set $@kewd_magma,3750; //Magma Dungeon base cost
- set $@kewd_orc,2500; //Orc Dungeon base cost
- set $@kewd_payon,1100; //Payon Dungeon base cost
- set $@kewd_pyramid,2500; //Pyramids base cost
- set $@kewd_sphinx,1750; //Sphinx base cost
- set $@kewd_sunkenShip,1000; //Sunken Ship base cost
- set $@kewd_thanatosTower,15000; //Thanatos Tower base cost
- set $@kewd_toyFactory,2500; //Toy Factory base cost
- set $@kewd_turtleIsland,12500; //Turtle Island base cost
- set $@kewd_umbala,3550; //Umbala Dungeon base cost
- end;
- //-------------------------------------------------------------------------------
- //Config for the Pvp Warps Module
- //-------------------------------------------------------------------------------
-OnLoadWarpPvp:
- set $@kewp_showOnline,1; //Set to 1 to show online count on pvp maps
- set $@kewp_advanced,0; //Set to 0 to enable a single group of pvp rooms
- //(no level restrictions, kewp_cost is used)
- set $@kewp_cost, 1000; //Cost for Free For All (no level restrictions)
-
- if ($@kewp_advanced == 0) //Don't touch
- end;
-
- set $@kewp_cost1, 100; //Cost of warping to a pvp arena, lvls group 1
- set $@kewp_cost2, 250; //Cost for lvls group 2
- set $@kewp_cost3, 500; //Cost for lvls group 3
- set $@kewp_cost4, 1000; //Cost for lvls group 4
- set $@kewp_cost5, 2000; //Cost for lvls group 5
- set $@kewp_cost6, 4000; //Cost for lvls group 6
- set $@kewp_cost7, 8000; //Cost for lvls group 7
- set $@kewp_baseLv1, 35; //Level required for pvp, lv1
- set $@kewp_baseLv2, 45; //Level required for pvp, lv2
- set $@kewp_baseLv3, 55; //Level required for pvp, lv3
- set $@kewp_baseLv4, 65; //Level required for pvp, lv4
- set $@kewp_baseLv5, 75; //Level required for pvp, lv5
- set $@kewp_baseLv6, 85; //Level required for pvp, lv6
- set $@kewp_baseLv7, 95; //Level required for pvp, lv7
- set $@kewp_range, 5; //Range of levels allowed (ie: Warp to Lv1: levels 10+/-5)
- end;
- //-------------------------------------------------------------------------------
- //Config for the WoE Warps Module
- //-------------------------------------------------------------------------------
-OnLoadWarpWoe:
- //Note: See ke_warp_woe.txt for instructions on how to unlock the Guild Dungeons.
- set $@kewg_check,1; //If 0, people don't need to belong to a Guild to warp
- set $@kewg_checkAgit,1; //If 1, you can't warp until WoE starts
- set $@kewg_showOnline,0; //Set to 1 to show online count and Castle Status
- set $@kewg_discount,20; //Kafra Pass discount for WoE warps
-
- set $@kewg_baldur, 25000; //Guild Dungeon - Baldur
- set $@kewg_luina, 25000; //Guild Dungeon - Luina
- set $@kewg_valkyrie, 25000; //Guild Dungeon - Valkyrie
- set $@kewg_britoniah, 25000; //Guild Dungeon - Britoniah
-
- set $@kewg_alDeBaran, 2500; //Al De Baran Guild
- set $@kewg_geffen, 2500; //Geffen Guild
- set $@kewg_payon, 2500; //Payon Guild
- set $@kewg_prontera, 2500; //Prontera Guild
- end;
- //-------------------------------------------------------------------------------
-}
+//===== eAthena Script ======================================= +//= Kafra Express - Config Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 1.8 +//===== Compatible With: ===================================== +//= Any eAthena Version with function support +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= This module contains the configuration of all modules. +//===== Additional Comments: ================================= +//= See <http://www.eathena.deltaanime.net/board/index.php?showtopic=20290> +//= for indepth explanation of the Kafra Express Script Package. +//============================================================ + +- script keConfig -1,{ + //------------------------------------------------------------------------------- + //Config for the Main Module + //------------------------------------------------------------------------------- +OnInit: + set $@ke_saveOnSpot,0; //If 1, the respawn point is saved where the char is standing. + set $@keh_hpCost,10; //Cost of HP healing (per 10HP) + set $@keh_spCost,100; //Cost of SP healing (per 10SP) + set $@kes_cost,50; //Cost of opening the storage + set $@kegs_cost,500; //Cost of opening the guild storage + + //Kafra Pass Options: + set $@kekp_reset,1; //Kafra passes Expire when you speak to a Kafra? + //(otherwise duration is as long as a temporary variable) + set $@kekp_reserveCost,100; //Cost of each Reserve Point in Zeny (0 disable) + set $@kekp_minReserve,1; //Min Reserve Points you can earn in a single transaction + set $@kekp_maxReserve,150; //Max Reserve Points you can earn in a single transaction + + //Display Options + set $@ked_users$,"people"; //String used when referring to people (player count). + // Values like "ppl", "users" or "on" are also recommended. + end; + //------------------------------------------------------------------------------- + //Config for the Bank Module + //------------------------------------------------------------------------------- +OnLoadBank: + set $@kebk_depositCost,0; //Fee for bank deposits in % (10 = 10%) + set $@kebk_withdrawCost,5; //Fee for bank withdrawals in % (10 = 10%) + set $@kebk_minTransact,1000; //Value of the Minimum Transaction (deposit/withdraw) + set $@kebk_maxTransact,999999; //Value of the Maximum Transaction (deposit/withdraw) + set $@kebk_capacity,99999999; //Account capacity: Max zeny that can be held. + set $@kebk_dayInterest,10; //Savings daily interests in 0.01% units (100 = 1%) + set $@kebk_monMaintenance,1000; //Monthly flat fee charged for account maintenance + set $@kebk_useGlobalBank,0; //When 1, all charged fees go to $ke_globalbank + end; + //------------------------------------------------------------------------------- + //Config for the Broadcast Module + //------------------------------------------------------------------------------- +OnLoadBroadcast: + //Following costs are for current map costs: + set $@kebc_showOnline,0; //if 1, count of recipients will be listed. + set $@kebc_partyCost,2500; //party request broadcast cost + set $@kebc_pvpCost,5000; //pvp request broadcast cost + set $@kebc_cost,10000; //general broadcast cost + set $@kebc_anonCost,100000; //anonymous broadcast cost + set $@kebc_globalFactor,1000; //When doing server bcs, the prices are increased by this amount (500 = 500% = 5x) + set $@kebc_discount,15; //% Discount to apply when the KafraPass is active + end; + //------------------------------------------------------------------------------- + //Config for the Dye and Stylist Module + //------------------------------------------------------------------------------- +OnLoadDye: + set $@kedy_enableHairstyle,0; //Set to 1 to enable haircut style change. + set $@kedy_styles,23; //Highest available haircut style (default 23) + set $@kedy_hair,8; //Highest available hair dye (RO default is 8) + + //Highest available cloth dye depending on job-class + set $@kedy_clothJN,77; //Novice (+High/Baby) + set $@kedy_clothJ1ST,77; //1st Jobs (+High/Baby) + set $@kedy_clothJ2ND,77; //2nd Jobs (+High/Baby) + set $@kedy_clothJSN,77; //Super Novice (+Baby) + set $@kedy_clothJWED,77; //Wedding Class + end; + //------------------------------------------------------------------------------- + //Config for the Job Changer Module + //------------------------------------------------------------------------------- +OnLoadJobChange: + set $@kejc_skillsPolicy,0; //Remaining Skill Points Policy: + //0: Do not allow job changing until points are used up + //1: Discard the remaining skill points + //2: Let extra skill points be carried to next job + + set $@kejc_upperPolicy,0; //Upper Job management policy: + //0: Ignore Mode: People can change in any order + //1: Force Mode: Job changes are forced on the correct path. + + set $@kejc_announce,1; //Do a global announce when someone changes job. + set $@kejc_resetDye,1; //Set to 1 to reset cloth dye upon change + set $@kejc_skipNovice,0; //0: Novice needs Job 10 to change, 1: Can Skip Novice Class + set $@kejc_baseSN,30; //Base lv required to become a Super Novice + + //Note that the change costs can be converted into rewards by specifying a negative amount. + set $@kejc_base2ND,1; //Base lv required to change into a second class + set $@kejc_job2ND,40; //Job Lv required to change into a second Class + set $@kejc_cost2ND,-25000; //Zeny cost when changing into a second Class + + set $@kejc_baseRebirth,99; //Base lv required to do the Rebirth + set $@kejc_jobRebirth,50; //Job Lv required to do the Rebirth + set $@kejc_costRebirth,1000000; //Zeny cost required to do the Rebirth + + set $@kejc_rebirthReset,1; //When changing to a high novice, reset base level to 1? + set $@kejc_weaponPolicy,1; //Set to 1 to give a weapon upon job change + + if ($@kejc_weaponPolicy == 0) //don't touch + end; + + set $@kejc_wBonusLv,50; //Job level for upgraded weapon version, use 0 to disable + + //Weapons awarded to each job upon change (use 0 to disable for a particular class) + //First classes: + set $@kejc_wAcolyte,1501; //Club + set $@kejc_wArcher,1701; //Bow + set $@kejc_wMage,1601; //Rod + set $@kejc_wMerchant,1301; //Axe + set $@kejc_wSwordman,1101; //Sword + set $@kejc_wThief,1201; //Knife + set $@kejc_wTaekwon,0; //Nothing (they don't wield weapons) + set $@kejc_wSuperNovice,1202; //Knife + + //Normal Weapons for Second classes + set $@kejc_wPriest,1551; //Bible + set $@kejc_wMonk,1801; //Waghnak + set $@kejc_wHunter,1704; //Composite Bow + set $@kejc_wBard,1901; //Violin + set $@kejc_wDancer,1950; //Rope + set $@kejc_wWizard,1602; //Rod + set $@kejc_wSage,1550; //Book + set $@kejc_wBlacksmith,1351; //Battle Axe + set $@kejc_wAlchemist,1351; //Battle Axe + set $@kejc_wKnight,1116; //Katana + set $@kejc_wCrusader,1107; //Blade + set $@kejc_wAssassin,1250; //Jur + set $@kejc_wRogue,1210; //Cutter + set $@kejc_wStarGladiator,1550; //Book + set $@kejc_wSoulLinker,1602; //Rod + + if ($@kejc_wBonusLv == 0) //Don't touch. + end; + + //Improved versions awarded to second classes + set $@kejc_w2Priest,1519; //Chain + set $@kejc_w2Monk,1811; //Finger + set $@kejc_w2Hunter,1714; //Gakkung + set $@kejc_w2Bard,1911; //Guh Moon Goh + set $@kejc_w2Dancer,1960; //Whip + set $@kejc_w2Wizard,1610; //Arc Wand + set $@kejc_w2Sage,1552; //Tablet + set $@kejc_w2Blacksmith,1360; //Two-Handed Axe + set $@kejc_w2Alchemist,1360; //Two-Handed Axe + set $@kejc_w2Knight,1160; //Broad-Sword + set $@kejc_w2Crusader,1119; //Tsurugi + set $@kejc_w2Assassin,1254; //Jamadhar + set $@kejc_w2Rogue,1222; //Damascus + set $@kejc_w2StarGladiator,1552; //Tablet + set $@kejc_w2SoulLinker,1610; //Arc Wand + end; + //------------------------------------------------------------------------------- + //Config for the Job Swapping Module + //------------------------------------------------------------------------------- +OnLoadJobSwap: + set $@kejs_SNpolicy,0; //Super Novice is considered as... + //0: Super Novices can't swap job. + //1: 1st Class Range: Can only be swapped with First classes (including baby) + + set $@kejs_revertPolicy,1; //Allows reverting to the last Class one changed from... + // 0: do not allow reverting + // 1: Can revert to last Job ONLY when the last job belongs to the same "level" as + // the current one. (ie: it is lost on job change/upgrade) + // 2: Can revert to the last job regardless of situation. + + set $@kejs_announce,0; //Do a global announce when someone swaps job. + set $@kejs_revertCost,100000; //Cost of reverting back to previous Job. + set $@kejs_saveDye,1; //Set to 1 to save and restore previous dye when reverting + set $@kejs_resetDye,0; //Set to 1 to reset cloth dye when swapping + set $@kejs_swapDiscount, 20; //Kafra Pass % Discount when swapping jobs + set $@kejs_revertDiscount, 20; //Kafra Pass % Discount when reverting to a previous job. + + //Minimum Job level required for swapping + set $@kejs_job1ST,20; //among 1st classes + set $@kejs_job2ND,50; //among 2nd classes + + //Base Cost for swapping job at min job level required + set $@kejs_cost1ST,25000; //among 1st jobs + set $@kejs_cost2ND,250000; //among 2nd jobs + + //Percentage discount for every level over the minimum + set $@kejs_discount1ST,3; //among 1st jobs + set $@kejs_discount2ND,3; //among 2nd jobs + + //How much to preserve of the previous Job in %? + //(25% means that if you change at Lv100, you will become a Lv25 upon swap) + set $@kejs_preserve1ST,50; //among 1st jobs + set $@kejs_preserve2ND,0; //among 2nd jobs + end; + //------------------------------------------------------------------------------- + //Config for the Refining Module + //------------------------------------------------------------------------------- +OnLoadRefine: + set $@kerf_maxLv,10; //Max refinement level for equipment + set $@kerf_safe,0; //Set to 1 to enable 100% safe refinement. + set $@kerf_showChance,0; //Set to 1 to see the refine Success Chance + set $@kerf_refineAll,0; //Set to 1 to enable refinement of anything (ie: accesories) + set $@kerf_discount,0; //Discount % rate for forging when Kafra Pass is active. + set $@kerf_armorCost,2000; //Cost to refine armor (default 2000z) + set $@kerf_weaponLv1Cost,50; //Cost to refine lv1 weapons (default 50z) + set $@kerf_weaponLv2Cost,200; //Cost to refine lv2 weapons (default 200z) + set $@kerf_weaponLv3Cost,5000; //Cost to refine lv3 weapons (default 5000z) + set $@kerf_weaponLv4Cost,20000; //Cost to refine lv4 weapons (default 20000z) + set $@kerf_purifyAll,0; //Set to 1 to enable purifying elemental stones and the like + set $@kerf_repairCost,10000; //Cost to repair broken equipment. + set $@kerf_repairDiscount,25; //Discount % rate for repairing when Kafra Pass is active + set $@kerf_repairSteel,1; //Set to 1 to make repairing equipment require 1 Steel. + end; + //------------------------------------------------------------------------------- + //Config for the Renting Module + //------------------------------------------------------------------------------- +OnLoadRent: + set $@kert_cartOnly, 0; //Set to 1 to enable only cart rental, 0 enables all add-ons. + set $@kert_cartCost, 1000; //Cost to rent a Cart. + set $@kert_falconCost, 2000; //Cost to rent a Falcon. + set $@kert_pecoCost, 2000; //Cost to rent a PecoPeco. + end; + //------------------------------------------------------------------------------- + //Config for the Kafra Shop Module + //------------------------------------------------------------------------------- +OnLoadShop: + set $@kesh_towntype, 0; //Town shop type (1: buy, 2: sell, Other: both) + set $@kesh_duntype, 2; //Dungeon shop type (1: buy, 2: sell, Other: both) + set $@kesh_townshop$, "ke_townshop"; //Name of town shop to invoke. + set $@kesh_dunshop$, "ke_dunshop"; //Name of dungeon shop to invoke. + end; + //------------------------------------------------------------------------------- + //Config for the Stat Market Module + //------------------------------------------------------------------------------- +OnLoadStatMarket: + set $@kesm_stBuyPrice,10000; //Cost of buying stat points + set $@kesm_stSellPrice,0; //Return cash for selling stat points + set $@kesm_skBuyPrice,1000000; //Cost of buying skill points + set $@kesm_skSellPrice,50000; //Return cash for selling skill points + set $@kesm_skTradePrice, 20; //Stats needed to trade for a skill. (Stat->Skill) + set $@kesm_stTradePrice, 15; //Stats received per Skill traded. (Skill->Stat) + set $@kesm_discount,0; //Discount % applied when buying if Kafra Pass is active + end; + //------------------------------------------------------------------------------- + //Config for the Stats Reset/Raising Module + //------------------------------------------------------------------------------- +OnLoadStats: + set $@kest_stResetCost,50000; //Cost to reset stats + set $@kest_skResetCost,50000; //Cost to reset skills + set $@kest_resetCost,75000; //Cost to reset both + set $@kest_BaseLvCost,25000; //Additional cost per base level to reset stats + set $@kest_JobLvCost,25000; //Additional cost per job level to reset skills + set $@kest_BothLvCost,20000; //Additional cost per base+job level to reset both + + set $@kest_discount,15; //Discount % to be applied when Kafra Pass is active. + set $@kest_resetBasic,0; //Set to 1 if you want basic skills resetted as well. + end; + //------------------------------------------------------------------------------- + //Config for the Uncarding Module + //------------------------------------------------------------------------------- +OnLoadUncard: + set $@keuc_BaseCost, 100000; //Base Cost + set $@keuc_CardCost, 25000; //Extra Cost per Card + set $@keuc_UpgradeCostA, 1000; //Extra Cost per Upgrade, Armor + set $@keuc_UpgradeCostW1, 1000; //Extra Cost per Upgrade, Weapons Lv1 + set $@keuc_UpgradeCostW2, 2000; //Extra Cost per Upgrade, Weapons Lv2 + set $@keuc_UpgradeCostW3, 3000; //Extra Cost per Upgrade, Weapons Lv3 + set $@keuc_UpgradeCostW4, 5000; //Extra Cost per Upgrade, Weapons Lv4 + set $@keuc_discount, 10; //% Discount when using a Kafra Pass + set $@keuc_Mat1,1000; //Material #1 needed (Star Crumb) + set $@keuc_Qty1,1; //Qty of material #1 needed (use 0 to disable) + set $@keuc_Mat2,715; //Material #2 needed (Yellow Gemstone) + set $@keuc_Qty2,1; //Qty of material #2 needed (use 0 to disable) + + //Failure Chances. 1000 = 100.0%, set to 0 to disable failing chance. + set $@keuc_Fail0Chance, 250; //Chance of harmless failure + set $@keuc_Fail1Chance, 100; //Chance of losing item OR card + set $@keuc_Fail2Chance, 25; //Chance of losing both + end; + //------------------------------------------------------------------------------- + //Config for the Town Warps Module + //------------------------------------------------------------------------------- +OnLoadWarpTown: + set $@kewt_showOnline,1; //Set to 1 to show online count on cities + set $@kewt_cost, 1000; //Cost of warping to a town + set $@kewt_niflCost, 5000; //Cost of warping to Niflheim + set $@kewt_travel, 0; //Traveller's Mode type for towns: + //0: Disabled (normal warping) + //1: You can only warp to towns you've been before (per character basis) + //2: You can only warp to towns you've been before (per account basis) + set $@kewt_free, 0; //Set to 1 to let people warp to towns even when poor + set $@kewt_discount, 100; //Discount % to apply when the Kafra Pass is active (towns) + end; + //------------------------------------------------------------------------------- + //Config for the Dungeons Warps Module + //------------------------------------------------------------------------------- +OnLoadWarpDungeon: + set $@kewd_showOnline,0; //Set to 1 to show online count on dungeons + set $@kewd_discount, 50; //Discount % to apply when the Kafra Pass is active + set $@kewd_travel, 0; //Traveller's mode type for dungeons: + //0: Disabled (normal warping) + //1: You can only warp to dungeons you've been before (per character basis) + //2: You can only warp to dungeons you've been before (per account basis) + set $@kewd_deep, 1; //If 1, people can warp to all levels of dungeons. + //If 0, people can only warp to the entrance of dungeons. + + //Variables for Deep Warping + set $@kewd_levelCost, 30; // cost % increase for warping to floors deep into the dungeon + set $@kewd_entryDiscount, 25; //Discount % when using the Kafra right next to the dungeon one is warping into + + //Variables for Short Warping + set $@kewd_turtleCave,0; //If 1, Turtle Island's warp leads to the + //entrance of the cave, not the Island's shore. + + //Dungeon Costs + set $@kewd_abyssLake,5000; //Abyss Lake base cost + set $@kewd_amatsu,2500; //Amatsu Dungeon base cost + set $@kewd_antHell,1750; //Anthell base cost + set $@kewd_ayothaya,1750; //Ayothaya Dungeon base cost + set $@kewd_byalan,1250; //Byalan base cost + set $@kewd_comodo,2500; //Comodo Caves base cost + set $@kewd_clockTower,6250; //Clock Tower base cost + set $@kewd_coalMines,3750; //Coal Mines base cost + set $@kewd_culvert,500; //Prontera Culvert base cost + set $@kewd_einbech,5000; //Einbech Mines base cost + set $@kewd_gefenia,25000; //Gefenia base cost + set $@kewd_geffen,5000; //Geffen Dungeon base cost + set $@kewd_glastHeim,10000; //Glast Heim base cost + set $@kewd_gonRyun,3750; //Gonryun Dungeon base cost + set $@kewd_hiddenTemple,250; //Hidden Temple base cost + set $@kewd_juperos,7500; //Juperos base cost + set $@kewd_lightHalzen,15000; //LightHalzen Rekkenber base cost + set $@kewd_louYang,2500; //Louyang Dungeon base cost + set $@kewd_magma,3750; //Magma Dungeon base cost + set $@kewd_orc,2500; //Orc Dungeon base cost + set $@kewd_payon,1100; //Payon Dungeon base cost + set $@kewd_pyramid,2500; //Pyramids base cost + set $@kewd_sphinx,1750; //Sphinx base cost + set $@kewd_sunkenShip,1000; //Sunken Ship base cost + set $@kewd_thanatosTower,15000; //Thanatos Tower base cost + set $@kewd_toyFactory,2500; //Toy Factory base cost + set $@kewd_turtleIsland,12500; //Turtle Island base cost + set $@kewd_umbala,3550; //Umbala Dungeon base cost + end; + //------------------------------------------------------------------------------- + //Config for the Pvp Warps Module + //------------------------------------------------------------------------------- +OnLoadWarpPvp: + set $@kewp_showOnline,1; //Set to 1 to show online count on pvp maps + set $@kewp_advanced,0; //Set to 0 to enable a single group of pvp rooms + //(no level restrictions, kewp_cost is used) + set $@kewp_cost, 1000; //Cost for Free For All (no level restrictions) + + if ($@kewp_advanced == 0) //Don't touch + end; + + set $@kewp_cost1, 100; //Cost of warping to a pvp arena, lvls group 1 + set $@kewp_cost2, 250; //Cost for lvls group 2 + set $@kewp_cost3, 500; //Cost for lvls group 3 + set $@kewp_cost4, 1000; //Cost for lvls group 4 + set $@kewp_cost5, 2000; //Cost for lvls group 5 + set $@kewp_cost6, 4000; //Cost for lvls group 6 + set $@kewp_cost7, 8000; //Cost for lvls group 7 + set $@kewp_baseLv1, 35; //Level required for pvp, lv1 + set $@kewp_baseLv2, 45; //Level required for pvp, lv2 + set $@kewp_baseLv3, 55; //Level required for pvp, lv3 + set $@kewp_baseLv4, 65; //Level required for pvp, lv4 + set $@kewp_baseLv5, 75; //Level required for pvp, lv5 + set $@kewp_baseLv6, 85; //Level required for pvp, lv6 + set $@kewp_baseLv7, 95; //Level required for pvp, lv7 + set $@kewp_range, 5; //Range of levels allowed (ie: Warp to Lv1: levels 10+/-5) + end; + //------------------------------------------------------------------------------- + //Config for the WoE Warps Module + //------------------------------------------------------------------------------- +OnLoadWarpWoe: + //Note: See ke_warp_woe.txt for instructions on how to unlock the Guild Dungeons. + set $@kewg_check,1; //If 0, people don't need to belong to a Guild to warp + set $@kewg_checkAgit,1; //If 1, you can't warp until WoE starts + set $@kewg_showOnline,0; //Set to 1 to show online count and Castle Status + set $@kewg_discount,20; //Kafra Pass discount for WoE warps + + set $@kewg_baldur, 25000; //Guild Dungeon - Baldur + set $@kewg_luina, 25000; //Guild Dungeon - Luina + set $@kewg_valkyrie, 25000; //Guild Dungeon - Valkyrie + set $@kewg_britoniah, 25000; //Guild Dungeon - Britoniah + + set $@kewg_alDeBaran, 2500; //Al De Baran Guild + set $@kewg_geffen, 2500; //Geffen Guild + set $@kewg_payon, 2500; //Payon Guild + set $@kewg_prontera, 2500; //Prontera Guild + end; + //------------------------------------------------------------------------------- +} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/global_functionsKE.txt b/npc/custom/eAAC_Scripts/kafraExpress/global_functionsKE.txt index dc2325ff0..5dbe75677 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/global_functionsKE.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/global_functionsKE.txt @@ -1,332 +1,332 @@ -//===== eAthena Script =======================================
-//= Global functions
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 1.5
-//===== Compatible With: =====================================
-//= eAthena SVN R3424+, RO Ep6+
-//===== Description: =========================================
-//= Global Functions
-//=
-//===== Additional Comments: =================================
-//= GF_getJobName= function for getting a job's name
-//= GF_getJobName2= gets a jobs name modified by Type (see below)
-//= GF_getJobId= gets a jobs number modified by Type (see below)
-//= GF_getJobLevel= identifies novices/1st/2nd among classes
-//= GF_getJobType= identifies normal/advanced/babies classes
-//= - GF_getJobClass= identifies job class (swordie, mage, etc)
-//============================================================
-
-function script GF_getJobName {
-
- switch (getarg(0)) {
-
- case Job_Novice:
- return "novice";
- case Job_Acolyte:
- return "acolyte";
- case Job_Archer:
- return "archer";
- case Job_Mage:
- return "mage";
- case Job_Merchant:
- return "merchant";
- case Job_Swordman:
- return "swordsman";
- case Job_Thief:
- return "thief";
- case Job_Taekwon:
- return "taekwon kid";
- case Job_SuperNovice:
- return "super novice";
-
- case Job_Hunter:
- return "hunter";
- case Job_Dancer:
- return "dancer";
- case Job_Bard:
- return "bard";
- case Job_Priest:
- return "priest";
- case Job_Monk:
- return "monk";
- case Job_Wizard:
- return "wizard";
- case Job_Sage:
- return "sage";
- case Job_BlackSmith:
- return "blacksmith";
- case Job_Alchem:
- return "alchemist";
- case Job_Knight:
- case Job_Knight2:
- return "knight";
- case Job_Crusader:
- case Job_Crusader2:
- return "crusader";
- case Job_Assassin:
- return "assassin";
- case Job_Rogue:
- return "rogue";
- case Job_Star_Gladiator:
- case Job_Star_Gladiator2:
- return "star gladiator";
- case Job_Soul_Linker:
- return "soul linker";
-
- case Job_Novice_High:
- return "high novice";
- case Job_Acolyte_High:
- return "high acolyte";
- case Job_Archer_High:
- return "high archer";
- case Job_Mage_High:
- return "high mage";
- case Job_Merchant_High:
- return "high merchant";
- case Job_Swordman_High:
- return "high swordsman";
- case Job_Thief_High:
- return "high thief";
-
- case Job_Assassin_Cross:
- return "assassin cross";
- case Job_Champion:
- return "champion";
- case Job_Clown:
- return "minstrel";
- case Job_Creator:
- return "biochemist";
- case Job_Gypsy:
- return "gypsy";
- case Job_High_Priest:
- return "high priest";
- case Job_High_Wizard:
- return "high wizard";
- case Job_Lord_Knight:
- case Job_Lord_Knight2:
- return "lord knight";
- case Job_Paladin:
- case Job_Paladin2:
- return "paladin";
- case Job_Professor:
- return "professor";
- case Job_Sniper:
- return "sniper";
- case Job_Stalker:
- return "stalker";
- case Job_Whitesmith:
- return "whitesmith";
-
- case Job_Baby:
- return "baby";
- case Job_Baby_Acolyte:
- return "baby acolyte";
- case Job_Baby_Archer:
- return "baby archer";
- case Job_Baby_Mage:
- return "baby mage";
- case Job_Baby_Merchant:
- return "baby merchant";
- case Job_Baby_Swordman:
- return "baby swordsman";
- case Job_Baby_Thief:
- return "baby thief";
- case Job_Super_Baby:
- return "super baby";
-
- case Job_Baby_Hunter:
- return "baby hunter";
- case Job_Baby_Dancer:
- return "baby dancer";
- case Job_Baby_Bard:
- return "baby bard";
- case Job_Baby_Priest:
- return "baby priest";
- case Job_Baby_Monk:
- return "baby monk";
- case Job_Baby_Wizard:
- return "baby wizard";
- case Job_Baby_Sage:
- return "baby sage";
- case Job_Baby_BlackSmith:
- return "baby blacksmith";
- case Job_Baby_Alchem:
- return "baby alchemist";
- case Job_Baby_Knight:
- case Job_Baby_Knight2:
- return "baby knight";
- case Job_Baby_Crusader:
- case Job_Baby_Crusader2:
- return "baby crusader";
- case Job_Baby_Assassin:
- return "baby assassin";
- case Job_Baby_Rogue:
- return "baby rogue";
- default:
- return "unknown";
- }
-
-}
-
-//Returns job name using two params: JobId and Type
-function script GF_getJobName2 {
- set @classId, callfunc("GF_getJobId", getarg(0), getarg(1));
- return callfunc("GF_getJobName", @classId);
-}
-
-//Returns a Job's ID modified by their Type
-function script GF_getJobId {
- set @classId, getarg(0);
- set @type, getarg(1);
-
- if (@classId == Job_SuperNovice || @classId == Job_Super_Baby) {
- switch (@type) {
- case 0:
- return Job_SuperNovice;
- case 2:
- return Job_Super_Baby;
- default:
- return @classId;
- }
- }
- if (@classId >= Job_Taekwon && @classId <= Job_Soul_Linker) {
- //Currently has no alternates.
- return @classId;
- }
- if (@classId >= Job_Novice_High && @classId <= Job_Paladin2)
- set @classId, @classId -Job_Novice_High;
- else
- if (@classId >= Job_Baby && @classId <= Job_Super_Baby)
- set @classId, @classId -Job_Baby;
-
- if (@type == 1)
- set @classId, @classId +Job_Novice_High;
-
- if (@type == 2)
- set @classId, @classId +Job_Baby;
-
- return @classId;
-}
-
-//Returns the type of class:
-//0= Novice, 1= First Class, 2= Second Class, 3= Super Novice
-//4= Wedding
-function script GF_getJobLevel {
-
- set @classId, getarg(0);
-
- if (@classId >= Job_Novice_High && @classId <= Job_Paladin2)
- set @classId, @classId -Job_Novice_High;
-
- if (@classId >= Job_Baby && @classId <= Job_Baby_Crusader2)
- set @classId, @classId -Job_Baby;
-
- if(@classId == Job_Novice) {
- return 0;
- }
- if((@classId >= Job_Swordman && @classId <= Job_Thief)
- || @classId == Job_Taekwon) {
- return 1;
- }
- if ((@classId >= Job_Knight && @classId <= Job_Crusader2)
- || (@classId >= Job_Star_Gladiator && @classId <= Job_Soul_Linker)) {
- return 2;
- }
-
- if(@classId == Job_SuperNovice || @classId == Job_Super_Baby) {
- return 3;
- }
- if(@classId == 22) {
- return 4;
- }
- return -1;
-}
-
-//Returns the type of class, based on path:
-//0= Normal Jobs, 1= Upper Jobs, 2= Baby Jobs
-//Works the same as Upper, except you can pass any job id to get it's upper value
-function script GF_getJobType {
- set @classId, getarg(0);
-
- if ((@classId >= Job_Novice && @classId <= Job_SuperNovice)
- || (@classId >= Job_Taekwon && @classId <= Job_Soul_Linker)) {
- return 0;
- }
- if (@classId >= Job_Novice_High && @classId <= Job_Paladin2) {
- return 1;
- }
- if (@classId >= Job_Baby && @classId <= Job_Super_Baby) {
- return 2;
- }
- return -1;
-}
-//Returns the base class of the given job, return values are:
-//Job_Novice (Novice, Baby Novice, Super Novice
-//Job_Acolyte (Aco, Priest, Monk +High/Baby variations)
-//Job_Archer (Archer, Sniper, Bard, Dancer +High/Baby variations)
-//Job_Mage (Mage, Wizard, Sage +High/Baby variations)
-//Job_Swordman (Swordsman, Knight, Crusader +High/Baby variations)
-//Job_Thief (Thief, Assassin, Rogue +High/Baby variations)
-//-1 : others (when wearing Tux/Wedding dress, for example)
-//Works the same as baseClass, except you pass the class which you want
-//examined.
-function script GF_getJobClass {
- set @classId, getarg(0);
-
- if (@classId >= Job_Novice_High && @classId <= Job_Paladin2)
- set @classId, @classId -Job_Novice_High;
-
- if (@classId >= Job_Baby && @classId <= Job_Baby_Crusader2)
- set @classId, @classId -Job_Baby;
-
- switch (@classId) {
- case Job_Novice:
- case Job_SuperNovice:
- case Job_Super_Baby:
- return Job_Novice;
-
- case Job_Acolyte:
- case Job_Priest:
- case Job_Monk:
- return Job_Acolyte;
-
- case Job_Archer:
- case Job_Hunter:
- case Job_Bard:
- case Job_Dancer:
- return Job_Archer;
-
- case Job_Mage:
- case Job_Wizard:
- case Job_Sage:
- return Job_Mage;
-
- case Job_Merchant:
- case Job_BlackSmith:
- case Job_Alchem:
- return Job_Merchant;
-
- case Job_Swordman:
- case Job_Knight:
- case Job_Knight2:
- case Job_Paladin:
- case Job_Paladin2:
- return Job_Swordman;
-
- case Job_Thief:
- case Job_Assassin:
- case Job_Rogue:
- return Job_Thief;
-
- case Job_Taekwon:
- case Job_Star_Gladiator:
- case Job_Star_Gladiator2:
- case Job_Soul_Linker:
- return Job_Taekwon;
-
- default:
- return -1;
- }
+//===== eAthena Script ======================================= +//= Global functions +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 1.5 +//===== Compatible With: ===================================== +//= eAthena SVN R3424+, RO Ep6+ +//===== Description: ========================================= +//= Global Functions +//= +//===== Additional Comments: ================================= +//= GF_getJobName= function for getting a job's name +//= GF_getJobName2= gets a jobs name modified by Type (see below) +//= GF_getJobId= gets a jobs number modified by Type (see below) +//= GF_getJobLevel= identifies novices/1st/2nd among classes +//= GF_getJobType= identifies normal/advanced/babies classes +//= - GF_getJobClass= identifies job class (swordie, mage, etc) +//============================================================ + +function script GF_getJobName { + + switch (getarg(0)) { + + case Job_Novice: + return "novice"; + case Job_Acolyte: + return "acolyte"; + case Job_Archer: + return "archer"; + case Job_Mage: + return "mage"; + case Job_Merchant: + return "merchant"; + case Job_Swordman: + return "swordsman"; + case Job_Thief: + return "thief"; + case Job_Taekwon: + return "taekwon kid"; + case Job_SuperNovice: + return "super novice"; + + case Job_Hunter: + return "hunter"; + case Job_Dancer: + return "dancer"; + case Job_Bard: + return "bard"; + case Job_Priest: + return "priest"; + case Job_Monk: + return "monk"; + case Job_Wizard: + return "wizard"; + case Job_Sage: + return "sage"; + case Job_BlackSmith: + return "blacksmith"; + case Job_Alchem: + return "alchemist"; + case Job_Knight: + case Job_Knight2: + return "knight"; + case Job_Crusader: + case Job_Crusader2: + return "crusader"; + case Job_Assassin: + return "assassin"; + case Job_Rogue: + return "rogue"; + case Job_Star_Gladiator: + case Job_Star_Gladiator2: + return "star gladiator"; + case Job_Soul_Linker: + return "soul linker"; + + case Job_Novice_High: + return "high novice"; + case Job_Acolyte_High: + return "high acolyte"; + case Job_Archer_High: + return "high archer"; + case Job_Mage_High: + return "high mage"; + case Job_Merchant_High: + return "high merchant"; + case Job_Swordman_High: + return "high swordsman"; + case Job_Thief_High: + return "high thief"; + + case Job_Assassin_Cross: + return "assassin cross"; + case Job_Champion: + return "champion"; + case Job_Clown: + return "minstrel"; + case Job_Creator: + return "biochemist"; + case Job_Gypsy: + return "gypsy"; + case Job_High_Priest: + return "high priest"; + case Job_High_Wizard: + return "high wizard"; + case Job_Lord_Knight: + case Job_Lord_Knight2: + return "lord knight"; + case Job_Paladin: + case Job_Paladin2: + return "paladin"; + case Job_Professor: + return "professor"; + case Job_Sniper: + return "sniper"; + case Job_Stalker: + return "stalker"; + case Job_Whitesmith: + return "whitesmith"; + + case Job_Baby: + return "baby"; + case Job_Baby_Acolyte: + return "baby acolyte"; + case Job_Baby_Archer: + return "baby archer"; + case Job_Baby_Mage: + return "baby mage"; + case Job_Baby_Merchant: + return "baby merchant"; + case Job_Baby_Swordman: + return "baby swordsman"; + case Job_Baby_Thief: + return "baby thief"; + case Job_Super_Baby: + return "super baby"; + + case Job_Baby_Hunter: + return "baby hunter"; + case Job_Baby_Dancer: + return "baby dancer"; + case Job_Baby_Bard: + return "baby bard"; + case Job_Baby_Priest: + return "baby priest"; + case Job_Baby_Monk: + return "baby monk"; + case Job_Baby_Wizard: + return "baby wizard"; + case Job_Baby_Sage: + return "baby sage"; + case Job_Baby_BlackSmith: + return "baby blacksmith"; + case Job_Baby_Alchem: + return "baby alchemist"; + case Job_Baby_Knight: + case Job_Baby_Knight2: + return "baby knight"; + case Job_Baby_Crusader: + case Job_Baby_Crusader2: + return "baby crusader"; + case Job_Baby_Assassin: + return "baby assassin"; + case Job_Baby_Rogue: + return "baby rogue"; + default: + return "unknown"; + } + +} + +//Returns job name using two params: JobId and Type +function script GF_getJobName2 { + set @classId, callfunc("GF_getJobId", getarg(0), getarg(1)); + return callfunc("GF_getJobName", @classId); +} + +//Returns a Job's ID modified by their Type +function script GF_getJobId { + set @classId, getarg(0); + set @type, getarg(1); + + if (@classId == Job_SuperNovice || @classId == Job_Super_Baby) { + switch (@type) { + case 0: + return Job_SuperNovice; + case 2: + return Job_Super_Baby; + default: + return @classId; + } + } + if (@classId >= Job_Taekwon && @classId <= Job_Soul_Linker) { + //Currently has no alternates. + return @classId; + } + if (@classId >= Job_Novice_High && @classId <= Job_Paladin2) + set @classId, @classId -Job_Novice_High; + else + if (@classId >= Job_Baby && @classId <= Job_Super_Baby) + set @classId, @classId -Job_Baby; + + if (@type == 1) + set @classId, @classId +Job_Novice_High; + + if (@type == 2) + set @classId, @classId +Job_Baby; + + return @classId; +} + +//Returns the type of class: +//0= Novice, 1= First Class, 2= Second Class, 3= Super Novice +//4= Wedding +function script GF_getJobLevel { + + set @classId, getarg(0); + + if (@classId >= Job_Novice_High && @classId <= Job_Paladin2) + set @classId, @classId -Job_Novice_High; + + if (@classId >= Job_Baby && @classId <= Job_Baby_Crusader2) + set @classId, @classId -Job_Baby; + + if(@classId == Job_Novice) { + return 0; + } + if((@classId >= Job_Swordman && @classId <= Job_Thief) + || @classId == Job_Taekwon) { + return 1; + } + if ((@classId >= Job_Knight && @classId <= Job_Crusader2) + || (@classId >= Job_Star_Gladiator && @classId <= Job_Soul_Linker)) { + return 2; + } + + if(@classId == Job_SuperNovice || @classId == Job_Super_Baby) { + return 3; + } + if(@classId == 22) { + return 4; + } + return -1; +} + +//Returns the type of class, based on path: +//0= Normal Jobs, 1= Upper Jobs, 2= Baby Jobs +//Works the same as Upper, except you can pass any job id to get it's upper value +function script GF_getJobType { + set @classId, getarg(0); + + if ((@classId >= Job_Novice && @classId <= Job_SuperNovice) + || (@classId >= Job_Taekwon && @classId <= Job_Soul_Linker)) { + return 0; + } + if (@classId >= Job_Novice_High && @classId <= Job_Paladin2) { + return 1; + } + if (@classId >= Job_Baby && @classId <= Job_Super_Baby) { + return 2; + } + return -1; +} +//Returns the base class of the given job, return values are: +//Job_Novice (Novice, Baby Novice, Super Novice +//Job_Acolyte (Aco, Priest, Monk +High/Baby variations) +//Job_Archer (Archer, Sniper, Bard, Dancer +High/Baby variations) +//Job_Mage (Mage, Wizard, Sage +High/Baby variations) +//Job_Swordman (Swordsman, Knight, Crusader +High/Baby variations) +//Job_Thief (Thief, Assassin, Rogue +High/Baby variations) +//-1 : others (when wearing Tux/Wedding dress, for example) +//Works the same as baseClass, except you pass the class which you want +//examined. +function script GF_getJobClass { + set @classId, getarg(0); + + if (@classId >= Job_Novice_High && @classId <= Job_Paladin2) + set @classId, @classId -Job_Novice_High; + + if (@classId >= Job_Baby && @classId <= Job_Baby_Crusader2) + set @classId, @classId -Job_Baby; + + switch (@classId) { + case Job_Novice: + case Job_SuperNovice: + case Job_Super_Baby: + return Job_Novice; + + case Job_Acolyte: + case Job_Priest: + case Job_Monk: + return Job_Acolyte; + + case Job_Archer: + case Job_Hunter: + case Job_Bard: + case Job_Dancer: + return Job_Archer; + + case Job_Mage: + case Job_Wizard: + case Job_Sage: + return Job_Mage; + + case Job_Merchant: + case Job_BlackSmith: + case Job_Alchem: + return Job_Merchant; + + case Job_Swordman: + case Job_Knight: + case Job_Knight2: + case Job_Paladin: + case Job_Paladin2: + return Job_Swordman; + + case Job_Thief: + case Job_Assassin: + case Job_Rogue: + return Job_Thief; + + case Job_Taekwon: + case Job_Star_Gladiator: + case Job_Star_Gladiator2: + case Job_Soul_Linker: + return Job_Taekwon; + + default: + return -1; + } }
\ No newline at end of file diff --git a/npc/custom/eAAC_Scripts/kafraExpress/kafras.txt b/npc/custom/eAAC_Scripts/kafraExpress/kafras.txt index 739dcc58e..329adf296 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/kafras.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/kafras.txt @@ -1,296 +1,296 @@ -//===== eAthena Script =======================================
-//= Kafra Express - NPC definitions
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 2.2
-//===== Compatible With: =====================================
-//= Any eAthena Version with function support; RO Episode 8+ (LightHalzen)
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= Here is where the npcs are defined.
-//===== Additional Comments: =================================
-//= To define your own Kafra, keep in mind the order and meaning
-//= of the arguments for the main function.
-//============================================================
-
-//This is the model for the call: Type is 0 for towns, 1 for dungeons (2 for both)
-//callfunc "F_KafraExpress","NPC Name","Image File", type, "Save Map", Save X, Save Y;
-
-//Town Kafras
-alberta.gat,113,60,5 script Kafra Express::Alberta 116,{
- callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"alberta.gat",116,57;
-}
-
-aldebaran.gat,133,124,5 script Kafra Express::AlDeBaran 115,{
- callfunc "F_KafraExpress","Kafra Express","kafra_03",2,"aldebaran.gat",139,131;
-}
-
-amatsu.gat,201,80,8 script Kafra Express::Amatsu 114,{
- callfunc "F_KafraExpress","Kafra Express","kafra_04",0,"amatsu.gat",197,81;
-}
-
-ayothaya.gat,195,160,8 script Kafra Express::Ayothaya 112,{
- callfunc "F_KafraExpress","Kafra Express","kafra_06",0,"ayothaya.gat",194,173;
-}
-
-comodo.gat,190,153,5 script Kafra Express::Comodo 721,{
- callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"comodo.gat",189,166;
-}
-
-geffen.gat,121,62,8 script Kafra Express::Geffen 113,{
- callfunc "F_KafraExpress","Kafra Express","kafra_05",0,"geffen.gat",119,56;
-}
-
-gonryun.gat,169,188,2 script Kafra Express::GonRyun 117,{
- callfunc "F_KafraExpress","Kafra Express","kafra_01",2,"gonryun.gat",168,199;
-}
-
-einbech.gat,143,243,3 script Kafra Express::Einbech 860,{
- callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"einbech.gat",157,250;
-}
-
-einbroch.gat,58,207,4 script Kafra Express::Einbroch 860,{
- callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"einbroch.gat",64,184;
-}
-
-hugel.gat,101,117,1 script Kafra Express::Hugel 115,{
- callfunc "F_KafraExpress","Kafra Express","kafra_03",0,"hugel.gat",102,109;
-}
-
-izlude.gat,136,94,2 script Kafra Express::Izlude 115,{
- callfunc "F_KafraExpress","Kafra Express","kafra_03",0,"izlude.gat",147,99;
-}
-
-jawaii.gat,208,217,7 script Kafra Express::Jawaii 721,{
- callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"jawaii.gat",213,209;
-}
-
-lighthalzen.gat,165,106,3 script Kafra Express::Lighthalzen 861,{
- callfunc "F_KafraExpress","Kafra Express","kafra_09",0,"lighthalzen.gat",152,106;
-}
-
-louyang.gat,220,123,3 script Kafra Express::LouYang 117,{
- callfunc "F_KafraExpress","Kafra Express","kafra_01",0,"louyang.gat",221,128;
-}
-
-xmas.gat,148,126,4 script Kafra Express::Lutie 112,{
- callfunc "F_KafraExpress","Kafra Express","kafra_06",0,"xmas.gat",149,117;
-}
-
-morocc.gat,156,97,3 script Kafra Express::Morocc 721,{
- callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"morocc.gat",156,91;
-}
-
-niflheim.gat,196,192,3 script Kafra Express::Niflheim 791,{
- callfunc "F_KafraExpress","Kafra Express","",3,"niflheim.gat",194,185;
-}
-
-payon.gat,152,181,5 script Kafra Express::Payon 114,{
- callfunc "F_KafraExpress","Kafra Express","kafra_04",0,"payon.gat",162,182;
-}
-
-prontera.gat,147,177,7 script Kafra Express::Prontera 116,{
- callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"prontera.gat",156,195;
-}
-
-umbala.gat,89,159,4 script Kafra Express::Umbala 860,{
- callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"umbala.gat",91,159;
-}
-
-yuno.gat,159,87,5 script Kafra Express::Yuno 861,{
- callfunc "F_KafraExpress","Kafra Express","kafra_09",0,"yuno.gat",159,52;
-}
-
-//Dungeon Kafras
-//Abyss Lake
-hu_fild05.gat,170,305,7 script Kafra Express::D_Abyss 861,{
- callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"hu_fild05.gat",160,302;
-}
-
-//Amatsu D
-ama_in02.gat,115,184,6 script Kafra Express::D_Amatsu 117,{
- callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"ama_in02.gat",118,184;
-}
-
-//AntHell North
-moc_fild04.gat,208,323,1 script Kafra Express::D_Anthell1 114,{
- callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"moc_fild04.gat",207,332;
-}
-
-//AntHell South
-moc_fild15.gat,251,243,3 script Kafra Express::D_Anthell2 114,{
- callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"moc_fild15.gat",246,251;
-}
-
-//Ayothaya Dungeon
-ayo_fild02.gat,289,144,3 script Kafra Express::D_Ayothaya 116,{
- callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"ayo_fild02.gat",289,155;
-}
-
-//Byalan Island
-izlu2dun.gat,101,82,7 script Kafra Express::D_Byalan 112,{
- callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"izlu2dun.gat",112,84;
-}
-
-//Comodo East Cave
-cmd_fild01.gat,33,321,4 script Kafra Express::D_ComodoE 721,{
- callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"cmd_fild01.gat",34,325;
-}
-
-//Comodo West Cave
-comodo.gat,31,218,4 script Kafra Express::D_ComodoW 721,{
- callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"comodo.gat",32,209;
-}
-
-//Comodo North Cave
-comodo.gat,182,347,2 script Kafra Express::D_ComodoN 721,{
- callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"comodo.gat",180,352;
-}
-
-//Coal Mines
-mjolnir_02.gat,83,364,4 script Kafra Express::D_Coal 861,{
- callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"mjolnir_02.gat",89,358;
-}
-
-//Culvert
-prt_fild05.gat,275,219,5 script Kafra Express::D_Culvert 112,{
- callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"prt_fild05.gat",274,208;
-}
-
-//Gefenia
-gefenia01.gat,56,171,6 script Kafra Express::D_Gefenia1 861,{
- callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"gefenia01.gat",59,169;
-}
-
-//Geffen Dungeon
-gef_tower.gat,156,33,3 script Kafra Express::D_Geffen 113,{
- callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"gef_tower.gat",147,35;
-}
-
-//GH: Church
-glast_01.gat,193,136,5 script Kafra Express::D_GHChurch 791,{
- callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",206,136;
-}
-
-//GH: Castle
-glast_01.gat,200,350,4 script Kafra Express::D_GHCastle 791,{
- callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",200,347;
-}
-
-//GH: Staircase
-glast_01.gat,58,103,7 script Kafra Express::D_GHStair 791,{
- callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",62,107;
-}
-
-//GH: Chivalry
-glast_01.gat,62,198,6 script Kafra Express::D_GHChivalry 791,{
- callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",69,193;
-}
-
-//LightHalzen Rekkenber (Sewer Entrance)
-lighthalzen.gat,311,293,1 script Kafra Express::D_Lhz 860,{
- callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"lighthalzen.gat",301,286;
-}
-
-//LightHalzen Rekkenber (Rekkenber Entrance)(
-//lighthalzen.gat,69,57,7 script Kafra Express::D_Lhz 860,{
-// callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"lighthalzen.gat",78,57;
-//}
-
-//Juperos
-jupe_cave.gat,45,55,5 script Kafra Express::D_Juperos 860,{
- callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"jupe_cave.gat",45,48;
-}
-
-//Laberynth
-prt_fild01.gat,143,365,3 script Kafra Express::D_Maze 112,{
- callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"prt_fild01.gat",136,361;
-}
-
-//LouYang D
-louyang.gat,35,276,6 script Kafra Express::D_Louyang 117,{
- callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"louyang.gat",41,267;
-}
-
-//Magma D
-yuno_fild03.gat,34,143,5 script Kafra Express::D_Magma 115,{
- callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"yuno_fild03.gat",35,135;
-}
-
-//Orc D North
-in_orcs01.gat,24,165,5 script Kafra Express::D_OrcsN 116,{
- callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"in_orcs01.gat",34,165;
-}
-
-//Orc D South
-in_orcs01.gat,103,99,5 script Kafra Express::D_OrcsS 116,{
- callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"in_orcs01.gat",112,99;
-}
-
-//Payon D
-pay_arche.gat,38,138,6 script Kafra Express::D_Payon 112,{
- callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"pay_arche.gat",41,133;
-}
-
-//Pyramids D
-moc_ruins.gat,60,166,5 script Kafra Express::D_Pyramid 115,{
- callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"moc_ruins.gat",62,162;
-}
-
-//Sphinx D
-moc_fild19.gat,106,97,8 script Kafra Express::D_Sphinx 115,{
- callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"moc_fild19.gat",107,100;
-}
-
-//Sunken Ship
-alb2trea.gat,75,101,5 script Kafra Express::D_Sunken 114,{
- callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"alb2trea.gat",87,103;
-}
-
-//Thanatos Tower
-tha_scene01.gat,139,194,0 script Kafra Express::D_Thanatos 113,{
- callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tha_scene01.gat",132,220;
-}
-
-//Toy Factory
-xmas.gat,138,307,6 script Kafra Express::D_Toy 116,{
- callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"xmas.gat",144,306;
-}
-
-//Turtle Cave Entrance
-tur_dun01.gat,147,237,6 script Kafra Express::D_TCave 113,{
- callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tur_dun01.gat",155,234;
-}
-
-//Turtle Island Entrance
-tur_dun01.gat,148,54,6 script Kafra Express::D_TIsland 113,{
- callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tur_dun01.gat",153,47;
-}
-
-//Umbala D
-umbala.gat,120,284,3 script Kafra Express::D_Umbala 117,{
- callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"umbala.gat",113,282;
-}
-
-//Guild War Kafras: Disabled by Default!
-
-//Al De Baran Guild Grounds
-//alde_gld.gat,156,165,3 script Kafra Express::G_AlDeBaran 116,{
-// callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"alde_gld.gat",156,157;
-//}
-
-//Geffen Guild Grounds
-//gef_fild13.gat,237,182,6 script Kafra Express::G_Geffen 113,{
-// callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"gef_fild13.gat",231,181;
-//}
-
-//Payon Guild Grounds
-//pay_gld.gat,243,172,6 script Kafra Express::G_Payon 117,{
-// callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"pay_gld.gat",243,178;
-//}
-
-//Prontera Guild Grounds
-//prt_gld.gat,127,163,5 script Kafra Express::G_Prontera 115,{
-// callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"prt_gld.gat",129,170;
-//}
+//===== eAthena Script ======================================= +//= Kafra Express - NPC definitions +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 2.2 +//===== Compatible With: ===================================== +//= Any eAthena Version with function support; RO Episode 8+ (LightHalzen) +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= Here is where the npcs are defined. +//===== Additional Comments: ================================= +//= To define your own Kafra, keep in mind the order and meaning +//= of the arguments for the main function. +//============================================================ + +//This is the model for the call: Type is 0 for towns, 1 for dungeons (2 for both) +//callfunc "F_KafraExpress","NPC Name","Image File", type, "Save Map", Save X, Save Y; + +//Town Kafras +alberta.gat,113,60,5 script Kafra Express::Alberta 116,{ + callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"alberta.gat",116,57; +} + +aldebaran.gat,133,124,5 script Kafra Express::AlDeBaran 115,{ + callfunc "F_KafraExpress","Kafra Express","kafra_03",2,"aldebaran.gat",139,131; +} + +amatsu.gat,201,80,8 script Kafra Express::Amatsu 114,{ + callfunc "F_KafraExpress","Kafra Express","kafra_04",0,"amatsu.gat",197,81; +} + +ayothaya.gat,195,160,8 script Kafra Express::Ayothaya 112,{ + callfunc "F_KafraExpress","Kafra Express","kafra_06",0,"ayothaya.gat",194,173; +} + +comodo.gat,190,153,5 script Kafra Express::Comodo 721,{ + callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"comodo.gat",189,166; +} + +geffen.gat,121,62,8 script Kafra Express::Geffen 113,{ + callfunc "F_KafraExpress","Kafra Express","kafra_05",0,"geffen.gat",119,56; +} + +gonryun.gat,169,188,2 script Kafra Express::GonRyun 117,{ + callfunc "F_KafraExpress","Kafra Express","kafra_01",2,"gonryun.gat",168,199; +} + +einbech.gat,143,243,3 script Kafra Express::Einbech 860,{ + callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"einbech.gat",157,250; +} + +einbroch.gat,58,207,4 script Kafra Express::Einbroch 860,{ + callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"einbroch.gat",64,184; +} + +hugel.gat,101,117,1 script Kafra Express::Hugel 115,{ + callfunc "F_KafraExpress","Kafra Express","kafra_03",0,"hugel.gat",102,109; +} + +izlude.gat,136,94,2 script Kafra Express::Izlude 115,{ + callfunc "F_KafraExpress","Kafra Express","kafra_03",0,"izlude.gat",147,99; +} + +jawaii.gat,208,217,7 script Kafra Express::Jawaii 721,{ + callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"jawaii.gat",213,209; +} + +lighthalzen.gat,165,106,3 script Kafra Express::Lighthalzen 861,{ + callfunc "F_KafraExpress","Kafra Express","kafra_09",0,"lighthalzen.gat",152,106; +} + +louyang.gat,220,123,3 script Kafra Express::LouYang 117,{ + callfunc "F_KafraExpress","Kafra Express","kafra_01",0,"louyang.gat",221,128; +} + +xmas.gat,148,126,4 script Kafra Express::Lutie 112,{ + callfunc "F_KafraExpress","Kafra Express","kafra_06",0,"xmas.gat",149,117; +} + +morocc.gat,156,97,3 script Kafra Express::Morocc 721,{ + callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"morocc.gat",156,91; +} + +niflheim.gat,196,192,3 script Kafra Express::Niflheim 791,{ + callfunc "F_KafraExpress","Kafra Express","",3,"niflheim.gat",194,185; +} + +payon.gat,152,181,5 script Kafra Express::Payon 114,{ + callfunc "F_KafraExpress","Kafra Express","kafra_04",0,"payon.gat",162,182; +} + +prontera.gat,147,177,7 script Kafra Express::Prontera 116,{ + callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"prontera.gat",156,195; +} + +umbala.gat,89,159,4 script Kafra Express::Umbala 860,{ + callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"umbala.gat",91,159; +} + +yuno.gat,159,87,5 script Kafra Express::Yuno 861,{ + callfunc "F_KafraExpress","Kafra Express","kafra_09",0,"yuno.gat",159,52; +} + +//Dungeon Kafras +//Abyss Lake +hu_fild05.gat,170,305,7 script Kafra Express::D_Abyss 861,{ + callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"hu_fild05.gat",160,302; +} + +//Amatsu D +ama_in02.gat,115,184,6 script Kafra Express::D_Amatsu 117,{ + callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"ama_in02.gat",118,184; +} + +//AntHell North +moc_fild04.gat,208,323,1 script Kafra Express::D_Anthell1 114,{ + callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"moc_fild04.gat",207,332; +} + +//AntHell South +moc_fild15.gat,251,243,3 script Kafra Express::D_Anthell2 114,{ + callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"moc_fild15.gat",246,251; +} + +//Ayothaya Dungeon +ayo_fild02.gat,289,144,3 script Kafra Express::D_Ayothaya 116,{ + callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"ayo_fild02.gat",289,155; +} + +//Byalan Island +izlu2dun.gat,101,82,7 script Kafra Express::D_Byalan 112,{ + callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"izlu2dun.gat",112,84; +} + +//Comodo East Cave +cmd_fild01.gat,33,321,4 script Kafra Express::D_ComodoE 721,{ + callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"cmd_fild01.gat",34,325; +} + +//Comodo West Cave +comodo.gat,31,218,4 script Kafra Express::D_ComodoW 721,{ + callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"comodo.gat",32,209; +} + +//Comodo North Cave +comodo.gat,182,347,2 script Kafra Express::D_ComodoN 721,{ + callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"comodo.gat",180,352; +} + +//Coal Mines +mjolnir_02.gat,83,364,4 script Kafra Express::D_Coal 861,{ + callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"mjolnir_02.gat",89,358; +} + +//Culvert +prt_fild05.gat,275,219,5 script Kafra Express::D_Culvert 112,{ + callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"prt_fild05.gat",274,208; +} + +//Gefenia +gefenia01.gat,56,171,6 script Kafra Express::D_Gefenia1 861,{ + callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"gefenia01.gat",59,169; +} + +//Geffen Dungeon +gef_tower.gat,156,33,3 script Kafra Express::D_Geffen 113,{ + callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"gef_tower.gat",147,35; +} + +//GH: Church +glast_01.gat,193,136,5 script Kafra Express::D_GHChurch 791,{ + callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",206,136; +} + +//GH: Castle +glast_01.gat,200,350,4 script Kafra Express::D_GHCastle 791,{ + callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",200,347; +} + +//GH: Staircase +glast_01.gat,58,103,7 script Kafra Express::D_GHStair 791,{ + callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",62,107; +} + +//GH: Chivalry +glast_01.gat,62,198,6 script Kafra Express::D_GHChivalry 791,{ + callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",69,193; +} + +//LightHalzen Rekkenber (Sewer Entrance) +lighthalzen.gat,311,293,1 script Kafra Express::D_Lhz 860,{ + callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"lighthalzen.gat",301,286; +} + +//LightHalzen Rekkenber (Rekkenber Entrance)( +//lighthalzen.gat,69,57,7 script Kafra Express::D_Lhz 860,{ +// callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"lighthalzen.gat",78,57; +//} + +//Juperos +jupe_cave.gat,45,55,5 script Kafra Express::D_Juperos 860,{ + callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"jupe_cave.gat",45,48; +} + +//Laberynth +prt_fild01.gat,143,365,3 script Kafra Express::D_Maze 112,{ + callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"prt_fild01.gat",136,361; +} + +//LouYang D +louyang.gat,35,276,6 script Kafra Express::D_Louyang 117,{ + callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"louyang.gat",41,267; +} + +//Magma D +yuno_fild03.gat,34,143,5 script Kafra Express::D_Magma 115,{ + callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"yuno_fild03.gat",35,135; +} + +//Orc D North +in_orcs01.gat,24,165,5 script Kafra Express::D_OrcsN 116,{ + callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"in_orcs01.gat",34,165; +} + +//Orc D South +in_orcs01.gat,103,99,5 script Kafra Express::D_OrcsS 116,{ + callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"in_orcs01.gat",112,99; +} + +//Payon D +pay_arche.gat,38,138,6 script Kafra Express::D_Payon 112,{ + callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"pay_arche.gat",41,133; +} + +//Pyramids D +moc_ruins.gat,60,166,5 script Kafra Express::D_Pyramid 115,{ + callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"moc_ruins.gat",62,162; +} + +//Sphinx D +moc_fild19.gat,106,97,8 script Kafra Express::D_Sphinx 115,{ + callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"moc_fild19.gat",107,100; +} + +//Sunken Ship +alb2trea.gat,75,101,5 script Kafra Express::D_Sunken 114,{ + callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"alb2trea.gat",87,103; +} + +//Thanatos Tower +tha_scene01.gat,139,194,0 script Kafra Express::D_Thanatos 113,{ + callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tha_scene01.gat",132,220; +} + +//Toy Factory +xmas.gat,138,307,6 script Kafra Express::D_Toy 116,{ + callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"xmas.gat",144,306; +} + +//Turtle Cave Entrance +tur_dun01.gat,147,237,6 script Kafra Express::D_TCave 113,{ + callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tur_dun01.gat",155,234; +} + +//Turtle Island Entrance +tur_dun01.gat,148,54,6 script Kafra Express::D_TIsland 113,{ + callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tur_dun01.gat",153,47; +} + +//Umbala D +umbala.gat,120,284,3 script Kafra Express::D_Umbala 117,{ + callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"umbala.gat",113,282; +} + +//Guild War Kafras: Disabled by Default! + +//Al De Baran Guild Grounds +//alde_gld.gat,156,165,3 script Kafra Express::G_AlDeBaran 116,{ +// callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"alde_gld.gat",156,157; +//} + +//Geffen Guild Grounds +//gef_fild13.gat,237,182,6 script Kafra Express::G_Geffen 113,{ +// callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"gef_fild13.gat",231,181; +//} + +//Payon Guild Grounds +//pay_gld.gat,243,172,6 script Kafra Express::G_Payon 117,{ +// callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"pay_gld.gat",243,178; +//} + +//Prontera Guild Grounds +//prt_gld.gat,127,163,5 script Kafra Express::G_Prontera 115,{ +// callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"prt_gld.gat",129,170; +//} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_bank.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_bank.txt index 9594dae47..6ad0c2d50 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_bank.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_bank.txt @@ -1,175 +1,175 @@ -//===== eAthena Script =======================================
-//= Kafra Express - Bank Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 2.7
-//===== Compatible With: =====================================
-//= eAthena SVN R3524+
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= Offers banking services with daily interests, and
-//= withdrawal/deposit fees.
-//===== Additional Comments: =================================
-//= See config.txt for configuration.
-//============================================================
-
-- script keInit_bank -1,{
-OnInit: //Load Config
- donpcevent "keConfig::OnLoadBank";
- end;
-}
-
-function script F_keBank {
-
- function SF_calcInterest;
- SF_calcInterest();
-
- do {
- set @feeD,callfunc("F_keCost",$@kebk_depositCost,100);
- set @maxDep,Zeny;
- if (@maxDep > $@kebk_maxTransact)
- set @maxDep,$@kebk_maxTransact;
- if (#ke_bank + @maxDep > $@kebk_capacity)
- set @maxDep,$@kebk_capacity-#ke_bank;
-
- set @feeW,callfunc("F_keCost",$@kebk_withdrawCost,100);
- set @maxWith,#ke_bank-(#ke_bank*@feeW/100);
- if (@maxWith > $@kebk_maxTransact)
- set @maxWith,$@kebk_maxTransact;
-
- if (#ke_bank < $@kebk_capacity) {
- set @kmenu, select(
- "- Return (balance is "+#ke_bank+"z)",
- "- Deposit (up to "+@maxDep+"z - "+@feeD+"% fee)",
- "- Withdraw (up to "+@maxWith+"z + "+@feeW+"% fee)",
- "- Transfer from 1st B.o.P. ("+#bankstorage+"z)",
- "- Transfer from 2nd B.o.P. ("+#kafrabank+"z)"
- );
- } else {
- set @kmenu, select(
- "- Return (balance is "+#ke_bank+"z)",
- "- Withdraw (up to "+@maxWith+"z + "+@feeW+"% fee)",
- "- Transfer from 1st B.o.P. ("+#bankstorage+"z)",
- "- Transfer from 2nd B.o.P. ("+#kafrabank+"z)"
- );
- if (@kmenu > 1)
- set @kmenu, @kmenu+1;
- }
- switch (@kmenu) {
- case 2: //Deposit
- input @amount;
- if (@amount < $@kebk_minTransact) {
- callfunc "F_keIntro", -1, "Sorry, the minimum transaction value is "+$@kebk_minTransact+"z.";
- break;
- }
- if (@amount > @maxDep) {
- callfunc "F_keIntro", e_an, "You can't deposit that quantity!";
- break;
- }
- set #ke_bank,#ke_bank+@amount-(@amount*@feeD/100);
- if ($@kebk_useGlobalBank)
- set $ke_globalbank, $ke_globalbank +@amount*@feeD/100;
- set Zeny,Zeny-@amount;
- emotion e_cash;
- break;
-
- case 3: //Withdraw
- input @amount;
- if (@amount < $@kebk_minTransact) {
- callfunc "F_keIntro", -1, "Sorry, the minimum transaction value is "+$@kebk_minTransact+"z.";
- break;
- }
- if (@amount > @maxWith) {
- callfunc "F_keIntro", e_X, "You can't withdraw that quantity!";
- break;
- }
- set #ke_bank,#ke_bank-@amount-(@amount*@feeW/100);
- if ($@kebk_useGlobalBank)
- set $ke_globalbank, $ke_globalbank +@amount*@feeW/100;
- set Zeny,Zeny+@amount;
- emotion e_oh;
- break;
-
- case 4: //1st B.o.P.
- if (#bankstorage==0) {
- callfunc "F_keIntro", -1, "Sorry, there is nothing left to transfer.";
- break;
- }
- callfunc "F_keIntro", -1, #bankstorage+"z have been transferred from your account in the First Bank of Prontera.";
- set #ke_bank,#ke_bank+#bankstorage;
- set #bankstorage,0;
- break;
-
- case 5: //2nd B.o.P.
- if (#kafrabank==0) {
- callfunc "F_keIntro", -1, "Sorry, there is nothing left to transfer.";
- break;
- }
- callfunc "F_keIntro", -1, #kafrabank+"z have been transferred from your account in the Second Bank of Prontera.";
- set #ke_bank,#ke_bank+#kafrabank;
- set #kafrabank,0;
- break;
- }
- } while (@kmenu > 1);
-return;
-
-//Subfunction: SF_calcInterest
-//Calculates the interests gained on the account. Uses 30-day months
-function SF_calcInterest {
- set @day,gettime(5);
- if (@day>30)
- set @day,30; //Use 30 day-months
- set @month,gettime(6);
- if (#ke_banktick == 0) { //Init bank.
- set #ke_banktick,gettime(6)*30+@day;
- if ($@kebk_monMaintenance < 1) return;
- set #ke_bankmtick,@month;
- return;
- }
- set @banktick,gettime(6)*30+@day;
- if (@banktick == #ke_banktick) return;
- if (@banktick < #ke_banktick) { //Year change.
- do {
- set #ke_banktick,#ke_banktick-360;
- if ($@kebk_monMaintenance > 0) set #ke_bankmtick,#ke_bankmtick-12;
- } while (@banktick < #ke_banktick);
- }
- if ($@kebk_monMaintenance > 0 && #ke_bankmtick < @month){ //Month change
- set @qty,0;
- do {
- if (#ke_bank < $@kebk_monMaintenance) {
- if (@qty>0)
- mes "You've been charged "+@qty+"z for account maintenance, but it was not enough.";
- if ($@kebk_useGlobalBank)
- set $ke_globalbank, $ke_globalbank + @qty;
- mes "You owe the Bank "+($@kebk_monMaintenance*(#ke_bankmtick-@month))+"z for maintenance costs. Until paid you won't earn interests...";
- return;
- }
- set @qty, @qty+$@kebk_monMaintenance;
- set #ke_bankmtick,#ke_bankmtick+1;
- set #ke_bank, #ke_bank-$@kebk_monMaintenance;
- } while (#ke_bankmtick < @month);
- mes "You've been charged "+@qty+"z for account maintenance.";
- if ($@kebk_useGlobalBank)
- set $ke_globalbank, $ke_globalbank + @qty;
- }
- set @qty,0;
- if (#ke_bank > $@kebk_monMaintenance && #ke_bank < $@kebk_capacity)
- set @qty,#ke_bank*$@kebk_dayInterest*(@banktick-#ke_banktick)/10000;
- set #ke_banktick,@banktick;
- if (@qty == 0) return;
- if (@qty < 0) {
- callfunc "F_keIntro", -1, "Sorry, your gained interests have been cancelled for being way too much.";
- return;
- }
- if (#ke_bank + @qty > $@kebk_capacity)
- set #ke_bank, $@kebk_capacity;
- else
- set #ke_bank,#ke_bank+@qty;
-
- callfunc "F_keIntro", -1, "Since your last visit, you've earned an interest of "+@qty+"z!";
-} //SF end
-
-}
-
+//===== eAthena Script ======================================= +//= Kafra Express - Bank Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 2.7 +//===== Compatible With: ===================================== +//= eAthena SVN R3524+ +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= Offers banking services with daily interests, and +//= withdrawal/deposit fees. +//===== Additional Comments: ================================= +//= See config.txt for configuration. +//============================================================ + +- script keInit_bank -1,{ +OnInit: //Load Config + donpcevent "keConfig::OnLoadBank"; + end; +} + +function script F_keBank { + + function SF_calcInterest; + SF_calcInterest(); + + do { + set @feeD,callfunc("F_keCost",$@kebk_depositCost,100); + set @maxDep,Zeny; + if (@maxDep > $@kebk_maxTransact) + set @maxDep,$@kebk_maxTransact; + if (#ke_bank + @maxDep > $@kebk_capacity) + set @maxDep,$@kebk_capacity-#ke_bank; + + set @feeW,callfunc("F_keCost",$@kebk_withdrawCost,100); + set @maxWith,#ke_bank-(#ke_bank*@feeW/100); + if (@maxWith > $@kebk_maxTransact) + set @maxWith,$@kebk_maxTransact; + + if (#ke_bank < $@kebk_capacity) { + set @kmenu, select( + "- Return (balance is "+#ke_bank+"z)", + "- Deposit (up to "+@maxDep+"z - "+@feeD+"% fee)", + "- Withdraw (up to "+@maxWith+"z + "+@feeW+"% fee)", + "- Transfer from 1st B.o.P. ("+#bankstorage+"z)", + "- Transfer from 2nd B.o.P. ("+#kafrabank+"z)" + ); + } else { + set @kmenu, select( + "- Return (balance is "+#ke_bank+"z)", + "- Withdraw (up to "+@maxWith+"z + "+@feeW+"% fee)", + "- Transfer from 1st B.o.P. ("+#bankstorage+"z)", + "- Transfer from 2nd B.o.P. ("+#kafrabank+"z)" + ); + if (@kmenu > 1) + set @kmenu, @kmenu+1; + } + switch (@kmenu) { + case 2: //Deposit + input @amount; + if (@amount < $@kebk_minTransact) { + callfunc "F_keIntro", -1, "Sorry, the minimum transaction value is "+$@kebk_minTransact+"z."; + break; + } + if (@amount > @maxDep) { + callfunc "F_keIntro", e_an, "You can't deposit that quantity!"; + break; + } + set #ke_bank,#ke_bank+@amount-(@amount*@feeD/100); + if ($@kebk_useGlobalBank) + set $ke_globalbank, $ke_globalbank +@amount*@feeD/100; + set Zeny,Zeny-@amount; + emotion e_cash; + break; + + case 3: //Withdraw + input @amount; + if (@amount < $@kebk_minTransact) { + callfunc "F_keIntro", -1, "Sorry, the minimum transaction value is "+$@kebk_minTransact+"z."; + break; + } + if (@amount > @maxWith) { + callfunc "F_keIntro", e_X, "You can't withdraw that quantity!"; + break; + } + set #ke_bank,#ke_bank-@amount-(@amount*@feeW/100); + if ($@kebk_useGlobalBank) + set $ke_globalbank, $ke_globalbank +@amount*@feeW/100; + set Zeny,Zeny+@amount; + emotion e_oh; + break; + + case 4: //1st B.o.P. + if (#bankstorage==0) { + callfunc "F_keIntro", -1, "Sorry, there is nothing left to transfer."; + break; + } + callfunc "F_keIntro", -1, #bankstorage+"z have been transferred from your account in the First Bank of Prontera."; + set #ke_bank,#ke_bank+#bankstorage; + set #bankstorage,0; + break; + + case 5: //2nd B.o.P. + if (#kafrabank==0) { + callfunc "F_keIntro", -1, "Sorry, there is nothing left to transfer."; + break; + } + callfunc "F_keIntro", -1, #kafrabank+"z have been transferred from your account in the Second Bank of Prontera."; + set #ke_bank,#ke_bank+#kafrabank; + set #kafrabank,0; + break; + } + } while (@kmenu > 1); +return; + +//Subfunction: SF_calcInterest +//Calculates the interests gained on the account. Uses 30-day months +function SF_calcInterest { + set @day,gettime(5); + if (@day>30) + set @day,30; //Use 30 day-months + set @month,gettime(6); + if (#ke_banktick == 0) { //Init bank. + set #ke_banktick,gettime(6)*30+@day; + if ($@kebk_monMaintenance < 1) return; + set #ke_bankmtick,@month; + return; + } + set @banktick,gettime(6)*30+@day; + if (@banktick == #ke_banktick) return; + if (@banktick < #ke_banktick) { //Year change. + do { + set #ke_banktick,#ke_banktick-360; + if ($@kebk_monMaintenance > 0) set #ke_bankmtick,#ke_bankmtick-12; + } while (@banktick < #ke_banktick); + } + if ($@kebk_monMaintenance > 0 && #ke_bankmtick < @month){ //Month change + set @qty,0; + do { + if (#ke_bank < $@kebk_monMaintenance) { + if (@qty>0) + mes "You've been charged "+@qty+"z for account maintenance, but it was not enough."; + if ($@kebk_useGlobalBank) + set $ke_globalbank, $ke_globalbank + @qty; + mes "You owe the Bank "+($@kebk_monMaintenance*(#ke_bankmtick-@month))+"z for maintenance costs. Until paid you won't earn interests..."; + return; + } + set @qty, @qty+$@kebk_monMaintenance; + set #ke_bankmtick,#ke_bankmtick+1; + set #ke_bank, #ke_bank-$@kebk_monMaintenance; + } while (#ke_bankmtick < @month); + mes "You've been charged "+@qty+"z for account maintenance."; + if ($@kebk_useGlobalBank) + set $ke_globalbank, $ke_globalbank + @qty; + } + set @qty,0; + if (#ke_bank > $@kebk_monMaintenance && #ke_bank < $@kebk_capacity) + set @qty,#ke_bank*$@kebk_dayInterest*(@banktick-#ke_banktick)/10000; + set #ke_banktick,@banktick; + if (@qty == 0) return; + if (@qty < 0) { + callfunc "F_keIntro", -1, "Sorry, your gained interests have been cancelled for being way too much."; + return; + } + if (#ke_bank + @qty > $@kebk_capacity) + set #ke_bank, $@kebk_capacity; + else + set #ke_bank,#ke_bank+@qty; + + callfunc "F_keIntro", -1, "Since your last visit, you've earned an interest of "+@qty+"z!"; +} //SF end + +} + diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_broadcast.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_broadcast.txt index 669942e72..ad7a02c4b 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_broadcast.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_broadcast.txt @@ -1,224 +1,224 @@ -//===== eAthena Script =======================================
-//= Kafra Express - Broadcasting Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 3.0
-//===== Compatible With: =====================================
-//= eAthena SVN3424+
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= Offers broadcasting for party requests, pvp, general
-//= and anonymous. Broadcasts can be to the current map
-//= or server-wide
-//===== Additional Comments: =================================
-//= See config.txt for configuration.
-//= For the PVP broadcasts, variables from the Pvp Warping
-//= Module are used.
-//============================================================
-
-- script keInit_broadcast -1,{
-OnInit: //Load Config
- donpcevent "keConfig::OnLoadBroadcast";
- end;
-}
-
-//Function F_keBroadcast(String currentMapName)
-function script F_keBroadcast {
-
- function SF_calcPrice;
- function SF_broadcasts;
- function SF_bcPvp;
- function SF_doBroadcast;
-
- if ($@kebc_showOnline) {
- set @kmenu, select(
- "- Return",
- "- Map Broadcasts ("+getarg(0)+"/"+getmapusers(getarg(0))+" "+$@ked_users$+")",
- "- Global Broadcasts ("+getusers(1)+" "+$@ked_users$+")"
- );
- } else {
- set @kmenu, select(
- "- Return",
- "- Map Broadcasts ("+getarg(0)+")",
- "- Global Broadcasts"
- );
- }
- switch(@kmenu) {
- case 2:
- SF_calcPrice(0);
- set @map$,getarg(0);
- SF_broadcasts("Map ("+getarg(0)+")");
- break;
- case 3:
- SF_calcPrice(1);
- set @map$,"";
- SF_broadcasts("Global");
- break;
- }
-return;
-
-//Sub Function SF_broadcasts: Handles main broadcast menu.
-function SF_broadcasts {
-
- do {
- switch (select (
- "- Cancel "+getarg(0)+" Broadcast",
- "- Party request Broadcast ("+@partycost+"z)",
- "- PvP challenge Broadcast ("+@pvpcost+"z)",
- "- General Broadcast ("+@cost+"z)",
- "- General Anonymous Broadcast ("+@anoncost+"z)"
- )) {
- case 2: //Party
- SF_doBroadcast $@kebc_partyCost,@map$,"The "+callfunc("GF_getJobName",class)+" "+strcharinfo(0)+" (levels "+baselevel+"/"+joblevel+") is looking for a party to join.",0;
- break;
- case 3: //Pvp
- if ($@kewp_advanced == 0)
- SF_bcPvp $@kebc_pvpCost,@map$,0,0;
- else {
- do {
- set @kmenu, select (
- "- Cancel",
- "- advertise all levels rooms",
- "- advertise levels "+($@kewp_baseLv1-$@kewp_range)+"-"+($@kewp_baseLv1+$@kewp_range)+" rooms",
- "- advertise levels "+($@kewp_baseLv2-$@kewp_range)+"-"+($@kewp_baseLv2+$@kewp_range)+" rooms",
- "- advertise levels "+($@kewp_baseLv3-$@kewp_range)+"-"+($@kewp_baseLv3+$@kewp_range)+" rooms",
- "- advertise levels "+($@kewp_baseLv4-$@kewp_range)+"-"+($@kewp_baseLv4+$@kewp_range)+" rooms",
- "- advertise levels "+($@kewp_baseLv5-$@kewp_range)+"-"+($@kewp_baseLv5+$@kewp_range)+" rooms",
- "- advertise levels "+($@kewp_baseLv6-$@kewp_range)+"-"+($@kewp_baseLv6+$@kewp_range)+" rooms",
- "- advertise levels "+($@kewp_baseLv7-$@kewp_range)+"-"+($@kewp_baseLv7+$@kewp_range)+" rooms"
- );
- switch (@kmenu) {
- case 2: //All levels
- SF_bcPvp $@kebc_pvpCost,@map$,0,0;
- break;
- case 3: //Lv1
- SF_bcPvp $@kebc_pvpCost,@map$,$@kewp_baseLv1-$@kewp_range,$@kewp_baseLv1+$@kewp_range;
- break;
- case 4: //Lv2
- SF_bcPvp $@kebc_pvpCost,@map$,$@kewp_baseLv2-$@kewp_range,$@kewp_baseLv2+$@kewp_range;
- break;
- case 5: //Lv3
- SF_bcPvp $@kebc_pvpCost,@map$,$@kewp_baseLv3-$@kewp_range,$@kewp_baseLv3+$@kewp_range;
- break;
- case 6: //Lv4
- SF_bcPvp $@kebc_pvpCost,@map$,$@kewp_baseLv4-$@kewp_range,$@kewp_baseLv4+$@kewp_range;
- break;
- case 7: //Lv5
- SF_bcPvp $@kebc_pvpCost,@map$,$@kewp_baseLv5-$@kewp_range,$@kewp_baseLv5+$@kewp_range;
- break;
- case 8: //Lv6
- SF_bcPvp $@kebc_pvpCost,@map$,$@kewp_baseLv6-$@kewp_range,$@kewp_baseLv6+$@kewp_range;
- break;
- case 9: //Lv7
- SF_bcPvp $@kebc_pvpCost,@map$,$@kewp_baseLv7-$@kewp_range,$@kewp_baseLv7+$@kewp_range;
- break;
- default:
- break;
- }
- } while (@kmenu > 1);
- }
- break;
- case 4: //General
- SF_doBroadcast $@kebc_cost,@map$,"(From "+strcharinfo(0)+") ",1;
- break;
- case 5: //Anonymous
- SF_doBroadcast $@kebc_anonCost,@map$,"(Anonymous) ",1;
- break;
- default:
- return;
- }
- } while (1);
-} //SF_ end
-
-//SubFunction: Calculates prices for Broadcast services (argument 0 == 1 for global bc, 0 for map bc
-function SF_calcPrice {
- set @partycost,callfunc("F_keCost",$@kebc_partyCost,$@kebc_discount);
- set @pvpcost,callfunc("F_keCost",$@kebc_pvpCost,$@kebc_discount);
- set @cost,callfunc("F_keCost",$@kebc_cost,$@kebc_discount);
- set @anoncost,callfunc("F_keCost",$@kebc_anonCost,$@kebc_discount);
- if (getarg(0)) { //Global fix
- set @partycost,@partycost*$@kebc_globalFactor/100;
- set @pvpcost,@pvpcost*$@kebc_globalFactor/100;
- set @cost,@cost*$@kebc_globalFactor/100;
- set @anoncost,@anoncost*$@kebc_globalFactor/100;
- }
-} //SF_ end
-
-//SubFunction SF_doBroadcast(int cost, String map, String message, int input)
-//If map is "", do a global broadcast
-//If input is 1, concat a user string to message.
-function SF_doBroadcast {
- set @cost, getarg(0);
- if (getarg(1)=="")
- set @cost, @cost*$@kebc_globalFactor/100;
- if (getarg(3)) { //Input message
- input @msg$;
- set @msg$,getarg(2)+@msg$;
- } else
- set @msg$,getarg(2);
-
- mes "Broadcast '"+@msg$+"'?";
- switch (select(
- "- Cancel Broadcast",
- "- Broadcast Message"
- )) {
- case 2:
- if (!(callfunc("F_keCharge",@cost,$@kebc_discount,1))) {
- callfunc "F_keIntro", e_pif, "You don't have enough Zeny...";
- return;
- }
-
- callfunc "F_keIntro", e_what, "Broadcasting...";
- if (getarg(1)=="")
- announce @msg$,16;
- else
- mapannounce getarg(1),@msg$,3;
- break;
- default:
- callfunc "F_keIntro", -1, "Ok...";
- }
-} //SF_ end
-
-//SubFunction SF_bcPvp (int cost, String map, int min level, int max level)
-//Does the second part of PvP Room Advertising. Level is the level group to
-//advertise (1->8 where 8 is free for all)
-function SF_bcPvp {
- set @msg$, "advertising";
- set @lvls$, "";
- if (getarg(3)) {
- if (BaseLevel < getarg(2) || BaseLevel > getarg(3)) {
- callfunc "F_keIntro", e_bzz, "You can only broadcast requests for PvP rooms you can enter!";
- return;
- }
- set @msg$,"levels "+getarg(2)+"-"+getarg(3);
- set @lvls$,"(levels "+getarg(2)+"-"+getarg(3)+") ";
- }
- set @pvpcost,getarg(0);
- switch(select(
- "- Cancel (PvP Rooms "+@msg$+")",
- "- advertise 'Room Sandwich'",
- "- advertise 'Room Rock On'",
- "- advertise 'Four Room'",
- "- advertise 'Room Undercross'",
- "- advertise 'Room Compass'"
- )) {
- case 2: //Sandwich
- SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Sandwich'!",0;
- break;
- case 3: //Rockon
- SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Rock On'!",0;
- break;
- case 4: //Room Four
- SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Four Room'!",0;
- break;
- case 5: //Undercross
- SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Undercross'!",0;
- break;
- case 6: //Compass
- SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Compass'!",0;
- break;
- }
-} //SF_ end
-
-}
+//===== eAthena Script ======================================= +//= Kafra Express - Broadcasting Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 3.0 +//===== Compatible With: ===================================== +//= eAthena SVN3424+ +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= Offers broadcasting for party requests, pvp, general +//= and anonymous. Broadcasts can be to the current map +//= or server-wide +//===== Additional Comments: ================================= +//= See config.txt for configuration. +//= For the PVP broadcasts, variables from the Pvp Warping +//= Module are used. +//============================================================ + +- script keInit_broadcast -1,{ +OnInit: //Load Config + donpcevent "keConfig::OnLoadBroadcast"; + end; +} + +//Function F_keBroadcast(String currentMapName) +function script F_keBroadcast { + + function SF_calcPrice; + function SF_broadcasts; + function SF_bcPvp; + function SF_doBroadcast; + + if ($@kebc_showOnline) { + set @kmenu, select( + "- Return", + "- Map Broadcasts ("+getarg(0)+"/"+getmapusers(getarg(0))+" "+$@ked_users$+")", + "- Global Broadcasts ("+getusers(1)+" "+$@ked_users$+")" + ); + } else { + set @kmenu, select( + "- Return", + "- Map Broadcasts ("+getarg(0)+")", + "- Global Broadcasts" + ); + } + switch(@kmenu) { + case 2: + SF_calcPrice(0); + set @map$,getarg(0); + SF_broadcasts("Map ("+getarg(0)+")"); + break; + case 3: + SF_calcPrice(1); + set @map$,""; + SF_broadcasts("Global"); + break; + } +return; + +//Sub Function SF_broadcasts: Handles main broadcast menu. +function SF_broadcasts { + + do { + switch (select ( + "- Cancel "+getarg(0)+" Broadcast", + "- Party request Broadcast ("+@partycost+"z)", + "- PvP challenge Broadcast ("+@pvpcost+"z)", + "- General Broadcast ("+@cost+"z)", + "- General Anonymous Broadcast ("+@anoncost+"z)" + )) { + case 2: //Party + SF_doBroadcast $@kebc_partyCost,@map$,"The "+callfunc("GF_getJobName",class)+" "+strcharinfo(0)+" (levels "+baselevel+"/"+joblevel+") is looking for a party to join.",0; + break; + case 3: //Pvp + if ($@kewp_advanced == 0) + SF_bcPvp $@kebc_pvpCost,@map$,0,0; + else { + do { + set @kmenu, select ( + "- Cancel", + "- advertise all levels rooms", + "- advertise levels "+($@kewp_baseLv1-$@kewp_range)+"-"+($@kewp_baseLv1+$@kewp_range)+" rooms", + "- advertise levels "+($@kewp_baseLv2-$@kewp_range)+"-"+($@kewp_baseLv2+$@kewp_range)+" rooms", + "- advertise levels "+($@kewp_baseLv3-$@kewp_range)+"-"+($@kewp_baseLv3+$@kewp_range)+" rooms", + "- advertise levels "+($@kewp_baseLv4-$@kewp_range)+"-"+($@kewp_baseLv4+$@kewp_range)+" rooms", + "- advertise levels "+($@kewp_baseLv5-$@kewp_range)+"-"+($@kewp_baseLv5+$@kewp_range)+" rooms", + "- advertise levels "+($@kewp_baseLv6-$@kewp_range)+"-"+($@kewp_baseLv6+$@kewp_range)+" rooms", + "- advertise levels "+($@kewp_baseLv7-$@kewp_range)+"-"+($@kewp_baseLv7+$@kewp_range)+" rooms" + ); + switch (@kmenu) { + case 2: //All levels + SF_bcPvp $@kebc_pvpCost,@map$,0,0; + break; + case 3: //Lv1 + SF_bcPvp $@kebc_pvpCost,@map$,$@kewp_baseLv1-$@kewp_range,$@kewp_baseLv1+$@kewp_range; + break; + case 4: //Lv2 + SF_bcPvp $@kebc_pvpCost,@map$,$@kewp_baseLv2-$@kewp_range,$@kewp_baseLv2+$@kewp_range; + break; + case 5: //Lv3 + SF_bcPvp $@kebc_pvpCost,@map$,$@kewp_baseLv3-$@kewp_range,$@kewp_baseLv3+$@kewp_range; + break; + case 6: //Lv4 + SF_bcPvp $@kebc_pvpCost,@map$,$@kewp_baseLv4-$@kewp_range,$@kewp_baseLv4+$@kewp_range; + break; + case 7: //Lv5 + SF_bcPvp $@kebc_pvpCost,@map$,$@kewp_baseLv5-$@kewp_range,$@kewp_baseLv5+$@kewp_range; + break; + case 8: //Lv6 + SF_bcPvp $@kebc_pvpCost,@map$,$@kewp_baseLv6-$@kewp_range,$@kewp_baseLv6+$@kewp_range; + break; + case 9: //Lv7 + SF_bcPvp $@kebc_pvpCost,@map$,$@kewp_baseLv7-$@kewp_range,$@kewp_baseLv7+$@kewp_range; + break; + default: + break; + } + } while (@kmenu > 1); + } + break; + case 4: //General + SF_doBroadcast $@kebc_cost,@map$,"(From "+strcharinfo(0)+") ",1; + break; + case 5: //Anonymous + SF_doBroadcast $@kebc_anonCost,@map$,"(Anonymous) ",1; + break; + default: + return; + } + } while (1); +} //SF_ end + +//SubFunction: Calculates prices for Broadcast services (argument 0 == 1 for global bc, 0 for map bc +function SF_calcPrice { + set @partycost,callfunc("F_keCost",$@kebc_partyCost,$@kebc_discount); + set @pvpcost,callfunc("F_keCost",$@kebc_pvpCost,$@kebc_discount); + set @cost,callfunc("F_keCost",$@kebc_cost,$@kebc_discount); + set @anoncost,callfunc("F_keCost",$@kebc_anonCost,$@kebc_discount); + if (getarg(0)) { //Global fix + set @partycost,@partycost*$@kebc_globalFactor/100; + set @pvpcost,@pvpcost*$@kebc_globalFactor/100; + set @cost,@cost*$@kebc_globalFactor/100; + set @anoncost,@anoncost*$@kebc_globalFactor/100; + } +} //SF_ end + +//SubFunction SF_doBroadcast(int cost, String map, String message, int input) +//If map is "", do a global broadcast +//If input is 1, concat a user string to message. +function SF_doBroadcast { + set @cost, getarg(0); + if (getarg(1)=="") + set @cost, @cost*$@kebc_globalFactor/100; + if (getarg(3)) { //Input message + input @msg$; + set @msg$,getarg(2)+@msg$; + } else + set @msg$,getarg(2); + + mes "Broadcast '"+@msg$+"'?"; + switch (select( + "- Cancel Broadcast", + "- Broadcast Message" + )) { + case 2: + if (!(callfunc("F_keCharge",@cost,$@kebc_discount,1))) { + callfunc "F_keIntro", e_pif, "You don't have enough Zeny..."; + return; + } + + callfunc "F_keIntro", e_what, "Broadcasting..."; + if (getarg(1)=="") + announce @msg$,16; + else + mapannounce getarg(1),@msg$,3; + break; + default: + callfunc "F_keIntro", -1, "Ok..."; + } +} //SF_ end + +//SubFunction SF_bcPvp (int cost, String map, int min level, int max level) +//Does the second part of PvP Room Advertising. Level is the level group to +//advertise (1->8 where 8 is free for all) +function SF_bcPvp { + set @msg$, "advertising"; + set @lvls$, ""; + if (getarg(3)) { + if (BaseLevel < getarg(2) || BaseLevel > getarg(3)) { + callfunc "F_keIntro", e_bzz, "You can only broadcast requests for PvP rooms you can enter!"; + return; + } + set @msg$,"levels "+getarg(2)+"-"+getarg(3); + set @lvls$,"(levels "+getarg(2)+"-"+getarg(3)+") "; + } + set @pvpcost,getarg(0); + switch(select( + "- Cancel (PvP Rooms "+@msg$+")", + "- advertise 'Room Sandwich'", + "- advertise 'Room Rock On'", + "- advertise 'Four Room'", + "- advertise 'Room Undercross'", + "- advertise 'Room Compass'" + )) { + case 2: //Sandwich + SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Sandwich'!",0; + break; + case 3: //Rockon + SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Rock On'!",0; + break; + case 4: //Room Four + SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Four Room'!",0; + break; + case 5: //Undercross + SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Undercross'!",0; + break; + case 6: //Compass + SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Compass'!",0; + break; + } +} //SF_ end + +} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_dye.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_dye.txt index bcd916b21..735ef5465 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_dye.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_dye.txt @@ -1,139 +1,139 @@ -//===== eAthena Script =======================================
-//= Kafra Express - Stylist Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 1.9
-//===== Compatible With: =====================================
-//= eAthena SVN 3424+
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= Offers dying of hair, clothes and hair-style adjusts
-//===== Additional Comments: =================================
-//= See config.txt for configuration.
-//============================================================
-
-- script keInit_dye -1,{
-OnInit: //Load Config
- donpcevent "keConfig::OnLoadDye";
- end;
-}
-
-function script F_keStylist {
-
- function SF_inputpalette;
- function SF_wheelpalette;
-
- set @jobClass,callfunc("GF_getJobLevel",class);
- set @maxCDye,0;
-
- switch (@jobClass) {
- case 0:
- set @maxCDye, $@kedy_clothJN;
- break;
- case 1:
- set @maxCDye, $@kedy_clothJ1ST;
- break;
- case 2:
- set @maxCDye, $@kedy_clothJ2ND;
- break;
- case 3:
- set @maxCDye, $@kedy_clothJSN;
- break;
- case 4:
- set @maxCDye, $@kedy_clothJWED;
- break;
- }
- do {
- if ($@kedy_enableHairstyle) {
- set @kmenu, select(
- "- Return",
- "- Change hairstyle (current is "+getlook(1)+"/max is "+$@kedy_styles+")",
- "- Change hairstyle (by wheel)",
- "- Dye hair (current is "+getlook(6)+"/max is "+$@kedy_hair+")",
- "- Dye hair (by wheel)",
- "- Dye clothes (current is "+getlook(7)+"/max is "+@maxCDye+")",
- "- Dye clothes (by wheel)"
- );
- } else {
- set @kmenu, select(
- "- Return",
- "- Dye hair (current is "+getlook(6)+"/max is "+$@kedy_hair+")",
- "- Dye hair (by wheel)",
- "- Dye clothes (current is "+getlook(7)+"/max is "+@maxCDye+")",
- "- Dye clothes (by wheel)"
- );
- if (@kmenu > 1)
- set @kmenu, @kmenu+2;
- }
- switch (@kmenu) {
- case 2: //Hair Style Input
- SF_inputpalette 1,$@kedy_styles;
- break;
- case 3: //Hair Style Wheel
- SF_wheelpalette 1,$@kedy_styles;
- break;
- case 4: //Hair Dye Input
- SF_inputpalette 6,$@kedy_hair;
- break;
- case 5: //Hair Dye Wheel
- SF_wheelpalette 6,$@kedy_hair;
- break;
- case 6: //Clothes Input
- SF_inputpalette 7,@maxCDye;
- break;
- case 7: //Clothes Wheel
- SF_wheelpalette 7,@maxCDye ;
- break;
- }
- } while (@kmenu > 1);
- return;
-
-//Subfunction: SF_inputpalette(int part, int maxPalette)
-//Sets a palette from the user's request.
-function SF_inputpalette {
- input @pal;
- if (@pal < 0 || @pal > getarg(1)) {
- callfunc "F_keIntro", e_swt2, "Sorry, we do not have that dye available.";
- return;
- }
- setlook getarg(0),@pal;
- emotion e_lv;
-} //SF_ end
-
-//Subfunction: SF_wheelpalette(int part, int maxPalette)
-//Sets a palette through browsing.
-function SF_wheelpalette {
- set @loc, getarg(0);
- set @max, getarg(1);
- set @pal, getlook(@loc);
- set @dir, 1;
- do {
- if (@dir > 0)
- set @submenu, select(
- "Next",
- "Previous",
- "Done (current is "+@pal+")"
- );
- else
- set @submenu, select(
- "Previous",
- "Next",
- "Done (current is "+@pal+")"
- );
- switch (@submenu) {
- case 2: //Swap direction
- set @dir, @dir*-1;
- case 1:
- set @pal, @pal+@dir;
- if (@pal < 0)
- set @pal, @max;
- else if (@pal > @max)
- set @pal, 0;
- setlook @loc,@pal;
- }
- } while (@submenu != 3);
- emotion e_lv2;
-} //SF_ end
-
-}
+//===== eAthena Script ======================================= +//= Kafra Express - Stylist Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 1.9 +//===== Compatible With: ===================================== +//= eAthena SVN 3424+ +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= Offers dying of hair, clothes and hair-style adjusts +//===== Additional Comments: ================================= +//= See config.txt for configuration. +//============================================================ + +- script keInit_dye -1,{ +OnInit: //Load Config + donpcevent "keConfig::OnLoadDye"; + end; +} + +function script F_keStylist { + + function SF_inputpalette; + function SF_wheelpalette; + + set @jobClass,callfunc("GF_getJobLevel",class); + set @maxCDye,0; + + switch (@jobClass) { + case 0: + set @maxCDye, $@kedy_clothJN; + break; + case 1: + set @maxCDye, $@kedy_clothJ1ST; + break; + case 2: + set @maxCDye, $@kedy_clothJ2ND; + break; + case 3: + set @maxCDye, $@kedy_clothJSN; + break; + case 4: + set @maxCDye, $@kedy_clothJWED; + break; + } + do { + if ($@kedy_enableHairstyle) { + set @kmenu, select( + "- Return", + "- Change hairstyle (current is "+getlook(1)+"/max is "+$@kedy_styles+")", + "- Change hairstyle (by wheel)", + "- Dye hair (current is "+getlook(6)+"/max is "+$@kedy_hair+")", + "- Dye hair (by wheel)", + "- Dye clothes (current is "+getlook(7)+"/max is "+@maxCDye+")", + "- Dye clothes (by wheel)" + ); + } else { + set @kmenu, select( + "- Return", + "- Dye hair (current is "+getlook(6)+"/max is "+$@kedy_hair+")", + "- Dye hair (by wheel)", + "- Dye clothes (current is "+getlook(7)+"/max is "+@maxCDye+")", + "- Dye clothes (by wheel)" + ); + if (@kmenu > 1) + set @kmenu, @kmenu+2; + } + switch (@kmenu) { + case 2: //Hair Style Input + SF_inputpalette 1,$@kedy_styles; + break; + case 3: //Hair Style Wheel + SF_wheelpalette 1,$@kedy_styles; + break; + case 4: //Hair Dye Input + SF_inputpalette 6,$@kedy_hair; + break; + case 5: //Hair Dye Wheel + SF_wheelpalette 6,$@kedy_hair; + break; + case 6: //Clothes Input + SF_inputpalette 7,@maxCDye; + break; + case 7: //Clothes Wheel + SF_wheelpalette 7,@maxCDye ; + break; + } + } while (@kmenu > 1); + return; + +//Subfunction: SF_inputpalette(int part, int maxPalette) +//Sets a palette from the user's request. +function SF_inputpalette { + input @pal; + if (@pal < 0 || @pal > getarg(1)) { + callfunc "F_keIntro", e_swt2, "Sorry, we do not have that dye available."; + return; + } + setlook getarg(0),@pal; + emotion e_lv; +} //SF_ end + +//Subfunction: SF_wheelpalette(int part, int maxPalette) +//Sets a palette through browsing. +function SF_wheelpalette { + set @loc, getarg(0); + set @max, getarg(1); + set @pal, getlook(@loc); + set @dir, 1; + do { + if (@dir > 0) + set @submenu, select( + "Next", + "Previous", + "Done (current is "+@pal+")" + ); + else + set @submenu, select( + "Previous", + "Next", + "Done (current is "+@pal+")" + ); + switch (@submenu) { + case 2: //Swap direction + set @dir, @dir*-1; + case 1: + set @pal, @pal+@dir; + if (@pal < 0) + set @pal, @max; + else if (@pal > @max) + set @pal, 0; + setlook @loc,@pal; + } + } while (@submenu != 3); + emotion e_lv2; +} //SF_ end + +} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_jobchange.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_jobchange.txt index 0093fe2ae..766918fd0 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_jobchange.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_jobchange.txt @@ -1,533 +1,533 @@ -//===== eAthena Script =======================================
-//= Kafra Express - Job Changing Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 3.5
-//===== Compatible With: =====================================
-//= eAthena SVN R3579+
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= Enables job changing through the class trees.
-//= Novice -> 1st Class, 1st Class -> 2nd Class, rebirths, etc
-//===== Additional Comments: =================================
-//= See config.txt for configuration.
-//= When using Upper Job policy, previous jobs are stored in
-//= the server wide variables kej_class1 and kej_class2
-//============================================================
-
-- script keInit_jobchange -1,{
-OnInit: //Load Config
- donpcevent "keConfig::OnLoadJobChange";
- end;
-}
-
-function script F_keJobChange {
-
- function SF_to1stJob;
- function SF_to2ndJob;
- function SF_getJobNames;
- function SF_testChangeJob;
- function SF_changeJob;
-
- set @job, callfunc("GF_getJobLevel", class);
- set @upper, Upper; //Because it is changed when rebirthing
- set @reset, 0; //Base Level is reset only on rebirths
- switch (@job) {
- case 0: //Novices
- if ($@kejc_skipNovice)
- set @jobLv, 0; //jobLv is used again when checking for S.Novice's base level restriction.
- else
- set @jobLv, 10;
- if (SF_testChangeJob(0,0,@jobLv))
- SF_to1stJob(0);
- break;
- case 1: //First Classes
- if (SF_testChangeJob($@kejc_cost2ND,$@kejc_base2ND,$@kejc_job2ND))
- SF_to2ndJob();
- break;
- case 2: //Second Classes
- if (Upper == 0 && BaseClass != Job_Taekwon) {
- if (SF_testChangeJob($@kejc_costRebirth,$@kejc_baseRebirth,$@kejc_jobRebirth)) {
- set @upper, 1;
- if ($@kejc_skipNovice)
- SF_to1stJob(1);
- else
- SF_changeJob @job,Upper,Job_Novice,1,0,0,$@kejc_costRebirth,1,$@kejc_rebirthReset;
- }
- break;
- }
- default: //Dead End
- callfunc "F_keIntro", e_swt2, "I cannot change you from your current job.";
- break;
- }
- return;
-
-//Handles changing to 1st job.
-function SF_to1stJob {
- do {
- set @submenu, 1;
- if (@upper == 1 && $@kejc_upperPolicy && kej_class1) {
- switch (kej_class1) {
- case Job_Acolyte:
- set @submenu, 2;
- break;
- case Job_Archer:
- set @submenu, 3;
- break;
- case Job_Mage:
- set @submenu, 4;
- break;
- case Job_Merchant:
- set @submenu, 5;
- break;
- case Job_Swordman:
- set @submenu, 6;
- break;
- case Job_Thief:
- set @submenu, 7;
- break;
- case Job_Taekwon:
- set @submenu, 8;
- break;
- }
- }
- if (@submenu == 1) {
- SF_getJobNames 8,Job_Acolyte,Job_Archer,Job_Mage,Job_Merchant,Job_Swordman,Job_Thief,Job_Taekwon,Job_SuperNovice;
- switch (@upper) {
- case 0: //All
- set @submenu, select(
- "- Cancel job change",
- "- "+@name1$,
- "- "+@name2$,
- "- "+@name3$,
- "- "+@name4$,
- "- "+@name5$,
- "- "+@name6$,
- "- "+@name7$,
- "- "+@name8$
- );
- break;
- case 1: //No Taekwon/S.Novice
- set @submenu, select(
- "- Cancel job change",
- "- "+@name1$,
- "- "+@name2$,
- "- "+@name3$,
- "- "+@name4$,
- "- "+@name5$,
- "- "+@name6$
- );
- break;
- case 2: //No Taekwon
- set @submenu, select(
- "- Cancel job change",
- "- "+@name1$,
- "- "+@name2$,
- "- "+@name3$,
- "- "+@name4$,
- "- "+@name5$,
- "- "+@name6$,
- "- "+@name8$
- );
- if (@submenu == 8)
- set @submenu, 9;
- break;
- }
- }
- switch (@submenu) {
- case 2: //Acolyte
- set @newJob,Job_Acolyte;
- set @weapon, $@kejc_wAcolyte;
- break;
- case 3: //Archer
- set @newJob,Job_Archer;
- set @weapon, $@kejc_wArcher;
- break;
- case 4: //Mage
- set @newJob,Job_Mage;
- set @weapon, $@kejc_wMage;
- break;
- case 5: //Merchant
- set @newJob,Job_Merchant;
- set @weapon, $@kejc_wMerchant;
- break;
- case 6: //Swordman
- set @newJob,Job_Swordman;
- set @weapon, $@kejc_wSwordman;
- break;
- case 7: //Thief
- set @newJob,Job_Thief;
- set @weapon, $@kejc_wThief;
- break;
- case 8: //Taekwon
- set @newJob,Job_Taekwon;
- set @weapon, $@kejc_wTaekwon;
- break;
- case 9: //S. Novice
- set @newJob,Job_SuperNovice;
- set @weapon, $@kejc_wSuperNovice;
- if (SF_testChangeJob(0,$@kejc_baseSN,@jobLv) == 0)
- return;
- break;
- }
- if (@submenu > 1) {
- if (getarg(0)) { //Skipping High Novice, charge rebirth costs.
- if (SF_changeJob(@job,Upper,@newJob,1,@weapon,0,$@kejc_costRebirth,2,$@kejc_rebirthReset))
- return;
- } else {
- if (SF_changeJob(@job,Upper,@newJob,@upper,@weapon,0,0,2,0))
- return;
- }
- }
- } while (@submenu > 1);
-}
-
-function SF_to2ndJob {
- do {
- set @submenu, 1;
- if (@upper == 1 && $@kejc_upperPolicy && kej_class2) {
- switch (kej_class2) {
- case Job_Priest:
- case Job_Hunter:
- case Job_Wizard:
- case Job_Blacksmith:
- case Job_Knight:
- case Job_Knight2:
- case Job_Assassin:
- case Job_Star_Gladiator:
- case Job_Star_Gladiator2:
- set @submenu, 2;
- break;
- case Job_Monk:
- case Job_Bard:
- case Job_Dancer:
- case Job_Sage:
- case Job_Alchem:
- case Job_Crusader:
- case Job_Crusader2:
- case Job_Rogue:
- case Job_Soul_Linker:
- set @submenu, 3;
- break;
- }
- }
- if (@submenu == 1) { //Fetch from menu.
- switch (BaseClass) {
- case Job_Acolyte:
- SF_getJobNames 2,Job_Priest,Job_Monk;
- break;
- case Job_Archer:
- SF_getJobNames 3,Job_Hunter,Job_Bard,Job_Dancer;
- if (sex == 0)
- set @name2$, @name3$;
- break;
- case Job_Mage:
- SF_getJobNames 2,Job_Wizard,Job_Sage;
- break;
- case Job_Merchant:
- SF_getJobNames 2,Job_Blacksmith,Job_Alchem;
- break;
- case Job_Swordman:
- SF_getJobNames 2,Job_Knight,Job_Crusader;
- break;
- case Job_Thief:
- SF_getJobNames 2,Job_Assassin,Job_Rogue;
- break;
- case Job_Taekwon:
- SF_getJobNames 2,Job_Star_Gladiator,Job_Soul_Linker;
- break;
- default:
- callfunc "F_keIntro", e_swt2, "I don't know how to change you from your current job.";
- return;
- }
- set @submenu, select(
- "- Cancel job change",
- "- "+@name1$,
- "- "+@name2$
- );
- }
- switch (BaseClass) {
- case Job_Acolyte:
- switch (@submenu) {
- case 2: //Priest
- set @newJob,Job_Priest;
- set @weapon,$@kejc_wPriest;
- set @weapon2,$@kejc_w2Priest;
- break;
- case 3: //Monk
- set @newJob,Job_Monk;
- set @weapon,$@kejc_wMonk;
- set @weapon2,$@kejc_w2Monk;
- break;
- }
- break;
- case Job_Archer:
- switch (@submenu) {
- case 2: //Hunter
- set @newJob,Job_Hunter;
- set @weapon,$@kejc_wHunter;
- set @weapon2,$@kejc_w2Hunter;
- break;
- case 3: //Bard/Dancer
- if (sex == 1) { //Bard
- set @newJob,Job_Bard;
- set @weapon,$@kejc_wBard;
- set @weapon2,$@kejc_w2Bard;
- } else { //Dancer
- set @newJob,Job_Dancer;
- set @weapon,$@kejc_wDancer;
- set @weapon2,$@kejc_w2Dancer;
- }
- break;
- }
- break;
- case Job_Mage:
- switch (@submenu) {
- case 2: //Wizard
- set @newJob,Job_Wizard;
- set @weapon,$@kejc_wWizard;
- set @weapon2,$@kejc_w2Wizard;
- break;
- case 3: //Sage
- set @newJob,Job_Sage;
- set @weapon,$@kejc_wSage;
- set @weapon2,$@kejc_w2Sage;
- break;
- }
- break;
- case Job_Merchant:
- switch (@submenu) {
- case 2: //Blacksmith
- set @newJob,Job_Blacksmith;
- set @weapon,$@kejc_wBlacksmith;
- set @weapon2,$@kejc_w2Blacksmith;
- break;
- case 3: //Alchemist
- set @newJob,Job_Alchem;
- set @weapon,$@kejc_wAlchemist;
- set @weapon2,$@kejc_w2Alchemist;
- break;
- }
- break;
- case Job_Swordman:
- switch (@submenu) {
- case 2: //Knight
- set @newJob,Job_Knight;
- set @weapon,$@kejc_wKnight;
- set @weapon2,$@kejc_w2Knight;
- break;
- case 3: //Crusader
- set @newJob,Job_Crusader;
- set @weapon,$@kejc_wCrusader;
- set @weapon2,$@kejc_w2Crusader;
- break;
- default:
- mes "uh oh";
- break;
- }
- break;
- case Job_Thief:
- switch (@submenu) {
- case 2: //Assassin
- set @newJob,Job_Assassin;
- set @weapon,$@kejc_wAssassin;
- set @weapon2,$@kejc_w2Assassin;
- break;
- case 3: //Rogue
- set @newJob,Job_Rogue;
- set @weapon,$@kejc_wRogue;
- set @weapon2,$@kejc_w2Rogue;
- break;
- }
- break;
- case Job_Taekwon:
- switch (@submenu) {
- case 2: //Star Gladiator
- set @newJob,Job_Star_Gladiator;
- set @weapon,$@kejc_wStarGladiator;
- set @weapon2,$@kejc_w2StarGladiator;
- break;
- case 3: //Soul Linker
- set @newJob,Job_Soul_Linker;
- set @weapon,$@kejc_wSoulLinker;
- set @weapon2,$@kejc_w2SoulLinker;
- break;
- }
- break;
- }
- if (@submenu > 1) {
- if (SF_changeJob(@job,Upper,@newJob,@upper,@weapon,@weapon2,$@kejc_cost2ND,0,0))
- return;
- }
- } while (@submenu > 1);
-}
-
-//SubFunction: SF_testChangeJob(Zeny, BaseLv, JobLv)
-//Function that checks if the player qualifies for job changing.
-function SF_testChangeJob {
- set @fail, 0;
- if (Zeny < getarg(0))
- set @fail, 1;
- if (BaseLevel < getarg(1))
- set @fail, @fail+2;
- if (JobLevel < getarg(2))
- set @fail, @fail+4;
- if (@fail > 0) {
- if (@fail&1)
- mes "You need "+getarg(0)+"z for the conversion process.";
- if (@fail&2)
- mes "You need to be at least Lv "+getarg(1)+".";
- if (@fail&4)
- mes "You need at least job Lv "+getarg(2)+".";
- callfunc "F_keIntro", e_pif, "Sorry, you don't qualify for a job change yet.";
- return 0;
- }
-
- if (SkillPoint > 0 && $@kejc_skillsPolicy == 0) {
- callfunc "F_keIntro", e_dots, "Sorry, use your remaining Skill points before being able to change class.";
- return 0;
- }
- return 1;
-}
-
-//SubFunction: SF_changeJob (CurrentJobLv, CurrentJobType, NewJobBase, NewJobType
-//Weapon, Weapon2, Zeny, WipeSkills, ResetLv)
-//Attempts to change to the Jobgiven.
-//CurrentJobLv is 0-3 (novice, 1st class, 2nd class, s.novice)
-//Type is 0-2 (Normal, Advanced Class, Baby)
-//Weapon is the ID of the weapon to grant
-//Weapon2 is the alternative weapon granted when your job level is above $@kejc_wBonusLv
-//Zeny is the money required (if negative, it is money awarded)
-//WipeSkills if 1, indicates that skills should be wiped,
-//if 2, it means basic skills have to be given back
-//Reset Level indicates the base lv must be reset to 1.
-//Note: Zeny/Base/Job requirements should had been checked with SF_testChangeJob already!
-function SF_changeJob {
- set @newjob,getarg(2);
- set @newtype,getarg(3);
- set @weapon,getarg(4);
- set @weapon2,getarg(5);
- set @cost,getarg(6);
- set @wipeSkill,getarg(7);
- set @resetLv,getarg(8);
-
- set @jobStr$, callfunc("GF_getJobName2",@newjob, @newtype);
- if (@wipeSkill == 0 && SkillPoint > 0 && $@kejc_skillsPolicy == 1) {
- set @selection, select(
- "- Do not change yet",
- "- Change to "+@jobStr$+" (skill points lost)",
- "- View details"
- );
- } else {
- set @selection, select(
- "- Cancel",
- "- Change to "+@jobStr$,
- "- View details"
- );
- }
- switch (@selection) {
- case 3: //Details
- mes "Okay.. listen up:";
- next;
- mes "["+@name$+"]";
- mes "Changing to "+@jobStr$+" now means:";
- if (@wipeSkill == 0 && SkillPoint > 0 && $@kejc_skillsPolicy == 1)
- mes "- You will lose your "+SkillPoint+" unused skill points.";
- else if (@wipeSkill == 1)
- mes "- You will lose all your skills.";
- if (@resetLv)
- mes "- Your base level will be reset to 1.";
- if (@cost > 0)
- mes "- You will be charged "+@cost+"z.";
- else if (@cost < 0)
- mes "- You will be aided with "+(0-@cost)+"z.";
- if (@weapon > 0) {
- if (@weapon2 > 0 && $@kejc_wBonusLv) {
- if (JobLevel < $@kejc_wBonusLv) {
- mes "- You will receive a "+getitemname(@weapon)+"["+getitemslots(@weapon)+"].";
- mes "- If you wait until Job Lv"+$@kejc_wBonusLv+", you can receive instead a "+getitemname(@weapon2)+"["+getitemslots(@weapon)+"].";
- } else {
- mes "- You will receive a "+getitemname(@weapon2)+"["+getitemslots(@weapon)+"] for reaching Job Lv"+$@kejc_wBonusLv+".";
- }
- } else
- mes "- You will receive a "+getitemname(@weapon)+".";
- }
- mes "So... will you change?";
- if (select(
- "- Cancel",
- "- Change to "+@jobStr$
- ) != 2) {
- callfunc "F_keIntro", e_dots, "...alright.";
- return 0;
- }
- callfunc "F_keIntro", -1, "Enjoy your new Job.";
- case 2: //Change
- //Set/Unset job path variables as needed.
- if($@kejc_upperPolicy) {
- set @class,getarg(0);
- set @type, getarg(1);
- if(@class == 1 && @type == 0)
- set kej_class1,class; //Advancing to second class, so...
- if(@class == 2)
- set kej_class2,class; //Only way of being here is by doing a rebirth
- if(@type > 0)
- set kej_class1,0; //Clear when one is a high class
- if(@type > 0 && @class == 1)
- set kej_class2,0; //Clear when leaving high 1st class
- }
- if (@resetLv) {
- jobchange Job_Novice_High; //Done to give players those 100 points from High classes
- resetlvl(1);
- }
- if (@wipeSkill) {
- resetskill;
- setoption(0);
- set SkillPoint,0;
- } else if ($@kejc_skillsPolicy == 1)
- set SkillPoint,0;
- if (@wipeSkill>1)
- skill 1,9,0;
- if($@kejc_resetDye)
- setlook 7,0;
- jobchange @newjob, @newtype;
- if ($@kejc_announce)
- announce strcharinfo(0)+" has been promoted to "+@jobStr$+"!",8;
- set Zeny,Zeny-@cost;
- if ($@kejc_weaponPolicy && @weapon > 0) {
- if ($@kejc_wBonusLv && @weapon2 > 0) {
- if (JobLevel < $@kejc_wBonusLv)
- getitem @weapon,1;
- else
- getitem @weapon2,1;
- } else
- getitem @weapon,1;
- }
- emotion e_grat;
- return 1;
- default: //Cancel...
- callfunc "F_keIntro", e_dots, "...alright.";
- return 0;
- }
-}
-//SubFunction: SF_getJobNames(Qty, Jobid1, Jobid2,...)
-//Workaround until eA gets a fix for the bug where you can't use callfunc or
-//callsub within a menu
-function SF_getJobNames {
- switch (getarg(0)) {
- case 8:
- set @name8$, callfunc("GF_getJobName2",getarg(8),@upper);
- set @name7$, callfunc("GF_getJobName2",getarg(7),@upper);
- set @name6$, callfunc("GF_getJobName2",getarg(6),@upper);
- set @name5$, callfunc("GF_getJobName2",getarg(5),@upper);
- set @name4$, callfunc("GF_getJobName2",getarg(4),@upper);
- case 3:
- set @name3$, callfunc("GF_getJobName2",getarg(3),@upper);
- case 2:
- set @name2$, callfunc("GF_getJobName2",getarg(2),@upper);
- set @name1$, callfunc("GF_getJobName2",getarg(1),@upper);
- }
- return;
-}
-
-}
+//===== eAthena Script ======================================= +//= Kafra Express - Job Changing Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 3.5 +//===== Compatible With: ===================================== +//= eAthena SVN R3579+ +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= Enables job changing through the class trees. +//= Novice -> 1st Class, 1st Class -> 2nd Class, rebirths, etc +//===== Additional Comments: ================================= +//= See config.txt for configuration. +//= When using Upper Job policy, previous jobs are stored in +//= the server wide variables kej_class1 and kej_class2 +//============================================================ + +- script keInit_jobchange -1,{ +OnInit: //Load Config + donpcevent "keConfig::OnLoadJobChange"; + end; +} + +function script F_keJobChange { + + function SF_to1stJob; + function SF_to2ndJob; + function SF_getJobNames; + function SF_testChangeJob; + function SF_changeJob; + + set @job, callfunc("GF_getJobLevel", class); + set @upper, Upper; //Because it is changed when rebirthing + set @reset, 0; //Base Level is reset only on rebirths + switch (@job) { + case 0: //Novices + if ($@kejc_skipNovice) + set @jobLv, 0; //jobLv is used again when checking for S.Novice's base level restriction. + else + set @jobLv, 10; + if (SF_testChangeJob(0,0,@jobLv)) + SF_to1stJob(0); + break; + case 1: //First Classes + if (SF_testChangeJob($@kejc_cost2ND,$@kejc_base2ND,$@kejc_job2ND)) + SF_to2ndJob(); + break; + case 2: //Second Classes + if (Upper == 0 && BaseClass != Job_Taekwon) { + if (SF_testChangeJob($@kejc_costRebirth,$@kejc_baseRebirth,$@kejc_jobRebirth)) { + set @upper, 1; + if ($@kejc_skipNovice) + SF_to1stJob(1); + else + SF_changeJob @job,Upper,Job_Novice,1,0,0,$@kejc_costRebirth,1,$@kejc_rebirthReset; + } + break; + } + default: //Dead End + callfunc "F_keIntro", e_swt2, "I cannot change you from your current job."; + break; + } + return; + +//Handles changing to 1st job. +function SF_to1stJob { + do { + set @submenu, 1; + if (@upper == 1 && $@kejc_upperPolicy && kej_class1) { + switch (kej_class1) { + case Job_Acolyte: + set @submenu, 2; + break; + case Job_Archer: + set @submenu, 3; + break; + case Job_Mage: + set @submenu, 4; + break; + case Job_Merchant: + set @submenu, 5; + break; + case Job_Swordman: + set @submenu, 6; + break; + case Job_Thief: + set @submenu, 7; + break; + case Job_Taekwon: + set @submenu, 8; + break; + } + } + if (@submenu == 1) { + SF_getJobNames 8,Job_Acolyte,Job_Archer,Job_Mage,Job_Merchant,Job_Swordman,Job_Thief,Job_Taekwon,Job_SuperNovice; + switch (@upper) { + case 0: //All + set @submenu, select( + "- Cancel job change", + "- "+@name1$, + "- "+@name2$, + "- "+@name3$, + "- "+@name4$, + "- "+@name5$, + "- "+@name6$, + "- "+@name7$, + "- "+@name8$ + ); + break; + case 1: //No Taekwon/S.Novice + set @submenu, select( + "- Cancel job change", + "- "+@name1$, + "- "+@name2$, + "- "+@name3$, + "- "+@name4$, + "- "+@name5$, + "- "+@name6$ + ); + break; + case 2: //No Taekwon + set @submenu, select( + "- Cancel job change", + "- "+@name1$, + "- "+@name2$, + "- "+@name3$, + "- "+@name4$, + "- "+@name5$, + "- "+@name6$, + "- "+@name8$ + ); + if (@submenu == 8) + set @submenu, 9; + break; + } + } + switch (@submenu) { + case 2: //Acolyte + set @newJob,Job_Acolyte; + set @weapon, $@kejc_wAcolyte; + break; + case 3: //Archer + set @newJob,Job_Archer; + set @weapon, $@kejc_wArcher; + break; + case 4: //Mage + set @newJob,Job_Mage; + set @weapon, $@kejc_wMage; + break; + case 5: //Merchant + set @newJob,Job_Merchant; + set @weapon, $@kejc_wMerchant; + break; + case 6: //Swordman + set @newJob,Job_Swordman; + set @weapon, $@kejc_wSwordman; + break; + case 7: //Thief + set @newJob,Job_Thief; + set @weapon, $@kejc_wThief; + break; + case 8: //Taekwon + set @newJob,Job_Taekwon; + set @weapon, $@kejc_wTaekwon; + break; + case 9: //S. Novice + set @newJob,Job_SuperNovice; + set @weapon, $@kejc_wSuperNovice; + if (SF_testChangeJob(0,$@kejc_baseSN,@jobLv) == 0) + return; + break; + } + if (@submenu > 1) { + if (getarg(0)) { //Skipping High Novice, charge rebirth costs. + if (SF_changeJob(@job,Upper,@newJob,1,@weapon,0,$@kejc_costRebirth,2,$@kejc_rebirthReset)) + return; + } else { + if (SF_changeJob(@job,Upper,@newJob,@upper,@weapon,0,0,2,0)) + return; + } + } + } while (@submenu > 1); +} + +function SF_to2ndJob { + do { + set @submenu, 1; + if (@upper == 1 && $@kejc_upperPolicy && kej_class2) { + switch (kej_class2) { + case Job_Priest: + case Job_Hunter: + case Job_Wizard: + case Job_Blacksmith: + case Job_Knight: + case Job_Knight2: + case Job_Assassin: + case Job_Star_Gladiator: + case Job_Star_Gladiator2: + set @submenu, 2; + break; + case Job_Monk: + case Job_Bard: + case Job_Dancer: + case Job_Sage: + case Job_Alchem: + case Job_Crusader: + case Job_Crusader2: + case Job_Rogue: + case Job_Soul_Linker: + set @submenu, 3; + break; + } + } + if (@submenu == 1) { //Fetch from menu. + switch (BaseClass) { + case Job_Acolyte: + SF_getJobNames 2,Job_Priest,Job_Monk; + break; + case Job_Archer: + SF_getJobNames 3,Job_Hunter,Job_Bard,Job_Dancer; + if (sex == 0) + set @name2$, @name3$; + break; + case Job_Mage: + SF_getJobNames 2,Job_Wizard,Job_Sage; + break; + case Job_Merchant: + SF_getJobNames 2,Job_Blacksmith,Job_Alchem; + break; + case Job_Swordman: + SF_getJobNames 2,Job_Knight,Job_Crusader; + break; + case Job_Thief: + SF_getJobNames 2,Job_Assassin,Job_Rogue; + break; + case Job_Taekwon: + SF_getJobNames 2,Job_Star_Gladiator,Job_Soul_Linker; + break; + default: + callfunc "F_keIntro", e_swt2, "I don't know how to change you from your current job."; + return; + } + set @submenu, select( + "- Cancel job change", + "- "+@name1$, + "- "+@name2$ + ); + } + switch (BaseClass) { + case Job_Acolyte: + switch (@submenu) { + case 2: //Priest + set @newJob,Job_Priest; + set @weapon,$@kejc_wPriest; + set @weapon2,$@kejc_w2Priest; + break; + case 3: //Monk + set @newJob,Job_Monk; + set @weapon,$@kejc_wMonk; + set @weapon2,$@kejc_w2Monk; + break; + } + break; + case Job_Archer: + switch (@submenu) { + case 2: //Hunter + set @newJob,Job_Hunter; + set @weapon,$@kejc_wHunter; + set @weapon2,$@kejc_w2Hunter; + break; + case 3: //Bard/Dancer + if (sex == 1) { //Bard + set @newJob,Job_Bard; + set @weapon,$@kejc_wBard; + set @weapon2,$@kejc_w2Bard; + } else { //Dancer + set @newJob,Job_Dancer; + set @weapon,$@kejc_wDancer; + set @weapon2,$@kejc_w2Dancer; + } + break; + } + break; + case Job_Mage: + switch (@submenu) { + case 2: //Wizard + set @newJob,Job_Wizard; + set @weapon,$@kejc_wWizard; + set @weapon2,$@kejc_w2Wizard; + break; + case 3: //Sage + set @newJob,Job_Sage; + set @weapon,$@kejc_wSage; + set @weapon2,$@kejc_w2Sage; + break; + } + break; + case Job_Merchant: + switch (@submenu) { + case 2: //Blacksmith + set @newJob,Job_Blacksmith; + set @weapon,$@kejc_wBlacksmith; + set @weapon2,$@kejc_w2Blacksmith; + break; + case 3: //Alchemist + set @newJob,Job_Alchem; + set @weapon,$@kejc_wAlchemist; + set @weapon2,$@kejc_w2Alchemist; + break; + } + break; + case Job_Swordman: + switch (@submenu) { + case 2: //Knight + set @newJob,Job_Knight; + set @weapon,$@kejc_wKnight; + set @weapon2,$@kejc_w2Knight; + break; + case 3: //Crusader + set @newJob,Job_Crusader; + set @weapon,$@kejc_wCrusader; + set @weapon2,$@kejc_w2Crusader; + break; + default: + mes "uh oh"; + break; + } + break; + case Job_Thief: + switch (@submenu) { + case 2: //Assassin + set @newJob,Job_Assassin; + set @weapon,$@kejc_wAssassin; + set @weapon2,$@kejc_w2Assassin; + break; + case 3: //Rogue + set @newJob,Job_Rogue; + set @weapon,$@kejc_wRogue; + set @weapon2,$@kejc_w2Rogue; + break; + } + break; + case Job_Taekwon: + switch (@submenu) { + case 2: //Star Gladiator + set @newJob,Job_Star_Gladiator; + set @weapon,$@kejc_wStarGladiator; + set @weapon2,$@kejc_w2StarGladiator; + break; + case 3: //Soul Linker + set @newJob,Job_Soul_Linker; + set @weapon,$@kejc_wSoulLinker; + set @weapon2,$@kejc_w2SoulLinker; + break; + } + break; + } + if (@submenu > 1) { + if (SF_changeJob(@job,Upper,@newJob,@upper,@weapon,@weapon2,$@kejc_cost2ND,0,0)) + return; + } + } while (@submenu > 1); +} + +//SubFunction: SF_testChangeJob(Zeny, BaseLv, JobLv) +//Function that checks if the player qualifies for job changing. +function SF_testChangeJob { + set @fail, 0; + if (Zeny < getarg(0)) + set @fail, 1; + if (BaseLevel < getarg(1)) + set @fail, @fail+2; + if (JobLevel < getarg(2)) + set @fail, @fail+4; + if (@fail > 0) { + if (@fail&1) + mes "You need "+getarg(0)+"z for the conversion process."; + if (@fail&2) + mes "You need to be at least Lv "+getarg(1)+"."; + if (@fail&4) + mes "You need at least job Lv "+getarg(2)+"."; + callfunc "F_keIntro", e_pif, "Sorry, you don't qualify for a job change yet."; + return 0; + } + + if (SkillPoint > 0 && $@kejc_skillsPolicy == 0) { + callfunc "F_keIntro", e_dots, "Sorry, use your remaining Skill points before being able to change class."; + return 0; + } + return 1; +} + +//SubFunction: SF_changeJob (CurrentJobLv, CurrentJobType, NewJobBase, NewJobType +//Weapon, Weapon2, Zeny, WipeSkills, ResetLv) +//Attempts to change to the Jobgiven. +//CurrentJobLv is 0-3 (novice, 1st class, 2nd class, s.novice) +//Type is 0-2 (Normal, Advanced Class, Baby) +//Weapon is the ID of the weapon to grant +//Weapon2 is the alternative weapon granted when your job level is above $@kejc_wBonusLv +//Zeny is the money required (if negative, it is money awarded) +//WipeSkills if 1, indicates that skills should be wiped, +//if 2, it means basic skills have to be given back +//Reset Level indicates the base lv must be reset to 1. +//Note: Zeny/Base/Job requirements should had been checked with SF_testChangeJob already! +function SF_changeJob { + set @newjob,getarg(2); + set @newtype,getarg(3); + set @weapon,getarg(4); + set @weapon2,getarg(5); + set @cost,getarg(6); + set @wipeSkill,getarg(7); + set @resetLv,getarg(8); + + set @jobStr$, callfunc("GF_getJobName2",@newjob, @newtype); + if (@wipeSkill == 0 && SkillPoint > 0 && $@kejc_skillsPolicy == 1) { + set @selection, select( + "- Do not change yet", + "- Change to "+@jobStr$+" (skill points lost)", + "- View details" + ); + } else { + set @selection, select( + "- Cancel", + "- Change to "+@jobStr$, + "- View details" + ); + } + switch (@selection) { + case 3: //Details + mes "Okay.. listen up:"; + next; + mes "["+@name$+"]"; + mes "Changing to "+@jobStr$+" now means:"; + if (@wipeSkill == 0 && SkillPoint > 0 && $@kejc_skillsPolicy == 1) + mes "- You will lose your "+SkillPoint+" unused skill points."; + else if (@wipeSkill == 1) + mes "- You will lose all your skills."; + if (@resetLv) + mes "- Your base level will be reset to 1."; + if (@cost > 0) + mes "- You will be charged "+@cost+"z."; + else if (@cost < 0) + mes "- You will be aided with "+(0-@cost)+"z."; + if (@weapon > 0) { + if (@weapon2 > 0 && $@kejc_wBonusLv) { + if (JobLevel < $@kejc_wBonusLv) { + mes "- You will receive a "+getitemname(@weapon)+"["+getitemslots(@weapon)+"]."; + mes "- If you wait until Job Lv"+$@kejc_wBonusLv+", you can receive instead a "+getitemname(@weapon2)+"["+getitemslots(@weapon)+"]."; + } else { + mes "- You will receive a "+getitemname(@weapon2)+"["+getitemslots(@weapon)+"] for reaching Job Lv"+$@kejc_wBonusLv+"."; + } + } else + mes "- You will receive a "+getitemname(@weapon)+"."; + } + mes "So... will you change?"; + if (select( + "- Cancel", + "- Change to "+@jobStr$ + ) != 2) { + callfunc "F_keIntro", e_dots, "...alright."; + return 0; + } + callfunc "F_keIntro", -1, "Enjoy your new Job."; + case 2: //Change + //Set/Unset job path variables as needed. + if($@kejc_upperPolicy) { + set @class,getarg(0); + set @type, getarg(1); + if(@class == 1 && @type == 0) + set kej_class1,class; //Advancing to second class, so... + if(@class == 2) + set kej_class2,class; //Only way of being here is by doing a rebirth + if(@type > 0) + set kej_class1,0; //Clear when one is a high class + if(@type > 0 && @class == 1) + set kej_class2,0; //Clear when leaving high 1st class + } + if (@resetLv) { + jobchange Job_Novice_High; //Done to give players those 100 points from High classes + resetlvl(1); + } + if (@wipeSkill) { + resetskill; + setoption(0); + set SkillPoint,0; + } else if ($@kejc_skillsPolicy == 1) + set SkillPoint,0; + if (@wipeSkill>1) + skill 1,9,0; + if($@kejc_resetDye) + setlook 7,0; + jobchange @newjob, @newtype; + if ($@kejc_announce) + announce strcharinfo(0)+" has been promoted to "+@jobStr$+"!",8; + set Zeny,Zeny-@cost; + if ($@kejc_weaponPolicy && @weapon > 0) { + if ($@kejc_wBonusLv && @weapon2 > 0) { + if (JobLevel < $@kejc_wBonusLv) + getitem @weapon,1; + else + getitem @weapon2,1; + } else + getitem @weapon,1; + } + emotion e_grat; + return 1; + default: //Cancel... + callfunc "F_keIntro", e_dots, "...alright."; + return 0; + } +} +//SubFunction: SF_getJobNames(Qty, Jobid1, Jobid2,...) +//Workaround until eA gets a fix for the bug where you can't use callfunc or +//callsub within a menu +function SF_getJobNames { + switch (getarg(0)) { + case 8: + set @name8$, callfunc("GF_getJobName2",getarg(8),@upper); + set @name7$, callfunc("GF_getJobName2",getarg(7),@upper); + set @name6$, callfunc("GF_getJobName2",getarg(6),@upper); + set @name5$, callfunc("GF_getJobName2",getarg(5),@upper); + set @name4$, callfunc("GF_getJobName2",getarg(4),@upper); + case 3: + set @name3$, callfunc("GF_getJobName2",getarg(3),@upper); + case 2: + set @name2$, callfunc("GF_getJobName2",getarg(2),@upper); + set @name1$, callfunc("GF_getJobName2",getarg(1),@upper); + } + return; +} + +} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_jobswap.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_jobswap.txt index 59311cca5..8d91242cc 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_jobswap.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_jobswap.txt @@ -1,418 +1,418 @@ -//===== eAthena Script =======================================
-//= Kafra Express - Job Swapping Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 3.4
-//===== Compatible With: =====================================
-//= eAthena SVN R7896+
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= Enables job changing among classes of the same 'type'
-//= (ie among 1st classes, or among 2nd classes)
-//===== Additional Comments: =================================
-//= See config.txt for configuration.
-//= * The previous Job, when enabled, is stored in:
-//= kej_prev_job (job id)
-//= kej_prev_joblv (job level)
-//= kej_prev_skills (skill count)
-//= kej_prev_dye (cloth dye)
-//============================================================
-
-- script keInit_jobSwap -1,{
-OnInit: //Load Config
- donpcevent "keConfig::OnLoadJobSwap";
- end;
-}
-
-function script F_keJobSwap {
-
-function SF_canRevert;
-function SF_canSwitch;
-function SF_revertJob;
-function SF_switch;
-function SF_calcSwapCost;
-function SF_testSwap;
-function SF_swapJob;
-function SF_getJobNames;
-
- set @thisLevel, callfunc("GF_getJobLevel", Class);
-
- set @prevId, kej_prev_job;
- set @prevLv, kej_prev_joblv;
- set @prevLevel, 0;
- set @prevType, 0;
-
- if ($@kejs_revertPolicy && @prevId && @prevLv) {
- set @prevLevel, callfunc("GF_getJobLevel", @prevId);
- set @prevType, callfunc("GF_getJobType", @prevId);
- }
-
- if (SF_canRevert())
- { //Qualifies for Reverting
- do {
- set @revertmenu, select(
- "- Return",
- "- Return to previous class",
- "- Change into another class"
- );
- switch (@revertmenu) {
- case 2: //Revert
- if (SF_revertJob())
- return;
- break;
- case 3: //Switch
- if (SF_switch() == 0)
- return;
- break;
- }
- } while (@revertmenu > 1);
- return;
- }
- if (SF_canSwitch())
- {
- SF_switch();
- return;
- }
-
- callfunc "F_keIntro", e_swt2, "There are no available jobs of your level.";
- return;
-
-//SubFunction SF_canRevert, specifies if the character can revert to previous job.
-function SF_canRevert {
- if ($@kejs_revertPolicy == 0 || @prevId == 0 || (Upper == 2 && @prevType != 2))
- return 0;
- if((@thisLevel == @prevLevel && Upper == @prevType) || $@kejs_revertPolicy == 2)
- return 1;
- if ($@kejs_SNpolicy && @prevType == Upper && ((@prevLevel == 3 && @thisLevel == 1) || (@prevLevel == 1 && @thisLevel == 3)))
- return 1;
- return 0;
-}
-
-//SubFunction SF_canSwitch, specifies if character can change to another job.
-function SF_canSwitch {
- if (@thisLevel == 3)
- return $@kejs_SNpolicy;
- if (@thisLevel == 1 || @thisLevel == 2)
- return 1;
- return 0;
-}
-
-//Sub Function SF_switch. Presents the switch job menu. Returns 1 only if the
-//menu was left by picking "Cancel".
-function SF_switch {
- switch (@thisLevel) {
- case 1:
- case 3: //First Classes
- set @cost, SF_calcSwapCost($@kejs_job1ST, $@kejs_cost1ST, $@kejs_discount1ST);
- set @preserve, $@kejs_preserve1ST;
- if (SF_testSwap($@kejs_job1ST, @cost)) {
- do {
- if ($@kejs_SNpolicy && Upper != 1) { //S. Novice Menu
- SF_getJobNames 7,Job_Acolyte,Job_Archer,Job_Mage,Job_Merchant,Job_Swordman,Job_Thief,Job_SuperNovice;
- set @kmenu, select(
- "- Cancel job swap",
- "- "+@name1$,"- "+@name2$,"- "+@name3$,"- "+@name4$,"- "+@name5$,"- "+@name6$,"- "+@name7$
- );
- } else {
- SF_getJobNames 6,Job_Acolyte,Job_Archer,Job_Mage,Job_Merchant,Job_Swordman,Job_Thief;
- set @kmenu, select(
- "- Cancel job swap",
- "- "+@name1$,"- "+@name2$,"- "+@name3$,"- "+@name4$,"- "+@name5$,"- "+@name6$
- );
- }
- switch (@kmenu) {
- case 2: //Acolyte
- if (SF_swapJob(callfunc("GF_getJobId", Job_Acolyte, Upper),@cost,@preserve))
- return 0;
- break;
- case 3: //Archer
- if (SF_swapJob(callfunc("GF_getJobId", Job_Archer, Upper),@cost,@preserve))
- return 0;
- break;
- case 4: //Mage
- if (SF_swapJob(callfunc("GF_getJobId", Job_Mage, Upper),@cost,@preserve))
- return 0;
- break;
- case 5: //Merchant
- if (SF_swapJob(callfunc("GF_getJobId", Job_Merchant, Upper),@cost,@preserve))
- return 0;
- break;
- case 6: //Swordman
- if (SF_swapJob(callfunc("GF_getJobId", Job_Swordman, Upper),@cost,@preserve))
- return 0;
- break;
- case 7: //Thief
- if (SF_swapJob(callfunc("GF_getJobId", Job_Thief, Upper),@cost,@preserve))
- return 0;
- break;
- case 8: //S. Novice
- if (SF_swapJob(callfunc("GF_getJobId", Job_SuperNovice, Upper),@cost,@preserve))
- return 0;
- break;
- }
- } while (@kmenu > 1);
- return 1;
- }
- break;
-
- case 2: //Second Classes
- set @cost, SF_calcSwapCost($@kejs_job2ND, $@kejs_cost2ND, $@kejs_discount2ND);
- set @preserve, $@kejs_preserve2ND;
- if (SF_testSwap($@kejs_job2ND, @cost)) {
- do {
- if (sex == 1) {
- SF_getJobNames 12,Job_Alchem,Job_Assassin,Job_Bard,Job_Blacksmith,Job_Crusader,Job_Hunter,Job_Knight,Job_Monk,Job_Priest,Job_Rogue,Job_Sage,Job_Wizard;
- set @kmenu, select(
- "- Cancel job change",
- "- "+@name1$,"- "+@name2$,"- "+@name3$,"- "+@name4$,"- "+@name5$,"- "+@name6$,
- "- "+@name7$,"- "+@name8$,"- "+@name9$,"- "+@name10$,"- "+@name11$,"- "+@name12$
- );
- if (@kmenu >= 7) //Dancer should be at pos 7.
- set @kmenu, @kmenu+1;
- } else {
- SF_getJobNames 12,Job_Alchem,Job_Assassin,Job_Blacksmith,Job_Crusader,Job_Dancer,Job_Hunter,Job_Knight,Job_Monk,Job_Priest,Job_Rogue,Job_Sage,Job_Wizard;
- set @kmenu, select(
- "- Cancel job change",
- "- "+@name1$,"- "+@name2$,"- "+@name3$,"- "+@name4$,"- "+@name5$,"- "+@name6$,
- "- "+@name7$,"- "+@name8$,"- "+@name9$,"- "+@name10$,"- "+@name11$,"- "+@name12$
- );
- if (@kmenu >= 4) //Bard should be at pos 4.
- set @kmenu, @kmenu+1;
- }
- switch (@kmenu)
- {
- case 2: //ALCHEMIST
- if (SF_swapJob(callfunc("GF_getJobId", Job_Alchem, Upper),@cost,@preserve))
- return 0;
- break;
- case 3: //ASSASSIN
- if (SF_swapJob(callfunc("GF_getJobId", Job_Assassin, Upper),@cost,@preserve))
- return 0;
- break;
- case 4: //BARD
- if (SF_swapJob(callfunc("GF_getJobId", Job_Bard, Upper),@cost,@preserve))
- return 0;
- break;
- case 5: //BLACKSMITH
- if (SF_swapJob(callfunc("GF_getJobId", Job_Blacksmith, Upper),@cost,@preserve))
- return 0;
- break;
- case 6: //CRUSADER
- if (SF_swapJob(callfunc("GF_getJobId", Job_Crusader, Upper),@cost,@preserve))
- return 0;
- break;
- case 7: //DANCER
- if (SF_swapJob(callfunc("GF_getJobId", Job_Dancer, Upper),@cost,@preserve))
- return 0;
- break;
- case 8: //HUNTER
- if (SF_swapJob(callfunc("GF_getJobId", Job_Hunter, Upper),@cost,@preserve))
- return 0;
- break;
- case 9: //KNIGHT
- if (SF_swapJob(callfunc("GF_getJobId", Job_Knight, Upper),@cost,@preserve))
- return 0;
- break;
- case 10: //MONK
- if (SF_swapJob(callfunc("GF_getJobId", Job_Monk, Upper),@cost,@preserve))
- return 0;
- break;
- case 11: //PRIEST
- if (SF_swapJob(callfunc("GF_getJobId", Job_Priest, Upper),@cost,@preserve))
- return 0;
- break;
- case 12: //ROGUE
- if (SF_swapJob(callfunc("GF_getJobId", Job_Rogue, Upper),@cost,@preserve))
- return 0;
- break;
- case 13: //SAGE
- if (SF_swapJob(callfunc("GF_getJobId", Job_Sage, Upper),@cost,@preserve))
- return 0;
- break;
- case 14: //WIZARD
- if (SF_swapJob(callfunc("GF_getJobId", Job_Wizard, Upper),@cost,@preserve))
- return 0;
- break;
- }
- } while (@kmenu > 1);
- return 1;
- }
- }
- return 0;
-}
-
-//SubFunction: SF_calcSwapCost (MinJob, BaseCost, Discount)
-//Calculates cost to swap jobs
-function SF_calcSwapCost {
- set @cost, getarg(1);
- set @cost, @cost - @cost*getarg(2)*(JobLevel-getarg(0))/100;
- if (@cost < 0)
- set @cost,0; //Free Change
- return @cost;
-}
-
-//SubFunction: SF_testSwap(MinJobLv, Cost)
-//Checks if the player qualifies for job changing.
-function SF_testSwap {
- if (JobLevel < getarg(0)) {
- callfunc "F_keIntro", e_dots, "You need to be at least Job Lv "+getarg(0)+" before exchanging.";
- return 0;
- }
-
- set @cost, callfunc("F_keCost",getarg(1),$@kejs_swapDiscount);
- if (Zeny < @cost) {
- callfunc "F_keIntro", e_dots, "You need "+@cost+"z to be able to change.";
- return 0;
- }
- return 1;
-}
-
-//SubFunction: SF_swapJob (JobNumber, Zeny, PreserveRate)
-//Attempts to swap to the Jobgiven.
-//Zeny is the money cost
-//Preserve is how much of the previous job to preserve.
-function SF_swapJob {
- set @newjobId, getarg(0);
- set @cost, callfunc("F_keCost",getarg(1),$@kejs_swapDiscount);
- set @preserve, getarg(2);
-
- if (Class == @newjobId) {
- callfunc "F_keIntro", e_meh, "Um... you are already that class!";
- return 0;
- }
-
- set @newJob$, callfunc("GF_getJobName",@newjobId);
- set @oldJob$, callfunc("GF_getJobName",Class);
- set @newjoblv, JobLevel*@preserve/100;
-
- if (@newjoblv > 1) {
- if (select("- Cancel", "- Change to a Lv"+@newjoblv+" "+@newJob$+" ("+@cost+"z)") != 2)
- return 0;
- } else {
- set @newjoblv,1;
- if (select("- Cancel", "- Change to "+@newJob$+" ("+@cost+"z)") != 2)
- return 0;
- }
-
- set @basic, getSkilllv(1);
- set @preserve, skillpointcount() -JobLevel -@basic +@newjoblv; //Preserve holds the final amount of SkillPoints you should have.
-
- if (@preserve < 0) {
- callfunc "F_keIntro", e_gasp, "You need "+(-@preserve)+" more skill points to change class!";
- return 0;
- }
-
- set @thisJoblevel, JobLevel;
- resetSkill;
-
- //Set previous job as needed.
- if ($@kejs_revertPolicy) {
- set kej_prev_job, Class;
- set kej_prev_joblv, @thisJoblevel;
- set kej_prev_skills, SkillPoint;
- }
- if ($@kejs_announce)
- announce strcharinfo(0)+" has changed from "+@oldJob$+" to "+@newJob$+"...",16;
-
- if ($@kejs_resetDye)
- setlook 7,0;
- jobchange @newjobId, 0;
- skill 1,@basic,0;
- set JobLevel, @newjoblv;
- set SkillPoint, @preserve;
- setoption(0);
- sc_end -1;
- callfunc "F_keCharge",getarg(2),$@kejs_swapDiscount,1;
-
- emotion e_ok;
- return 1;
-}
-
-//SubFunction: SF_revertJob (cost)
-//Reverts to the previous job.
-function SF_revertJob {
- if (Class == kej_prev_job) {
- callfunc "F_keIntro", e_no, "Hmm... You can't go back, because your previous class is the same as your current one??";
- return 0;
- }
- set @newjob$, callfunc ("GF_getJobName",kej_prev_job);
-
- set @cost,callfunc("F_keCost",$@kejs_revertCost,$@kejs_revertDiscount);
-
- if (select("- Cancel","- Return to a Lv"+kej_prev_joblv+" "+@newjob$+" ("+@cost+"z)") != 2)
- return 0;
-
- if (!(callfunc("F_keCharge",$@kejs_revertCost,$@kejs_revertDiscount,1))) {
- callfunc "F_keIntro", -1, "Sorry, you need "+@cost+"z before you can revert to a Lv"+kej_prev_joblv+" "+@newjob$+".";
- return 0;
- }
- set @thisJobId, Class;
- set @thisJobLv, JobLevel;
-
- set @basic, getSkilllv(1);
- resetSkill;
- set @skill, SkillPoint;
- if($@kejs_saveDye) {
- set @prevDye, getlook(7);
- setlook 7,0;
- }
- if ($@kejs_resetDye)
- setlook 7,0;
- jobchange kej_prev_job, 0;
- if($@kejs_saveDye) {
- setlook 7,kej_prev_dye;
- set kej_prev_dye,@prevDye;
- }
- set JobLevel, kej_prev_joblv;
- set SkillPoint, kej_prev_skills;
-
- skill 1, @basic, 0;
- set SkillPoint, SkillPoint-@basic;
-
- set kej_prev_job, @thisJobId;
- set kej_prev_joblv, @thisJobLv;
- set kej_prev_skills, @skill;
- setoption(0);
- sc_end -1;
-
- if ($@kejs_announce)
- announce strcharinfo(0)+" has changed from "+callfunc ("GF_getJobName",@thisJobId)+" to "+@newjob$+"...",16;
- return 1;
-}
-
-//SubFunction: SF_getJobNames(Qty, Jobid1, Jobid2,...)
-//Workaround until eA gets a fix for the bug where you can't use callfunc or
-//callsub within a menu
-function SF_getJobNames {
- switch (getarg(0)) {
- case 12:
- set @name12$, callfunc("GF_getJobName2",getarg(12),Upper);
- case 11:
- set @name11$, callfunc("GF_getJobName2",getarg(11),Upper);
- case 10:
- set @name10$, callfunc("GF_getJobName2",getarg(10),Upper);
- case 9:
- set @name9$, callfunc("GF_getJobName2",getarg(9),Upper);
- case 8:
- set @name8$, callfunc("GF_getJobName2",getarg(8),Upper);
- case 7:
- set @name7$, callfunc("GF_getJobName2",getarg(7),Upper);
- case 6:
- set @name6$, callfunc("GF_getJobName2",getarg(6),Upper);
- case 5:
- set @name5$, callfunc("GF_getJobName2",getarg(5),Upper);
- case 4:
- set @name4$, callfunc("GF_getJobName2",getarg(4),Upper);
- case 3:
- set @name3$, callfunc("GF_getJobName2",getarg(3),Upper);
- case 2:
- set @name2$, callfunc("GF_getJobName2",getarg(2),Upper);
- case 1:
- set @name1$, callfunc("GF_getJobName2",getarg(1),Upper);
- default:
- return;
- }
-}
-
-}
+//===== eAthena Script ======================================= +//= Kafra Express - Job Swapping Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 3.4 +//===== Compatible With: ===================================== +//= eAthena SVN R7896+ +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= Enables job changing among classes of the same 'type' +//= (ie among 1st classes, or among 2nd classes) +//===== Additional Comments: ================================= +//= See config.txt for configuration. +//= * The previous Job, when enabled, is stored in: +//= kej_prev_job (job id) +//= kej_prev_joblv (job level) +//= kej_prev_skills (skill count) +//= kej_prev_dye (cloth dye) +//============================================================ + +- script keInit_jobSwap -1,{ +OnInit: //Load Config + donpcevent "keConfig::OnLoadJobSwap"; + end; +} + +function script F_keJobSwap { + +function SF_canRevert; +function SF_canSwitch; +function SF_revertJob; +function SF_switch; +function SF_calcSwapCost; +function SF_testSwap; +function SF_swapJob; +function SF_getJobNames; + + set @thisLevel, callfunc("GF_getJobLevel", Class); + + set @prevId, kej_prev_job; + set @prevLv, kej_prev_joblv; + set @prevLevel, 0; + set @prevType, 0; + + if ($@kejs_revertPolicy && @prevId && @prevLv) { + set @prevLevel, callfunc("GF_getJobLevel", @prevId); + set @prevType, callfunc("GF_getJobType", @prevId); + } + + if (SF_canRevert()) + { //Qualifies for Reverting + do { + set @revertmenu, select( + "- Return", + "- Return to previous class", + "- Change into another class" + ); + switch (@revertmenu) { + case 2: //Revert + if (SF_revertJob()) + return; + break; + case 3: //Switch + if (SF_switch() == 0) + return; + break; + } + } while (@revertmenu > 1); + return; + } + if (SF_canSwitch()) + { + SF_switch(); + return; + } + + callfunc "F_keIntro", e_swt2, "There are no available jobs of your level."; + return; + +//SubFunction SF_canRevert, specifies if the character can revert to previous job. +function SF_canRevert { + if ($@kejs_revertPolicy == 0 || @prevId == 0 || (Upper == 2 && @prevType != 2)) + return 0; + if((@thisLevel == @prevLevel && Upper == @prevType) || $@kejs_revertPolicy == 2) + return 1; + if ($@kejs_SNpolicy && @prevType == Upper && ((@prevLevel == 3 && @thisLevel == 1) || (@prevLevel == 1 && @thisLevel == 3))) + return 1; + return 0; +} + +//SubFunction SF_canSwitch, specifies if character can change to another job. +function SF_canSwitch { + if (@thisLevel == 3) + return $@kejs_SNpolicy; + if (@thisLevel == 1 || @thisLevel == 2) + return 1; + return 0; +} + +//Sub Function SF_switch. Presents the switch job menu. Returns 1 only if the +//menu was left by picking "Cancel". +function SF_switch { + switch (@thisLevel) { + case 1: + case 3: //First Classes + set @cost, SF_calcSwapCost($@kejs_job1ST, $@kejs_cost1ST, $@kejs_discount1ST); + set @preserve, $@kejs_preserve1ST; + if (SF_testSwap($@kejs_job1ST, @cost)) { + do { + if ($@kejs_SNpolicy && Upper != 1) { //S. Novice Menu + SF_getJobNames 7,Job_Acolyte,Job_Archer,Job_Mage,Job_Merchant,Job_Swordman,Job_Thief,Job_SuperNovice; + set @kmenu, select( + "- Cancel job swap", + "- "+@name1$,"- "+@name2$,"- "+@name3$,"- "+@name4$,"- "+@name5$,"- "+@name6$,"- "+@name7$ + ); + } else { + SF_getJobNames 6,Job_Acolyte,Job_Archer,Job_Mage,Job_Merchant,Job_Swordman,Job_Thief; + set @kmenu, select( + "- Cancel job swap", + "- "+@name1$,"- "+@name2$,"- "+@name3$,"- "+@name4$,"- "+@name5$,"- "+@name6$ + ); + } + switch (@kmenu) { + case 2: //Acolyte + if (SF_swapJob(callfunc("GF_getJobId", Job_Acolyte, Upper),@cost,@preserve)) + return 0; + break; + case 3: //Archer + if (SF_swapJob(callfunc("GF_getJobId", Job_Archer, Upper),@cost,@preserve)) + return 0; + break; + case 4: //Mage + if (SF_swapJob(callfunc("GF_getJobId", Job_Mage, Upper),@cost,@preserve)) + return 0; + break; + case 5: //Merchant + if (SF_swapJob(callfunc("GF_getJobId", Job_Merchant, Upper),@cost,@preserve)) + return 0; + break; + case 6: //Swordman + if (SF_swapJob(callfunc("GF_getJobId", Job_Swordman, Upper),@cost,@preserve)) + return 0; + break; + case 7: //Thief + if (SF_swapJob(callfunc("GF_getJobId", Job_Thief, Upper),@cost,@preserve)) + return 0; + break; + case 8: //S. Novice + if (SF_swapJob(callfunc("GF_getJobId", Job_SuperNovice, Upper),@cost,@preserve)) + return 0; + break; + } + } while (@kmenu > 1); + return 1; + } + break; + + case 2: //Second Classes + set @cost, SF_calcSwapCost($@kejs_job2ND, $@kejs_cost2ND, $@kejs_discount2ND); + set @preserve, $@kejs_preserve2ND; + if (SF_testSwap($@kejs_job2ND, @cost)) { + do { + if (sex == 1) { + SF_getJobNames 12,Job_Alchem,Job_Assassin,Job_Bard,Job_Blacksmith,Job_Crusader,Job_Hunter,Job_Knight,Job_Monk,Job_Priest,Job_Rogue,Job_Sage,Job_Wizard; + set @kmenu, select( + "- Cancel job change", + "- "+@name1$,"- "+@name2$,"- "+@name3$,"- "+@name4$,"- "+@name5$,"- "+@name6$, + "- "+@name7$,"- "+@name8$,"- "+@name9$,"- "+@name10$,"- "+@name11$,"- "+@name12$ + ); + if (@kmenu >= 7) //Dancer should be at pos 7. + set @kmenu, @kmenu+1; + } else { + SF_getJobNames 12,Job_Alchem,Job_Assassin,Job_Blacksmith,Job_Crusader,Job_Dancer,Job_Hunter,Job_Knight,Job_Monk,Job_Priest,Job_Rogue,Job_Sage,Job_Wizard; + set @kmenu, select( + "- Cancel job change", + "- "+@name1$,"- "+@name2$,"- "+@name3$,"- "+@name4$,"- "+@name5$,"- "+@name6$, + "- "+@name7$,"- "+@name8$,"- "+@name9$,"- "+@name10$,"- "+@name11$,"- "+@name12$ + ); + if (@kmenu >= 4) //Bard should be at pos 4. + set @kmenu, @kmenu+1; + } + switch (@kmenu) + { + case 2: //ALCHEMIST + if (SF_swapJob(callfunc("GF_getJobId", Job_Alchem, Upper),@cost,@preserve)) + return 0; + break; + case 3: //ASSASSIN + if (SF_swapJob(callfunc("GF_getJobId", Job_Assassin, Upper),@cost,@preserve)) + return 0; + break; + case 4: //BARD + if (SF_swapJob(callfunc("GF_getJobId", Job_Bard, Upper),@cost,@preserve)) + return 0; + break; + case 5: //BLACKSMITH + if (SF_swapJob(callfunc("GF_getJobId", Job_Blacksmith, Upper),@cost,@preserve)) + return 0; + break; + case 6: //CRUSADER + if (SF_swapJob(callfunc("GF_getJobId", Job_Crusader, Upper),@cost,@preserve)) + return 0; + break; + case 7: //DANCER + if (SF_swapJob(callfunc("GF_getJobId", Job_Dancer, Upper),@cost,@preserve)) + return 0; + break; + case 8: //HUNTER + if (SF_swapJob(callfunc("GF_getJobId", Job_Hunter, Upper),@cost,@preserve)) + return 0; + break; + case 9: //KNIGHT + if (SF_swapJob(callfunc("GF_getJobId", Job_Knight, Upper),@cost,@preserve)) + return 0; + break; + case 10: //MONK + if (SF_swapJob(callfunc("GF_getJobId", Job_Monk, Upper),@cost,@preserve)) + return 0; + break; + case 11: //PRIEST + if (SF_swapJob(callfunc("GF_getJobId", Job_Priest, Upper),@cost,@preserve)) + return 0; + break; + case 12: //ROGUE + if (SF_swapJob(callfunc("GF_getJobId", Job_Rogue, Upper),@cost,@preserve)) + return 0; + break; + case 13: //SAGE + if (SF_swapJob(callfunc("GF_getJobId", Job_Sage, Upper),@cost,@preserve)) + return 0; + break; + case 14: //WIZARD + if (SF_swapJob(callfunc("GF_getJobId", Job_Wizard, Upper),@cost,@preserve)) + return 0; + break; + } + } while (@kmenu > 1); + return 1; + } + } + return 0; +} + +//SubFunction: SF_calcSwapCost (MinJob, BaseCost, Discount) +//Calculates cost to swap jobs +function SF_calcSwapCost { + set @cost, getarg(1); + set @cost, @cost - @cost*getarg(2)*(JobLevel-getarg(0))/100; + if (@cost < 0) + set @cost,0; //Free Change + return @cost; +} + +//SubFunction: SF_testSwap(MinJobLv, Cost) +//Checks if the player qualifies for job changing. +function SF_testSwap { + if (JobLevel < getarg(0)) { + callfunc "F_keIntro", e_dots, "You need to be at least Job Lv "+getarg(0)+" before exchanging."; + return 0; + } + + set @cost, callfunc("F_keCost",getarg(1),$@kejs_swapDiscount); + if (Zeny < @cost) { + callfunc "F_keIntro", e_dots, "You need "+@cost+"z to be able to change."; + return 0; + } + return 1; +} + +//SubFunction: SF_swapJob (JobNumber, Zeny, PreserveRate) +//Attempts to swap to the Jobgiven. +//Zeny is the money cost +//Preserve is how much of the previous job to preserve. +function SF_swapJob { + set @newjobId, getarg(0); + set @cost, callfunc("F_keCost",getarg(1),$@kejs_swapDiscount); + set @preserve, getarg(2); + + if (Class == @newjobId) { + callfunc "F_keIntro", e_meh, "Um... you are already that class!"; + return 0; + } + + set @newJob$, callfunc("GF_getJobName",@newjobId); + set @oldJob$, callfunc("GF_getJobName",Class); + set @newjoblv, JobLevel*@preserve/100; + + if (@newjoblv > 1) { + if (select("- Cancel", "- Change to a Lv"+@newjoblv+" "+@newJob$+" ("+@cost+"z)") != 2) + return 0; + } else { + set @newjoblv,1; + if (select("- Cancel", "- Change to "+@newJob$+" ("+@cost+"z)") != 2) + return 0; + } + + set @basic, getSkilllv(1); + set @preserve, skillpointcount() -JobLevel -@basic +@newjoblv; //Preserve holds the final amount of SkillPoints you should have. + + if (@preserve < 0) { + callfunc "F_keIntro", e_gasp, "You need "+(-@preserve)+" more skill points to change class!"; + return 0; + } + + set @thisJoblevel, JobLevel; + resetSkill; + + //Set previous job as needed. + if ($@kejs_revertPolicy) { + set kej_prev_job, Class; + set kej_prev_joblv, @thisJoblevel; + set kej_prev_skills, SkillPoint; + } + if ($@kejs_announce) + announce strcharinfo(0)+" has changed from "+@oldJob$+" to "+@newJob$+"...",16; + + if ($@kejs_resetDye) + setlook 7,0; + jobchange @newjobId, 0; + skill 1,@basic,0; + set JobLevel, @newjoblv; + set SkillPoint, @preserve; + setoption(0); + sc_end -1; + callfunc "F_keCharge",getarg(2),$@kejs_swapDiscount,1; + + emotion e_ok; + return 1; +} + +//SubFunction: SF_revertJob (cost) +//Reverts to the previous job. +function SF_revertJob { + if (Class == kej_prev_job) { + callfunc "F_keIntro", e_no, "Hmm... You can't go back, because your previous class is the same as your current one??"; + return 0; + } + set @newjob$, callfunc ("GF_getJobName",kej_prev_job); + + set @cost,callfunc("F_keCost",$@kejs_revertCost,$@kejs_revertDiscount); + + if (select("- Cancel","- Return to a Lv"+kej_prev_joblv+" "+@newjob$+" ("+@cost+"z)") != 2) + return 0; + + if (!(callfunc("F_keCharge",$@kejs_revertCost,$@kejs_revertDiscount,1))) { + callfunc "F_keIntro", -1, "Sorry, you need "+@cost+"z before you can revert to a Lv"+kej_prev_joblv+" "+@newjob$+"."; + return 0; + } + set @thisJobId, Class; + set @thisJobLv, JobLevel; + + set @basic, getSkilllv(1); + resetSkill; + set @skill, SkillPoint; + if($@kejs_saveDye) { + set @prevDye, getlook(7); + setlook 7,0; + } + if ($@kejs_resetDye) + setlook 7,0; + jobchange kej_prev_job, 0; + if($@kejs_saveDye) { + setlook 7,kej_prev_dye; + set kej_prev_dye,@prevDye; + } + set JobLevel, kej_prev_joblv; + set SkillPoint, kej_prev_skills; + + skill 1, @basic, 0; + set SkillPoint, SkillPoint-@basic; + + set kej_prev_job, @thisJobId; + set kej_prev_joblv, @thisJobLv; + set kej_prev_skills, @skill; + setoption(0); + sc_end -1; + + if ($@kejs_announce) + announce strcharinfo(0)+" has changed from "+callfunc ("GF_getJobName",@thisJobId)+" to "+@newjob$+"...",16; + return 1; +} + +//SubFunction: SF_getJobNames(Qty, Jobid1, Jobid2,...) +//Workaround until eA gets a fix for the bug where you can't use callfunc or +//callsub within a menu +function SF_getJobNames { + switch (getarg(0)) { + case 12: + set @name12$, callfunc("GF_getJobName2",getarg(12),Upper); + case 11: + set @name11$, callfunc("GF_getJobName2",getarg(11),Upper); + case 10: + set @name10$, callfunc("GF_getJobName2",getarg(10),Upper); + case 9: + set @name9$, callfunc("GF_getJobName2",getarg(9),Upper); + case 8: + set @name8$, callfunc("GF_getJobName2",getarg(8),Upper); + case 7: + set @name7$, callfunc("GF_getJobName2",getarg(7),Upper); + case 6: + set @name6$, callfunc("GF_getJobName2",getarg(6),Upper); + case 5: + set @name5$, callfunc("GF_getJobName2",getarg(5),Upper); + case 4: + set @name4$, callfunc("GF_getJobName2",getarg(4),Upper); + case 3: + set @name3$, callfunc("GF_getJobName2",getarg(3),Upper); + case 2: + set @name2$, callfunc("GF_getJobName2",getarg(2),Upper); + case 1: + set @name1$, callfunc("GF_getJobName2",getarg(1),Upper); + default: + return; + } +} + +} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_main.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_main.txt index f5d1e0ef2..5aa2d3dd4 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_main.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_main.txt @@ -1,405 +1,405 @@ -//===== eAthena Script =======================================
-//= Kafra Express - Main Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 5.4
-//===== Compatible With: =====================================
-//= eAthena SVN R3424+
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= This module contains the main menu, plus the healing and
-//= storage services.
-//===== Additional Comments: =================================
-//= See <http://www.eathena.deltaanime.net/board/index.php?showtopic=20290>
-//= for indepth explanation of the Kafra Express Script Package.
-//= Services available: comment/uncomment what you want (lines 37-104)
-//= See config.txt for per-module configuration.
-//============================================================
-
-// F_KafraExpress (String "Kafra's name", String "kafra image file",
-//int location (0 = Town Kafra, 1 = Dungeon Kafra, 2 = Both),
-//String "save map", int save x, int save y)
-function script F_KafraExpress {
- set @name$,getarg(0);
- set @ke_type,getarg(2);
- if ($@kekp_reset)
- set @kafraPass,0;
- if (getarg(1) != "")
- cutin getarg(1),2;
- callfunc "F_keIntro",-1,"";
-
-M_INIT:
- set @discount, callfunc("F_keCost",1,100);
-
- if (@ke_type == 1) goto MD_INIT;
- menu
- "- Leave",L_END,
- "- Heal Service ("+($@keh_hpCost*@discount)+"z/10HP - "+($@keh_spCost*@discount)+"z/10SP)",L_HEAL,
- "- Warp Service",M_WARP,
- "- Use Storage ("+($@kes_cost*@discount)+"z)",L_STORAGE,
- "- Use Guild Storage ("+($@kegs_cost*@discount)+"z)",L_GUILD_STORAGE,
- "- Job Services",M_JOB,
- "- Other Services",M_OTHER,
- "- Save Respawn point",L_SAVE;
-
-MD_INIT:
- menu
- "- Leave",L_END,
- "- Heal Service ("+($@keh_hpCost*@discount)+"z/10HP - "+($@keh_spCost*@discount)+"z/10SP)",L_HEAL,
- "- Warp Service",M_WARP,
- "- Use Storage ("+($@kes_cost*@discount)+"z)",L_STORAGE,
- "- Use Guild Storage ("+($@kegs_cost*@discount)+"z)",L_GUILD_STORAGE,
- "- Job Services",M_JOB,
- "- Other Services",M_OTHER,
- "- Save Respawn point",L_SAVE;
-
-M_WARP:
- if (@ke_type == 3 && nif_q_done != 1)
- goto L_DENIED;
- if (@ke_type == 1)
- goto MD_WARP;
- menu
- "- Return",M_INIT,
- "- Dungeons",L_DUNGEON,
- "- PvP Arena",L_PVP,
- "- Guild Wars",L_GUILD_DUNGEON,
- "- Towns",L_TOWN;
-
-MD_WARP:
- menu
- "- Return",M_INIT,
- "- Dungeons",L_DUNGEON,
- "- PvP Arena",L_PVP,
- "- Guild Wars",L_GUILD_DUNGEON,
- "- Towns",L_TOWN;
-
-M_JOB:
- if (@ke_type == 1) goto MD_JOB;
- menu
- "- Return", M_INIT,
- "- Change Job",L_JOB_CHANGE,
- "- Swap Job",L_JOB_SWAP,
- "- Stat/Skill Services",L_STATS,
- "- Stat/Skill Market",L_STAT_MARKET,
- "- Rental Service",L_RENT;
-
-MD_JOB:
- menu
- "- Return", M_INIT,
- "- Change Job",L_JOB_CHANGE,
- "- Swap Job",L_JOB_SWAP,
- "- Stat/Skill Services",L_STATS,
- "- Stat/Skill Market",L_STAT_MARKET,
- "- Rental Service",L_RENT;
-
-M_OTHER:
- if (@ke_type == 1) goto MD_OTHER;
- menu
- "- Return",M_INIT,
- "- Bank Services",L_BANK,
- "- Use Kafra Shop",L_SHOP,
- "- Broadcast a message",L_BROADCAST,
- "- Refine Services",L_REFINE,
- "- Uncard Services",L_UNCARD,
- "- Stylist Service",L_STYLE,
- "- Use a Kafra Pass",L_PASS;
-
-MD_OTHER:
- menu
- "- Return",M_INIT,
- "- Bank Services",L_BANK,
- "- Use Kafra Shop",L_SHOP,
- "- Broadcast a message",L_BROADCAST,
- "- Refine Services",L_REFINE,
- "- Uncard Services",L_UNCARD,
- "- Stylist Service",L_STYLE,
- "- Use a Kafra Pass",L_PASS;
-
-L_HEAL:
- callfunc "F_keHeal";
- goto M_INIT;
-
-L_TOWN:
- callfunc "F_keWarpTown";
- goto M_WARP;
-
-L_DUNGEON:
- callfunc "F_keDungeonWarps", getarg(3);
- goto M_WARP;
-
-L_GUILD_DUNGEON:
- callfunc "F_keWarpWOE";
- goto M_WARP;
-
-L_PVP:
- callfunc "F_keWarpPvp";
- goto M_WARP;
-
-L_STORAGE:
- callfunc "F_keStorage", getarg(1);
- goto M_INIT;
-
-L_GUILD_STORAGE:
- callfunc "F_keGuildStorage", getarg(1);
- goto M_INIT;
-
-L_BANK:
- callfunc "F_keBank";
- goto M_OTHER;
-
-L_SHOP:
- callfunc "F_keShop",@ke_type, getarg(1);
- goto M_OTHER;
-
-L_BROADCAST:
- callfunc "F_keBroadcast",getarg(3);
- goto M_OTHER;
-
-L_PASS:
- callfunc "F_kePass";
- goto M_OTHER;
-
-L_REFINE:
- callfunc "F_keRefine";
- goto M_OTHER;
-
-L_UNCARD:
- callfunc "F_keUncard";
- goto M_OTHER;
-
-L_STYLE:
- callfunc "F_keStylist";
- goto M_OTHER;
-
-L_JOB_CHANGE:
- callfunc "F_keJobChange";
- goto M_JOB;
-
-L_JOB_SWAP:
- callfunc "F_keJobSwap";
- goto M_JOB;
-
-L_STATS:
- callfunc "F_keStats";
- goto M_JOB;
-
-L_STAT_MARKET:
- callfunc "F_keStatMarket";
- goto M_JOB;
-
-L_RENT:
- callfunc "F_keRent";
- goto M_JOB;
-
-L_SAVE:
- if (@ke_type == 3 && nif_q_done != 1)
- goto L_DENIED;
- if ($@kewt_travel && @ke_type != 1) {
- callfunc "F_keAddTravelTown", getarg(3);
- }
- if ($@kewd_travel && @ke_type != 0) {
- callfunc "F_keAddTravelDungeon", getarg(3);
- }
- if ($@ke_saveOnSpot) {
- getmapxy @map$,@x,@y,0;
- savepoint @map$,@x,@y;
- } else {
- savepoint getarg(3),getarg(4),getarg(5);
- }
- emotion e_scissors;
- goto M_INIT;
-
-L_DENIED:
- callfunc "F_keIntro", e_gg, "...no.";
- goto M_INIT;
-
-L_END:
- mes "Thank you for using Kafra Services.";
- close2;
- cutin getarg(1), 255;
- end;
-}
-
-//Function F_keIntro (emotion, message)
-//Displays a message followed by an emotion, then a next button, and finally
-//shows the intro message.
-function script F_keIntro {
- if (getarg(0) >= 0)
- emotion getarg(0);
- if (getarg(1) != "") {
- mes getarg(1);
- next;
- }
- mes "["+@name$+"]";
- mes "Welcome to Kafra Corp. Always by your side, wherever you go.";
- if(@kafraPass) mes "Your Kafra Pass is active,";
- mes "How may I be of help?";
- return;
-}
-
-//Function Heal, offers the heal subsystem.
-function script F_keHeal {
- set @qtyHP,MaxHp-Hp;
- set @qtySP,MaxSp-Sp;
- set @costHP, $@keh_hpCost*(MaxHp-Hp)/10;
- set @costSP, $@keh_spCost*(MaxSp-Sp)/10;
- set @costHPSP, @costHP+@costSP;
- set @discount, callfunc("F_keCost",1,100);
-
- if (@qtyHP + @qtySP == 0) {
- callfunc "F_keIntro", -1, "...you don't need to be healed.";
- return;
- }
- if (@qtyHP == 0) goto M_NO_HP;
- if (@qtySP == 0) goto M_NO_SP;
- menu "- Cancel",-,
- "- Heal HP ("+(@costHP*@discount)+"z)",L_HEAL_HP,
- "- Heal SP ("+(@costSP*@discount)+"z)",L_HEAL_SP,
- "- Heal Both ("+(@costHPSP*@discount)+"z)",L_HEAL_ALL;
- return;
-
-M_NO_HP:
- menu "- Cancel",-,
- "- Heal SP ("+(@costSP*@discount)+"z)",L_HEAL_SP;
- return;
-
-M_NO_SP:
- menu "- Cancel",-,
- "- Heal HP ("+(@costHP*@discount)+"z)",L_HEAL_HP;
- return;
-
-L_HEAL_HP:
- if (!(callfunc("F_keCharge",@costHP,100,0))) {
- callfunc "F_keIntro", e_sry, "Sorry, you don't have enough to be healed.";
- return;
- }
- emotion e_no1;
- heal @qtyHP,0;
- return;
-
-L_HEAL_SP:
- if (!(callfunc("F_keCharge",@costSP,100,0))) {
- callfunc "F_keIntro", e_sry, "Sorry, you don't have enough to be healed.";
- return;
- }
- emotion e_no1;
- heal 0,@qtySP;
- return;
-
-L_HEAL_ALL:
- if (!(callfunc("F_keCharge",@costHPSP,100,0))) {
- callfunc "F_keIntro", e_sry, "Sorry, you don't have enough to be healed.";
- return;
- }
- emotion e_no1;
- heal @qtyHP,@qtySP;
- return;
-}
-
-//Function storage: allows access to the storage facility
-//The sent argument is the displaying image, so we can clear it afterwards.
-function script F_keStorage {
- if(basicskillcheck(0) > 0 && getskilllv(1) < 6) {
- callfunc "F_keIntro", -1, "I am sorry, but you beed basic skill level 6 to use the storage.";
- return;
- }
- if (!(callfunc("F_keCharge",$@kes_cost,100,1))) {
- callfunc "F_keIntro", e_an, "Sorry, but you don't have enough Zeny.";
- return;
- }
- mes "Thank for you using Kafra services.";
- emotion e_thx;
- close2;
- openstorage;
- cutin getarg(0), 255;
- end;
-}
-
-//Function G Storage: Allows access to the Guild Storage
-function script F_keGuildStorage {
- if(basicskillcheck(0) > 0 && getskilllv(1) < 6) {
- callfunc "F_keIntro", -1, "I am sorry, but you beed basic skill level 6 to use the storage.";
- return;
- }
- if(getcharid(2) < 1) {
- callfunc "F_keIntro", e_swt, "You can't use the Guild Storage if you don't belong to a guild!";
- return;
- }
- if (callfunc("F_keCost",$@kegs_cost,100) > Zeny) {
- callfunc "F_keIntro", e_an, "Sorry, but you don't have enough Zeny.";
- return;
- }
- if (guildopenstorage(0) == 1) {
- callfunc "F_keIntro", -1, "Sorry, the guild storage is currently in use by someone else. Try again later.";
- return;
- }
- callfunc "F_keCharge",$@kegs_cost,100,1;
- mes "Thank for you using Kafra services.";
- emotion e_thx;
- close2;
- cutin getarg(0), 255;
- end;
-}
-
-function script F_kePass {
- if (@kafraPass) {
- callfunc "F_keIntro", -1, "You already are using a Kafra Pass...";
- return;
- }
- if (countitem(1084)<1) {
- callfunc "F_keIntro", -1, "You obviously need a 'Kafra Pass' if you want to activate it.";
- return;
- }
- delitem 1084,1;
- set @kafraPass,1;
- callfunc "F_keIntro", e_lv, "Your Kafra Pass has been activated.";
- return;
-}
-
-//F_keCost(int cost, int discount%)
-//Returns what would be the cost of a service considering the KafraPass.
-//The discount value should be between 0 and 100
-function script F_keCost {
- if (@kafraPass) {
- return getarg(0)*(100-getarg(1))/100;
- }
- return getarg(0);
-}
-
-//F_keCharge(int cost, int discount%, bool appliesKP)
-//Charges for a service, using the KafraPass state and discount value.
-//appliesKP marks if the cost savings apply for stocking Kafra Reserve Points
-//Function returns 1 if successful, 0 if there's not enough zeny.
-function script F_keCharge {
- set @savings, 0;
- if (@kafraPass)
- set @savings, getarg(0)*getarg(1)/100;
- set @cost, getarg(0)-@savings;
- if (@cost > Zeny || @cost < 0) { // (@cost < 0) for overflow protection
- return 0;
- }
- set Zeny, Zeny-@cost;
-
- if (getarg(2) && @savings > 0 && $@kekp_reserveCost > 0) {
- set @savings, @savings/$@kekp_reserveCost;
- if (@savings < $@kekp_minReserve)
- set @savings, $@kekp_minReserve;
- if (@savings > $@kekp_maxReserve)
- set @savings, $@kekp_maxReserve;
-
- set RESRVPTS, RESRVPTS + @savings;
- }
- return 1;
-}
-
-//Function F_keWarp (int cost, int discount, int emotion, String map, int x, int y)
-function script F_keWarp {
- if (!(callfunc("F_keCharge",getarg(0),getarg(1),1))) {
- callfunc "F_keIntro", e_an, "You don't have enough Zeny...";
- return;
- }
- emotion getarg(2);
- warp getarg(3),getarg(4),getarg(5);
- end;
-}
+//===== eAthena Script ======================================= +//= Kafra Express - Main Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 5.4 +//===== Compatible With: ===================================== +//= eAthena SVN R3424+ +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= This module contains the main menu, plus the healing and +//= storage services. +//===== Additional Comments: ================================= +//= See <http://www.eathena.deltaanime.net/board/index.php?showtopic=20290> +//= for indepth explanation of the Kafra Express Script Package. +//= Services available: comment/uncomment what you want (lines 37-104) +//= See config.txt for per-module configuration. +//============================================================ + +// F_KafraExpress (String "Kafra's name", String "kafra image file", +//int location (0 = Town Kafra, 1 = Dungeon Kafra, 2 = Both), +//String "save map", int save x, int save y) +function script F_KafraExpress { + set @name$,getarg(0); + set @ke_type,getarg(2); + if ($@kekp_reset) + set @kafraPass,0; + if (getarg(1) != "") + cutin getarg(1),2; + callfunc "F_keIntro",-1,""; + +M_INIT: + set @discount, callfunc("F_keCost",1,100); + + if (@ke_type == 1) goto MD_INIT; + menu + "- Leave",L_END, + "- Heal Service ("+($@keh_hpCost*@discount)+"z/10HP - "+($@keh_spCost*@discount)+"z/10SP)",L_HEAL, + "- Warp Service",M_WARP, + "- Use Storage ("+($@kes_cost*@discount)+"z)",L_STORAGE, + "- Use Guild Storage ("+($@kegs_cost*@discount)+"z)",L_GUILD_STORAGE, + "- Job Services",M_JOB, + "- Other Services",M_OTHER, + "- Save Respawn point",L_SAVE; + +MD_INIT: + menu + "- Leave",L_END, + "- Heal Service ("+($@keh_hpCost*@discount)+"z/10HP - "+($@keh_spCost*@discount)+"z/10SP)",L_HEAL, + "- Warp Service",M_WARP, + "- Use Storage ("+($@kes_cost*@discount)+"z)",L_STORAGE, + "- Use Guild Storage ("+($@kegs_cost*@discount)+"z)",L_GUILD_STORAGE, + "- Job Services",M_JOB, + "- Other Services",M_OTHER, + "- Save Respawn point",L_SAVE; + +M_WARP: + if (@ke_type == 3 && nif_q_done != 1) + goto L_DENIED; + if (@ke_type == 1) + goto MD_WARP; + menu + "- Return",M_INIT, + "- Dungeons",L_DUNGEON, + "- PvP Arena",L_PVP, + "- Guild Wars",L_GUILD_DUNGEON, + "- Towns",L_TOWN; + +MD_WARP: + menu + "- Return",M_INIT, + "- Dungeons",L_DUNGEON, + "- PvP Arena",L_PVP, + "- Guild Wars",L_GUILD_DUNGEON, + "- Towns",L_TOWN; + +M_JOB: + if (@ke_type == 1) goto MD_JOB; + menu + "- Return", M_INIT, + "- Change Job",L_JOB_CHANGE, + "- Swap Job",L_JOB_SWAP, + "- Stat/Skill Services",L_STATS, + "- Stat/Skill Market",L_STAT_MARKET, + "- Rental Service",L_RENT; + +MD_JOB: + menu + "- Return", M_INIT, + "- Change Job",L_JOB_CHANGE, + "- Swap Job",L_JOB_SWAP, + "- Stat/Skill Services",L_STATS, + "- Stat/Skill Market",L_STAT_MARKET, + "- Rental Service",L_RENT; + +M_OTHER: + if (@ke_type == 1) goto MD_OTHER; + menu + "- Return",M_INIT, + "- Bank Services",L_BANK, + "- Use Kafra Shop",L_SHOP, + "- Broadcast a message",L_BROADCAST, + "- Refine Services",L_REFINE, + "- Uncard Services",L_UNCARD, + "- Stylist Service",L_STYLE, + "- Use a Kafra Pass",L_PASS; + +MD_OTHER: + menu + "- Return",M_INIT, + "- Bank Services",L_BANK, + "- Use Kafra Shop",L_SHOP, + "- Broadcast a message",L_BROADCAST, + "- Refine Services",L_REFINE, + "- Uncard Services",L_UNCARD, + "- Stylist Service",L_STYLE, + "- Use a Kafra Pass",L_PASS; + +L_HEAL: + callfunc "F_keHeal"; + goto M_INIT; + +L_TOWN: + callfunc "F_keWarpTown"; + goto M_WARP; + +L_DUNGEON: + callfunc "F_keDungeonWarps", getarg(3); + goto M_WARP; + +L_GUILD_DUNGEON: + callfunc "F_keWarpWOE"; + goto M_WARP; + +L_PVP: + callfunc "F_keWarpPvp"; + goto M_WARP; + +L_STORAGE: + callfunc "F_keStorage", getarg(1); + goto M_INIT; + +L_GUILD_STORAGE: + callfunc "F_keGuildStorage", getarg(1); + goto M_INIT; + +L_BANK: + callfunc "F_keBank"; + goto M_OTHER; + +L_SHOP: + callfunc "F_keShop",@ke_type, getarg(1); + goto M_OTHER; + +L_BROADCAST: + callfunc "F_keBroadcast",getarg(3); + goto M_OTHER; + +L_PASS: + callfunc "F_kePass"; + goto M_OTHER; + +L_REFINE: + callfunc "F_keRefine"; + goto M_OTHER; + +L_UNCARD: + callfunc "F_keUncard"; + goto M_OTHER; + +L_STYLE: + callfunc "F_keStylist"; + goto M_OTHER; + +L_JOB_CHANGE: + callfunc "F_keJobChange"; + goto M_JOB; + +L_JOB_SWAP: + callfunc "F_keJobSwap"; + goto M_JOB; + +L_STATS: + callfunc "F_keStats"; + goto M_JOB; + +L_STAT_MARKET: + callfunc "F_keStatMarket"; + goto M_JOB; + +L_RENT: + callfunc "F_keRent"; + goto M_JOB; + +L_SAVE: + if (@ke_type == 3 && nif_q_done != 1) + goto L_DENIED; + if ($@kewt_travel && @ke_type != 1) { + callfunc "F_keAddTravelTown", getarg(3); + } + if ($@kewd_travel && @ke_type != 0) { + callfunc "F_keAddTravelDungeon", getarg(3); + } + if ($@ke_saveOnSpot) { + getmapxy @map$,@x,@y,0; + savepoint @map$,@x,@y; + } else { + savepoint getarg(3),getarg(4),getarg(5); + } + emotion e_scissors; + goto M_INIT; + +L_DENIED: + callfunc "F_keIntro", e_gg, "...no."; + goto M_INIT; + +L_END: + mes "Thank you for using Kafra Services."; + close2; + cutin getarg(1), 255; + end; +} + +//Function F_keIntro (emotion, message) +//Displays a message followed by an emotion, then a next button, and finally +//shows the intro message. +function script F_keIntro { + if (getarg(0) >= 0) + emotion getarg(0); + if (getarg(1) != "") { + mes getarg(1); + next; + } + mes "["+@name$+"]"; + mes "Welcome to Kafra Corp. Always by your side, wherever you go."; + if(@kafraPass) mes "Your Kafra Pass is active,"; + mes "How may I be of help?"; + return; +} + +//Function Heal, offers the heal subsystem. +function script F_keHeal { + set @qtyHP,MaxHp-Hp; + set @qtySP,MaxSp-Sp; + set @costHP, $@keh_hpCost*(MaxHp-Hp)/10; + set @costSP, $@keh_spCost*(MaxSp-Sp)/10; + set @costHPSP, @costHP+@costSP; + set @discount, callfunc("F_keCost",1,100); + + if (@qtyHP + @qtySP == 0) { + callfunc "F_keIntro", -1, "...you don't need to be healed."; + return; + } + if (@qtyHP == 0) goto M_NO_HP; + if (@qtySP == 0) goto M_NO_SP; + menu "- Cancel",-, + "- Heal HP ("+(@costHP*@discount)+"z)",L_HEAL_HP, + "- Heal SP ("+(@costSP*@discount)+"z)",L_HEAL_SP, + "- Heal Both ("+(@costHPSP*@discount)+"z)",L_HEAL_ALL; + return; + +M_NO_HP: + menu "- Cancel",-, + "- Heal SP ("+(@costSP*@discount)+"z)",L_HEAL_SP; + return; + +M_NO_SP: + menu "- Cancel",-, + "- Heal HP ("+(@costHP*@discount)+"z)",L_HEAL_HP; + return; + +L_HEAL_HP: + if (!(callfunc("F_keCharge",@costHP,100,0))) { + callfunc "F_keIntro", e_sry, "Sorry, you don't have enough to be healed."; + return; + } + emotion e_no1; + heal @qtyHP,0; + return; + +L_HEAL_SP: + if (!(callfunc("F_keCharge",@costSP,100,0))) { + callfunc "F_keIntro", e_sry, "Sorry, you don't have enough to be healed."; + return; + } + emotion e_no1; + heal 0,@qtySP; + return; + +L_HEAL_ALL: + if (!(callfunc("F_keCharge",@costHPSP,100,0))) { + callfunc "F_keIntro", e_sry, "Sorry, you don't have enough to be healed."; + return; + } + emotion e_no1; + heal @qtyHP,@qtySP; + return; +} + +//Function storage: allows access to the storage facility +//The sent argument is the displaying image, so we can clear it afterwards. +function script F_keStorage { + if(basicskillcheck(0) > 0 && getskilllv(1) < 6) { + callfunc "F_keIntro", -1, "I am sorry, but you beed basic skill level 6 to use the storage."; + return; + } + if (!(callfunc("F_keCharge",$@kes_cost,100,1))) { + callfunc "F_keIntro", e_an, "Sorry, but you don't have enough Zeny."; + return; + } + mes "Thank for you using Kafra services."; + emotion e_thx; + close2; + openstorage; + cutin getarg(0), 255; + end; +} + +//Function G Storage: Allows access to the Guild Storage +function script F_keGuildStorage { + if(basicskillcheck(0) > 0 && getskilllv(1) < 6) { + callfunc "F_keIntro", -1, "I am sorry, but you beed basic skill level 6 to use the storage."; + return; + } + if(getcharid(2) < 1) { + callfunc "F_keIntro", e_swt, "You can't use the Guild Storage if you don't belong to a guild!"; + return; + } + if (callfunc("F_keCost",$@kegs_cost,100) > Zeny) { + callfunc "F_keIntro", e_an, "Sorry, but you don't have enough Zeny."; + return; + } + if (guildopenstorage(0) == 1) { + callfunc "F_keIntro", -1, "Sorry, the guild storage is currently in use by someone else. Try again later."; + return; + } + callfunc "F_keCharge",$@kegs_cost,100,1; + mes "Thank for you using Kafra services."; + emotion e_thx; + close2; + cutin getarg(0), 255; + end; +} + +function script F_kePass { + if (@kafraPass) { + callfunc "F_keIntro", -1, "You already are using a Kafra Pass..."; + return; + } + if (countitem(1084)<1) { + callfunc "F_keIntro", -1, "You obviously need a 'Kafra Pass' if you want to activate it."; + return; + } + delitem 1084,1; + set @kafraPass,1; + callfunc "F_keIntro", e_lv, "Your Kafra Pass has been activated."; + return; +} + +//F_keCost(int cost, int discount%) +//Returns what would be the cost of a service considering the KafraPass. +//The discount value should be between 0 and 100 +function script F_keCost { + if (@kafraPass) { + return getarg(0)*(100-getarg(1))/100; + } + return getarg(0); +} + +//F_keCharge(int cost, int discount%, bool appliesKP) +//Charges for a service, using the KafraPass state and discount value. +//appliesKP marks if the cost savings apply for stocking Kafra Reserve Points +//Function returns 1 if successful, 0 if there's not enough zeny. +function script F_keCharge { + set @savings, 0; + if (@kafraPass) + set @savings, getarg(0)*getarg(1)/100; + set @cost, getarg(0)-@savings; + if (@cost > Zeny || @cost < 0) { // (@cost < 0) for overflow protection + return 0; + } + set Zeny, Zeny-@cost; + + if (getarg(2) && @savings > 0 && $@kekp_reserveCost > 0) { + set @savings, @savings/$@kekp_reserveCost; + if (@savings < $@kekp_minReserve) + set @savings, $@kekp_minReserve; + if (@savings > $@kekp_maxReserve) + set @savings, $@kekp_maxReserve; + + set RESRVPTS, RESRVPTS + @savings; + } + return 1; +} + +//Function F_keWarp (int cost, int discount, int emotion, String map, int x, int y) +function script F_keWarp { + if (!(callfunc("F_keCharge",getarg(0),getarg(1),1))) { + callfunc "F_keIntro", e_an, "You don't have enough Zeny..."; + return; + } + emotion getarg(2); + warp getarg(3),getarg(4),getarg(5); + end; +} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_refine.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_refine.txt index 88c5104f0..b59830e89 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_refine.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_refine.txt @@ -1,339 +1,339 @@ -//===== eAthena Script =======================================
-//= Kafra Express - Refining Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 2.7
-//===== Compatible With: =====================================
-//= eAthena SVN R3424+
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= Does item forging, ore purifying and repairing.
-//= Can also sell phracon/emveretarcon
-//===== Additional Comments: =================================
-//= See config.txt for configuration.
-//============================================================
-
-- script keInit_refine -1,{
-OnInit: //Load Config
- donpcevent "keConfig::OnLoadRefine";
- end;
-}
-
-function script F_keRefine {
-
-function SF_refine;
-function SF_repair;
-function SF_purify;
-function SF_sellOres;
-
- do {
- set @kmenu, select(
- "- Return",
- "- Refine Equipment",
- "- Repair Equipment",
- "- Buy Ores",
- "- Purify Ores"
- );
- switch(@kmenu) {
- case 2: //Refine
- SF_refine();
- break;
- case 3: //Repair
- SF_repair();
- break;
- case 4: //Buy Ore
- SF_sellOres();
- break;
- case 5: //Purify Ore
- SF_purify();
- break;
- }
- } while (@kmenu > 1);
- return;
-
-//Subfunction SF_refine, presents the refining menu.
-function SF_refine {
- do {
- set @part, select(
- "- Cancel upgrading",
- "- "+getequipname(1),
- "- "+getequipname(2),
- "- "+getequipname(3),
- "- "+getequipname(4),
- "- "+getequipname(5),
- "- "+getequipname(6),
- "- "+getequipname(7),
- "- "+getequipname(8),
- "- "+getequipname(9),
- "- "+getequipname(10)
- );
- set @part, @part-1;
- if (@part == 0)
- break;
- if (getequipisequiped(@part) == 0) {
- callfunc "F_keIntro", e_swt, "There is nothing to refine there...";
- } else
- if(getequipisenableref(@part) == 0 && $@kerf_refineAll == 0) {
- callfunc "F_keIntro", -1, "Sorry, this item cannot be refined.";
- } else
- if(getequiprefinerycnt(@part) >= $@kerf_maxLv) {
- callfunc "F_keIntro", -1, "This item cannot be refined further.";
- break;
- } else {
- switch (getequipweaponlv(@part))
- {
- case 0: //Armor
- set @mat,985;
- set @cost,$@kerf_armorCost;
- break;
- case 1:
- set @mat,1010;
- set @cost,$@kerf_weaponLv1Cost;
- break;
- case 2:
- set @mat,1011;
- set @cost,$@kerf_weaponLv2Cost;
- break;
- case 3:
- set @mat,984;
- set @cost,$@kerf_weaponLv3Cost;
- break;
- default:
- set @mat,984;
- set @cost,$@kerf_weaponLv4Cost;
- break;
- }
- set @cost, callfunc("F_keCost",@cost,$@kerf_discount);
- do {
- if ($@kerf_safe==0 && getequippercentrefinery(@part) < 100) {
- if ($@kerf_showChance) {
- if (select(
- "- Return ("+(100-getequippercentrefinery(@part))+"% chance refine will fail)",
- "- Refine (Need "+getitemname(@mat)+" and "+@cost+"z)") != 2)
- break;
- } else {
- if (select(
- "- Return (Upgrade not safe, item might break!)",
- "- Refine (Need "+getitemname(@mat)+" and "+@cost+"z)") != 2)
- break;
- }
- } else {
- if (select(
- "- Refine (Need "+getitemname(@mat)+" and "+@cost+"z)",
- "- Cancel") != 1)
- break;
- }
- if (getequiprefinerycnt(@part) >= $@kerf_maxLv) {
- callfunc "F_keIntro", e_ok, "This item has reached it's maximum level.";
- break;
- }
- if (countitem(@mat) < 1) {
- callfunc "F_keIntro", e_ag, "Sorry, you don't have the materials I need.";
- break;
- }
- if (!(callfunc("F_keCharge",@cost,$@kerf_discount,1))) {
- callfunc "F_keIntro", e_ag, "Sorry, you don't have enough zeny.";
- break;
- }
- delitem @mat,1;
- if ($@kerf_safe || getequippercentrefinery(@part)>rand(100)) {
- successrefitem @part;
- emotion e_rock;
- } else {
- failedrefitem @part;
- callfunc "F_keIntro", e_swt, "...sorry.";
- break;
- }
- } while (1);
- }
- } while (@part > 0);
- return;
-}
-
-//Subfunction: SF_repair()
-function SF_repair {
- set @cost,callfunc("F_keCost",$@kerf_repairCost,$@kerf_repairDiscount);
- do {
- set @broken1,getbrokenid(1);
- if(@broken1==NULL) {
- callfunc "F_keIntro", -1, "You don't need anything repaired for now.";
- return;
- }
- set @broken2,getbrokenid(2);
- set @broken3,getbrokenid(3);
- set @broken4,getbrokenid(4);
- set @broken5,getbrokenid(5);
- set @broken6,getbrokenid(6);
- set @broken7,getbrokenid(7);
- set @broken8,getbrokenid(8);
- set @broken9,getbrokenid(9);
- set @broken10,getbrokenid(10);
-
- if ($@kerf_repairSteel)
- set @str$,"- Cancel (Repairing costs "+@cost+"z and 1 "+getitemname(999);
- else
- set @str$,"- Cancel (Repairing costs "+@cost+"z)";
-
- set @idRepair, select(
- @str$,
- getitemname(@broken1),
- getitemname(@broken2),
- getitemname(@broken3),
- getitemname(@broken4),
- getitemname(@broken5),
- getitemname(@broken6),
- getitemname(@broken7),
- getitemname(@broken8),
- getitemname(@broken9),
- getitemname(@broken10)
- );
- set @idRepair, @idRepair-1;
- if (@idRepair == 0) break;
- if ($@kerf_repairSteel && countitem(999) < 1) {
- callfunc "F_keIntro", e_ag, "Sorry, you don't have the materials I need.";
- return;
- }
- if (!(callfunc("F_keCharge", $@kerf_repairCost, $@kerf_repairDiscount,1))) {
- callfunc "F_keIntro", e_ag, "Sorry, you don't have enough zeny.";
- return;
- }
- if ($@kerf_repairSteel) delitem 999,1;
- repair(@idRepair);
- emotion e_lv2;
- } while (@idRepair > 0);
-}
-
-//Subfunction: SF_purify()
-function SF_purify {
- if ($@kerf_purifyAll) {
- set @submenu, select (
- "- Return",
- "- Purify "+getitemname(984)+" (need 5 "+getitemname(756)+")",
- "- Purify "+getitemname(985)+" (need 5 "+getitemname(757)+")",
- "- Purify "+getitemname(998)+" (need 2 "+getitemname(1002)+")",
- "- Temper "+getitemname(999)+" (need 5 "+getitemname(998)+", 1 "+getitemname(1003)+")",
- "- Temper "+getitemname(994)+" (need 10 "+getitemname(990)+")",
- "- Temper "+getitemname(995)+" (need 10 "+getitemname(991)+")",
- "- Temper "+getitemname(996)+" (need 10 "+getitemname(992)+")",
- "- Temper "+getitemname(997)+" (need 10 "+getitemname(993)+")",
- "- Temper "+getitemname(1000)+" (need 10 "+getitemname(1001)+")"
- );
- } else {
- set @submenu, select(
- "- Return",
- "- Purify "+getitemname(984)+" (need 5 "+getitemname(756)+")",
- "- Purify "+getitemname(985)+" (need 5 "+getitemname(757)+")"
- );
- }
- switch (@submenu) {
- case 2: //Oridecon
- set @item, 984;
- set @rough, 756;
- set @qty, 5;
- break;
- case 3: //Elunium
- set @item, 985;
- set @rough, 757;
- set @qty, 5;
- break;
- case 4: //Iron
- set @item, 998;
- set @rough, 1002;
- set @qty, 2;
- break;
- case 5: //Steel
- set @item,999;
- set @rough,998;
- set @qty,5;
- set @rough2,1003;
- set @qty2,1;
-
- set @count,countitem(@rough1);
- set @count2,countitem(@rough2);
- if (@count < @qty || @count2 < @qty2) {
- callfunc "F_keIntro", e_ag, "Sorry, you don't have the materials I need.";
- return;
- }
- set @count, @count/@qty;
- set @count2, @count2/@qty2;
- if (@count2 < @count)
- set @count,@count2;
- delitem @rough2,@qty2*@count;
- break;
- case 6: //Fire
- set @item, 994;
- set @rough, 990;
- set @qty, 10;
- break;
- case 7: //Ice
- set @item, 995;
- set @rough, 991;
- set @qty, 10;
- break;
- case 8: //Wind
- set @item, 996;
- set @rough, 992;
- set @qty, 10;
- break;
- case 9: //Earth
- set @item, 997;
- set @rough, 993;
- set @qty, 10;
- break;
- case 10: //Star
- set @item, 1000;
- set @rough, 1001;
- set @qty, 10;
- break;
- default:
- return;
- }
- set @count,countitem(@rough);
- if (@count < @qty) {
- callfunc "F_keIntro", e_ag, "Sorry, you don't have the materials I need.";
- return;
- }
- set @count, @count/@qty;
- delitem @rough,@qty*@count;
- getitem @item,@count;
- emotion e_paper;
-}
-
-//Subfunction: SF_sellOres()
-function SF_sellOres {
- do {
- set @submenu, select(
- "- Return",
- "- Buy "+getitemname(1010)+" (200z each)",
- "- Buy "+getitemname(1011)+" (1000z each)"
- );
- switch (@submenu) {
- case 2: //Phracon
- set @mat, 1010;
- set @cost, 200;
- break;
- case 3: //Emveratarcon
- set @mat, 1011;
- set @cost, 1000;
- break;
- default:
- return;
- }
- input @qty;
- set @cost,@cost*@qty;
- if (@qty < 1) {
- callfunc "F_keIntro", e_pif, "That is NOT a valid quantity...";
- } else if (@cost > Zeny) {
- callfunc "F_keIntro", e_ag, "Sorry, you don't have enough zeny.";
- } else if (@cost < 0) {
- callfunc "F_keIntro", e_swt2, "Sorry, that's too much! Try buying less...";
- } else {
- set Zeny,Zeny-@cost;
- getitem @mat,@qty;
- emotion e_paper;
- }
- } while (@submenu > 1);
-}
-
-}
+//===== eAthena Script ======================================= +//= Kafra Express - Refining Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 2.7 +//===== Compatible With: ===================================== +//= eAthena SVN R3424+ +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= Does item forging, ore purifying and repairing. +//= Can also sell phracon/emveretarcon +//===== Additional Comments: ================================= +//= See config.txt for configuration. +//============================================================ + +- script keInit_refine -1,{ +OnInit: //Load Config + donpcevent "keConfig::OnLoadRefine"; + end; +} + +function script F_keRefine { + +function SF_refine; +function SF_repair; +function SF_purify; +function SF_sellOres; + + do { + set @kmenu, select( + "- Return", + "- Refine Equipment", + "- Repair Equipment", + "- Buy Ores", + "- Purify Ores" + ); + switch(@kmenu) { + case 2: //Refine + SF_refine(); + break; + case 3: //Repair + SF_repair(); + break; + case 4: //Buy Ore + SF_sellOres(); + break; + case 5: //Purify Ore + SF_purify(); + break; + } + } while (@kmenu > 1); + return; + +//Subfunction SF_refine, presents the refining menu. +function SF_refine { + do { + set @part, select( + "- Cancel upgrading", + "- "+getequipname(1), + "- "+getequipname(2), + "- "+getequipname(3), + "- "+getequipname(4), + "- "+getequipname(5), + "- "+getequipname(6), + "- "+getequipname(7), + "- "+getequipname(8), + "- "+getequipname(9), + "- "+getequipname(10) + ); + set @part, @part-1; + if (@part == 0) + break; + if (getequipisequiped(@part) == 0) { + callfunc "F_keIntro", e_swt, "There is nothing to refine there..."; + } else + if(getequipisenableref(@part) == 0 && $@kerf_refineAll == 0) { + callfunc "F_keIntro", -1, "Sorry, this item cannot be refined."; + } else + if(getequiprefinerycnt(@part) >= $@kerf_maxLv) { + callfunc "F_keIntro", -1, "This item cannot be refined further."; + break; + } else { + switch (getequipweaponlv(@part)) + { + case 0: //Armor + set @mat,985; + set @cost,$@kerf_armorCost; + break; + case 1: + set @mat,1010; + set @cost,$@kerf_weaponLv1Cost; + break; + case 2: + set @mat,1011; + set @cost,$@kerf_weaponLv2Cost; + break; + case 3: + set @mat,984; + set @cost,$@kerf_weaponLv3Cost; + break; + default: + set @mat,984; + set @cost,$@kerf_weaponLv4Cost; + break; + } + set @cost, callfunc("F_keCost",@cost,$@kerf_discount); + do { + if ($@kerf_safe==0 && getequippercentrefinery(@part) < 100) { + if ($@kerf_showChance) { + if (select( + "- Return ("+(100-getequippercentrefinery(@part))+"% chance refine will fail)", + "- Refine (Need "+getitemname(@mat)+" and "+@cost+"z)") != 2) + break; + } else { + if (select( + "- Return (Upgrade not safe, item might break!)", + "- Refine (Need "+getitemname(@mat)+" and "+@cost+"z)") != 2) + break; + } + } else { + if (select( + "- Refine (Need "+getitemname(@mat)+" and "+@cost+"z)", + "- Cancel") != 1) + break; + } + if (getequiprefinerycnt(@part) >= $@kerf_maxLv) { + callfunc "F_keIntro", e_ok, "This item has reached it's maximum level."; + break; + } + if (countitem(@mat) < 1) { + callfunc "F_keIntro", e_ag, "Sorry, you don't have the materials I need."; + break; + } + if (!(callfunc("F_keCharge",@cost,$@kerf_discount,1))) { + callfunc "F_keIntro", e_ag, "Sorry, you don't have enough zeny."; + break; + } + delitem @mat,1; + if ($@kerf_safe || getequippercentrefinery(@part)>rand(100)) { + successrefitem @part; + emotion e_rock; + } else { + failedrefitem @part; + callfunc "F_keIntro", e_swt, "...sorry."; + break; + } + } while (1); + } + } while (@part > 0); + return; +} + +//Subfunction: SF_repair() +function SF_repair { + set @cost,callfunc("F_keCost",$@kerf_repairCost,$@kerf_repairDiscount); + do { + set @broken1,getbrokenid(1); + if(@broken1==NULL) { + callfunc "F_keIntro", -1, "You don't need anything repaired for now."; + return; + } + set @broken2,getbrokenid(2); + set @broken3,getbrokenid(3); + set @broken4,getbrokenid(4); + set @broken5,getbrokenid(5); + set @broken6,getbrokenid(6); + set @broken7,getbrokenid(7); + set @broken8,getbrokenid(8); + set @broken9,getbrokenid(9); + set @broken10,getbrokenid(10); + + if ($@kerf_repairSteel) + set @str$,"- Cancel (Repairing costs "+@cost+"z and 1 "+getitemname(999); + else + set @str$,"- Cancel (Repairing costs "+@cost+"z)"; + + set @idRepair, select( + @str$, + getitemname(@broken1), + getitemname(@broken2), + getitemname(@broken3), + getitemname(@broken4), + getitemname(@broken5), + getitemname(@broken6), + getitemname(@broken7), + getitemname(@broken8), + getitemname(@broken9), + getitemname(@broken10) + ); + set @idRepair, @idRepair-1; + if (@idRepair == 0) break; + if ($@kerf_repairSteel && countitem(999) < 1) { + callfunc "F_keIntro", e_ag, "Sorry, you don't have the materials I need."; + return; + } + if (!(callfunc("F_keCharge", $@kerf_repairCost, $@kerf_repairDiscount,1))) { + callfunc "F_keIntro", e_ag, "Sorry, you don't have enough zeny."; + return; + } + if ($@kerf_repairSteel) delitem 999,1; + repair(@idRepair); + emotion e_lv2; + } while (@idRepair > 0); +} + +//Subfunction: SF_purify() +function SF_purify { + if ($@kerf_purifyAll) { + set @submenu, select ( + "- Return", + "- Purify "+getitemname(984)+" (need 5 "+getitemname(756)+")", + "- Purify "+getitemname(985)+" (need 5 "+getitemname(757)+")", + "- Purify "+getitemname(998)+" (need 2 "+getitemname(1002)+")", + "- Temper "+getitemname(999)+" (need 5 "+getitemname(998)+", 1 "+getitemname(1003)+")", + "- Temper "+getitemname(994)+" (need 10 "+getitemname(990)+")", + "- Temper "+getitemname(995)+" (need 10 "+getitemname(991)+")", + "- Temper "+getitemname(996)+" (need 10 "+getitemname(992)+")", + "- Temper "+getitemname(997)+" (need 10 "+getitemname(993)+")", + "- Temper "+getitemname(1000)+" (need 10 "+getitemname(1001)+")" + ); + } else { + set @submenu, select( + "- Return", + "- Purify "+getitemname(984)+" (need 5 "+getitemname(756)+")", + "- Purify "+getitemname(985)+" (need 5 "+getitemname(757)+")" + ); + } + switch (@submenu) { + case 2: //Oridecon + set @item, 984; + set @rough, 756; + set @qty, 5; + break; + case 3: //Elunium + set @item, 985; + set @rough, 757; + set @qty, 5; + break; + case 4: //Iron + set @item, 998; + set @rough, 1002; + set @qty, 2; + break; + case 5: //Steel + set @item,999; + set @rough,998; + set @qty,5; + set @rough2,1003; + set @qty2,1; + + set @count,countitem(@rough1); + set @count2,countitem(@rough2); + if (@count < @qty || @count2 < @qty2) { + callfunc "F_keIntro", e_ag, "Sorry, you don't have the materials I need."; + return; + } + set @count, @count/@qty; + set @count2, @count2/@qty2; + if (@count2 < @count) + set @count,@count2; + delitem @rough2,@qty2*@count; + break; + case 6: //Fire + set @item, 994; + set @rough, 990; + set @qty, 10; + break; + case 7: //Ice + set @item, 995; + set @rough, 991; + set @qty, 10; + break; + case 8: //Wind + set @item, 996; + set @rough, 992; + set @qty, 10; + break; + case 9: //Earth + set @item, 997; + set @rough, 993; + set @qty, 10; + break; + case 10: //Star + set @item, 1000; + set @rough, 1001; + set @qty, 10; + break; + default: + return; + } + set @count,countitem(@rough); + if (@count < @qty) { + callfunc "F_keIntro", e_ag, "Sorry, you don't have the materials I need."; + return; + } + set @count, @count/@qty; + delitem @rough,@qty*@count; + getitem @item,@count; + emotion e_paper; +} + +//Subfunction: SF_sellOres() +function SF_sellOres { + do { + set @submenu, select( + "- Return", + "- Buy "+getitemname(1010)+" (200z each)", + "- Buy "+getitemname(1011)+" (1000z each)" + ); + switch (@submenu) { + case 2: //Phracon + set @mat, 1010; + set @cost, 200; + break; + case 3: //Emveratarcon + set @mat, 1011; + set @cost, 1000; + break; + default: + return; + } + input @qty; + set @cost,@cost*@qty; + if (@qty < 1) { + callfunc "F_keIntro", e_pif, "That is NOT a valid quantity..."; + } else if (@cost > Zeny) { + callfunc "F_keIntro", e_ag, "Sorry, you don't have enough zeny."; + } else if (@cost < 0) { + callfunc "F_keIntro", e_swt2, "Sorry, that's too much! Try buying less..."; + } else { + set Zeny,Zeny-@cost; + getitem @mat,@qty; + emotion e_paper; + } + } while (@submenu > 1); +} + +} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_statmarket.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_statmarket.txt index b25691cb2..286739204 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_statmarket.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_statmarket.txt @@ -1,128 +1,128 @@ -//===== eAthena Script =======================================
-//= Kafra Expres - Stat/Skill Market Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 2.0
-//===== Compatible With: =====================================
-//= eAthena SVN R3579+
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= Lets players buy/sell skill points/stat points
-//===== Additional Comments: =================================
-//= See config.txt for configuration.
-//============================================================
-
-- script keInit_statmarket -1,{
-OnInit: //Load Config
- donpcevent "keConfig::OnLoadStatMarket";
- end;
-}
-
-function script F_keStatMarket {
- set @discount,callfunc("F_keCost",100,$@kesm_discount);
- do {
- set @kmenu, select (
- "- Return",
- "- Buy Stat points ("+($@kesm_stBuyPrice*@discount/100)+"z each)",
- "- Sell Stat points (up to "+StatusPoint+"/"+$@kesm_stSellPrice+"z each)",
- "- Buy Skill points ("+($@kesm_skBuyPrice*@discount/100)+"z each)",
- "- Sell Skill points (up to "+SkillPoint+"/"+$@kesm_skSellPrice+"z each)",
- "- Trade Stats -> Skill ("+$@kesm_skTradePrice+" stats/skill)",
- "- Trade Skills -> Stats ("+$@kesm_stTradePrice+" stats/skill)"
- );
- if (@kmenu > 1)
- input @qty;
- switch (@kmenu) {
- case 2: //Buy Stat
- set @min, 1;
- set @max, 9999;
- set @cost, @qty*$@kesm_stBuyPrice;
- break;
- case 3: //Sell Stat
- input @qty;
- set @min, 1;
- set @max, StatusPoint;
- set @cost, @qty*$@kesm_stSellPrice;
- break;
- case 4: //Buy Skill
- set @min, 1;
- set @max, 9999;
- set @cost, @qty*$@kesm_skBuyPrice;
- break;
- case 5: //Sell Skill
- set @min, 1;
- set @max, SkillPoint;
- set @cost, @qty*$@kesm_skSellPrice;
- break;
- case 6: //Convert stats -> skills
- set @min, $@kesm_skTradePrice;
- set @max, StatusPoint;
- set @cost, @qty/$@kesm_skTradePrice;
- break;
- case 7: //Convert skills -> stats
- set @min, 1;
- set @max, SkillPoint;
- set @cost, @qty*$@kesm_stTradePrice;
- break;
- default:
- return;
- }
- if (@qty < @min) {
- if (@min == 1)
- callfunc "F_keIntro", e_dots, "Was that supposed to be funny?";
- else
- callfunc "F_keIntro", e_dots, "That is not enough to buy a single skill...";
- } else
- if (@qty > @max) {
- if (@max == 9999)
- callfunc "F_keIntro", e_X, "You can't buy that much!";
- else
- callfunc "F_keIntro", e_X, "You don't have that many to sell...";
- } else
- if (@cost < 0) {
- callfunc "F_keIntro", e_swt2, "That is too much for a single transaction! Try a smaller quantity... please?";
- } else {
- switch(@kmenu) {
- case 2: //Buy Stat
- if (!(callfunc("F_keCharge",@cost,$@kesm_discount,1))) {
- callfunc "F_keIntro", e_X, "You do not have enough zeny to buy that much.";
- break;
- }
- set StatusPoint,StatusPoint+@qty;
- emotion e_oh;
- break;
- case 3: //Sell Stat
- set StatusPoint,StatusPoint-@qty;
- set Zeny,Zeny+@cost;
- emotion e_oh;
- break;
- case 4: //Buy Skill
- if (!(callfunc("F_keCharge",@cost,$@kesm_discount,1))) {
- callfunc "F_keIntro", e_X, "You do not have enough zeny to buy that much.";
- break;
- }
- set SkillPoint,SkillPoint+@qty;
- emotion e_oh;
- break;
- case 5: //Sell Skill
- set SkillPoint,SkillPoint-@qty;
- set Zeny,Zeny+@cost;
- emotion e_oh;
- break;
- case 6: //Convert stats -> skills
- set @qty, @cost*$@kesm_skTradePrice;
- set StatusPoint,StatusPoint-@qty;
- set SkillPoint,SkillPoint+@cost;
- emotion e_oh;
- break;
- case 7: //Convert skills -> stats
- set SkillPoint,SkillPoint-@qty;
- set StatusPoint,StatusPoint+@cost;
- emotion e_oh;
- break;
- }
- }
- } while (@kmenu > 1);
- return;
-}
+//===== eAthena Script ======================================= +//= Kafra Expres - Stat/Skill Market Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 2.0 +//===== Compatible With: ===================================== +//= eAthena SVN R3579+ +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= Lets players buy/sell skill points/stat points +//===== Additional Comments: ================================= +//= See config.txt for configuration. +//============================================================ + +- script keInit_statmarket -1,{ +OnInit: //Load Config + donpcevent "keConfig::OnLoadStatMarket"; + end; +} + +function script F_keStatMarket { + set @discount,callfunc("F_keCost",100,$@kesm_discount); + do { + set @kmenu, select ( + "- Return", + "- Buy Stat points ("+($@kesm_stBuyPrice*@discount/100)+"z each)", + "- Sell Stat points (up to "+StatusPoint+"/"+$@kesm_stSellPrice+"z each)", + "- Buy Skill points ("+($@kesm_skBuyPrice*@discount/100)+"z each)", + "- Sell Skill points (up to "+SkillPoint+"/"+$@kesm_skSellPrice+"z each)", + "- Trade Stats -> Skill ("+$@kesm_skTradePrice+" stats/skill)", + "- Trade Skills -> Stats ("+$@kesm_stTradePrice+" stats/skill)" + ); + if (@kmenu > 1) + input @qty; + switch (@kmenu) { + case 2: //Buy Stat + set @min, 1; + set @max, 9999; + set @cost, @qty*$@kesm_stBuyPrice; + break; + case 3: //Sell Stat + input @qty; + set @min, 1; + set @max, StatusPoint; + set @cost, @qty*$@kesm_stSellPrice; + break; + case 4: //Buy Skill + set @min, 1; + set @max, 9999; + set @cost, @qty*$@kesm_skBuyPrice; + break; + case 5: //Sell Skill + set @min, 1; + set @max, SkillPoint; + set @cost, @qty*$@kesm_skSellPrice; + break; + case 6: //Convert stats -> skills + set @min, $@kesm_skTradePrice; + set @max, StatusPoint; + set @cost, @qty/$@kesm_skTradePrice; + break; + case 7: //Convert skills -> stats + set @min, 1; + set @max, SkillPoint; + set @cost, @qty*$@kesm_stTradePrice; + break; + default: + return; + } + if (@qty < @min) { + if (@min == 1) + callfunc "F_keIntro", e_dots, "Was that supposed to be funny?"; + else + callfunc "F_keIntro", e_dots, "That is not enough to buy a single skill..."; + } else + if (@qty > @max) { + if (@max == 9999) + callfunc "F_keIntro", e_X, "You can't buy that much!"; + else + callfunc "F_keIntro", e_X, "You don't have that many to sell..."; + } else + if (@cost < 0) { + callfunc "F_keIntro", e_swt2, "That is too much for a single transaction! Try a smaller quantity... please?"; + } else { + switch(@kmenu) { + case 2: //Buy Stat + if (!(callfunc("F_keCharge",@cost,$@kesm_discount,1))) { + callfunc "F_keIntro", e_X, "You do not have enough zeny to buy that much."; + break; + } + set StatusPoint,StatusPoint+@qty; + emotion e_oh; + break; + case 3: //Sell Stat + set StatusPoint,StatusPoint-@qty; + set Zeny,Zeny+@cost; + emotion e_oh; + break; + case 4: //Buy Skill + if (!(callfunc("F_keCharge",@cost,$@kesm_discount,1))) { + callfunc "F_keIntro", e_X, "You do not have enough zeny to buy that much."; + break; + } + set SkillPoint,SkillPoint+@qty; + emotion e_oh; + break; + case 5: //Sell Skill + set SkillPoint,SkillPoint-@qty; + set Zeny,Zeny+@cost; + emotion e_oh; + break; + case 6: //Convert stats -> skills + set @qty, @cost*$@kesm_skTradePrice; + set StatusPoint,StatusPoint-@qty; + set SkillPoint,SkillPoint+@cost; + emotion e_oh; + break; + case 7: //Convert skills -> stats + set SkillPoint,SkillPoint-@qty; + set StatusPoint,StatusPoint+@cost; + emotion e_oh; + break; + } + } + } while (@kmenu > 1); + return; +} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_stats.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_stats.txt index 8ad75e7a6..73618c9eb 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_stats.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_stats.txt @@ -1,130 +1,130 @@ -//===== eAthena Script =======================================
-//= Kafra Express - Stat/Reset Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 2.2
-//===== Compatible With: =====================================
-//= eAthena SVN R3424+
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= Offers stat raising and Stat/Reset skills
-//===== Additional Comments: =================================
-//= See config.txt for configuration.
-//============================================================
-
-- script keInit_stats -1,{
-OnInit: //Load Config
- donpcevent "keConfig::OnLoadStats";
- end;
-}
-
-function script F_keStats {
-
- function SF_statRaise;
-
- set @discount,callfunc("F_keCost",100,$@kest_discount);
- do {
- set @kmenu, select(
- "- Return",
- "- Raise Stats",
- "- Reset Stats ("+$@kest_stResetCost+"z+"+$@kest_BaseLvCost+"/blv)",
- "- Reset Skills ("+$@kest_skResetCost+"z+"+$@kest_JobLvCost+"/jlv)",
- "- Reset Both ("+$@kest_resetCost+"z+"+$@kest_BothLvCost+"/lv)"
- );
- switch (@kmenu) {
- case 2: //Stat raising
- SF_statRaise();
- set @cost, 0;
- set @reset, 0;
- break;
- case 3: //Reset Stat
- set @cost, $@kest_stResetCost+BaseLevel*$@kest_BaseLvCost;
- set @reset, 1;
- break;
- case 4: //Reset Skills
- set @cost, $@kest_skResetCost+(JobLevel+jobchange_level)*$@kest_JobLvCost;
- set @reset, 2;
- break;
- case 5: //Reset Both
- set @cost, $@kest_resetCost+(BaseLevel+JobLevel+jobchange_level)*$@kest_BothLvCost;
- set @reset, 3;
- break;
- default: //Cancel
- set @cost, 0;
- set @reset, 0;
- break;
- }
- if (@reset > 0) {
- if (select("- Cancel","- Reset for "+(@cost*@discount/100)+"z") == 2) {
- if (!(callfunc("F_keCharge",@cost,$@kest_discount,1))) {
- callfunc "F_keIntro", e_an, "Sorry, you don't have enough Zeny.";
- } else {
- if (@reset&1)
- ResetStatus;
- if (@reset&2) {
- if ($@kest_resetBasic)
- ResetSkill;
- else {
- set @skill1,getskilllv(1);
- ResetSkill;
- skill 1,@skill1,0;
- set SkillPoint,SkillPoint-@skill1;
- }
- }
- emotion e_hmm;
- }
- }
- }
- } while (@kmenu > 1);
- return;
-
-function SF_statRaise {
- do {
- set @submenu, select(
- "- Return",
- "- Raise Strength",
- "- Raise Agility",
- "- Raise Vitality",
- "- Raise Intelligence",
- "- Raise Dexterity",
- "- Raise Luck"
- );
- switch (@submenu) {
- case 2:
- set @stat,bStr;
- break;
- case 3:
- set @stat,bAgi;
- break;
- case 4:
- set @stat,bVit;
- break;
- case 5:
- set @stat,bInt;
- break;
- case 6:
- set @stat,bDex;
- break;
- case 7:
- set @stat,bLuk;
- break;
- default:
- return;
- }
- input @qty;
- if (@qty <1) {
- callfunc "F_keIntro", e_swt, "I don't lower stats, try resetting them.";
- } else if (@qty >100) {
- callfunc "F_keIntro", e_swt2, "Sorry... I can only raise stats up to 100 at a time.";
- } else {
- do {
- statusup @stat;
- set @qty,@qty-1;
- } while (@qty > 0);
- emotion e_ok;
- }
- } while (@submenu > 1);
-}
-
-}
+//===== eAthena Script ======================================= +//= Kafra Express - Stat/Reset Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 2.2 +//===== Compatible With: ===================================== +//= eAthena SVN R3424+ +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= Offers stat raising and Stat/Reset skills +//===== Additional Comments: ================================= +//= See config.txt for configuration. +//============================================================ + +- script keInit_stats -1,{ +OnInit: //Load Config + donpcevent "keConfig::OnLoadStats"; + end; +} + +function script F_keStats { + + function SF_statRaise; + + set @discount,callfunc("F_keCost",100,$@kest_discount); + do { + set @kmenu, select( + "- Return", + "- Raise Stats", + "- Reset Stats ("+$@kest_stResetCost+"z+"+$@kest_BaseLvCost+"/blv)", + "- Reset Skills ("+$@kest_skResetCost+"z+"+$@kest_JobLvCost+"/jlv)", + "- Reset Both ("+$@kest_resetCost+"z+"+$@kest_BothLvCost+"/lv)" + ); + switch (@kmenu) { + case 2: //Stat raising + SF_statRaise(); + set @cost, 0; + set @reset, 0; + break; + case 3: //Reset Stat + set @cost, $@kest_stResetCost+BaseLevel*$@kest_BaseLvCost; + set @reset, 1; + break; + case 4: //Reset Skills + set @cost, $@kest_skResetCost+(JobLevel+jobchange_level)*$@kest_JobLvCost; + set @reset, 2; + break; + case 5: //Reset Both + set @cost, $@kest_resetCost+(BaseLevel+JobLevel+jobchange_level)*$@kest_BothLvCost; + set @reset, 3; + break; + default: //Cancel + set @cost, 0; + set @reset, 0; + break; + } + if (@reset > 0) { + if (select("- Cancel","- Reset for "+(@cost*@discount/100)+"z") == 2) { + if (!(callfunc("F_keCharge",@cost,$@kest_discount,1))) { + callfunc "F_keIntro", e_an, "Sorry, you don't have enough Zeny."; + } else { + if (@reset&1) + ResetStatus; + if (@reset&2) { + if ($@kest_resetBasic) + ResetSkill; + else { + set @skill1,getskilllv(1); + ResetSkill; + skill 1,@skill1,0; + set SkillPoint,SkillPoint-@skill1; + } + } + emotion e_hmm; + } + } + } + } while (@kmenu > 1); + return; + +function SF_statRaise { + do { + set @submenu, select( + "- Return", + "- Raise Strength", + "- Raise Agility", + "- Raise Vitality", + "- Raise Intelligence", + "- Raise Dexterity", + "- Raise Luck" + ); + switch (@submenu) { + case 2: + set @stat,bStr; + break; + case 3: + set @stat,bAgi; + break; + case 4: + set @stat,bVit; + break; + case 5: + set @stat,bInt; + break; + case 6: + set @stat,bDex; + break; + case 7: + set @stat,bLuk; + break; + default: + return; + } + input @qty; + if (@qty <1) { + callfunc "F_keIntro", e_swt, "I don't lower stats, try resetting them."; + } else if (@qty >100) { + callfunc "F_keIntro", e_swt2, "Sorry... I can only raise stats up to 100 at a time."; + } else { + do { + statusup @stat; + set @qty,@qty-1; + } while (@qty > 0); + emotion e_ok; + } + } while (@submenu > 1); +} + +} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_uncard.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_uncard.txt index d39d5d1bc..4ff5b7c8b 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_uncard.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_uncard.txt @@ -1,165 +1,165 @@ -//===== eAthena Script =======================================
-//= Kafra Express - Uncarder Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 1.5
-//===== Compatible With: =====================================
-//= eAthena SVN R3424+
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= Offers uncarding services.
-//===== Additional Comments: =================================
-//= See config.txt for configuration.
-//============================================================
-
-- script keInit_uncard -1,{
-OnInit: //Load Config
- donpcevent "keConfig::OnLoadUncard";
- end;
-}
-
-function script F_keUncard {
-
-function SF_uncard;
-
- do {
- set @kmenu, select(
- "- Return",
- "- See Price Specifics",
- "- "+getequipname(1),
- "- "+getequipname(2),
- "- "+getequipname(3),
- "- "+getequipname(4),
- "- "+getequipname(5),
- "- "+getequipname(6),
- "- "+getequipname(7),
- "- "+getequipname(8),
- "- "+getequipname(9),
- "- "+getequipname(10)
- );
- if (@kmenu == 1)
- return;
- if (@kmenu == 2) { //Details
- mes "Okay, listen up...";
- next;
- mes "["+@name$+"]";
- if ($@keuc_BaseCost)
- mes "The base cost is of "+$@keuc_BaseCost+"z.";
- mes "Each card to be removed incurs a cost of +"+$@keuc_CardCost+"z.";
- mes "The refine level of the compounded equipment can incur an additional cost:";
- mes "Armors: "+$@keuc_UpgradeCostA+"z per level.";
- mes "Lv1 Weapons: "+$@keuc_UpgradeCostW1+"z per level.";
- mes "Lv2 Weapons: "+$@keuc_UpgradeCostW2+"z per level.";
- mes "Lv3 Weapons: "+$@keuc_UpgradeCostW3+"z per level.";
- mes "Lv4 Weapons: "+$@keuc_UpgradeCostW4+"z per level.";
-
- if ($@keuc_Mat1 && $@keuc_Qty1) {
- mes "The materials needed are:";
- mes "- "+$@keuc_Qty1+" "+getitemname($@keuc_Mat1)+".";
- }
- if ($@keuc_Mat2 && $@keuc_Qty2)
- mes "- "+$@keuc_Qty2+" "+getitemname($@keuc_Mat2)+".";
-
- if ($@keuc_Fail1Chance || $@keuc_Fail2Chance)
- mes "There is a chance the process might fail and you'll lose your items.";
-
- next;
- callfunc "F_keIntro", -1, "";
- } else {
- if (SF_uncard(@kmenu-2))
- return;
- }
- } while (@kmenu >1);
- return;
-
-//Subfunction SF_uncard (equipment-position)
-//Attempts to uncard the equipment.
-function SF_uncard {
- set @part, getarg(0);
- if(getequipcardcnt(@part) == 0) {
- callfunc "F_keIntro", e_ag, "There are no cards to remove there!";
- return 0;
- }
- set @cost, $@keuc_BaseCost;
- set @cost, @cost + $@keuc_CardCost*getequipcardcnt(@part);
-
- switch (getequipweaponlv(@part)) {
- case 0: //Armor
- set @upgradeCost, $@keuc_UpgradeCostA;
- break;
- case 1: //Lv1 Weapons
- set @upgradeCost, $@keuc_UpgradeCostW1;
- break;
- case 2: //Lv2 Weapons
- set @upgradeCost, $@keuc_UpgradeCostW2;
- break;
- case 3: //Lv3 Weapons
- set @upgradeCost, $@keuc_UpgradeCostW3;
- break;
- default: //Lv4 Weapons
- set @upgradeCost, $@keuc_UpgradeCostW4;
- }
-
- set @cost, @cost + @upgradeCost*getequiprefinerycnt(@part);
-
- set @price, callfunc("F_keCost",@cost,$@keuc_discount);
-
- if ($@keuc_Fail1Chance) {
- set @failsave, select(
- "- Cancel",
- "- Remove cards ("+@price+"z, item gets priority)",
- "- Remove cards ("+@price+"z, cards get priority)"
- );
- } else {
- set @failsave, select(
- "- Cancel",
- "- Remove cards ("+@price+"z)"
- );
- }
- if (@failsave == 1)
- return 0;
- set @failsave, @failsave-1; //1: Save item, 2: Save Card
-
- if (($@keuc_Mat1 && countitem($@keuc_Mat1) < $@keuc_Qty1)
- || ($@keuc_Mat2 && countitem($@keuc_Mat2) < $@keuc_Qty2)) {
- callfunc "F_keIntro", e_pif, "You do not have all the materials I need...";
- return 0;
- }
-
- if (!(callfunc("F_keCharge",@cost,$@keuc_discount,1))) {
- callfunc "F_keIntro", e_ag, "Sorry, you don't have enough zeny.";
- return 0;
- }
-
- if ($@keuc_Mat1 && $@keuc_Qty1)
- delitem $@keuc_Mat1, $@keuc_Qty1;
- if ($@keuc_Mat2 && $@keuc_Qty2)
- delitem $@keuc_Mat2, $@keuc_Qty2;
-
- set @failtype,-1;
- //Recycling cost...
- set @cost, rand(1000);
- if (@cost < $@keuc_Fail2Chance) //Total Failure
- set @failtype, 0;
- else if (@cost < $@keuc_Fail1Chance) //Partial Failure
- set @failtype, @failsave;
- else if (@cost < $@keuc_Fail0Chance) //Harmless Failure
- set @failtype, 3;
- else { //Success
- successremovecards @part;
- emotion e_ho;
- return 1;
- }
- failedremovecards @part,@failtype;
- if (@failtype == 1)
- mes "The cards were lost...";
- if (@failtype == 2)
- mes "The item was lost...";
- if (@failtype == 0)
- mes "Lost the cards and item...";
- callfunc "F_keIntro", e_swt, "...oops.";
- return 1;
-}
-
-}
+//===== eAthena Script ======================================= +//= Kafra Express - Uncarder Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 1.5 +//===== Compatible With: ===================================== +//= eAthena SVN R3424+ +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= Offers uncarding services. +//===== Additional Comments: ================================= +//= See config.txt for configuration. +//============================================================ + +- script keInit_uncard -1,{ +OnInit: //Load Config + donpcevent "keConfig::OnLoadUncard"; + end; +} + +function script F_keUncard { + +function SF_uncard; + + do { + set @kmenu, select( + "- Return", + "- See Price Specifics", + "- "+getequipname(1), + "- "+getequipname(2), + "- "+getequipname(3), + "- "+getequipname(4), + "- "+getequipname(5), + "- "+getequipname(6), + "- "+getequipname(7), + "- "+getequipname(8), + "- "+getequipname(9), + "- "+getequipname(10) + ); + if (@kmenu == 1) + return; + if (@kmenu == 2) { //Details + mes "Okay, listen up..."; + next; + mes "["+@name$+"]"; + if ($@keuc_BaseCost) + mes "The base cost is of "+$@keuc_BaseCost+"z."; + mes "Each card to be removed incurs a cost of +"+$@keuc_CardCost+"z."; + mes "The refine level of the compounded equipment can incur an additional cost:"; + mes "Armors: "+$@keuc_UpgradeCostA+"z per level."; + mes "Lv1 Weapons: "+$@keuc_UpgradeCostW1+"z per level."; + mes "Lv2 Weapons: "+$@keuc_UpgradeCostW2+"z per level."; + mes "Lv3 Weapons: "+$@keuc_UpgradeCostW3+"z per level."; + mes "Lv4 Weapons: "+$@keuc_UpgradeCostW4+"z per level."; + + if ($@keuc_Mat1 && $@keuc_Qty1) { + mes "The materials needed are:"; + mes "- "+$@keuc_Qty1+" "+getitemname($@keuc_Mat1)+"."; + } + if ($@keuc_Mat2 && $@keuc_Qty2) + mes "- "+$@keuc_Qty2+" "+getitemname($@keuc_Mat2)+"."; + + if ($@keuc_Fail1Chance || $@keuc_Fail2Chance) + mes "There is a chance the process might fail and you'll lose your items."; + + next; + callfunc "F_keIntro", -1, ""; + } else { + if (SF_uncard(@kmenu-2)) + return; + } + } while (@kmenu >1); + return; + +//Subfunction SF_uncard (equipment-position) +//Attempts to uncard the equipment. +function SF_uncard { + set @part, getarg(0); + if(getequipcardcnt(@part) == 0) { + callfunc "F_keIntro", e_ag, "There are no cards to remove there!"; + return 0; + } + set @cost, $@keuc_BaseCost; + set @cost, @cost + $@keuc_CardCost*getequipcardcnt(@part); + + switch (getequipweaponlv(@part)) { + case 0: //Armor + set @upgradeCost, $@keuc_UpgradeCostA; + break; + case 1: //Lv1 Weapons + set @upgradeCost, $@keuc_UpgradeCostW1; + break; + case 2: //Lv2 Weapons + set @upgradeCost, $@keuc_UpgradeCostW2; + break; + case 3: //Lv3 Weapons + set @upgradeCost, $@keuc_UpgradeCostW3; + break; + default: //Lv4 Weapons + set @upgradeCost, $@keuc_UpgradeCostW4; + } + + set @cost, @cost + @upgradeCost*getequiprefinerycnt(@part); + + set @price, callfunc("F_keCost",@cost,$@keuc_discount); + + if ($@keuc_Fail1Chance) { + set @failsave, select( + "- Cancel", + "- Remove cards ("+@price+"z, item gets priority)", + "- Remove cards ("+@price+"z, cards get priority)" + ); + } else { + set @failsave, select( + "- Cancel", + "- Remove cards ("+@price+"z)" + ); + } + if (@failsave == 1) + return 0; + set @failsave, @failsave-1; //1: Save item, 2: Save Card + + if (($@keuc_Mat1 && countitem($@keuc_Mat1) < $@keuc_Qty1) + || ($@keuc_Mat2 && countitem($@keuc_Mat2) < $@keuc_Qty2)) { + callfunc "F_keIntro", e_pif, "You do not have all the materials I need..."; + return 0; + } + + if (!(callfunc("F_keCharge",@cost,$@keuc_discount,1))) { + callfunc "F_keIntro", e_ag, "Sorry, you don't have enough zeny."; + return 0; + } + + if ($@keuc_Mat1 && $@keuc_Qty1) + delitem $@keuc_Mat1, $@keuc_Qty1; + if ($@keuc_Mat2 && $@keuc_Qty2) + delitem $@keuc_Mat2, $@keuc_Qty2; + + set @failtype,-1; + //Recycling cost... + set @cost, rand(1000); + if (@cost < $@keuc_Fail2Chance) //Total Failure + set @failtype, 0; + else if (@cost < $@keuc_Fail1Chance) //Partial Failure + set @failtype, @failsave; + else if (@cost < $@keuc_Fail0Chance) //Harmless Failure + set @failtype, 3; + else { //Success + successremovecards @part; + emotion e_ho; + return 1; + } + failedremovecards @part,@failtype; + if (@failtype == 1) + mes "The cards were lost..."; + if (@failtype == 2) + mes "The item was lost..."; + if (@failtype == 0) + mes "Lost the cards and item..."; + callfunc "F_keIntro", e_swt, "...oops."; + return 1; +} + +} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_dungeon.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_dungeon.txt index 84cbef768..2bc99b515 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_dungeon.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_dungeon.txt @@ -1,1761 +1,1761 @@ -//===== eAthena Script =======================================
-//= Kafra Express - Dungeon Warps Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 3.5
-//===== Compatible With: =====================================
-//= eAthena SVN R3424+, RO Episode 8+ (Hugel)
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= Offers warping to dungeons.
-//===== Additional Comments: =================================
-//= See config.txt for configuration.
-//= Flag values used for dungeons:
-//= 0x00000001 Abyss Lake
-//= 0x00000002 Amatsu
-//= 0x00000004 AntHell
-//= 0x00000008 Ayothaya
-//= 0x00000010 Byalan
-//= 0x00000020 Comodo
-//= 0x00000040 Clock tower
-//= 0x00000080 Coal Mines
-//= 0x00000100 Culvert
-//= 0x00000200 Einbech
-//= 0x00000400 Gefenia
-//= 0x00000800 Geffen
-//= 0x00001000 GlastHeim
-//= 0x00002000 Gon Ryun
-//= 0x00004000 Hidden Temple
-//= 0x00008000 Juperos
-//= 0x00010000 Lighthalzen
-//= 0x00020000 Lou Yang
-//= 0x00040000 Magma Caves
-//= 0x00080000 Orcs
-//= 0x00100000 Payon
-//= 0x00200000 Pyramid
-//= 0x00400000 Sphinx
-//= 0x00800000 Sunken Ship
-//= 0x01000000 Thanatos
-//= 0x02000000 Toy Factory
-//= 0x04000000 Turtle Island
-//= 0x08000000 Umbala
-
-//============================================================
-
-- script keInit_warpDungeon -1,{
-OnInit: //Load Config
- donpcevent "keConfig::OnLoadWarpDungeon";
- end;
-}
-
-function script F_keDungeonWarps {
-
-function SF_abyssLake;
-function SF_amatsu;
-function SF_antHell;
-function SF_ayothaya;
-function SF_byalan;
-function SF_comodo;
-function SF_clockTower;
-function SF_coalMine;
-function SF_culvert;
-function SF_einbech;
-function SF_gefenia;
-function SF_geffen;
-function SF_glastHeim;
-function SF_gonRyun;
-function SF_hiddenTemple;
-function SF_juperos;
-function SF_lightHalzen;
-function SF_louYang;
-function SF_magma;
-function SF_orcs;
-function SF_payon;
-function SF_pyramid;
-function SF_sphinx;
-function SF_sunkenShip;
-function SF_thanatosTower;
-function SF_toyFactory;
-function SF_turtleIsland;
-function SF_umbala;
- //Store player map, will be needed in any of the submenus.
- set @map$, getarg(0);
- do {
- set @discount,callfunc("F_keCost",100,$@kewd_discount);
- if ($@kewd_showOnline) {
- set @kmenu, select (
- "- Cancel",
- "- Abyss Lake ("+$@kewd_abyssLake*@discount/100+"z/"+(getmapusers("abyss_01.gat")
- +getmapusers("abyss_02.gat")+getmapusers("abyss_03.gat"))+" "+$@ked_users$+")",
- "- Amatsu Dungeon ("+$@kewd_amatsu*@discount/100+"z/"+(getmapusers("ama_dun01.gat")
- +getmapusers("ama_dun02.gat")+getmapusers("ama_dun03.gat"))+" "+$@ked_users$+")",
- "- Ant Hell ("+$@kewd_antHell*@discount/100+"z/"+(getmapusers("anthell01.gat")
- +getmapusers("anthell02.gat"))+" "+$@ked_users$+")",
- "- Ayothaya Ancient Shrine ("+$@kewd_ayothaya*@discount/100+"z/"+(getmapusers("ayo_dun01.gat")
- +getmapusers("ayo_dun02.gat"))+" "+$@ked_users$+")",
- "- Byalan Dungeon ("+$@kewd_byalan*@discount/100+"z/"+(getmapusers("iz_dun00.gat")
- +getmapusers("iz_dun01.gat")+getmapusers("iz_dun02.gat")+getmapusers("iz_dun03.gat")
- +getmapusers("iz_dun04.gat"))+" "+$@ked_users$+")",
- "- Comodo Caves ("+$@kewd_comodo*@discount/100+"z/"+(getmapusers("beach_dun.gat")
- +getmapusers("beach_dun2.gat")+getmapusers("beach_dun3.gat"))+" "+$@ked_users$+")",
- "- Clock Tower ("+$@kewd_clockTower*@discount/100+"z/"+(getmapusers("c_tower1.gat")
- +getmapusers("c_tower2.gat")+getmapusers("c_tower3.gat")+getmapusers("c_tower4.gat")
- +getmapusers("alde_dun01.gat")+getmapusers("alde_dun02.gat")+getmapusers("alde_dun03.gat")
- +getmapusers("alde_dun04.gat"))+" "+$@ked_users$+")",
- "- Coal Mine ("+$@kewd_coalMines*@discount/100+"z/"+(getmapusers("mjo_dun01.gat")
- +getmapusers("mjo_dun02.gat")+getmapusers("mjo_dun03.gat"))+" "+$@ked_users$+")",
- "- Culvert ("+$@kewd_culvert*@discount/100+"z/"+(getmapusers("prt_sewb1.gat")+getmapusers("prt_sewb2.gat")
- +getmapusers("prt_sewb3.gat")+getmapusers("prt_sewb4.gat"))+" "+$@ked_users$+")",
- "- Einbroch Station ("+$@kewd_einbech*@discount/100+"z/"+(getmapusers("ein_dun01.gat")
- +getmapusers("ein_dun02.gat"))+" "+$@ked_users$+")",
- "- Gefenia ("+$@kewd_gefenia*@discount/100+"z/"+(getmapusers("gefenia01.gat")+getmapusers("gefenia02.gat")
- +getmapusers("gefenia03.gat")+getmapusers("gefenia04.gat"))+" "+$@ked_users$+")",
- "- Geffen Dungeon ("+$@kewd_geffen*@discount/100+"z/"+(getmapusers("gef_dun00.gat")
- +getmapusers("gef_dun01.gat")+getmapusers("gef_dun02.gat")+getmapusers("gef_dun03.gat"))+" "+$@ked_users$+")",
- "- Glast Heim ("+$@kewd_glastHeim*@discount/100+"z/"+(getmapusers("gl_cas02.gat")+getmapusers("gl_church.gat")
- +getmapusers("gl_chyard.gat")+getmapusers("gl_dun01.gat")+getmapusers("gl_dun02.gat")
- +getmapusers("gl_in01.gat")+getmapusers("gl_knt01.gat")+getmapusers("gl_knt02.gat")
- +getmapusers("gl_prison.gat")+getmapusers("gl_prison1.gat")+getmapusers("gl_sew01.gat")
- +getmapusers("gl_sew02.gat")+getmapusers("gl_sew03.gat")+getmapusers("gl_sew04.gat")
- +getmapusers("gl_step.gat")+getmapusers("glast_01.gat"))+" "+$@ked_users$+")",
- "- Gon Ryun Dungeon ("+$@kewd_gonRyun*@discount/100+"z/"+(getmapusers("gon_dun01.gat")
- +getmapusers("gon_dun02.gat")+getmapusers("gon_dun03.gat"))+" "+$@ked_users$+")",
- "- Hidden Temple ("+$@kewd_hiddenTemple*@discount/100+"z/"+(getmapusers("prt_maze01.gat")
- +getmapusers("prt_maze02.gat")+getmapusers("prt_maze03.gat"))+" "+$@ked_users$+")",
- "- Juperos ("+$@kewd_juperos*@discount/100+"z/"+(getmapusers("juperos_01.gat")+getmapusers("juperos_02.gat")
- +getmapusers("jupe_area1.gat")+getmapusers("jupe_area2.gat")+getmapusers("jupe_core.gat")
- +getmapusers("jupe_gate.gat")+getmapusers("jupe_area1.gat"))+" "+$@ked_users$+")",
- "- LightHalzen Rekkenber ("+$@kewd_lightHalzen*@discount/100+"z/"+(getmapusers("lhz_dun01.gat")
- +getmapusers("lhz_dun02.gat")+getmapusers("lhz_dun03.gat"))+" "+$@ked_users$+")",
- "- Lou Yang Royal Tomb ("+$@kewd_louYang*@discount/100+"z/"+(getmapusers("lou_dun01.gat")
- +getmapusers("lou_dun02.gat")+getmapusers("lou_dun03.gat"))+" "+$@ked_users$+")",
- "- Magma Dungeon ("+$@kewd_magma*@discount/100+"z/"+(getmapusers("mag_dun01.gat")
- +getmapusers("mag_dun02.gat"))+" "+$@ked_users$+")",
- "- Orc Dungeon ("+$@kewd_orc*@discount/100+"z/"+(getmapusers("orcsdun01.gat")
- +getmapusers("orcsdun02.gat"))+" "+$@ked_users$+")",
- "- Payon Dungeon ("+$@kewd_payon*@discount/100+"z/"+(getmapusers("pay_dun00.gat")
- +getmapusers("pay_dun01.gat")+getmapusers("pay_dun02.gat")+getmapusers("pay_dun03.gat")
- +getmapusers("pay_dun04.gat"))+" "+$@ked_users$+")",
- "- Pyramid ("+$@kewd_pyramid*@discount/100+"z/"+(getmapusers("moc_pryd01.gat")+getmapusers("moc_pryd02.gat")
- +getmapusers("moc_pryd03.gat")+getmapusers("moc_pryd04.gat")+getmapusers("moc_pryd05.gat")
- +getmapusers("moc_pryd06.gat")+getmapusers("moc_prydb1.gat"))+" "+$@ked_users$+")",
- "- Sphinx ("+$@kewd_sphinx*@discount/100+"z/"+(getmapusers("in_sphinx1.gat")
- +getmapusers("in_sphinx2.gat")+getmapusers("in_sphinx3.gat")+getmapusers("in_sphinx4.gat")
- +getmapusers("in_sphinx5.gat"))+" "+$@ked_users$+")",
- "- Sunken Ship ("+$@kewd_sunkenShip*@discount/100+"z/"+(getmapusers("treasure01.gat")
- +getmapusers("treasure02.gat"))+" "+$@ked_users$+")",
- "- Thanatos Tower ("+$@kewd_thanatosTower*@discount/100+"z/"+(getmapusers("tha_t01.gat")
- +getmapusers("tha_t02.gat")+getmapusers("tha_t03.gat")+getmapusers("tha_t04.gat")
- +getmapusers("tha_t05.gat")+getmapusers("tha_t06.gat")+getmapusers("tha_t07.gat")
- +getmapusers("tha_t08.gat")+getmapusers("tha_t09.gat")+getmapusers("tha_t10.gat")
- +getmapusers("tha_t11.gat")+getmapusers("tha_t12.gat")+getmapusers("thana_step.gat")
- +getmapusers("thana_boss.gat"))+" "+$@ked_users$+")",
- "- Toy Factory ("+$@kewd_toyFactory*@discount/100+"z/"+(getmapusers("xmas_dun01.gat")
- +getmapusers("xmas_dun02.gat"))+" "+$@ked_users$+")",
- "- Turtle Island ("+$@kewd_turtleIsland*@discount/100+"z/"+(getmapusers("tur_dun01.gat")
- +getmapusers("tur_dun02.gat")+getmapusers("tur_dun03.gat")+getmapusers("tur_dun04.gat")
- +getmapusers("tur_dun05.gat")+getmapusers("tur_dun06.gat"))+" "+$@ked_users$+")",
- "- Umbala Dungeon ("+$@kewd_umbala*@discount/100+"z/"+(getmapusers("um_dun01.gat")
- +getmapusers("um_dun02.gat"))+" "+$@ked_users$+")"
- );
- } else {
- set @kmenu, select(
- "- Cancel",
- "- Abyss Lake ("+$@kewd_abyssLake*@discount/100+"z)",
- "- Amatsu Dungeon ("+$@kewd_amatsu*@discount/100+"z)",
- "- Ant Hell ("+$@kewd_antHell*@discount/100+"z)",
- "- Ayothaya Ancient Shrine ("+$@kewd_ayothaya*@discount/100+"z)",
- "- Byalan Dungeon ("+$@kewd_byalan*@discount/100+"z)",
- "- Comodo Caves ("+$@kewd_comodo*@discount/100+"z)",
- "- Clock Tower ("+$@kewd_clockTower*@discount/100+"z)",
- "- Coal Mine ("+$@kewd_coalMines*@discount/100+"z)",
- "- Culvert ("+$@kewd_culvert*@discount/100+"z)",
- "- Einbroch Mine ("+$@kewd_einbech*@discount/100+"z)",
- "- Gefenia ("+$@kewd_gefenia*@discount/100+"z)",
- "- Geffen Dungeon ("+$@kewd_geffen*@discount/100+"z)",
- "- Glast Heim ("+$@kewd_glastHeim*@discount/100+"z)",
- "- Gon Ryun Dungeon ("+$@kewd_gonRyun*@discount/100+"z)",
- "- Hidden Temple ("+$@kewd_hiddenTemple*@discount/100+"z)",
- "- Juperos ("+$@kewd_juperos*@discount/100+"z)",
- "- LightHalzen Rekkenber ("+$@kewd_lightHalzen*@discount/100+"z)",
- "- Lou Yang Royal Tomb ("+$@kewd_louYang*@discount/100+"z)",
- "- Magma Dungeon ("+$@kewd_magma*@discount/100+"z)",
- "- Orcs Dungeon ("+$@kewd_orc*@discount/100+"z)",
- "- Payon Dungeon ("+$@kewd_payon*@discount/100+"z)",
- "- Pyramid ("+$@kewd_pyramid*@discount/100+"z)",
- "- Sphinx ("+$@kewd_sphinx*@discount/100+"z)",
- "- Sunken Ship ("+$@kewd_sunkenShip*@discount/100+"z)",
- "- Thanatos Tower ("+$@kewd_thanatosTower*@discount/100+"z)",
- "- Toy Factory ("+$@kewd_toyFactory*@discount/100+"z)",
- "- Turtle Island ("+$@kewd_turtleIsland*@discount/100+"z)",
- "- Umbala Dungeon ("+$@kewd_umbala*@discount/100+"z)"
- );
- }
- switch (@kmenu) {
- case 2:
- SF_abyssLake();
- break;
- case 3:
- SF_amatsu();
- break;
- case 4:
- SF_antHell();
- break;
- case 5:
- SF_ayothaya();
- break;
- case 6:
- SF_byalan();
- break;
- case 7:
- SF_comodo();
- break;
- case 8:
- SF_clockTower();
- break;
- case 9:
- SF_coalMine();
- break;
- case 10:
- SF_culvert();
- break;
- case 11:
- SF_einbech();
- break;
- case 12:
- SF_gefenia();
- break;
- case 13:
- SF_geffen();
- break;
- case 14:
- SF_glastHeim();
- break;
- case 15:
- SF_gonRyun();
- break;
- case 16:
- SF_hiddenTemple();
- break;
- case 17:
- SF_juperos();
- break;
- case 18:
- SF_lightHalzen();
- break;
- case 19:
- SF_louYang();
- break;
- case 20:
- SF_magma();
- break;
- case 21:
- SF_orcs();
- break;
- case 22:
- SF_payon();
- break;
- case 23:
- SF_pyramid();
- break;
- case 24:
- SF_sphinx();
- break;
- case 25:
- SF_sunkenShip();
- break;
- case 26:
- SF_thanatosTower();
- break;
- case 27:
- SF_toyFactory();
- break;
- case 28:
- SF_turtleIsland();
- break;
- case 29:
- SF_umbala();
- break;
- default:
- return;
- }
- } while (@kmenu > 1);
- return;
-
-//Subfunction SF_check(flag, cost, floor-count, player-map, dungeon-map#, map#1, map#2, ...)
-//If kewd_travel is set, the flag needs to match to be to warp there.
-//Floor count is the amount of levels the dungeon needs a price for,
-//dungeon-map# is the number of maps passed that need to be checked against
-//the player's map to see if they are warping from within the entrance.
-
-function SF_check {
- if ($@kewd_travel && !((kewd_travel|#kewd_travel)&getarg(0))) {
- callfunc "F_keIntro", e_sry, "Sorry, but we can only warp you to dungeons you have saved in before.";
- return 0;
- }
- set @cost, getarg(1);
- set @discount,100;
- set @map$, getarg(3);
- set @mapI, getarg(4);
-
- while (@mapI > 0)
- {
- if (@map$ == getarg(4+@mapI)) {
- set @discount,100-$@kewd_entryDiscount;
- break;
- }
- set @mapI, @mapI-1;
- }
- set @discountKP, callfunc("F_keCost",100,$@kewd_discount);
- set @discount,@discount*@discountKP/100;
-
- set @cost,@cost*@discount/100;
- set @inc,@cost*$@kewd_levelCost/100;
-
- //@discountKP is used to reverse the price to before the KP discount takes place
- if (@discountKP == 0)
- set @discountKP,1;
- if ($@kewd_deep == 0)
- return 1;
-
- switch (getarg(2)) {
- case 9:
- set @cost9, @cost +8*@inc;
- case 8:
- set @cost8, @cost +7*@inc;
- case 7:
- set @cost7, @cost +6*@inc;
- case 6:
- set @cost6, @cost +5*@inc;
- case 5:
- set @cost5, @cost +4*@inc;
- case 4:
- set @cost4, @cost +3*@inc;
- case 3:
- set @cost3, @cost +2*@inc;
- case 2:
- set @cost2, @cost +@inc;
- }
- return 1;
-}
-
-function SF_abyssLake {
- if (!(SF_check(0x1, $@kewd_abyssLake, 3, @map$, 1, "hu_fild05.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Abyss Lake",
- "- Entrance ("+@cost+"z/"+getmapusers("abyss_01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("abyss_02.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost3+"z/"+getmapusers("abyss_03.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Abyss Lake",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost3+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"hu_fild05.gat",173,308;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"abyss_02.gat",272,270;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"abyss_03.gat",116,29;
- break;
- }
-}
-
-function SF_amatsu {
- if (!(SF_check(0x2, $@kewd_amatsu, 3, @map$, 1, "ama_in02.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Amatsu Dungeon",
- "- Entrance ("+@cost+"z/"+getmapusers("ama_dun01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("ama_dun02.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost3+"z/"+getmapusers("ama_dun03.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Amatsu Dungeon",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost3+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"ama_in02.gat",120,181;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"ama_dun02.gat",34,41;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"ama_dun03.gat",119,14;
- break;
- }
-}
-
-function SF_antHell {
- if (!(SF_check(0x4, $@kewd_antHell, 1, @map$, 2, "moc_fild04.gat","moc_fild15.gat")))
- return;
- if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Ant Hell",
- "- Northern Entrance ("+@cost+"z/"+getmapusers("anthell01.gat")+" "+$@ked_users$+")",
- "- Southern Entrance ("+@cost+"z/"+getmapusers("anthell02.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Ant Hell",
- "- Northern Entrance ("+@cost+"z)",
- "- Southern Entrance ("+@cost+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"moc_fild04.gat",201,327;
- break;
- case 3:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"moc_fild15.gat",246,251;
- break;
- }
-}
-
-function SF_ayothaya {
- if (!(SF_check(0x8, $@kewd_ayothaya, 2, @map$, 1, "ayo_fild02.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to the Ancient Shrine",
- "- Entrance ("+@cost+"z/"+getmapusers("ayo_dun01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("ayo_dun02.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to the Ancient Shrine",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"ayo_fild02.gat",273,150;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"ayo_dun02.gat",24,28;
- break;
- }
-}
-
-function SF_byalan {
- if (!(SF_check(0x10, $@kewd_byalan, 5, @map$, 1, "izlu2dun.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Undersea Tunnel",
- "- Entrance ("+@cost+"z/"+getmapusers("iz_dun00.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("iz_dun01.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost3+"z/"+getmapusers("iz_dun02.gat")+" "+$@ked_users$+")",
- "- Level 4 ("+@cost4+"z/"+getmapusers("iz_dun03.gat")+" "+$@ked_users$+")",
- "- Level 5 ("+@cost5+"z/"+getmapusers("iz_dun04.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Undersea Tunnel",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost3+"z)",
- "- Level 4 ("+@cost4+"z)",
- "- Level 5 ("+@cost5+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"izlu2dun.gat",114,84;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"iz_dun01.gat",253,252;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"iz_dun02.gat",236,204;
- break;
- case 5:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"iz_dun03.gat",32,63;
- break;
- case 6:
- callfunc "F_keWarp",@cost5*100/@discountKP,$@kewd_discount,e_hmm,"iz_dun04.gat",26,27;
- break;
- }
-}
-
-function SF_comodo {
- if (!(SF_check(0x20, $@kewd_comodo, 1, @map$, 2, "comodo.gat","cmd_fild01.gat")))
- return;
-
- if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Comodo Caves",
- "- Mao, The Eastern Cave ("+@cost+"z/"+getmapusers("beach_dun3.gat")+" "+$@ked_users$+")",
- "- Karu, The Western Cave ("+@cost+"z/"+getmapusers("beach_dun.gat")+" "+$@ked_users$+")",
- "- Ruande, The Northern Cave ("+@cost+"z/"+getmapusers("beach_dun2.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Comodo Caves",
- "- Mao, The Eastern Cave ("+@cost+"z)",
- "- Karu, The Western Cave ("+@cost+"z)",
- "- Ruande, The Northern Cave ("+@cost+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"cmd_fild01.gat",34,325;
- break;
- case 3:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"comodo.gat",32,209;
- break;
- case 4:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"comodo.gat",180,352;
- break;
- }
-}
-
-function SF_clockTower {
- if (!(SF_check(0x40, $@kewd_clockTower, 5, @map$, 1, "aldebaran.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Clock Tower",
- "- Entrance ("+@cost+"z/"+getmapusers("c_tower1.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("c_tower2.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost3+"z/"+getmapusers("c_tower3.gat")+" "+$@ked_users$+")",
- "- Level 4 ("+@cost4+"z/"+getmapusers("c_tower4.gat")+" "+$@ked_users$+")",
- "- Basement 1 ("+@cost2+"z/"+getmapusers("alde_dun01.gat")+" "+$@ked_users$+")",
- "- Basement 2 ("+@cost3+"z/"+getmapusers("alde_dun02.gat")+" "+$@ked_users$+")",
- "- Basement 3 ("+@cost4+"z/"+getmapusers("alde_dun03.gat")+" "+$@ked_users$+")",
- "- Basement 4 ("+@cost5+"z/"+getmapusers("alde_dun04.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Clock Tower",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost3+"z)",
- "- Level 4 ("+@cost4+"z)",
- "- Basement 1 ("+@cost2+"z)",
- "- Basement 2 ("+@cost3+"z)",
- "- Basement 3 ("+@cost4+"z)",
- "- Basement 4 ("+@cost5+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"aldebaran.gat",140,130;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"c_tower2.gat",268,26;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"c_tower3.gat",68,146;
- break;
- case 5:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"c_tower4.gat",185,44;
- break;
- case 6:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"alde_dun01.gat",297,25;
- break;
- case 7:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"alde_dun02.gat",43,24;
- break;
- case 8:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"alde_dun03.gat",18,267;
- break;
- case 9:
- callfunc "F_keWarp",@cost5*100/@discountKP,$@kewd_discount,e_hmm,"alde_dun04.gat",82,267;
- break;
- }
-}
-
-function SF_coalMine {
- if (!(SF_check(0x80, $@kewd_coalMines, 3, @map$, 1, "mjolnir_02.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to the Mjolnir Dead Pit",
- "- Entrance ("+@cost+"z/"+getmapusers("mjo_dun01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("mjo_dun02.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost3+"z/"+getmapusers("mjo_dun03.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to the Mjolnir Dead Pit",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost3+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"mjolnir_02.gat",89,358;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"mjo_dun02.gat",376,342;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"mjo_dun03.gat",305,260;
- break;
- }
-}
-
-function SF_culvert {
- if (!(SF_check(0x100, $@kewd_culvert, 4, @map$, 1, "prt_fild05.gat")))
- return;
- if ($@kewd_deep == 0) {
- set @submenu, 2;
- } else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to the Prontera Culvert",
- "- Entrance ("+@cost+"z/"+getmapusers("prt_sewb1.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("prt_sewb2.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost3+"z/"+getmapusers("prt_sewb3.gat")+" "+$@ked_users$+")",
- "- Level 4 ("+@cost4+"z/"+getmapusers("prt_sewb4.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to the Prontera Culvert",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost3+"z)",
- "- Level 4 ("+@cost4+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"prt_fild05.gat",274,208;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"prt_sewb2.gat",19,19;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"prt_sewb3.gat",180,169;
- break;
- case 5:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"prt_sewb4.gat",100,92;
- break;
- }
-}
-
-function SF_einbech {
- if (!(SF_check(0x200, $@kewd_einbech, 2, @map$, 1, "einbech.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to the Einbroch Mines",
- "- Entrance ("+@cost+"z/"+getmapusers("ein_dun01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("ein_dun02.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to the Einbech Mines",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"einbech.gat",138,244;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"ein_dun02.gat",290,285;
- break;
- }
-}
-
-function SF_geffen {
- if (!(SF_check(0x800, $@kewd_geffen, 3, @map$, 1, "gef_tower.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Geffen Dungeon",
- "- Entrance ("+@cost+"z/"+getmapusers("gef_dun00.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("gef_dun01.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost3+"z/"+getmapusers("gef_dun02.gat")+" "+$@ked_users$+")"
-// "- Level 4 ("+@cost4+"z/"+getmapusers("gef_dun03.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Geffen Dungeon",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost3+"z)"
-// "- Level 4 ("+@cost4+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"gef_tower.gat",147,35;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"gef_dun01.gat",115,236;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"gef_dun02.gat",106,132;
- break;
- case 5:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"gef_dun03.gat",203,200;
- break;
- }
-}
-
-function SF_gefenia {
- if (!(SF_check(0x400, $@kewd_gefenia, 2, @map$, 4, "gefenia01.gat","gefenia02.gat","gefenia03.gat","gefenia04.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Gefenia",
- "- Level 1 ("+@cost+"z/"+getmapusers("gefenia01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("gefenia02.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost2+"z/"+getmapusers("gefenia03.gat")+" "+$@ked_users$+")",
- "- Level 4 ("+@cost+"z/"+getmapusers("gefenia04.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Gefenia",
- "- Level 1 ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost2+"z)",
- "- Level 4 ("+@cost+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"gefenia01.gat",60,169;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"gefenia02.gat",116,116;
- break;
- case 4:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"gefenia03.gat",119,277;
- break;
- case 5:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"gefenia04.gat",129,86;
- break;
- }
-}
-
-function SF_glastHeim {
- if (!(SF_check(0x1000, $@kewd_glastHeim, 7, @map$, 1, "glast_01.gat")))
- return;
- if ($@kewd_deep == 0) {
- if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Glast Heim",
- "- Church Entrance ("+@cost+"z/"+getmapusers("gl_church.gat")+" "+$@ked_users$+")",
- "- Castle Terrace ("+@cost+"z/"+(getmapusers("gl_cas01.gat")+getmapusers("gl_cas02.gat"))+" "+$@ked_users$+")",
- "- Staircase Entrance ("+@cost+"z/"+getmapusers("gl_step.gat")+" "+$@ked_users$+")",
- "- Chivalry Entrance ("+@cost+"z/"+getmapusers("gl_knt01.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Glast Heim",
- "- Church Entrance ("+@cost+"z)",
- "- Castle Terrace ("+@cost+"z)",
- "- Staircase Entrance ("+@cost+"z)",
- "- Chivalry Entrance ("+@cost+"z)"
- );
- }
- if (@submenu > 2) //Churchyard is index 3.
- set @submenu, @submenu+1;
- } else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Glast Heim",
- "- Church Entrance ("+@cost+"z/"+getmapusers("gl_church.gat")+" "+$@ked_users$+")",
- "- Churchyard ("+@cost2+"z/"+getmapusers("gl_chyard.gat")+" "+$@ked_users$+")",
- "- Castle Terrace ("+@cost+"z/"+(getmapusers("gl_cas01.gat")+getmapusers("gl_cas02.gat"))+" "+$@ked_users$+")",
- "- Staircase Entrance ("+@cost+"z/"+getmapusers("gl_step.gat")+" "+$@ked_users$+")",
- "- Chivalry Entrance ("+@cost+"z/"+getmapusers("gl_knt01.gat")+" "+$@ked_users$+")",
- "- Chivalry Level 2 ("+@cost2+"z/"+getmapusers("gl_knt02.gat")+" "+$@ked_users$+")",
- "- Underground Prison 1 ("+@cost2+"z/"+getmapusers("gl_prison.gat")+" "+$@ked_users$+")",
- "- Underground Prison 2 ("+@cost3+"z/"+getmapusers("gl_prison1.gat")+" "+$@ked_users$+")",
- "- Culvert Level 1 ("+@cost4+"z/"+getmapusers("gl_sew01.gat")+" "+$@ked_users$+")",
- "- Culvert Level 2 ("+@cost3+"z/"+getmapusers("gl_sew02.gat")+" "+$@ked_users$+")",
- "- Culvert Level 3 ("+@cost4+"z/"+getmapusers("gl_sew03.gat")+" "+$@ked_users$+")",
- "- Culvert Level 4 ("+@cost5+"z/"+getmapusers("gl_sew04.gat")+" "+$@ked_users$+")",
- "- Underground Cave 1 ("+@cost6+"z/"+getmapusers("gl_dun01.gat")+" "+$@ked_users$+")",
- "- Underground Cave 2 ("+@cost7+"z/"+getmapusers("gl_dun02.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Glast Heim",
- "- Church Entrance ("+@cost+"z)",
- "- Churchyard ("+@cost2+"z)",
- "- Castle Terrace ("+@cost+"z)",
- "- Staircase Entrance ("+@cost+"z)",
- "- Chivalry Entrance ("+@cost+"z)",
- "- Chivalry Level 2 ("+@cost2+"z)",
- "- Underground Prison Level 1 ("+@cost2+"z)",
- "- Underground Prison Level 2 ("+@cost3+"z)",
- "- Culvert Level 1 ("+@cost4+"z)",
- "- Culvert Level 2 ("+@cost3+"z)",
- "- Culvert Level 3 ("+@cost4+"z)",
- "- Culvert Level 4 ("+@cost5+"z)",
- "- Underground Cave Level 1 ("+@cost6+"z)",
- "- Underground Cave Level 2 ("+@cost7+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"glast_01.gat",206,136;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"gl_chyard.gat",147,15;
- break;
- case 4:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"glast_01.gat",199,335;
- break;
- case 5:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"glast_01.gat",62,107;
- break;
- case 6:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"glast_01.gat",69,193;
- break;
- case 7:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"gl_knt02.gat",157,287;
- break;
- case 8:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"gl_prison.gat",14,70;
- break;
- case 9:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"gl_prison1.gat",150,14;
- break;
- case 10:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"gl_sew01.gat",258,255;
- break;
- case 11:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"gl_sew02.gat",108,291;
- break;
- case 12:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"gl_sew03.gat",171,283;
- break;
- case 13:
- callfunc "F_keWarp",@cost5*100/@discountKP,$@kewd_discount,e_hmm,"gl_sew04.gat",68,277;
- break;
- case 14:
- callfunc "F_keWarp",@cost6*100/@discountKP,$@kewd_discount,e_hmm,"gl_dun01.gat",133,271;
- break;
- case 15:
- callfunc "F_keWarp",@cost7*100/@discountKP,$@kewd_discount,e_hmm,"gl_dun02.gat",224,274;
- break;
- }
-}
-
-function SF_gonRyun {
- if (!(SF_check(0x2000, $@kewd_gonRyun, 3, @map$, 1, "gonryun.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Gon Ryun Dungeon",
- "- Entrance ("+@cost+"z/"+getmapusers("gon_dun01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("gon_dun02.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost3+"z/"+getmapusers("gon_dun03.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Gon Ryun Dungeon",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost3+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"gonryun.gat",161,195;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"gon_dun02.gat",22,114;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"gon_dun03.gat",68,11;
- break;
- }
-}
-
-function SF_hiddenTemple {
- if (!(SF_check(0x4000, $@kewd_hiddenTemple, 3, @map$, 1, "prt_fild01.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to the Laberynth Forest",
- "- Entrance ("+@cost+"z/"+getmapusers("prt_maze01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("prt_maze02.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost3+"z/"+getmapusers("prt_maze03.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to the Laberynth Forest",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost3+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"prt_fild01.gat",136,361;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"prt_maze02.gat",106,62;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"prt_maze03.gat",23,8;
- break;
- }
-}
-
-function SF_juperos {
- if (!(SF_check(0x8000, $@kewd_juperos, 3, @map$, 1, "jupe_cave.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Juperos",
- "- Entrance ("+@cost+"z/"+getmapusers("juperos_01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("juperos_02.gat")+" "+$@ked_users$+")",
- "- Core ("+@cost3+"z/"+getmapusers("jupe_core.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Juperos",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Core ("+@cost3+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"jupe_cave.gat",55,52;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"juperos_02.gat",37,63;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"jupe_gate.gat",-1,-1;
- break;
- }
-}
-
-function SF_lightHalzen {
- if (!(SF_check(0x10000, $@kewd_lightHalzen, 3, @map$, 1, "lighthalzen.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to the Rekkenber",
- "- Entrance ("+@cost+"z/"+getmapusers("lou_dun01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("lou_dun02.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost3+"z/"+getmapusers("lou_dun03.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to the Rekkenber",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost3+"z)"
- );
- }
- switch (@submenu) {
- case 2:
-//This is the Rekkenber building entrance, which officially is only a dungeon exit.
-// callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"lighthalzen.gat",74,72;
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"lighthalzen.gat",303,302;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"lhz_dun02.gat",154,18;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"lhz_dun03.gat",141,132;
- break;
- }
-}
-
-function SF_louYang {
- if (!(SF_check(0x20000, $@kewd_louYang, 3, @map$, 1, "louyang.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to the Royal Tomb",
- "- Entrance ("+@cost+"z/"+getmapusers("lou_dun01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("lou_dun02.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost3+"z/"+getmapusers("lou_dun03.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to the Royal Tomb",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost3+"z)"
- );
- };
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"louyang.gat",41,267;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"lou_dun02.gat",281,20;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"lou_dun03.gat",165,39;
- break;
- }
-}
-
-function SF_magma {
- if (!(SF_check(0x40000, $@kewd_magma, 2, @map$, 1, "yuno_fild03.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Nogg Road",
- "- Entrance ("+@cost+"z/"+getmapusers("mag_dun01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("mag_dun02.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Nogg Road",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"yuno_fild03.gat",35,135;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"mag_dun02.gat",47,30;
- break;
- }
-}
-
-function SF_orcs {
- if (!(SF_check(0x80000, $@kewd_orc, 2, @map$, 1, "gef_fild10.gat")))
- return;
- if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Orcs Dungeon",
- "- Front Entrance ("+@cost+"z/"+getmapusers("orcsdun01.gat")+" "+$@ked_users$+")",
- "- Back Entrance ("+@cost+"z/"+getmapusers("orcsdun02.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Orcs Dungeon",
- "- Front Entrance ("+@cost+"z)",
- "- Back Entrance ("+@cost+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"in_orcs01.gat",34,165;
- break;
- case 3:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"in_orcs01.gat",112,99;
- break;
- }
-}
-
-function SF_payon {
- if (!(SF_check(0x100000, $@kewd_payon, 5, @map$, 1, "pay_arche.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to the Payon Cave",
- "- Entrance ("+@cost+"z/"+getmapusers("pay_dun00.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("pay_dun01.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost3+"z/"+getmapusers("pay_dun02.gat")+" "+$@ked_users$+")",
- "- Level 4 ("+@cost4+"z/"+getmapusers("pay_dun03.gat")+" "+$@ked_users$+")",
- "- Level 5 ("+@cost5+"z/"+getmapusers("pay_dun04.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to the Payon Cave",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost3+"z)",
- "- Level 4 ("+@cost4+"z)",
- "- Level 5 ("+@cost5+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"pay_arche.gat",41,133;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"pay_dun01.gat",19,33;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"pay_dun02.gat",19,63;
- break;
- case 5:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"pay_dun03.gat",155,159;
- break;
- case 6:
- callfunc "F_keWarp",@cost5*100/@discountKP,$@kewd_discount,e_hmm,"pay_dun04.gat",34,202;
- break;
- }
-}
-
-function SF_pyramid {
- if (!(SF_check(0x200000, $@kewd_pyramid, 4, @map$,1, "moc_ruins.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to the Pyramid",
- "- Entrance ("+@cost+"z/"+getmapusers("moc_pryd01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("moc_pryd02.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost3+"z/"+getmapusers("moc_pryd03.gat")+" "+$@ked_users$+")",
- "- Level 4 ("+@cost4+"z/"+getmapusers("moc_pryd04.gat")+" "+$@ked_users$+")",
- "- Basement 1 ("+@cost2+"z/"+getmapusers("moc_pryd05.gat")+" "+$@ked_users$+")",
- "- Basement 2 ("+@cost3+"z/"+getmapusers("moc_pryd06.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to the Pyramid",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost3+"z)",
- "- Level 4 ("+@cost4+"z)",
- "- Basement 1 ("+@cost2+"z)",
- "- Basement 2 ("+@cost3+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"moc_ruins.gat",62,162;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"moc_pryd02.gat",10,192;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"moc_pryd03.gat",100,92;
- break;
- case 5:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"moc_pryd04.gat",18,187;
- break;
- case 6:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"moc_pryd05.gat",94,96;
- break;
- case 7:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"moc_pryd06.gat",192,11;
- break;
- }
-}
-
-function SF_sphinx {
- if (!(SF_check(0x400000, $@kewd_sphinx, 5, @map$, 1, "moc_fild19.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to the Sphinx",
- "- Entrance ("+@cost+"z/"+getmapusers("in_sphinx1.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("in_sphinx2.gat")+" "+$@ked_users$+")",
- "- Level 3 ("+@cost3+"z/"+getmapusers("in_sphinx3.gat")+" "+$@ked_users$+")",
- "- Level 4 ("+@cost4+"z/"+getmapusers("in_sphinx4.gat")+" "+$@ked_users$+")",
- "- Level 5 ("+@cost5+"z/"+getmapusers("in_sphinx5.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to the Sphinx",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)",
- "- Level 3 ("+@cost3+"z)",
- "- Level 4 ("+@cost4+"z)",
- "- Level 5 ("+@cost5+"z)"
- );
- }
-
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"moc_fild19.gat",107,100;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"in_sphinx2.gat",149,81;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"in_sphinx3.gat",210,54;
- break;
- case 5:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"in_sphinx4.gat",10,222;
- break;
- case 6:
- callfunc "F_keWarp",@cost5*100/@discountKP,$@kewd_discount,e_hmm,"in_sphinx5.gat",100,99;
- break;
- }
-}
-
-function SF_sunkenShip {
- if (!(SF_check(0x800000, $@kewd_sunkenShip, 2, @map$, 1, "alb2trea.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Sunken Ship",
- "- Entrance ("+@cost+"z/"+getmapusers("treasure01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("treasure02.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Sunken Ship",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)"
- );
- }
-
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"alb2trea.gat",87,103;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"treasure02.gat",102,27;
- break;
- }
-}
-
-function SF_thanatosTower {
- if (!(SF_check(0x1000000, $@kewd_thanatosTower, 9, @map$, 1, "tha_t01.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Thanatos Tower",
- "- Entrance ("+@cost+"z/"+getmapusers("tha_t01.gat")+" "+$@ked_users$+")",
- "- Floor 2 ("+@cost2+"z/"+getmapusers("tha_t02.gat")+" "+$@ked_users$+")",
- "- Floor 3 ("+@cost3+"z/"+getmapusers("tha_t03.gat")+" "+$@ked_users$+")",
- "- Floor 4 ("+@cost4+"z/"+getmapusers("tha_t04.gat")+" "+$@ked_users$+")",
- "- Floor 5 ("+@cost5+"z/"+getmapusers("tha_t05.gat")+" "+$@ked_users$+")",
- "- Floor 6 ("+@cost6+"z/"+getmapusers("tha_t06.gat")+" "+$@ked_users$+")",
- "- Floor 7 ("+@cost7+"z/"+getmapusers("tha_t07.gat")+" "+$@ked_users$+")",
- "- Floor 8 ("+@cost8+"z/"+getmapusers("tha_t08.gat")+" "+$@ked_users$+")",
- "- Floor 9 ("+@cost9+"z/"+getmapusers("tha_t09.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Thanatos Tower",
- "- Entrance ("+@cost+"z)",
- "- Floor 2 ("+@cost2+"z)",
- "- Floor 3 ("+@cost3+"z)",
- "- Floor 4 ("+@cost4+"z)",
- "- Floor 5 ("+@cost5+"z)",
- "- Floor 6 ("+@cost6+"z)",
- "- Floor 7 ("+@cost7+"z)",
- "- Floor 8 ("+@cost8+"z)",
- "- Floor 9 ("+@cost9+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"tha_scene01.gat",139,201;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"tha_t02.gat",149,136;
- break;
- case 4:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"tha_t03.gat",220,159;
- break;
- case 5:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"tha_t04.gat",59,144;
- break;
- case 6:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"tha_t05.gat",62,9;
- break;
- case 7:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"tha_t06.gat",120,225;
- break;
- case 8:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"tha_t07.gat",32,166;
- break;
- case 9:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"tha_t08.gat",108,44;
- break;
- case 10:
- callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"tha_t09.gat",87,145;
- break;
- }
-}
-
-function SF_toyFactory {
- if (!(SF_check(0x2000000, $@kewd_toyFactory, 2, @map$, 1, "xmas.gat")))
- return;
-
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Toy Factory",
- "- Entrance ("+@cost+"z/"+getmapusers("xmas_dun01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("xmas_dun02.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Toy Factory",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)"
- );
- }
-
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"xmas.gat",144,306;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"xmas_dun02.gat",129,133;
- break;
- }
-}
-
-function SF_turtleIsland {
- if (!(SF_check(0x4000000, $@kewd_turtleIsland, 3, @map$, 1, "tur_dun01.gat")))
- return;
- if ($@kewd_deep == 0) {
- if ($@kewd_turtleCave)
- set @submenu, 3;
- else
- set @submenu, 2;
- } else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Turtle Island",
- "- Island Entrance ("+@cost+"z/"+getmapusers("tur_dun01.gat")+" "+$@ked_users$+")",
- "- Cave Entrance ("+@cost+"z/"+getmapusers("tur_dun02.gat")+" "+$@ked_users$+")",
- "- Cave Level 2 ("+@cost2+"z/"+getmapusers("tur_dun03.gat")+" "+$@ked_users$+")",
- "- Cave Level 3 ("+@cost3+"z/"+getmapusers("tur_dun04.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Turtle Island",
- "- Island Entrance ("+@cost+"z)",
- "- Cave Entrance ("+@cost+"z)",
- "- Cave Level 2 ("+@cost2+"z)",
- "- Cave Level 3 ("+@cost3+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"tur_dun01.gat",153,47;
- break;
- case 3:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"tur_dun01.gat",155,234;
- break;
- case 4:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"tur_dun03.gat",132,189;
- break;
- case 5:
- callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"tur_dun04.gat",100,192;
- break;
- }
-}
-
-function SF_umbala {
- if (!(SF_check(0x8000000, $@kewd_umbala, 2, @map$, 1, "umbala.gat")))
- return;
- if ($@kewd_deep == 0)
- set @submenu, 2;
- else if ($@kewd_showOnline) {
- set @submenu, select(
- "- Cancel warp to Umbala Dungeon",
- "- Entrance ("+@cost+"z/"+getmapusers("um_dun01.gat")+" "+$@ked_users$+")",
- "- Level 2 ("+@cost2+"z/"+getmapusers("um_dun02.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel warp to Umbala Dungeon",
- "- Entrance ("+@cost+"z)",
- "- Level 2 ("+@cost2+"z)"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"umbala.gat",113,282;
- break;
- case 3:
- callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"um_dun02.gat",48,31;
- break;
- }
-}
-
-}
-
-//Invoked when we want to add a map to the list of travelled-to dungeons
-function script F_keAddTravelDungeon {
- set @map$, getarg(0);
-// Temporary code to update the previous variable format to the new one.
- if(kewd_abyss) {
- set kewd_travel,kewd_travel|0x1;
- set kewd_abyss,0;
- }
- if(kewd_amatsu) {
- set kewd_travel,kewd_travel|0x2;
- set kewd_amatsu,0;
- }
- if(kewd_antHell) {
- set kewd_travel,kewd_travel|0x4;
- set kewd_antHell,0;
- }
- if(kewd_ayothaya) {
- set kewd_travel,kewd_travel|0x8;
- set kewd_ayothaya,0;
- }
- if(kewd_byalan) {
- set kewd_travel,kewd_travel|0x10;
- set kewd_byalan,0;
- }
- if(kewd_comodo) {
- set kewd_travel,kewd_travel|0x20;
- set kewd_comodo,0;
- }
- if(kewd_clockTower) {
- set kewd_travel,kewd_travel|0x40;
- set kewd_clockTower,0;
- }
- if(kewd_coalMines) {
- set kewd_travel,kewd_travel|0x80;
- set kewd_coalMines,0;
- }
- if(kewd_culvert) {
- set kewd_travel,kewd_travel|0x100;
- set kewd_culvert,0;
- }
- if(kewd_einbech) {
- set kewd_travel,kewd_travel|0x200;
- set kewd_einbech,0;
- }
- if(kewd_geffen) {
- set kewd_travel,kewd_travel|0x800;
- set kewd_geffen,0;
- }
- if(kewd_glastHeim) {
- set kewd_travel,kewd_travel|0x1000;
- set kewd_glastHeim,0;
- }
- if(kewd_gonRyun) {
- set kewd_travel,kewd_travel|0x2000;
- set kewd_gonRyun,0;
- }
- if(kewd_hiddenTemple) {
- set kewd_travel,kewd_travel|0x4000;
- set kewd_hiddenTemple,0;
- }
- if(kewd_juperos) {
- set kewd_travel,kewd_travel|0x8000;
- set kewd_juperos,0;
- }
- if(kewd_lightHalzen) {
- set kewd_travel,kewd_travel|0x10000;
- set kewd_lightHalzen,0;
- }
- if(kewd_louYang) {
- set kewd_travel,kewd_travel|0x20000;
- set kewd_louYang,0;
- }
- if(kewd_magma) {
- set kewd_travel,kewd_travel|0x40000;
- set kewd_magma,0;
- }
- if(kewd_orc) {
- set kewd_travel,kewd_travel|0x80000;
- set kewd_orc,0;
- }
- if(kewd_payon) {
- set kewd_travel,kewd_travel|0x100000;
- set kewd_payon,0;
- }
- if(kewd_pyramid) {
- set kewd_travel,kewd_travel|0x200000;
- set kewd_pyramid,0;
- }
- if(kewd_sphinx) {
- set kewd_travel,kewd_travel|0x400000;
- set kewd_sphinx,0;
- }
- if(kewd_sunkenShip) {
- set kewd_travel,kewd_travel|0x800000;
- set kewd_sunkenShip,0;
- }
- if(kewd_thanatosTower) {
- set kewd_travel,kewd_travel|0x1000000;
- set kewd_thanatosTower,0;
- }
- if(kewd_toyFactory) {
- set kewd_travel,kewd_travel|0x2000000;
- set kewd_toyFactory,0;
- }
- if(kewd_turtleIsland) {
- set kewd_travel,kewd_travel|0x4000000;
- set kewd_turtleIsland,0;
- }
- if(kewd_umbala) {
- set kewd_travel,kewd_travel|0x8000000;
- set kewd_umbala,0;
- }
-
- if(#kewd_abyss) {
- set #kewd_travel,#kewd_travel|0x1;
- set #kewd_abyss,0;
- }
- if(#kewd_amatsu) {
- set #kewd_travel,#kewd_travel|0x2;
- set #kewd_amatsu,0;
- }
- if(#kewd_antHell) {
- set #kewd_travel,#kewd_travel|0x4;
- set #kewd_antHell,0;
- }
- if(#kewd_ayothaya) {
- set #kewd_travel,#kewd_travel|0x8;
- set #kewd_ayothaya,0;
- }
- if(#kewd_byalan) {
- set #kewd_travel,#kewd_travel|0x10;
- set #kewd_byalan,0;
- }
- if(#kewd_comodo) {
- set #kewd_travel,#kewd_travel|0x20;
- set #kewd_comodo,0;
- }
- if(#kewd_clockTower) {
- set #kewd_travel,#kewd_travel|0x40;
- set #kewd_clockTower,0;
- }
- if(#kewd_coalMines) {
- set #kewd_travel,#kewd_travel|0x80;
- set #kewd_coalMines,0;
- }
- if(#kewd_culvert) {
- set #kewd_travel,#kewd_travel|0x100;
- set #kewd_culvert,0;
- }
- if(#kewd_einbech) {
- set #kewd_travel,#kewd_travel|0x200;
- set #kewd_einbech,0;
- }
- if(#kewd_geffen) {
- set #kewd_travel,#kewd_travel|0x800;
- set #kewd_geffen,0;
- }
- if(#kewd_glastHeim) {
- set #kewd_travel,#kewd_travel|0x1000;
- set #kewd_glastHeim,0;
- }
- if(#kewd_gonRyun) {
- set #kewd_travel,#kewd_travel|0x2000;
- set #kewd_gonRyun,0;
- }
- if(#kewd_hiddenTemple) {
- set #kewd_travel,#kewd_travel|0x4000;
- set #kewd_hiddenTemple,0;
- }
- if(#kewd_juperos) {
- set #kewd_travel,#kewd_travel|0x8000;
- set #kewd_juperos,0;
- }
- if(#kewd_lightHalzen) {
- set #kewd_travel,#kewd_travel|0x10000;
- set #kewd_lightHalzen,0;
- }
- if(#kewd_louYang) {
- set #kewd_travel,#kewd_travel|0x20000;
- set #kewd_louYang,0;
- }
- if(#kewd_magma) {
- set #kewd_travel,#kewd_travel|0x40000;
- set #kewd_magma,0;
- }
- if(#kewd_orc) {
- set #kewd_travel,#kewd_travel|0x80000;
- set #kewd_orc,0;
- }
- if(#kewd_payon) {
- set #kewd_travel,#kewd_travel|0x100000;
- set #kewd_payon,0;
- }
- if(#kewd_pyramid) {
- set #kewd_travel,#kewd_travel|0x200000;
- set #kewd_pyramid,0;
- }
- if(#kewd_sphinx) {
- set #kewd_travel,#kewd_travel|0x400000;
- set #kewd_sphinx,0;
- }
- if(#kewd_sunkenShip) {
- set #kewd_travel,#kewd_travel|0x800000;
- set #kewd_sunkenShip,0;
- }
- if(#kewd_thanatosTower) {
- set #kewd_travel,#kewd_travel|0x1000000;
- set #kewd_thanatosTower,0;
- }
- if(#kewd_toyFactory) {
- set #kewd_travel,#kewd_travel|0x2000000;
- set #kewd_toyFactory,0;
- }
- if(#kewd_turtleIsland) {
- set #kewd_travel,#kewd_travel|0x4000000;
- set #kewd_turtleIsland,0;
- }
- if(#kewd_umbala) {
- set #kewd_travel,#kewd_travel|0x8000000;
- set #kewd_umbala,0;
- }
-
-// End transition code.
- if ($@kewd_travel > 1) {
- if (@map$ == "hu_fild05.gat" || kewd_travel&0x1)
- set #kewd_travel,#kewd_travel|0x1;
- if (@map$ == "ama_in02.gat" || kewd_travel&0x2)
- set #kewd_travel,#kewd_travel|0x2;
- if (@map$ == "moc_fild04.gat" || @map$ == "moc_fild15.gat" || kewd_travel&0x4)
- set #kewd_travel,#kewd_travel|0x4;
- if (@map$ == "ayo_fild02.gat" || kewd_travel&0x8)
- set #kewd_travel,#kewd_travel|0x8;
- if (@map$ == "izlu2dun.gat" || kewd_travel&0x10)
- set #kewd_travel,#kewd_travel|0x10;
- if (@map$ == "comodo.gat" || @map$ == "cmd_fild01.gat" || kewd_travel&0x20)
- set #kewd_travel,#kewd_travel|0x20;
- if (@map$ == "aldebaran.gat" || kewd_travel&0x40)
- set #kewd_travel,#kewd_travel|0x40;
- if (@map$ == "mjolnir_02.gat" || kewd_travel&0x80)
- set #kewd_travel,#kewd_travel|0x80;
- if (@map$ == "prt_fild05.gat" || kewd_travel&0x100)
- set #kewd_travel,#kewd_travel|0x100;
- if (@map$ == "einbech.gat" || kewd_travel&0x200)
- set #kewd_travel,#kewd_travel|0x200;
- if (@map$ == "gef_tower.gat" || kewd_travel&0x800)
- set #kewd_travel,#kewd_travel|0x800;
- if (@map$ == "glast_01.gat" || kewd_travel&0x1000)
- set #kewd_travel,#kewd_travel|0x1000;
- if (@map$ == "gonryun.gat" || kewd_travel&0x2000)
- set #kewd_travel,#kewd_travel|0x2000;
- if (@map$ == "prt_fild01.gat" || kewd_travel&0x4000)
- set #kewd_travel,#kewd_travel|0x4000;
- if (@map$ == "jupe_cave.gat" || kewd_travel&0x8000)
- set #kewd_travel,#kewd_travel|0x8000;
- if (@map$ == "lighthalzen.gat" || kewd_travel&0x10000)
- set #kewd_travel,#kewd_travel|0x10000;
- if (@map$ == "louyang.gat" || kewd_travel&0x20000)
- set #kewd_travel,#kewd_travel|0x20000;
- if (@map$ == "yuno_fild03.gat" || kewd_travel&0x40000)
- set #kewd_travel,#kewd_travel|0x40000;
- if (@map$ == "in_orcs01.gat" || kewd_travel&0x80000)
- set #kewd_travel,#kewd_travel|0x80000;
- if (@map$ == "pay_arche.gat" || kewd_travel&0x100000)
- set #kewd_travel,#kewd_travel|0x100000;
- if (@map$ == "moc_ruins.gat" || kewd_travel&0x200000)
- set #kewd_travel,#kewd_travel|0x200000;
- if (@map$ == "moc_fild19.gat" || kewd_travel&0x400000)
- set #kewd_travel,#kewd_travel|0x400000;
- if (@map$ == "alb2trea.gat" || kewd_travel&0x800000)
- set #kewd_travel,#kewd_travel|0x800000;
- if (@map$ == "tha_t01.gat" || kewd_travel&0x1000000)
- set #kewd_travel,#kewd_travel|0x1000000;
- if (@map$ == "xmas.gat" || kewd_travel&0x2000000)
- set #kewd_travel,#kewd_travel|0x2000000;
- if (@map$ == "tur_dun01.gat" || kewd_travel&0x4000000)
- set #kewd_travel,#kewd_travel|0x4000000;
- if (@map$ == "umbala.gat" || kewd_travel&0x8000000)
- set #kewd_travel,#kewd_travel|0x8000000;
- } else {
- if (@map$ == "hu_fild05.gat")
- set kewd_travel,kewd_travel|0x1;
- if (@map$ == "ama_in02.gat")
- set kewd_travel,kewd_travel|0x2;
- if (@map$ == "moc_fild04.gat" || @map$ == "moc_fild15.gat")
- set kewd_travel,kewd_travel|0x4;
- if (@map$ == "ayo_fild02.gat")
- set kewd_travel,kewd_travel|0x8;
- if (@map$ == "izlu2dun.gat")
- set kewd_travel,kewd_travel|0x10;
- if (@map$ == "comodo.gat" || @map$ == "cmd_fild01.gat")
- set kewd_travel,kewd_travel|0x20;
- if (@map$ == "aldebaran.gat")
- set kewd_travel,kewd_travel|0x40;
- if (@map$ == "mjolnir_02.gat")
- set kewd_travel,kewd_travel|0x80;
- if (@map$ == "prt_fild05.gat")
- set kewd_travel,kewd_travel|0x100;
- if (@map$ == "einbech.gat")
- set kewd_travel,kewd_travel|0x200;
- if (@map$ == "gef_tower.gat")
- set kewd_travel,kewd_travel|0x800;
- if (@map$ == "glast_01.gat")
- set kewd_travel,kewd_travel|0x1000;
- if (@map$ == "gonryun.gat")
- set kewd_travel,kewd_travel|0x2000;
- if (@map$ == "prt_fild01.gat")
- set kewd_travel,kewd_travel|0x4000;
- if (@map$ == "jupe_cave.gat")
- set kewd_travel,kewd_travel|0x8000;
- if (@map$ == "lighthalzen.gat")
- set kewd_travel,kewd_travel|0x10000;
- if (@map$ == "louyang.gat")
- set kewd_travel,kewd_travel|0x20000;
- if (@map$ == "yuno_fild03.gat")
- set kewd_travel,kewd_travel|0x40000;
- if (@map$ == "in_orcs01.gat")
- set kewd_travel,kewd_travel|0x80000;
- if (@map$ == "pay_arche.gat")
- set kewd_travel,kewd_travel|0x100000;
- if (@map$ == "moc_ruins.gat")
- set kewd_travel,kewd_travel|0x200000;
- if (@map$ == "moc_fild19.gat")
- set kewd_travel,kewd_travel|0x400000;
- if (@map$ == "alb2trea.gat")
- set kewd_travel,kewd_travel|0x800000;
- if (@map$ == "tha_t01.gat")
- set kewd_travel,kewd_travel|0x1000000;
- if (@map$ == "xmas.gat")
- set kewd_travel,kewd_travel|0x2000000;
- if (@map$ == "tur_dun01.gat")
- set kewd_travel,kewd_travel|0x4000000;
- if (@map$ == "umbala.gat")
- set kewd_travel,kewd_travel|0x8000000;
- }
- return;
-}
+//===== eAthena Script ======================================= +//= Kafra Express - Dungeon Warps Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 3.5 +//===== Compatible With: ===================================== +//= eAthena SVN R3424+, RO Episode 8+ (Hugel) +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= Offers warping to dungeons. +//===== Additional Comments: ================================= +//= See config.txt for configuration. +//= Flag values used for dungeons: +//= 0x00000001 Abyss Lake +//= 0x00000002 Amatsu +//= 0x00000004 AntHell +//= 0x00000008 Ayothaya +//= 0x00000010 Byalan +//= 0x00000020 Comodo +//= 0x00000040 Clock tower +//= 0x00000080 Coal Mines +//= 0x00000100 Culvert +//= 0x00000200 Einbech +//= 0x00000400 Gefenia +//= 0x00000800 Geffen +//= 0x00001000 GlastHeim +//= 0x00002000 Gon Ryun +//= 0x00004000 Hidden Temple +//= 0x00008000 Juperos +//= 0x00010000 Lighthalzen +//= 0x00020000 Lou Yang +//= 0x00040000 Magma Caves +//= 0x00080000 Orcs +//= 0x00100000 Payon +//= 0x00200000 Pyramid +//= 0x00400000 Sphinx +//= 0x00800000 Sunken Ship +//= 0x01000000 Thanatos +//= 0x02000000 Toy Factory +//= 0x04000000 Turtle Island +//= 0x08000000 Umbala + +//============================================================ + +- script keInit_warpDungeon -1,{ +OnInit: //Load Config + donpcevent "keConfig::OnLoadWarpDungeon"; + end; +} + +function script F_keDungeonWarps { + +function SF_abyssLake; +function SF_amatsu; +function SF_antHell; +function SF_ayothaya; +function SF_byalan; +function SF_comodo; +function SF_clockTower; +function SF_coalMine; +function SF_culvert; +function SF_einbech; +function SF_gefenia; +function SF_geffen; +function SF_glastHeim; +function SF_gonRyun; +function SF_hiddenTemple; +function SF_juperos; +function SF_lightHalzen; +function SF_louYang; +function SF_magma; +function SF_orcs; +function SF_payon; +function SF_pyramid; +function SF_sphinx; +function SF_sunkenShip; +function SF_thanatosTower; +function SF_toyFactory; +function SF_turtleIsland; +function SF_umbala; + //Store player map, will be needed in any of the submenus. + set @map$, getarg(0); + do { + set @discount,callfunc("F_keCost",100,$@kewd_discount); + if ($@kewd_showOnline) { + set @kmenu, select ( + "- Cancel", + "- Abyss Lake ("+$@kewd_abyssLake*@discount/100+"z/"+(getmapusers("abyss_01.gat") + +getmapusers("abyss_02.gat")+getmapusers("abyss_03.gat"))+" "+$@ked_users$+")", + "- Amatsu Dungeon ("+$@kewd_amatsu*@discount/100+"z/"+(getmapusers("ama_dun01.gat") + +getmapusers("ama_dun02.gat")+getmapusers("ama_dun03.gat"))+" "+$@ked_users$+")", + "- Ant Hell ("+$@kewd_antHell*@discount/100+"z/"+(getmapusers("anthell01.gat") + +getmapusers("anthell02.gat"))+" "+$@ked_users$+")", + "- Ayothaya Ancient Shrine ("+$@kewd_ayothaya*@discount/100+"z/"+(getmapusers("ayo_dun01.gat") + +getmapusers("ayo_dun02.gat"))+" "+$@ked_users$+")", + "- Byalan Dungeon ("+$@kewd_byalan*@discount/100+"z/"+(getmapusers("iz_dun00.gat") + +getmapusers("iz_dun01.gat")+getmapusers("iz_dun02.gat")+getmapusers("iz_dun03.gat") + +getmapusers("iz_dun04.gat"))+" "+$@ked_users$+")", + "- Comodo Caves ("+$@kewd_comodo*@discount/100+"z/"+(getmapusers("beach_dun.gat") + +getmapusers("beach_dun2.gat")+getmapusers("beach_dun3.gat"))+" "+$@ked_users$+")", + "- Clock Tower ("+$@kewd_clockTower*@discount/100+"z/"+(getmapusers("c_tower1.gat") + +getmapusers("c_tower2.gat")+getmapusers("c_tower3.gat")+getmapusers("c_tower4.gat") + +getmapusers("alde_dun01.gat")+getmapusers("alde_dun02.gat")+getmapusers("alde_dun03.gat") + +getmapusers("alde_dun04.gat"))+" "+$@ked_users$+")", + "- Coal Mine ("+$@kewd_coalMines*@discount/100+"z/"+(getmapusers("mjo_dun01.gat") + +getmapusers("mjo_dun02.gat")+getmapusers("mjo_dun03.gat"))+" "+$@ked_users$+")", + "- Culvert ("+$@kewd_culvert*@discount/100+"z/"+(getmapusers("prt_sewb1.gat")+getmapusers("prt_sewb2.gat") + +getmapusers("prt_sewb3.gat")+getmapusers("prt_sewb4.gat"))+" "+$@ked_users$+")", + "- Einbroch Station ("+$@kewd_einbech*@discount/100+"z/"+(getmapusers("ein_dun01.gat") + +getmapusers("ein_dun02.gat"))+" "+$@ked_users$+")", + "- Gefenia ("+$@kewd_gefenia*@discount/100+"z/"+(getmapusers("gefenia01.gat")+getmapusers("gefenia02.gat") + +getmapusers("gefenia03.gat")+getmapusers("gefenia04.gat"))+" "+$@ked_users$+")", + "- Geffen Dungeon ("+$@kewd_geffen*@discount/100+"z/"+(getmapusers("gef_dun00.gat") + +getmapusers("gef_dun01.gat")+getmapusers("gef_dun02.gat")+getmapusers("gef_dun03.gat"))+" "+$@ked_users$+")", + "- Glast Heim ("+$@kewd_glastHeim*@discount/100+"z/"+(getmapusers("gl_cas02.gat")+getmapusers("gl_church.gat") + +getmapusers("gl_chyard.gat")+getmapusers("gl_dun01.gat")+getmapusers("gl_dun02.gat") + +getmapusers("gl_in01.gat")+getmapusers("gl_knt01.gat")+getmapusers("gl_knt02.gat") + +getmapusers("gl_prison.gat")+getmapusers("gl_prison1.gat")+getmapusers("gl_sew01.gat") + +getmapusers("gl_sew02.gat")+getmapusers("gl_sew03.gat")+getmapusers("gl_sew04.gat") + +getmapusers("gl_step.gat")+getmapusers("glast_01.gat"))+" "+$@ked_users$+")", + "- Gon Ryun Dungeon ("+$@kewd_gonRyun*@discount/100+"z/"+(getmapusers("gon_dun01.gat") + +getmapusers("gon_dun02.gat")+getmapusers("gon_dun03.gat"))+" "+$@ked_users$+")", + "- Hidden Temple ("+$@kewd_hiddenTemple*@discount/100+"z/"+(getmapusers("prt_maze01.gat") + +getmapusers("prt_maze02.gat")+getmapusers("prt_maze03.gat"))+" "+$@ked_users$+")", + "- Juperos ("+$@kewd_juperos*@discount/100+"z/"+(getmapusers("juperos_01.gat")+getmapusers("juperos_02.gat") + +getmapusers("jupe_area1.gat")+getmapusers("jupe_area2.gat")+getmapusers("jupe_core.gat") + +getmapusers("jupe_gate.gat")+getmapusers("jupe_area1.gat"))+" "+$@ked_users$+")", + "- LightHalzen Rekkenber ("+$@kewd_lightHalzen*@discount/100+"z/"+(getmapusers("lhz_dun01.gat") + +getmapusers("lhz_dun02.gat")+getmapusers("lhz_dun03.gat"))+" "+$@ked_users$+")", + "- Lou Yang Royal Tomb ("+$@kewd_louYang*@discount/100+"z/"+(getmapusers("lou_dun01.gat") + +getmapusers("lou_dun02.gat")+getmapusers("lou_dun03.gat"))+" "+$@ked_users$+")", + "- Magma Dungeon ("+$@kewd_magma*@discount/100+"z/"+(getmapusers("mag_dun01.gat") + +getmapusers("mag_dun02.gat"))+" "+$@ked_users$+")", + "- Orc Dungeon ("+$@kewd_orc*@discount/100+"z/"+(getmapusers("orcsdun01.gat") + +getmapusers("orcsdun02.gat"))+" "+$@ked_users$+")", + "- Payon Dungeon ("+$@kewd_payon*@discount/100+"z/"+(getmapusers("pay_dun00.gat") + +getmapusers("pay_dun01.gat")+getmapusers("pay_dun02.gat")+getmapusers("pay_dun03.gat") + +getmapusers("pay_dun04.gat"))+" "+$@ked_users$+")", + "- Pyramid ("+$@kewd_pyramid*@discount/100+"z/"+(getmapusers("moc_pryd01.gat")+getmapusers("moc_pryd02.gat") + +getmapusers("moc_pryd03.gat")+getmapusers("moc_pryd04.gat")+getmapusers("moc_pryd05.gat") + +getmapusers("moc_pryd06.gat")+getmapusers("moc_prydb1.gat"))+" "+$@ked_users$+")", + "- Sphinx ("+$@kewd_sphinx*@discount/100+"z/"+(getmapusers("in_sphinx1.gat") + +getmapusers("in_sphinx2.gat")+getmapusers("in_sphinx3.gat")+getmapusers("in_sphinx4.gat") + +getmapusers("in_sphinx5.gat"))+" "+$@ked_users$+")", + "- Sunken Ship ("+$@kewd_sunkenShip*@discount/100+"z/"+(getmapusers("treasure01.gat") + +getmapusers("treasure02.gat"))+" "+$@ked_users$+")", + "- Thanatos Tower ("+$@kewd_thanatosTower*@discount/100+"z/"+(getmapusers("tha_t01.gat") + +getmapusers("tha_t02.gat")+getmapusers("tha_t03.gat")+getmapusers("tha_t04.gat") + +getmapusers("tha_t05.gat")+getmapusers("tha_t06.gat")+getmapusers("tha_t07.gat") + +getmapusers("tha_t08.gat")+getmapusers("tha_t09.gat")+getmapusers("tha_t10.gat") + +getmapusers("tha_t11.gat")+getmapusers("tha_t12.gat")+getmapusers("thana_step.gat") + +getmapusers("thana_boss.gat"))+" "+$@ked_users$+")", + "- Toy Factory ("+$@kewd_toyFactory*@discount/100+"z/"+(getmapusers("xmas_dun01.gat") + +getmapusers("xmas_dun02.gat"))+" "+$@ked_users$+")", + "- Turtle Island ("+$@kewd_turtleIsland*@discount/100+"z/"+(getmapusers("tur_dun01.gat") + +getmapusers("tur_dun02.gat")+getmapusers("tur_dun03.gat")+getmapusers("tur_dun04.gat") + +getmapusers("tur_dun05.gat")+getmapusers("tur_dun06.gat"))+" "+$@ked_users$+")", + "- Umbala Dungeon ("+$@kewd_umbala*@discount/100+"z/"+(getmapusers("um_dun01.gat") + +getmapusers("um_dun02.gat"))+" "+$@ked_users$+")" + ); + } else { + set @kmenu, select( + "- Cancel", + "- Abyss Lake ("+$@kewd_abyssLake*@discount/100+"z)", + "- Amatsu Dungeon ("+$@kewd_amatsu*@discount/100+"z)", + "- Ant Hell ("+$@kewd_antHell*@discount/100+"z)", + "- Ayothaya Ancient Shrine ("+$@kewd_ayothaya*@discount/100+"z)", + "- Byalan Dungeon ("+$@kewd_byalan*@discount/100+"z)", + "- Comodo Caves ("+$@kewd_comodo*@discount/100+"z)", + "- Clock Tower ("+$@kewd_clockTower*@discount/100+"z)", + "- Coal Mine ("+$@kewd_coalMines*@discount/100+"z)", + "- Culvert ("+$@kewd_culvert*@discount/100+"z)", + "- Einbroch Mine ("+$@kewd_einbech*@discount/100+"z)", + "- Gefenia ("+$@kewd_gefenia*@discount/100+"z)", + "- Geffen Dungeon ("+$@kewd_geffen*@discount/100+"z)", + "- Glast Heim ("+$@kewd_glastHeim*@discount/100+"z)", + "- Gon Ryun Dungeon ("+$@kewd_gonRyun*@discount/100+"z)", + "- Hidden Temple ("+$@kewd_hiddenTemple*@discount/100+"z)", + "- Juperos ("+$@kewd_juperos*@discount/100+"z)", + "- LightHalzen Rekkenber ("+$@kewd_lightHalzen*@discount/100+"z)", + "- Lou Yang Royal Tomb ("+$@kewd_louYang*@discount/100+"z)", + "- Magma Dungeon ("+$@kewd_magma*@discount/100+"z)", + "- Orcs Dungeon ("+$@kewd_orc*@discount/100+"z)", + "- Payon Dungeon ("+$@kewd_payon*@discount/100+"z)", + "- Pyramid ("+$@kewd_pyramid*@discount/100+"z)", + "- Sphinx ("+$@kewd_sphinx*@discount/100+"z)", + "- Sunken Ship ("+$@kewd_sunkenShip*@discount/100+"z)", + "- Thanatos Tower ("+$@kewd_thanatosTower*@discount/100+"z)", + "- Toy Factory ("+$@kewd_toyFactory*@discount/100+"z)", + "- Turtle Island ("+$@kewd_turtleIsland*@discount/100+"z)", + "- Umbala Dungeon ("+$@kewd_umbala*@discount/100+"z)" + ); + } + switch (@kmenu) { + case 2: + SF_abyssLake(); + break; + case 3: + SF_amatsu(); + break; + case 4: + SF_antHell(); + break; + case 5: + SF_ayothaya(); + break; + case 6: + SF_byalan(); + break; + case 7: + SF_comodo(); + break; + case 8: + SF_clockTower(); + break; + case 9: + SF_coalMine(); + break; + case 10: + SF_culvert(); + break; + case 11: + SF_einbech(); + break; + case 12: + SF_gefenia(); + break; + case 13: + SF_geffen(); + break; + case 14: + SF_glastHeim(); + break; + case 15: + SF_gonRyun(); + break; + case 16: + SF_hiddenTemple(); + break; + case 17: + SF_juperos(); + break; + case 18: + SF_lightHalzen(); + break; + case 19: + SF_louYang(); + break; + case 20: + SF_magma(); + break; + case 21: + SF_orcs(); + break; + case 22: + SF_payon(); + break; + case 23: + SF_pyramid(); + break; + case 24: + SF_sphinx(); + break; + case 25: + SF_sunkenShip(); + break; + case 26: + SF_thanatosTower(); + break; + case 27: + SF_toyFactory(); + break; + case 28: + SF_turtleIsland(); + break; + case 29: + SF_umbala(); + break; + default: + return; + } + } while (@kmenu > 1); + return; + +//Subfunction SF_check(flag, cost, floor-count, player-map, dungeon-map#, map#1, map#2, ...) +//If kewd_travel is set, the flag needs to match to be to warp there. +//Floor count is the amount of levels the dungeon needs a price for, +//dungeon-map# is the number of maps passed that need to be checked against +//the player's map to see if they are warping from within the entrance. + +function SF_check { + if ($@kewd_travel && !((kewd_travel|#kewd_travel)&getarg(0))) { + callfunc "F_keIntro", e_sry, "Sorry, but we can only warp you to dungeons you have saved in before."; + return 0; + } + set @cost, getarg(1); + set @discount,100; + set @map$, getarg(3); + set @mapI, getarg(4); + + while (@mapI > 0) + { + if (@map$ == getarg(4+@mapI)) { + set @discount,100-$@kewd_entryDiscount; + break; + } + set @mapI, @mapI-1; + } + set @discountKP, callfunc("F_keCost",100,$@kewd_discount); + set @discount,@discount*@discountKP/100; + + set @cost,@cost*@discount/100; + set @inc,@cost*$@kewd_levelCost/100; + + //@discountKP is used to reverse the price to before the KP discount takes place + if (@discountKP == 0) + set @discountKP,1; + if ($@kewd_deep == 0) + return 1; + + switch (getarg(2)) { + case 9: + set @cost9, @cost +8*@inc; + case 8: + set @cost8, @cost +7*@inc; + case 7: + set @cost7, @cost +6*@inc; + case 6: + set @cost6, @cost +5*@inc; + case 5: + set @cost5, @cost +4*@inc; + case 4: + set @cost4, @cost +3*@inc; + case 3: + set @cost3, @cost +2*@inc; + case 2: + set @cost2, @cost +@inc; + } + return 1; +} + +function SF_abyssLake { + if (!(SF_check(0x1, $@kewd_abyssLake, 3, @map$, 1, "hu_fild05.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Abyss Lake", + "- Entrance ("+@cost+"z/"+getmapusers("abyss_01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("abyss_02.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost3+"z/"+getmapusers("abyss_03.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Abyss Lake", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost3+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"hu_fild05.gat",173,308; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"abyss_02.gat",272,270; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"abyss_03.gat",116,29; + break; + } +} + +function SF_amatsu { + if (!(SF_check(0x2, $@kewd_amatsu, 3, @map$, 1, "ama_in02.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Amatsu Dungeon", + "- Entrance ("+@cost+"z/"+getmapusers("ama_dun01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("ama_dun02.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost3+"z/"+getmapusers("ama_dun03.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Amatsu Dungeon", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost3+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"ama_in02.gat",120,181; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"ama_dun02.gat",34,41; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"ama_dun03.gat",119,14; + break; + } +} + +function SF_antHell { + if (!(SF_check(0x4, $@kewd_antHell, 1, @map$, 2, "moc_fild04.gat","moc_fild15.gat"))) + return; + if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Ant Hell", + "- Northern Entrance ("+@cost+"z/"+getmapusers("anthell01.gat")+" "+$@ked_users$+")", + "- Southern Entrance ("+@cost+"z/"+getmapusers("anthell02.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Ant Hell", + "- Northern Entrance ("+@cost+"z)", + "- Southern Entrance ("+@cost+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"moc_fild04.gat",201,327; + break; + case 3: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"moc_fild15.gat",246,251; + break; + } +} + +function SF_ayothaya { + if (!(SF_check(0x8, $@kewd_ayothaya, 2, @map$, 1, "ayo_fild02.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to the Ancient Shrine", + "- Entrance ("+@cost+"z/"+getmapusers("ayo_dun01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("ayo_dun02.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to the Ancient Shrine", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"ayo_fild02.gat",273,150; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"ayo_dun02.gat",24,28; + break; + } +} + +function SF_byalan { + if (!(SF_check(0x10, $@kewd_byalan, 5, @map$, 1, "izlu2dun.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Undersea Tunnel", + "- Entrance ("+@cost+"z/"+getmapusers("iz_dun00.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("iz_dun01.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost3+"z/"+getmapusers("iz_dun02.gat")+" "+$@ked_users$+")", + "- Level 4 ("+@cost4+"z/"+getmapusers("iz_dun03.gat")+" "+$@ked_users$+")", + "- Level 5 ("+@cost5+"z/"+getmapusers("iz_dun04.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Undersea Tunnel", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost3+"z)", + "- Level 4 ("+@cost4+"z)", + "- Level 5 ("+@cost5+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"izlu2dun.gat",114,84; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"iz_dun01.gat",253,252; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"iz_dun02.gat",236,204; + break; + case 5: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"iz_dun03.gat",32,63; + break; + case 6: + callfunc "F_keWarp",@cost5*100/@discountKP,$@kewd_discount,e_hmm,"iz_dun04.gat",26,27; + break; + } +} + +function SF_comodo { + if (!(SF_check(0x20, $@kewd_comodo, 1, @map$, 2, "comodo.gat","cmd_fild01.gat"))) + return; + + if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Comodo Caves", + "- Mao, The Eastern Cave ("+@cost+"z/"+getmapusers("beach_dun3.gat")+" "+$@ked_users$+")", + "- Karu, The Western Cave ("+@cost+"z/"+getmapusers("beach_dun.gat")+" "+$@ked_users$+")", + "- Ruande, The Northern Cave ("+@cost+"z/"+getmapusers("beach_dun2.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Comodo Caves", + "- Mao, The Eastern Cave ("+@cost+"z)", + "- Karu, The Western Cave ("+@cost+"z)", + "- Ruande, The Northern Cave ("+@cost+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"cmd_fild01.gat",34,325; + break; + case 3: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"comodo.gat",32,209; + break; + case 4: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"comodo.gat",180,352; + break; + } +} + +function SF_clockTower { + if (!(SF_check(0x40, $@kewd_clockTower, 5, @map$, 1, "aldebaran.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Clock Tower", + "- Entrance ("+@cost+"z/"+getmapusers("c_tower1.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("c_tower2.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost3+"z/"+getmapusers("c_tower3.gat")+" "+$@ked_users$+")", + "- Level 4 ("+@cost4+"z/"+getmapusers("c_tower4.gat")+" "+$@ked_users$+")", + "- Basement 1 ("+@cost2+"z/"+getmapusers("alde_dun01.gat")+" "+$@ked_users$+")", + "- Basement 2 ("+@cost3+"z/"+getmapusers("alde_dun02.gat")+" "+$@ked_users$+")", + "- Basement 3 ("+@cost4+"z/"+getmapusers("alde_dun03.gat")+" "+$@ked_users$+")", + "- Basement 4 ("+@cost5+"z/"+getmapusers("alde_dun04.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Clock Tower", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost3+"z)", + "- Level 4 ("+@cost4+"z)", + "- Basement 1 ("+@cost2+"z)", + "- Basement 2 ("+@cost3+"z)", + "- Basement 3 ("+@cost4+"z)", + "- Basement 4 ("+@cost5+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"aldebaran.gat",140,130; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"c_tower2.gat",268,26; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"c_tower3.gat",68,146; + break; + case 5: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"c_tower4.gat",185,44; + break; + case 6: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"alde_dun01.gat",297,25; + break; + case 7: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"alde_dun02.gat",43,24; + break; + case 8: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"alde_dun03.gat",18,267; + break; + case 9: + callfunc "F_keWarp",@cost5*100/@discountKP,$@kewd_discount,e_hmm,"alde_dun04.gat",82,267; + break; + } +} + +function SF_coalMine { + if (!(SF_check(0x80, $@kewd_coalMines, 3, @map$, 1, "mjolnir_02.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to the Mjolnir Dead Pit", + "- Entrance ("+@cost+"z/"+getmapusers("mjo_dun01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("mjo_dun02.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost3+"z/"+getmapusers("mjo_dun03.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to the Mjolnir Dead Pit", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost3+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"mjolnir_02.gat",89,358; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"mjo_dun02.gat",376,342; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"mjo_dun03.gat",305,260; + break; + } +} + +function SF_culvert { + if (!(SF_check(0x100, $@kewd_culvert, 4, @map$, 1, "prt_fild05.gat"))) + return; + if ($@kewd_deep == 0) { + set @submenu, 2; + } else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to the Prontera Culvert", + "- Entrance ("+@cost+"z/"+getmapusers("prt_sewb1.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("prt_sewb2.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost3+"z/"+getmapusers("prt_sewb3.gat")+" "+$@ked_users$+")", + "- Level 4 ("+@cost4+"z/"+getmapusers("prt_sewb4.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to the Prontera Culvert", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost3+"z)", + "- Level 4 ("+@cost4+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"prt_fild05.gat",274,208; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"prt_sewb2.gat",19,19; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"prt_sewb3.gat",180,169; + break; + case 5: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"prt_sewb4.gat",100,92; + break; + } +} + +function SF_einbech { + if (!(SF_check(0x200, $@kewd_einbech, 2, @map$, 1, "einbech.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to the Einbroch Mines", + "- Entrance ("+@cost+"z/"+getmapusers("ein_dun01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("ein_dun02.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to the Einbech Mines", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"einbech.gat",138,244; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"ein_dun02.gat",290,285; + break; + } +} + +function SF_geffen { + if (!(SF_check(0x800, $@kewd_geffen, 3, @map$, 1, "gef_tower.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Geffen Dungeon", + "- Entrance ("+@cost+"z/"+getmapusers("gef_dun00.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("gef_dun01.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost3+"z/"+getmapusers("gef_dun02.gat")+" "+$@ked_users$+")" +// "- Level 4 ("+@cost4+"z/"+getmapusers("gef_dun03.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Geffen Dungeon", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost3+"z)" +// "- Level 4 ("+@cost4+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"gef_tower.gat",147,35; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"gef_dun01.gat",115,236; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"gef_dun02.gat",106,132; + break; + case 5: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"gef_dun03.gat",203,200; + break; + } +} + +function SF_gefenia { + if (!(SF_check(0x400, $@kewd_gefenia, 2, @map$, 4, "gefenia01.gat","gefenia02.gat","gefenia03.gat","gefenia04.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Gefenia", + "- Level 1 ("+@cost+"z/"+getmapusers("gefenia01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("gefenia02.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost2+"z/"+getmapusers("gefenia03.gat")+" "+$@ked_users$+")", + "- Level 4 ("+@cost+"z/"+getmapusers("gefenia04.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Gefenia", + "- Level 1 ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost2+"z)", + "- Level 4 ("+@cost+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"gefenia01.gat",60,169; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"gefenia02.gat",116,116; + break; + case 4: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"gefenia03.gat",119,277; + break; + case 5: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"gefenia04.gat",129,86; + break; + } +} + +function SF_glastHeim { + if (!(SF_check(0x1000, $@kewd_glastHeim, 7, @map$, 1, "glast_01.gat"))) + return; + if ($@kewd_deep == 0) { + if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Glast Heim", + "- Church Entrance ("+@cost+"z/"+getmapusers("gl_church.gat")+" "+$@ked_users$+")", + "- Castle Terrace ("+@cost+"z/"+(getmapusers("gl_cas01.gat")+getmapusers("gl_cas02.gat"))+" "+$@ked_users$+")", + "- Staircase Entrance ("+@cost+"z/"+getmapusers("gl_step.gat")+" "+$@ked_users$+")", + "- Chivalry Entrance ("+@cost+"z/"+getmapusers("gl_knt01.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Glast Heim", + "- Church Entrance ("+@cost+"z)", + "- Castle Terrace ("+@cost+"z)", + "- Staircase Entrance ("+@cost+"z)", + "- Chivalry Entrance ("+@cost+"z)" + ); + } + if (@submenu > 2) //Churchyard is index 3. + set @submenu, @submenu+1; + } else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Glast Heim", + "- Church Entrance ("+@cost+"z/"+getmapusers("gl_church.gat")+" "+$@ked_users$+")", + "- Churchyard ("+@cost2+"z/"+getmapusers("gl_chyard.gat")+" "+$@ked_users$+")", + "- Castle Terrace ("+@cost+"z/"+(getmapusers("gl_cas01.gat")+getmapusers("gl_cas02.gat"))+" "+$@ked_users$+")", + "- Staircase Entrance ("+@cost+"z/"+getmapusers("gl_step.gat")+" "+$@ked_users$+")", + "- Chivalry Entrance ("+@cost+"z/"+getmapusers("gl_knt01.gat")+" "+$@ked_users$+")", + "- Chivalry Level 2 ("+@cost2+"z/"+getmapusers("gl_knt02.gat")+" "+$@ked_users$+")", + "- Underground Prison 1 ("+@cost2+"z/"+getmapusers("gl_prison.gat")+" "+$@ked_users$+")", + "- Underground Prison 2 ("+@cost3+"z/"+getmapusers("gl_prison1.gat")+" "+$@ked_users$+")", + "- Culvert Level 1 ("+@cost4+"z/"+getmapusers("gl_sew01.gat")+" "+$@ked_users$+")", + "- Culvert Level 2 ("+@cost3+"z/"+getmapusers("gl_sew02.gat")+" "+$@ked_users$+")", + "- Culvert Level 3 ("+@cost4+"z/"+getmapusers("gl_sew03.gat")+" "+$@ked_users$+")", + "- Culvert Level 4 ("+@cost5+"z/"+getmapusers("gl_sew04.gat")+" "+$@ked_users$+")", + "- Underground Cave 1 ("+@cost6+"z/"+getmapusers("gl_dun01.gat")+" "+$@ked_users$+")", + "- Underground Cave 2 ("+@cost7+"z/"+getmapusers("gl_dun02.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Glast Heim", + "- Church Entrance ("+@cost+"z)", + "- Churchyard ("+@cost2+"z)", + "- Castle Terrace ("+@cost+"z)", + "- Staircase Entrance ("+@cost+"z)", + "- Chivalry Entrance ("+@cost+"z)", + "- Chivalry Level 2 ("+@cost2+"z)", + "- Underground Prison Level 1 ("+@cost2+"z)", + "- Underground Prison Level 2 ("+@cost3+"z)", + "- Culvert Level 1 ("+@cost4+"z)", + "- Culvert Level 2 ("+@cost3+"z)", + "- Culvert Level 3 ("+@cost4+"z)", + "- Culvert Level 4 ("+@cost5+"z)", + "- Underground Cave Level 1 ("+@cost6+"z)", + "- Underground Cave Level 2 ("+@cost7+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"glast_01.gat",206,136; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"gl_chyard.gat",147,15; + break; + case 4: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"glast_01.gat",199,335; + break; + case 5: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"glast_01.gat",62,107; + break; + case 6: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"glast_01.gat",69,193; + break; + case 7: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"gl_knt02.gat",157,287; + break; + case 8: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"gl_prison.gat",14,70; + break; + case 9: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"gl_prison1.gat",150,14; + break; + case 10: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"gl_sew01.gat",258,255; + break; + case 11: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"gl_sew02.gat",108,291; + break; + case 12: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"gl_sew03.gat",171,283; + break; + case 13: + callfunc "F_keWarp",@cost5*100/@discountKP,$@kewd_discount,e_hmm,"gl_sew04.gat",68,277; + break; + case 14: + callfunc "F_keWarp",@cost6*100/@discountKP,$@kewd_discount,e_hmm,"gl_dun01.gat",133,271; + break; + case 15: + callfunc "F_keWarp",@cost7*100/@discountKP,$@kewd_discount,e_hmm,"gl_dun02.gat",224,274; + break; + } +} + +function SF_gonRyun { + if (!(SF_check(0x2000, $@kewd_gonRyun, 3, @map$, 1, "gonryun.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Gon Ryun Dungeon", + "- Entrance ("+@cost+"z/"+getmapusers("gon_dun01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("gon_dun02.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost3+"z/"+getmapusers("gon_dun03.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Gon Ryun Dungeon", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost3+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"gonryun.gat",161,195; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"gon_dun02.gat",22,114; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"gon_dun03.gat",68,11; + break; + } +} + +function SF_hiddenTemple { + if (!(SF_check(0x4000, $@kewd_hiddenTemple, 3, @map$, 1, "prt_fild01.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to the Laberynth Forest", + "- Entrance ("+@cost+"z/"+getmapusers("prt_maze01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("prt_maze02.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost3+"z/"+getmapusers("prt_maze03.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to the Laberynth Forest", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost3+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"prt_fild01.gat",136,361; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"prt_maze02.gat",106,62; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"prt_maze03.gat",23,8; + break; + } +} + +function SF_juperos { + if (!(SF_check(0x8000, $@kewd_juperos, 3, @map$, 1, "jupe_cave.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Juperos", + "- Entrance ("+@cost+"z/"+getmapusers("juperos_01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("juperos_02.gat")+" "+$@ked_users$+")", + "- Core ("+@cost3+"z/"+getmapusers("jupe_core.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Juperos", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Core ("+@cost3+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"jupe_cave.gat",55,52; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"juperos_02.gat",37,63; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"jupe_gate.gat",-1,-1; + break; + } +} + +function SF_lightHalzen { + if (!(SF_check(0x10000, $@kewd_lightHalzen, 3, @map$, 1, "lighthalzen.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to the Rekkenber", + "- Entrance ("+@cost+"z/"+getmapusers("lou_dun01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("lou_dun02.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost3+"z/"+getmapusers("lou_dun03.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to the Rekkenber", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost3+"z)" + ); + } + switch (@submenu) { + case 2: +//This is the Rekkenber building entrance, which officially is only a dungeon exit. +// callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"lighthalzen.gat",74,72; + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"lighthalzen.gat",303,302; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"lhz_dun02.gat",154,18; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"lhz_dun03.gat",141,132; + break; + } +} + +function SF_louYang { + if (!(SF_check(0x20000, $@kewd_louYang, 3, @map$, 1, "louyang.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to the Royal Tomb", + "- Entrance ("+@cost+"z/"+getmapusers("lou_dun01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("lou_dun02.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost3+"z/"+getmapusers("lou_dun03.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to the Royal Tomb", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost3+"z)" + ); + }; + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"louyang.gat",41,267; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"lou_dun02.gat",281,20; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"lou_dun03.gat",165,39; + break; + } +} + +function SF_magma { + if (!(SF_check(0x40000, $@kewd_magma, 2, @map$, 1, "yuno_fild03.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Nogg Road", + "- Entrance ("+@cost+"z/"+getmapusers("mag_dun01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("mag_dun02.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Nogg Road", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"yuno_fild03.gat",35,135; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"mag_dun02.gat",47,30; + break; + } +} + +function SF_orcs { + if (!(SF_check(0x80000, $@kewd_orc, 2, @map$, 1, "gef_fild10.gat"))) + return; + if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Orcs Dungeon", + "- Front Entrance ("+@cost+"z/"+getmapusers("orcsdun01.gat")+" "+$@ked_users$+")", + "- Back Entrance ("+@cost+"z/"+getmapusers("orcsdun02.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Orcs Dungeon", + "- Front Entrance ("+@cost+"z)", + "- Back Entrance ("+@cost+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"in_orcs01.gat",34,165; + break; + case 3: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"in_orcs01.gat",112,99; + break; + } +} + +function SF_payon { + if (!(SF_check(0x100000, $@kewd_payon, 5, @map$, 1, "pay_arche.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to the Payon Cave", + "- Entrance ("+@cost+"z/"+getmapusers("pay_dun00.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("pay_dun01.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost3+"z/"+getmapusers("pay_dun02.gat")+" "+$@ked_users$+")", + "- Level 4 ("+@cost4+"z/"+getmapusers("pay_dun03.gat")+" "+$@ked_users$+")", + "- Level 5 ("+@cost5+"z/"+getmapusers("pay_dun04.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to the Payon Cave", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost3+"z)", + "- Level 4 ("+@cost4+"z)", + "- Level 5 ("+@cost5+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"pay_arche.gat",41,133; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"pay_dun01.gat",19,33; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"pay_dun02.gat",19,63; + break; + case 5: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"pay_dun03.gat",155,159; + break; + case 6: + callfunc "F_keWarp",@cost5*100/@discountKP,$@kewd_discount,e_hmm,"pay_dun04.gat",34,202; + break; + } +} + +function SF_pyramid { + if (!(SF_check(0x200000, $@kewd_pyramid, 4, @map$,1, "moc_ruins.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to the Pyramid", + "- Entrance ("+@cost+"z/"+getmapusers("moc_pryd01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("moc_pryd02.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost3+"z/"+getmapusers("moc_pryd03.gat")+" "+$@ked_users$+")", + "- Level 4 ("+@cost4+"z/"+getmapusers("moc_pryd04.gat")+" "+$@ked_users$+")", + "- Basement 1 ("+@cost2+"z/"+getmapusers("moc_pryd05.gat")+" "+$@ked_users$+")", + "- Basement 2 ("+@cost3+"z/"+getmapusers("moc_pryd06.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to the Pyramid", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost3+"z)", + "- Level 4 ("+@cost4+"z)", + "- Basement 1 ("+@cost2+"z)", + "- Basement 2 ("+@cost3+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"moc_ruins.gat",62,162; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"moc_pryd02.gat",10,192; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"moc_pryd03.gat",100,92; + break; + case 5: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"moc_pryd04.gat",18,187; + break; + case 6: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"moc_pryd05.gat",94,96; + break; + case 7: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"moc_pryd06.gat",192,11; + break; + } +} + +function SF_sphinx { + if (!(SF_check(0x400000, $@kewd_sphinx, 5, @map$, 1, "moc_fild19.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to the Sphinx", + "- Entrance ("+@cost+"z/"+getmapusers("in_sphinx1.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("in_sphinx2.gat")+" "+$@ked_users$+")", + "- Level 3 ("+@cost3+"z/"+getmapusers("in_sphinx3.gat")+" "+$@ked_users$+")", + "- Level 4 ("+@cost4+"z/"+getmapusers("in_sphinx4.gat")+" "+$@ked_users$+")", + "- Level 5 ("+@cost5+"z/"+getmapusers("in_sphinx5.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to the Sphinx", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)", + "- Level 3 ("+@cost3+"z)", + "- Level 4 ("+@cost4+"z)", + "- Level 5 ("+@cost5+"z)" + ); + } + + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"moc_fild19.gat",107,100; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"in_sphinx2.gat",149,81; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"in_sphinx3.gat",210,54; + break; + case 5: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"in_sphinx4.gat",10,222; + break; + case 6: + callfunc "F_keWarp",@cost5*100/@discountKP,$@kewd_discount,e_hmm,"in_sphinx5.gat",100,99; + break; + } +} + +function SF_sunkenShip { + if (!(SF_check(0x800000, $@kewd_sunkenShip, 2, @map$, 1, "alb2trea.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Sunken Ship", + "- Entrance ("+@cost+"z/"+getmapusers("treasure01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("treasure02.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Sunken Ship", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)" + ); + } + + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"alb2trea.gat",87,103; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"treasure02.gat",102,27; + break; + } +} + +function SF_thanatosTower { + if (!(SF_check(0x1000000, $@kewd_thanatosTower, 9, @map$, 1, "tha_t01.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Thanatos Tower", + "- Entrance ("+@cost+"z/"+getmapusers("tha_t01.gat")+" "+$@ked_users$+")", + "- Floor 2 ("+@cost2+"z/"+getmapusers("tha_t02.gat")+" "+$@ked_users$+")", + "- Floor 3 ("+@cost3+"z/"+getmapusers("tha_t03.gat")+" "+$@ked_users$+")", + "- Floor 4 ("+@cost4+"z/"+getmapusers("tha_t04.gat")+" "+$@ked_users$+")", + "- Floor 5 ("+@cost5+"z/"+getmapusers("tha_t05.gat")+" "+$@ked_users$+")", + "- Floor 6 ("+@cost6+"z/"+getmapusers("tha_t06.gat")+" "+$@ked_users$+")", + "- Floor 7 ("+@cost7+"z/"+getmapusers("tha_t07.gat")+" "+$@ked_users$+")", + "- Floor 8 ("+@cost8+"z/"+getmapusers("tha_t08.gat")+" "+$@ked_users$+")", + "- Floor 9 ("+@cost9+"z/"+getmapusers("tha_t09.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Thanatos Tower", + "- Entrance ("+@cost+"z)", + "- Floor 2 ("+@cost2+"z)", + "- Floor 3 ("+@cost3+"z)", + "- Floor 4 ("+@cost4+"z)", + "- Floor 5 ("+@cost5+"z)", + "- Floor 6 ("+@cost6+"z)", + "- Floor 7 ("+@cost7+"z)", + "- Floor 8 ("+@cost8+"z)", + "- Floor 9 ("+@cost9+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"tha_scene01.gat",139,201; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"tha_t02.gat",149,136; + break; + case 4: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"tha_t03.gat",220,159; + break; + case 5: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"tha_t04.gat",59,144; + break; + case 6: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"tha_t05.gat",62,9; + break; + case 7: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"tha_t06.gat",120,225; + break; + case 8: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"tha_t07.gat",32,166; + break; + case 9: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"tha_t08.gat",108,44; + break; + case 10: + callfunc "F_keWarp",@cost4*100/@discountKP,$@kewd_discount,e_hmm,"tha_t09.gat",87,145; + break; + } +} + +function SF_toyFactory { + if (!(SF_check(0x2000000, $@kewd_toyFactory, 2, @map$, 1, "xmas.gat"))) + return; + + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Toy Factory", + "- Entrance ("+@cost+"z/"+getmapusers("xmas_dun01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("xmas_dun02.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Toy Factory", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)" + ); + } + + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"xmas.gat",144,306; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"xmas_dun02.gat",129,133; + break; + } +} + +function SF_turtleIsland { + if (!(SF_check(0x4000000, $@kewd_turtleIsland, 3, @map$, 1, "tur_dun01.gat"))) + return; + if ($@kewd_deep == 0) { + if ($@kewd_turtleCave) + set @submenu, 3; + else + set @submenu, 2; + } else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Turtle Island", + "- Island Entrance ("+@cost+"z/"+getmapusers("tur_dun01.gat")+" "+$@ked_users$+")", + "- Cave Entrance ("+@cost+"z/"+getmapusers("tur_dun02.gat")+" "+$@ked_users$+")", + "- Cave Level 2 ("+@cost2+"z/"+getmapusers("tur_dun03.gat")+" "+$@ked_users$+")", + "- Cave Level 3 ("+@cost3+"z/"+getmapusers("tur_dun04.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Turtle Island", + "- Island Entrance ("+@cost+"z)", + "- Cave Entrance ("+@cost+"z)", + "- Cave Level 2 ("+@cost2+"z)", + "- Cave Level 3 ("+@cost3+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"tur_dun01.gat",153,47; + break; + case 3: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"tur_dun01.gat",155,234; + break; + case 4: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"tur_dun03.gat",132,189; + break; + case 5: + callfunc "F_keWarp",@cost3*100/@discountKP,$@kewd_discount,e_hmm,"tur_dun04.gat",100,192; + break; + } +} + +function SF_umbala { + if (!(SF_check(0x8000000, $@kewd_umbala, 2, @map$, 1, "umbala.gat"))) + return; + if ($@kewd_deep == 0) + set @submenu, 2; + else if ($@kewd_showOnline) { + set @submenu, select( + "- Cancel warp to Umbala Dungeon", + "- Entrance ("+@cost+"z/"+getmapusers("um_dun01.gat")+" "+$@ked_users$+")", + "- Level 2 ("+@cost2+"z/"+getmapusers("um_dun02.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel warp to Umbala Dungeon", + "- Entrance ("+@cost+"z)", + "- Level 2 ("+@cost2+"z)" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"umbala.gat",113,282; + break; + case 3: + callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"um_dun02.gat",48,31; + break; + } +} + +} + +//Invoked when we want to add a map to the list of travelled-to dungeons +function script F_keAddTravelDungeon { + set @map$, getarg(0); +// Temporary code to update the previous variable format to the new one. + if(kewd_abyss) { + set kewd_travel,kewd_travel|0x1; + set kewd_abyss,0; + } + if(kewd_amatsu) { + set kewd_travel,kewd_travel|0x2; + set kewd_amatsu,0; + } + if(kewd_antHell) { + set kewd_travel,kewd_travel|0x4; + set kewd_antHell,0; + } + if(kewd_ayothaya) { + set kewd_travel,kewd_travel|0x8; + set kewd_ayothaya,0; + } + if(kewd_byalan) { + set kewd_travel,kewd_travel|0x10; + set kewd_byalan,0; + } + if(kewd_comodo) { + set kewd_travel,kewd_travel|0x20; + set kewd_comodo,0; + } + if(kewd_clockTower) { + set kewd_travel,kewd_travel|0x40; + set kewd_clockTower,0; + } + if(kewd_coalMines) { + set kewd_travel,kewd_travel|0x80; + set kewd_coalMines,0; + } + if(kewd_culvert) { + set kewd_travel,kewd_travel|0x100; + set kewd_culvert,0; + } + if(kewd_einbech) { + set kewd_travel,kewd_travel|0x200; + set kewd_einbech,0; + } + if(kewd_geffen) { + set kewd_travel,kewd_travel|0x800; + set kewd_geffen,0; + } + if(kewd_glastHeim) { + set kewd_travel,kewd_travel|0x1000; + set kewd_glastHeim,0; + } + if(kewd_gonRyun) { + set kewd_travel,kewd_travel|0x2000; + set kewd_gonRyun,0; + } + if(kewd_hiddenTemple) { + set kewd_travel,kewd_travel|0x4000; + set kewd_hiddenTemple,0; + } + if(kewd_juperos) { + set kewd_travel,kewd_travel|0x8000; + set kewd_juperos,0; + } + if(kewd_lightHalzen) { + set kewd_travel,kewd_travel|0x10000; + set kewd_lightHalzen,0; + } + if(kewd_louYang) { + set kewd_travel,kewd_travel|0x20000; + set kewd_louYang,0; + } + if(kewd_magma) { + set kewd_travel,kewd_travel|0x40000; + set kewd_magma,0; + } + if(kewd_orc) { + set kewd_travel,kewd_travel|0x80000; + set kewd_orc,0; + } + if(kewd_payon) { + set kewd_travel,kewd_travel|0x100000; + set kewd_payon,0; + } + if(kewd_pyramid) { + set kewd_travel,kewd_travel|0x200000; + set kewd_pyramid,0; + } + if(kewd_sphinx) { + set kewd_travel,kewd_travel|0x400000; + set kewd_sphinx,0; + } + if(kewd_sunkenShip) { + set kewd_travel,kewd_travel|0x800000; + set kewd_sunkenShip,0; + } + if(kewd_thanatosTower) { + set kewd_travel,kewd_travel|0x1000000; + set kewd_thanatosTower,0; + } + if(kewd_toyFactory) { + set kewd_travel,kewd_travel|0x2000000; + set kewd_toyFactory,0; + } + if(kewd_turtleIsland) { + set kewd_travel,kewd_travel|0x4000000; + set kewd_turtleIsland,0; + } + if(kewd_umbala) { + set kewd_travel,kewd_travel|0x8000000; + set kewd_umbala,0; + } + + if(#kewd_abyss) { + set #kewd_travel,#kewd_travel|0x1; + set #kewd_abyss,0; + } + if(#kewd_amatsu) { + set #kewd_travel,#kewd_travel|0x2; + set #kewd_amatsu,0; + } + if(#kewd_antHell) { + set #kewd_travel,#kewd_travel|0x4; + set #kewd_antHell,0; + } + if(#kewd_ayothaya) { + set #kewd_travel,#kewd_travel|0x8; + set #kewd_ayothaya,0; + } + if(#kewd_byalan) { + set #kewd_travel,#kewd_travel|0x10; + set #kewd_byalan,0; + } + if(#kewd_comodo) { + set #kewd_travel,#kewd_travel|0x20; + set #kewd_comodo,0; + } + if(#kewd_clockTower) { + set #kewd_travel,#kewd_travel|0x40; + set #kewd_clockTower,0; + } + if(#kewd_coalMines) { + set #kewd_travel,#kewd_travel|0x80; + set #kewd_coalMines,0; + } + if(#kewd_culvert) { + set #kewd_travel,#kewd_travel|0x100; + set #kewd_culvert,0; + } + if(#kewd_einbech) { + set #kewd_travel,#kewd_travel|0x200; + set #kewd_einbech,0; + } + if(#kewd_geffen) { + set #kewd_travel,#kewd_travel|0x800; + set #kewd_geffen,0; + } + if(#kewd_glastHeim) { + set #kewd_travel,#kewd_travel|0x1000; + set #kewd_glastHeim,0; + } + if(#kewd_gonRyun) { + set #kewd_travel,#kewd_travel|0x2000; + set #kewd_gonRyun,0; + } + if(#kewd_hiddenTemple) { + set #kewd_travel,#kewd_travel|0x4000; + set #kewd_hiddenTemple,0; + } + if(#kewd_juperos) { + set #kewd_travel,#kewd_travel|0x8000; + set #kewd_juperos,0; + } + if(#kewd_lightHalzen) { + set #kewd_travel,#kewd_travel|0x10000; + set #kewd_lightHalzen,0; + } + if(#kewd_louYang) { + set #kewd_travel,#kewd_travel|0x20000; + set #kewd_louYang,0; + } + if(#kewd_magma) { + set #kewd_travel,#kewd_travel|0x40000; + set #kewd_magma,0; + } + if(#kewd_orc) { + set #kewd_travel,#kewd_travel|0x80000; + set #kewd_orc,0; + } + if(#kewd_payon) { + set #kewd_travel,#kewd_travel|0x100000; + set #kewd_payon,0; + } + if(#kewd_pyramid) { + set #kewd_travel,#kewd_travel|0x200000; + set #kewd_pyramid,0; + } + if(#kewd_sphinx) { + set #kewd_travel,#kewd_travel|0x400000; + set #kewd_sphinx,0; + } + if(#kewd_sunkenShip) { + set #kewd_travel,#kewd_travel|0x800000; + set #kewd_sunkenShip,0; + } + if(#kewd_thanatosTower) { + set #kewd_travel,#kewd_travel|0x1000000; + set #kewd_thanatosTower,0; + } + if(#kewd_toyFactory) { + set #kewd_travel,#kewd_travel|0x2000000; + set #kewd_toyFactory,0; + } + if(#kewd_turtleIsland) { + set #kewd_travel,#kewd_travel|0x4000000; + set #kewd_turtleIsland,0; + } + if(#kewd_umbala) { + set #kewd_travel,#kewd_travel|0x8000000; + set #kewd_umbala,0; + } + +// End transition code. + if ($@kewd_travel > 1) { + if (@map$ == "hu_fild05.gat" || kewd_travel&0x1) + set #kewd_travel,#kewd_travel|0x1; + if (@map$ == "ama_in02.gat" || kewd_travel&0x2) + set #kewd_travel,#kewd_travel|0x2; + if (@map$ == "moc_fild04.gat" || @map$ == "moc_fild15.gat" || kewd_travel&0x4) + set #kewd_travel,#kewd_travel|0x4; + if (@map$ == "ayo_fild02.gat" || kewd_travel&0x8) + set #kewd_travel,#kewd_travel|0x8; + if (@map$ == "izlu2dun.gat" || kewd_travel&0x10) + set #kewd_travel,#kewd_travel|0x10; + if (@map$ == "comodo.gat" || @map$ == "cmd_fild01.gat" || kewd_travel&0x20) + set #kewd_travel,#kewd_travel|0x20; + if (@map$ == "aldebaran.gat" || kewd_travel&0x40) + set #kewd_travel,#kewd_travel|0x40; + if (@map$ == "mjolnir_02.gat" || kewd_travel&0x80) + set #kewd_travel,#kewd_travel|0x80; + if (@map$ == "prt_fild05.gat" || kewd_travel&0x100) + set #kewd_travel,#kewd_travel|0x100; + if (@map$ == "einbech.gat" || kewd_travel&0x200) + set #kewd_travel,#kewd_travel|0x200; + if (@map$ == "gef_tower.gat" || kewd_travel&0x800) + set #kewd_travel,#kewd_travel|0x800; + if (@map$ == "glast_01.gat" || kewd_travel&0x1000) + set #kewd_travel,#kewd_travel|0x1000; + if (@map$ == "gonryun.gat" || kewd_travel&0x2000) + set #kewd_travel,#kewd_travel|0x2000; + if (@map$ == "prt_fild01.gat" || kewd_travel&0x4000) + set #kewd_travel,#kewd_travel|0x4000; + if (@map$ == "jupe_cave.gat" || kewd_travel&0x8000) + set #kewd_travel,#kewd_travel|0x8000; + if (@map$ == "lighthalzen.gat" || kewd_travel&0x10000) + set #kewd_travel,#kewd_travel|0x10000; + if (@map$ == "louyang.gat" || kewd_travel&0x20000) + set #kewd_travel,#kewd_travel|0x20000; + if (@map$ == "yuno_fild03.gat" || kewd_travel&0x40000) + set #kewd_travel,#kewd_travel|0x40000; + if (@map$ == "in_orcs01.gat" || kewd_travel&0x80000) + set #kewd_travel,#kewd_travel|0x80000; + if (@map$ == "pay_arche.gat" || kewd_travel&0x100000) + set #kewd_travel,#kewd_travel|0x100000; + if (@map$ == "moc_ruins.gat" || kewd_travel&0x200000) + set #kewd_travel,#kewd_travel|0x200000; + if (@map$ == "moc_fild19.gat" || kewd_travel&0x400000) + set #kewd_travel,#kewd_travel|0x400000; + if (@map$ == "alb2trea.gat" || kewd_travel&0x800000) + set #kewd_travel,#kewd_travel|0x800000; + if (@map$ == "tha_t01.gat" || kewd_travel&0x1000000) + set #kewd_travel,#kewd_travel|0x1000000; + if (@map$ == "xmas.gat" || kewd_travel&0x2000000) + set #kewd_travel,#kewd_travel|0x2000000; + if (@map$ == "tur_dun01.gat" || kewd_travel&0x4000000) + set #kewd_travel,#kewd_travel|0x4000000; + if (@map$ == "umbala.gat" || kewd_travel&0x8000000) + set #kewd_travel,#kewd_travel|0x8000000; + } else { + if (@map$ == "hu_fild05.gat") + set kewd_travel,kewd_travel|0x1; + if (@map$ == "ama_in02.gat") + set kewd_travel,kewd_travel|0x2; + if (@map$ == "moc_fild04.gat" || @map$ == "moc_fild15.gat") + set kewd_travel,kewd_travel|0x4; + if (@map$ == "ayo_fild02.gat") + set kewd_travel,kewd_travel|0x8; + if (@map$ == "izlu2dun.gat") + set kewd_travel,kewd_travel|0x10; + if (@map$ == "comodo.gat" || @map$ == "cmd_fild01.gat") + set kewd_travel,kewd_travel|0x20; + if (@map$ == "aldebaran.gat") + set kewd_travel,kewd_travel|0x40; + if (@map$ == "mjolnir_02.gat") + set kewd_travel,kewd_travel|0x80; + if (@map$ == "prt_fild05.gat") + set kewd_travel,kewd_travel|0x100; + if (@map$ == "einbech.gat") + set kewd_travel,kewd_travel|0x200; + if (@map$ == "gef_tower.gat") + set kewd_travel,kewd_travel|0x800; + if (@map$ == "glast_01.gat") + set kewd_travel,kewd_travel|0x1000; + if (@map$ == "gonryun.gat") + set kewd_travel,kewd_travel|0x2000; + if (@map$ == "prt_fild01.gat") + set kewd_travel,kewd_travel|0x4000; + if (@map$ == "jupe_cave.gat") + set kewd_travel,kewd_travel|0x8000; + if (@map$ == "lighthalzen.gat") + set kewd_travel,kewd_travel|0x10000; + if (@map$ == "louyang.gat") + set kewd_travel,kewd_travel|0x20000; + if (@map$ == "yuno_fild03.gat") + set kewd_travel,kewd_travel|0x40000; + if (@map$ == "in_orcs01.gat") + set kewd_travel,kewd_travel|0x80000; + if (@map$ == "pay_arche.gat") + set kewd_travel,kewd_travel|0x100000; + if (@map$ == "moc_ruins.gat") + set kewd_travel,kewd_travel|0x200000; + if (@map$ == "moc_fild19.gat") + set kewd_travel,kewd_travel|0x400000; + if (@map$ == "alb2trea.gat") + set kewd_travel,kewd_travel|0x800000; + if (@map$ == "tha_t01.gat") + set kewd_travel,kewd_travel|0x1000000; + if (@map$ == "xmas.gat") + set kewd_travel,kewd_travel|0x2000000; + if (@map$ == "tur_dun01.gat") + set kewd_travel,kewd_travel|0x4000000; + if (@map$ == "umbala.gat") + set kewd_travel,kewd_travel|0x8000000; + } + return; +} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_pvp.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_pvp.txt index 73f278b5d..b12d0fcb1 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_pvp.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_pvp.txt @@ -1,156 +1,156 @@ -//===== eAthena Script =======================================
-//= Kafra Express - Pvp Warping Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 1.7
-//===== Compatible With: =====================================
-//= eAthena SVN R3424+
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= Offers warping to the PvP arenas.
-//===== Additional Comments: =================================
-//= See config.txt for configuration.
-//============================================================
-
-- script keInit_warpPvp -1,{
-OnInit: //Load Config
- donpcevent "keConfig::OnLoadWarpPvp";
- end;
-}
-
-function script F_keWarpPvp {
-
- function SF_pvpMenu;
-
- set @cost,callfunc("F_keCost",1,100);
- if ($@kewp_advanced == 0) {
- SF_pvpMenu 1,$@kewp_cost,100,0,0;
- return;
- }
-
- do {
- if ($@kewp_showOnline) {
- set @kmenu, select(
- "- Cancel",
- "- All Levels Rooms ("+($@kewp_cost*@cost)+"z/"+(getmapusers("pvp_n_8-1.gat")+getmapusers("pvp_n_8-2.gat")
- +getmapusers("pvp_n_8-3.gat")+getmapusers("pvp_n_8-4.gat")+getmapusers("pvp_n_8-5.gat"))+" "+$@ked_users$+")",
- "- Levels "+($@kewp_baseLv1-$@kewp_range)+"-"+($@kewp_baseLv1+$@kewp_range)+" Rooms ("+($@kewp_cost1*@cost)+"z/"
- +(getmapusers("pvp_n_1-1.gat")+getmapusers("pvp_n_1-2.gat")+getmapusers("pvp_n_1-3.gat")
- +getmapusers("pvp_n_1-4.gat")+getmapusers("pvp_n_1-5.gat"))+" "+$@ked_users$+")",
- "- Levels "+($@kewp_baseLv2-$@kewp_range)+"-"+($@kewp_baseLv2+$@kewp_range)+" Rooms ("+($@kewp_cost2*@cost)+"z/"
- +(getmapusers("pvp_n_2-1.gat")+getmapusers("pvp_n_2-2.gat")+getmapusers("pvp_n_2-3.gat")
- +getmapusers("pvp_n_2-4.gat")+getmapusers("pvp_n_2-5.gat"))+" "+$@ked_users$+")",
- "- Levels "+($@kewp_baseLv3-$@kewp_range)+"-"+($@kewp_baseLv3+$@kewp_range)+" Rooms ("+($@kewp_cost3*@cost)+"z/"
- +(getmapusers("pvp_n_3-1.gat")+getmapusers("pvp_n_3-2.gat")+getmapusers("pvp_n_3-3.gat")
- +getmapusers("pvp_n_3-4.gat")+getmapusers("pvp_n_3-5.gat"))+" "+$@ked_users$+")",
- "- Levels "+($@kewp_baseLv4-$@kewp_range)+"-"+($@kewp_baseLv4+$@kewp_range)+" Rooms ("+($@kewp_cost4*@cost)+"z/"
- +(getmapusers("pvp_n_4-1.gat")+getmapusers("pvp_n_4-2.gat")+getmapusers("pvp_n_4-3.gat")
- +getmapusers("pvp_n_4-4.gat")+getmapusers("pvp_n_4-5.gat"))+" "+$@ked_users$+")",
- "- Levels "+($@kewp_baseLv5-$@kewp_range)+"-"+($@kewp_baseLv5+$@kewp_range)+" Rooms ("+($@kewp_cost5*@cost)+"z/"
- +(getmapusers("pvp_n_5-1.gat")+getmapusers("pvp_n_5-2.gat")+getmapusers("pvp_n_5-3.gat")
- +getmapusers("pvp_n_5-4.gat")+getmapusers("pvp_n_5-5.gat"))+" "+$@ked_users$+")",
- "- Levels "+($@kewp_baseLv6-$@kewp_range)+"-"+($@kewp_baseLv6+$@kewp_range)+" Rooms ("+($@kewp_cost6*@cost)+"z/"
- +(getmapusers("pvp_n_6-1.gat")+getmapusers("pvp_n_6-2.gat")+getmapusers("pvp_n_6-3.gat")
- +getmapusers("pvp_n_6-4.gat")+getmapusers("pvp_n_6-5.gat"))+" "+$@ked_users$+")",
- "- Levels "+($@kewp_baseLv7-$@kewp_range)+"-"+($@kewp_baseLv7+$@kewp_range)+" Rooms ("+($@kewp_cost7*@cost)+"z/"
- +(getmapusers("pvp_n_7-1.gat")+getmapusers("pvp_n_7-2.gat")+getmapusers("pvp_n_7-3.gat")
- +getmapusers("pvp_n_7-4.gat")+getmapusers("pvp_n_7-5.gat"))+" "+$@ked_users$+")"
- );
- } else {
- set @kmenu, select(
- "- Cancel",
- "- No Level Restriction Rooms ("+($@kewp_cost*@cost)+"z)",
- "- Levels "+($@kewp_baseLv1-$@kewp_range)+"-"+($@kewp_baseLv1+$@kewp_range)+" Rooms ("+($@kewp_cost1*@cost)+"z)",
- "- Levels "+($@kewp_baseLv2-$@kewp_range)+"-"+($@kewp_baseLv2+$@kewp_range)+" Rooms ("+($@kewp_cost2*@cost)+"z)",
- "- Levels "+($@kewp_baseLv3-$@kewp_range)+"-"+($@kewp_baseLv3+$@kewp_range)+" Rooms ("+($@kewp_cost3*@cost)+"z)",
- "- Levels "+($@kewp_baseLv4-$@kewp_range)+"-"+($@kewp_baseLv4+$@kewp_range)+" Rooms ("+($@kewp_cost4*@cost)+"z)",
- "- Levels "+($@kewp_baseLv5-$@kewp_range)+"-"+($@kewp_baseLv5+$@kewp_range)+" Rooms ("+($@kewp_cost5*@cost)+"z)",
- "- Levels "+($@kewp_baseLv6-$@kewp_range)+"-"+($@kewp_baseLv6+$@kewp_range)+" Rooms ("+($@kewp_cost6*@cost)+"z)",
- "- Levels "+($@kewp_baseLv7-$@kewp_range)+"-"+($@kewp_baseLv7+$@kewp_range)+" Rooms ("+($@kewp_cost7*@cost)+"z)"
- );
- }
- switch(@kmenu) {
- case 2: //No restrictions
- SF_pvpMenu 8,$@kewp_cost,100,0,0;
- break;
- case 3:
- SF_pvpMenu 1,$@kewp_cost1,100,$@kewp_baseLv1-$@kewp_range,$@kewp_baseLv1+$@kewp_range;
- break;
- case 4:
- SF_pvpMenu 2,$@kewp_cost2,100,$@kewp_baseLv2-$@kewp_range,$@kewp_baseLv2+$@kewp_range;
- break;
- case 5:
- SF_pvpMenu 3,$@kewp_cost3,100,$@kewp_baseLv3-$@kewp_range,$@kewp_baseLv3+$@kewp_range;
- break;
- case 6:
- SF_pvpMenu 4,$@kewp_cost4,100,$@kewp_baseLv4-$@kewp_range,$@kewp_baseLv4+$@kewp_range;
- break;
- case 7:
- SF_pvpMenu 5,$@kewp_cost5,100,$@kewp_baseLv5-$@kewp_range,$@kewp_baseLv5+$@kewp_range;
- break;
- case 8:
- SF_pvpMenu 6,$@kewp_cost6,100,$@kewp_baseLv6-$@kewp_range,$@kewp_baseLv6+$@kewp_range;
- break;
- case 9:
- SF_pvpMenu 7,$@kewp_cost7,100,$@kewp_baseLv7-$@kewp_range,$@kewp_baseLv7+$@kewp_range;
- break;
- }
- } while (@kmenu > 1);
- return;
-
-//SubFunction: SF_pvpMenu (int map-group, int cost, int min level, int max level)
-//Displays the list of the five available Pvp rooms to warp to.
-//map-group is the first index of the pvp map names (in pvp_n_2-3.gat it would be 2)
-function SF_pvpMenu {
- if (getarg(4)) {
- if (BaseLevel < getarg(3)) {
- callfunc "F_keIntro", e_sry, "Sorry, you need at least level "+getarg(2)+" to enter these arenas.";
- return;
- }
- if (BaseLevel > getarg(4)) {
- callfunc "F_keIntro", e_bzz, "Sorry, people above level "+getarg(3)+" are not allowed within these arenas.";
- return;
- }
- set @msg$,"levels "+getarg(3)+"-"+getarg(3);
- } else
- set @msg$,"all levels";
- if ($@kewp_showOnline) {
- set @submenu, select(
- "- Cancel Warp (Rooms for "+@msg$+"/"+(getarg(1)*@cost)+"z)",
- "- Room Sandwich ("+getmapusers("pvp_n_"+getarg(0)+"-1.gat")+" "+$@ked_users$+")",
- "- Room Rock On ("+getmapusers("pvp_n_"+getarg(0)+"-2.gat")+" "+$@ked_users$+")",
- "- Four Room ("+getmapusers("pvp_n_"+getarg(0)+"-3.gat")+" "+$@ked_users$+")",
- "- Room Undercross ("+getmapusers("pvp_n_"+getarg(0)+"-4.gat")+" "+$@ked_users$+")",
- "- Room Compass ("+getmapusers("pvp_n_"+getarg(0)+"-5.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel Warp (Rooms for "+@msg$+"/"+(getarg(1)*@cost)+"z)",
- "- Room Sandwich",
- "- Room Rock On",
- "- Four Room",
- "- Room Undercross",
- "- Room Compass"
- );
- }
- switch (@submenu) {
- case 2:
- callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-1.gat",-1,-1;
- break;
- case 3:
- callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-2.gat",-1,-1;
- break;
- case 4:
- callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-3.gat",-1,-1;
- break;
- case 5:
- callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-4.gat",-1,-1;
- break;
- case 6:
- callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-5.gat",-1,-1;
- break;
- }
-}
-
-}
+//===== eAthena Script ======================================= +//= Kafra Express - Pvp Warping Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 1.7 +//===== Compatible With: ===================================== +//= eAthena SVN R3424+ +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= Offers warping to the PvP arenas. +//===== Additional Comments: ================================= +//= See config.txt for configuration. +//============================================================ + +- script keInit_warpPvp -1,{ +OnInit: //Load Config + donpcevent "keConfig::OnLoadWarpPvp"; + end; +} + +function script F_keWarpPvp { + + function SF_pvpMenu; + + set @cost,callfunc("F_keCost",1,100); + if ($@kewp_advanced == 0) { + SF_pvpMenu 1,$@kewp_cost,100,0,0; + return; + } + + do { + if ($@kewp_showOnline) { + set @kmenu, select( + "- Cancel", + "- All Levels Rooms ("+($@kewp_cost*@cost)+"z/"+(getmapusers("pvp_n_8-1.gat")+getmapusers("pvp_n_8-2.gat") + +getmapusers("pvp_n_8-3.gat")+getmapusers("pvp_n_8-4.gat")+getmapusers("pvp_n_8-5.gat"))+" "+$@ked_users$+")", + "- Levels "+($@kewp_baseLv1-$@kewp_range)+"-"+($@kewp_baseLv1+$@kewp_range)+" Rooms ("+($@kewp_cost1*@cost)+"z/" + +(getmapusers("pvp_n_1-1.gat")+getmapusers("pvp_n_1-2.gat")+getmapusers("pvp_n_1-3.gat") + +getmapusers("pvp_n_1-4.gat")+getmapusers("pvp_n_1-5.gat"))+" "+$@ked_users$+")", + "- Levels "+($@kewp_baseLv2-$@kewp_range)+"-"+($@kewp_baseLv2+$@kewp_range)+" Rooms ("+($@kewp_cost2*@cost)+"z/" + +(getmapusers("pvp_n_2-1.gat")+getmapusers("pvp_n_2-2.gat")+getmapusers("pvp_n_2-3.gat") + +getmapusers("pvp_n_2-4.gat")+getmapusers("pvp_n_2-5.gat"))+" "+$@ked_users$+")", + "- Levels "+($@kewp_baseLv3-$@kewp_range)+"-"+($@kewp_baseLv3+$@kewp_range)+" Rooms ("+($@kewp_cost3*@cost)+"z/" + +(getmapusers("pvp_n_3-1.gat")+getmapusers("pvp_n_3-2.gat")+getmapusers("pvp_n_3-3.gat") + +getmapusers("pvp_n_3-4.gat")+getmapusers("pvp_n_3-5.gat"))+" "+$@ked_users$+")", + "- Levels "+($@kewp_baseLv4-$@kewp_range)+"-"+($@kewp_baseLv4+$@kewp_range)+" Rooms ("+($@kewp_cost4*@cost)+"z/" + +(getmapusers("pvp_n_4-1.gat")+getmapusers("pvp_n_4-2.gat")+getmapusers("pvp_n_4-3.gat") + +getmapusers("pvp_n_4-4.gat")+getmapusers("pvp_n_4-5.gat"))+" "+$@ked_users$+")", + "- Levels "+($@kewp_baseLv5-$@kewp_range)+"-"+($@kewp_baseLv5+$@kewp_range)+" Rooms ("+($@kewp_cost5*@cost)+"z/" + +(getmapusers("pvp_n_5-1.gat")+getmapusers("pvp_n_5-2.gat")+getmapusers("pvp_n_5-3.gat") + +getmapusers("pvp_n_5-4.gat")+getmapusers("pvp_n_5-5.gat"))+" "+$@ked_users$+")", + "- Levels "+($@kewp_baseLv6-$@kewp_range)+"-"+($@kewp_baseLv6+$@kewp_range)+" Rooms ("+($@kewp_cost6*@cost)+"z/" + +(getmapusers("pvp_n_6-1.gat")+getmapusers("pvp_n_6-2.gat")+getmapusers("pvp_n_6-3.gat") + +getmapusers("pvp_n_6-4.gat")+getmapusers("pvp_n_6-5.gat"))+" "+$@ked_users$+")", + "- Levels "+($@kewp_baseLv7-$@kewp_range)+"-"+($@kewp_baseLv7+$@kewp_range)+" Rooms ("+($@kewp_cost7*@cost)+"z/" + +(getmapusers("pvp_n_7-1.gat")+getmapusers("pvp_n_7-2.gat")+getmapusers("pvp_n_7-3.gat") + +getmapusers("pvp_n_7-4.gat")+getmapusers("pvp_n_7-5.gat"))+" "+$@ked_users$+")" + ); + } else { + set @kmenu, select( + "- Cancel", + "- No Level Restriction Rooms ("+($@kewp_cost*@cost)+"z)", + "- Levels "+($@kewp_baseLv1-$@kewp_range)+"-"+($@kewp_baseLv1+$@kewp_range)+" Rooms ("+($@kewp_cost1*@cost)+"z)", + "- Levels "+($@kewp_baseLv2-$@kewp_range)+"-"+($@kewp_baseLv2+$@kewp_range)+" Rooms ("+($@kewp_cost2*@cost)+"z)", + "- Levels "+($@kewp_baseLv3-$@kewp_range)+"-"+($@kewp_baseLv3+$@kewp_range)+" Rooms ("+($@kewp_cost3*@cost)+"z)", + "- Levels "+($@kewp_baseLv4-$@kewp_range)+"-"+($@kewp_baseLv4+$@kewp_range)+" Rooms ("+($@kewp_cost4*@cost)+"z)", + "- Levels "+($@kewp_baseLv5-$@kewp_range)+"-"+($@kewp_baseLv5+$@kewp_range)+" Rooms ("+($@kewp_cost5*@cost)+"z)", + "- Levels "+($@kewp_baseLv6-$@kewp_range)+"-"+($@kewp_baseLv6+$@kewp_range)+" Rooms ("+($@kewp_cost6*@cost)+"z)", + "- Levels "+($@kewp_baseLv7-$@kewp_range)+"-"+($@kewp_baseLv7+$@kewp_range)+" Rooms ("+($@kewp_cost7*@cost)+"z)" + ); + } + switch(@kmenu) { + case 2: //No restrictions + SF_pvpMenu 8,$@kewp_cost,100,0,0; + break; + case 3: + SF_pvpMenu 1,$@kewp_cost1,100,$@kewp_baseLv1-$@kewp_range,$@kewp_baseLv1+$@kewp_range; + break; + case 4: + SF_pvpMenu 2,$@kewp_cost2,100,$@kewp_baseLv2-$@kewp_range,$@kewp_baseLv2+$@kewp_range; + break; + case 5: + SF_pvpMenu 3,$@kewp_cost3,100,$@kewp_baseLv3-$@kewp_range,$@kewp_baseLv3+$@kewp_range; + break; + case 6: + SF_pvpMenu 4,$@kewp_cost4,100,$@kewp_baseLv4-$@kewp_range,$@kewp_baseLv4+$@kewp_range; + break; + case 7: + SF_pvpMenu 5,$@kewp_cost5,100,$@kewp_baseLv5-$@kewp_range,$@kewp_baseLv5+$@kewp_range; + break; + case 8: + SF_pvpMenu 6,$@kewp_cost6,100,$@kewp_baseLv6-$@kewp_range,$@kewp_baseLv6+$@kewp_range; + break; + case 9: + SF_pvpMenu 7,$@kewp_cost7,100,$@kewp_baseLv7-$@kewp_range,$@kewp_baseLv7+$@kewp_range; + break; + } + } while (@kmenu > 1); + return; + +//SubFunction: SF_pvpMenu (int map-group, int cost, int min level, int max level) +//Displays the list of the five available Pvp rooms to warp to. +//map-group is the first index of the pvp map names (in pvp_n_2-3.gat it would be 2) +function SF_pvpMenu { + if (getarg(4)) { + if (BaseLevel < getarg(3)) { + callfunc "F_keIntro", e_sry, "Sorry, you need at least level "+getarg(2)+" to enter these arenas."; + return; + } + if (BaseLevel > getarg(4)) { + callfunc "F_keIntro", e_bzz, "Sorry, people above level "+getarg(3)+" are not allowed within these arenas."; + return; + } + set @msg$,"levels "+getarg(3)+"-"+getarg(3); + } else + set @msg$,"all levels"; + if ($@kewp_showOnline) { + set @submenu, select( + "- Cancel Warp (Rooms for "+@msg$+"/"+(getarg(1)*@cost)+"z)", + "- Room Sandwich ("+getmapusers("pvp_n_"+getarg(0)+"-1.gat")+" "+$@ked_users$+")", + "- Room Rock On ("+getmapusers("pvp_n_"+getarg(0)+"-2.gat")+" "+$@ked_users$+")", + "- Four Room ("+getmapusers("pvp_n_"+getarg(0)+"-3.gat")+" "+$@ked_users$+")", + "- Room Undercross ("+getmapusers("pvp_n_"+getarg(0)+"-4.gat")+" "+$@ked_users$+")", + "- Room Compass ("+getmapusers("pvp_n_"+getarg(0)+"-5.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel Warp (Rooms for "+@msg$+"/"+(getarg(1)*@cost)+"z)", + "- Room Sandwich", + "- Room Rock On", + "- Four Room", + "- Room Undercross", + "- Room Compass" + ); + } + switch (@submenu) { + case 2: + callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-1.gat",-1,-1; + break; + case 3: + callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-2.gat",-1,-1; + break; + case 4: + callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-3.gat",-1,-1; + break; + case 5: + callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-4.gat",-1,-1; + break; + case 6: + callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-5.gat",-1,-1; + break; + } +} + +} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_town.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_town.txt index 2cef196d8..d1596401a 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_town.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_town.txt @@ -1,500 +1,500 @@ -//===== eAthena Script =======================================
-//= Kafra Express - Warping Town Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 2.1
-//===== Compatible With: =====================================
-//= eAthena SVN R3424+, RO Episode 8+ (Hugel)
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= Offers warp services to towns.
-//===== Additional Comments: =================================
-//= See config.txt for configuration.
-//= Flag values used for towns:
-//= 0x00000001 Alberta
-//= 0x00000002 AlDeBaran
-//= 0x00000004 Amatsu
-//= 0x00000008 Ayothaya
-//= 0x00000010 Comodo
-//= 0x00000020 Einbech
-//= 0x00000040 Einbroch
-//= 0x00000080 Geffen
-//= 0x00000100 Gon Ryun
-//= 0x00000200 Hugel
-//= 0x00000400 Izlude
-//= 0x00000800 Jawaii
-//= 0x00001000 LightHalzen
-//= 0x00002000 Lou Yang
-//= 0x00004000 Lutie
-//= 0x00008000 Morocc
-//= 0x00010000 Niflheim
-//= 0x00020000 Payon
-//= 0x00040000 Prontera
-//= 0x00080000 Umbala
-//= 0x00100000 Yuno
-//============================================================
-
-- script keInit_warpTown -1,{
-OnInit: //Load Config
- donpcevent "keConfig::OnLoadWarpTown";
- end;
-}
-
-function script F_keWarpTown {
-
- function SF_check;
- function SF_warp;
-
- set @cost,callfunc("F_keCost",$@kewt_cost,$@kewt_discount);
- set @niflcost,callfunc("F_keCost",$@kewt_niflCost,$@kewd_discount);
- if (@cost > Zeny && $@kewt_free)
- set @cost, Zeny;
- do {
- if ($@kewt_showOnline) {
- set @kmenu, select(
- "- Cancel",
- "- Alberta ("+@cost+"z/"+(getmapusers("alberta.gat")+getmapusers("alberta_in.gat"))+" "+$@ked_users$+")",
- "- Al De Baran ("+@cost+"z/"+(getmapusers("aldebaran.gat")+getmapusers("aldeba_in.gat"))+" "+$@ked_users$+")",
- "- Amatsu ("+@cost+"z/"+(getmapusers("amatsu.gat")+getmapusers("ama_in01.gat")+getmapusers("ama_in02.gat"))
- +" "+$@ked_users$+")",
- "- Ayothaya ("+@cost+"z/"+(getmapusers("ayothaya.gat")+getmapusers("ayo_in01.gat")+getmapusers("ayo_in02.gat"))
- +" "+$@ked_users$+")",
- "- Comodo ("+@cost+"z/"+(getmapusers("comodo.gat")+getmapusers("cmd_in01.gat")+getmapusers("cmd_in02.gat"))
- +" "+$@ked_users$+")",
- "- Einbech ("+@cost+"z/"+(getmapusers("einbech.gat"))+" "+$@ked_users$+")",
- "- Einbroch ("+@cost+"z/"+(getmapusers("einbroch.gat")+getmapusers("ein_in01.gat"))+" "+$@ked_users$+")",
- "- Geffen ("+@cost+"z/"+(getmapusers("geffen.gat")+getmapusers("geffen_in.gat")+getmapusers("gef_tower.gat"))
- +" "+$@ked_users$+")",
- "- Gon Ryun ("+@cost+"z/"+(getmapusers("gonryun.gat")+getmapusers("gon_in.gat"))+" "+$@ked_users$+")",
- "- Hugel ("+@cost+"z/"+(getmapusers("hugel.gat")+getmapusers("hu_in01.gat"))+" "+$@ked_users$+")",
- "- Izlude ("+@cost+"z/"+(getmapusers("izlude.gat")+getmapusers("izlude_in.gat"))+" "+$@ked_users$+")",
- "- Jawaii ("+@cost+"z/"+(getmapusers("jawaii.gat")+getmapusers("jawaii_in.gat"))+" "+$@ked_users$+")",
- "- LightHalzen ("+@cost+"z/"+(getmapusers("lighthalzen.gat")+getmapusers("lhz_in01.gat")
- +getmapusers("lhz_in02.gat")+getmapusers("lhz_in03.gat"))+" "+$@ked_users$+")",
- "- Lou Yang ("+@cost+"z/"+(getmapusers("louyang.gat")+getmapusers("lou_in01.gat")+getmapusers("lou_in02.gat"))
- +" "+$@ked_users$+")",
- "- Lutie ("+@cost+"z/"+(getmapusers("xmas.gat")+getmapusers("xmas_in.gat"))+" "+$@ked_users$+")",
- "- Morocc ("+@cost+"z/"+(getmapusers("morocc.gat")+getmapusers("morocc_in.gat")+getmapusers("moc_castle.gat"))
- +" "+$@ked_users$+")",
- "- Niflheim ("+@niflcost+"z/"+(getmapusers("niflheim.gat")+getmapusers("nif_in.gat"))+" "+$@ked_users$+")",
- "- Payon ("+@cost+"z/"+(getmapusers("payon.gat")+getmapusers("payon_in01.gat")+getmapusers("payon_in02.gat"))
- +" "+$@ked_users$+")",
- "- Prontera ("+@cost+"z/"+(getmapusers("prontera.gat")+getmapusers("prt_castle.gat")
- +getmapusers("prt_church.gat")+getmapusers("prt_in.gat"))+" "+$@ked_users$+")",
- "- Umbala ("+@cost+"z/"+(getmapusers("umbala.gat")+getmapusers("um_in.gat"))+" "+$@ked_users$+")",
- "- Yuno ("+@cost+"z/"+(getmapusers("yuno.gat")+getmapusers("yuno_in01.gat")+getmapusers("yuno_in02.gat")
- +getmapusers("yuno_in03.gat")+getmapusers("yuno_in04.gat")+getmapusers("yuno_in05.gat"))+" "+$@ked_users$+")"
- );
- } else {
- set @kmenu, select(
- "- Cancel",
- "- Alberta ("+@cost+"z)",
- "- Al De Baran ("+@cost+"z)",
- "- Amatsu ("+@cost+"z)",
- "- Ayothaya ("+@cost+"z)",
- "- Comodo ("+@cost+"z)",
- "- Einbech ("+@cost+"z)",
- "- Einbroch ("+@cost+"z)",
- "- Geffen ("+@cost+"z)",
- "- Gon Ryun ("+@cost+"z)",
- "- Hugel ("+@cost+"z)",
- "- Izlude ("+@cost+"z)",
- "- Jawaii ("+@cost+"z)",
- "- LightHalzen ("+@cost+"z)",
- "- Lou Yang ("+@cost+"z)",
- "- Lutie ("+@cost+"z)",
- "- Morocc ("+@cost+"z)",
- "- Niflheim ("+@niflcost+"z)",
- "- Payon ("+@cost+"z)",
- "- Prontera ("+@cost+"z)",
- "- Umbala ("+@cost+"z)",
- "- Yuno ("+@cost+"z)"
- );
- }
- switch (@kmenu) {
- case 2: //Alberta
- if (SF_check(0x1))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"alberta.gat",117,56;
- break;
- case 3: //AlDeBaran
- if (SF_check(0x2))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"aldebaran.gat",139,124;
- break;
- case 4: //Amatsu
- if (SF_check(0x4))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"amatsu.gat",197,88;
- break;
- case 5: //Ayathoya
- if (SF_check(0x8))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"ayothaya.gat",202,174;
- break;
- case 6: //Comodo
- if (SF_check(0x10))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"comodo.gat",189,150;
- break;
- case 7: //Einbech
- if (SF_check(0x20))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbech.gat",137,220;
- break;
- case 8: //Einbroch
- if (SF_check(0x40))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbroch.gat",64,199;
- break;
- case 9: //Geffen
- if (SF_check(0x80))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"geffen.gat",120,66;
- break;
- case 10: //GonRyun
- if (SF_check(0x100))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"gonryun.gat",160,180;
- break;
- case 11: //Hugel
- if (SF_check(0x200))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"hugel.gat",96,105;
- break;
- case 12: //Izlude
- if (SF_check(0x400))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"izlude.gat",127,97;
- break;
- case 13: //Jawaii
- if (SF_check(0x800))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"jawaii.gat",214,223;
- break;
- case 14: //LightHalzen
- if (SF_check(0x1000))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"lighthalzen.gat",158,92;
- break;
- case 15: //LouYang
- if (SF_check(0x2000))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"louyang.gat",218,118;
- break;
- case 16: //Lutie
- if (SF_check(0x4000))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"xmas.gat",148,133;
- break;
- case 17: //Morocc
- if (SF_check(0x8000))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"morocc.gat",162,91;
- break;
- case 18: //Niflheim
- if (SF_check(0x10000)) {
- if (nif_q_done != 1) {
- mes "...?";
- callfunc "F_keIntro", e_no, "For some reason I can't warp you there!";
- } else
- callfunc "F_keWarp",$@kewt_niflCost,$@kewd_discount,e_yawn,"niflheim.gat",194,185;
- }
- break;
- case 19: //Payon
- if (SF_check(0x20000))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"payon.gat",159,181;
- break;
- case 20: //Prontera
- if (SF_check(0x40000))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"prontera.gat",156,175;
- break;
- case 21: //Umbala
- if (SF_check(0x80000))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"umbala.gat",88,153;
- break;
- case 22: //Yuno
- if (SF_check(0x100000))
- SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"yuno.gat",158,77;
- break;
- }
- } while (@kmenu > 1);
- return;
-
-//SubFunction SF_check(char-flag, account_flag)
-//Checks if the character can warp to that town taking into consideration
-//traveller's mode.
-function SF_check {
- if ($@kewt_travel && !((kewt_travel|#kewt_travel)&getarg(0))) {
- callfunc "F_keIntro", e_sry, "Sorry, but we can only warp you to towns you have saved in at least once.";
- return 0;
- }
- return 1;
-}
-
-//SubFunction SF_warp (int cost, int discount, int emotion, String map, int x, int y)
-//Modded from F_keWarp to allow free warping to towns when not enough zeny.
-function SF_warp {
- set @cost, getarg(0);
- if (@cost > Zeny && $@kewt_free)
- set @cost, Zeny;
- if (!(callfunc("F_keCharge",@cost,getarg(1),1))) {
- callfunc "F_keIntro", e_an, "You don't have enough Zeny...";
- return;
- }
- emotion getarg(2);
- warp getarg(3),getarg(4),getarg(5);
- end;
-}
-
-}
-
-//Invoked when we want to add a map to the list of travelled-to towns
-function script F_keAddTravelTown {
- set @map$, getarg(0);
-// Temporary code to update variables from old format to new.
- if(ketw_alberta) {
- set kewt_travel,kewt_travel|0x1;
- set ketw_alberta,0;
- }
- if(ketw_aldebaran) {
- set kewt_travel,kewt_travel|0x2;
- set ketw_aldebaran,0;
- }
- if(ketw_amatsu) {
- set kewt_travel,kewt_travel|0x4;
- set ketw_amatsu,0;
- }
- if(ketw_ayothaya) {
- set kewt_travel,kewt_travel|0x8;
- set ketw_ayothaya,0;
- }
- if(ketw_comodo) {
- set kewt_travel,kewt_travel|0x10;
- set ketw_comodo,0;
- }
- if(ketw_einbech) {
- set kewt_travel,kewt_travel|0x20;
- set ketw_einbech,0;
- }
- if(ketw_einbroch) {
- set kewt_travel,kewt_travel|0x40;
- set ketw_einbroch,0;
- }
- if(ketw_geffen) {
- set kewt_travel,kewt_travel|0x80;
- set ketw_geffen,0;
- }
- if(ketw_gonryun) {
- set kewt_travel,kewt_travel|0x100;
- set ketw_gonryun,0;
- }
- if(ketw_hugel) {
- set kewt_travel,kewt_travel|0x200;
- set ketw_hugel,0;
- }
- if(ketw_izlude) {
- set kewt_travel,kewt_travel|0x400;
- set ketw_izlude,0;
- }
- if(ketw_jawaii) {
- set kewt_travel,kewt_travel|0x800;
- set ketw_jawaii,0;
- }
- if(ketw_lighthalzen) {
- set kewt_travel,kewt_travel|0x1000;
- set ketw_lighthalzen,0;
- }
- if(ketw_louyang) {
- set kewt_travel,kewt_travel|0x2000;
- set ketw_louyang,0;
- }
- if(ketw_lutie) {
- set kewt_travel,kewt_travel|0x4000;
- set ketw_lutie,0;
- }
- if(ketw_morroc) {
- set kewt_travel,kewt_travel|0x8000;
- set ketw_morroc,0;
- }
- if(ketw_niflheim) {
- set kewt_travel,kewt_travel|0x10000;
- set ketw_niflheim,0;
- }
- if(ketw_payon) {
- set kewt_travel,kewt_travel|0x20000;
- set ketw_payon,0;
- }
- if(ketw_prontera) {
- set kewt_travel,kewt_travel|0x40000;
- set ketw_prontera,0;
- }
- if(ketw_umbala) {
- set kewt_travel,kewt_travel|0x80000;
- set ketw_umbala,0;
- }
- if(ketw_yuno) {
- set kewt_travel,kewt_travel|0x100000;
- set ketw_yuno,0;
- }
-
- if(#ketw_alberta) {
- set #kewt_travel,#kewt_travel|0x1;
- set #ketw_alberta,0;
- }
- if(#ketw_aldebaran) {
- set #kewt_travel,#kewt_travel|0x2;
- set #ketw_aldebaran,0;
- }
- if(#ketw_amatsu) {
- set #kewt_travel,#kewt_travel|0x4;
- set #ketw_amatsu,0;
- }
- if(#ketw_ayothaya) {
- set #kewt_travel,#kewt_travel|0x8;
- set #ketw_ayothaya,0;
- }
- if(#ketw_comodo) {
- set #kewt_travel,#kewt_travel|0x10;
- set #ketw_comodo,0;
- }
- if(#ketw_einbech) {
- set #kewt_travel,#kewt_travel|0x20;
- set #ketw_einbech,0;
- }
- if(#ketw_einbroch) {
- set #kewt_travel,#kewt_travel|0x40;
- set #ketw_einbroch,0;
- }
- if(#ketw_geffen) {
- set #kewt_travel,#kewt_travel|0x80;
- set #ketw_geffen,0;
- }
- if(#ketw_gonryun) {
- set #kewt_travel,#kewt_travel|0x100;
- set #ketw_gonryun,0;
- }
- if(#ketw_hugel) {
- set #kewt_travel,#kewt_travel|0x200;
- set #ketw_hugel,0;
- }
- if(#ketw_izlude) {
- set #kewt_travel,#kewt_travel|0x400;
- set #ketw_izlude,0;
- }
- if(#ketw_jawaii) {
- set #kewt_travel,#kewt_travel|0x800;
- set #ketw_jawaii,0;
- }
- if(#ketw_lighthalzen) {
- set #kewt_travel,#kewt_travel|0x1000;
- set #ketw_lighthalzen,0;
- }
- if(#ketw_louyang) {
- set #kewt_travel,#kewt_travel|0x2000;
- set #ketw_louyang,0;
- }
- if(#ketw_lutie) {
- set #kewt_travel,#kewt_travel|0x4000;
- set #ketw_lutie,0;
- }
- if(#ketw_morroc) {
- set #kewt_travel,#kewt_travel|0x8000;
- set #ketw_morroc,0;
- }
- if(#ketw_niflheim) {
- set #kewt_travel,#kewt_travel|0x10000;
- set #ketw_niflheim,0;
- }
- if(#ketw_payon) {
- set #kewt_travel,#kewt_travel|0x20000;
- set #ketw_payon,0;
- }
- if(#ketw_prontera) {
- set #kewt_travel,#kewt_travel|0x40000;
- set #ketw_prontera,0;
- }
- if(#ketw_umbala) {
- set #kewt_travel,#kewt_travel|0x80000;
- set #ketw_umbala,0;
- }
- if(#ketw_yuno) {
- set #kewt_travel,#kewt_travel|0x100000;
- set #ketw_yuno,0;
- }
-// End update code.
-
- if ($@kewt_travel > 1) {
- if (@map$ == "alberta.gat" || kewt_travel&0x1)
- set #kewt_travel,#kewt_travel|0x1;
- if (@map$ == "aldebaran.gat" || kewt_travel&0x2)
- set #kewt_travel,#kewt_travel|0x2;
- if (@map$ == "amatsu.gat" || kewt_travel&0x4)
- set #kewt_travel,#kewt_travel|0x4;
- if (@map$ == "ayothaya.gat" || kewt_travel&0x8)
- set #kewt_travel,#kewt_travel|0x8;
- if (@map$ == "comodo.gat" || kewt_travel&0x10)
- set #kewt_travel,#kewt_travel|0x10;
- if (@map$ == "einbech.gat" || kewt_travel&0x20)
- set #kewt_travel,#kewt_travel|0x20;
- if (@map$ == "einbroch.gat" || kewt_travel&0x40)
- set #kewt_travel,#kewt_travel|0x40;
- if (@map$ == "geffen.gat" || kewt_travel&0x80)
- set #kewt_travel,#kewt_travel|0x80;
- if (@map$ == "gonryun.gat" || kewt_travel&0x100)
- set #kewt_travel,#kewt_travel|0x100;
- if (@map$ == "hugel.gat" || kewt_travel&0x200)
- set #kewt_travel,#kewt_travel|0x200;
- if (@map$ == "izlude.gat" || kewt_travel&0x400)
- set #kewt_travel,#kewt_travel|0x400;
- if (@map$ == "jawaii.gat" || kewt_travel&0x800)
- set #kewt_travel,#kewt_travel|0x800;
- if (@map$ == "lighthalzen.gat" || kewt_travel&1000)
- set #kewt_travel,#kewt_travel|0x1000;
- if (@map$ == "louyang.gat" || kewt_travel&0x2000)
- set #kewt_travel,#kewt_travel|0x2000;
- if (@map$ == "xmas.gat" || kewt_travel&0x4000)
- set #kewt_travel,#kewt_travel|0x4000;
- if (@map$ == "morocc.gat" || kewt_travel&0x8000)
- set #kewt_travel,#kewt_travel|0x8000;
- if (@map$ == "niflheim.gat" || kewt_travel&0x10000)
- set #kewt_travel,#kewt_travel|0x10000;
- if (@map$ == "payon.gat" || kewt_travel&0x20000)
- set #kewt_travel,#kewt_travel|0x20000;
- if (@map$ == "prontera.gat" || kewt_travel&0x40000)
- set #kewt_travel,#kewt_travel|0x40000;
- if (@map$ == "umbala.gat" || kewt_travel&0x80000)
- set #kewt_travel,#kewt_travel|0x80000;
- if (@map$ == "yuno.gat" || kewt_travel&0x100000)
- set #kewt_travel,#kewt_travel|0x100000;
- } else {
- if (@map$ == "alberta.gat")
- set kewt_travel,kewt_travel|0x1;
- if (@map$ == "aldebaran.gat")
- set kewt_travel,kewt_travel|0x2;
- if (@map$ == "amatsu.gat")
- set kewt_travel,kewt_travel|0x4;
- if (@map$ == "ayothaya.gat")
- set kewt_travel,kewt_travel|0x8;
- if (@map$ == "comodo.gat")
- set kewt_travel,kewt_travel|0x10;
- if (@map$ == "einbech.gat")
- set kewt_travel,kewt_travel|0x20;
- if (@map$ == "einbroch.gat")
- set kewt_travel,kewt_travel|0x40;
- if (@map$ == "geffen.gat")
- set kewt_travel,kewt_travel|0x80;
- if (@map$ == "gonryun.gat")
- set kewt_travel,kewt_travel|0x100;
- if (@map$ == "hugel.gat")
- set kewt_travel,kewt_travel|0x200;
- if (@map$ == "izlude.gat")
- set kewt_travel,kewt_travel|0x400;
- if (@map$ == "jawaii.gat")
- set kewt_travel,kewt_travel|0x800;
- if (@map$ == "lighthalzen.gat")
- set kewt_travel,kewt_travel|0x1000;
- if (@map$ == "louyang.gat")
- set kewt_travel,kewt_travel|0x2000;
- if (@map$ == "xmas.gat")
- set kewt_travel,kewt_travel|0x4000;
- if (@map$ == "morocc.gat")
- set kewt_travel,kewt_travel|0x8000;
- if (@map$ == "niflheim.gat")
- set kewt_travel,kewt_travel|0x10000;
- if (@map$ == "payon.gat")
- set kewt_travel,kewt_travel|0x20000;
- if (@map$ == "prontera.gat")
- set kewt_travel,kewt_travel|0x40000;
- if (@map$ == "umbala.gat")
- set kewt_travel,kewt_travel|0x80000;
- if (@map$ == "yuno.gat")
- set kewt_travel,kewt_travel|0x100000;
- }
- return;
-}
+//===== eAthena Script ======================================= +//= Kafra Express - Warping Town Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 2.1 +//===== Compatible With: ===================================== +//= eAthena SVN R3424+, RO Episode 8+ (Hugel) +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= Offers warp services to towns. +//===== Additional Comments: ================================= +//= See config.txt for configuration. +//= Flag values used for towns: +//= 0x00000001 Alberta +//= 0x00000002 AlDeBaran +//= 0x00000004 Amatsu +//= 0x00000008 Ayothaya +//= 0x00000010 Comodo +//= 0x00000020 Einbech +//= 0x00000040 Einbroch +//= 0x00000080 Geffen +//= 0x00000100 Gon Ryun +//= 0x00000200 Hugel +//= 0x00000400 Izlude +//= 0x00000800 Jawaii +//= 0x00001000 LightHalzen +//= 0x00002000 Lou Yang +//= 0x00004000 Lutie +//= 0x00008000 Morocc +//= 0x00010000 Niflheim +//= 0x00020000 Payon +//= 0x00040000 Prontera +//= 0x00080000 Umbala +//= 0x00100000 Yuno +//============================================================ + +- script keInit_warpTown -1,{ +OnInit: //Load Config + donpcevent "keConfig::OnLoadWarpTown"; + end; +} + +function script F_keWarpTown { + + function SF_check; + function SF_warp; + + set @cost,callfunc("F_keCost",$@kewt_cost,$@kewt_discount); + set @niflcost,callfunc("F_keCost",$@kewt_niflCost,$@kewd_discount); + if (@cost > Zeny && $@kewt_free) + set @cost, Zeny; + do { + if ($@kewt_showOnline) { + set @kmenu, select( + "- Cancel", + "- Alberta ("+@cost+"z/"+(getmapusers("alberta.gat")+getmapusers("alberta_in.gat"))+" "+$@ked_users$+")", + "- Al De Baran ("+@cost+"z/"+(getmapusers("aldebaran.gat")+getmapusers("aldeba_in.gat"))+" "+$@ked_users$+")", + "- Amatsu ("+@cost+"z/"+(getmapusers("amatsu.gat")+getmapusers("ama_in01.gat")+getmapusers("ama_in02.gat")) + +" "+$@ked_users$+")", + "- Ayothaya ("+@cost+"z/"+(getmapusers("ayothaya.gat")+getmapusers("ayo_in01.gat")+getmapusers("ayo_in02.gat")) + +" "+$@ked_users$+")", + "- Comodo ("+@cost+"z/"+(getmapusers("comodo.gat")+getmapusers("cmd_in01.gat")+getmapusers("cmd_in02.gat")) + +" "+$@ked_users$+")", + "- Einbech ("+@cost+"z/"+(getmapusers("einbech.gat"))+" "+$@ked_users$+")", + "- Einbroch ("+@cost+"z/"+(getmapusers("einbroch.gat")+getmapusers("ein_in01.gat"))+" "+$@ked_users$+")", + "- Geffen ("+@cost+"z/"+(getmapusers("geffen.gat")+getmapusers("geffen_in.gat")+getmapusers("gef_tower.gat")) + +" "+$@ked_users$+")", + "- Gon Ryun ("+@cost+"z/"+(getmapusers("gonryun.gat")+getmapusers("gon_in.gat"))+" "+$@ked_users$+")", + "- Hugel ("+@cost+"z/"+(getmapusers("hugel.gat")+getmapusers("hu_in01.gat"))+" "+$@ked_users$+")", + "- Izlude ("+@cost+"z/"+(getmapusers("izlude.gat")+getmapusers("izlude_in.gat"))+" "+$@ked_users$+")", + "- Jawaii ("+@cost+"z/"+(getmapusers("jawaii.gat")+getmapusers("jawaii_in.gat"))+" "+$@ked_users$+")", + "- LightHalzen ("+@cost+"z/"+(getmapusers("lighthalzen.gat")+getmapusers("lhz_in01.gat") + +getmapusers("lhz_in02.gat")+getmapusers("lhz_in03.gat"))+" "+$@ked_users$+")", + "- Lou Yang ("+@cost+"z/"+(getmapusers("louyang.gat")+getmapusers("lou_in01.gat")+getmapusers("lou_in02.gat")) + +" "+$@ked_users$+")", + "- Lutie ("+@cost+"z/"+(getmapusers("xmas.gat")+getmapusers("xmas_in.gat"))+" "+$@ked_users$+")", + "- Morocc ("+@cost+"z/"+(getmapusers("morocc.gat")+getmapusers("morocc_in.gat")+getmapusers("moc_castle.gat")) + +" "+$@ked_users$+")", + "- Niflheim ("+@niflcost+"z/"+(getmapusers("niflheim.gat")+getmapusers("nif_in.gat"))+" "+$@ked_users$+")", + "- Payon ("+@cost+"z/"+(getmapusers("payon.gat")+getmapusers("payon_in01.gat")+getmapusers("payon_in02.gat")) + +" "+$@ked_users$+")", + "- Prontera ("+@cost+"z/"+(getmapusers("prontera.gat")+getmapusers("prt_castle.gat") + +getmapusers("prt_church.gat")+getmapusers("prt_in.gat"))+" "+$@ked_users$+")", + "- Umbala ("+@cost+"z/"+(getmapusers("umbala.gat")+getmapusers("um_in.gat"))+" "+$@ked_users$+")", + "- Yuno ("+@cost+"z/"+(getmapusers("yuno.gat")+getmapusers("yuno_in01.gat")+getmapusers("yuno_in02.gat") + +getmapusers("yuno_in03.gat")+getmapusers("yuno_in04.gat")+getmapusers("yuno_in05.gat"))+" "+$@ked_users$+")" + ); + } else { + set @kmenu, select( + "- Cancel", + "- Alberta ("+@cost+"z)", + "- Al De Baran ("+@cost+"z)", + "- Amatsu ("+@cost+"z)", + "- Ayothaya ("+@cost+"z)", + "- Comodo ("+@cost+"z)", + "- Einbech ("+@cost+"z)", + "- Einbroch ("+@cost+"z)", + "- Geffen ("+@cost+"z)", + "- Gon Ryun ("+@cost+"z)", + "- Hugel ("+@cost+"z)", + "- Izlude ("+@cost+"z)", + "- Jawaii ("+@cost+"z)", + "- LightHalzen ("+@cost+"z)", + "- Lou Yang ("+@cost+"z)", + "- Lutie ("+@cost+"z)", + "- Morocc ("+@cost+"z)", + "- Niflheim ("+@niflcost+"z)", + "- Payon ("+@cost+"z)", + "- Prontera ("+@cost+"z)", + "- Umbala ("+@cost+"z)", + "- Yuno ("+@cost+"z)" + ); + } + switch (@kmenu) { + case 2: //Alberta + if (SF_check(0x1)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"alberta.gat",117,56; + break; + case 3: //AlDeBaran + if (SF_check(0x2)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"aldebaran.gat",139,124; + break; + case 4: //Amatsu + if (SF_check(0x4)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"amatsu.gat",197,88; + break; + case 5: //Ayathoya + if (SF_check(0x8)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"ayothaya.gat",202,174; + break; + case 6: //Comodo + if (SF_check(0x10)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"comodo.gat",189,150; + break; + case 7: //Einbech + if (SF_check(0x20)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbech.gat",137,220; + break; + case 8: //Einbroch + if (SF_check(0x40)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbroch.gat",64,199; + break; + case 9: //Geffen + if (SF_check(0x80)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"geffen.gat",120,66; + break; + case 10: //GonRyun + if (SF_check(0x100)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"gonryun.gat",160,180; + break; + case 11: //Hugel + if (SF_check(0x200)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"hugel.gat",96,105; + break; + case 12: //Izlude + if (SF_check(0x400)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"izlude.gat",127,97; + break; + case 13: //Jawaii + if (SF_check(0x800)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"jawaii.gat",214,223; + break; + case 14: //LightHalzen + if (SF_check(0x1000)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"lighthalzen.gat",158,92; + break; + case 15: //LouYang + if (SF_check(0x2000)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"louyang.gat",218,118; + break; + case 16: //Lutie + if (SF_check(0x4000)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"xmas.gat",148,133; + break; + case 17: //Morocc + if (SF_check(0x8000)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"morocc.gat",162,91; + break; + case 18: //Niflheim + if (SF_check(0x10000)) { + if (nif_q_done != 1) { + mes "...?"; + callfunc "F_keIntro", e_no, "For some reason I can't warp you there!"; + } else + callfunc "F_keWarp",$@kewt_niflCost,$@kewd_discount,e_yawn,"niflheim.gat",194,185; + } + break; + case 19: //Payon + if (SF_check(0x20000)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"payon.gat",159,181; + break; + case 20: //Prontera + if (SF_check(0x40000)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"prontera.gat",156,175; + break; + case 21: //Umbala + if (SF_check(0x80000)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"umbala.gat",88,153; + break; + case 22: //Yuno + if (SF_check(0x100000)) + SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"yuno.gat",158,77; + break; + } + } while (@kmenu > 1); + return; + +//SubFunction SF_check(char-flag, account_flag) +//Checks if the character can warp to that town taking into consideration +//traveller's mode. +function SF_check { + if ($@kewt_travel && !((kewt_travel|#kewt_travel)&getarg(0))) { + callfunc "F_keIntro", e_sry, "Sorry, but we can only warp you to towns you have saved in at least once."; + return 0; + } + return 1; +} + +//SubFunction SF_warp (int cost, int discount, int emotion, String map, int x, int y) +//Modded from F_keWarp to allow free warping to towns when not enough zeny. +function SF_warp { + set @cost, getarg(0); + if (@cost > Zeny && $@kewt_free) + set @cost, Zeny; + if (!(callfunc("F_keCharge",@cost,getarg(1),1))) { + callfunc "F_keIntro", e_an, "You don't have enough Zeny..."; + return; + } + emotion getarg(2); + warp getarg(3),getarg(4),getarg(5); + end; +} + +} + +//Invoked when we want to add a map to the list of travelled-to towns +function script F_keAddTravelTown { + set @map$, getarg(0); +// Temporary code to update variables from old format to new. + if(ketw_alberta) { + set kewt_travel,kewt_travel|0x1; + set ketw_alberta,0; + } + if(ketw_aldebaran) { + set kewt_travel,kewt_travel|0x2; + set ketw_aldebaran,0; + } + if(ketw_amatsu) { + set kewt_travel,kewt_travel|0x4; + set ketw_amatsu,0; + } + if(ketw_ayothaya) { + set kewt_travel,kewt_travel|0x8; + set ketw_ayothaya,0; + } + if(ketw_comodo) { + set kewt_travel,kewt_travel|0x10; + set ketw_comodo,0; + } + if(ketw_einbech) { + set kewt_travel,kewt_travel|0x20; + set ketw_einbech,0; + } + if(ketw_einbroch) { + set kewt_travel,kewt_travel|0x40; + set ketw_einbroch,0; + } + if(ketw_geffen) { + set kewt_travel,kewt_travel|0x80; + set ketw_geffen,0; + } + if(ketw_gonryun) { + set kewt_travel,kewt_travel|0x100; + set ketw_gonryun,0; + } + if(ketw_hugel) { + set kewt_travel,kewt_travel|0x200; + set ketw_hugel,0; + } + if(ketw_izlude) { + set kewt_travel,kewt_travel|0x400; + set ketw_izlude,0; + } + if(ketw_jawaii) { + set kewt_travel,kewt_travel|0x800; + set ketw_jawaii,0; + } + if(ketw_lighthalzen) { + set kewt_travel,kewt_travel|0x1000; + set ketw_lighthalzen,0; + } + if(ketw_louyang) { + set kewt_travel,kewt_travel|0x2000; + set ketw_louyang,0; + } + if(ketw_lutie) { + set kewt_travel,kewt_travel|0x4000; + set ketw_lutie,0; + } + if(ketw_morroc) { + set kewt_travel,kewt_travel|0x8000; + set ketw_morroc,0; + } + if(ketw_niflheim) { + set kewt_travel,kewt_travel|0x10000; + set ketw_niflheim,0; + } + if(ketw_payon) { + set kewt_travel,kewt_travel|0x20000; + set ketw_payon,0; + } + if(ketw_prontera) { + set kewt_travel,kewt_travel|0x40000; + set ketw_prontera,0; + } + if(ketw_umbala) { + set kewt_travel,kewt_travel|0x80000; + set ketw_umbala,0; + } + if(ketw_yuno) { + set kewt_travel,kewt_travel|0x100000; + set ketw_yuno,0; + } + + if(#ketw_alberta) { + set #kewt_travel,#kewt_travel|0x1; + set #ketw_alberta,0; + } + if(#ketw_aldebaran) { + set #kewt_travel,#kewt_travel|0x2; + set #ketw_aldebaran,0; + } + if(#ketw_amatsu) { + set #kewt_travel,#kewt_travel|0x4; + set #ketw_amatsu,0; + } + if(#ketw_ayothaya) { + set #kewt_travel,#kewt_travel|0x8; + set #ketw_ayothaya,0; + } + if(#ketw_comodo) { + set #kewt_travel,#kewt_travel|0x10; + set #ketw_comodo,0; + } + if(#ketw_einbech) { + set #kewt_travel,#kewt_travel|0x20; + set #ketw_einbech,0; + } + if(#ketw_einbroch) { + set #kewt_travel,#kewt_travel|0x40; + set #ketw_einbroch,0; + } + if(#ketw_geffen) { + set #kewt_travel,#kewt_travel|0x80; + set #ketw_geffen,0; + } + if(#ketw_gonryun) { + set #kewt_travel,#kewt_travel|0x100; + set #ketw_gonryun,0; + } + if(#ketw_hugel) { + set #kewt_travel,#kewt_travel|0x200; + set #ketw_hugel,0; + } + if(#ketw_izlude) { + set #kewt_travel,#kewt_travel|0x400; + set #ketw_izlude,0; + } + if(#ketw_jawaii) { + set #kewt_travel,#kewt_travel|0x800; + set #ketw_jawaii,0; + } + if(#ketw_lighthalzen) { + set #kewt_travel,#kewt_travel|0x1000; + set #ketw_lighthalzen,0; + } + if(#ketw_louyang) { + set #kewt_travel,#kewt_travel|0x2000; + set #ketw_louyang,0; + } + if(#ketw_lutie) { + set #kewt_travel,#kewt_travel|0x4000; + set #ketw_lutie,0; + } + if(#ketw_morroc) { + set #kewt_travel,#kewt_travel|0x8000; + set #ketw_morroc,0; + } + if(#ketw_niflheim) { + set #kewt_travel,#kewt_travel|0x10000; + set #ketw_niflheim,0; + } + if(#ketw_payon) { + set #kewt_travel,#kewt_travel|0x20000; + set #ketw_payon,0; + } + if(#ketw_prontera) { + set #kewt_travel,#kewt_travel|0x40000; + set #ketw_prontera,0; + } + if(#ketw_umbala) { + set #kewt_travel,#kewt_travel|0x80000; + set #ketw_umbala,0; + } + if(#ketw_yuno) { + set #kewt_travel,#kewt_travel|0x100000; + set #ketw_yuno,0; + } +// End update code. + + if ($@kewt_travel > 1) { + if (@map$ == "alberta.gat" || kewt_travel&0x1) + set #kewt_travel,#kewt_travel|0x1; + if (@map$ == "aldebaran.gat" || kewt_travel&0x2) + set #kewt_travel,#kewt_travel|0x2; + if (@map$ == "amatsu.gat" || kewt_travel&0x4) + set #kewt_travel,#kewt_travel|0x4; + if (@map$ == "ayothaya.gat" || kewt_travel&0x8) + set #kewt_travel,#kewt_travel|0x8; + if (@map$ == "comodo.gat" || kewt_travel&0x10) + set #kewt_travel,#kewt_travel|0x10; + if (@map$ == "einbech.gat" || kewt_travel&0x20) + set #kewt_travel,#kewt_travel|0x20; + if (@map$ == "einbroch.gat" || kewt_travel&0x40) + set #kewt_travel,#kewt_travel|0x40; + if (@map$ == "geffen.gat" || kewt_travel&0x80) + set #kewt_travel,#kewt_travel|0x80; + if (@map$ == "gonryun.gat" || kewt_travel&0x100) + set #kewt_travel,#kewt_travel|0x100; + if (@map$ == "hugel.gat" || kewt_travel&0x200) + set #kewt_travel,#kewt_travel|0x200; + if (@map$ == "izlude.gat" || kewt_travel&0x400) + set #kewt_travel,#kewt_travel|0x400; + if (@map$ == "jawaii.gat" || kewt_travel&0x800) + set #kewt_travel,#kewt_travel|0x800; + if (@map$ == "lighthalzen.gat" || kewt_travel&1000) + set #kewt_travel,#kewt_travel|0x1000; + if (@map$ == "louyang.gat" || kewt_travel&0x2000) + set #kewt_travel,#kewt_travel|0x2000; + if (@map$ == "xmas.gat" || kewt_travel&0x4000) + set #kewt_travel,#kewt_travel|0x4000; + if (@map$ == "morocc.gat" || kewt_travel&0x8000) + set #kewt_travel,#kewt_travel|0x8000; + if (@map$ == "niflheim.gat" || kewt_travel&0x10000) + set #kewt_travel,#kewt_travel|0x10000; + if (@map$ == "payon.gat" || kewt_travel&0x20000) + set #kewt_travel,#kewt_travel|0x20000; + if (@map$ == "prontera.gat" || kewt_travel&0x40000) + set #kewt_travel,#kewt_travel|0x40000; + if (@map$ == "umbala.gat" || kewt_travel&0x80000) + set #kewt_travel,#kewt_travel|0x80000; + if (@map$ == "yuno.gat" || kewt_travel&0x100000) + set #kewt_travel,#kewt_travel|0x100000; + } else { + if (@map$ == "alberta.gat") + set kewt_travel,kewt_travel|0x1; + if (@map$ == "aldebaran.gat") + set kewt_travel,kewt_travel|0x2; + if (@map$ == "amatsu.gat") + set kewt_travel,kewt_travel|0x4; + if (@map$ == "ayothaya.gat") + set kewt_travel,kewt_travel|0x8; + if (@map$ == "comodo.gat") + set kewt_travel,kewt_travel|0x10; + if (@map$ == "einbech.gat") + set kewt_travel,kewt_travel|0x20; + if (@map$ == "einbroch.gat") + set kewt_travel,kewt_travel|0x40; + if (@map$ == "geffen.gat") + set kewt_travel,kewt_travel|0x80; + if (@map$ == "gonryun.gat") + set kewt_travel,kewt_travel|0x100; + if (@map$ == "hugel.gat") + set kewt_travel,kewt_travel|0x200; + if (@map$ == "izlude.gat") + set kewt_travel,kewt_travel|0x400; + if (@map$ == "jawaii.gat") + set kewt_travel,kewt_travel|0x800; + if (@map$ == "lighthalzen.gat") + set kewt_travel,kewt_travel|0x1000; + if (@map$ == "louyang.gat") + set kewt_travel,kewt_travel|0x2000; + if (@map$ == "xmas.gat") + set kewt_travel,kewt_travel|0x4000; + if (@map$ == "morocc.gat") + set kewt_travel,kewt_travel|0x8000; + if (@map$ == "niflheim.gat") + set kewt_travel,kewt_travel|0x10000; + if (@map$ == "payon.gat") + set kewt_travel,kewt_travel|0x20000; + if (@map$ == "prontera.gat") + set kewt_travel,kewt_travel|0x40000; + if (@map$ == "umbala.gat") + set kewt_travel,kewt_travel|0x80000; + if (@map$ == "yuno.gat") + set kewt_travel,kewt_travel|0x100000; + } + return; +} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_woe.txt b/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_woe.txt index 89f536de3..2adce07a0 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_woe.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/ke_warp_woe.txt @@ -1,159 +1,159 @@ -//===== eAthena Script =======================================
-//= Kafra Express - WoE Warping Module
-//===== By: ==================================================
-//= Skotlex
-//===== Current Version: =====================================
-//= 1.7
-//===== Compatible With: =====================================
-//= eAthena SVN R3424+, RO Episode 4.1+ (War of Emperium)
-//===== Description: =========================================
-//= Part of the Kafra Express Script Package.
-//= Offers warping to the War of Emperium grounds.
-//===== Additional Comments: =================================
-//= See config.txt for configuration.
-//= Remove the comment on lines 52,53 and 63 to enable direct G. Dungeon warping
-//============================================================
-
-- script keInit_warpWoe -1,{
-OnInit: //Load Config
- donpcevent "keConfig::OnLoadWarpWoe";
- end;
-}
-
-function script F_keWarpWOE {
- if ($@kewg_check && getcharid(2) <= 0) {
- callfunc "F_keIntro", e_srt, "Sorry, these warps are only available to people who belong to a Guild.";
- return;
- }
- if ($@kewg_checkAgit && agitcheck(0) == 0) {
- callfunc "F_keIntro", e_srt, "Sorry, these warps are only enabled during the Guild Wars.";
- return;
- }
-
- function SF_dungeons;
- set @cost, callfunc("F_keCost",100,$@kewg_discount);
-
- do {
- if ($@kewg_showOnline) {
- set @kmenu, select(
- "- Cancel",
- "- Al De Baran Guild ("+($@kewg_alDeBaran*@cost/100)+"z/"+(getmapusers("alde_gld.gat")
- +getmapusers("aldeg_cas01.gat")+getmapusers("aldeg_cas02.gat")+getmapusers("aldeg_cas03.gat")
- +getmapusers("aldeg_cas04.gat")+getmapusers("aldeg_cas05.gat"))+" "+$@ked_users$+")",
- "- Geffen Guild ("+($@kewg_geffen*@cost/100)+"z/"+(getmapusers("gef_fild13.gat")
- +getmapusers("gefg_cas01.gat")+getmapusers("gefg_cas02.gat")+getmapusers("gefg_cas03.gat")
- +getmapusers("gefg_cas04.gat")+getmapusers("gefg_cas05.gat"))+" "+$@ked_users$+")",
- "- Payon Guild ("+($@kewg_payon*@cost/100)+"z/"+(getmapusers("pay_gld.gat")
- +getmapusers("payg_cas01.gat")+getmapusers("payg_cas02.gat")+getmapusers("payg_cas03.gat")
- +getmapusers("payg_cas04.gat")+getmapusers("payg_cas05.gat"))+" "+$@ked_users$+")",
- "- Prontera Guild ("+($@kewg_prontera*@cost/100)+"z/"+(getmapusers("prt_gld.gat")
- +getmapusers("prtg_cas01.gat")+getmapusers("prtg_cas02.gat")+getmapusers("prtg_cas03.gat")
- +getmapusers("prtg_cas04.gat")+getmapusers("prtg_cas05.gat"))+" "+$@ked_users$+")",
-// "- Guild Dungeons ("+(getmapusers("gld_dun01.gat")+getmapusers("gld_dun02.gat")
-// +getmapusers("gld_dun03.gat")+getmapusers("gld_dun04.gat"))+" "+$@ked_users$+")",
- "- See "+$@ked_users$+" distribution"
- );
- } else {
- set @kmenu, select(
- "- Cancel",
- "- Al De Baran Guild ("+($@kewg_alDeBaran*@cost/100)+"z)",
- "- Geffen Guild ("+($@kewg_geffen*@cost/100)+"z)",
- "- Payon Guild ("+($@kewg_payon*@cost/100)+"z)",
- "- Prontera Guild ("+($@kewg_prontera*@cost/100)+"z)"
-// ,"- Guild Dungeons"
- );
- }
- switch (@kmenu) {
- case 2: //Al De Baran
- callfunc "F_keWarp",$@kewg_alDeBaran,$@kewg_discount,44,"alde_gld.gat",153,160;
- break;
- case 3: //Geffen
- callfunc "F_keWarp",$@kewg_geffen,$@kewg_discount,44,"gef_fild13.gat",243,180;
- break;
- case 4: //Payon
- callfunc "F_keWarp",$@kewg_payon,$@kewg_discount,44,"pay_gld.gat",249,177;
- break;
- case 5: //Prontera
- callfunc "F_keWarp",$@kewg_prontera,$@kewg_discount,44,"prt_gld.gat",119,160;
- break;
- case 6: //Guild Dungeons
- SF_dungeons();
- break;
- case 7: //Info
- mes "The current distribution of "+$@ked_users$+" is as follows:";
- next;
- mes "[Al De Baran]";
- mes "- Guild Grounds: "+getmapusers("alde_gld.gat");
- mes "- Castle 1 - Noisyubantian: "+getmapusers("aldeg_cas01.gat");
- mes "- Castle 2 - Hohensyubangawoo: "+getmapusers("aldeg_cas02.gat");
- mes "- Castle 3 - Nyirenverk: "+getmapusers("aldeg_cas03.gat");
- mes "- Castle 4 - Byirtsburi: "+getmapusers("aldeg_cas04.gat");
- mes "- Castle 5 - Rotenburk: "+getmapusers("aldeg_cas05.gat");
- next;
- mes "[Geffen]";
- mes "- Guild Grounds: "+getmapusers("gef_fild13.gat");
- mes "- Castle 1 - Reprion: "+getmapusers("gefg_cas01.gat");
- mes "- Castle 2 - Yolbriger: "+getmapusers("gefg_cas02.gat");
- mes "- Castle 3 - Isinlife: "+getmapusers("gefg_cas03.gat");
- mes "- Castle 4 - Berigel: "+getmapusers("gefg_cas04.gat");
- mes "- Castle 5 - Melsedetsu: "+getmapusers("gefg_cas05.gat");
- next;
- mes "[Payon]";
- mes "- Guild Grounds: "+getmapusers("pay_gld.gat");
- mes "- Castle 1 - Mingting: "+getmapusers("payg_cas01.gat");
- mes "- Castle 2 - Tiantan: "+getmapusers("payg_cas02.gat");
- mes "- Castle 3 - Fuying: "+getmapusers("payg_cas03.gat");
- mes "- Castle 4 - Honglou: "+getmapusers("payg_cas04.gat");
- mes "- Castle 5 - Zhulinxian: "+getmapusers("payg_cas05.gat");
- next;
- mes "[Prontera]";
- mes "- Guild Grounds: "+getmapusers("prt_gld.gat");
- mes "- Castle 1 - Creamhilt: "+getmapusers("prtg_cas01.gat");
- mes "- Castle 2 - Sbanhealt: "+getmapusers("prtg_cas02.gat");
- mes "- Castle 3 - Lazrigees: "+getmapusers("prtg_cas03.gat");
- mes "- Castle 4 - Squagul: "+getmapusers("prtg_cas04.gat");
- mes "- Castle 5 - Guindull: "+getmapusers("prtg_cas05.gat");
- next;
- callfunc "F_keIntro", -1, "";
- break;
- }
- } while (@kmenu > 1);
- return;
-
-function SF_dungeons {
- do {
- if ($@kewg_showOnline) {
- set @submenu, select(
- "- Cancel",
- "- Baldur Dungeon ("+($@kewg_baldur*@cost/100)+"z/"+getmapusers("gld_dun01.gat")+" "+$@ked_users$+")",
- "- Luina Dungeon ("+($@kewg_luina*@cost/100)+"z/"+getmapusers("gld_dun02.gat")+" "+$@ked_users$+")",
- "- Valkyrie Dungeon ("+($@kewg_valkyrie*@cost/100)+"z/"+getmapusers("gld_dun03.gat")+" "+$@ked_users$+")",
- "- Britoniah Dungeon ("+($@kewg_britoniah*@cost/100)+"z/"+getmapusers("gld_dun04.gat")+" "+$@ked_users$+")"
- );
- } else {
- set @submenu, select(
- "- Cancel",
- "- Baldur Dungeon ("+($@kewg_baldur*@cost/100)+"z)",
- "- Luina Dungeon ("+($@kewg_luina*@cost/100)+"z)",
- "- Valkyrie Dungeon ("+($@kewg_valkyrie*@cost/100)+"z)",
- "- Britoniah Dungeon ("+($@kewg_britoniah*@cost/100)+"z)"
- );
- }
- switch (@submenu) {
- case 2: //Baldur
- callfunc "F_keWarp",$@kewg_baldur,$@kewg_discount,44,"gld_dun01.gat",119,18;
- break;
- case 3: //Luina
- callfunc "F_keWarp",$@kewg_luina,$@kewg_discount,44,"gld_dun02.gat",174,113;
- break;
- case 4: //Valkyrie
- callfunc "F_keWarp",$@kewg_valkyrie,$@kewg_discount,44,"gld_dun03.gat",37,34;
- break;
- case 5: //Britoniah
- callfunc "F_keWarp",$@kewg_britoniah,$@kewg_discount,44,"gld_dun04.gat",42,230;
- break;
- }
- } while (@submenu > 1);
-}
-
-}
+//===== eAthena Script ======================================= +//= Kafra Express - WoE Warping Module +//===== By: ================================================== +//= Skotlex +//===== Current Version: ===================================== +//= 1.7 +//===== Compatible With: ===================================== +//= eAthena SVN R3424+, RO Episode 4.1+ (War of Emperium) +//===== Description: ========================================= +//= Part of the Kafra Express Script Package. +//= Offers warping to the War of Emperium grounds. +//===== Additional Comments: ================================= +//= See config.txt for configuration. +//= Remove the comment on lines 52,53 and 63 to enable direct G. Dungeon warping +//============================================================ + +- script keInit_warpWoe -1,{ +OnInit: //Load Config + donpcevent "keConfig::OnLoadWarpWoe"; + end; +} + +function script F_keWarpWOE { + if ($@kewg_check && getcharid(2) <= 0) { + callfunc "F_keIntro", e_srt, "Sorry, these warps are only available to people who belong to a Guild."; + return; + } + if ($@kewg_checkAgit && agitcheck(0) == 0) { + callfunc "F_keIntro", e_srt, "Sorry, these warps are only enabled during the Guild Wars."; + return; + } + + function SF_dungeons; + set @cost, callfunc("F_keCost",100,$@kewg_discount); + + do { + if ($@kewg_showOnline) { + set @kmenu, select( + "- Cancel", + "- Al De Baran Guild ("+($@kewg_alDeBaran*@cost/100)+"z/"+(getmapusers("alde_gld.gat") + +getmapusers("aldeg_cas01.gat")+getmapusers("aldeg_cas02.gat")+getmapusers("aldeg_cas03.gat") + +getmapusers("aldeg_cas04.gat")+getmapusers("aldeg_cas05.gat"))+" "+$@ked_users$+")", + "- Geffen Guild ("+($@kewg_geffen*@cost/100)+"z/"+(getmapusers("gef_fild13.gat") + +getmapusers("gefg_cas01.gat")+getmapusers("gefg_cas02.gat")+getmapusers("gefg_cas03.gat") + +getmapusers("gefg_cas04.gat")+getmapusers("gefg_cas05.gat"))+" "+$@ked_users$+")", + "- Payon Guild ("+($@kewg_payon*@cost/100)+"z/"+(getmapusers("pay_gld.gat") + +getmapusers("payg_cas01.gat")+getmapusers("payg_cas02.gat")+getmapusers("payg_cas03.gat") + +getmapusers("payg_cas04.gat")+getmapusers("payg_cas05.gat"))+" "+$@ked_users$+")", + "- Prontera Guild ("+($@kewg_prontera*@cost/100)+"z/"+(getmapusers("prt_gld.gat") + +getmapusers("prtg_cas01.gat")+getmapusers("prtg_cas02.gat")+getmapusers("prtg_cas03.gat") + +getmapusers("prtg_cas04.gat")+getmapusers("prtg_cas05.gat"))+" "+$@ked_users$+")", +// "- Guild Dungeons ("+(getmapusers("gld_dun01.gat")+getmapusers("gld_dun02.gat") +// +getmapusers("gld_dun03.gat")+getmapusers("gld_dun04.gat"))+" "+$@ked_users$+")", + "- See "+$@ked_users$+" distribution" + ); + } else { + set @kmenu, select( + "- Cancel", + "- Al De Baran Guild ("+($@kewg_alDeBaran*@cost/100)+"z)", + "- Geffen Guild ("+($@kewg_geffen*@cost/100)+"z)", + "- Payon Guild ("+($@kewg_payon*@cost/100)+"z)", + "- Prontera Guild ("+($@kewg_prontera*@cost/100)+"z)" +// ,"- Guild Dungeons" + ); + } + switch (@kmenu) { + case 2: //Al De Baran + callfunc "F_keWarp",$@kewg_alDeBaran,$@kewg_discount,44,"alde_gld.gat",153,160; + break; + case 3: //Geffen + callfunc "F_keWarp",$@kewg_geffen,$@kewg_discount,44,"gef_fild13.gat",243,180; + break; + case 4: //Payon + callfunc "F_keWarp",$@kewg_payon,$@kewg_discount,44,"pay_gld.gat",249,177; + break; + case 5: //Prontera + callfunc "F_keWarp",$@kewg_prontera,$@kewg_discount,44,"prt_gld.gat",119,160; + break; + case 6: //Guild Dungeons + SF_dungeons(); + break; + case 7: //Info + mes "The current distribution of "+$@ked_users$+" is as follows:"; + next; + mes "[Al De Baran]"; + mes "- Guild Grounds: "+getmapusers("alde_gld.gat"); + mes "- Castle 1 - Noisyubantian: "+getmapusers("aldeg_cas01.gat"); + mes "- Castle 2 - Hohensyubangawoo: "+getmapusers("aldeg_cas02.gat"); + mes "- Castle 3 - Nyirenverk: "+getmapusers("aldeg_cas03.gat"); + mes "- Castle 4 - Byirtsburi: "+getmapusers("aldeg_cas04.gat"); + mes "- Castle 5 - Rotenburk: "+getmapusers("aldeg_cas05.gat"); + next; + mes "[Geffen]"; + mes "- Guild Grounds: "+getmapusers("gef_fild13.gat"); + mes "- Castle 1 - Reprion: "+getmapusers("gefg_cas01.gat"); + mes "- Castle 2 - Yolbriger: "+getmapusers("gefg_cas02.gat"); + mes "- Castle 3 - Isinlife: "+getmapusers("gefg_cas03.gat"); + mes "- Castle 4 - Berigel: "+getmapusers("gefg_cas04.gat"); + mes "- Castle 5 - Melsedetsu: "+getmapusers("gefg_cas05.gat"); + next; + mes "[Payon]"; + mes "- Guild Grounds: "+getmapusers("pay_gld.gat"); + mes "- Castle 1 - Mingting: "+getmapusers("payg_cas01.gat"); + mes "- Castle 2 - Tiantan: "+getmapusers("payg_cas02.gat"); + mes "- Castle 3 - Fuying: "+getmapusers("payg_cas03.gat"); + mes "- Castle 4 - Honglou: "+getmapusers("payg_cas04.gat"); + mes "- Castle 5 - Zhulinxian: "+getmapusers("payg_cas05.gat"); + next; + mes "[Prontera]"; + mes "- Guild Grounds: "+getmapusers("prt_gld.gat"); + mes "- Castle 1 - Creamhilt: "+getmapusers("prtg_cas01.gat"); + mes "- Castle 2 - Sbanhealt: "+getmapusers("prtg_cas02.gat"); + mes "- Castle 3 - Lazrigees: "+getmapusers("prtg_cas03.gat"); + mes "- Castle 4 - Squagul: "+getmapusers("prtg_cas04.gat"); + mes "- Castle 5 - Guindull: "+getmapusers("prtg_cas05.gat"); + next; + callfunc "F_keIntro", -1, ""; + break; + } + } while (@kmenu > 1); + return; + +function SF_dungeons { + do { + if ($@kewg_showOnline) { + set @submenu, select( + "- Cancel", + "- Baldur Dungeon ("+($@kewg_baldur*@cost/100)+"z/"+getmapusers("gld_dun01.gat")+" "+$@ked_users$+")", + "- Luina Dungeon ("+($@kewg_luina*@cost/100)+"z/"+getmapusers("gld_dun02.gat")+" "+$@ked_users$+")", + "- Valkyrie Dungeon ("+($@kewg_valkyrie*@cost/100)+"z/"+getmapusers("gld_dun03.gat")+" "+$@ked_users$+")", + "- Britoniah Dungeon ("+($@kewg_britoniah*@cost/100)+"z/"+getmapusers("gld_dun04.gat")+" "+$@ked_users$+")" + ); + } else { + set @submenu, select( + "- Cancel", + "- Baldur Dungeon ("+($@kewg_baldur*@cost/100)+"z)", + "- Luina Dungeon ("+($@kewg_luina*@cost/100)+"z)", + "- Valkyrie Dungeon ("+($@kewg_valkyrie*@cost/100)+"z)", + "- Britoniah Dungeon ("+($@kewg_britoniah*@cost/100)+"z)" + ); + } + switch (@submenu) { + case 2: //Baldur + callfunc "F_keWarp",$@kewg_baldur,$@kewg_discount,44,"gld_dun01.gat",119,18; + break; + case 3: //Luina + callfunc "F_keWarp",$@kewg_luina,$@kewg_discount,44,"gld_dun02.gat",174,113; + break; + case 4: //Valkyrie + callfunc "F_keWarp",$@kewg_valkyrie,$@kewg_discount,44,"gld_dun03.gat",37,34; + break; + case 5: //Britoniah + callfunc "F_keWarp",$@kewg_britoniah,$@kewg_discount,44,"gld_dun04.gat",42,230; + break; + } + } while (@submenu > 1); +} + +} diff --git a/npc/custom/eAAC_Scripts/kafraExpress/readme.txt b/npc/custom/eAAC_Scripts/kafraExpress/readme.txt index 8952d1913..d37b025e9 100644 --- a/npc/custom/eAAC_Scripts/kafraExpress/readme.txt +++ b/npc/custom/eAAC_Scripts/kafraExpress/readme.txt @@ -1,1170 +1,1170 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Kafra Express Script Package Documentation %
-% - by Skotlex %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-This file's purpose is to give an indepth explanation about setting up, and
-configuring the Kafra Express Script Package (KESP). It is intended to be
-viewed by a text editor using fixed-width font and 80-character long lines.
-
-Document Version v1.9 (15/June/2006)
-////////////////////////////////////////////////////////////////////////////////
-Table of Contents
-////////////////////////////////////////////////////////////////////////////////
-[00] Including the NPC files and menu editing
-[01] Intro to module configuring and general options (config.txt)
-[02] Module: Main Core (ke_main.txt)
-[03] Module: Bank (ke_bank.txt)
-[04] Module: Broadcast (ke_broadcast.txt)
-[05] Module: Stylist (ke_dye.txt)
-[06] Module: Job Changer (ke_jobchange.txt)
-[07] Module: Job Swapper (ke_jobswap.txt)
-[08] Module: Smithery (ke_refine.txt)
-[09] Module: Renting (ke_refine.txt)
-[10] Module: Kafra Shop (ke_shop.txt)
-[11] Module: Stat/Skill Market (ke_statmarket.txt)
-[12] Module: Stat/Skill Resets/Raising (ke_stats.txt)
-[13] Module: Uncarding (ke_uncard.txt)
-[14] Module: Town Warping (ke_warp_town.txt)
-[15] Module: Dungeon Warping (ke_warp_dungeon.txt)
-[16] Module: PvP Warping (ke_warp_pvp.txt)
-[17] Module: WoE Warping (ke_warp_woe.txt)
-[18] The kafras.txt file: About Kafra Definitions
-
-////////////////////////////////////////////////////////////////////////////////
-[00] Including the NPC files and menu editing
-////////////////////////////////////////////////////////////////////////////////
-
-Because of the script's complexity, placing everything in a single file
-is out of the question, therefore the KESP comes bundled in different
-files. Because of the dynamic nature of the script, there are two things
-you need to do in order to enable/disable a particular service:
-
-1. Include the txt file with the corresponding module.
-To include the txt files, you need to know two things: where are the script
-files located, and which is the configuration file where you place the npc
-includes. We'll assume on this guide that you unpacked the KESP in
-npc/custom/kafraExpress. The configuration file for scripts is
-conf/map_athena.conf for eA1.0rc5, and npcs/scripts_custom.txt for current eA
-SVN versions. Add the files you want in the following manner:
-
- npc: npc/custom/kafraExpress/ke_main.txt
- //npc: npc/custom/kafraExpress/ke_rent.txt
-
-The first line is including the file ke_main.,txt, while the following
-excludes ke_rent from being used. Placing the "//" at the beginning of the
-line is known as commenting, and it's a useful way of quickly toggling a
-certain script on/off. The following is the list of all files that come
-bundled in the package:
-
-npc: npc/custom/kafraExpress/kafras.txt
-npc: npc/custom/kafraExpress/config.txt
-npc: npc/custom/kafraExpress/ke_main.txt
-
-npc: npc/custom/kafraExpress/ke_bank.txt
-npc: npc/custom/kafraExpress/ke_broadcast.txt
-npc: npc/custom/kafraExpress/ke_dye.txt
-npc: npc/custom/kafraExpress/ke_jobchange.txt
-npc: npc/custom/kafraExpress/ke_jobswap.txt
-npc: npc/custom/kafraExpress/ke_rent.txt
-npc: npc/custom/kafraExpress/ke_shop.txt
-npc: npc/custom/kafraExpress/ke_statmarket.txt
-npc: npc/custom/kafraExpress/ke_stats.txt
-npc: npc/custom/kafraExpress/ke_refine.txt
-npc: npc/custom/kafraExpress/ke_uncard.txt
-npc: npc/custom/kafraExpress/ke_warp_dungeon.txt
-npc: npc/custom/kafraExpress/ke_warp_pvp.txt
-npc: npc/custom/kafraExpress/ke_warp_town.txt
-npc: npc/custom/kafraExpress/ke_warp_woe.txt
-
-What files can be commented, which files you want to include? On the minimum,
-you need ke_main.txt, kafras.txt and config.txt to have the bare-bones functionality.
-Refer to the table of context to see the relation between files and the
-services they offer.
-
-2. Configure the Menus
-The second part of the configuration is adding/removing the menu entries that
-lead to the specific services. Failure to do this can either A. leave you with
-menu entries that lead to "Function Not found!" errors on the map server, or
-B. Services that were included, but you can't pick because they don't show up
-in the menu. The main file where you should configure the menus is ke_main.txt.
-
-From the main module, ke_main.txt, you must pick which services are available.
-The file contains eight menu sections, which is made up of two pairs of
-identitical menus. The only difference is that the first menu is displayed on
-Kafras placed on towns, while the second menu is for Kafras placed on fields and
-dungeons. The menu roughly looks like this:
-
- menu
- "- Leave",L_END,
- "- Heal Service ("<some code here>"z/10SP)",L_HEAL,
- "- Warp Service",L_WARP,
-// "- Use Storage ("<some code here>"z)",L_STORAGE,
-// "- Use Guild Storage ("<some code here>"z)",L_GUILD_STORAGE,
- "- Job Services",M_JOB,
- "- Other Services",M_OTHER,
- "- Save Respawn point",L_SAVE;
-
-This is the main menu, as you can see the only service unavailable is to use
-the storage. Like in the npc/config file, you can comment the lines of the
-services you do not want.
-
-WARNING: If you need to comment the last option of a menu, remember to replace
-the comma for a semi-colon on the next-to-last option or script parsing errors
-will occur.
-
-The "Warp Service" leads to the second pair of menus you can configure:
-
- menu
- "- Return",-,
- "- Dungeons",L_DUNGEON,
-// "- PvP Arena",L_PVP,
-// "- Guild Wars",L_GUILD_DUNGEON,
- "- Towns",L_TOWN;
- goto M_INIT;
-
-As before, you can comment/uncomment the features you want or not. Likewise,
-the third menu under "Job Services" contains features related to job changing,
-stats/skills and renting. The fourth pair is the "Other Services" menu which
-contains the rest of modules which are probably not going to be used
-frequently.
-
-For your convenience, the following is the list of all the menu options and the file(s) required for it to work:
-
-//Main Menu (under labels M_INIT/MD_INIT)
-
- "- Heal Service" -> ke_main.txt
- "- Warp Service"
- "- Use Storage" -> ke_main.txt
- "- Use Guild Storage" -> ke_main.txt
- "- Job Services"
- "- Other Services"
- "- Save Respawn point" -> ke_main.txt
-
-//Warp Menu (under labels M_WARP/MD_WARP)
-
- "- Dungeons" -> ke_warp_dungeon.txt
- "- PvP Arena" -> ke_warp_pvp.txt
- "- Guild Wars" -> ke_warp_gvg.txt
- "- Towns" -> ke_warp_town.txt
-
-//Job Services Menu (under labels M_JOB/MD_JOB)
-
- "- Change Job" -> ke_jobchange.txt
- "- Swap Job" -> ke_jobswap.txt
- "- Stat/Skill Services" -> ke_stats.txt
- "- Stat/Skill Market" -> ke_statmarket.txt
- "- Rental Service" -> ke_rent.txt
-
-//Other Services Menu (under labels M_OTHER/MD_OTHER)
-
- "- Bank Services" -> ke_bank.txt
- "- Use Kafra Shop" -> ke_shop.txt
- "- Broadcast a message" -> ke_broadcast.txt
- "- Refine Services" -> ke_refine.txt
- "- Uncard Services" -> ke_uncard.txt
- "- Stylist Service" -> ke_dye.txt
- "- Use a Kafra Pass" -> ke_main.txt
-
-////////////////////////////////////////////////////////////////////////////////
-[01] Intro to individual module configuration.
-////////////////////////////////////////////////////////////////////////////////
-
-For portability reasons, the configure options for every module is in the file
-config.txt, which lets you upgrade to future versions without having to
-readjust your settings every time.
-The config file has the options separated per module to make it easier to
-read. There may be bits of code in each section to avoid parsing configure
-options for unneeded variables which should be left alone. In some rare
-occassions variables from one module will be used in a different module (ie:
-Broadcasting PvP messages uses the variables from the pvp module). all variables
-follow the standard "ke<module initials>_variablename", so a variable called
-"kewd_discount" refers to the discount variable in the deep warps module (wd).
-For example, the renting module's configuration segment is:
-
- //-------------------------------------------------------------------------------
- //Config for the Renting Module
- //-------------------------------------------------------------------------------
-OnLoadRent:
- set $@kert_cartOnly, 0; //Set to 1 to enable only cart rental, 0 enables all add-ons.
- set $@kert_cartCost, 2000; //Cost to rent a Cart.
- set $@kert_falconCost, 2000; //Cost to rent a Falcon.
- set $@kert_pecoCost, 2000; //Cost to rent a PecoPeco.
- end;
-
-Variables are usually of two types: Exact value based or Percentage based.
-Exact value variables are often price for different services, while the
-percentage based are things like 30% discount when using Kafra Passes.
-Percentage values are expressed per-hundredth (that is, 10 = 10%, 100 = 100%)
-unless otherwise specified.
-
-Each variable has a small description next to it, hence the need of this
-document. In this document the variable type is identified next to it by: (1)
-when it's boolean, (%) when it's a percentage, ($) when it's a price, (#) for
-numbers and (") for strings.
-
-////////////////////////////////////////////////////////////////////////////////
-[02] Module: Main Core (ke_main.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-This module offers the core functionality of the Kafra Express. Contains the
-main menu and handles the Kafra Pass Reserve Points system.
-
-Variables
-================================================================================
-
-(1) ke_saveOnSpot
------------------
-When 1, a character's respawn point is saved exactly where they are standing.
-otherwise, the respawn point is specified by the kafra definition (see Section
-18).
-
-($) keh_hpCost
-($) keh_spCost
---------------
-The cost of healing sp per every 10 sp. For example, if the cost is 1, it
-costs 100z to heal 1000.
-
-($) kes_cost
-($) kegs_cost
--------------
-The cost of using the storage, guild storage (respectively)
-
-(1) kekp_reset
---------------
-For Kafra Passes. When 1, the Pass expires when starting a chat with the
-Kafra. Otherwise the variable remains active a pretty long time (probably all
-session).
-
-($) kekp_reserveCost
---------------------
-The cost in zeny of reserve points. When using a Kafra Pass many services will
-be cheaper, the amount of zeny saved is "used" to grant the player reserve
-points. For example, if the reserve cost is 100, for every 100z the player
-saves, he'll earn 1 reserve points. Reserve points can be used in scripts, and
-by default is used in the Al De Baran Kafra Headquarters to gain items. Use a
-value of 0 to disable Reserve Point gaining.
-
-(#) kekp_minReserve
-(#) kekp_maxReserve
----------------
-What is the minimum/maximum reserve points the player can gain when using a
-Kafra Pass per transaction? This only applies when the player has saved at
-least 1z.
-
-(") ked_users
--------------
-Certain modules (in particular, the warping ones) have the ability to display
-the number of players related to the function (ie: number of users in a
-dungeon), in such cases this variable is used to display the 'unit' of said
-count. For example, if ked_users is "kids" then the related modules might
-display things like "- Glast Heim (6 kids)".
-
-////////////////////////////////////////////////////////////////////////////////
-[03] Module: Bank (ke_bank.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-This modules enables characters to "store" zeny on a virtual bank account
-which is shared among characters of the same account. There can be deposits,
-withdrawals, which can have transactions fees associated.
-
-It is also possible to establish a monthly maintenance fee that has to be
-payed, when the player does not has enough money in the account to pay this
-fee, they stop gaining interests until they deposit enough to pay it up.
-Finally, all fees charged by the bank can be stored in a server-wide variable
-which may be used by other custom scripts.
-
-Variables
-================================================================================
-
-(%) kebk_depositCost
-(%) kebk_withdrawCost
----------------------
-The Fee in % charged whenever a player does a deposit/withdrawal. For example,
-when a player deposits 100z and the fee is 3%, only 97z are deposited, and 3z
-are charged. Likewise, if a player withdraws 100z when the fee is of 5%,
-they'll withdraw 100z and an additional 5z will be removed from their accounts
-as fee cost.
-
-($) kebk_minTransact
-($) kebk_maxTransact
---------------------
-The minimum/maximum values of a single transaction (deposit or withdrawal)
-
-($) kebk_capacity
------------------
-Indicates what is the bank account capacity for players. That is, what is the
-maximum zeny their account can hold. You can't deposit anymore once the max
-has been reached, and daily interests are lost while maxed.
-
-(%) kebk_dayInterest
---------------------
-The daily interests that the account makes. The value is in 0.01% units, so a
-value of 100 equals 1% daily interests.
-
-($) kebk_monMaintenance
------------------------
-Monthly flat fee charged for maintenance.
-
-(1) kebk_useGlobalBank
-----------------------
-When 1, every fee charged from the player goes into a server variable
-($ke_globalbank), which can then be used by other scripts. is 0 by default
-because none of the Kafra Express modules uses it.
-
-////////////////////////////////////////////////////////////////////////////////
-[04] Module: Broadcast (ke_broadcast.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-Provides broadcasting services for players. Broadcasts can be local (current
-map only) or global (server announce), there are also four types of broadcast:
-Requests for a party, PvP Challenge invitations, General Broadcasts (player
-input the string they want to say) and General Anonymous Broadcasts (player
-name is not displayed when doing the broadcast).
-
-Note that the variables from ke_warp_pvp.txt will be used for auto-configuring
-the pvp broadcasts.
-
-Variables:
-================================================================================
-
-(1) kebc_showOnline
--------------------
-When 1, the total count of players will be displayed in the menu (map users
-next to the local broadcast entry, server users next to the global broadcast
-entry).
-
-($) kebc_partyCost
-($) kebc_pvpCost
-($) kebc_cost
-($) kebc_anonCost
-------------------
-Respective base costs for doing Party-Requests/Pvp Challenge/General/Anonymous
-broadcasts.
-
-(%) kebc_globalFactor
----------------------
-When the broadcast is global, the base cost is multipled by this factor. If
-the factor is 500, then global broadcasts cost 5x times the cost of the map's
-broadcast.
-
-(%) kebc_discount
------------------
-Discount on broadcast prices when the Kafra Pass is active.
-
-////////////////////////////////////////////////////////////////////////////////
-[05] Module: Stylist (ke_dye.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-Offers cloth dye, hair dye and hair style changes, both by input and by wheel
-browsing. Does not consumes dyestuffs because it is designed for custom dye
-packages.
-
-Variables
-================================================================================
-
-(1) kedy_enableHairstyle
-------------------------
-If one, the menu will include hair-style changing options, otherwise only
-dye-changes are offered
-
-(#) kedy_styles
----------------
-Specifies the number of available hair styles
-
-(#) kedy_hair
--------------
-Specificies the number of hair dyes
-
-(#) kedy_clothJN
-(#) kedy_clothJ1ST
-(#) kedy_clothJ2ND
-(#) kedy_clothJSN
-(#) kedy_clothJWED
-------------------
-Specifies the number of cloth dyes based on job-type: Novices, First Classes,
-Second Classes, Super Novices, Wedding Class.
-
-////////////////////////////////////////////////////////////////////////////////
-[06] Module: Job Changer (ke_jobchange.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-Offers job changing, including rebirth and baby classes. The rebirth system
-can allow people free changing through a different path, or forcing the
-correct path. Zeny can be charged/granted as well as weapons on job-change.
-Remaining Skill Points can be wiped, ignored or prevent the change from
-happening. Before changing players can review the consequences of doing so,
-including weapons to gain.
-
-Finally, there's an option that makes it possible to skip the novice class
-altogether and change directly to first jobs.
-
-Variables
-================================================================================
-
-(#) kejc_skillsPolicy
----------------------
-Determines what to do with remaining skill points upon change:
- 0: No job changing until points are used.
- 1: Extra Skill Points are wiped.
- 2: Extra skill points are conserved.
-
-(#) kejc_upperPolicy
---------------------
-What to do about the advanced classes?
- 0: Free for all, players can pick any advanced job regardless of the previous.
- 1: Force mode, classes are auto-selected from the previous path. In the
- case the path could not be determined (players changed jobs previously
- using other npcs), players will be able to select their next job.
-
-(1) kejc_announce
------------------
-When 1, a global announce will be done upon change.
-
-(1) kejc_resetDye
------------------
-If one, the cloth dye is reset upon changing.
-
-(1) kejc_skipNovice
--------------------
-If one, players can skip the novice class and directly into their first job.
-Exploit proof, skills are wiped when changing to a 1st class this way, and
-their basic skill level is set to 9.
-
-(#) kejc_baseSN
----------------
-Base Level required before changing into a Super Novice.
-
-(#) kejc_base2ND
-(#) kejc_job2ND
-(#) kejc_cost2ND
-----------------
-Base level, Job level and zeny required to change into a second job. If the
-cost is below zero, zeny will be given to the player instead of charged.
-
-(#) kejc_baseRebirth
-(#) kejc_jobRebirth
-(#) kejc_costRebirth
---------------------
-Base level, Job level and zeny required before doing a rebirth (change to High
-Novice).
-
-(1) kejc_rebirthReset
----------------------
-If 1, when changing into a HighNovice characters will have their level reset
-to 1 (with the additional 100 stat points)
-
-(1) kejc_weaponPolicy
----------------------
-If 1, characters will get a weapon upon job change. For each first&second
-class there are two weapons to specify, the standard weapon and the "premium"
-one.
-
-(#) kejc_wBonusLv
------------------
-When characters reach this job level, they will receive the premium weapon instead of the normal one. If 0, premium weapons are disabled.
-
-(#) kejc_wAcolyte
-(#) kejc_wArcher
-(#) kejc_wMage
-(#) kejc_wMerchant
-(#) kejc_wSwordman
-(#) kejc_wThief
-(#) kejc_wSuperNovice
-(#) kejc_wPriest
-(#) kejc_wMonk
-(#) kejc_wHunter
-(#) kejc_wBard
-(#) kejc_wDancer
-(#) kejc_wWizard
-(#) kejc_wSage
-(#) kejc_wBlacksmith
-(#) kejc_wAlchemist
-(#) kejc_wKnight
-(#) kejc_wCrusader
-(#) kejc_wAssassin
-(#) kejc_wRogue
------------------------
-ID of the normal weapons received upon job change (if weapon policy is in
-effect).
-
-(#) kejc_w2Priest
-(#) kejc_w2Monk
-(#) kejc_w2Hunter
-(#) kejc_w2Bard
-(#) kejc_w2Dancer
-(#) kejc_w2Wizard
-(#) kejc_w2Sage
-(#) kejc_w2Blacksmith
-(#) kejc_w2Alchemist
-(#) kejc_w2Knight
-(#) kejc_w2Crusader
-(#) kejc_w2Assassin
-(#) kejc_w2Rogue
---------------------
-ID of the premium weapons received upon job chane (if bonus weapon policy is
-in effect). Note that first classes can't get a bonus weapon.
-
-////////////////////////////////////////////////////////////////////////////////
-[07] Module: Job Swapper (ke_jobswap.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-Permits characters to change jobs among other jobs of their same "level".
-This is, between first classes or between second classes. It is also possible
-to store the last job used and revert to it at a later date. Dye, Job Level
-and Skill Point count is saved, however the skill-tree is not saved and skills
-need be reallocated. When reverting to the previous class, characters might be
-able to return from an adv class to a normal one, but if they are baby
-classes, they can't change back to a normal one.
-
-Variables
-================================================================================
-
-(1) kejs_SNpolicy
------------------
-Determines what to do with Super Novices. if 0, they can't swap jobs, if 1,
-they are considered first classes.
-
-(#) kejs_revertPolicy
----------------------
-Determines if Reverting classes is possible and when:
- 0: Cannot go back to the previous job.
- 1: Can only go back if the previous job belongs to the same type as the
- first (is also a 1st/2nd job and is the same normal/adv/baby category).
- 2: Can return to the previous job regardless (exception: when one of the
- two jobs is a baby job and the other is not).
-
-(1) kejs_announce
------------------
-If 1 does a server announce when swapping jobs.
-
-($) kejs_revertCost
--------------------
-Cost of changing to the previous job.
-
-(1) kejs_saveDye
-----------------
-If one, the dye is saved when swapping and restored upon revert.
-
-(1) kejs_resetDye
------------------
-If 1 the clothe dye is reset upon swap.
-
-(%) kejs_swapDiscount
-(%) kejs_revertDiscount
------------------------
-Discount % to apply when the kafra pass is active for swapping/reverting.
-
-(#) kejs_job1ST
-(#) kejs_job2ND
----------------
-Minimum job level before being able to swap among 1st/2nd classes.
-
-($) kejs_cost1ST
-($) kejs_cost2ND
-----------------
-Base cost of swaping jobs.
-
-(%) kejs_discount1ST
-(%) kejs_discount2ND
---------------------
-Discount % to apply to the base cost for every job level above the minimum
-required. For example, if the discount is 1% per level and you change when you
-have +10 level more than the min necessary, you get a 10% discount.
-
-(%) kejs_preserve1ST
-(%) kejs_preserve2ND
---------------------
-Indicates how much of the previous job level to preserve when changing. For
-example, if the preserve value is 50 (50%) and you change from a level 40
-Knight into Priest, you'll become a lv 20 Priest. Skill points are adjusted
-accordingly so it's exploit-free.
-
-////////////////////////////////////////////////////////////////////////////////
-[08] Module: Smithery (ke_refine.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-Offers the services usually found in the town smithery and then some more:
-Item refining, Item Repairing, Ore Purification (rough oris -> pure ones).
-Also sells Phracon and Emveretarcon.
-
-Item refining can follow all the rules of normal refining, but it can also
-override them to refine everything, or safe refines up to max level.
-
-Ore Purification can be extended to include all the rough materials that
-blacksmiths can purify (star dust -> star crumbs, for example).
-
-Variables
-================================================================================
-
-(#) kerf_maxLv
---------------
-Maximum refinement level of equipment.
-
-(1) kerf_safe
--------------
-If 1 success chances are ignoring and refining never fails.
-
-(1) kerf_showChance
--------------------
-If 1 the chance of success/failure is actually shown before confirming.
-
-(1) kerf_refineAll
-------------------
-If 1 then unrefinable items will be refined too (like accesories)
-
-(%) kerf_discount
------------------
-Discount rate to be applied during forging when the Kafra Pass is active.
-
-($) kerf_armorCost
-($) kerf_weaponLv1Cost
-($) kerf_weaponLv2Cost
-($) kerf_weaponLv3Cost
-($) kerf_weaponLv4Cost
-----------------------
-Cost per level to refine armors, and level 1/2/3/4 weapons.
-
-(1) kerf_purifyAll
-------------------
-If 1, the extended purify menu will be used, which shows how to purify steels,
-star crumbs, etc; otherwise, just elus and oris are available.
-
-($) kerf_repairCost
--------------------
-Cost of repairing a broken weapon.
-
-(%) kerf_repairDiscount
------------------------
-Repair Discount% when the kafra pass is active.
-
-(1) kerf_repairSteel
---------------------
-If 1, a steel will be required to repair items.
-
-////////////////////////////////////////////////////////////////////////////////
-[09] Module: Renting (ke_refine.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-Allows renting of Cart/Falcon/PecoPeco. Note that the only restriction applied
-is whether the character has "PushCart", "Falcon Taming" or "PecoPeco Riding",
-it does not checks for the character's class.
-
-It must also be noted that renting is free while the Kafra Pass is active.
-
-Variables
-================================================================================
-
-(1) kert_cartOnly
------------------
-If 1, this module only offers cart rentals. Otherwise you can rent any of the three.
-
-($) kert_cartCost
-($) kert_falconCost
-($) kert_pecoCost
--------------------
-Cost for renting carts/falcons/pecos.
-
-////////////////////////////////////////////////////////////////////////////////
-[10] Module: Kafra Shop (ke_shop.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-Allows invoking of a shop from the Kafra. Note that the shops must be of
-invisible type (ke_shop.txt has an example of two such shops). The config
-enables you to select whether the shop will allow buying, selling or
-both, as well as the name of the shops to use in towns or dungeons (if you
-want to use a custom shop defined elsewhere or want to use the same shop for
-both).
-
-Variables
-================================================================================
-
-(#) $@kesh_towntype
-(#) $@kesh_duntype
--------------------
-Specifies the type of transaction allowed at the shop. Use 1 to enable only
-buying of items, 2 for only selling, or any other value for both.
-
-(#) $@kesh_townshop$
-(#) $@kesh_dunshop$
---------------------
-Specifies the name of the shop to use for buying/selling of items. By default
-the file includes two such shops which you can use, or you can disable them
-and specify your own in the config changing these variables.
-
-////////////////////////////////////////////////////////////////////////////////
-[11] Module: Stat/Skill Market (ke_statmarket.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-Not really a "market", this module lets players sell and buy stat/skill
-points. Also allows for direct trading between stats/skills.
-
-NOTE: Selling stat points can lead to zeny exploits if your server uses the
-stat_db.txt file, because players can then sell all their stat points, do a
-reset and get them back! To prevent this, set the following battle config
-option:
- use_statpoint_table: no
-Alternatively, you can set the selling point of statpoints to be 0z.
-
-Variables
-================================================================================
-
-($) kesm_stBuyPrice
-($) kesm_stSellPrice
---------------------
-Price for every stat point to be bought/sold.
-
-($) kesm_skBuyPrice
-($) kesm_skSellPrice
---------------------
-Price for every skill point to be bought/sold.
-
-(%) kesm_discount
------------------
-Discount price when kafra pass is active. Only applies to buying stats/skills.
-
-(#) kesm_skTradePrice
-(#) kesm_stTradePrice
----------------------
-These two define how many stat points are traded per each skill point when
-doing a direct conversion between stats/skills. The idea is that trading
-directly one for the other should be cheaper than selling them and then buying
-from the other. You can set both to the same value and the trading will have
-no loss.
-Notice that skTradePrice is the cost for converting stats to skills and
-stTradePrice is the cost for converting skills to stats. So... NEVER set
-stTradePrice higher than skTradePrice or you allow an easy exploit of infinite
-stats/skills!
-
-////////////////////////////////////////////////////////////////////////////////
-[11] Module: Stat/Skill Resets/Raising (ke_stats.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-Does stat/skills resets, and additionally helps characters raise their basic
-stats faster. Optionally, skill resets will not touch the basic-skill level.
-Price have two components: base fee and per level fee, so characters with
-higher levels will have to pay more for a reset than low level ones.
-For stat resetting, base level is taken into account. For skill resets, job
-levels. For a dual reset, the addition of both is considered. Also, when taken
-into consideration job level for second classes, the job-level at which one
-changed jobs is also considered. So a Job level 1 Knight actually has job
-level of 41~51.
-
-NOTE: Be careful with quest skills. If your server is configured to reset
-quest skills and players can get their quest skills for free, you are letting
-them exploit the system and get unlimited skill points! (even worse if they
-can sell'em in the Stat/Skills market module). Be sure to either remove free
-quest skills npcs or make quest skills not resetable.
-
-Variables:
-================================================================================
-
-($) kest_stResetCost
---------------------
-Base cost of doing a stat reset.
-
-($) kest_skResetCost
---------------------
-Base cost of doing a skill reset.
-
-($) kest_resetCost
-------------------
-Base cost of a dual reset.
-
-($) kest_BaseLvCost
--------------------
-Cost per Base level for doing a stat reset.
-
-($) kest_JobLvCost
-------------------
-Cost per Job level for doing a skill reset.
-
-($) kest_BothLvCost
--------------------
-Cost per Base+Job level for doing a dual reset.
-
-(%) kest_discount
------------------
-Discount % applied when Kafra Pass is active.
-
-(1) kest_resetBasic
--------------------
-If 1, the skill "basic skill" is also reset.
-
-////////////////////////////////////////////////////////////////////////////////
-[12] Module: Uncarding (ke_uncard.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-This module allows people to remove cards from their equipped items. Prices
-are modified by the item type, the amount of cards and the refine level of the
-item. There's also a chance the removal will fail and: Nothing is lost, the
-card or item is lost, both are lost. The procedure may also require up to two
-different items (and each one with their own specified qty).
-
-Variables:
-================================================================================
-
-($) keuc_BaseCost
------------------
-Base cost of uncarding, modified by the following conditions:
-
-($) keuc_CardCost
------------------
-Each card to be removed increases the total by this value.
-
-($) keuc_UpgradeCostA
-($) keuc_UpgradeCostW1
-($) keuc_UpgradeCostW2
-($) keuc_UpgradeCostW3
-($) keuc_UpgradeCostW4
-----------------------
-These indicate the price increase per refine level for armors and weapons
-levels 1/2/3/4. A +10 armor gets a price increases of ten times
-keuc_UpgradeCostA.
-
-(%) keuc_discount
------------------
-Discount % to apply when kafra pass is active.
-
-(#) keuc_Mat1
-(#) keuc_Qty1
--------------
-Id and Qty of the first material that is needed to uncard. If the qty is zero,
-then it's disabled.
-
-(#) keuc_Mat2
-(#) keuc_Qty2
--------------
-id & Qty of the second material to use. Only valid if the first material was
-also defined, use qty=0 to disable.
-
-(%) keuc_Fail0Chance
---------------------
-This is the safe failure chance (0-1000, where 1000 = 100.0%). A Safe failure
-means the original item remains intact, but you are still charged the money
-and the materials. Use 0 to disable this type of failure.
-
-(%) keuc_Fail1Chance
---------------------
-This is the partial failure chance (0-1000). Partial failures are when either
-the cards or the item is lost. The player gets to choose which one is more
-important before proceeding. Use 0 to disable.
-
-(%) keuc_Fail2Chance
---------------------
-Total failure chance (0-1000). When this triggers, both item and cards are
-lost. Use 0 to disable.
-
-////////////////////////////////////////////////////////////////////////////////
-[14] Module: Town Warping (ke_warp_town.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-This module enables warping to towns. Currently all towns have the same
-warping cost, independent of how far away they are placed. The only exception
-is Niflheim, which is more of a dungeon than a town.
-
-Variables
-================================================================================
-
-(1) kewt_showOnline
--------------------
-If set to 1, the menus will display the online count of players in
-towns.
-
-($) kewt_cost
--------------
-Cost of warping to a town.
-
-($) kewt_niflCost
------------------
-Cost of warping to Niflheim. Different cost since Niflheim is more of a
-dungeon than a city. Also, players can't warp to Niflheim until they do the
-Niflheim Piano Key Quest.
-
-(#) kewt_travel
----------------
-Allows enabling the traveller system. The traveller system makes it so you can't
-warp to a town until you have been there first by some other means (usually
-walking) and saved with the Kafra Express in that town.
-There are three valid values for this variable: 0, 1, 2.
-0 - Disables this mode.
-1 - Uses the mode on a per character basis; that is, each character needs to
-travel to that town and save and that unlocks warping only for that
-character.
-2 - Uses the mode on a per account basis; that is, once a character has saved
-on a town, all other (and future) characters from the same account have the
-warp unlocked.
-
-(1) kewt_free
--------------
-If 1, players will be able to warp to towns even if they run out of money.
-Niflheim excepted.
-
-(%) kewt_discount
------------------
-Discount % to apply when warping while the Kafra Pass is active.
-
-////////////////////////////////////////////////////////////////////////////////
-[15] Module: Dungeon Warping (ke_warp_dungeon.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-Offers warps to all dungeons. Dungeon warping has two main operation modes:
-Deep Dungeon Warping and Short Dungeon Warping. Deep Dungeon warping enables
-players to warp to any level of any dungeon, while Short Dungeon Warping is
-restricted to warping only to the entrance of the dungeon. Traveller's mode is
-also available for dungeons.
-
-Variables
-================================================================================
-
-(1) kewd_showOnline
--------------------
-If set to 1, the menus will display the online online count of characters in
-the dungeons.
-
-(%) kewd_discount
------------------
-Discount % to apply when warping while the Kafra Pass is active.
-
-(#) kewd_travel
----------------
-Enables the traveller system. Just like the traveller's system for towns,
-you can't warp to any dungeon to which you have not visited first on foot and
-saved with the corresponding Kafra Express first.
-If 1, traveller's mode is enabled on a per character basis (so once a
-character saves, only that character has unlocked the warp).
-If 2, traveller's mode is enabled on a per account basis (so once a character
-saves, all charaters of the corresponding account have the warp unlocked).
-
-(1) kewd_deep
--------------
-This variable decides whether deep or short warps will be used. There's no
-need to set it as it will be set automatically based on which file was
-included (ke_warp_short.txt or ke_warp_deep.txt).
-
-(%) kewd_levelCost
-------------------
-This variable only applies to deep warps. It indicates in percentage the cost
-increase per level. For example, if the dungeon costs 1000z to warp to, and
-the levelCost increase is of 50 (50%) then warping to level 2 costs 1500, lv3
-costs 2000, and so on.
-
-(%) kewd_entryDiscount
-----------------------
-The discount for using the Kafra in the dungeon entrance to warp within the
-dungeon. For example, if you use the Kafra next to Payon dungeon to warp to
-Payon Dungeon lv5, this discount is then applied. This variable only makes
-sense on deep warp mode.
-
-(1) kewd_turtleCave
--------------------
-Only used on short warps. If 1, then warping to Turtle Dungeon should lead
-directly to the cave's entrance, otherwise it warps you to the Island's
-entrance.
-
-($) kewd_amatsu
-($) kewd_antHell
-($) kewd_ayothaya
-($) kewd_byalan
-($) kewd_comodo
-($) kewd_clockTower
-($) kewd_coalMines
-($) kewd_culvert
-($) kewd_gefenia
-($) kewd_geffen
-($) kewd_glastHeim
-($) kewd_gonRyun
-($) kewd_hiddenTemple
-($) kewd_louYang
-($) kewd_magma
-($) kewd_orc
-($) kewd_payon
-($) kewd_pyramids
-($) kewd_sphinx
-($) kewd_sunkenShip
-($) kewd_toyFactory
-($) kewd_turtleIsland
-($) kewd_umbala
----------------------
-Base cost of warping to each dungeon, that is, the entrance level cost.
-
-////////////////////////////////////////////////////////////////////////////////
-[16] Module: PvP Warping (ke_pvp.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-The PvP warping module leads to the pvp maps named pvp_n_*-*.gat. It has two
-modes: simple and advanced. On simple mode, every player of every level gets
-thrown into the pvp_n_1-*.gat maps to nuke it out, on advanced mode each of
-the map groups gets their own range of permissible levels to enter. Since
-there is no sure way how characters should escape from a pvp map, they are
-currently given a butterfly wing when they warp.
-
-Variables
-================================================================================
-
-(1) kewp_showOnline
--------------------
-If 1, the menu entries will display the online count of players of each entry.
-
-(1) kewp_advanced
------------------
-Use the advanced pvp system if 1 (see module description)
-
-($) kewp_cost
--------------
-Cost of warping to the pvp rooms used in non-advanced rooms and "free for all"
-in advanced mode.
-
-($) kewp_cost1
-($) kewp_cost2
-($) kewp_cost3
-($) kewp_cost4
-($) kewp_cost5
-($) kewp_cost6
-($) kewp_cost7
---------------
-The costs for each of the pvp room groups in advanced mode.
-
-(#) kewp_baseLv1
-(#) kewp_baseLv2
-(#) kewp_baseLv3
-(#) kewp_baseLv4
-(#) kewp_baseLv5
-(#) kewp_baseLv6
-(#) kewp_baseLv7
-----------------
-These indicate the nominal base level for each room (which base level should
-characters be around to join it). Applicable only to advanced mode.
-
-(#) kewp_range
---------------
-Specifies how far away the character's level can be from the nominal value to
-still be allowed within the room. If the nominal level is 50 and the range is
-3, only characters with levels 47-53 may join.
-
-////////////////////////////////////////////////////////////////////////////////
-[17] Module: WoE Warps (warp_woe.txt)
-////////////////////////////////////////////////////////////////////////////////
-
-Description
-================================================================================
-This module allows characters to warp into the WoE grounds during (or out of)
-War of Emperium times. Players may warp directly into the Guild Dungeons if
-the proper lines are uncommented on the warp menu (See warp_woe.txt's header
-for the location of the menu entries):
-
- menu "- Cancel",-,
-// "- Guild Dungeons",M_DUNGEON,
- "- Al De Baran Guild ("<some code>"z)",L_ALDEBARAN,
- "- Geffen Guild ("<some code>"z)",L_GEFFEN,
- "- Payon Guild ("<some code>"z)",L_PAYON,
- "- Prontera Guild ("<some code>"z)",L_PRONTERA;
- return;
-
-Variables
-================================================================================
-
-(1) kewg_check
---------------
-Does a guild check. If 1, only characters who belong to a guild can use these
-warps.
-
-(1) kewg_checkAgit
-------------------
-Does the WoE times check. If 1, only during War of Emperium the warps will be
-active.
-
-(1) kewg_showOnline
--------------------
-Set to 1 to display in the menus the online count of players in each of the
-guild areas. It also adds a menu entry that displays the summary of players
-within each castle and guild grounds.
-
-(%) kewg_discount
------------------
-Discount % to be applied for warps while the Kafra Pass is active.
-
-($) kewg_baldur
-($) kewg_luina
-($) kewg_valkyrie
-($) kewg_britoniah
-------------------
-Costs to the respective guild dungeons when enabled.
-
-($) kewg_alDeBaran
-($) kewg_geffen
-($) kewg_payon
-($) kewg_prontera
-------------------
-Costs to each of the guild grounds.
-
-////////////////////////////////////////////////////////////////////////////////
-[18] The kafras.txt file: About Kafra Definitions
-////////////////////////////////////////////////////////////////////////////////
-
-The file kafras.txt contains the definition of the Kafras, which is the actual
-sprite on-screen that characters speak with. An enabled kafra may look like
-this:
-
-//Alberta
-alberta.gat,113,53,7 script Kafra Express 116,{
- callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"alberta.gat",116,57;
-}
-
-And a disabled/commented Kafra would look like this:
-
-//Prontera Guild Grounds
-//prt_gld.gat,127,163,5 script Kafra Express 115,{
-// callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"prt_gld.gat",129,170;
-//}
-
-For scripters, the way to define an NPC is not new, and beyond the scope of
-this document, so I'll only document the function "F_KafraExpress":
-
-F_KafraExpress (String "Kafra's name", String "kafra image file", int location, String map, int x, int save y)
-
-The first parameter, the Kafra's name, is the name that will be displayed all
-over the dialogue windows. The Kafra Image file is the image that is to be
-displayed on the screen during the npc chat (without the extension). You can
-use "" to disable the image.
-
-Location refers to the type of Kafra. Type=0 refers to Kafras in towns while
-Type=1 refers to Kafras placed in the wild, ie: in dungeons. Type=2 is for
-Kafras that should count as both town & dungeon. Under these situations, the
-menus displayed are those of the town, the type is used for the traveller's
-warping mode. Finally, Type=3 is a special type used only for the Niflheim
-Kafra.
-
-The last three Parameters are used to define the save location when you save
-your respawn. They are not needed if you use the "Save-on-spot" feature, but
-it's recommended to pass them nevertheless. Note that the map name will still
-be used when using traveller's mode.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Kafra Express Script Package Documentation % +% - by Skotlex % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +This file's purpose is to give an indepth explanation about setting up, and +configuring the Kafra Express Script Package (KESP). It is intended to be +viewed by a text editor using fixed-width font and 80-character long lines. + +Document Version v1.9 (15/June/2006) +//////////////////////////////////////////////////////////////////////////////// +Table of Contents +//////////////////////////////////////////////////////////////////////////////// +[00] Including the NPC files and menu editing +[01] Intro to module configuring and general options (config.txt) +[02] Module: Main Core (ke_main.txt) +[03] Module: Bank (ke_bank.txt) +[04] Module: Broadcast (ke_broadcast.txt) +[05] Module: Stylist (ke_dye.txt) +[06] Module: Job Changer (ke_jobchange.txt) +[07] Module: Job Swapper (ke_jobswap.txt) +[08] Module: Smithery (ke_refine.txt) +[09] Module: Renting (ke_refine.txt) +[10] Module: Kafra Shop (ke_shop.txt) +[11] Module: Stat/Skill Market (ke_statmarket.txt) +[12] Module: Stat/Skill Resets/Raising (ke_stats.txt) +[13] Module: Uncarding (ke_uncard.txt) +[14] Module: Town Warping (ke_warp_town.txt) +[15] Module: Dungeon Warping (ke_warp_dungeon.txt) +[16] Module: PvP Warping (ke_warp_pvp.txt) +[17] Module: WoE Warping (ke_warp_woe.txt) +[18] The kafras.txt file: About Kafra Definitions + +//////////////////////////////////////////////////////////////////////////////// +[00] Including the NPC files and menu editing +//////////////////////////////////////////////////////////////////////////////// + +Because of the script's complexity, placing everything in a single file +is out of the question, therefore the KESP comes bundled in different +files. Because of the dynamic nature of the script, there are two things +you need to do in order to enable/disable a particular service: + +1. Include the txt file with the corresponding module. +To include the txt files, you need to know two things: where are the script +files located, and which is the configuration file where you place the npc +includes. We'll assume on this guide that you unpacked the KESP in +npc/custom/kafraExpress. The configuration file for scripts is +conf/map_athena.conf for eA1.0rc5, and npcs/scripts_custom.txt for current eA +SVN versions. Add the files you want in the following manner: + + npc: npc/custom/kafraExpress/ke_main.txt + //npc: npc/custom/kafraExpress/ke_rent.txt + +The first line is including the file ke_main.,txt, while the following +excludes ke_rent from being used. Placing the "//" at the beginning of the +line is known as commenting, and it's a useful way of quickly toggling a +certain script on/off. The following is the list of all files that come +bundled in the package: + +npc: npc/custom/kafraExpress/kafras.txt +npc: npc/custom/kafraExpress/config.txt +npc: npc/custom/kafraExpress/ke_main.txt + +npc: npc/custom/kafraExpress/ke_bank.txt +npc: npc/custom/kafraExpress/ke_broadcast.txt +npc: npc/custom/kafraExpress/ke_dye.txt +npc: npc/custom/kafraExpress/ke_jobchange.txt +npc: npc/custom/kafraExpress/ke_jobswap.txt +npc: npc/custom/kafraExpress/ke_rent.txt +npc: npc/custom/kafraExpress/ke_shop.txt +npc: npc/custom/kafraExpress/ke_statmarket.txt +npc: npc/custom/kafraExpress/ke_stats.txt +npc: npc/custom/kafraExpress/ke_refine.txt +npc: npc/custom/kafraExpress/ke_uncard.txt +npc: npc/custom/kafraExpress/ke_warp_dungeon.txt +npc: npc/custom/kafraExpress/ke_warp_pvp.txt +npc: npc/custom/kafraExpress/ke_warp_town.txt +npc: npc/custom/kafraExpress/ke_warp_woe.txt + +What files can be commented, which files you want to include? On the minimum, +you need ke_main.txt, kafras.txt and config.txt to have the bare-bones functionality. +Refer to the table of context to see the relation between files and the +services they offer. + +2. Configure the Menus +The second part of the configuration is adding/removing the menu entries that +lead to the specific services. Failure to do this can either A. leave you with +menu entries that lead to "Function Not found!" errors on the map server, or +B. Services that were included, but you can't pick because they don't show up +in the menu. The main file where you should configure the menus is ke_main.txt. + +From the main module, ke_main.txt, you must pick which services are available. +The file contains eight menu sections, which is made up of two pairs of +identitical menus. The only difference is that the first menu is displayed on +Kafras placed on towns, while the second menu is for Kafras placed on fields and +dungeons. The menu roughly looks like this: + + menu + "- Leave",L_END, + "- Heal Service ("<some code here>"z/10SP)",L_HEAL, + "- Warp Service",L_WARP, +// "- Use Storage ("<some code here>"z)",L_STORAGE, +// "- Use Guild Storage ("<some code here>"z)",L_GUILD_STORAGE, + "- Job Services",M_JOB, + "- Other Services",M_OTHER, + "- Save Respawn point",L_SAVE; + +This is the main menu, as you can see the only service unavailable is to use +the storage. Like in the npc/config file, you can comment the lines of the +services you do not want. + +WARNING: If you need to comment the last option of a menu, remember to replace +the comma for a semi-colon on the next-to-last option or script parsing errors +will occur. + +The "Warp Service" leads to the second pair of menus you can configure: + + menu + "- Return",-, + "- Dungeons",L_DUNGEON, +// "- PvP Arena",L_PVP, +// "- Guild Wars",L_GUILD_DUNGEON, + "- Towns",L_TOWN; + goto M_INIT; + +As before, you can comment/uncomment the features you want or not. Likewise, +the third menu under "Job Services" contains features related to job changing, +stats/skills and renting. The fourth pair is the "Other Services" menu which +contains the rest of modules which are probably not going to be used +frequently. + +For your convenience, the following is the list of all the menu options and the file(s) required for it to work: + +//Main Menu (under labels M_INIT/MD_INIT) + + "- Heal Service" -> ke_main.txt + "- Warp Service" + "- Use Storage" -> ke_main.txt + "- Use Guild Storage" -> ke_main.txt + "- Job Services" + "- Other Services" + "- Save Respawn point" -> ke_main.txt + +//Warp Menu (under labels M_WARP/MD_WARP) + + "- Dungeons" -> ke_warp_dungeon.txt + "- PvP Arena" -> ke_warp_pvp.txt + "- Guild Wars" -> ke_warp_gvg.txt + "- Towns" -> ke_warp_town.txt + +//Job Services Menu (under labels M_JOB/MD_JOB) + + "- Change Job" -> ke_jobchange.txt + "- Swap Job" -> ke_jobswap.txt + "- Stat/Skill Services" -> ke_stats.txt + "- Stat/Skill Market" -> ke_statmarket.txt + "- Rental Service" -> ke_rent.txt + +//Other Services Menu (under labels M_OTHER/MD_OTHER) + + "- Bank Services" -> ke_bank.txt + "- Use Kafra Shop" -> ke_shop.txt + "- Broadcast a message" -> ke_broadcast.txt + "- Refine Services" -> ke_refine.txt + "- Uncard Services" -> ke_uncard.txt + "- Stylist Service" -> ke_dye.txt + "- Use a Kafra Pass" -> ke_main.txt + +//////////////////////////////////////////////////////////////////////////////// +[01] Intro to individual module configuration. +//////////////////////////////////////////////////////////////////////////////// + +For portability reasons, the configure options for every module is in the file +config.txt, which lets you upgrade to future versions without having to +readjust your settings every time. +The config file has the options separated per module to make it easier to +read. There may be bits of code in each section to avoid parsing configure +options for unneeded variables which should be left alone. In some rare +occassions variables from one module will be used in a different module (ie: +Broadcasting PvP messages uses the variables from the pvp module). all variables +follow the standard "ke<module initials>_variablename", so a variable called +"kewd_discount" refers to the discount variable in the deep warps module (wd). +For example, the renting module's configuration segment is: + + //------------------------------------------------------------------------------- + //Config for the Renting Module + //------------------------------------------------------------------------------- +OnLoadRent: + set $@kert_cartOnly, 0; //Set to 1 to enable only cart rental, 0 enables all add-ons. + set $@kert_cartCost, 2000; //Cost to rent a Cart. + set $@kert_falconCost, 2000; //Cost to rent a Falcon. + set $@kert_pecoCost, 2000; //Cost to rent a PecoPeco. + end; + +Variables are usually of two types: Exact value based or Percentage based. +Exact value variables are often price for different services, while the +percentage based are things like 30% discount when using Kafra Passes. +Percentage values are expressed per-hundredth (that is, 10 = 10%, 100 = 100%) +unless otherwise specified. + +Each variable has a small description next to it, hence the need of this +document. In this document the variable type is identified next to it by: (1) +when it's boolean, (%) when it's a percentage, ($) when it's a price, (#) for +numbers and (") for strings. + +//////////////////////////////////////////////////////////////////////////////// +[02] Module: Main Core (ke_main.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +This module offers the core functionality of the Kafra Express. Contains the +main menu and handles the Kafra Pass Reserve Points system. + +Variables +================================================================================ + +(1) ke_saveOnSpot +----------------- +When 1, a character's respawn point is saved exactly where they are standing. +otherwise, the respawn point is specified by the kafra definition (see Section +18). + +($) keh_hpCost +($) keh_spCost +-------------- +The cost of healing sp per every 10 sp. For example, if the cost is 1, it +costs 100z to heal 1000. + +($) kes_cost +($) kegs_cost +------------- +The cost of using the storage, guild storage (respectively) + +(1) kekp_reset +-------------- +For Kafra Passes. When 1, the Pass expires when starting a chat with the +Kafra. Otherwise the variable remains active a pretty long time (probably all +session). + +($) kekp_reserveCost +-------------------- +The cost in zeny of reserve points. When using a Kafra Pass many services will +be cheaper, the amount of zeny saved is "used" to grant the player reserve +points. For example, if the reserve cost is 100, for every 100z the player +saves, he'll earn 1 reserve points. Reserve points can be used in scripts, and +by default is used in the Al De Baran Kafra Headquarters to gain items. Use a +value of 0 to disable Reserve Point gaining. + +(#) kekp_minReserve +(#) kekp_maxReserve +--------------- +What is the minimum/maximum reserve points the player can gain when using a +Kafra Pass per transaction? This only applies when the player has saved at +least 1z. + +(") ked_users +------------- +Certain modules (in particular, the warping ones) have the ability to display +the number of players related to the function (ie: number of users in a +dungeon), in such cases this variable is used to display the 'unit' of said +count. For example, if ked_users is "kids" then the related modules might +display things like "- Glast Heim (6 kids)". + +//////////////////////////////////////////////////////////////////////////////// +[03] Module: Bank (ke_bank.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +This modules enables characters to "store" zeny on a virtual bank account +which is shared among characters of the same account. There can be deposits, +withdrawals, which can have transactions fees associated. + +It is also possible to establish a monthly maintenance fee that has to be +payed, when the player does not has enough money in the account to pay this +fee, they stop gaining interests until they deposit enough to pay it up. +Finally, all fees charged by the bank can be stored in a server-wide variable +which may be used by other custom scripts. + +Variables +================================================================================ + +(%) kebk_depositCost +(%) kebk_withdrawCost +--------------------- +The Fee in % charged whenever a player does a deposit/withdrawal. For example, +when a player deposits 100z and the fee is 3%, only 97z are deposited, and 3z +are charged. Likewise, if a player withdraws 100z when the fee is of 5%, +they'll withdraw 100z and an additional 5z will be removed from their accounts +as fee cost. + +($) kebk_minTransact +($) kebk_maxTransact +-------------------- +The minimum/maximum values of a single transaction (deposit or withdrawal) + +($) kebk_capacity +----------------- +Indicates what is the bank account capacity for players. That is, what is the +maximum zeny their account can hold. You can't deposit anymore once the max +has been reached, and daily interests are lost while maxed. + +(%) kebk_dayInterest +-------------------- +The daily interests that the account makes. The value is in 0.01% units, so a +value of 100 equals 1% daily interests. + +($) kebk_monMaintenance +----------------------- +Monthly flat fee charged for maintenance. + +(1) kebk_useGlobalBank +---------------------- +When 1, every fee charged from the player goes into a server variable +($ke_globalbank), which can then be used by other scripts. is 0 by default +because none of the Kafra Express modules uses it. + +//////////////////////////////////////////////////////////////////////////////// +[04] Module: Broadcast (ke_broadcast.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +Provides broadcasting services for players. Broadcasts can be local (current +map only) or global (server announce), there are also four types of broadcast: +Requests for a party, PvP Challenge invitations, General Broadcasts (player +input the string they want to say) and General Anonymous Broadcasts (player +name is not displayed when doing the broadcast). + +Note that the variables from ke_warp_pvp.txt will be used for auto-configuring +the pvp broadcasts. + +Variables: +================================================================================ + +(1) kebc_showOnline +------------------- +When 1, the total count of players will be displayed in the menu (map users +next to the local broadcast entry, server users next to the global broadcast +entry). + +($) kebc_partyCost +($) kebc_pvpCost +($) kebc_cost +($) kebc_anonCost +------------------ +Respective base costs for doing Party-Requests/Pvp Challenge/General/Anonymous +broadcasts. + +(%) kebc_globalFactor +--------------------- +When the broadcast is global, the base cost is multipled by this factor. If +the factor is 500, then global broadcasts cost 5x times the cost of the map's +broadcast. + +(%) kebc_discount +----------------- +Discount on broadcast prices when the Kafra Pass is active. + +//////////////////////////////////////////////////////////////////////////////// +[05] Module: Stylist (ke_dye.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +Offers cloth dye, hair dye and hair style changes, both by input and by wheel +browsing. Does not consumes dyestuffs because it is designed for custom dye +packages. + +Variables +================================================================================ + +(1) kedy_enableHairstyle +------------------------ +If one, the menu will include hair-style changing options, otherwise only +dye-changes are offered + +(#) kedy_styles +--------------- +Specifies the number of available hair styles + +(#) kedy_hair +------------- +Specificies the number of hair dyes + +(#) kedy_clothJN +(#) kedy_clothJ1ST +(#) kedy_clothJ2ND +(#) kedy_clothJSN +(#) kedy_clothJWED +------------------ +Specifies the number of cloth dyes based on job-type: Novices, First Classes, +Second Classes, Super Novices, Wedding Class. + +//////////////////////////////////////////////////////////////////////////////// +[06] Module: Job Changer (ke_jobchange.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +Offers job changing, including rebirth and baby classes. The rebirth system +can allow people free changing through a different path, or forcing the +correct path. Zeny can be charged/granted as well as weapons on job-change. +Remaining Skill Points can be wiped, ignored or prevent the change from +happening. Before changing players can review the consequences of doing so, +including weapons to gain. + +Finally, there's an option that makes it possible to skip the novice class +altogether and change directly to first jobs. + +Variables +================================================================================ + +(#) kejc_skillsPolicy +--------------------- +Determines what to do with remaining skill points upon change: + 0: No job changing until points are used. + 1: Extra Skill Points are wiped. + 2: Extra skill points are conserved. + +(#) kejc_upperPolicy +-------------------- +What to do about the advanced classes? + 0: Free for all, players can pick any advanced job regardless of the previous. + 1: Force mode, classes are auto-selected from the previous path. In the + case the path could not be determined (players changed jobs previously + using other npcs), players will be able to select their next job. + +(1) kejc_announce +----------------- +When 1, a global announce will be done upon change. + +(1) kejc_resetDye +----------------- +If one, the cloth dye is reset upon changing. + +(1) kejc_skipNovice +------------------- +If one, players can skip the novice class and directly into their first job. +Exploit proof, skills are wiped when changing to a 1st class this way, and +their basic skill level is set to 9. + +(#) kejc_baseSN +--------------- +Base Level required before changing into a Super Novice. + +(#) kejc_base2ND +(#) kejc_job2ND +(#) kejc_cost2ND +---------------- +Base level, Job level and zeny required to change into a second job. If the +cost is below zero, zeny will be given to the player instead of charged. + +(#) kejc_baseRebirth +(#) kejc_jobRebirth +(#) kejc_costRebirth +-------------------- +Base level, Job level and zeny required before doing a rebirth (change to High +Novice). + +(1) kejc_rebirthReset +--------------------- +If 1, when changing into a HighNovice characters will have their level reset +to 1 (with the additional 100 stat points) + +(1) kejc_weaponPolicy +--------------------- +If 1, characters will get a weapon upon job change. For each first&second +class there are two weapons to specify, the standard weapon and the "premium" +one. + +(#) kejc_wBonusLv +----------------- +When characters reach this job level, they will receive the premium weapon instead of the normal one. If 0, premium weapons are disabled. + +(#) kejc_wAcolyte +(#) kejc_wArcher +(#) kejc_wMage +(#) kejc_wMerchant +(#) kejc_wSwordman +(#) kejc_wThief +(#) kejc_wSuperNovice +(#) kejc_wPriest +(#) kejc_wMonk +(#) kejc_wHunter +(#) kejc_wBard +(#) kejc_wDancer +(#) kejc_wWizard +(#) kejc_wSage +(#) kejc_wBlacksmith +(#) kejc_wAlchemist +(#) kejc_wKnight +(#) kejc_wCrusader +(#) kejc_wAssassin +(#) kejc_wRogue +----------------------- +ID of the normal weapons received upon job change (if weapon policy is in +effect). + +(#) kejc_w2Priest +(#) kejc_w2Monk +(#) kejc_w2Hunter +(#) kejc_w2Bard +(#) kejc_w2Dancer +(#) kejc_w2Wizard +(#) kejc_w2Sage +(#) kejc_w2Blacksmith +(#) kejc_w2Alchemist +(#) kejc_w2Knight +(#) kejc_w2Crusader +(#) kejc_w2Assassin +(#) kejc_w2Rogue +-------------------- +ID of the premium weapons received upon job chane (if bonus weapon policy is +in effect). Note that first classes can't get a bonus weapon. + +//////////////////////////////////////////////////////////////////////////////// +[07] Module: Job Swapper (ke_jobswap.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +Permits characters to change jobs among other jobs of their same "level". +This is, between first classes or between second classes. It is also possible +to store the last job used and revert to it at a later date. Dye, Job Level +and Skill Point count is saved, however the skill-tree is not saved and skills +need be reallocated. When reverting to the previous class, characters might be +able to return from an adv class to a normal one, but if they are baby +classes, they can't change back to a normal one. + +Variables +================================================================================ + +(1) kejs_SNpolicy +----------------- +Determines what to do with Super Novices. if 0, they can't swap jobs, if 1, +they are considered first classes. + +(#) kejs_revertPolicy +--------------------- +Determines if Reverting classes is possible and when: + 0: Cannot go back to the previous job. + 1: Can only go back if the previous job belongs to the same type as the + first (is also a 1st/2nd job and is the same normal/adv/baby category). + 2: Can return to the previous job regardless (exception: when one of the + two jobs is a baby job and the other is not). + +(1) kejs_announce +----------------- +If 1 does a server announce when swapping jobs. + +($) kejs_revertCost +------------------- +Cost of changing to the previous job. + +(1) kejs_saveDye +---------------- +If one, the dye is saved when swapping and restored upon revert. + +(1) kejs_resetDye +----------------- +If 1 the clothe dye is reset upon swap. + +(%) kejs_swapDiscount +(%) kejs_revertDiscount +----------------------- +Discount % to apply when the kafra pass is active for swapping/reverting. + +(#) kejs_job1ST +(#) kejs_job2ND +--------------- +Minimum job level before being able to swap among 1st/2nd classes. + +($) kejs_cost1ST +($) kejs_cost2ND +---------------- +Base cost of swaping jobs. + +(%) kejs_discount1ST +(%) kejs_discount2ND +-------------------- +Discount % to apply to the base cost for every job level above the minimum +required. For example, if the discount is 1% per level and you change when you +have +10 level more than the min necessary, you get a 10% discount. + +(%) kejs_preserve1ST +(%) kejs_preserve2ND +-------------------- +Indicates how much of the previous job level to preserve when changing. For +example, if the preserve value is 50 (50%) and you change from a level 40 +Knight into Priest, you'll become a lv 20 Priest. Skill points are adjusted +accordingly so it's exploit-free. + +//////////////////////////////////////////////////////////////////////////////// +[08] Module: Smithery (ke_refine.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +Offers the services usually found in the town smithery and then some more: +Item refining, Item Repairing, Ore Purification (rough oris -> pure ones). +Also sells Phracon and Emveretarcon. + +Item refining can follow all the rules of normal refining, but it can also +override them to refine everything, or safe refines up to max level. + +Ore Purification can be extended to include all the rough materials that +blacksmiths can purify (star dust -> star crumbs, for example). + +Variables +================================================================================ + +(#) kerf_maxLv +-------------- +Maximum refinement level of equipment. + +(1) kerf_safe +------------- +If 1 success chances are ignoring and refining never fails. + +(1) kerf_showChance +------------------- +If 1 the chance of success/failure is actually shown before confirming. + +(1) kerf_refineAll +------------------ +If 1 then unrefinable items will be refined too (like accesories) + +(%) kerf_discount +----------------- +Discount rate to be applied during forging when the Kafra Pass is active. + +($) kerf_armorCost +($) kerf_weaponLv1Cost +($) kerf_weaponLv2Cost +($) kerf_weaponLv3Cost +($) kerf_weaponLv4Cost +---------------------- +Cost per level to refine armors, and level 1/2/3/4 weapons. + +(1) kerf_purifyAll +------------------ +If 1, the extended purify menu will be used, which shows how to purify steels, +star crumbs, etc; otherwise, just elus and oris are available. + +($) kerf_repairCost +------------------- +Cost of repairing a broken weapon. + +(%) kerf_repairDiscount +----------------------- +Repair Discount% when the kafra pass is active. + +(1) kerf_repairSteel +-------------------- +If 1, a steel will be required to repair items. + +//////////////////////////////////////////////////////////////////////////////// +[09] Module: Renting (ke_refine.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +Allows renting of Cart/Falcon/PecoPeco. Note that the only restriction applied +is whether the character has "PushCart", "Falcon Taming" or "PecoPeco Riding", +it does not checks for the character's class. + +It must also be noted that renting is free while the Kafra Pass is active. + +Variables +================================================================================ + +(1) kert_cartOnly +----------------- +If 1, this module only offers cart rentals. Otherwise you can rent any of the three. + +($) kert_cartCost +($) kert_falconCost +($) kert_pecoCost +------------------- +Cost for renting carts/falcons/pecos. + +//////////////////////////////////////////////////////////////////////////////// +[10] Module: Kafra Shop (ke_shop.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +Allows invoking of a shop from the Kafra. Note that the shops must be of +invisible type (ke_shop.txt has an example of two such shops). The config +enables you to select whether the shop will allow buying, selling or +both, as well as the name of the shops to use in towns or dungeons (if you +want to use a custom shop defined elsewhere or want to use the same shop for +both). + +Variables +================================================================================ + +(#) $@kesh_towntype +(#) $@kesh_duntype +------------------- +Specifies the type of transaction allowed at the shop. Use 1 to enable only +buying of items, 2 for only selling, or any other value for both. + +(#) $@kesh_townshop$ +(#) $@kesh_dunshop$ +-------------------- +Specifies the name of the shop to use for buying/selling of items. By default +the file includes two such shops which you can use, or you can disable them +and specify your own in the config changing these variables. + +//////////////////////////////////////////////////////////////////////////////// +[11] Module: Stat/Skill Market (ke_statmarket.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +Not really a "market", this module lets players sell and buy stat/skill +points. Also allows for direct trading between stats/skills. + +NOTE: Selling stat points can lead to zeny exploits if your server uses the +stat_db.txt file, because players can then sell all their stat points, do a +reset and get them back! To prevent this, set the following battle config +option: + use_statpoint_table: no +Alternatively, you can set the selling point of statpoints to be 0z. + +Variables +================================================================================ + +($) kesm_stBuyPrice +($) kesm_stSellPrice +-------------------- +Price for every stat point to be bought/sold. + +($) kesm_skBuyPrice +($) kesm_skSellPrice +-------------------- +Price for every skill point to be bought/sold. + +(%) kesm_discount +----------------- +Discount price when kafra pass is active. Only applies to buying stats/skills. + +(#) kesm_skTradePrice +(#) kesm_stTradePrice +--------------------- +These two define how many stat points are traded per each skill point when +doing a direct conversion between stats/skills. The idea is that trading +directly one for the other should be cheaper than selling them and then buying +from the other. You can set both to the same value and the trading will have +no loss. +Notice that skTradePrice is the cost for converting stats to skills and +stTradePrice is the cost for converting skills to stats. So... NEVER set +stTradePrice higher than skTradePrice or you allow an easy exploit of infinite +stats/skills! + +//////////////////////////////////////////////////////////////////////////////// +[11] Module: Stat/Skill Resets/Raising (ke_stats.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +Does stat/skills resets, and additionally helps characters raise their basic +stats faster. Optionally, skill resets will not touch the basic-skill level. +Price have two components: base fee and per level fee, so characters with +higher levels will have to pay more for a reset than low level ones. +For stat resetting, base level is taken into account. For skill resets, job +levels. For a dual reset, the addition of both is considered. Also, when taken +into consideration job level for second classes, the job-level at which one +changed jobs is also considered. So a Job level 1 Knight actually has job +level of 41~51. + +NOTE: Be careful with quest skills. If your server is configured to reset +quest skills and players can get their quest skills for free, you are letting +them exploit the system and get unlimited skill points! (even worse if they +can sell'em in the Stat/Skills market module). Be sure to either remove free +quest skills npcs or make quest skills not resetable. + +Variables: +================================================================================ + +($) kest_stResetCost +-------------------- +Base cost of doing a stat reset. + +($) kest_skResetCost +-------------------- +Base cost of doing a skill reset. + +($) kest_resetCost +------------------ +Base cost of a dual reset. + +($) kest_BaseLvCost +------------------- +Cost per Base level for doing a stat reset. + +($) kest_JobLvCost +------------------ +Cost per Job level for doing a skill reset. + +($) kest_BothLvCost +------------------- +Cost per Base+Job level for doing a dual reset. + +(%) kest_discount +----------------- +Discount % applied when Kafra Pass is active. + +(1) kest_resetBasic +------------------- +If 1, the skill "basic skill" is also reset. + +//////////////////////////////////////////////////////////////////////////////// +[12] Module: Uncarding (ke_uncard.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +This module allows people to remove cards from their equipped items. Prices +are modified by the item type, the amount of cards and the refine level of the +item. There's also a chance the removal will fail and: Nothing is lost, the +card or item is lost, both are lost. The procedure may also require up to two +different items (and each one with their own specified qty). + +Variables: +================================================================================ + +($) keuc_BaseCost +----------------- +Base cost of uncarding, modified by the following conditions: + +($) keuc_CardCost +----------------- +Each card to be removed increases the total by this value. + +($) keuc_UpgradeCostA +($) keuc_UpgradeCostW1 +($) keuc_UpgradeCostW2 +($) keuc_UpgradeCostW3 +($) keuc_UpgradeCostW4 +---------------------- +These indicate the price increase per refine level for armors and weapons +levels 1/2/3/4. A +10 armor gets a price increases of ten times +keuc_UpgradeCostA. + +(%) keuc_discount +----------------- +Discount % to apply when kafra pass is active. + +(#) keuc_Mat1 +(#) keuc_Qty1 +------------- +Id and Qty of the first material that is needed to uncard. If the qty is zero, +then it's disabled. + +(#) keuc_Mat2 +(#) keuc_Qty2 +------------- +id & Qty of the second material to use. Only valid if the first material was +also defined, use qty=0 to disable. + +(%) keuc_Fail0Chance +-------------------- +This is the safe failure chance (0-1000, where 1000 = 100.0%). A Safe failure +means the original item remains intact, but you are still charged the money +and the materials. Use 0 to disable this type of failure. + +(%) keuc_Fail1Chance +-------------------- +This is the partial failure chance (0-1000). Partial failures are when either +the cards or the item is lost. The player gets to choose which one is more +important before proceeding. Use 0 to disable. + +(%) keuc_Fail2Chance +-------------------- +Total failure chance (0-1000). When this triggers, both item and cards are +lost. Use 0 to disable. + +//////////////////////////////////////////////////////////////////////////////// +[14] Module: Town Warping (ke_warp_town.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +This module enables warping to towns. Currently all towns have the same +warping cost, independent of how far away they are placed. The only exception +is Niflheim, which is more of a dungeon than a town. + +Variables +================================================================================ + +(1) kewt_showOnline +------------------- +If set to 1, the menus will display the online count of players in +towns. + +($) kewt_cost +------------- +Cost of warping to a town. + +($) kewt_niflCost +----------------- +Cost of warping to Niflheim. Different cost since Niflheim is more of a +dungeon than a city. Also, players can't warp to Niflheim until they do the +Niflheim Piano Key Quest. + +(#) kewt_travel +--------------- +Allows enabling the traveller system. The traveller system makes it so you can't +warp to a town until you have been there first by some other means (usually +walking) and saved with the Kafra Express in that town. +There are three valid values for this variable: 0, 1, 2. +0 - Disables this mode. +1 - Uses the mode on a per character basis; that is, each character needs to +travel to that town and save and that unlocks warping only for that +character. +2 - Uses the mode on a per account basis; that is, once a character has saved +on a town, all other (and future) characters from the same account have the +warp unlocked. + +(1) kewt_free +------------- +If 1, players will be able to warp to towns even if they run out of money. +Niflheim excepted. + +(%) kewt_discount +----------------- +Discount % to apply when warping while the Kafra Pass is active. + +//////////////////////////////////////////////////////////////////////////////// +[15] Module: Dungeon Warping (ke_warp_dungeon.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +Offers warps to all dungeons. Dungeon warping has two main operation modes: +Deep Dungeon Warping and Short Dungeon Warping. Deep Dungeon warping enables +players to warp to any level of any dungeon, while Short Dungeon Warping is +restricted to warping only to the entrance of the dungeon. Traveller's mode is +also available for dungeons. + +Variables +================================================================================ + +(1) kewd_showOnline +------------------- +If set to 1, the menus will display the online online count of characters in +the dungeons. + +(%) kewd_discount +----------------- +Discount % to apply when warping while the Kafra Pass is active. + +(#) kewd_travel +--------------- +Enables the traveller system. Just like the traveller's system for towns, +you can't warp to any dungeon to which you have not visited first on foot and +saved with the corresponding Kafra Express first. +If 1, traveller's mode is enabled on a per character basis (so once a +character saves, only that character has unlocked the warp). +If 2, traveller's mode is enabled on a per account basis (so once a character +saves, all charaters of the corresponding account have the warp unlocked). + +(1) kewd_deep +------------- +This variable decides whether deep or short warps will be used. There's no +need to set it as it will be set automatically based on which file was +included (ke_warp_short.txt or ke_warp_deep.txt). + +(%) kewd_levelCost +------------------ +This variable only applies to deep warps. It indicates in percentage the cost +increase per level. For example, if the dungeon costs 1000z to warp to, and +the levelCost increase is of 50 (50%) then warping to level 2 costs 1500, lv3 +costs 2000, and so on. + +(%) kewd_entryDiscount +---------------------- +The discount for using the Kafra in the dungeon entrance to warp within the +dungeon. For example, if you use the Kafra next to Payon dungeon to warp to +Payon Dungeon lv5, this discount is then applied. This variable only makes +sense on deep warp mode. + +(1) kewd_turtleCave +------------------- +Only used on short warps. If 1, then warping to Turtle Dungeon should lead +directly to the cave's entrance, otherwise it warps you to the Island's +entrance. + +($) kewd_amatsu +($) kewd_antHell +($) kewd_ayothaya +($) kewd_byalan +($) kewd_comodo +($) kewd_clockTower +($) kewd_coalMines +($) kewd_culvert +($) kewd_gefenia +($) kewd_geffen +($) kewd_glastHeim +($) kewd_gonRyun +($) kewd_hiddenTemple +($) kewd_louYang +($) kewd_magma +($) kewd_orc +($) kewd_payon +($) kewd_pyramids +($) kewd_sphinx +($) kewd_sunkenShip +($) kewd_toyFactory +($) kewd_turtleIsland +($) kewd_umbala +--------------------- +Base cost of warping to each dungeon, that is, the entrance level cost. + +//////////////////////////////////////////////////////////////////////////////// +[16] Module: PvP Warping (ke_pvp.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +The PvP warping module leads to the pvp maps named pvp_n_*-*.gat. It has two +modes: simple and advanced. On simple mode, every player of every level gets +thrown into the pvp_n_1-*.gat maps to nuke it out, on advanced mode each of +the map groups gets their own range of permissible levels to enter. Since +there is no sure way how characters should escape from a pvp map, they are +currently given a butterfly wing when they warp. + +Variables +================================================================================ + +(1) kewp_showOnline +------------------- +If 1, the menu entries will display the online count of players of each entry. + +(1) kewp_advanced +----------------- +Use the advanced pvp system if 1 (see module description) + +($) kewp_cost +------------- +Cost of warping to the pvp rooms used in non-advanced rooms and "free for all" +in advanced mode. + +($) kewp_cost1 +($) kewp_cost2 +($) kewp_cost3 +($) kewp_cost4 +($) kewp_cost5 +($) kewp_cost6 +($) kewp_cost7 +-------------- +The costs for each of the pvp room groups in advanced mode. + +(#) kewp_baseLv1 +(#) kewp_baseLv2 +(#) kewp_baseLv3 +(#) kewp_baseLv4 +(#) kewp_baseLv5 +(#) kewp_baseLv6 +(#) kewp_baseLv7 +---------------- +These indicate the nominal base level for each room (which base level should +characters be around to join it). Applicable only to advanced mode. + +(#) kewp_range +-------------- +Specifies how far away the character's level can be from the nominal value to +still be allowed within the room. If the nominal level is 50 and the range is +3, only characters with levels 47-53 may join. + +//////////////////////////////////////////////////////////////////////////////// +[17] Module: WoE Warps (warp_woe.txt) +//////////////////////////////////////////////////////////////////////////////// + +Description +================================================================================ +This module allows characters to warp into the WoE grounds during (or out of) +War of Emperium times. Players may warp directly into the Guild Dungeons if +the proper lines are uncommented on the warp menu (See warp_woe.txt's header +for the location of the menu entries): + + menu "- Cancel",-, +// "- Guild Dungeons",M_DUNGEON, + "- Al De Baran Guild ("<some code>"z)",L_ALDEBARAN, + "- Geffen Guild ("<some code>"z)",L_GEFFEN, + "- Payon Guild ("<some code>"z)",L_PAYON, + "- Prontera Guild ("<some code>"z)",L_PRONTERA; + return; + +Variables +================================================================================ + +(1) kewg_check +-------------- +Does a guild check. If 1, only characters who belong to a guild can use these +warps. + +(1) kewg_checkAgit +------------------ +Does the WoE times check. If 1, only during War of Emperium the warps will be +active. + +(1) kewg_showOnline +------------------- +Set to 1 to display in the menus the online count of players in each of the +guild areas. It also adds a menu entry that displays the summary of players +within each castle and guild grounds. + +(%) kewg_discount +----------------- +Discount % to be applied for warps while the Kafra Pass is active. + +($) kewg_baldur +($) kewg_luina +($) kewg_valkyrie +($) kewg_britoniah +------------------ +Costs to the respective guild dungeons when enabled. + +($) kewg_alDeBaran +($) kewg_geffen +($) kewg_payon +($) kewg_prontera +------------------ +Costs to each of the guild grounds. + +//////////////////////////////////////////////////////////////////////////////// +[18] The kafras.txt file: About Kafra Definitions +//////////////////////////////////////////////////////////////////////////////// + +The file kafras.txt contains the definition of the Kafras, which is the actual +sprite on-screen that characters speak with. An enabled kafra may look like +this: + +//Alberta +alberta.gat,113,53,7 script Kafra Express 116,{ + callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"alberta.gat",116,57; +} + +And a disabled/commented Kafra would look like this: + +//Prontera Guild Grounds +//prt_gld.gat,127,163,5 script Kafra Express 115,{ +// callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"prt_gld.gat",129,170; +//} + +For scripters, the way to define an NPC is not new, and beyond the scope of +this document, so I'll only document the function "F_KafraExpress": + +F_KafraExpress (String "Kafra's name", String "kafra image file", int location, String map, int x, int save y) + +The first parameter, the Kafra's name, is the name that will be displayed all +over the dialogue windows. The Kafra Image file is the image that is to be +displayed on the screen during the npc chat (without the extension). You can +use "" to disable the image. + +Location refers to the type of Kafra. Type=0 refers to Kafras in towns while +Type=1 refers to Kafras placed in the wild, ie: in dungeons. Type=2 is for +Kafras that should count as both town & dungeon. Under these situations, the +menus displayed are those of the town, the type is used for the traveller's +warping mode. Finally, Type=3 is a special type used only for the Niflheim +Kafra. + +The last three Parameters are used to define the save location when you save +your respawn. They are not needed if you use the "Save-on-spot" feature, but +it's recommended to pass them nevertheless. Note that the map name will still +be used when using traveller's mode. diff --git a/npc/custom/eAAC_Scripts/messageboards.txt b/npc/custom/eAAC_Scripts/messageboards.txt index 73f77ca1f..331e42385 100644 --- a/npc/custom/eAAC_Scripts/messageboards.txt +++ b/npc/custom/eAAC_Scripts/messageboards.txt @@ -1,421 +1,421 @@ -geffen.gat,122,102,4 script Message Man 774,{
-mes "[Robert]";
-mes "Hello, I am here to serve you. Enjoy my service. ^_-";
-next;
-mes "[Robert]";
-mes "Please keep in mind, that all messages are wiped once every two days";
-mes "-Msg From Creator- In new version this will be set able, look forward to this! -End Msg From Creator-";
-next;
-L_Menu01:
-mes "[Robert]";
-mes "What would you like to do??";
-next;
-if((getgmlevel(0) >= 90)) menu "Public board",L_pubgmmenu,"Gm Board",L_gmmenu,"Close Public Board",L_clospub,"Open Public Board",L_openpub;
-if(($messagepubclose == 1)) goto L_pubclosed;
-menu "Read messages!",L_readmsg,"Post a message!",L_Postmsg,"Leave",L_leave;
-L_pubgmmenu:
-if(($messagepubclose == 1)) goto L_pubclosed;
-menu "Re-set the rotation",L_setrot,"Reset Message",L_Clearmsgs,"Read messages!",L_readmsg,"Post a message!",L_Postmsg,"Leave",L_leave;
-L_gmmenu:
-menu "Read messages!",L_gmboardread,"Post a Message!",L_gmboardpost,"Reset Messages",L_gmboardreset;
-
-L_openpub:
-mes "[Robert]";
-mes "Are you sure?";
-menu "Yes",-,"No",L_openpubn;
-mes "[Robert]";
-mes "It is done.";
-close2;
-set $messagepubclose,0;
-end;
-
-L_openpubn:
-mes "[Robert]";
-mes "Very well it shall remain closed.";
-close;
-
-L_pubclosed:
-mes "[Robert]";
-mes "Im sorry. The public boards are currently Closed.";
-close;
-
-L_clospub:
-mes "[Robert]";
-mes "Are you sure?";
-next;
-menu "Yes.",-,"No",L_closepubn;
-mes "[Robert]";
-mes "Very well I will not allow anyone into the public board.";
-close2;
-set $messagepubclose,1;
-end;
-
-L_closepubn:
-mes "[Robert]";
-mes "Have a nice day";
-close;
-
-L_gmboardreset:
-mes "[Robert]";
-mes "This will require atleast 2 GM's approval to reset the gm board.";
-mes "-Msg From Creator- This is bugged same gm can vote twice. Planned to revise in next version. -End Msg From Creator-";
-next;
-menu "Vote for reset.",L_gmboardresetvote,"Back to main.",L_Menu01,"Leave.",L_leave;
-
-L_gmboardresetvote:
-callfunc "F_gmresetcheck";
-set @tempid,getcharid(0);
-set $gmboardresetvotenumb,$gmboardresetvotenumb+1;
-set $gmboardresetvoted[$gmboardresetvotenumb],1;
-set $gmboardresetvoteid[$gmboardresetvotenumb],@tempid;
-set @tempid,0;
-set $gmboardreset,$gmboardreset-1;
-mes "[Robert]";
-mes "Thank you.";
-next;
-if(($gmboardreset == 0)) goto L_gmresetdone;
-if(($gmboardreset >= 1)) goto L_gmresetnotdone;
-close;
-
-L_gmresetdone:
-deletearray $gmmessageboardpost$[1],$gmmessageboardpostnumber;
-deletearray $gmmessageboardpostdate$[1],$gmmessageboardpostnumber;
-deletearray $gmmessageboardpostname$[1],$gmmessageboardpostnumber;
-deletearray $gmmessageboardeditdate$[1],$gmmessageboardpostnumber;
-deletearray $gmboardresetvoted[1],$gmboardresetvotenumber;
-deletearray $gmboardresetvoted[1],$gmboardresetvotenumber;
-deletearray $gmboardresetvoteid[1],$gmboardresetvotenumber;
-set $gmboardresetvotenumber,0;
-set $gmboardreset,2;
-mes "[Robert]";
-mes "The reset has been done.";
-close;
-
-L_gmresetnotdone:
-mes "[Robert]";
-mes "There needs to be "+$gmboardreset+" more gm(s) approval to do the reset.";
-close;
-
-L_gmboardread:
-if(($gmmessageboardpostnumber == 0)) goto L_msgno;
-callfunc "F_gmmessage";
-end;
-
-L_gmboardpost:
-if(($gmmessageboardpostnumber >= 127)) goto L_postmsgyestm;
-set @gmmessageboardpostername$,strcharinfo(0);
-set @gmmessageboarddate$,gettimestr("%Y-%m/%d %H:%M:%S",21);
-set $gmmessageboardpostnumber,$gmmessageboardpostnumber+1;
-input @gmmsgboardmsgt$;
-set $gmmessageboardpost$[$gmmessageboardpostnumber],@gmmsgboardmsgt$;
-set $gmmessageboardpostdate$[$gmmessageboardpostnumber],@gmmessageboarddate$;
-set $gmmessageboardpostname$[$gmmessageboardpostnumber],@gmmessageboardpostername$;
-mes "[Robert]";
-mes "Here is what your message looks like";
-next;
-mes "Posted by: "+$gmmessageboardpostname$[$gmmessageboardpostnumber]+".";
-mes "On: "+$gmmessageboardpostdate$[$gmmessageboardpostnumber]+".";
-mes $gmmessageboardpost$[$gmmessageboardpostnumber];
-close;
-
-
-L_setrot:
-set $@determinedayrotation,gettime(4); //this determines the day rotation for clearing messages.
-if(($@determinedayrotation == 0)) set $rotation,0;
-if(($@determinedayrotation == 1)) set $rotation,1;
-if(($@determinedayrotation == 2)) set $rotation,0;
-if(($@determinedayrotation == 3)) set $rotation,1;
-if(($@determinedayrotation == 4)) set $rotation,0;
-if(($@determinedayrotation == 5)) set $rotation,1;
-if(($@determinedayrotation == 6)) set $rotation,0;
-mes "It is done.";
-close;
-
-L_Clearmsgs:
-mes "[Robert]";
-mes "Are you sure?";
-next;
-menu "Yes",L_clearmsgsy,"No thanks.",L_Menu01;
-
-L_clearmsgsy:
-deletearray $messageboardpost$[1],$messageboardpostnumber;
-deletearray $messageboardpostdate$[1],$messageboardpostnumber;
-deletearray $messageboardpostname$[1],$messageboardpostnumber;
-deletearray $messageboardeditdate$[1],$messageboardpostnumber;
-deletearray $mymessage[1],$messageboardpostnumber;
-set $messageboardpostnumber,0;
-mes "[Robert]";
-mes "It is done.";
-close;
-
-L_leave:
-close;
-
-L_Postmsg:
-mes "[Robert]";
-mes "What do you want to say in your message?";
-next;
-set @msgboardmsgt$,0;
-input @msgboardmsgt$;
-mes "[Robert]";
-mes "are you sure this is the message you want?";
-mes @msgboardmsgt$;
-next;
-menu "Yes!",L_postmsgyes,"No let me re-do it!",L_Postmsg,"Ive changed my mind let me leave.",lleave;
-
-L_postmsgyes:
-if(($messageboardpostnumber >= 127)) goto L_postmsgyestm;
-set @messageboardpostername$,strcharinfo(0);
-set @messageboarddate$,gettimestr("%Y-%m/%d %H:%M:%S",21);
-set $messageboardpostnumber,$messageboardpostnumber+1;
-set @mymessage2,$messageboardpostnumber;
-set $mymessage[$messageboardpostnumber],5;
-set $messageboardpost$[$messageboardpostnumber],@msgboardmsgt$;
-set $messageboardpostdate$[$messageboardpostnumber],@messageboarddate$;
-set $messageboardpostname$[$messageboardpostnumber],@messageboardpostername$;
-mes "[Robert]";
-mes "here is what your message looks like";
-next;
-mes "Posted by: "+$messageboardpostname$[$messageboardpostnumber]+".";
-mes "On: "+$messageboardpostdate$[$messageboardpostnumber]+".";
-mes $messageboardpost$[$messageboardpostnumber];
-close;
-
-L_postmsgyestm:
-set @mesboardmsgt$,0;
-mes "[Robert]";
-mes "Im sorry your going to have to wait till more space opens up for messages, it should be in 1 or 2 days =)";
-close;
-
-lleave:
-deletearray $messageboardpost$[@tempview],@tempview;
-deletearray $messageboardpostname$[@tempview],@tempview;
-deletearray $messageboardpostdate$[@tempview],@tempview;
-deletearray $mymessage[@tempview],@tempview;
-set $messageboardpostnumber,$messageboardpostnumber-1;
-set @msgboardmsgt$,0;
-close;
-
-L_readmsg:
-if(($messageboardpostnumber == 0)) goto L_msgno;
-callfunc "F_message";
-end;
-
-L_msgno:
-mes "[Robert]";
-mes "There are currently no messages.";
-close;
-
-OnInit:
-set $gmboardreset,2;
-set $gmboardresetvotenumb,0;
-end;
-
-OnInterIfInitOnce:
-set $@determinedayrotation,gettime(4); //this determines the day rotation for clearing messages.
-if(($@determinedayrotation == 0)) set $rotation,0;
-if(($@determinedayrotation == 1)) set $rotation,1;
-if(($@determinedayrotation == 2)) set $rotation,0;
-if(($@determinedayrotation == 3)) set $rotation,1;
-if(($@determinedayrotation == 4)) set $rotation,0;
-if(($@determinedayrotation == 5)) set $rotation,1;
-if(($@determinedayrotation == 6)) set $rotation,0;
-end;
-
-
-OnSun1200:
-if(($rotation == 1)) end;
-deletearray $messageboardpost$[1],$messageboardpostnumber;
-deletearray $messageboardpostdate$[1],$messageboardpostnumber;
-deletearray $messageboardpostname$[1],$messageboardpostnumber;
-deletearray $mymessage[1],$messageboardpostnumber;
-set $messageboardpostnumber,0;
-end;
-
-OnSat1200:
-if(($rotation == 0)) end;
-deletearray $messageboardpost$[1],$messageboardpostnumber;
-deletearray $messageboardpostdate$[1],$messageboardpostnumber;
-deletearray $messageboardpostname$[1],$messageboardpostnumber;
-deletearray $mymessage[1],$messageboardpostnumber;
-set $messageboardpostnumber,0;
-end;
-
-OnMon1200:
-if(($rotation == 1)) end;
-deletearray $messageboardpost$[1],$messageboardpostnumber;
-deletearray $messageboardpostdate$[1],$messageboardpostnumber;
-deletearray $messageboardpostname$[1],$messageboardpostnumber;
-deletearray $mymessage[1],$messageboardpostnumber;
-set $messageboardpostnumber,0;
-end;
-
-OnTue1200:
-if(($rotation == 0)) end;
-deletearray $messageboardpost$[1],$messageboardpostnumber;
-deletearray $messageboardpostdate$[1],$messageboardpostnumber;
-deletearray $messageboardpostname$[1],$messageboardpostnumber;
-deletearray $mymessage[1],$messageboardpostnumber;
-set $messageboardpostnumber,0;
-end;
-
-OnWed1200:
-if(($rotation == 1)) end;
-deletearray $messageboardpost$[1],$messageboardpostnumber;
-deletearray $messageboardpostdate$[1],$messageboardpostnumber;
-deletearray $messageboardpostname$[1],$messageboardpostnumber;
-deletearray $mymessage[1],$messageboardpostnumber;
-set $messageboardpostnumber,0;
-end;
-
-OnThu1200:
-if(($rotation == 0)) end;
-deletearray $messageboardpost$[1],$messageboardpostnumber;
-deletearray $messageboardpostdate$[1],$messageboardpostnumber;
-deletearray $messageboardpostname$[1],$messageboardpostnumber;
-deletearray $mymessage[1],$messageboardpostnumber;
-set $messageboardpostnumber,0;
-end;
-
-OnFri1200:
-if(($rotation == 1)) end;
-deletearray $messageboardpost$[1],$messageboardpostnumber;
-deletearray $messageboardpostdate$[1],$messageboardpostnumber;
-deletearray $messageboardpostname$[1],$messageboardpostnumber;
-deletearray $mymessage[@tempview],@tempview;
-set $messageboardpostnumber,0;
-end;
-}
-
-function script F_gmresetcheck {
-set @tempcheck,0;
-L_top:
-set @tempcheck,@tempcheck+1;
-if(($gmboardresetvoted[@tempview] == 1)) goto L_votecheck;
-if(($gmboardresetvoted[@tempview] == 0)) return;
-goto L_top;
-end;
-
-L_votecheck:
-set @tempcheckid,0;
-set @tempcheckid,getcharid(0);
-if(($gmboardresetvoteid[@tempview] != @tempcheckid)) goto L_top;
-if(($gmboardresetvoteid[@tempview] == @tempcheckid)) goto L_voted;
-end;
-}
-
-function script F_gmmessage {
-set @tempview,0;
-L_top:
-set @tempview,@tempview+1;
-mes "Posted By: "+$gmmessageboardpostname$[@tempview]+".";
-mes "On: "+$gmmessageboardpostdate$[@tempview]+".";
-mes $gmmessageboardpost$[@tempview]+".";
-menu "Next Message",L_top2;
-
-L_top2:
-if(($gmmessageboardpostnumber > @tempview)) goto L_top;
-close;
-}
-
-function script F_message {
-set @tempview,0;
-L_top:
-set @tempview,@tempview+1;
-mes "Posted By: "+$messageboardpostname$[@tempview]+".";
-mes "On: "+$messageboardpostdate$[@tempview]+".";
-mes $messageboardpost$[@tempview]+".";
-next;
-if(($mymessage[@tempview] == 5) && (getgmlevel(99)>0)) menu "Next Message",L_top2,"Delete My Message",L_delmy,"Edit my message",L_editmy,"Delete This message",L_Del;
-if((getgmlevel(99)>0)) menu "Next Message",L_top2,"Delete This message",L_Del;
-if(($mymessage[@tempview] == 5)) menu "Next Message",L_top2,"Delete My Message",L_delmy,"Edit my message",L_editmy;
-menu "Next message",L_top2;
-close;
-
-L_editmy:
-mes "Are you sure?";
-next;
-menu "Yes",L_editmyy,"No",L_editmyn;
-
-L_editmyy:
-mes "what do you want your new message to be?";
-next;
-mes "Current message!";
-mes $messageboardpost$[@tempview];
-set @tempeditmsg$,0;
-input @tempeditmsg$;
-next;
-mes "is this what you want?";
-mes @tempeditmsg$;
-next;
-menu "Yes!",L_editmyyy,"No.",L_editmyyn;
-
-L_editmyyy:
-deletearray $messageboardpost$[@tempview],@tempview;
-set $messageboardpost$[@tempview],@tempeditmsg$;
-mes "Here is what your new message looks like.";
-next;
-mes "Posted By: "+$messageboardpostname$[@tempview]+".";
-mes "On: "+$messageboardpostdate$[@tempview]+".";
-mes $messageboardpost$[@tempview]+".";
-close2;
-set @tempview,0;
-end;
-
-L_editmyn:
-Mes "So be it.";
-set @tempview,0;
-close;
-
-L_editmyyn:
-mes "So be it!";
-set @tempeditmsg$,0;
-set @tempview,0;
-close;
-
-L_delmy:
-mes "Are you sure...?";
-next;
-menu "Yes",L_delmyy,"No thanks.",L_delmyn;
-
-L_delmyy:
-deletearray $messageboardpost$[@tempview],@tempview;
-deletearray $messageboardpostname$[@tempview],@tempview;
-deletearray $messageboardpostdate$[@tempview],@tempview;
-deletearray $mymessage[@tempview],@tempview;
-deletearray $messageboardeditdate$[@tempview],@tempview;
-set $messageboardpostnumber,$messageboardpostnumber-1;
-set @tempview,0;
-mes "It is done.";
-close;
-
-L_delmyn:
-mes "Come back soon.";
-set @tempview,0;
-close;
-
-L_top2:
-if(($messageboardpostnumber > @tempview)) goto L_top;
-close;
-
-L_Del:
-mes "Are you sure?";
-next;
-menu "Yes",L_Dely,"No",L_Deln;
-
-L_Dely:
-deletearray $messageboardpost$[@tempview],@tempview;
-deletearray $messageboardpostname$[@tempview],@tempview;
-deletearray $messageboardpostdate$[@tempview],@tempview;
-deletearray $mymessage[@tempview],@tempview;
-deletearray $messageboardeditdate$[@tempview],@tempview;
-set $messageboardpostnumber,$messageboardpostnumber-1;
-mes "It is done.";
-set @tempview,0;
-close;
-
-L_Deln:
-mes "Come back soon!";
-set @tempview,0;
-close;
+geffen.gat,122,102,4 script Message Man 774,{ +mes "[Robert]"; +mes "Hello, I am here to serve you. Enjoy my service. ^_-"; +next; +mes "[Robert]"; +mes "Please keep in mind, that all messages are wiped once every two days"; +mes "-Msg From Creator- In new version this will be set able, look forward to this! -End Msg From Creator-"; +next; +L_Menu01: +mes "[Robert]"; +mes "What would you like to do??"; +next; +if((getgmlevel(0) >= 90)) menu "Public board",L_pubgmmenu,"Gm Board",L_gmmenu,"Close Public Board",L_clospub,"Open Public Board",L_openpub; +if(($messagepubclose == 1)) goto L_pubclosed; +menu "Read messages!",L_readmsg,"Post a message!",L_Postmsg,"Leave",L_leave; +L_pubgmmenu: +if(($messagepubclose == 1)) goto L_pubclosed; +menu "Re-set the rotation",L_setrot,"Reset Message",L_Clearmsgs,"Read messages!",L_readmsg,"Post a message!",L_Postmsg,"Leave",L_leave; +L_gmmenu: +menu "Read messages!",L_gmboardread,"Post a Message!",L_gmboardpost,"Reset Messages",L_gmboardreset; + +L_openpub: +mes "[Robert]"; +mes "Are you sure?"; +menu "Yes",-,"No",L_openpubn; +mes "[Robert]"; +mes "It is done."; +close2; +set $messagepubclose,0; +end; + +L_openpubn: +mes "[Robert]"; +mes "Very well it shall remain closed."; +close; + +L_pubclosed: +mes "[Robert]"; +mes "Im sorry. The public boards are currently Closed."; +close; + +L_clospub: +mes "[Robert]"; +mes "Are you sure?"; +next; +menu "Yes.",-,"No",L_closepubn; +mes "[Robert]"; +mes "Very well I will not allow anyone into the public board."; +close2; +set $messagepubclose,1; +end; + +L_closepubn: +mes "[Robert]"; +mes "Have a nice day"; +close; + +L_gmboardreset: +mes "[Robert]"; +mes "This will require atleast 2 GM's approval to reset the gm board."; +mes "-Msg From Creator- This is bugged same gm can vote twice. Planned to revise in next version. -End Msg From Creator-"; +next; +menu "Vote for reset.",L_gmboardresetvote,"Back to main.",L_Menu01,"Leave.",L_leave; + +L_gmboardresetvote: +callfunc "F_gmresetcheck"; +set @tempid,getcharid(0); +set $gmboardresetvotenumb,$gmboardresetvotenumb+1; +set $gmboardresetvoted[$gmboardresetvotenumb],1; +set $gmboardresetvoteid[$gmboardresetvotenumb],@tempid; +set @tempid,0; +set $gmboardreset,$gmboardreset-1; +mes "[Robert]"; +mes "Thank you."; +next; +if(($gmboardreset == 0)) goto L_gmresetdone; +if(($gmboardreset >= 1)) goto L_gmresetnotdone; +close; + +L_gmresetdone: +deletearray $gmmessageboardpost$[1],$gmmessageboardpostnumber; +deletearray $gmmessageboardpostdate$[1],$gmmessageboardpostnumber; +deletearray $gmmessageboardpostname$[1],$gmmessageboardpostnumber; +deletearray $gmmessageboardeditdate$[1],$gmmessageboardpostnumber; +deletearray $gmboardresetvoted[1],$gmboardresetvotenumber; +deletearray $gmboardresetvoted[1],$gmboardresetvotenumber; +deletearray $gmboardresetvoteid[1],$gmboardresetvotenumber; +set $gmboardresetvotenumber,0; +set $gmboardreset,2; +mes "[Robert]"; +mes "The reset has been done."; +close; + +L_gmresetnotdone: +mes "[Robert]"; +mes "There needs to be "+$gmboardreset+" more gm(s) approval to do the reset."; +close; + +L_gmboardread: +if(($gmmessageboardpostnumber == 0)) goto L_msgno; +callfunc "F_gmmessage"; +end; + +L_gmboardpost: +if(($gmmessageboardpostnumber >= 127)) goto L_postmsgyestm; +set @gmmessageboardpostername$,strcharinfo(0); +set @gmmessageboarddate$,gettimestr("%Y-%m/%d %H:%M:%S",21); +set $gmmessageboardpostnumber,$gmmessageboardpostnumber+1; +input @gmmsgboardmsgt$; +set $gmmessageboardpost$[$gmmessageboardpostnumber],@gmmsgboardmsgt$; +set $gmmessageboardpostdate$[$gmmessageboardpostnumber],@gmmessageboarddate$; +set $gmmessageboardpostname$[$gmmessageboardpostnumber],@gmmessageboardpostername$; +mes "[Robert]"; +mes "Here is what your message looks like"; +next; +mes "Posted by: "+$gmmessageboardpostname$[$gmmessageboardpostnumber]+"."; +mes "On: "+$gmmessageboardpostdate$[$gmmessageboardpostnumber]+"."; +mes $gmmessageboardpost$[$gmmessageboardpostnumber]; +close; + + +L_setrot: +set $@determinedayrotation,gettime(4); //this determines the day rotation for clearing messages. +if(($@determinedayrotation == 0)) set $rotation,0; +if(($@determinedayrotation == 1)) set $rotation,1; +if(($@determinedayrotation == 2)) set $rotation,0; +if(($@determinedayrotation == 3)) set $rotation,1; +if(($@determinedayrotation == 4)) set $rotation,0; +if(($@determinedayrotation == 5)) set $rotation,1; +if(($@determinedayrotation == 6)) set $rotation,0; +mes "It is done."; +close; + +L_Clearmsgs: +mes "[Robert]"; +mes "Are you sure?"; +next; +menu "Yes",L_clearmsgsy,"No thanks.",L_Menu01; + +L_clearmsgsy: +deletearray $messageboardpost$[1],$messageboardpostnumber; +deletearray $messageboardpostdate$[1],$messageboardpostnumber; +deletearray $messageboardpostname$[1],$messageboardpostnumber; +deletearray $messageboardeditdate$[1],$messageboardpostnumber; +deletearray $mymessage[1],$messageboardpostnumber; +set $messageboardpostnumber,0; +mes "[Robert]"; +mes "It is done."; +close; + +L_leave: +close; + +L_Postmsg: +mes "[Robert]"; +mes "What do you want to say in your message?"; +next; +set @msgboardmsgt$,0; +input @msgboardmsgt$; +mes "[Robert]"; +mes "are you sure this is the message you want?"; +mes @msgboardmsgt$; +next; +menu "Yes!",L_postmsgyes,"No let me re-do it!",L_Postmsg,"Ive changed my mind let me leave.",lleave; + +L_postmsgyes: +if(($messageboardpostnumber >= 127)) goto L_postmsgyestm; +set @messageboardpostername$,strcharinfo(0); +set @messageboarddate$,gettimestr("%Y-%m/%d %H:%M:%S",21); +set $messageboardpostnumber,$messageboardpostnumber+1; +set @mymessage2,$messageboardpostnumber; +set $mymessage[$messageboardpostnumber],5; +set $messageboardpost$[$messageboardpostnumber],@msgboardmsgt$; +set $messageboardpostdate$[$messageboardpostnumber],@messageboarddate$; +set $messageboardpostname$[$messageboardpostnumber],@messageboardpostername$; +mes "[Robert]"; +mes "here is what your message looks like"; +next; +mes "Posted by: "+$messageboardpostname$[$messageboardpostnumber]+"."; +mes "On: "+$messageboardpostdate$[$messageboardpostnumber]+"."; +mes $messageboardpost$[$messageboardpostnumber]; +close; + +L_postmsgyestm: +set @mesboardmsgt$,0; +mes "[Robert]"; +mes "Im sorry your going to have to wait till more space opens up for messages, it should be in 1 or 2 days =)"; +close; + +lleave: +deletearray $messageboardpost$[@tempview],@tempview; +deletearray $messageboardpostname$[@tempview],@tempview; +deletearray $messageboardpostdate$[@tempview],@tempview; +deletearray $mymessage[@tempview],@tempview; +set $messageboardpostnumber,$messageboardpostnumber-1; +set @msgboardmsgt$,0; +close; + +L_readmsg: +if(($messageboardpostnumber == 0)) goto L_msgno; +callfunc "F_message"; +end; + +L_msgno: +mes "[Robert]"; +mes "There are currently no messages."; +close; + +OnInit: +set $gmboardreset,2; +set $gmboardresetvotenumb,0; +end; + +OnInterIfInitOnce: +set $@determinedayrotation,gettime(4); //this determines the day rotation for clearing messages. +if(($@determinedayrotation == 0)) set $rotation,0; +if(($@determinedayrotation == 1)) set $rotation,1; +if(($@determinedayrotation == 2)) set $rotation,0; +if(($@determinedayrotation == 3)) set $rotation,1; +if(($@determinedayrotation == 4)) set $rotation,0; +if(($@determinedayrotation == 5)) set $rotation,1; +if(($@determinedayrotation == 6)) set $rotation,0; +end; + + +OnSun1200: +if(($rotation == 1)) end; +deletearray $messageboardpost$[1],$messageboardpostnumber; +deletearray $messageboardpostdate$[1],$messageboardpostnumber; +deletearray $messageboardpostname$[1],$messageboardpostnumber; +deletearray $mymessage[1],$messageboardpostnumber; +set $messageboardpostnumber,0; +end; + +OnSat1200: +if(($rotation == 0)) end; +deletearray $messageboardpost$[1],$messageboardpostnumber; +deletearray $messageboardpostdate$[1],$messageboardpostnumber; +deletearray $messageboardpostname$[1],$messageboardpostnumber; +deletearray $mymessage[1],$messageboardpostnumber; +set $messageboardpostnumber,0; +end; + +OnMon1200: +if(($rotation == 1)) end; +deletearray $messageboardpost$[1],$messageboardpostnumber; +deletearray $messageboardpostdate$[1],$messageboardpostnumber; +deletearray $messageboardpostname$[1],$messageboardpostnumber; +deletearray $mymessage[1],$messageboardpostnumber; +set $messageboardpostnumber,0; +end; + +OnTue1200: +if(($rotation == 0)) end; +deletearray $messageboardpost$[1],$messageboardpostnumber; +deletearray $messageboardpostdate$[1],$messageboardpostnumber; +deletearray $messageboardpostname$[1],$messageboardpostnumber; +deletearray $mymessage[1],$messageboardpostnumber; +set $messageboardpostnumber,0; +end; + +OnWed1200: +if(($rotation == 1)) end; +deletearray $messageboardpost$[1],$messageboardpostnumber; +deletearray $messageboardpostdate$[1],$messageboardpostnumber; +deletearray $messageboardpostname$[1],$messageboardpostnumber; +deletearray $mymessage[1],$messageboardpostnumber; +set $messageboardpostnumber,0; +end; + +OnThu1200: +if(($rotation == 0)) end; +deletearray $messageboardpost$[1],$messageboardpostnumber; +deletearray $messageboardpostdate$[1],$messageboardpostnumber; +deletearray $messageboardpostname$[1],$messageboardpostnumber; +deletearray $mymessage[1],$messageboardpostnumber; +set $messageboardpostnumber,0; +end; + +OnFri1200: +if(($rotation == 1)) end; +deletearray $messageboardpost$[1],$messageboardpostnumber; +deletearray $messageboardpostdate$[1],$messageboardpostnumber; +deletearray $messageboardpostname$[1],$messageboardpostnumber; +deletearray $mymessage[@tempview],@tempview; +set $messageboardpostnumber,0; +end; +} + +function script F_gmresetcheck { +set @tempcheck,0; +L_top: +set @tempcheck,@tempcheck+1; +if(($gmboardresetvoted[@tempview] == 1)) goto L_votecheck; +if(($gmboardresetvoted[@tempview] == 0)) return; +goto L_top; +end; + +L_votecheck: +set @tempcheckid,0; +set @tempcheckid,getcharid(0); +if(($gmboardresetvoteid[@tempview] != @tempcheckid)) goto L_top; +if(($gmboardresetvoteid[@tempview] == @tempcheckid)) goto L_voted; +end; +} + +function script F_gmmessage { +set @tempview,0; +L_top: +set @tempview,@tempview+1; +mes "Posted By: "+$gmmessageboardpostname$[@tempview]+"."; +mes "On: "+$gmmessageboardpostdate$[@tempview]+"."; +mes $gmmessageboardpost$[@tempview]+"."; +menu "Next Message",L_top2; + +L_top2: +if(($gmmessageboardpostnumber > @tempview)) goto L_top; +close; +} + +function script F_message { +set @tempview,0; +L_top: +set @tempview,@tempview+1; +mes "Posted By: "+$messageboardpostname$[@tempview]+"."; +mes "On: "+$messageboardpostdate$[@tempview]+"."; +mes $messageboardpost$[@tempview]+"."; +next; +if(($mymessage[@tempview] == 5) && (getgmlevel(99)>0)) menu "Next Message",L_top2,"Delete My Message",L_delmy,"Edit my message",L_editmy,"Delete This message",L_Del; +if((getgmlevel(99)>0)) menu "Next Message",L_top2,"Delete This message",L_Del; +if(($mymessage[@tempview] == 5)) menu "Next Message",L_top2,"Delete My Message",L_delmy,"Edit my message",L_editmy; +menu "Next message",L_top2; +close; + +L_editmy: +mes "Are you sure?"; +next; +menu "Yes",L_editmyy,"No",L_editmyn; + +L_editmyy: +mes "what do you want your new message to be?"; +next; +mes "Current message!"; +mes $messageboardpost$[@tempview]; +set @tempeditmsg$,0; +input @tempeditmsg$; +next; +mes "is this what you want?"; +mes @tempeditmsg$; +next; +menu "Yes!",L_editmyyy,"No.",L_editmyyn; + +L_editmyyy: +deletearray $messageboardpost$[@tempview],@tempview; +set $messageboardpost$[@tempview],@tempeditmsg$; +mes "Here is what your new message looks like."; +next; +mes "Posted By: "+$messageboardpostname$[@tempview]+"."; +mes "On: "+$messageboardpostdate$[@tempview]+"."; +mes $messageboardpost$[@tempview]+"."; +close2; +set @tempview,0; +end; + +L_editmyn: +Mes "So be it."; +set @tempview,0; +close; + +L_editmyyn: +mes "So be it!"; +set @tempeditmsg$,0; +set @tempview,0; +close; + +L_delmy: +mes "Are you sure...?"; +next; +menu "Yes",L_delmyy,"No thanks.",L_delmyn; + +L_delmyy: +deletearray $messageboardpost$[@tempview],@tempview; +deletearray $messageboardpostname$[@tempview],@tempview; +deletearray $messageboardpostdate$[@tempview],@tempview; +deletearray $mymessage[@tempview],@tempview; +deletearray $messageboardeditdate$[@tempview],@tempview; +set $messageboardpostnumber,$messageboardpostnumber-1; +set @tempview,0; +mes "It is done."; +close; + +L_delmyn: +mes "Come back soon."; +set @tempview,0; +close; + +L_top2: +if(($messageboardpostnumber > @tempview)) goto L_top; +close; + +L_Del: +mes "Are you sure?"; +next; +menu "Yes",L_Dely,"No",L_Deln; + +L_Dely: +deletearray $messageboardpost$[@tempview],@tempview; +deletearray $messageboardpostname$[@tempview],@tempview; +deletearray $messageboardpostdate$[@tempview],@tempview; +deletearray $mymessage[@tempview],@tempview; +deletearray $messageboardeditdate$[@tempview],@tempview; +set $messageboardpostnumber,$messageboardpostnumber-1; +mes "It is done."; +set @tempview,0; +close; + +L_Deln: +mes "Come back soon!"; +set @tempview,0; +close; }
\ No newline at end of file diff --git a/npc/custom/eAAC_Scripts/quest_warper.txt b/npc/custom/eAAC_Scripts/quest_warper.txt index 24b61f0de..bfd876060 100644 --- a/npc/custom/eAAC_Scripts/quest_warper.txt +++ b/npc/custom/eAAC_Scripts/quest_warper.txt @@ -1,2136 +1,2136 @@ -//===== eAthena Script ============================================
-//= Quest Warper Script
-//===== By: =======================================================
-//= Old Warper 2 by Darkchild - Remade with quest format by DZeroX
-//= Huge Rewrite by Neouni
-//===== Current Version: ==========================================
-//= 2.0c
-//===== Compatible With: ==========================================
-//= Any eAthena Version
-//===== Description: ==============================================
-//= Warper that works only after locations are unlocked
-//===== Warning: ==================================================
-// you have to set the securitycode value [1337] the same as in
-// functions_kafras.txt if you changed it !!
-//===== Additional Comments: ======================================
-//= 1.0 - NPCs created
-//= 1.1 - Add Dungeons by sturm
-//= 1.2 - Add All char in account unlocked by ace_killer
-//= 1.3 - Add new 7 towns and 7 dungeons by escoteiro
-// - Correct bug jawaii town by escoteiro
-// - Remove some excessive warpras by escoteiro
-//= 1.4 - Rewrite of the Warpa system [Neouni]
-// - Corrected some bugs caused by autoconverting the old script
-//= 1.4a - Rewrite of menu to be custom for each player [Neouni]
-// - Dungeon listing rewrite
-// - Town listing rewrite
-// - GameMaster can Customise Main menu
-//= 1.4b - Pricing round [Neouni]
-// - GM menu added for pricing
-// - Town Warp pricing tags added
-// - Dungeon Warp pricing tags added
-//= 1.5 - storage functions pricing [Neouni]
-// - storage pricing added
-// - kafra points setting added
-// - kafra storage code security added
-// - Healing scripts pricing added
-// - Heal Part script added
-//= 1.6 - Dungeon warp [Neouni] (beta only)
-// - added option to add a extra fee for going down deeper into dungeon
-// partly by rebuilding the dungeon warping into variable menu's
-//= 1.6a - alot of fixes for beta release [Neouni] (public release)
-// - fixed syntax problems
-// - fixed missing pyramid gats in @DGat$ array
-// - removed the culver level 5 that didn't exist
-// and caused quite alot of problems (i didn't check while converting)
-//-1.7 - Readability of Dungeon menu building increased [Neouni]
-// - Thanatos Tower & Louyang Dungeon added
-//-1.8 - changed around unlock variables [Neouni]
-// - Moved warp variables to mark what you have unlocked to an binary array in login based permanent variable
-// (warp variables are saved in login database, so all charservers have these unlocked)
-// - Town Warp unlock array max 21/(unknown max) items used instead of max account #variables 32 !
-// - Dungeon Warp unlock array 28/(unknown max) items used instead of max account #variables 32 !
-// - (max login ##variables = 16, i used 3)
-// - old variables are cleared on next save
-// - Extra Variable clear added for every character, just in case (request by Terces)
-//-1.8a - Show ammount of users on map [Neouni]
-// - Default = off, enable in GM menu
-// - Requested by escoteiro
-//-1.8b - Small typo fixed in stampcard script [Neouni]
-// - Reported by escoteiro
-//-1.9 - Making it more edit friendly [Neouni]
-// - Made Dungeon warp arrays more readable & editable (QWS_Darray)
-// - Made town warp arrays more readable & editable (QWS_Tarray)
-//-2.0 - Special Warp menu added [Neouni]
-// - when all towns and dungeons are collected a new option on the main menu will show
-// - it will only show when you setup the mapname of the warp !
-// - requested by escoteiro
-// - several bugs fixed
-//-2.0a - Dungeon Level Limit & Split dungeon fees
-// - Limits dungeon based on Depth, access special setup menu thru GM-Menu
-// - Dungeon fees split up based on Basic , Advanced & Overseas
-// - Old Dungeon fee system removed, all dungeon fees now set to 0
-//-2.0b - Special warpname menu option name bug fixed
-//-2.0c - Parenthesis fixes [KarLaeda]
-//=================================================================
-
-//========================Function=&=Script========================
-
-
-function script Q_Warpra {
-// Quick hack for backwards compatibility pre 1.8
-if (##QWS_UP < 18) callfunc "QWS_BackComp";
-// Extra clear variables because marker is saved on all char servers and variables can be on multiple servers
-if (QWS_ExtraVARClear < 18) callfunc "Extra_Variable_Clear";
-
- mes "[Warpra]";
- mes "Hello,";
- mes "I can warp you to any town or dungeon, but you need to unlock them first.";
- mes "To unlock them, you have to visit us.";
- mes "What do you need?";
-
- if(getarg(0) == 0) callfunc "QWS_MMarray",0;
- if(getarg(0) == 1) callfunc "QWS_MMarray",1;
-
- set @MMenu,select(@Mmenulist$[0],@Mmenulist$[1],@Mmenulist$[2],@Mmenulist$[3],@Mmenulist$[4],@Mmenulist$[5],@Mmenulist$[6],@Mmenulist$[7],@Mmenulist$[8],@Mmenulist$[9],@Mmenulist$[10],@Mmenulist$[11]);
-
- switch(@Mmenuref[@MMenu-1]+1){
- case 1:
- goto GM_Menu;
- case 2:
- warp $QW_SP_WarpMap$, $QW_SP_WarpX, $QW_SP_WarpY;
- close2;
- debugmes "Please check your special warp menu settings on the Warpra";
- end;
- case 3:
- goto L_town;
- case 4:
- goto L_dungeon;
- case 5:
- goto L_FewWarps;
- case 6:
- goto L_NoUnlock;
- case 7:
- goto L_heal_Full;
- case 8:
- goto L_heal_Part;
- case 9:
- goto L_Storage;
- case 10:
- goto L_GStorage;
- case 11:
- goto L_end;
- default:
- goto L_end;
-}
-
-//=====================GM-Menu=Functions===========================
-
-GM_Menu:
-next;
-//----------------Town-Warp
- if ($QW_TW_OFF == 0) mes "Town warping = ^00FF00 On ^000000";
- if ($QW_TW_OFF == 1) mes "Town warping = ^FF0000 Off ^000000";
-//----------------Dungeon-Warp
- if ($QW_DW_OFF == 0) mes "Dungeon warping = ^00FF00 On ^000000";
- if ($QW_DW_OFF == 1) mes "Dungeon warping = ^FF0000 Off ^000000";
-//----------------Dungeon-Depth-Limit
- if ($QW_DL == 1) mes "Dungeon Depth limit is ^00FF00 On ^000000";
- if ($QW_DL == 0) mes "Dungeon Depth limit is ^FF0000 Off ^000000";
- mes "If on Dungeon Depth limit is set to ^0000FF"+$QW_DDL+"^000000";
-//----------------ShowMapUsers
- if ($QW_MapUserShow == 1) mes "Show Map Users = ^00FF00 On ^000000";
- if ($QW_MapUserShow == 0) mes "Show Map Users = ^FF0000 Off ^000000";
-//----------------Healfull
- if ($QW_HF == 1) mes "Healing full = ^00FF00 On ^000000";
-//----------------Healpart
- if ($QW_HP == 1) mes "Healing partly = ^00FF00 On ^000000";
- if ($QW_HF == 0 && $QW_HP == 0) mes "Healing = ^FF0000 Off ^000000";
-//----------------Storage
- if ($QW_Stor == 1) mes "Storage = ^00FF00 On ^000000";
- if ($QW_Stor == 0) mes "Storage = ^FF0000 Off ^000000";
-//----------------GuildStorage
- if ($QW_GStor == 1) mes "Guild Storage = ^00FF00 On ^000000";
- if ($QW_GStor == 0) mes "Guild Storage = ^FF0000 Off ^000000";
-//----------------KafraPoints
- if ($QW_KPoint == 1) mes "Kafra points collect = ^00FF00 On ^000000";
- if ($QW_KPoint == 0) mes "Kafra points collect = ^FF0000 Off ^000000";
-//----------------GMmenu
- switch(select("Town Warping","Dungeon Warping","Dungeon Level Limit","Show Map Users","Healing full","Healing partly","Storage","Guild Storage","Kafra points collect","Set Prices","Special Warp","Exit")) {
-
-// Using callsub and a small check to not make 1 part of the script set it on and the other turning it off again
-
-case 1:
- if ($QW_TW_OFF == 0) {
- set $QW_TW_OFF,1;
- goto GM_Menu;
- } else
- set $QW_TW_OFF,0;
- goto GM_Menu;
-case 2:
- if ($QW_DW_OFF == 0) {
- set $QW_DW_OFF,1;
- goto GM_Menu;
- } else
- set $QW_DW_OFF,0;
- goto GM_Menu;
-case 3:
- goto DungeonLevelLimit;
-case 4:
- if ($QW_MapUserShow == 0) {
- set $QW_MapUserShow,1;
- goto GM_Menu;
- } else
- set $QW_MapUserShow,0;
- goto GM_Menu;
-case 5:
- if ($QW_HF == 0) {
- set $QW_HF,1;
- set $QW_HP,0;
- goto GM_Menu;
- } else
- set $QW_HF,0;
- goto GM_Menu;
-case 6:
- if ($QW_HP == 0) {
- set $QW_HP,1;
- set $QW_HF,0;
- goto GM_Menu;
- } else
- set $QW_HP,0;
- goto GM_Menu;
-case 7:
- if ($QW_Stor == 0) {
- set $QW_Stor,1;
- goto GM_Menu;
- } else
- set $QW_Stor,0;
- goto GM_Menu;
-case 8:
- if ($QW_GStor == 0) {
- set $QW_GStor,1;
- goto GM_Menu;
- } else
- set $QW_GStor,0;
- goto GM_Menu;
-case 9:
- if ($QW_KPoint == 0) {
- set $QW_KPoint,1;
- goto GM_Menu;
- } else
- set $QW_KPoint,0;
- goto GM_Menu;
-case 10:
- goto Setprice;
-case 11:
- goto SpecialWarpMenu;
-default:
- close;
- end;
-}
-
-
-//======================GM-Menu=Pricing============================
-
-Setprice:
- if ($QW_DW_FEE != 0) set $QW_DW_FEE,0;
- next;
- mes "Scroll thru the list to see all the options";
-//----------------Warp-Basic-Price
- if ($QW_BW_PRICE != 0) mes "Basic - Warps are = ^00FF00 "+$QW_BW_PRICE+" ^000000";
- if ($QW_BW_PRICE == 0) mes "Basic - Warps are = ^FF0000 Free ^000000";
-//----------------Warp-Advanced-Price
- if ($QW_AW_PRICE != 0) mes "Advanced - Warps are = ^00FF00 "+$QW_AW_PRICE+" ^000000";
- if ($QW_AW_PRICE == 0) mes "Advanced - Warps are = ^FF0000 Free ^000000";
-//----------------Warp-Oversea-Price
- if ($QW_OW_PRICE != 0) mes "Overseas - Warps are = ^00FF00 "+$QW_OW_PRICE+" ^000000";
- if ($QW_OW_PRICE == 0) mes "Overseas - Warps are = ^FF0000 Free ^000000";
-//----------------Basic-Dungeon-Level-Warp-Fee
- if ($QW_BW_FEE != 0) mes "Basic Dungeon level warp fee = ^00FF00 "+$QW_BW_FEE+" ^000000 zeny per level";
- if ($QW_BW_FEE == 0) mes "Basic Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level";
-//----------------Advanced-Dungeon-Level-Warp-Fee
- if ($QW_AW_FEE != 0) mes "Advanced Dungeon level warp fee = ^00FF00 "+$QW_AW_FEE+" ^000000 zeny per level";
- if ($QW_AW_FEE == 0) mes "Advanced Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level";
-//----------------Overseas-Dungeon-Level-Warp-Fee
- if ($QW_OW_FEE != 0) mes "Overseas Dungeon level warp fee = ^00FF00 "+$QW_OW_FEE+" ^000000 zeny per level";
- if ($QW_OW_FEE == 0) mes "Overseas Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level";
-//----------------Heal-Full
- if ($QW_HF_PRICE != 0) mes "Full Healing = ^00FF00 "+$QW_HF_PRICE+" ^000000";
- if ($QW_HF_PRICE == 0) mes "Full Healing = ^FF0000 Free ^000000";
-//----------------Heal-Part
- if ($QW_HP_H_PRICE != 0) mes "^FF0000HP ^000000Part Healing = ^00FF00 "+$QW_HP_H_PRICE+" ^000000 a point";
- if ($QW_HP_H_PRICE == 0) mes "^FF0000HP ^000000Part Healing = ^FF0000 Free ^000000";
- if ($QW_HP_S_PRICE != 0) mes "^0000FFSP ^000000Part Healing = ^00FF00 "+$QW_HP_S_PRICE+" ^000000 a point";
- if ($QW_HP_S_PRICE == 0) mes "^0000FFSP ^000000Part Healing = ^FF0000 Free ^000000";
-//----------------Storage
- if ($QW_S_PRICE != 0 && $QW_S_PRICE != 60) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000";
- if ($QW_S_PRICE == 0) mes "Storage = ^FF0000 Free ^000000";
- if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000";
-//----------------Guild-Storage
- if ($QW_GS_PRICE != 0) mes "Guild Storage = ^00FF00 "+$QW_GS_PRICE+" ^000000";
- if ($QW_GS_PRICE == 0) mes "Guild Storage = ^FF0000 Free ^000000";
-
- switch(select("Basic - Warps","Advanced - Warps","Overseas - Warps","Basic Dungeon warp fee","Advanced Dungeon warp fee","Overseas Dungeon warp fee","Full Healing","Part Healing","Storage","Guild Storage","Back","Exit")) {
-
-case 1:
- next;
- if ($QW_BW_PRICE != 0) mes "Basic - Warps are = ^00FF00 "+$QW_BW_PRICE+" ^000000";
- if ($QW_BW_PRICE == 0) mes "Basic - Warps are = ^FF0000 Free ^000000";
- mes "Basic - Warps are starter towns and related dungeons";
- input $QW_BW_PRICE;
- goto Setprice;
-
-case 2:
- next;
- if ($QW_AW_PRICE != 0) mes "Advanced - Warps are = ^00FF00 "+$QW_AW_PRICE+" ^000000";
- if ($QW_AW_PRICE == 0) mes "Advanced - Warps are = ^FF0000 Free ^000000";
- mes "Advanced - Warps are towns and dungeons on the same island but not close to any starter town";
- input $QW_AW_PRICE;
- goto Setprice;
-
-case 3:
- next;
- if ($QW_OW_PRICE != 0) mes "Overseas - Warps are = ^00FF00 "+$QW_OW_PRICE+" ^000000";
- if ($QW_OW_PRICE == 0) mes "Overseas - Warps are = ^FF0000 Free ^000000";
- mes "Overseas - Warps are towns and dungeons overseas reachable by boat from alberta";
- input $QW_OW_PRICE;
- goto Setprice;
-
-case 4:
- next;
- if ($QW_BW_FEE != 0) mes "Basic Dungeon level warp fee = ^00FF00 "+$QW_BW_FEE+" ^000000 zeny per level";
- if ($QW_BW_FEE == 0) mes "Basic Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level";
- mes "Basic - Warps are starter town related dungeons";
- mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee";
- mes "These costs are on top of the regular Warp costs";
- input $QW_BW_FEE;
- goto Setprice;
-
-case 5:
- next;
- if ($QW_AW_FEE != 0) mes "Advanced Dungeon level warp fee = ^00FF00 "+$QW_AW_FEE+" ^000000 zeny per level";
- if ($QW_AW_FEE == 0) mes "Advanced Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level";
- mes "Advanced - Warps are dungeons not close to any starter town";
- mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee";
- mes "These costs are on top of the regular Warp costs";
- input $QW_AW_FEE;
- goto Setprice;
-
-case 6:
- next;
- if ($QW_OW_FEE != 0) mes "Overseas Dungeon level warp fee = ^00FF00 "+$QW_OW_FEE+" ^000000 zeny per level";
- if ($QW_OW_FEE == 0) mes "Overseas Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level";
- mes "Overseas - Warps are dungeons related to towns overseas reachable by boat from alberta";
- mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee";
- mes "These costs are on top of the regular Warp costs";
- input $QW_OW_FEE;
- goto Setprice;
-
-case 7:
- next;
- if ($QW_HF_PRICE != 0) mes "Full Healing = ^00FF00 "+$QW_HF_PRICE+" ^000000";
- if ($QW_HF_PRICE == 0) mes "Full Healing = ^FF0000 Free ^000000";
- mes "Instant full healing 1 price";
- input $QW_HF_PRICE;
- goto Setprice;
-
-case 8:
- next;
- if ($QW_HP_H_PRICE != 0) mes "^FF0000HP ^000000Part Healing = ^00FF00 "+$QW_HP_H_PRICE+" ^000000 a point";
- if ($QW_HP_H_PRICE == 0) mes "^FF0000HP ^000000Part Healing = ^FF0000 Free ^000000";
- if ($QW_HP_S_PRICE != 0) mes "^0000FFSP ^000000Part Healing = ^00FF00 "+$QW_HP_S_PRICE+" ^000000 a point";
- if ($QW_HP_S_PRICE == 0) mes "^0000FFSP ^000000Part Healing = ^FF0000 Free ^000000";
- mes "Healing price per 1 HP";
- mes "Healing price per 1 SP";
- mes "2 inputs, first HP then SP";
- input $QW_HP_H_PRICE;
- input $QW_HP_S_PRICE;
- goto Setprice;
-
-case 9:
- next;
- if ($QW_S_PRICE != 0 && $QW_S_PRICE != 60) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000";
- if ($QW_S_PRICE == 0) mes "Storage = ^FF0000 Free ^000000";
- if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000";
- mes "Storage cost, if set to 60 Kafra pricing will be handled";
- input $QW_S_PRICE;
- goto Setprice;
-
-case 10:
- next;
- if ($QW_GS_PRICE != 0) mes "Guild Storage = ^00FF00 "+$QW_GS_PRICE+" ^000000";
- if ($QW_GS_PRICE == 0) mes "Guild Storage = ^FF0000 Free ^000000";
- mes "Guild Storage, free on Guild Kafras";
- input $QW_GS_PRICE;
- goto Setprice;
-case 11:
- goto GM_Menu;
-default:
- close;
- end;
-}
-
-//======================Special=Warp=Menu==========================
-
-SpecialWarpMenu:
- if ($QW_SP_Warpname$ == "") set $QW_SP_Warpname$,"Special Warp";
- next;
- mes "Scroll down to see all the information";
- mes "The Special warp menu option will show in the main menu when all towns & dungeons are unlocked";
- mes "And when the map for special warping has been set";
- mes "menu option name set to ^0000FF"+$QW_SP_Warpname$+"^000000";
- if ($QW_SP_WarpMap$ == "") mes "map is currently ^FF0000not^000000 set, and Special warp menu is off";
- if ($QW_SP_WarpMap$ != "") mes "map is currently set to ^0000FF"+$QW_SP_WarpMap$+"^000000 and Special Warp menu is on";
- mes "coords are set to ^0000FF"+$QW_SP_WarpX+","+$QW_SP_WarpY+"^000000";
- switch(select("Set Special Warp name to show in menu", "Set WarpMap","Set Coords","Go Back to GM_Menu","Exit")){
-
-case 1:
- next;
- mes "set the name to show in the menu as option";
- input $QW_SP_Warpname$;
- goto SpecialWarpMenu;
-case 2:
- next;
- mes "set the map in the ^0000FFmapname.gat^000000 format";
- mes "when this warpmap is set the option for players will show once they meet the requirments";
- mes "to disable Special Warp Menu option clear this !";
- input $QW_SP_WarpMap$;
- goto SpecialWarpMenu;
-case 3:
- next;
- mes "First input = Xcoord";
- mes "Second input = Ycoord";
- input $QW_SP_WarpX;
- input $QW_SP_WarpY;
- goto SpecialWarpMenu;
-case 4:
- goto GM_Menu;
-default:
- close;
- end;
-}
-
-//======================Dungeon=Level=Limit========================
-DungeonLevelLimit:
- next;
- if ($QW_DL == 1) mes "Dungeon Depth limit is ^00FF00 On ^000000";
- if ($QW_DL == 0) mes "Dungeon Depth limit is ^FF0000 Off ^000000";
- mes "If^00FF00 On ^000000Dungeon Depth limit is set to ^0000FF"+$QW_DDL+"^000000";
-
- switch(select("Toggle Dungeon Depth Limit", "Set Dungeon Depth Limit","Go Back to GM_Menu","Exit")){
-
-case 1:
- if ($QW_DL == 0) {
- set $QW_DL,1;
- goto DungeonLevelLimit;
- } else
- set $QW_DL,0;
- goto DungeonLevelLimit;
-case 2:
- next;
- mes "set limit of Dungeon Depth 0 = entrance";
- mes "Depth 1 is a map connected to 0 and so on";
- mes "Shortest Route to map counts as depth";
- input $QW_DDL;
- goto DungeonLevelLimit;
-case 3:
- goto GM_Menu;
-default:
- close;
- end;
-}
-
-//===========================Towns=================================
-
-L_town:
- callfunc "QWS_Tarray";
-
-// Expected maximum is set to 25 items, if you add more options add more ",@Tmenulist$[xx]"
-
- set @TWMenu,select(@Tmenulist$[0],@Tmenulist$[1],@Tmenulist$[2],@Tmenulist$[3],@Tmenulist$[4],@Tmenulist$[5],@Tmenulist$[6],@Tmenulist$[7],@Tmenulist$[8],@Tmenulist$[9],@Tmenulist$[10],@Tmenulist$[11],@Tmenulist$[12],@Tmenulist$[13],@Tmenulist$[14],@Tmenulist$[15],@Tmenulist$[16],@Tmenulist$[17],@Tmenulist$[18],@Tmenulist$[19],@Tmenulist$[20],@Tmenulist$[21],@Tmenulist$[22],@Tmenulist$[23],@Tmenulist$[24]);
-
- if (@Tmenuref[@TWMenu-1] == 57005) goto L_end; // 57005='dead' in hex
-
- if(Zeny<@pTprice[@Tmenuref[@TWMenu-1]]) callsub L_Short_on_zeny,0;
-
- set Zeny, Zeny-@pTprice[@Tmenuref[@TWMenu-1]];
- if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@pTprice[@Tmenuref[@TWMenu-1]]/16);
- warp @pTmap$[@Tmenuref[@TWMenu-1]],@pTXcoords[@Tmenuref[@TWMenu-1]],@pTYcoords[@Tmenuref[@TWMenu-1]];
- close2; // this part safegaurds against errors/typos
- set Zeny, Zeny+@pTprice[@Tmenuref[@TWMenu-1]];
- end;
-
-//=========================Dungeons================================
-
-L_dungeon:
- callfunc "QWS_Darray";
-
-// Expected maximum is set to 35 items, if you add more options add more ",@Dmenulist$[xx]"
-
- set @DWMenu,select(@Dmenulist$[0],@Dmenulist$[1],@Dmenulist$[2],@Dmenulist$[3],@Dmenulist$[4],@Dmenulist$[5],@Dmenulist$[6],@Dmenulist$[7],@Dmenulist$[8],@Dmenulist$[9],@Dmenulist$[10],@Dmenulist$[11],@Dmenulist$[12],@Dmenulist$[13],@Dmenulist$[14],@Dmenulist$[15],@Dmenulist$[16],@Dmenulist$[17],@Dmenulist$[18],@Dmenulist$[19],@Dmenulist$[20],@Dmenulist$[21],@Dmenulist$[22],@Dmenulist$[23],@Dmenulist$[24],@Dmenulist$[25],@Dmenulist$[26],@Dmenulist$[27],@Dmenulist$[28],@Dmenulist$[29],@Dmenulist$[30],@Dmenulist$[31],@Dmenulist$[32],@Dmenulist$[33],@Dmenulist$[34]);
-
- if (@Dmenuref[@DWMenu-1] == 57005) goto L_end; // 57005='dead' in hex
- set @DwarpMenu, (@Dmenuref[@DWMenu-1]);
- callfunc "QWS_DLarray";
-
- next;
- mes "[Warpra]";
- mes "Please select where you want to go";
-
-// Expected maximum is set to 18 items, if you have dungeons with more levels add more ",@DWLmenulist$[xx]"
- set @DWLMenu,select(@DWLmenulist$[0], @DWLmenulist$[1], @DWLmenulist$[2], @DWLmenulist$[3], @DWLmenulist$[4], @DWLmenulist$[5], @DWLmenulist$[6], @DWLmenulist$[7], @DWLmenulist$[8], @DWLmenulist$[9], @DWLmenulist$[10], @DWLmenulist$[11], @DWLmenulist$[12], @DWLmenulist$[13], @DWLmenulist$[14], @DWLmenulist$[15], @DWLmenulist$[16], @DWLmenulist$[17]);
-
- if (@DWLmenuref[@DWLMenu-1] == 57005) goto L_end; // 57005='dead' in hex
-
- set @Darrayref, @DWLmenuref[@DWLMenu-1];
- set @warpprice, @pDprice[@Dmenuref[@DWMenu-1]]+(getd(@pDfee$[@Dmenuref[@DWMenu-1]])*(@DDepth[@Darrayref]));
-
- if(Zeny<@warpprice) callsub L_Short_on_zeny,1;
-
- set Zeny, Zeny-(@warpprice);
- if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@warpprice/16);
- warp @DGat$[@Darrayref],@DXcoords[@Darrayref],@DYcoords[@Darrayref];
- close2; // this part safegaurds against errors/typos
- set Zeny, Zeny+@pTprice[@Tmenuref[@DWMenu-1]];
- end;
-
-//=============================Healing=============================
-
-L_heal_Full:
- set @healfee, $QW_HF_PRICE;
- if(Zeny<@healfee) callsub L_Short_on_zeny,4;
- set Zeny, Zeny-@healfee;
- if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@healfee/500);
- next;
- mes "[Warpra]";
- mes "Close this window and I will Heal you.";
- close2;
- percentheal 100,100;
- end;
-
-L_heal_Part:
- set @healchoice,select("Full heal","Health Points only","Skill Points only","Exit");
- if (@healchoice == 1) callsub PHeal,1,1;
- if (@healchoice == 2) callsub PHeal,1,0;
- if (@healchoice == 3) callsub PHeal,0,1;
- goto L_end;
-
-PHeal:
- next;
- set @Hp, MaxHp-Hp;
- set @Sp, MaxSp-Sp;
- set @HpPrice, @hp*$QW_HP_H_PRICE;
- set @SpPrice, @sp*$QW_HP_S_PRICE;
- mes "[Warpra]";
- if(getarg(0) == 1) mes ""+@HpPrice+" Zeny for "+@Hp+" health points";
- if(getarg(1) == 1) mes ""+@SpPrice+" Zeny for "+@Sp+" skill points";
- set @total, @HpPrice+@SpPrice;
- mes "for a total of "+@total+" zeny";
- if (select("Heal me","Let me see the choices again")==2) goto L_heal_Part;
-
- if(getarg(0) == 1)set @HpPrice, (MaxHp-Hp)*$QW_HP_H_PRICE;
- if(getarg(1) == 1)set @SpPrice, (MaxSp-Sp)*$QW_HP_S_PRICE;
- set @healfee, @HpPrice+@SpPrice;
- if (getarg(0) == 1 && getarg(1) == 1 && Zeny<@healfee) goto Zeny_Short_Both;
- if (getarg(0) == 1 && Zeny<@healfee) goto Zeny_short_HP;
- if (getarg(1) == 1 && Zeny<@healfee) goto Zeny_short_SP;
- set Zeny, Zeny-@healfee;
- if (getarg(0) == 1 && getarg(1) == 1) percentheal 100,100;
- if (getarg(0) == 1) percentheal 100,0;
- if (getarg(1) == 1) percentheal 0,100;
- close;
- end;
-
-Zeny_Short_Both:
- mes "[Warpra]";
- mes "choose another option, you can afford both.";
- mes "I can heal as much as you can afford too.";
- if (select("OK","Exit") == 2) goto L_end;
- goto PHeal;
-
-Zeny_short_HP:
- mes "[Warpra]";
- mes "do you want me to partly heal your HP ?";
- if (select("Yes","No") == 2) goto L_end;
- set @Hp, Zeny/$QW_HP_H_PRICE;
- set @HpPrice, @Hp*$QW_HP_H_PRICE;
- if (@Hp == 1) mes "your not worth the effort";
- if (@Hp == 1) goto L_end;
- set Zeny, Zeny-@HpPrice;
- heal @Hp,0;
- close;
- end;
-
-Zeny_short_SP:
- mes "[Warpra]";
- mes "do you want me to partly heal your SP ?";
- if (select("Yes","No") == 2) goto L_end;
- set @Sp, Zeny/$QW_HP_S_PRICE;
- set @SpPrice, @Sp*$QW_HP_S_PRICE;
- if (@Sp == 1) mes "your not worth the effort";
- if (@Sp == 1) goto L_end;
- set Zeny, Zeny-@SpPrice;
- heal 0,@Sp;
- close;
- end;
-
-//=============================Storage=============================
-
-L_Storage:
- next;
- if(basicskillcheck(0) > 0 && getskilllv(1) < 6) goto L_StorageJBlow;
- set @fee, $QW_S_PRICE;
- if ($QW_S_PRICE == 60 && BaseJob == Job_Novice) set @fee, 30;
- if(Zeny<@fee) callsub L_Short_on_zeny,2;
- set Zeny, Zeny-@fee;
- if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@fee/5);
-
- mes "[Warpra]";
- mes "Close this window and i will open your storage.";
-
- callsub F_CheckKafCode; //check your storage password thru kafra coding, if set
-
- close2;
- openstorage;
- end;
-
-F_CheckKafCode:
-// you have to set the 1337 value the same as in functions_kafras.txt if you changed it !!
- if(#kafra_code==0) return;
- mes "Enter your storage password:";
- set @code_,0;
- input @code_;
- if(@code_ != #kafra_code-getcharid(3)-1337) {
- dispbottom "Wrong storage password.";
- close;
- }
- set @kafcode_try,0;
- set @code_,0;
- return;
-
-L_StorageJBlow:
- mes "[Warpra]";
- mes "I am sorry but you have to be at least Novice level 6 if you want to use the storage.";
- return;
-
-L_GStorage:
- if(@GID==0) goto L_NoGuild;
- if(Zeny<$QW_GS_PRICE) callsub L_Short_on_zeny,3;
- set Zeny, Zeny-$QW_GS_PRICE;
- if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + ($QW_GS_PRICE/5);
- next;
- mes "[Warpra]";
- mes "Close this window and i will open the ^5533FF" + GetGuildName(@GID) + "^000000 storage.";
- close2;
- guildopenstorage;
- end;
-
-L_NoGuild:
- next;
- mes "[Warpra]";
- mes "You are not a part of a guild I can't help you.";
- close;
- end;
-
-L_end:
- close;
- end;
-
-//============================Few=Warp=============================
-L_FewWarps:
- next;
- mes "[Warpra ]";
- mes "You need to unlock locations before they come available to you.";
- mes "To unlock a location talk to my colleagues all over the world.";
- mes "Each account got it's own stamp card.";
- mes "Want me to check what stamps you have collected so far ?.";
- if (select("Yes","No")==1) callsub stampcard;
- close;
- end;
-
-
-//============================No=Unlock============================
-
-L_NoUnlock:
- next;
- mes "[Warpra ]";
- mes "I don't unlock this location, my assistant deeper in the dungeon will unlock this place.";
- close;
- end;
-
-//=========================Short=On=Zeny===========================
-L_Short_on_zeny:
- next;
- if (getarg(0) == 0) mes "you don't seem to have "+@pTprice[@Tmenuref[@TWMenu-1]]+" zeny, to pay for the warp fee to "+@pTmenuitems$[@Tmenuref[@TWMenu-1]]+"";
- if (getarg(0) == 1) mes "you don't seem to have "+@warpprice+" zeny, to pay for the warp fee to "+@DLevelName$[@DWLmenuref[@DWLMenu-1]]+" at "+@pDmenuitems$[@Dmenuref[@DWMenu-1]]+"";
- if (getarg(0) == 2) mes "you don't seem to have "+@fee+" zeny, to pay for the storage fee";
- if (getarg(0) == 3) mes "you don't seem to have "+$QW_GS_PRICE+" zeny, to pay for the guild storage fee";
- if (getarg(0) == 4) mes "you don't seem to have "+@healfee+" zeny, to pay for your healing";
- close;
- end;
-
-//===========================Stamp=Card============================
-stampcard:
-// Counting of the ammount of places you have unlocked
- next;
- mes "Let me check what Towns you have";
-
- callfunc "QWS_TownStamps";
-
- mes "you collected^00FF00 "+@Tstamp+" of "+@MaxTstamp+" ^000000Towns.";
- if (@Tstamp == 15) mes "They say there is an island you can only get to when married";
- if (@Tstamp == 15) emotion 18;
- next;
-
- mes "Let me check what dungeons you have";
-
- callfunc "QWS_DungeonStamps";
-
- mes "you collected^00FF00 "+@Dstamp+" of "+@MaxDstamp+" ^000000Dungeons";
- mes "To unlock a dungeon, search for my colleague.";
- mes "You can usually find them near the middle or end of the dungeon";
- return;
-}
-
-function script QWS_TownStamps {
- set @Tstamp,0;
- set @MaxTstamp,21; //maximum number of towns
- set @binvalue,1;
- set @Tstamploop,0;
- do {
- if ((@binvalue & ##QWS_T_Unlock) == @binvalue) set @Tstamp,@Tstamp+1;
-
- set @binvalue, @binvalue *2;
- set @Tstamploop, @Tstamploop + 1;
-
-}while (@Tstamploop < @MaxTstamp);
-return;
-}
-
-function script QWS_DungeonStamps {
- set @Dstamp,0;
- set @MaxDstamp,29; //maximum number of dungeons
- set @binvalue,1;
- set @Dstamploop,0;
- do {
- if ((@binvalue & ##QWS_D_Unlock) == @binvalue) set @Dstamp,@Dstamp+1;
-
- set @binvalue, @binvalue *2;
- set @Dstamploop, @Dstamploop + 1;
-
-}while (@Dstamploop < @MaxDstamp);
-return;
-}
-
-//======================Main=Menu=Array============================
-
-function script QWS_MMarray {
-
-// Currently 9 items
-
- setarray @pMmenuitems$[0], "GameMaster Menu", $QW_SP_Warpname$, "Warp to Towns", "Warp to Dungeons", "Why so few Warps ?", "Why don't you Unlock this location ?", "Heal", "Heal", "Storage", "Guild Storage", "Cancel";
- set @Mi,0; // That's our loop counter.
- set @Mj,0; // That's the menu lines counter.
-//----------------GameMaster-Menu
- if (getgmlevel(80)) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if (getgmlevel(80)) set @Mmenuref[@Mj],@Mi;
- if (getgmlevel(80)) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------Special-Warp
- callfunc "QWS_TownStamps";
- callfunc "QWS_DungeonStamps";
- if (@Tstamp == @MaxTstamp && @Dstamp == @MaxDstamp && $QW_SP_WarpMap$ != "") {
- set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- set @Mmenuref[@Mj],@Mi;
- set @Mj,@Mj+1;
- }
- set @Mi,@Mi+1;
-//----------------Town-Warp
- if ($QW_TW_OFF == 0) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if ($QW_TW_OFF == 0) set @Mmenuref[@Mj],@Mi;
- if ($QW_TW_OFF == 0) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------Dungeon-Warp
- if ($QW_DW_OFF == 0) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if ($QW_DW_OFF == 0) set @Mmenuref[@Mj],@Mi;
- if ($QW_DW_OFF == 0) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------Why-So-Few-Warps
- set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- set @Mmenuref[@Mj],@Mi;
- set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------No-Unlock
- if (getarg(0) == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if (getarg(0) == 1) set @Mmenuref[@Mj],@Mi;
- if (getarg(0) == 1) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------Healfull
- if ($QW_HF == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if ($QW_HF == 1) set @Mmenuref[@Mj],@Mi;
- if ($QW_HF == 1) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------Healpart
- if ($QW_HP == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if ($QW_HP == 1) set @Mmenuref[@Mj],@Mi;
- if ($QW_HP == 1) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------Storage
- if ($QW_Stor == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if ($QW_Stor == 1) set @Mmenuref[@Mj],@Mi;
- if ($QW_Stor == 1) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------GuildStorage
- if ($QW_GStor == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if ($QW_GStor == 1) set @Mmenuref[@Mj],@Mi;
- if ($QW_GStor == 1) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------Cancel
- set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- set @Mmenuref[@Mj],@Mi;
- return;
- }
-
-
-
-//======================Town=Menu=Array============================
-
-//----------------Prontera // I do this to find back sections quickly altho almost the same name is a line below it now
-// setarray @pTmenuitems$[@Ti], "Prontera"; // Name of Town shown in Town select Menu
-// setarray @pTprice[@Ti], $QW_BW_PRICE; // warp prices (Basic ($QW_BW_PRICE), Advanced ($QW_AW_PRICE), Overseas $QW_OW_PRICE)
-//
-// setarray @pTmap$[@Ti], "prontera.gat"; // mapfilename of town
-// setarray @pTXcoords[@Ti], 156; // X warp coords
-// setarray @pTYcoords[@Ti], 187; // Y warp coords
-//
-// QWS_Make_Town_Menu XXX;
-//
-// the full wap commands send out by this script for these example would be
-//warp example_01.gat 123 123
-//
-// use the same XXX number as you used when making your own town warpra
-// Read below how
-//
-// example:
-//
-//syntax:
-//mapname.gat,xcoord,ycoord,directionfacing script Name of NPC NPC-ID,{
-//
-// Full example using fake map & coords
-//
-//example_01.gat,213,213,4 script Warpra 112,{
-// callfunc "QWS_Town_Warpra",XXX,"A FAKE TOWN FOR EXAMPLE";
-// close;
-// }
-// use a free number for XXX, last used is 20, for Yuno
-
-function script QWS_Tarray {
- function QWS_Make_Town_Menu;
-
- set @Ti,0; // That's our loop counter.
- set @Tj,0; // That's the menu lines counter.
-//----------------Prontera
- setarray @pTmenuitems$[@Ti], "Prontera";
- setarray @pTprice[@Ti], $QW_BW_PRICE;
-
- setarray @pTmap$[@Ti], "prontera.gat";
- setarray @pTXcoords[@Ti], 156;
- setarray @pTYcoords[@Ti], 187;
-
- QWS_Make_Town_Menu 0;
-//----------------Alberta
- setarray @pTmenuitems$[@Ti], "Alberta";
- setarray @pTprice[@Ti], $QW_BW_PRICE;
-
- setarray @pTmap$[@Ti], "alberta.gat";
- setarray @pTXcoords[@Ti], 27;
- setarray @pTYcoords[@Ti], 236;
-
- QWS_Make_Town_Menu 1;
-//----------------Aldebaran
- setarray @pTmenuitems$[@Ti], "Aldebaran";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "aldebaran.gat";
- setarray @pTXcoords[@Ti], 145;
- setarray @pTYcoords[@Ti], 120;
-
- QWS_Make_Town_Menu 2;
-//----------------Amatsu:
- setarray @pTmenuitems$[@Ti], "Amatsu";
- setarray @pTprice[@Ti], $QW_OW_PRICE;
-
- setarray @pTmap$[@Ti], "amatsu.gat";
- setarray @pTXcoords[@Ti], 197;
- setarray @pTYcoords[@Ti], 86;
-
- QWS_Make_Town_Menu 3;
-//----------------Ayothaya:
- setarray @pTmenuitems$[@Ti], "Ayothaya";
- setarray @pTprice[@Ti], $QW_OW_PRICE;
-
- setarray @pTmap$[@Ti], "ayothaya.gat";
- setarray @pTXcoords[@Ti], 150;
- setarray @pTYcoords[@Ti], 57;
-
- QWS_Make_Town_Menu 4;
-//----------------Comodo:
- setarray @pTmenuitems$[@Ti], "Comodo";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "comodo.gat";
- setarray @pTXcoords[@Ti], 188;
- setarray @pTYcoords[@Ti], 161;
-
- QWS_Make_Town_Menu 5;
-//----------------Einbech:
- setarray @pTmenuitems$[@Ti], "Einbech";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "einbech.gat";
- setarray @pTXcoords[@Ti], 172;
- setarray @pTYcoords[@Ti], 126;
-
- QWS_Make_Town_Menu 6;
-//----------------Einbroch:
- setarray @pTmenuitems$[@Ti], "Einbroch";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "einbroch.gat";
- setarray @pTXcoords[@Ti], 230;
- setarray @pTYcoords[@Ti], 191;
-
- QWS_Make_Town_Menu 7;
-//----------------Geffen:
- setarray @pTmenuitems$[@Ti], "Geffen";
- setarray @pTprice[@Ti], $QW_BW_PRICE;
-
- setarray @pTmap$[@Ti], "geffen.gat";
- setarray @pTXcoords[@Ti], 119;
- setarray @pTYcoords[@Ti], 66;
-
- QWS_Make_Town_Menu 8;
-//----------------Gonryun:
- setarray @pTmenuitems$[@Ti], "Gonryun";
- setarray @pTprice[@Ti], $QW_OW_PRICE;
-
- setarray @pTmap$[@Ti], "gonryun.gat";
- setarray @pTXcoords[@Ti], 150;
- setarray @pTYcoords[@Ti], 130;
-
- QWS_Make_Town_Menu 9;
-//----------------Hugel:
- setarray @pTmenuitems$[@Ti], "Hugel";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "hugel.gat";
- setarray @pTXcoords[@Ti], 95;
- setarray @pTYcoords[@Ti], 121;
-
- QWS_Make_Town_Menu 10;
-//----------------Izlude:
- setarray @pTmenuitems$[@Ti], "Izlude";
- setarray @pTprice[@Ti], $QW_BW_PRICE;
-
- setarray @pTmap$[@Ti], "izlude.gat";
- setarray @pTXcoords[@Ti], 128;
- setarray @pTYcoords[@Ti], 111;
-
- QWS_Make_Town_Menu 11;
-//----------------Jawaii:
- setarray @pTmenuitems$[@Ti], "Jawaii";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "jawaii.gat";
- setarray @pTXcoords[@Ti], 243;
- setarray @pTYcoords[@Ti], 115;
-
- QWS_Make_Town_Menu 12;
-//----------------Lighthalzen:
- setarray @pTmenuitems$[@Ti], "Lighthalzen";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "lighthalzen.gat";
- setarray @pTXcoords[@Ti], 158;
- setarray @pTYcoords[@Ti], 110;
-
- QWS_Make_Town_Menu 13;
-//----------------Louyang:
- setarray @pTmenuitems$[@Ti], "Louyang";
- setarray @pTprice[@Ti], $QW_OW_PRICE;
-
- setarray @pTmap$[@Ti], "louyang.gat";
- setarray @pTXcoords[@Ti], 210;
- setarray @pTYcoords[@Ti], 108;
-
- QWS_Make_Town_Menu 14;
-//----------------Lutie
- setarray @pTmenuitems$[@Ti], "Lutie";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "xmas.gat";
- setarray @pTXcoords[@Ti], 148;
- setarray @pTYcoords[@Ti], 131;
-
- QWS_Make_Town_Menu 15;
-//----------------Morroc:
- setarray @pTmenuitems$[@Ti], "Morroc";
- setarray @pTprice[@Ti], $QW_BW_PRICE;
-
- setarray @pTmap$[@Ti], "morocc.gat";
- setarray @pTXcoords[@Ti], 159;
- setarray @pTYcoords[@Ti], 93;
-
- QWS_Make_Town_Menu 16;
-//----------------Niflheim:
- setarray @pTmenuitems$[@Ti], "Niflheim";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "niflheim.gat";
- setarray @pTXcoords[@Ti], 195;
- setarray @pTYcoords[@Ti], 186;
-
- QWS_Make_Town_Menu 17;
-//----------------Payon:
- setarray @pTmenuitems$[@Ti], "Payon";
- setarray @pTprice[@Ti], $QW_BW_PRICE;
-
- setarray @pTmap$[@Ti], "payon.gat";
- setarray @pTXcoords[@Ti], 152;
- setarray @pTYcoords[@Ti], 75;
-
- QWS_Make_Town_Menu 18;
-//----------------Umbala:
- setarray @pTmenuitems$[@Ti], "Umbala";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "umbala.gat";
- setarray @pTXcoords[@Ti], 130;
- setarray @pTYcoords[@Ti], 130;
-
- QWS_Make_Town_Menu 19;
-//----------------Yuno:
- setarray @pTmenuitems$[@Ti], "Yuno";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "yuno.gat";
- setarray @pTXcoords[@Ti], 160;
- setarray @pTYcoords[@Ti], 168;
-
- QWS_Make_Town_Menu 20;
-//----------------Cancel
- setarray @pTmenuitems$[@Ti], "Cancel";
- setarray @pTprice[@Ti], 0;
-
- set @Tmenulist$[@Tj],@pTmenuitems$[@Ti];
- set @Tmenuref[@Tj],57005; // 57005='dead' in hex
- return;
-
-
-//----------------Make Town Menu Function
-
-function QWS_Make_Town_Menu {
- set @temptownmenubin,1;
- if (getarg(0) == 0) goto menu_item;
- set @templooptownmenu,0;
- do {
- set @temptownmenubin, @temptownmenubin * 2;
- set @templooptownmenu, @templooptownmenu + 1;
- }while (getarg(0) > @templooptownmenu);
-// check marker and make menu item
-menu_item:
- if ((@temptownmenubin & ##QWS_T_Unlock) != @temptownmenubin) {
- set @Ti,@Ti+1;
- return;
- }
- if (@pTprice[@Ti] != 0 && $QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
- if (@pTprice[@Ti] == 0 && $QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
- if (@pTprice[@Ti] != 0 && $QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]"+" -> "+@pTprice[@Ti];
- if (@pTprice[@Ti] == 0 && $QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]";
- set @Tmenuref[@Tj],@Ti;
- set @Tj,@Tj+1;
- set @Ti,@Ti+1;
- return;
-
-}
-}
-
-//====================Dungeon=Menu=Arrays==========================
-
-//----------------A FAKE DUNGEON FOR EXAMPLE // I do this to find back sections quickly altho almost the same name is a line below it now
-// setarray @pDmenuitems$[@Di], "Fake Dungeon"; // Name of Dungeon shown in Dungeon select Menu
-// setarray @pDprice[@Di], $QW_BW_PRICE; // warp prices (Basic ($QW_BW_PRICE), Advanced ($QW_AW_PRICE), Overseas $QW_OW_PRICE)
-// setarray @pDfee$[@Di], "$QW_BW_FEE"; // Identifyer for the Dungeon fee caluclation (Basic ("$QW_BW_FEE"), Advanced ("$QW_AW_FEE"), Overseas ("$QW_OW_FEE")) please use setting in relation with option above (Don't forget "")
-// setarray @DLevels[@Di], 2; //number of levels in dungeon (very important if set to high will shift all leveldata!!)
-//
-// setarray @DGat$[@Dref], "example_01.gat", "example_02.gat"; // mapfilename of dungeon level
-// setarray @DLevelName$[@Dref], "Example Level 1", "Example Level 2"; // level name shown in dungeon level select
-// setarray @DXcoords[@Dref], 123, 234; // X warp coords
-// setarray @DYcoords[@Dref], 123, 234;// Y warp coords
-// setarray @DDepth[@Dref], 0, 1; // relative depth to entrance to calculate extra warp fee
-//
-// QWS_Make_Dungeon_Menu XXX
-//
-// the full wap commands send out by this scripts for these examples would be
-// for Example Level 1:
-//warp example_01.gat 123 123
-//
-// for Example Level 2:
-//warp example_02.gat 234 234
-//
-// use the same XXX number as you used when making your own dungeon unlocker (Warpra Helper) inside the dungeon
-// (usually half way near a warp to next level)
-// Read below how
-//
-// example:
-//
-//syntax:
-//mapname.gat,xcoord,ycoord,directionfacing script Name of NPC NPC-ID,{
-//
-// Full example using fake map & coords
-//
-//example_01.gat,213,213,4 script Warpra Helper 112,{
-// callfunc "QWS_Dungeon_Warpra",XXX,"A FAKE DUNGEON FOR EXAMPLE";
-// close;
-// }
-// use a free number for XXX, last used is 28, for Kiel Dungeon
-
-function script QWS_Darray {
- function QWS_Make_Dungeon_Menu;
-
- set @Di,0;
- set @Dj,0;
- set @Dref,0;
-//----------------ABYSS LAKE
- setarray @pDmenuitems$[@Di], "Abyss Lake";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 3;
-
- setarray @DGat$[@Dref], "abyss_01.gat", "abyss_02.gat", "abyss_03.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
- setarray @DXcoords[@Dref], 265, 275, 116;
- setarray @DYcoords[@Dref], 273, 270, 27;
- setarray @DDepth[@Dref], 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 0;
-
-//----------------AMATSU DUNGEON
- setarray @pDmenuitems$[@Di], "Amatsu Dungeon";
- setarray @pDprice[@Di], $QW_OW_PRICE;
- setarray @pDfee$[@Di], "$QW_OW_FEE";
- setarray @DLevels[@Di], 3;
-
- setarray @DGat$[@Dref], "ama_dun01.gat", "ama_dun02.gat", "ama_dun03.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
- setarray @DXcoords[@Dref], 227, 32, 119;
- setarray @DYcoords[@Dref], 10, 43, 15;
- setarray @DDepth[@Dref], 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 1;
-
-//----------------ANT HELL
- setarray @pDmenuitems$[@Di], "Ant Hell Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[2], 2;
-
- setarray @DGat$[@Dref], "anthell01.gat", "anthell02.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2";
- setarray @DXcoords[@Dref], 32, 34;
- setarray @DYcoords[@Dref], 262, 263;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 2;
-
-//----------------AYOTAYA
- setarray @pDmenuitems$[@Di], "Ayotaya Dungeon";
- setarray @pDprice[@Di], $QW_OW_PRICE;
- setarray @pDfee$[@Di], "$QW_OW_FEE";
- setarray @DLevels[3], 2;
-
- setarray @DGat$[@Dref], "ayo_dun01.gat", "ayo_dun02.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2";
- setarray @DXcoords[@Dref], 275, 150;
- setarray @DYcoords[@Dref], 17, 13;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 3;
-
-//----------------BYALAN
- setarray @pDmenuitems$[@Di], "Byalan Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[4], 5;
-
- setarray @DGat$[@Dref], "iz_dun00.gat", "iz_dun01.gat", "iz_dun02.gat", "iz_dun03.gat", "iz_dun04.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5";
- setarray @DXcoords[@Dref], 168, 41, 236, 32, 26;
- setarray @DYcoords[@Dref], 168, 37, 204, 63, 27;
- setarray @DDepth[@Dref], 0, 1, 2, 3, 4;
-
- QWS_Make_Dungeon_Menu 4;
-
-//----------------CLOCK TOWER
- setarray @pDmenuitems$[@Di], "Clock Tower Dungeon";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[5], 8;
-
- setarray @DGat$[@Dref], "c_tower1.gat", "c_tower2.gat", "c_tower3.gat", "c_tower4.gat", "alde_dun01.gat", "alde_dun02.gat", "alde_dun03.gat", "alde_dun04.gat";
- setarray @DLevelName$[@Dref], "Clock Tower Level 1", "Clock Tower Level 2", "Clock Tower Level 3", "Clock Tower Level 4", "Basement 1F", "Basement 2F", "Basement 3F", "Basement 4F";
- setarray @DXcoords[@Dref], 200, 268, 64, 32, 197, 262, 276, 130;
- setarray @DYcoords[@Dref], 163, 26, 148, 63, 25, 41, 53, 130;
- setarray @DDepth[@Dref], 0, 1, 2, 3, 1, 2, 3, 4;
-
- QWS_Make_Dungeon_Menu 5;
-
-//----------------COAL MINE
- setarray @pDmenuitems$[@Di], "Coal Mine Dungeon";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[6], 3;
-
- setarray @DGat$[@Dref], "mjo_dun01.gat", "mjo_dun02.gat", "mjo_dun03.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
- setarray @DXcoords[@Dref], 52, 381, 302;
- setarray @DYcoords[@Dref], 17, 343, 261;
- setarray @DDepth[@Dref], 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 6;
-
-//----------------CULVERT
- setarray @pDmenuitems$[@Di], "Culvert Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[7], 4;
-
- setarray @DGat$[@Dref], "prt_sewb1.gat", "prt_sewb2.gat", "prt_sewb3.gat", "prt_sewb4.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4";
- setarray @DXcoords[@Dref], 132, 19, 180, 100;
- setarray @DYcoords[@Dref], 248, 19, 169, 92;
- setarray @DDepth[@Dref], 0, 1, 2, 3;
-
- QWS_Make_Dungeon_Menu 7;
-
-//----------------EINBECH DUNGEON
- setarray @pDmenuitems$[@Di], "Einbech Dungeon";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[8], 2;
-
- setarray @DGat$[@Dref], "ein_dun01.gat", "ein_dun02.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2";
- setarray @DXcoords[@Dref], 22, 292;
- setarray @DYcoords[@Dref], 14, 290;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 8;
-
-//----------------GEFENIA DUNGEON
- setarray @pDmenuitems$[@Di], "Gefenia Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[9], 4;
-
- setarray @DGat$[@Dref], "gefenia01.gat", "gefenia02.gat", "gefenia03.gat", "gefenia04.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4";
- setarray @DXcoords[@Dref], 59, 201, 264, 33;
- setarray @DYcoords[@Dref], 167, 35, 236, 270;
- setarray @DDepth[@Dref], 0, 1, 2, 3;
-
- QWS_Make_Dungeon_Menu 9;
-
-//----------------GEFFEN DUNGEON
- setarray @pDmenuitems$[@Di], "Geffen Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 4;
-
- setarray @DGat$[@Dref], "gef_dun00.gat", "gef_dun01.gat", "gef_dun02.gat", "gef_dun03.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4";
- setarray @DXcoords[@Dref], 104, 115, 106, 203;
- setarray @DYcoords[@Dref], 100, 236, 132, 200;
- setarray @DDepth[@Dref], 0, 1, 2, 3;
-
- QWS_Make_Dungeon_Menu 10;
-
-//----------------GLAST HEIM
- setarray @pDmenuitems$[@Di], "Glast Heim Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 17;
-
- setarray @DGat$[@Dref], "glast_01.gat", "gl_church.gat", "gl_chyard.gat", "gl_in01.gat", "gl_cas01.gat", "gl_cas02.gat", "gl_knt01.gat", "gl_knt02.gat", "gl_prison.gat", "gl_prison1.gat", "gl_step.gat", "gl_sew01.gat", "gl_sew02.gat", "gl_sew03.gat", "gl_sew04.gat", "gl_dun01.gat", "gl_dun02.gat";
- setarray @DLevelName$[@Dref], "Glast Heim Entrance", "St. Abbey", "Churchyard", "Inside Glast Heim", "Castle 1", "Castle 2", "Chivalry 1", "Chivalry 2", "Prison 1", "Prison 2", "Steps", "Sewers 1", "Sewers 2", "Sewers 3", "Sewers 4", "Lowest Cave 1", "Lowest Cave 2";
- setarray @DXcoords[@Dref], 370, 156, 147, 121, 199, 104, 150, 157, 14, 150, 117, 258, 108, 171, 68, 133, 224;
- setarray @DYcoords[@Dref], 300, 8, 15, 59, 29, 25, 10, 287, 70, 14, 124, 255, 291, 273, 277, 271, 274;
- setarray @DDepth[@Dref], 0, 1, 2, 1, 1, 2, 1, 2, 2, 3, 1, 4, 2, 3, 4, 5, 6;
-
- QWS_Make_Dungeon_Menu 11;
-
-//----------------GONRYUN DUNGEON
- setarray @pDmenuitems$[@Di], "Gonryun Dungeon";
- setarray @pDprice[@Di], $QW_OW_PRICE;
- setarray @pDfee$[@Di], "$QW_OW_FEE";
- setarray @DLevels[@Di], 3;
-
- setarray @DGat$[@Dref], "gon_dun01.gat", "gon_dun02.gat", "gon_dun03.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
- setarray @DXcoords[@Dref], 143, 17, 68;
- setarray @DYcoords[@Dref], 59, 114, 9;
- setarray @DDepth[@Dref], 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 12;
-
-//----------------HIDDEN DUNGEON
- setarray @pDmenuitems$[@Di], "Hidden Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 3;
-
- setarray @DGat$[@Dref], "prt_maze01.gat", "prt_maze02.gat", "prt_maze03.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
- setarray @DXcoords[@Dref], 176, 94, 23;
- setarray @DYcoords[@Dref], 6, 19, 8;
- setarray @DDepth[@Dref], 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 13;
-
-//----------------JUPEROS CAVE
- setarray @pDmenuitems$[@Di], "Juperos Cave";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 2;
-
- setarray @DGat$[@Dref], "juperos_01.gat", "juperos_02.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2";
- setarray @DXcoords[@Dref], 53, 36;
- setarray @DYcoords[@Dref], 247, 60;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 14;
-
-//----------------KIEL DUNGEON
- setarray @pDmenuitems$[@Di], "Kiel Dungeon";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 2;
-
- setarray @DGat$[@Dref], "kh_dun01.gat", "kh_dun02.gat";
- setarray @DLevelName$[@Dref], "1st Floor", "2nd Floor";
- setarray @DXcoords[@Dref], 63, 42;
- setarray @DYcoords[@Dref], 10, 197;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 28;
-
-//----------------LIGHTHALZEN BIO LAB
- setarray @pDmenuitems$[@Di], "Lighthalzen Bio Lab";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 3;
-
- setarray @DGat$[@Dref], "lhz_dun01.gat", "lhz_dun02.gat", "lhz_dun03.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
- setarray @DXcoords[@Dref], 150, 150, 140;
- setarray @DYcoords[@Dref], 287, 18, 137;
- setarray @DDepth[@Dref], 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 15;
-
-//----------------LOUYANG DUNGEON
- setarray @pDmenuitems$[@Di], "Louyang Dungeon";
- setarray @pDprice[@Di], $QW_OW_PRICE;
- setarray @pDfee$[@Di], "$QW_OW_FEE";
- setarray @DLevels[@Di], 2;
-
- setarray @DGat$[@Dref], "lou_dun02.gat", "lou_dun03.gat";
- setarray @DLevelName$[@Dref], "Royal Tomb Level 1", "Royal Tomb Level 2";
- setarray @DXcoords[@Dref], 282, 165;
- setarray @DYcoords[@Dref], 20, 38;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 16;
-
-//----------------MAGMA DUNGEON
- setarray @pDmenuitems$[@Di], "Magma Dungeon";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 2;
-
- setarray @DGat$[@Dref], "mag_dun01.gat", "mag_dun02.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2";
- setarray @DXcoords[@Dref], 126, 47;
- setarray @DYcoords[@Dref], 69, 32;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 17;
-
-//----------------ODIN TEMPLE
- setarray @pDmenuitems$[@Di], "Odin Temple";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 1;
-
- setarray @DGat$[@Dref], "odin_tem01.gat";
- setarray @DLevelName$[@Dref], "Level 1";
- setarray @DXcoords[@Dref], 96;
- setarray @DYcoords[@Dref], 145;
- setarray @DDepth[@Dref], 0;
-
- QWS_Make_Dungeon_Menu 18;
-
-//----------------ORC DUNGEON
- setarray @pDmenuitems$[@Di], "Orc Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 2;
-
- setarray @DGat$[@Dref], "orcsdun01.gat", "orcsdun02.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2";
- setarray @DXcoords[@Dref], 32, 21;
- setarray @DYcoords[@Dref], 169, 185;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 19;
-
-//----------------PAYON DUNGEON
- setarray @pDmenuitems$[@Di], "Payon Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 5;
-
- setarray @DGat$[@Dref], "pay_dun00.gat", "pay_dun01.gat", "pay_dun02.gat", "pay_dun03.gat", "pay_dun04.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5";
- setarray @DXcoords[@Dref], 22, 19, 19, 155, 201;
- setarray @DYcoords[@Dref], 180, 33, 63, 159, 204;
- setarray @DDepth[@Dref], 0, 1, 2, 3, 4;
-
- QWS_Make_Dungeon_Menu 20;
-
-//----------------PYRAMIDS
- setarray @pDmenuitems$[@Di], "Pyramids Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 6;
-
- setarray @DGat$[@Dref], "moc_pryd01.gat", "moc_pryd02.gat", "moc_pryd03.gat", "moc_pryd04.gat", "moc_pryd05.gat", "moc_pryd06.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Basement 1", "Basement 2";
- setarray @DXcoords[@Dref], 192, 10, 100, 181, 94, 192;
- setarray @DYcoords[@Dref], 9, 192, 92, 11, 96, 8;
- setarray @DDepth[@Dref], 0, 1, 2, 3, 1, 2;
-
- QWS_Make_Dungeon_Menu 21;
-
-//----------------SPHINX
- setarray @pDmenuitems$[@Di], "Sphinx Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 5;
-
- setarray @DGat$[@Dref], "in_sphinx1.gat", "in_sphinx2.gat", "in_sphinx3.gat", "in_sphinx4.gat", "in_sphinx5.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5";
- setarray @DXcoords[@Dref], 192, 149, 210, 10, 100;
- setarray @DYcoords[@Dref], 9, 81, 54, 222, 99;
- setarray @DDepth[@Dref], 0, 1, 2, 3, 4;
-
- QWS_Make_Dungeon_Menu 22;
-
-//----------------SUNKEN SHIP
- setarray @pDmenuitems$[@Di], "Sunken Ship Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 2;
-
- setarray @DGat$[@Dref], "treasure01.gat", "treasure02.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2";
- setarray @DXcoords[@Dref], 69, 102;
- setarray @DYcoords[@Dref], 24, 27;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 23;
-
-//----------------THANATOS TOWER
- setarray @pDmenuitems$[@Di], "Thanatos Tower";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 13;
-
- setarray @DGat$[@Dref], "tha_t01.gat", "tha_t02.gat", "tha_t03.gat", "tha_t04.gat", "tha_t05.gat", "tha_t06.gat", "tha_t07.gat", "tha_t08.gat", "tha_t09.gat", "tha_t10.gat", "tha_t11.gat", "tha_t12.gat", "thana_boss.gat";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Level 6", "Level 7", "Level 8", "Level 9", "Level 10", "Level 11", "Level 12", "Thanatos Boss";
- setarray @DXcoords[@Dref], 150, 150, 220, 59, 62, 206, 35, 105, 88, 168, 90, 129, 85;
- setarray @DYcoords[@Dref], 35, 136, 158, 143, 11, 8, 166, 44, 145, 138, 36, 83, 76;
- setarray @DDepth[@Dref], 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12;
-
- QWS_Make_Dungeon_Menu 24;
-
-//----------------TOY FACTORY
- setarray @pDmenuitems$[@Di], "Toy Factory Dungeon";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 2;
-
- setarray @DGat$[@Dref], "xmas_dun01.gat", "xmas_dun02.gat";
- setarray @DLevelName$[@Dref], "Factory Warehouse", "Classifying Room";
- setarray @DXcoords[@Dref], 205, 129;
- setarray @DYcoords[@Dref], 16, 133;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 25;
-
-//----------------TURTLE ISTLAND
- setarray @pDmenuitems$[@Di], "Turtle Island Dungeon";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 4;
-
- setarray @DGat$[@Dref], "tur_dun01.gat", "tur_dun02.gat", "tur_dun03.gat", "tur_dun04.gat";
- setarray @DLevelName$[@Dref], "Outside", "Level 1", "Level 2", "Level 3";
- setarray @DXcoords[@Dref], 161, 148, 132, 100;
- setarray @DYcoords[@Dref], 34, 256, 190, 192;
- setarray @DDepth[@Dref], 0, 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 26;
-
-//----------------UMBALA
- setarray @pDmenuitems$[@Di], "Umbala Dungeon";
- setarray @pDprice[@Di], $QW_OW_PRICE;
- setarray @pDfee$[@Di], "$QW_OW_FEE";
- setarray @DLevels[@Di], 3;
-
- setarray @DGat$[@Dref], "um_dun01.gat", "um_dun02.gat", "yggdrasil01.gat";
- setarray @DLevelName$[@Dref], "Carpenter's Shop in The Tree", "Passage to a Foreign World", "Hvergelmir's Fountain";
- setarray @DXcoords[@Dref], 205, 48, 40;
- setarray @DYcoords[@Dref], 16, 30, 63;
- setarray @DDepth[@Dref], 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 27;
-
-//----------------Cancel
- setarray @pDmenuitems$[@Di], "Cancel";
- setarray @pDprice[@Di], 0;
-
- set @Dmenulist$[@Dj],@pDmenuitems$[@Di];
- set @Dmenuref[@Dj],57005; // 57005='dead' in hex
- return;
-
-
-//----------------Make Dungeon Menu Function
-
-function QWS_Make_Dungeon_Menu {
- set @tempdungeonmenubin,1;
- if (getarg(0) == 0) goto menu_item;
- set @temploopdungeonmenu,0;
- do {
- set @tempdungeonmenubin, @tempdungeonmenubin * 2;
- set @temploopdungeonmenu, @temploopdungeonmenu + 1;
- }while (getarg(0) > @temploopdungeonmenu);
-// check marker and make menu item
-menu_item:
- if ((@tempdungeonmenubin & ##QWS_D_Unlock) != @tempdungeonmenubin) {
- setarray @DLocRef[@Di], @Dref;
- set @Dref, @Dref+@DLevels[@Di];
- set @Di,@Di+1;
- return;
- }
- if ($QW_MapUserShow == 1) {
- set @tempmapusers,0;
- set @mapusersloop,0;
- do {
- set @tempmapusers,(getmapusers(@DGat$[@Dref+@mapusersloop]) + @tempmapusers);
- set @mapusersloop, (@mapusersloop + 1);
- }while (@DLevels[@Di] > @mapusersloop);
- if (@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" ["+@tempmapusers+"] -> "+@pDprice[@Di];
- if (@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" ["+@tempmapusers+"]";
- set @Dmenuref[@Dj],@Di;
- set @Dj,@Dj+1;
- setarray @DLocRef[@Di], @Dref;
- set @Dref, @Dref+@DLevels[@Di];
- set @Di,@Di+1;
- return;
- }
- if (@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
- if (@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
- set @Dmenuref[@Dj],@Di;
- set @Dj,@Dj+1;
- setarray @DLocRef[@Di], @Dref;
- set @Dref, @Dref+@DLevels[@Di];
- set @Di,@Di+1;
- return;
-
-}
-}
-
-function script QWS_DLarray {
-//----------------Start building Menu
- set @DWref,@DLocRef[@DwarpMenu]; // That's our reference to the arrays with leveldata.
- set @DWi,0; // That's our loop counter.
- set @DWj,0; // That's the menu lines counter.
- cleararray @DWLmenulist$[0],"",20; // Clearing the array to get rid off ghost items in menu
- do {
- if ($QW_DL == 0 || $QW_DDL >= @DDepth[@DWref]) {
- set @warpprice, (@pDprice[@DwarpMenu]+ (getd(@pDfee$[@DwarpMenu])*@DDepth[@DWref]));
-
- if (@warpprice != 0 && $QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" -> "+@warpprice;
- if (@warpprice == 0 && $QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref];
- if (@warpprice != 0 && $QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"] -> "+@warpprice;
- if (@warpprice == 0 && $QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"]";
- set @DWLmenuref[@DWj],@DWref;
-
- set @DWj,@DWj+1;
- }
- set @DWref, @DWref+1;
- set @DWi,@DWi+1;
- }while (@DWi < @DLevels[@DwarpMenu]);
- set @DWLmenulist$[@DWj], "Exit";
- set @DWLmenuref[@DWj],57005; // 57005='dead' in hex
- return;
- }
-
-
-//=================Backwards=Compatibility=Pre=1.8=================
-
-function script QWS_BackComp {
-// reference where i put the towns: "Prontera"[0], "Alberta"[1], "Aldebaran"[2], "Amatsu"[3], "Ayothaya"[4], "Comodo"[5], "Einbech"[6], "Einbroch"[7], "Geffen"[8], "Gonryun"[9], "Hugel"[10], "Izlude"[11], "Jawaii"[12], "Lighthalzen"[13], "Louyang"[14], "Lutie"[15], "Morroc"[16], "Niflheim"[17], "Payon"[18], "Umbala"[19], "Yuno"[20];
-// reference where i put the dungeons: "Abyss Lake"[0], "Amatsu Dungeon"[1], "Ant Hell Dungeon"[2], "Ayotaya Dungeon"[3], "Byalan Dungeon"[4], "Clock Tower Dungeon"[5], "Coal Mine Dungeon"[6], "Culvert Dungeon"[7], "Einbech Dungeon"[8], "Gefenia Dungeon"[9], "Geffen Dungeon"[10], "Glast Heim Dungeon"[11], "Gonryun Dungeon"[12], "Hidden Dungeon"[13], "Juperos Cave"[14], "Lighthalzen Bio Lab"[15], "Louyang Dungeon"[16], "Magma Dungeon"[17], "Odin Temple"[18], "Orc Dungeon"[19], "Payon Dungeon"[20], "Pyramids Dungeon"[21], "Sphinx Dungeon"[22], "Sunken Ship Dungeon"[23], "Thanatos Tower"[24], "Toy Factory Dungeon"[25], "Turtle Island Dungeon"[26], "Umbala Dungeon"[27], "Kiel Dungeon[28];
-// also clears variables so that the account file variables can be used for something else variable 0 = variable delete on next save
-
-// Towns
- set @towntemp,0;
- if (#prontera != 0) set @towntemp,@towntemp + 1;
- if (#alberta != 0) set @towntemp,@towntemp + 2;
- if (#aldebaran != 0) set @towntemp,@towntemp + 4;
- if (#amatsu != 0) set @towntemp,@towntemp + 8;
- if (#ayotaya != 0) set @towntemp,@towntemp + 16;
- if (#comodo != 0) set @towntemp,@towntemp + 32;
- if (#einbech != 0) set @towntemp,@towntemp + 64;
- if (#einbroch != 0) set @towntemp,@towntemp + 128;
- if (#geffen != 0) set @towntemp,@towntemp + 256;
- if (#gonryun != 0) set @towntemp,@towntemp + 512;
- if (#hugel != 0) set @towntemp,@towntemp + 1024;
- if (#izlude != 0) set @towntemp,@towntemp + 2048;
- if (#jawaii != 0) set @towntemp,@towntemp + 4096;
- if (#lighthalzen != 0) set @towntemp,@towntemp + 8192;
- if (#louyang != 0) set @towntemp,@towntemp + 16384;
- if (#xmas != 0) set @towntemp,@towntemp + 32768;
- if (#morocc != 0) set @towntemp,@towntemp + 65536;
- if (#niflheim != 0) set @towntemp,@towntemp + 131072;
- if (#payon != 0) set @towntemp,@towntemp + 262144;
- if (#umbala != 0) set @towntemp,@towntemp + 524288;
- if (#yuno != 0) set @towntemp,@towntemp + 1048576;
-// Clear Town variables
- set #prontera,0;
- set #alberta,0;
- set #aldebaran,0;
- set #amatsu,0;
- set #ayotaya,0;
- set #comodo,0;
- set #einbech,0;
- set #einbroch,0;
- set #geffen,0;
- set #gonryun,0;
- set #hugel,0;
- set #izlude,0;
- set #jawaii,0;
- set #lighthalzen,0;
- set #louyang,0;
- set #xmas,0;
- set #morocc,0;
- set #niflheim,0;
- set #payon,0;
- set #umbala,0;
- set #yuno,0;
-// set Town warp unlock variable
-set ##QWS_T_Unlock, (##QWS_T_Unlock | @towntemp);
- //because multiple account servers now stack on 1 variable i used a 'or' to stack them
-// Dungeons
- set @dungeontemp,0;
- if (#abyss != 0) set @dungeontemp,@dungeontemp + 1;
- if (#ama_dun != 0) set @dungeontemp,@dungeontemp + 2;
- if (#anthell != 0) set @dungeontemp,@dungeontemp + 4;
- if (#ayotaya_dun != 0) set @dungeontemp,@dungeontemp + 8;
- if (#iz_dun != 0) set @dungeontemp,@dungeontemp + 16;
- if (#c_tower != 0) set @dungeontemp,@dungeontemp + 32;
- if (#mjo_dun != 0) set @dungeontemp,@dungeontemp + 64;
- if (#prt_sewb != 0) set @dungeontemp,@dungeontemp + 128;
- if (#einbech_dun != 0) set @dungeontemp,@dungeontemp + 256;
- if (#gefenia != 0) set @dungeontemp,@dungeontemp + 512;
- if (#gef_dun != 0) set @dungeontemp,@dungeontemp + 1024;
- if (#gl_dun != 0) set @dungeontemp,@dungeontemp + 2048;
- if (#gon_dun != 0) set @dungeontemp,@dungeontemp + 4096;
- if (#hid_dun != 0) set @dungeontemp,@dungeontemp + 8192;
- if (#juperos != 0) set @dungeontemp,@dungeontemp + 16384;
- if (#lighthalzen_dun != 0) set @dungeontemp,@dungeontemp + 32768;
- if (#louyang_dun != 0) set @dungeontemp,@dungeontemp + 65536;
- if (#mag_dun != 0) set @dungeontemp,@dungeontemp + 131072;
- if (#odintemple != 0) set @dungeontemp,@dungeontemp + 262144;
- if (#orcsdun != 0) set @dungeontemp,@dungeontemp + 524288;
- if (#pay_dun != 0) set @dungeontemp,@dungeontemp + 1048576;
- if (#moc_pryd != 0) set @dungeontemp,@dungeontemp + 2097152;
- if (#in_sphinx != 0) set @dungeontemp,@dungeontemp + 4194304;
- if (#treasure != 0) set @dungeontemp,@dungeontemp + 8388608;
- if (#thanatos_tower != 0) set @dungeontemp,@dungeontemp + 16777216;
- if (#xmas_dun != 0) set @dungeontemp,@dungeontemp + 33554432;
- if (#tur_dun != 0) set @dungeontemp,@dungeontemp + 67108864;
- if (#um_dun != 0) set @dungeontemp,@dungeontemp + 134217728;
-// Clear Dungeon variables
- set #abyss,0;
- set #ama_dun,0;
- set #anthell,0;
- set #ayotaya_dun,0;
- set #iz_dun,0;
- set #c_tower,0;
- set #mjo_dun,0;
- set #prt_sewb,0;
- set #einbech_dun,0;
- set #gefenia,0;
- set #gef_dun,0;
- set #gl_dun,0;
- set #gon_dun,0;
- set #hid_dun,0;
- set #juperos,0;
- set #lighthalzen_dun,0;
- set #louyang_dun,0;
- set #mag_dun,0;
- set #odintemple,0;
- set #orcsdun,0;
- set #pay_dun,0;
- set #moc_pryd,0;
- set #in_sphinx,0;
- set #treasure,0;
- set #thanatos_tower,0;
- set #xmas_dun,0;
- set #tur_dun,0;
- set #um_dun,0;
-// set Town warp unlock variable
-set ##QWS_D_Unlock, (##QWS_D_Unlock | @dungeontemp);
-//mark that this character has done the upgrade to 1.8
-set ##QWS_UP,18;
-return;
-}
-
-
-//===================Extra=Variable=Clear=Pre=1.8==================
-function script Extra_Variable_Clear {
-// Clear Town variables
- set #prontera,0;
- set #alberta,0;
- set #aldebaran,0;
- set #amatsu,0;
- set #ayotaya,0;
- set #comodo,0;
- set #einbech,0;
- set #einbroch,0;
- set #geffen,0;
- set #gonryun,0;
- set #hugel,0;
- set #izlude,0;
- set #jawaii,0;
- set #lighthalzen,0;
- set #louyang,0;
- set #xmas,0;
- set #morocc,0;
- set #niflheim,0;
- set #payon,0;
- set #umbala,0;
- set #yuno,0;
-
-// Clear Dungeon variables
- set #abyss,0;
- set #ama_dun,0;
- set #anthell,0;
- set #ayotaya_dun,0;
- set #iz_dun,0;
- set #c_tower,0;
- set #mjo_dun,0;
- set #prt_sewb,0;
- set #einbech_dun,0;
- set #gefenia,0;
- set #gef_dun,0;
- set #gl_dun,0;
- set #gon_dun,0;
- set #hid_dun,0;
- set #juperos,0;
- set #lighthalzen_dun,0;
- set #louyang_dun,0;
- set #mag_dun,0;
- set #odintemple,0;
- set #orcsdun,0;
- set #pay_dun,0;
- set #moc_pryd,0;
- set #in_sphinx,0;
- set #treasure,0;
- set #thanatos_tower,0;
- set #xmas_dun,0;
- set #tur_dun,0;
- set #um_dun,0;
-
-// as the account based variables are limited just run this on every character to save some variables
-set QWS_ExtraVARClear,18;
-return;
-}
-
-//================Dungeon=Warpras=That=Only=Unlock=================
-
-function script QWS_Dungeon_Warpra {
- function QWS_D_getbin;
- function QWS_D_setbin;
-
- if (QWS_D_getbin(getarg(0)) == 0 && getarg(1) != "") {
- mes "[Warpra]";
- mes getarg(1)+" unlocked!";
- QWS_D_setbin(getarg(0));
- return;
- } else if (QWS_D_getbin(getarg(0)) == 1){
- mes "[Warpra]";
- mes "Sorry I can only unlock this location.";
- } else
- debugmes "QWS_Dungeon_Warpra error, improper syntax ?";
- return;
-
-
-function QWS_D_setbin {
- set @tempsetbindata,1;
- if (getarg(0) == 0) goto binset;
- set @temploopsetbin,0;
- do {
- set @tempsetbindata, @tempsetbindata * 2;
- set @temploopsetbin, @temploopsetbin + 1;
- } while (getarg(0) > @temploopsetbin);
-binset:
- set ##QWS_D_Unlock,(##QWS_D_Unlock | @tempsetbindata);
- return;
-}
-
-function QWS_D_getbin {
- set @tempgetbindata,1;
- if (getarg(0) == 0) goto binget;
- set @temploopgetbin,0;
- do {
- set @tempgetbindata, @tempgetbindata * 2;
- set @temploopgetbin, @temploopgetbin + 1;
- } while (getarg(0) > @temploopgetbin);
-binget:
- if ((@tempgetbindata & ##QWS_D_Unlock) == @tempgetbindata) return 1;
- return 0;
-}
-}
-
-//==========================Town=Warpras===========================
-
-function script QWS_Town_Warpra {
- function QWS_T_getbin;
- function QWS_T_setbin;
-
- if (QWS_T_getbin(getarg(0)) == 0 && getarg(1) != "") {
- mes "[Warpra]";
- mes getarg(1)+" unlocked!";
- QWS_T_setbin(getarg(0));
- return;
- } else if (QWS_T_getbin(getarg(0)) == 1){
-callfunc "Q_Warpra",0;
- } else
- debugmes "QWS_Town_Warpra error, improper syntax ?";
- return;
-
-
-function QWS_T_setbin {
- set @tempsetbindata,1;
- if (getarg(0) == 0) goto binset;
- set @temploopsetbin,0;
- do {
- set @tempsetbindata, @tempsetbindata * 2;
- set @temploopsetbin, @temploopsetbin + 1;
- } while (getarg(0) > @temploopsetbin);
-binset:
- set ##QWS_T_Unlock,(##QWS_T_Unlock | @tempsetbindata);
- return;
-}
-
-function QWS_T_getbin {
- set @tempgetbindata,1;
- if (getarg(0) == 0) goto binget;
- set @temploopgetbin,0;
- do {
- set @tempgetbindata, @tempgetbindata * 2;
- set @temploopgetbin, @temploopgetbin + 1;
- } while (getarg(0) > @temploopgetbin);
-binget:
- if ((@tempgetbindata & ##QWS_T_Unlock) == @tempgetbindata) return 1;
- return 0;
-}
-}
-//============================Warpras==============================
-
-alb2trea.gat,73,101,4 script Warpra 113,{
- callfunc "Q_Warpra",1;
-}
-ama_fild01.gat,178,325,1 script Warpra 113,{
- callfunc "Q_Warpra",1;
-}
-gef_fild10.gat,71,339,4 script Warpra 113,{
- callfunc "Q_Warpra",1;
-}
-izlu2dun.gat,104,82,4 script Warpra 113,{
- callfunc "Q_Warpra",1;
-}
-mjolnir_02.gat,85,363,4 script Warpra 113,{
- callfunc "Q_Warpra",1;
-}
-moc_fild04.gat,207,331,4 script Warpra 113,{
- callfunc "Q_Warpra",1;
-}
-moc_fild19.gat,106,97,4 script Warpra 113,{
- callfunc "Q_Warpra",1;
-}
-moc_ruins.gat,64,166,4 script Warpra 113,{
- callfunc "Q_Warpra",1;
-}
-niflheim.gat,197,192,3 script Warpra 113,{
- callfunc "Q_Warpra",1;
-}
-pay_arche.gat,39,135,4 script Warpra 113,{
- callfunc "Q_Warpra",1;
-}
-prt_fild05.gat,273,215,4 script Warpra 113,{
- callfunc "Q_Warpra",1;
-}
-tur_dun01.gat,148,239,4 script Warpra 113,{
- callfunc "Q_Warpra",1;
-}
-valkyrie.gat,48,35,8 script Warpra 113,{
- callfunc "Q_Warpra",1;
-}
-yuno_fild03.gat,37,135,4 script Warpra 113,{
- callfunc "Q_Warpra",1;
-}
-
-alberta.gat,32,240,4 script Warpra 113,{
- callfunc "QWS_Town_Warpra",1,"Alberta Town";
- close;
-}
-aldebaran.gat,146,118,4 script Warpra 113,{
- callfunc "QWS_Town_Warpra",2,"Aldebaran Town";
- close;
-}
-ayothaya.gat,216,171,5 script Warpra 113,{
- callfunc "QWS_Town_Warpra",4,"Ayotaya Town";
- close;
-}
-amatsu.gat,193,81,1 script Warpra 113,{
- callfunc "QWS_Town_Warpra",3,"Amatsu Town";
- close;
-}
-comodo.gat,195,158,4 script Warpra 113,{
- callfunc "QWS_Town_Warpra",5,"Comodo Town";
- close;
-}
-einbroch.gat,229,196,5 script Warpra 113,{
- callfunc "QWS_Town_Warpra",7,"Einbroch Town";
- close;
-}
-einbech.gat,173,131,5 script Warpra 113,{
- callfunc "QWS_Town_Warpra",6,"Einbech Town";
- close;
-}
-geffen.gat,116,66,4 script Warpra 113,{
- callfunc "QWS_Town_Warpra",8,"Geffen Town";
- close;
-}
-gonryun.gat,152,130,4 script Warpra 113,{
- callfunc "QWS_Town_Warpra",9,"Gonryun Town";
- close;
-}
-hugel.gat,90,127,5 script Warpra 113,{
- callfunc "QWS_Town_Warpra",10,"Hugel Town";
- close;
-}
-jawaii.gat,107,182,5 script Warpra 113,{
- callfunc "QWS_Town_Warpra",12,"Jawaii Town";
- close;
-}
-izlude.gat,132,116,4 script Warpra 113,{
- callfunc "QWS_Town_Warpra",11,"Izlude Town";
- close;
-}
-lighthalzen.gat,153,100,5 script Warpra 113,{
- callfunc "QWS_Town_Warpra",13,"Lighthalzen Town";
- close;
-}
-louyang.gat,211,106,4 script Warpra 113,{
- callfunc "QWS_Town_Warpra",14,"Louyang Town";
- close;
-}
-morocc.gat,157,95,4 script Warpra 113,{
- callfunc "QWS_Town_Warpra",16,"Morroc Town";
- close;
-}
-nif_fild01.gat,319,77,1 script Warpra 113,{
- callfunc "QWS_Town_Warpra",17,"Niflheim Town";
- close;
-}
-payon.gat,183,110,4 script Warpra 113,{
- callfunc "QWS_Town_Warpra",18,"Payon Town";
- close;
-}
-prontera.gat,147,172,5 script Warpra 113,{
- callfunc "QWS_Town_Warpra",0,"Prontera Town";
- close;
-}
-umbala.gat,133,130,4 script Warpra 113,{
- callfunc "QWS_Town_Warpra",19,"Umbala Town";
- close;
-}
-xmas.gat,151,136,4 script Warpra 113,{
- callfunc "QWS_Town_Warpra",15,"Lutie Town";
- close;
-}
-yuno.gat,138,162,4 script Warpra 113,{
- callfunc "QWS_Town_Warpra",20,"Yuno Town";
- close;
-}
-
-abyss_02.gat,274,266,1 script Warpra 113,{
- callfunc "QWS_Dungeon_Warpra",0,"Abyss Lake";
- close;
-}
-
-ama_dun02.gat,192,118,5 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",1,"Amatsu Dungeon";
- close;
-}
-
-anthell02.gat,170,165,3 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",2,"Ant Hell Dungeon";
- close;
-}
-
-ayo_dun02.gat,258,193,5 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",3,"Ayotaya Dungeon";
- close;
-}
-
-ein_dun02.gat,292,282,1 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",8,"Einbech Dungeon";
- close;
-}
-
-iz_dun03.gat,202,47,2 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",4,"Byalan Dungeon";
- close;
-}
-
-c_tower3.gat,129,106,4 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",5,"Clock Tower Dungeon";
- close;
-}
-
-mjo_dun02.gat,39,25,4 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",6,"Coal Mine Dungeon";
- close;
-}
-
-prt_sewb2.gat,176,30,3 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",7,"Culvert Dungeon";
- close;
-}
-
-gefenia03.gat,137,34,0 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",9,"Gefenia Dungeon";
- close;
-}
-
-gef_dun02.gat,218,61,2 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",10,"Gefen Dungeon";
- close;
-}
-
-glast_01.gat,371,308,3 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",11,"Glast Heim Dungeon";
- close;
-}
-
-gon_dun01.gat,167,273,4 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",12,"Gonryun Dungeon";
- close;
-}
-
-juperos_02.gat,127,154,5 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",14,"Juperos Cave";
- close;
-}
-
-kh_dun01.gat,14,224,3 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",28,"Kiel Dungeon";
- close;
-}
-
-lhz_dun02.gat,156,151,5 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",15,"Lighthalzen Bio Lab";
- close;
-}
-
-lou_dun02.gat,168,264,4 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",16,"Louyang Dungeon";
- close;
-}
-
-mag_dun02.gat,46,41,3 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",17,"Magma Dungeon";
- close;
-}
-
-odin_tem01.gat,115,148,3 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",18,"Odin Temple";
- close;
-}
-
-orcsdun01.gat,185,11,3 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",19,"Orc Dungeon";
- close;
-}
-
-pay_dun03.gat,162,143,3 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",20,"Payon Dungeon";
- close;
-}
-
-moc_pryd02.gat,101,95,3 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",21,"Pyramides Dungeon";
- close;
-}
-
-in_sphinx2.gat,274,268,1 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",22,"Sphinx Dungeon";
- close;
-}
-
-tha_t07.gat,111,162,3 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",24,"Thanatos Tower";
- close;
-}
-
-treasure02.gat,104,40,3 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",23,"Sunken Ship Dungeon";
- close;
-}
-
-xmas_dun02.gat,124,131,3 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",25,"Toy Factory Dungeon";
- close;
-}
-
-um_dun02.gat,44,28,3 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",27,"Umbala Dungeon";
- close;
-}
-
-tur_dun02.gat,162,23,3 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",26,"Turtle Island Dungeon";
- close;
-}
-prt_maze02.gat,102,69,4 script Warpra Helper 112,{
- callfunc "QWS_Dungeon_Warpra",13,"Hidden Dungeon";
- close;
-}
+//===== eAthena Script ============================================ +//= Quest Warper Script +//===== By: ======================================================= +//= Old Warper 2 by Darkchild - Remade with quest format by DZeroX +//= Huge Rewrite by Neouni +//===== Current Version: ========================================== +//= 2.0c +//===== Compatible With: ========================================== +//= Any eAthena Version +//===== Description: ============================================== +//= Warper that works only after locations are unlocked +//===== Warning: ================================================== +// you have to set the securitycode value [1337] the same as in +// functions_kafras.txt if you changed it !! +//===== Additional Comments: ====================================== +//= 1.0 - NPCs created +//= 1.1 - Add Dungeons by sturm +//= 1.2 - Add All char in account unlocked by ace_killer +//= 1.3 - Add new 7 towns and 7 dungeons by escoteiro +// - Correct bug jawaii town by escoteiro +// - Remove some excessive warpras by escoteiro +//= 1.4 - Rewrite of the Warpa system [Neouni] +// - Corrected some bugs caused by autoconverting the old script +//= 1.4a - Rewrite of menu to be custom for each player [Neouni] +// - Dungeon listing rewrite +// - Town listing rewrite +// - GameMaster can Customise Main menu +//= 1.4b - Pricing round [Neouni] +// - GM menu added for pricing +// - Town Warp pricing tags added +// - Dungeon Warp pricing tags added +//= 1.5 - storage functions pricing [Neouni] +// - storage pricing added +// - kafra points setting added +// - kafra storage code security added +// - Healing scripts pricing added +// - Heal Part script added +//= 1.6 - Dungeon warp [Neouni] (beta only) +// - added option to add a extra fee for going down deeper into dungeon +// partly by rebuilding the dungeon warping into variable menu's +//= 1.6a - alot of fixes for beta release [Neouni] (public release) +// - fixed syntax problems +// - fixed missing pyramid gats in @DGat$ array +// - removed the culver level 5 that didn't exist +// and caused quite alot of problems (i didn't check while converting) +//-1.7 - Readability of Dungeon menu building increased [Neouni] +// - Thanatos Tower & Louyang Dungeon added +//-1.8 - changed around unlock variables [Neouni] +// - Moved warp variables to mark what you have unlocked to an binary array in login based permanent variable +// (warp variables are saved in login database, so all charservers have these unlocked) +// - Town Warp unlock array max 21/(unknown max) items used instead of max account #variables 32 ! +// - Dungeon Warp unlock array 28/(unknown max) items used instead of max account #variables 32 ! +// - (max login ##variables = 16, i used 3) +// - old variables are cleared on next save +// - Extra Variable clear added for every character, just in case (request by Terces) +//-1.8a - Show ammount of users on map [Neouni] +// - Default = off, enable in GM menu +// - Requested by escoteiro +//-1.8b - Small typo fixed in stampcard script [Neouni] +// - Reported by escoteiro +//-1.9 - Making it more edit friendly [Neouni] +// - Made Dungeon warp arrays more readable & editable (QWS_Darray) +// - Made town warp arrays more readable & editable (QWS_Tarray) +//-2.0 - Special Warp menu added [Neouni] +// - when all towns and dungeons are collected a new option on the main menu will show +// - it will only show when you setup the mapname of the warp ! +// - requested by escoteiro +// - several bugs fixed +//-2.0a - Dungeon Level Limit & Split dungeon fees +// - Limits dungeon based on Depth, access special setup menu thru GM-Menu +// - Dungeon fees split up based on Basic , Advanced & Overseas +// - Old Dungeon fee system removed, all dungeon fees now set to 0 +//-2.0b - Special warpname menu option name bug fixed +//-2.0c - Parenthesis fixes [KarLaeda] +//================================================================= + +//========================Function=&=Script======================== + + +function script Q_Warpra { +// Quick hack for backwards compatibility pre 1.8 +if (##QWS_UP < 18) callfunc "QWS_BackComp"; +// Extra clear variables because marker is saved on all char servers and variables can be on multiple servers +if (QWS_ExtraVARClear < 18) callfunc "Extra_Variable_Clear"; + + mes "[Warpra]"; + mes "Hello,"; + mes "I can warp you to any town or dungeon, but you need to unlock them first."; + mes "To unlock them, you have to visit us."; + mes "What do you need?"; + + if(getarg(0) == 0) callfunc "QWS_MMarray",0; + if(getarg(0) == 1) callfunc "QWS_MMarray",1; + + set @MMenu,select(@Mmenulist$[0],@Mmenulist$[1],@Mmenulist$[2],@Mmenulist$[3],@Mmenulist$[4],@Mmenulist$[5],@Mmenulist$[6],@Mmenulist$[7],@Mmenulist$[8],@Mmenulist$[9],@Mmenulist$[10],@Mmenulist$[11]); + + switch(@Mmenuref[@MMenu-1]+1){ + case 1: + goto GM_Menu; + case 2: + warp $QW_SP_WarpMap$, $QW_SP_WarpX, $QW_SP_WarpY; + close2; + debugmes "Please check your special warp menu settings on the Warpra"; + end; + case 3: + goto L_town; + case 4: + goto L_dungeon; + case 5: + goto L_FewWarps; + case 6: + goto L_NoUnlock; + case 7: + goto L_heal_Full; + case 8: + goto L_heal_Part; + case 9: + goto L_Storage; + case 10: + goto L_GStorage; + case 11: + goto L_end; + default: + goto L_end; +} + +//=====================GM-Menu=Functions=========================== + +GM_Menu: +next; +//----------------Town-Warp + if ($QW_TW_OFF == 0) mes "Town warping = ^00FF00 On ^000000"; + if ($QW_TW_OFF == 1) mes "Town warping = ^FF0000 Off ^000000"; +//----------------Dungeon-Warp + if ($QW_DW_OFF == 0) mes "Dungeon warping = ^00FF00 On ^000000"; + if ($QW_DW_OFF == 1) mes "Dungeon warping = ^FF0000 Off ^000000"; +//----------------Dungeon-Depth-Limit + if ($QW_DL == 1) mes "Dungeon Depth limit is ^00FF00 On ^000000"; + if ($QW_DL == 0) mes "Dungeon Depth limit is ^FF0000 Off ^000000"; + mes "If on Dungeon Depth limit is set to ^0000FF"+$QW_DDL+"^000000"; +//----------------ShowMapUsers + if ($QW_MapUserShow == 1) mes "Show Map Users = ^00FF00 On ^000000"; + if ($QW_MapUserShow == 0) mes "Show Map Users = ^FF0000 Off ^000000"; +//----------------Healfull + if ($QW_HF == 1) mes "Healing full = ^00FF00 On ^000000"; +//----------------Healpart + if ($QW_HP == 1) mes "Healing partly = ^00FF00 On ^000000"; + if ($QW_HF == 0 && $QW_HP == 0) mes "Healing = ^FF0000 Off ^000000"; +//----------------Storage + if ($QW_Stor == 1) mes "Storage = ^00FF00 On ^000000"; + if ($QW_Stor == 0) mes "Storage = ^FF0000 Off ^000000"; +//----------------GuildStorage + if ($QW_GStor == 1) mes "Guild Storage = ^00FF00 On ^000000"; + if ($QW_GStor == 0) mes "Guild Storage = ^FF0000 Off ^000000"; +//----------------KafraPoints + if ($QW_KPoint == 1) mes "Kafra points collect = ^00FF00 On ^000000"; + if ($QW_KPoint == 0) mes "Kafra points collect = ^FF0000 Off ^000000"; +//----------------GMmenu + switch(select("Town Warping","Dungeon Warping","Dungeon Level Limit","Show Map Users","Healing full","Healing partly","Storage","Guild Storage","Kafra points collect","Set Prices","Special Warp","Exit")) { + +// Using callsub and a small check to not make 1 part of the script set it on and the other turning it off again + +case 1: + if ($QW_TW_OFF == 0) { + set $QW_TW_OFF,1; + goto GM_Menu; + } else + set $QW_TW_OFF,0; + goto GM_Menu; +case 2: + if ($QW_DW_OFF == 0) { + set $QW_DW_OFF,1; + goto GM_Menu; + } else + set $QW_DW_OFF,0; + goto GM_Menu; +case 3: + goto DungeonLevelLimit; +case 4: + if ($QW_MapUserShow == 0) { + set $QW_MapUserShow,1; + goto GM_Menu; + } else + set $QW_MapUserShow,0; + goto GM_Menu; +case 5: + if ($QW_HF == 0) { + set $QW_HF,1; + set $QW_HP,0; + goto GM_Menu; + } else + set $QW_HF,0; + goto GM_Menu; +case 6: + if ($QW_HP == 0) { + set $QW_HP,1; + set $QW_HF,0; + goto GM_Menu; + } else + set $QW_HP,0; + goto GM_Menu; +case 7: + if ($QW_Stor == 0) { + set $QW_Stor,1; + goto GM_Menu; + } else + set $QW_Stor,0; + goto GM_Menu; +case 8: + if ($QW_GStor == 0) { + set $QW_GStor,1; + goto GM_Menu; + } else + set $QW_GStor,0; + goto GM_Menu; +case 9: + if ($QW_KPoint == 0) { + set $QW_KPoint,1; + goto GM_Menu; + } else + set $QW_KPoint,0; + goto GM_Menu; +case 10: + goto Setprice; +case 11: + goto SpecialWarpMenu; +default: + close; + end; +} + + +//======================GM-Menu=Pricing============================ + +Setprice: + if ($QW_DW_FEE != 0) set $QW_DW_FEE,0; + next; + mes "Scroll thru the list to see all the options"; +//----------------Warp-Basic-Price + if ($QW_BW_PRICE != 0) mes "Basic - Warps are = ^00FF00 "+$QW_BW_PRICE+" ^000000"; + if ($QW_BW_PRICE == 0) mes "Basic - Warps are = ^FF0000 Free ^000000"; +//----------------Warp-Advanced-Price + if ($QW_AW_PRICE != 0) mes "Advanced - Warps are = ^00FF00 "+$QW_AW_PRICE+" ^000000"; + if ($QW_AW_PRICE == 0) mes "Advanced - Warps are = ^FF0000 Free ^000000"; +//----------------Warp-Oversea-Price + if ($QW_OW_PRICE != 0) mes "Overseas - Warps are = ^00FF00 "+$QW_OW_PRICE+" ^000000"; + if ($QW_OW_PRICE == 0) mes "Overseas - Warps are = ^FF0000 Free ^000000"; +//----------------Basic-Dungeon-Level-Warp-Fee + if ($QW_BW_FEE != 0) mes "Basic Dungeon level warp fee = ^00FF00 "+$QW_BW_FEE+" ^000000 zeny per level"; + if ($QW_BW_FEE == 0) mes "Basic Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level"; +//----------------Advanced-Dungeon-Level-Warp-Fee + if ($QW_AW_FEE != 0) mes "Advanced Dungeon level warp fee = ^00FF00 "+$QW_AW_FEE+" ^000000 zeny per level"; + if ($QW_AW_FEE == 0) mes "Advanced Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level"; +//----------------Overseas-Dungeon-Level-Warp-Fee + if ($QW_OW_FEE != 0) mes "Overseas Dungeon level warp fee = ^00FF00 "+$QW_OW_FEE+" ^000000 zeny per level"; + if ($QW_OW_FEE == 0) mes "Overseas Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level"; +//----------------Heal-Full + if ($QW_HF_PRICE != 0) mes "Full Healing = ^00FF00 "+$QW_HF_PRICE+" ^000000"; + if ($QW_HF_PRICE == 0) mes "Full Healing = ^FF0000 Free ^000000"; +//----------------Heal-Part + if ($QW_HP_H_PRICE != 0) mes "^FF0000HP ^000000Part Healing = ^00FF00 "+$QW_HP_H_PRICE+" ^000000 a point"; + if ($QW_HP_H_PRICE == 0) mes "^FF0000HP ^000000Part Healing = ^FF0000 Free ^000000"; + if ($QW_HP_S_PRICE != 0) mes "^0000FFSP ^000000Part Healing = ^00FF00 "+$QW_HP_S_PRICE+" ^000000 a point"; + if ($QW_HP_S_PRICE == 0) mes "^0000FFSP ^000000Part Healing = ^FF0000 Free ^000000"; +//----------------Storage + if ($QW_S_PRICE != 0 && $QW_S_PRICE != 60) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000"; + if ($QW_S_PRICE == 0) mes "Storage = ^FF0000 Free ^000000"; + if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000"; +//----------------Guild-Storage + if ($QW_GS_PRICE != 0) mes "Guild Storage = ^00FF00 "+$QW_GS_PRICE+" ^000000"; + if ($QW_GS_PRICE == 0) mes "Guild Storage = ^FF0000 Free ^000000"; + + switch(select("Basic - Warps","Advanced - Warps","Overseas - Warps","Basic Dungeon warp fee","Advanced Dungeon warp fee","Overseas Dungeon warp fee","Full Healing","Part Healing","Storage","Guild Storage","Back","Exit")) { + +case 1: + next; + if ($QW_BW_PRICE != 0) mes "Basic - Warps are = ^00FF00 "+$QW_BW_PRICE+" ^000000"; + if ($QW_BW_PRICE == 0) mes "Basic - Warps are = ^FF0000 Free ^000000"; + mes "Basic - Warps are starter towns and related dungeons"; + input $QW_BW_PRICE; + goto Setprice; + +case 2: + next; + if ($QW_AW_PRICE != 0) mes "Advanced - Warps are = ^00FF00 "+$QW_AW_PRICE+" ^000000"; + if ($QW_AW_PRICE == 0) mes "Advanced - Warps are = ^FF0000 Free ^000000"; + mes "Advanced - Warps are towns and dungeons on the same island but not close to any starter town"; + input $QW_AW_PRICE; + goto Setprice; + +case 3: + next; + if ($QW_OW_PRICE != 0) mes "Overseas - Warps are = ^00FF00 "+$QW_OW_PRICE+" ^000000"; + if ($QW_OW_PRICE == 0) mes "Overseas - Warps are = ^FF0000 Free ^000000"; + mes "Overseas - Warps are towns and dungeons overseas reachable by boat from alberta"; + input $QW_OW_PRICE; + goto Setprice; + +case 4: + next; + if ($QW_BW_FEE != 0) mes "Basic Dungeon level warp fee = ^00FF00 "+$QW_BW_FEE+" ^000000 zeny per level"; + if ($QW_BW_FEE == 0) mes "Basic Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level"; + mes "Basic - Warps are starter town related dungeons"; + mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee"; + mes "These costs are on top of the regular Warp costs"; + input $QW_BW_FEE; + goto Setprice; + +case 5: + next; + if ($QW_AW_FEE != 0) mes "Advanced Dungeon level warp fee = ^00FF00 "+$QW_AW_FEE+" ^000000 zeny per level"; + if ($QW_AW_FEE == 0) mes "Advanced Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level"; + mes "Advanced - Warps are dungeons not close to any starter town"; + mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee"; + mes "These costs are on top of the regular Warp costs"; + input $QW_AW_FEE; + goto Setprice; + +case 6: + next; + if ($QW_OW_FEE != 0) mes "Overseas Dungeon level warp fee = ^00FF00 "+$QW_OW_FEE+" ^000000 zeny per level"; + if ($QW_OW_FEE == 0) mes "Overseas Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level"; + mes "Overseas - Warps are dungeons related to towns overseas reachable by boat from alberta"; + mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee"; + mes "These costs are on top of the regular Warp costs"; + input $QW_OW_FEE; + goto Setprice; + +case 7: + next; + if ($QW_HF_PRICE != 0) mes "Full Healing = ^00FF00 "+$QW_HF_PRICE+" ^000000"; + if ($QW_HF_PRICE == 0) mes "Full Healing = ^FF0000 Free ^000000"; + mes "Instant full healing 1 price"; + input $QW_HF_PRICE; + goto Setprice; + +case 8: + next; + if ($QW_HP_H_PRICE != 0) mes "^FF0000HP ^000000Part Healing = ^00FF00 "+$QW_HP_H_PRICE+" ^000000 a point"; + if ($QW_HP_H_PRICE == 0) mes "^FF0000HP ^000000Part Healing = ^FF0000 Free ^000000"; + if ($QW_HP_S_PRICE != 0) mes "^0000FFSP ^000000Part Healing = ^00FF00 "+$QW_HP_S_PRICE+" ^000000 a point"; + if ($QW_HP_S_PRICE == 0) mes "^0000FFSP ^000000Part Healing = ^FF0000 Free ^000000"; + mes "Healing price per 1 HP"; + mes "Healing price per 1 SP"; + mes "2 inputs, first HP then SP"; + input $QW_HP_H_PRICE; + input $QW_HP_S_PRICE; + goto Setprice; + +case 9: + next; + if ($QW_S_PRICE != 0 && $QW_S_PRICE != 60) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000"; + if ($QW_S_PRICE == 0) mes "Storage = ^FF0000 Free ^000000"; + if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000"; + mes "Storage cost, if set to 60 Kafra pricing will be handled"; + input $QW_S_PRICE; + goto Setprice; + +case 10: + next; + if ($QW_GS_PRICE != 0) mes "Guild Storage = ^00FF00 "+$QW_GS_PRICE+" ^000000"; + if ($QW_GS_PRICE == 0) mes "Guild Storage = ^FF0000 Free ^000000"; + mes "Guild Storage, free on Guild Kafras"; + input $QW_GS_PRICE; + goto Setprice; +case 11: + goto GM_Menu; +default: + close; + end; +} + +//======================Special=Warp=Menu========================== + +SpecialWarpMenu: + if ($QW_SP_Warpname$ == "") set $QW_SP_Warpname$,"Special Warp"; + next; + mes "Scroll down to see all the information"; + mes "The Special warp menu option will show in the main menu when all towns & dungeons are unlocked"; + mes "And when the map for special warping has been set"; + mes "menu option name set to ^0000FF"+$QW_SP_Warpname$+"^000000"; + if ($QW_SP_WarpMap$ == "") mes "map is currently ^FF0000not^000000 set, and Special warp menu is off"; + if ($QW_SP_WarpMap$ != "") mes "map is currently set to ^0000FF"+$QW_SP_WarpMap$+"^000000 and Special Warp menu is on"; + mes "coords are set to ^0000FF"+$QW_SP_WarpX+","+$QW_SP_WarpY+"^000000"; + switch(select("Set Special Warp name to show in menu", "Set WarpMap","Set Coords","Go Back to GM_Menu","Exit")){ + +case 1: + next; + mes "set the name to show in the menu as option"; + input $QW_SP_Warpname$; + goto SpecialWarpMenu; +case 2: + next; + mes "set the map in the ^0000FFmapname.gat^000000 format"; + mes "when this warpmap is set the option for players will show once they meet the requirments"; + mes "to disable Special Warp Menu option clear this !"; + input $QW_SP_WarpMap$; + goto SpecialWarpMenu; +case 3: + next; + mes "First input = Xcoord"; + mes "Second input = Ycoord"; + input $QW_SP_WarpX; + input $QW_SP_WarpY; + goto SpecialWarpMenu; +case 4: + goto GM_Menu; +default: + close; + end; +} + +//======================Dungeon=Level=Limit======================== +DungeonLevelLimit: + next; + if ($QW_DL == 1) mes "Dungeon Depth limit is ^00FF00 On ^000000"; + if ($QW_DL == 0) mes "Dungeon Depth limit is ^FF0000 Off ^000000"; + mes "If^00FF00 On ^000000Dungeon Depth limit is set to ^0000FF"+$QW_DDL+"^000000"; + + switch(select("Toggle Dungeon Depth Limit", "Set Dungeon Depth Limit","Go Back to GM_Menu","Exit")){ + +case 1: + if ($QW_DL == 0) { + set $QW_DL,1; + goto DungeonLevelLimit; + } else + set $QW_DL,0; + goto DungeonLevelLimit; +case 2: + next; + mes "set limit of Dungeon Depth 0 = entrance"; + mes "Depth 1 is a map connected to 0 and so on"; + mes "Shortest Route to map counts as depth"; + input $QW_DDL; + goto DungeonLevelLimit; +case 3: + goto GM_Menu; +default: + close; + end; +} + +//===========================Towns================================= + +L_town: + callfunc "QWS_Tarray"; + +// Expected maximum is set to 25 items, if you add more options add more ",@Tmenulist$[xx]" + + set @TWMenu,select(@Tmenulist$[0],@Tmenulist$[1],@Tmenulist$[2],@Tmenulist$[3],@Tmenulist$[4],@Tmenulist$[5],@Tmenulist$[6],@Tmenulist$[7],@Tmenulist$[8],@Tmenulist$[9],@Tmenulist$[10],@Tmenulist$[11],@Tmenulist$[12],@Tmenulist$[13],@Tmenulist$[14],@Tmenulist$[15],@Tmenulist$[16],@Tmenulist$[17],@Tmenulist$[18],@Tmenulist$[19],@Tmenulist$[20],@Tmenulist$[21],@Tmenulist$[22],@Tmenulist$[23],@Tmenulist$[24]); + + if (@Tmenuref[@TWMenu-1] == 57005) goto L_end; // 57005='dead' in hex + + if(Zeny<@pTprice[@Tmenuref[@TWMenu-1]]) callsub L_Short_on_zeny,0; + + set Zeny, Zeny-@pTprice[@Tmenuref[@TWMenu-1]]; + if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@pTprice[@Tmenuref[@TWMenu-1]]/16); + warp @pTmap$[@Tmenuref[@TWMenu-1]],@pTXcoords[@Tmenuref[@TWMenu-1]],@pTYcoords[@Tmenuref[@TWMenu-1]]; + close2; // this part safegaurds against errors/typos + set Zeny, Zeny+@pTprice[@Tmenuref[@TWMenu-1]]; + end; + +//=========================Dungeons================================ + +L_dungeon: + callfunc "QWS_Darray"; + +// Expected maximum is set to 35 items, if you add more options add more ",@Dmenulist$[xx]" + + set @DWMenu,select(@Dmenulist$[0],@Dmenulist$[1],@Dmenulist$[2],@Dmenulist$[3],@Dmenulist$[4],@Dmenulist$[5],@Dmenulist$[6],@Dmenulist$[7],@Dmenulist$[8],@Dmenulist$[9],@Dmenulist$[10],@Dmenulist$[11],@Dmenulist$[12],@Dmenulist$[13],@Dmenulist$[14],@Dmenulist$[15],@Dmenulist$[16],@Dmenulist$[17],@Dmenulist$[18],@Dmenulist$[19],@Dmenulist$[20],@Dmenulist$[21],@Dmenulist$[22],@Dmenulist$[23],@Dmenulist$[24],@Dmenulist$[25],@Dmenulist$[26],@Dmenulist$[27],@Dmenulist$[28],@Dmenulist$[29],@Dmenulist$[30],@Dmenulist$[31],@Dmenulist$[32],@Dmenulist$[33],@Dmenulist$[34]); + + if (@Dmenuref[@DWMenu-1] == 57005) goto L_end; // 57005='dead' in hex + set @DwarpMenu, (@Dmenuref[@DWMenu-1]); + callfunc "QWS_DLarray"; + + next; + mes "[Warpra]"; + mes "Please select where you want to go"; + +// Expected maximum is set to 18 items, if you have dungeons with more levels add more ",@DWLmenulist$[xx]" + set @DWLMenu,select(@DWLmenulist$[0], @DWLmenulist$[1], @DWLmenulist$[2], @DWLmenulist$[3], @DWLmenulist$[4], @DWLmenulist$[5], @DWLmenulist$[6], @DWLmenulist$[7], @DWLmenulist$[8], @DWLmenulist$[9], @DWLmenulist$[10], @DWLmenulist$[11], @DWLmenulist$[12], @DWLmenulist$[13], @DWLmenulist$[14], @DWLmenulist$[15], @DWLmenulist$[16], @DWLmenulist$[17]); + + if (@DWLmenuref[@DWLMenu-1] == 57005) goto L_end; // 57005='dead' in hex + + set @Darrayref, @DWLmenuref[@DWLMenu-1]; + set @warpprice, @pDprice[@Dmenuref[@DWMenu-1]]+(getd(@pDfee$[@Dmenuref[@DWMenu-1]])*(@DDepth[@Darrayref])); + + if(Zeny<@warpprice) callsub L_Short_on_zeny,1; + + set Zeny, Zeny-(@warpprice); + if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@warpprice/16); + warp @DGat$[@Darrayref],@DXcoords[@Darrayref],@DYcoords[@Darrayref]; + close2; // this part safegaurds against errors/typos + set Zeny, Zeny+@pTprice[@Tmenuref[@DWMenu-1]]; + end; + +//=============================Healing============================= + +L_heal_Full: + set @healfee, $QW_HF_PRICE; + if(Zeny<@healfee) callsub L_Short_on_zeny,4; + set Zeny, Zeny-@healfee; + if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@healfee/500); + next; + mes "[Warpra]"; + mes "Close this window and I will Heal you."; + close2; + percentheal 100,100; + end; + +L_heal_Part: + set @healchoice,select("Full heal","Health Points only","Skill Points only","Exit"); + if (@healchoice == 1) callsub PHeal,1,1; + if (@healchoice == 2) callsub PHeal,1,0; + if (@healchoice == 3) callsub PHeal,0,1; + goto L_end; + +PHeal: + next; + set @Hp, MaxHp-Hp; + set @Sp, MaxSp-Sp; + set @HpPrice, @hp*$QW_HP_H_PRICE; + set @SpPrice, @sp*$QW_HP_S_PRICE; + mes "[Warpra]"; + if(getarg(0) == 1) mes ""+@HpPrice+" Zeny for "+@Hp+" health points"; + if(getarg(1) == 1) mes ""+@SpPrice+" Zeny for "+@Sp+" skill points"; + set @total, @HpPrice+@SpPrice; + mes "for a total of "+@total+" zeny"; + if (select("Heal me","Let me see the choices again")==2) goto L_heal_Part; + + if(getarg(0) == 1)set @HpPrice, (MaxHp-Hp)*$QW_HP_H_PRICE; + if(getarg(1) == 1)set @SpPrice, (MaxSp-Sp)*$QW_HP_S_PRICE; + set @healfee, @HpPrice+@SpPrice; + if (getarg(0) == 1 && getarg(1) == 1 && Zeny<@healfee) goto Zeny_Short_Both; + if (getarg(0) == 1 && Zeny<@healfee) goto Zeny_short_HP; + if (getarg(1) == 1 && Zeny<@healfee) goto Zeny_short_SP; + set Zeny, Zeny-@healfee; + if (getarg(0) == 1 && getarg(1) == 1) percentheal 100,100; + if (getarg(0) == 1) percentheal 100,0; + if (getarg(1) == 1) percentheal 0,100; + close; + end; + +Zeny_Short_Both: + mes "[Warpra]"; + mes "choose another option, you can afford both."; + mes "I can heal as much as you can afford too."; + if (select("OK","Exit") == 2) goto L_end; + goto PHeal; + +Zeny_short_HP: + mes "[Warpra]"; + mes "do you want me to partly heal your HP ?"; + if (select("Yes","No") == 2) goto L_end; + set @Hp, Zeny/$QW_HP_H_PRICE; + set @HpPrice, @Hp*$QW_HP_H_PRICE; + if (@Hp == 1) mes "your not worth the effort"; + if (@Hp == 1) goto L_end; + set Zeny, Zeny-@HpPrice; + heal @Hp,0; + close; + end; + +Zeny_short_SP: + mes "[Warpra]"; + mes "do you want me to partly heal your SP ?"; + if (select("Yes","No") == 2) goto L_end; + set @Sp, Zeny/$QW_HP_S_PRICE; + set @SpPrice, @Sp*$QW_HP_S_PRICE; + if (@Sp == 1) mes "your not worth the effort"; + if (@Sp == 1) goto L_end; + set Zeny, Zeny-@SpPrice; + heal 0,@Sp; + close; + end; + +//=============================Storage============================= + +L_Storage: + next; + if(basicskillcheck(0) > 0 && getskilllv(1) < 6) goto L_StorageJBlow; + set @fee, $QW_S_PRICE; + if ($QW_S_PRICE == 60 && BaseJob == Job_Novice) set @fee, 30; + if(Zeny<@fee) callsub L_Short_on_zeny,2; + set Zeny, Zeny-@fee; + if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@fee/5); + + mes "[Warpra]"; + mes "Close this window and i will open your storage."; + + callsub F_CheckKafCode; //check your storage password thru kafra coding, if set + + close2; + openstorage; + end; + +F_CheckKafCode: +// you have to set the 1337 value the same as in functions_kafras.txt if you changed it !! + if(#kafra_code==0) return; + mes "Enter your storage password:"; + set @code_,0; + input @code_; + if(@code_ != #kafra_code-getcharid(3)-1337) { + dispbottom "Wrong storage password."; + close; + } + set @kafcode_try,0; + set @code_,0; + return; + +L_StorageJBlow: + mes "[Warpra]"; + mes "I am sorry but you have to be at least Novice level 6 if you want to use the storage."; + return; + +L_GStorage: + if(@GID==0) goto L_NoGuild; + if(Zeny<$QW_GS_PRICE) callsub L_Short_on_zeny,3; + set Zeny, Zeny-$QW_GS_PRICE; + if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + ($QW_GS_PRICE/5); + next; + mes "[Warpra]"; + mes "Close this window and i will open the ^5533FF" + GetGuildName(@GID) + "^000000 storage."; + close2; + guildopenstorage; + end; + +L_NoGuild: + next; + mes "[Warpra]"; + mes "You are not a part of a guild I can't help you."; + close; + end; + +L_end: + close; + end; + +//============================Few=Warp============================= +L_FewWarps: + next; + mes "[Warpra ]"; + mes "You need to unlock locations before they come available to you."; + mes "To unlock a location talk to my colleagues all over the world."; + mes "Each account got it's own stamp card."; + mes "Want me to check what stamps you have collected so far ?."; + if (select("Yes","No")==1) callsub stampcard; + close; + end; + + +//============================No=Unlock============================ + +L_NoUnlock: + next; + mes "[Warpra ]"; + mes "I don't unlock this location, my assistant deeper in the dungeon will unlock this place."; + close; + end; + +//=========================Short=On=Zeny=========================== +L_Short_on_zeny: + next; + if (getarg(0) == 0) mes "you don't seem to have "+@pTprice[@Tmenuref[@TWMenu-1]]+" zeny, to pay for the warp fee to "+@pTmenuitems$[@Tmenuref[@TWMenu-1]]+""; + if (getarg(0) == 1) mes "you don't seem to have "+@warpprice+" zeny, to pay for the warp fee to "+@DLevelName$[@DWLmenuref[@DWLMenu-1]]+" at "+@pDmenuitems$[@Dmenuref[@DWMenu-1]]+""; + if (getarg(0) == 2) mes "you don't seem to have "+@fee+" zeny, to pay for the storage fee"; + if (getarg(0) == 3) mes "you don't seem to have "+$QW_GS_PRICE+" zeny, to pay for the guild storage fee"; + if (getarg(0) == 4) mes "you don't seem to have "+@healfee+" zeny, to pay for your healing"; + close; + end; + +//===========================Stamp=Card============================ +stampcard: +// Counting of the ammount of places you have unlocked + next; + mes "Let me check what Towns you have"; + + callfunc "QWS_TownStamps"; + + mes "you collected^00FF00 "+@Tstamp+" of "+@MaxTstamp+" ^000000Towns."; + if (@Tstamp == 15) mes "They say there is an island you can only get to when married"; + if (@Tstamp == 15) emotion 18; + next; + + mes "Let me check what dungeons you have"; + + callfunc "QWS_DungeonStamps"; + + mes "you collected^00FF00 "+@Dstamp+" of "+@MaxDstamp+" ^000000Dungeons"; + mes "To unlock a dungeon, search for my colleague."; + mes "You can usually find them near the middle or end of the dungeon"; + return; +} + +function script QWS_TownStamps { + set @Tstamp,0; + set @MaxTstamp,21; //maximum number of towns + set @binvalue,1; + set @Tstamploop,0; + do { + if ((@binvalue & ##QWS_T_Unlock) == @binvalue) set @Tstamp,@Tstamp+1; + + set @binvalue, @binvalue *2; + set @Tstamploop, @Tstamploop + 1; + +}while (@Tstamploop < @MaxTstamp); +return; +} + +function script QWS_DungeonStamps { + set @Dstamp,0; + set @MaxDstamp,29; //maximum number of dungeons + set @binvalue,1; + set @Dstamploop,0; + do { + if ((@binvalue & ##QWS_D_Unlock) == @binvalue) set @Dstamp,@Dstamp+1; + + set @binvalue, @binvalue *2; + set @Dstamploop, @Dstamploop + 1; + +}while (@Dstamploop < @MaxDstamp); +return; +} + +//======================Main=Menu=Array============================ + +function script QWS_MMarray { + +// Currently 9 items + + setarray @pMmenuitems$[0], "GameMaster Menu", $QW_SP_Warpname$, "Warp to Towns", "Warp to Dungeons", "Why so few Warps ?", "Why don't you Unlock this location ?", "Heal", "Heal", "Storage", "Guild Storage", "Cancel"; + set @Mi,0; // That's our loop counter. + set @Mj,0; // That's the menu lines counter. +//----------------GameMaster-Menu + if (getgmlevel(80)) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if (getgmlevel(80)) set @Mmenuref[@Mj],@Mi; + if (getgmlevel(80)) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------Special-Warp + callfunc "QWS_TownStamps"; + callfunc "QWS_DungeonStamps"; + if (@Tstamp == @MaxTstamp && @Dstamp == @MaxDstamp && $QW_SP_WarpMap$ != "") { + set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + set @Mmenuref[@Mj],@Mi; + set @Mj,@Mj+1; + } + set @Mi,@Mi+1; +//----------------Town-Warp + if ($QW_TW_OFF == 0) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if ($QW_TW_OFF == 0) set @Mmenuref[@Mj],@Mi; + if ($QW_TW_OFF == 0) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------Dungeon-Warp + if ($QW_DW_OFF == 0) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if ($QW_DW_OFF == 0) set @Mmenuref[@Mj],@Mi; + if ($QW_DW_OFF == 0) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------Why-So-Few-Warps + set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + set @Mmenuref[@Mj],@Mi; + set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------No-Unlock + if (getarg(0) == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if (getarg(0) == 1) set @Mmenuref[@Mj],@Mi; + if (getarg(0) == 1) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------Healfull + if ($QW_HF == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if ($QW_HF == 1) set @Mmenuref[@Mj],@Mi; + if ($QW_HF == 1) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------Healpart + if ($QW_HP == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if ($QW_HP == 1) set @Mmenuref[@Mj],@Mi; + if ($QW_HP == 1) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------Storage + if ($QW_Stor == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if ($QW_Stor == 1) set @Mmenuref[@Mj],@Mi; + if ($QW_Stor == 1) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------GuildStorage + if ($QW_GStor == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if ($QW_GStor == 1) set @Mmenuref[@Mj],@Mi; + if ($QW_GStor == 1) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------Cancel + set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + set @Mmenuref[@Mj],@Mi; + return; + } + + + +//======================Town=Menu=Array============================ + +//----------------Prontera // I do this to find back sections quickly altho almost the same name is a line below it now +// setarray @pTmenuitems$[@Ti], "Prontera"; // Name of Town shown in Town select Menu +// setarray @pTprice[@Ti], $QW_BW_PRICE; // warp prices (Basic ($QW_BW_PRICE), Advanced ($QW_AW_PRICE), Overseas $QW_OW_PRICE) +// +// setarray @pTmap$[@Ti], "prontera.gat"; // mapfilename of town +// setarray @pTXcoords[@Ti], 156; // X warp coords +// setarray @pTYcoords[@Ti], 187; // Y warp coords +// +// QWS_Make_Town_Menu XXX; +// +// the full wap commands send out by this script for these example would be +//warp example_01.gat 123 123 +// +// use the same XXX number as you used when making your own town warpra +// Read below how +// +// example: +// +//syntax: +//mapname.gat,xcoord,ycoord,directionfacing script Name of NPC NPC-ID,{ +// +// Full example using fake map & coords +// +//example_01.gat,213,213,4 script Warpra 112,{ +// callfunc "QWS_Town_Warpra",XXX,"A FAKE TOWN FOR EXAMPLE"; +// close; +// } +// use a free number for XXX, last used is 20, for Yuno + +function script QWS_Tarray { + function QWS_Make_Town_Menu; + + set @Ti,0; // That's our loop counter. + set @Tj,0; // That's the menu lines counter. +//----------------Prontera + setarray @pTmenuitems$[@Ti], "Prontera"; + setarray @pTprice[@Ti], $QW_BW_PRICE; + + setarray @pTmap$[@Ti], "prontera.gat"; + setarray @pTXcoords[@Ti], 156; + setarray @pTYcoords[@Ti], 187; + + QWS_Make_Town_Menu 0; +//----------------Alberta + setarray @pTmenuitems$[@Ti], "Alberta"; + setarray @pTprice[@Ti], $QW_BW_PRICE; + + setarray @pTmap$[@Ti], "alberta.gat"; + setarray @pTXcoords[@Ti], 27; + setarray @pTYcoords[@Ti], 236; + + QWS_Make_Town_Menu 1; +//----------------Aldebaran + setarray @pTmenuitems$[@Ti], "Aldebaran"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "aldebaran.gat"; + setarray @pTXcoords[@Ti], 145; + setarray @pTYcoords[@Ti], 120; + + QWS_Make_Town_Menu 2; +//----------------Amatsu: + setarray @pTmenuitems$[@Ti], "Amatsu"; + setarray @pTprice[@Ti], $QW_OW_PRICE; + + setarray @pTmap$[@Ti], "amatsu.gat"; + setarray @pTXcoords[@Ti], 197; + setarray @pTYcoords[@Ti], 86; + + QWS_Make_Town_Menu 3; +//----------------Ayothaya: + setarray @pTmenuitems$[@Ti], "Ayothaya"; + setarray @pTprice[@Ti], $QW_OW_PRICE; + + setarray @pTmap$[@Ti], "ayothaya.gat"; + setarray @pTXcoords[@Ti], 150; + setarray @pTYcoords[@Ti], 57; + + QWS_Make_Town_Menu 4; +//----------------Comodo: + setarray @pTmenuitems$[@Ti], "Comodo"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "comodo.gat"; + setarray @pTXcoords[@Ti], 188; + setarray @pTYcoords[@Ti], 161; + + QWS_Make_Town_Menu 5; +//----------------Einbech: + setarray @pTmenuitems$[@Ti], "Einbech"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "einbech.gat"; + setarray @pTXcoords[@Ti], 172; + setarray @pTYcoords[@Ti], 126; + + QWS_Make_Town_Menu 6; +//----------------Einbroch: + setarray @pTmenuitems$[@Ti], "Einbroch"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "einbroch.gat"; + setarray @pTXcoords[@Ti], 230; + setarray @pTYcoords[@Ti], 191; + + QWS_Make_Town_Menu 7; +//----------------Geffen: + setarray @pTmenuitems$[@Ti], "Geffen"; + setarray @pTprice[@Ti], $QW_BW_PRICE; + + setarray @pTmap$[@Ti], "geffen.gat"; + setarray @pTXcoords[@Ti], 119; + setarray @pTYcoords[@Ti], 66; + + QWS_Make_Town_Menu 8; +//----------------Gonryun: + setarray @pTmenuitems$[@Ti], "Gonryun"; + setarray @pTprice[@Ti], $QW_OW_PRICE; + + setarray @pTmap$[@Ti], "gonryun.gat"; + setarray @pTXcoords[@Ti], 150; + setarray @pTYcoords[@Ti], 130; + + QWS_Make_Town_Menu 9; +//----------------Hugel: + setarray @pTmenuitems$[@Ti], "Hugel"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "hugel.gat"; + setarray @pTXcoords[@Ti], 95; + setarray @pTYcoords[@Ti], 121; + + QWS_Make_Town_Menu 10; +//----------------Izlude: + setarray @pTmenuitems$[@Ti], "Izlude"; + setarray @pTprice[@Ti], $QW_BW_PRICE; + + setarray @pTmap$[@Ti], "izlude.gat"; + setarray @pTXcoords[@Ti], 128; + setarray @pTYcoords[@Ti], 111; + + QWS_Make_Town_Menu 11; +//----------------Jawaii: + setarray @pTmenuitems$[@Ti], "Jawaii"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "jawaii.gat"; + setarray @pTXcoords[@Ti], 243; + setarray @pTYcoords[@Ti], 115; + + QWS_Make_Town_Menu 12; +//----------------Lighthalzen: + setarray @pTmenuitems$[@Ti], "Lighthalzen"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "lighthalzen.gat"; + setarray @pTXcoords[@Ti], 158; + setarray @pTYcoords[@Ti], 110; + + QWS_Make_Town_Menu 13; +//----------------Louyang: + setarray @pTmenuitems$[@Ti], "Louyang"; + setarray @pTprice[@Ti], $QW_OW_PRICE; + + setarray @pTmap$[@Ti], "louyang.gat"; + setarray @pTXcoords[@Ti], 210; + setarray @pTYcoords[@Ti], 108; + + QWS_Make_Town_Menu 14; +//----------------Lutie + setarray @pTmenuitems$[@Ti], "Lutie"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "xmas.gat"; + setarray @pTXcoords[@Ti], 148; + setarray @pTYcoords[@Ti], 131; + + QWS_Make_Town_Menu 15; +//----------------Morroc: + setarray @pTmenuitems$[@Ti], "Morroc"; + setarray @pTprice[@Ti], $QW_BW_PRICE; + + setarray @pTmap$[@Ti], "morocc.gat"; + setarray @pTXcoords[@Ti], 159; + setarray @pTYcoords[@Ti], 93; + + QWS_Make_Town_Menu 16; +//----------------Niflheim: + setarray @pTmenuitems$[@Ti], "Niflheim"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "niflheim.gat"; + setarray @pTXcoords[@Ti], 195; + setarray @pTYcoords[@Ti], 186; + + QWS_Make_Town_Menu 17; +//----------------Payon: + setarray @pTmenuitems$[@Ti], "Payon"; + setarray @pTprice[@Ti], $QW_BW_PRICE; + + setarray @pTmap$[@Ti], "payon.gat"; + setarray @pTXcoords[@Ti], 152; + setarray @pTYcoords[@Ti], 75; + + QWS_Make_Town_Menu 18; +//----------------Umbala: + setarray @pTmenuitems$[@Ti], "Umbala"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "umbala.gat"; + setarray @pTXcoords[@Ti], 130; + setarray @pTYcoords[@Ti], 130; + + QWS_Make_Town_Menu 19; +//----------------Yuno: + setarray @pTmenuitems$[@Ti], "Yuno"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "yuno.gat"; + setarray @pTXcoords[@Ti], 160; + setarray @pTYcoords[@Ti], 168; + + QWS_Make_Town_Menu 20; +//----------------Cancel + setarray @pTmenuitems$[@Ti], "Cancel"; + setarray @pTprice[@Ti], 0; + + set @Tmenulist$[@Tj],@pTmenuitems$[@Ti]; + set @Tmenuref[@Tj],57005; // 57005='dead' in hex + return; + + +//----------------Make Town Menu Function + +function QWS_Make_Town_Menu { + set @temptownmenubin,1; + if (getarg(0) == 0) goto menu_item; + set @templooptownmenu,0; + do { + set @temptownmenubin, @temptownmenubin * 2; + set @templooptownmenu, @templooptownmenu + 1; + }while (getarg(0) > @templooptownmenu); +// check marker and make menu item +menu_item: + if ((@temptownmenubin & ##QWS_T_Unlock) != @temptownmenubin) { + set @Ti,@Ti+1; + return; + } + if (@pTprice[@Ti] != 0 && $QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti]; + if (@pTprice[@Ti] == 0 && $QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]; + if (@pTprice[@Ti] != 0 && $QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]"+" -> "+@pTprice[@Ti]; + if (@pTprice[@Ti] == 0 && $QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]"; + set @Tmenuref[@Tj],@Ti; + set @Tj,@Tj+1; + set @Ti,@Ti+1; + return; + +} +} + +//====================Dungeon=Menu=Arrays========================== + +//----------------A FAKE DUNGEON FOR EXAMPLE // I do this to find back sections quickly altho almost the same name is a line below it now +// setarray @pDmenuitems$[@Di], "Fake Dungeon"; // Name of Dungeon shown in Dungeon select Menu +// setarray @pDprice[@Di], $QW_BW_PRICE; // warp prices (Basic ($QW_BW_PRICE), Advanced ($QW_AW_PRICE), Overseas $QW_OW_PRICE) +// setarray @pDfee$[@Di], "$QW_BW_FEE"; // Identifyer for the Dungeon fee caluclation (Basic ("$QW_BW_FEE"), Advanced ("$QW_AW_FEE"), Overseas ("$QW_OW_FEE")) please use setting in relation with option above (Don't forget "") +// setarray @DLevels[@Di], 2; //number of levels in dungeon (very important if set to high will shift all leveldata!!) +// +// setarray @DGat$[@Dref], "example_01.gat", "example_02.gat"; // mapfilename of dungeon level +// setarray @DLevelName$[@Dref], "Example Level 1", "Example Level 2"; // level name shown in dungeon level select +// setarray @DXcoords[@Dref], 123, 234; // X warp coords +// setarray @DYcoords[@Dref], 123, 234;// Y warp coords +// setarray @DDepth[@Dref], 0, 1; // relative depth to entrance to calculate extra warp fee +// +// QWS_Make_Dungeon_Menu XXX +// +// the full wap commands send out by this scripts for these examples would be +// for Example Level 1: +//warp example_01.gat 123 123 +// +// for Example Level 2: +//warp example_02.gat 234 234 +// +// use the same XXX number as you used when making your own dungeon unlocker (Warpra Helper) inside the dungeon +// (usually half way near a warp to next level) +// Read below how +// +// example: +// +//syntax: +//mapname.gat,xcoord,ycoord,directionfacing script Name of NPC NPC-ID,{ +// +// Full example using fake map & coords +// +//example_01.gat,213,213,4 script Warpra Helper 112,{ +// callfunc "QWS_Dungeon_Warpra",XXX,"A FAKE DUNGEON FOR EXAMPLE"; +// close; +// } +// use a free number for XXX, last used is 28, for Kiel Dungeon + +function script QWS_Darray { + function QWS_Make_Dungeon_Menu; + + set @Di,0; + set @Dj,0; + set @Dref,0; +//----------------ABYSS LAKE + setarray @pDmenuitems$[@Di], "Abyss Lake"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 3; + + setarray @DGat$[@Dref], "abyss_01.gat", "abyss_02.gat", "abyss_03.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; + setarray @DXcoords[@Dref], 265, 275, 116; + setarray @DYcoords[@Dref], 273, 270, 27; + setarray @DDepth[@Dref], 0, 1, 2; + + QWS_Make_Dungeon_Menu 0; + +//----------------AMATSU DUNGEON + setarray @pDmenuitems$[@Di], "Amatsu Dungeon"; + setarray @pDprice[@Di], $QW_OW_PRICE; + setarray @pDfee$[@Di], "$QW_OW_FEE"; + setarray @DLevels[@Di], 3; + + setarray @DGat$[@Dref], "ama_dun01.gat", "ama_dun02.gat", "ama_dun03.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; + setarray @DXcoords[@Dref], 227, 32, 119; + setarray @DYcoords[@Dref], 10, 43, 15; + setarray @DDepth[@Dref], 0, 1, 2; + + QWS_Make_Dungeon_Menu 1; + +//----------------ANT HELL + setarray @pDmenuitems$[@Di], "Ant Hell Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[2], 2; + + setarray @DGat$[@Dref], "anthell01.gat", "anthell02.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2"; + setarray @DXcoords[@Dref], 32, 34; + setarray @DYcoords[@Dref], 262, 263; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 2; + +//----------------AYOTAYA + setarray @pDmenuitems$[@Di], "Ayotaya Dungeon"; + setarray @pDprice[@Di], $QW_OW_PRICE; + setarray @pDfee$[@Di], "$QW_OW_FEE"; + setarray @DLevels[3], 2; + + setarray @DGat$[@Dref], "ayo_dun01.gat", "ayo_dun02.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2"; + setarray @DXcoords[@Dref], 275, 150; + setarray @DYcoords[@Dref], 17, 13; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 3; + +//----------------BYALAN + setarray @pDmenuitems$[@Di], "Byalan Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[4], 5; + + setarray @DGat$[@Dref], "iz_dun00.gat", "iz_dun01.gat", "iz_dun02.gat", "iz_dun03.gat", "iz_dun04.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5"; + setarray @DXcoords[@Dref], 168, 41, 236, 32, 26; + setarray @DYcoords[@Dref], 168, 37, 204, 63, 27; + setarray @DDepth[@Dref], 0, 1, 2, 3, 4; + + QWS_Make_Dungeon_Menu 4; + +//----------------CLOCK TOWER + setarray @pDmenuitems$[@Di], "Clock Tower Dungeon"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[5], 8; + + setarray @DGat$[@Dref], "c_tower1.gat", "c_tower2.gat", "c_tower3.gat", "c_tower4.gat", "alde_dun01.gat", "alde_dun02.gat", "alde_dun03.gat", "alde_dun04.gat"; + setarray @DLevelName$[@Dref], "Clock Tower Level 1", "Clock Tower Level 2", "Clock Tower Level 3", "Clock Tower Level 4", "Basement 1F", "Basement 2F", "Basement 3F", "Basement 4F"; + setarray @DXcoords[@Dref], 200, 268, 64, 32, 197, 262, 276, 130; + setarray @DYcoords[@Dref], 163, 26, 148, 63, 25, 41, 53, 130; + setarray @DDepth[@Dref], 0, 1, 2, 3, 1, 2, 3, 4; + + QWS_Make_Dungeon_Menu 5; + +//----------------COAL MINE + setarray @pDmenuitems$[@Di], "Coal Mine Dungeon"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[6], 3; + + setarray @DGat$[@Dref], "mjo_dun01.gat", "mjo_dun02.gat", "mjo_dun03.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; + setarray @DXcoords[@Dref], 52, 381, 302; + setarray @DYcoords[@Dref], 17, 343, 261; + setarray @DDepth[@Dref], 0, 1, 2; + + QWS_Make_Dungeon_Menu 6; + +//----------------CULVERT + setarray @pDmenuitems$[@Di], "Culvert Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[7], 4; + + setarray @DGat$[@Dref], "prt_sewb1.gat", "prt_sewb2.gat", "prt_sewb3.gat", "prt_sewb4.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4"; + setarray @DXcoords[@Dref], 132, 19, 180, 100; + setarray @DYcoords[@Dref], 248, 19, 169, 92; + setarray @DDepth[@Dref], 0, 1, 2, 3; + + QWS_Make_Dungeon_Menu 7; + +//----------------EINBECH DUNGEON + setarray @pDmenuitems$[@Di], "Einbech Dungeon"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[8], 2; + + setarray @DGat$[@Dref], "ein_dun01.gat", "ein_dun02.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2"; + setarray @DXcoords[@Dref], 22, 292; + setarray @DYcoords[@Dref], 14, 290; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 8; + +//----------------GEFENIA DUNGEON + setarray @pDmenuitems$[@Di], "Gefenia Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[9], 4; + + setarray @DGat$[@Dref], "gefenia01.gat", "gefenia02.gat", "gefenia03.gat", "gefenia04.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4"; + setarray @DXcoords[@Dref], 59, 201, 264, 33; + setarray @DYcoords[@Dref], 167, 35, 236, 270; + setarray @DDepth[@Dref], 0, 1, 2, 3; + + QWS_Make_Dungeon_Menu 9; + +//----------------GEFFEN DUNGEON + setarray @pDmenuitems$[@Di], "Geffen Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 4; + + setarray @DGat$[@Dref], "gef_dun00.gat", "gef_dun01.gat", "gef_dun02.gat", "gef_dun03.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4"; + setarray @DXcoords[@Dref], 104, 115, 106, 203; + setarray @DYcoords[@Dref], 100, 236, 132, 200; + setarray @DDepth[@Dref], 0, 1, 2, 3; + + QWS_Make_Dungeon_Menu 10; + +//----------------GLAST HEIM + setarray @pDmenuitems$[@Di], "Glast Heim Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 17; + + setarray @DGat$[@Dref], "glast_01.gat", "gl_church.gat", "gl_chyard.gat", "gl_in01.gat", "gl_cas01.gat", "gl_cas02.gat", "gl_knt01.gat", "gl_knt02.gat", "gl_prison.gat", "gl_prison1.gat", "gl_step.gat", "gl_sew01.gat", "gl_sew02.gat", "gl_sew03.gat", "gl_sew04.gat", "gl_dun01.gat", "gl_dun02.gat"; + setarray @DLevelName$[@Dref], "Glast Heim Entrance", "St. Abbey", "Churchyard", "Inside Glast Heim", "Castle 1", "Castle 2", "Chivalry 1", "Chivalry 2", "Prison 1", "Prison 2", "Steps", "Sewers 1", "Sewers 2", "Sewers 3", "Sewers 4", "Lowest Cave 1", "Lowest Cave 2"; + setarray @DXcoords[@Dref], 370, 156, 147, 121, 199, 104, 150, 157, 14, 150, 117, 258, 108, 171, 68, 133, 224; + setarray @DYcoords[@Dref], 300, 8, 15, 59, 29, 25, 10, 287, 70, 14, 124, 255, 291, 273, 277, 271, 274; + setarray @DDepth[@Dref], 0, 1, 2, 1, 1, 2, 1, 2, 2, 3, 1, 4, 2, 3, 4, 5, 6; + + QWS_Make_Dungeon_Menu 11; + +//----------------GONRYUN DUNGEON + setarray @pDmenuitems$[@Di], "Gonryun Dungeon"; + setarray @pDprice[@Di], $QW_OW_PRICE; + setarray @pDfee$[@Di], "$QW_OW_FEE"; + setarray @DLevels[@Di], 3; + + setarray @DGat$[@Dref], "gon_dun01.gat", "gon_dun02.gat", "gon_dun03.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; + setarray @DXcoords[@Dref], 143, 17, 68; + setarray @DYcoords[@Dref], 59, 114, 9; + setarray @DDepth[@Dref], 0, 1, 2; + + QWS_Make_Dungeon_Menu 12; + +//----------------HIDDEN DUNGEON + setarray @pDmenuitems$[@Di], "Hidden Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 3; + + setarray @DGat$[@Dref], "prt_maze01.gat", "prt_maze02.gat", "prt_maze03.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; + setarray @DXcoords[@Dref], 176, 94, 23; + setarray @DYcoords[@Dref], 6, 19, 8; + setarray @DDepth[@Dref], 0, 1, 2; + + QWS_Make_Dungeon_Menu 13; + +//----------------JUPEROS CAVE + setarray @pDmenuitems$[@Di], "Juperos Cave"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 2; + + setarray @DGat$[@Dref], "juperos_01.gat", "juperos_02.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2"; + setarray @DXcoords[@Dref], 53, 36; + setarray @DYcoords[@Dref], 247, 60; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 14; + +//----------------KIEL DUNGEON + setarray @pDmenuitems$[@Di], "Kiel Dungeon"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 2; + + setarray @DGat$[@Dref], "kh_dun01.gat", "kh_dun02.gat"; + setarray @DLevelName$[@Dref], "1st Floor", "2nd Floor"; + setarray @DXcoords[@Dref], 63, 42; + setarray @DYcoords[@Dref], 10, 197; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 28; + +//----------------LIGHTHALZEN BIO LAB + setarray @pDmenuitems$[@Di], "Lighthalzen Bio Lab"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 3; + + setarray @DGat$[@Dref], "lhz_dun01.gat", "lhz_dun02.gat", "lhz_dun03.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; + setarray @DXcoords[@Dref], 150, 150, 140; + setarray @DYcoords[@Dref], 287, 18, 137; + setarray @DDepth[@Dref], 0, 1, 2; + + QWS_Make_Dungeon_Menu 15; + +//----------------LOUYANG DUNGEON + setarray @pDmenuitems$[@Di], "Louyang Dungeon"; + setarray @pDprice[@Di], $QW_OW_PRICE; + setarray @pDfee$[@Di], "$QW_OW_FEE"; + setarray @DLevels[@Di], 2; + + setarray @DGat$[@Dref], "lou_dun02.gat", "lou_dun03.gat"; + setarray @DLevelName$[@Dref], "Royal Tomb Level 1", "Royal Tomb Level 2"; + setarray @DXcoords[@Dref], 282, 165; + setarray @DYcoords[@Dref], 20, 38; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 16; + +//----------------MAGMA DUNGEON + setarray @pDmenuitems$[@Di], "Magma Dungeon"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 2; + + setarray @DGat$[@Dref], "mag_dun01.gat", "mag_dun02.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2"; + setarray @DXcoords[@Dref], 126, 47; + setarray @DYcoords[@Dref], 69, 32; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 17; + +//----------------ODIN TEMPLE + setarray @pDmenuitems$[@Di], "Odin Temple"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 1; + + setarray @DGat$[@Dref], "odin_tem01.gat"; + setarray @DLevelName$[@Dref], "Level 1"; + setarray @DXcoords[@Dref], 96; + setarray @DYcoords[@Dref], 145; + setarray @DDepth[@Dref], 0; + + QWS_Make_Dungeon_Menu 18; + +//----------------ORC DUNGEON + setarray @pDmenuitems$[@Di], "Orc Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 2; + + setarray @DGat$[@Dref], "orcsdun01.gat", "orcsdun02.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2"; + setarray @DXcoords[@Dref], 32, 21; + setarray @DYcoords[@Dref], 169, 185; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 19; + +//----------------PAYON DUNGEON + setarray @pDmenuitems$[@Di], "Payon Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 5; + + setarray @DGat$[@Dref], "pay_dun00.gat", "pay_dun01.gat", "pay_dun02.gat", "pay_dun03.gat", "pay_dun04.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5"; + setarray @DXcoords[@Dref], 22, 19, 19, 155, 201; + setarray @DYcoords[@Dref], 180, 33, 63, 159, 204; + setarray @DDepth[@Dref], 0, 1, 2, 3, 4; + + QWS_Make_Dungeon_Menu 20; + +//----------------PYRAMIDS + setarray @pDmenuitems$[@Di], "Pyramids Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 6; + + setarray @DGat$[@Dref], "moc_pryd01.gat", "moc_pryd02.gat", "moc_pryd03.gat", "moc_pryd04.gat", "moc_pryd05.gat", "moc_pryd06.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Basement 1", "Basement 2"; + setarray @DXcoords[@Dref], 192, 10, 100, 181, 94, 192; + setarray @DYcoords[@Dref], 9, 192, 92, 11, 96, 8; + setarray @DDepth[@Dref], 0, 1, 2, 3, 1, 2; + + QWS_Make_Dungeon_Menu 21; + +//----------------SPHINX + setarray @pDmenuitems$[@Di], "Sphinx Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 5; + + setarray @DGat$[@Dref], "in_sphinx1.gat", "in_sphinx2.gat", "in_sphinx3.gat", "in_sphinx4.gat", "in_sphinx5.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5"; + setarray @DXcoords[@Dref], 192, 149, 210, 10, 100; + setarray @DYcoords[@Dref], 9, 81, 54, 222, 99; + setarray @DDepth[@Dref], 0, 1, 2, 3, 4; + + QWS_Make_Dungeon_Menu 22; + +//----------------SUNKEN SHIP + setarray @pDmenuitems$[@Di], "Sunken Ship Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 2; + + setarray @DGat$[@Dref], "treasure01.gat", "treasure02.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2"; + setarray @DXcoords[@Dref], 69, 102; + setarray @DYcoords[@Dref], 24, 27; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 23; + +//----------------THANATOS TOWER + setarray @pDmenuitems$[@Di], "Thanatos Tower"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 13; + + setarray @DGat$[@Dref], "tha_t01.gat", "tha_t02.gat", "tha_t03.gat", "tha_t04.gat", "tha_t05.gat", "tha_t06.gat", "tha_t07.gat", "tha_t08.gat", "tha_t09.gat", "tha_t10.gat", "tha_t11.gat", "tha_t12.gat", "thana_boss.gat"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Level 6", "Level 7", "Level 8", "Level 9", "Level 10", "Level 11", "Level 12", "Thanatos Boss"; + setarray @DXcoords[@Dref], 150, 150, 220, 59, 62, 206, 35, 105, 88, 168, 90, 129, 85; + setarray @DYcoords[@Dref], 35, 136, 158, 143, 11, 8, 166, 44, 145, 138, 36, 83, 76; + setarray @DDepth[@Dref], 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12; + + QWS_Make_Dungeon_Menu 24; + +//----------------TOY FACTORY + setarray @pDmenuitems$[@Di], "Toy Factory Dungeon"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 2; + + setarray @DGat$[@Dref], "xmas_dun01.gat", "xmas_dun02.gat"; + setarray @DLevelName$[@Dref], "Factory Warehouse", "Classifying Room"; + setarray @DXcoords[@Dref], 205, 129; + setarray @DYcoords[@Dref], 16, 133; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 25; + +//----------------TURTLE ISTLAND + setarray @pDmenuitems$[@Di], "Turtle Island Dungeon"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 4; + + setarray @DGat$[@Dref], "tur_dun01.gat", "tur_dun02.gat", "tur_dun03.gat", "tur_dun04.gat"; + setarray @DLevelName$[@Dref], "Outside", "Level 1", "Level 2", "Level 3"; + setarray @DXcoords[@Dref], 161, 148, 132, 100; + setarray @DYcoords[@Dref], 34, 256, 190, 192; + setarray @DDepth[@Dref], 0, 0, 1, 2; + + QWS_Make_Dungeon_Menu 26; + +//----------------UMBALA + setarray @pDmenuitems$[@Di], "Umbala Dungeon"; + setarray @pDprice[@Di], $QW_OW_PRICE; + setarray @pDfee$[@Di], "$QW_OW_FEE"; + setarray @DLevels[@Di], 3; + + setarray @DGat$[@Dref], "um_dun01.gat", "um_dun02.gat", "yggdrasil01.gat"; + setarray @DLevelName$[@Dref], "Carpenter's Shop in The Tree", "Passage to a Foreign World", "Hvergelmir's Fountain"; + setarray @DXcoords[@Dref], 205, 48, 40; + setarray @DYcoords[@Dref], 16, 30, 63; + setarray @DDepth[@Dref], 0, 1, 2; + + QWS_Make_Dungeon_Menu 27; + +//----------------Cancel + setarray @pDmenuitems$[@Di], "Cancel"; + setarray @pDprice[@Di], 0; + + set @Dmenulist$[@Dj],@pDmenuitems$[@Di]; + set @Dmenuref[@Dj],57005; // 57005='dead' in hex + return; + + +//----------------Make Dungeon Menu Function + +function QWS_Make_Dungeon_Menu { + set @tempdungeonmenubin,1; + if (getarg(0) == 0) goto menu_item; + set @temploopdungeonmenu,0; + do { + set @tempdungeonmenubin, @tempdungeonmenubin * 2; + set @temploopdungeonmenu, @temploopdungeonmenu + 1; + }while (getarg(0) > @temploopdungeonmenu); +// check marker and make menu item +menu_item: + if ((@tempdungeonmenubin & ##QWS_D_Unlock) != @tempdungeonmenubin) { + setarray @DLocRef[@Di], @Dref; + set @Dref, @Dref+@DLevels[@Di]; + set @Di,@Di+1; + return; + } + if ($QW_MapUserShow == 1) { + set @tempmapusers,0; + set @mapusersloop,0; + do { + set @tempmapusers,(getmapusers(@DGat$[@Dref+@mapusersloop]) + @tempmapusers); + set @mapusersloop, (@mapusersloop + 1); + }while (@DLevels[@Di] > @mapusersloop); + if (@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" ["+@tempmapusers+"] -> "+@pDprice[@Di]; + if (@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" ["+@tempmapusers+"]"; + set @Dmenuref[@Dj],@Di; + set @Dj,@Dj+1; + setarray @DLocRef[@Di], @Dref; + set @Dref, @Dref+@DLevels[@Di]; + set @Di,@Di+1; + return; + } + if (@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di]; + if (@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]; + set @Dmenuref[@Dj],@Di; + set @Dj,@Dj+1; + setarray @DLocRef[@Di], @Dref; + set @Dref, @Dref+@DLevels[@Di]; + set @Di,@Di+1; + return; + +} +} + +function script QWS_DLarray { +//----------------Start building Menu + set @DWref,@DLocRef[@DwarpMenu]; // That's our reference to the arrays with leveldata. + set @DWi,0; // That's our loop counter. + set @DWj,0; // That's the menu lines counter. + cleararray @DWLmenulist$[0],"",20; // Clearing the array to get rid off ghost items in menu + do { + if ($QW_DL == 0 || $QW_DDL >= @DDepth[@DWref]) { + set @warpprice, (@pDprice[@DwarpMenu]+ (getd(@pDfee$[@DwarpMenu])*@DDepth[@DWref])); + + if (@warpprice != 0 && $QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" -> "+@warpprice; + if (@warpprice == 0 && $QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]; + if (@warpprice != 0 && $QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"] -> "+@warpprice; + if (@warpprice == 0 && $QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"]"; + set @DWLmenuref[@DWj],@DWref; + + set @DWj,@DWj+1; + } + set @DWref, @DWref+1; + set @DWi,@DWi+1; + }while (@DWi < @DLevels[@DwarpMenu]); + set @DWLmenulist$[@DWj], "Exit"; + set @DWLmenuref[@DWj],57005; // 57005='dead' in hex + return; + } + + +//=================Backwards=Compatibility=Pre=1.8================= + +function script QWS_BackComp { +// reference where i put the towns: "Prontera"[0], "Alberta"[1], "Aldebaran"[2], "Amatsu"[3], "Ayothaya"[4], "Comodo"[5], "Einbech"[6], "Einbroch"[7], "Geffen"[8], "Gonryun"[9], "Hugel"[10], "Izlude"[11], "Jawaii"[12], "Lighthalzen"[13], "Louyang"[14], "Lutie"[15], "Morroc"[16], "Niflheim"[17], "Payon"[18], "Umbala"[19], "Yuno"[20]; +// reference where i put the dungeons: "Abyss Lake"[0], "Amatsu Dungeon"[1], "Ant Hell Dungeon"[2], "Ayotaya Dungeon"[3], "Byalan Dungeon"[4], "Clock Tower Dungeon"[5], "Coal Mine Dungeon"[6], "Culvert Dungeon"[7], "Einbech Dungeon"[8], "Gefenia Dungeon"[9], "Geffen Dungeon"[10], "Glast Heim Dungeon"[11], "Gonryun Dungeon"[12], "Hidden Dungeon"[13], "Juperos Cave"[14], "Lighthalzen Bio Lab"[15], "Louyang Dungeon"[16], "Magma Dungeon"[17], "Odin Temple"[18], "Orc Dungeon"[19], "Payon Dungeon"[20], "Pyramids Dungeon"[21], "Sphinx Dungeon"[22], "Sunken Ship Dungeon"[23], "Thanatos Tower"[24], "Toy Factory Dungeon"[25], "Turtle Island Dungeon"[26], "Umbala Dungeon"[27], "Kiel Dungeon[28]; +// also clears variables so that the account file variables can be used for something else variable 0 = variable delete on next save + +// Towns + set @towntemp,0; + if (#prontera != 0) set @towntemp,@towntemp + 1; + if (#alberta != 0) set @towntemp,@towntemp + 2; + if (#aldebaran != 0) set @towntemp,@towntemp + 4; + if (#amatsu != 0) set @towntemp,@towntemp + 8; + if (#ayotaya != 0) set @towntemp,@towntemp + 16; + if (#comodo != 0) set @towntemp,@towntemp + 32; + if (#einbech != 0) set @towntemp,@towntemp + 64; + if (#einbroch != 0) set @towntemp,@towntemp + 128; + if (#geffen != 0) set @towntemp,@towntemp + 256; + if (#gonryun != 0) set @towntemp,@towntemp + 512; + if (#hugel != 0) set @towntemp,@towntemp + 1024; + if (#izlude != 0) set @towntemp,@towntemp + 2048; + if (#jawaii != 0) set @towntemp,@towntemp + 4096; + if (#lighthalzen != 0) set @towntemp,@towntemp + 8192; + if (#louyang != 0) set @towntemp,@towntemp + 16384; + if (#xmas != 0) set @towntemp,@towntemp + 32768; + if (#morocc != 0) set @towntemp,@towntemp + 65536; + if (#niflheim != 0) set @towntemp,@towntemp + 131072; + if (#payon != 0) set @towntemp,@towntemp + 262144; + if (#umbala != 0) set @towntemp,@towntemp + 524288; + if (#yuno != 0) set @towntemp,@towntemp + 1048576; +// Clear Town variables + set #prontera,0; + set #alberta,0; + set #aldebaran,0; + set #amatsu,0; + set #ayotaya,0; + set #comodo,0; + set #einbech,0; + set #einbroch,0; + set #geffen,0; + set #gonryun,0; + set #hugel,0; + set #izlude,0; + set #jawaii,0; + set #lighthalzen,0; + set #louyang,0; + set #xmas,0; + set #morocc,0; + set #niflheim,0; + set #payon,0; + set #umbala,0; + set #yuno,0; +// set Town warp unlock variable +set ##QWS_T_Unlock, (##QWS_T_Unlock | @towntemp); + //because multiple account servers now stack on 1 variable i used a 'or' to stack them +// Dungeons + set @dungeontemp,0; + if (#abyss != 0) set @dungeontemp,@dungeontemp + 1; + if (#ama_dun != 0) set @dungeontemp,@dungeontemp + 2; + if (#anthell != 0) set @dungeontemp,@dungeontemp + 4; + if (#ayotaya_dun != 0) set @dungeontemp,@dungeontemp + 8; + if (#iz_dun != 0) set @dungeontemp,@dungeontemp + 16; + if (#c_tower != 0) set @dungeontemp,@dungeontemp + 32; + if (#mjo_dun != 0) set @dungeontemp,@dungeontemp + 64; + if (#prt_sewb != 0) set @dungeontemp,@dungeontemp + 128; + if (#einbech_dun != 0) set @dungeontemp,@dungeontemp + 256; + if (#gefenia != 0) set @dungeontemp,@dungeontemp + 512; + if (#gef_dun != 0) set @dungeontemp,@dungeontemp + 1024; + if (#gl_dun != 0) set @dungeontemp,@dungeontemp + 2048; + if (#gon_dun != 0) set @dungeontemp,@dungeontemp + 4096; + if (#hid_dun != 0) set @dungeontemp,@dungeontemp + 8192; + if (#juperos != 0) set @dungeontemp,@dungeontemp + 16384; + if (#lighthalzen_dun != 0) set @dungeontemp,@dungeontemp + 32768; + if (#louyang_dun != 0) set @dungeontemp,@dungeontemp + 65536; + if (#mag_dun != 0) set @dungeontemp,@dungeontemp + 131072; + if (#odintemple != 0) set @dungeontemp,@dungeontemp + 262144; + if (#orcsdun != 0) set @dungeontemp,@dungeontemp + 524288; + if (#pay_dun != 0) set @dungeontemp,@dungeontemp + 1048576; + if (#moc_pryd != 0) set @dungeontemp,@dungeontemp + 2097152; + if (#in_sphinx != 0) set @dungeontemp,@dungeontemp + 4194304; + if (#treasure != 0) set @dungeontemp,@dungeontemp + 8388608; + if (#thanatos_tower != 0) set @dungeontemp,@dungeontemp + 16777216; + if (#xmas_dun != 0) set @dungeontemp,@dungeontemp + 33554432; + if (#tur_dun != 0) set @dungeontemp,@dungeontemp + 67108864; + if (#um_dun != 0) set @dungeontemp,@dungeontemp + 134217728; +// Clear Dungeon variables + set #abyss,0; + set #ama_dun,0; + set #anthell,0; + set #ayotaya_dun,0; + set #iz_dun,0; + set #c_tower,0; + set #mjo_dun,0; + set #prt_sewb,0; + set #einbech_dun,0; + set #gefenia,0; + set #gef_dun,0; + set #gl_dun,0; + set #gon_dun,0; + set #hid_dun,0; + set #juperos,0; + set #lighthalzen_dun,0; + set #louyang_dun,0; + set #mag_dun,0; + set #odintemple,0; + set #orcsdun,0; + set #pay_dun,0; + set #moc_pryd,0; + set #in_sphinx,0; + set #treasure,0; + set #thanatos_tower,0; + set #xmas_dun,0; + set #tur_dun,0; + set #um_dun,0; +// set Town warp unlock variable +set ##QWS_D_Unlock, (##QWS_D_Unlock | @dungeontemp); +//mark that this character has done the upgrade to 1.8 +set ##QWS_UP,18; +return; +} + + +//===================Extra=Variable=Clear=Pre=1.8================== +function script Extra_Variable_Clear { +// Clear Town variables + set #prontera,0; + set #alberta,0; + set #aldebaran,0; + set #amatsu,0; + set #ayotaya,0; + set #comodo,0; + set #einbech,0; + set #einbroch,0; + set #geffen,0; + set #gonryun,0; + set #hugel,0; + set #izlude,0; + set #jawaii,0; + set #lighthalzen,0; + set #louyang,0; + set #xmas,0; + set #morocc,0; + set #niflheim,0; + set #payon,0; + set #umbala,0; + set #yuno,0; + +// Clear Dungeon variables + set #abyss,0; + set #ama_dun,0; + set #anthell,0; + set #ayotaya_dun,0; + set #iz_dun,0; + set #c_tower,0; + set #mjo_dun,0; + set #prt_sewb,0; + set #einbech_dun,0; + set #gefenia,0; + set #gef_dun,0; + set #gl_dun,0; + set #gon_dun,0; + set #hid_dun,0; + set #juperos,0; + set #lighthalzen_dun,0; + set #louyang_dun,0; + set #mag_dun,0; + set #odintemple,0; + set #orcsdun,0; + set #pay_dun,0; + set #moc_pryd,0; + set #in_sphinx,0; + set #treasure,0; + set #thanatos_tower,0; + set #xmas_dun,0; + set #tur_dun,0; + set #um_dun,0; + +// as the account based variables are limited just run this on every character to save some variables +set QWS_ExtraVARClear,18; +return; +} + +//================Dungeon=Warpras=That=Only=Unlock================= + +function script QWS_Dungeon_Warpra { + function QWS_D_getbin; + function QWS_D_setbin; + + if (QWS_D_getbin(getarg(0)) == 0 && getarg(1) != "") { + mes "[Warpra]"; + mes getarg(1)+" unlocked!"; + QWS_D_setbin(getarg(0)); + return; + } else if (QWS_D_getbin(getarg(0)) == 1){ + mes "[Warpra]"; + mes "Sorry I can only unlock this location."; + } else + debugmes "QWS_Dungeon_Warpra error, improper syntax ?"; + return; + + +function QWS_D_setbin { + set @tempsetbindata,1; + if (getarg(0) == 0) goto binset; + set @temploopsetbin,0; + do { + set @tempsetbindata, @tempsetbindata * 2; + set @temploopsetbin, @temploopsetbin + 1; + } while (getarg(0) > @temploopsetbin); +binset: + set ##QWS_D_Unlock,(##QWS_D_Unlock | @tempsetbindata); + return; +} + +function QWS_D_getbin { + set @tempgetbindata,1; + if (getarg(0) == 0) goto binget; + set @temploopgetbin,0; + do { + set @tempgetbindata, @tempgetbindata * 2; + set @temploopgetbin, @temploopgetbin + 1; + } while (getarg(0) > @temploopgetbin); +binget: + if ((@tempgetbindata & ##QWS_D_Unlock) == @tempgetbindata) return 1; + return 0; +} +} + +//==========================Town=Warpras=========================== + +function script QWS_Town_Warpra { + function QWS_T_getbin; + function QWS_T_setbin; + + if (QWS_T_getbin(getarg(0)) == 0 && getarg(1) != "") { + mes "[Warpra]"; + mes getarg(1)+" unlocked!"; + QWS_T_setbin(getarg(0)); + return; + } else if (QWS_T_getbin(getarg(0)) == 1){ +callfunc "Q_Warpra",0; + } else + debugmes "QWS_Town_Warpra error, improper syntax ?"; + return; + + +function QWS_T_setbin { + set @tempsetbindata,1; + if (getarg(0) == 0) goto binset; + set @temploopsetbin,0; + do { + set @tempsetbindata, @tempsetbindata * 2; + set @temploopsetbin, @temploopsetbin + 1; + } while (getarg(0) > @temploopsetbin); +binset: + set ##QWS_T_Unlock,(##QWS_T_Unlock | @tempsetbindata); + return; +} + +function QWS_T_getbin { + set @tempgetbindata,1; + if (getarg(0) == 0) goto binget; + set @temploopgetbin,0; + do { + set @tempgetbindata, @tempgetbindata * 2; + set @temploopgetbin, @temploopgetbin + 1; + } while (getarg(0) > @temploopgetbin); +binget: + if ((@tempgetbindata & ##QWS_T_Unlock) == @tempgetbindata) return 1; + return 0; +} +} +//============================Warpras============================== + +alb2trea.gat,73,101,4 script Warpra 113,{ + callfunc "Q_Warpra",1; +} +ama_fild01.gat,178,325,1 script Warpra 113,{ + callfunc "Q_Warpra",1; +} +gef_fild10.gat,71,339,4 script Warpra 113,{ + callfunc "Q_Warpra",1; +} +izlu2dun.gat,104,82,4 script Warpra 113,{ + callfunc "Q_Warpra",1; +} +mjolnir_02.gat,85,363,4 script Warpra 113,{ + callfunc "Q_Warpra",1; +} +moc_fild04.gat,207,331,4 script Warpra 113,{ + callfunc "Q_Warpra",1; +} +moc_fild19.gat,106,97,4 script Warpra 113,{ + callfunc "Q_Warpra",1; +} +moc_ruins.gat,64,166,4 script Warpra 113,{ + callfunc "Q_Warpra",1; +} +niflheim.gat,197,192,3 script Warpra 113,{ + callfunc "Q_Warpra",1; +} +pay_arche.gat,39,135,4 script Warpra 113,{ + callfunc "Q_Warpra",1; +} +prt_fild05.gat,273,215,4 script Warpra 113,{ + callfunc "Q_Warpra",1; +} +tur_dun01.gat,148,239,4 script Warpra 113,{ + callfunc "Q_Warpra",1; +} +valkyrie.gat,48,35,8 script Warpra 113,{ + callfunc "Q_Warpra",1; +} +yuno_fild03.gat,37,135,4 script Warpra 113,{ + callfunc "Q_Warpra",1; +} + +alberta.gat,32,240,4 script Warpra 113,{ + callfunc "QWS_Town_Warpra",1,"Alberta Town"; + close; +} +aldebaran.gat,146,118,4 script Warpra 113,{ + callfunc "QWS_Town_Warpra",2,"Aldebaran Town"; + close; +} +ayothaya.gat,216,171,5 script Warpra 113,{ + callfunc "QWS_Town_Warpra",4,"Ayotaya Town"; + close; +} +amatsu.gat,193,81,1 script Warpra 113,{ + callfunc "QWS_Town_Warpra",3,"Amatsu Town"; + close; +} +comodo.gat,195,158,4 script Warpra 113,{ + callfunc "QWS_Town_Warpra",5,"Comodo Town"; + close; +} +einbroch.gat,229,196,5 script Warpra 113,{ + callfunc "QWS_Town_Warpra",7,"Einbroch Town"; + close; +} +einbech.gat,173,131,5 script Warpra 113,{ + callfunc "QWS_Town_Warpra",6,"Einbech Town"; + close; +} +geffen.gat,116,66,4 script Warpra 113,{ + callfunc "QWS_Town_Warpra",8,"Geffen Town"; + close; +} +gonryun.gat,152,130,4 script Warpra 113,{ + callfunc "QWS_Town_Warpra",9,"Gonryun Town"; + close; +} +hugel.gat,90,127,5 script Warpra 113,{ + callfunc "QWS_Town_Warpra",10,"Hugel Town"; + close; +} +jawaii.gat,107,182,5 script Warpra 113,{ + callfunc "QWS_Town_Warpra",12,"Jawaii Town"; + close; +} +izlude.gat,132,116,4 script Warpra 113,{ + callfunc "QWS_Town_Warpra",11,"Izlude Town"; + close; +} +lighthalzen.gat,153,100,5 script Warpra 113,{ + callfunc "QWS_Town_Warpra",13,"Lighthalzen Town"; + close; +} +louyang.gat,211,106,4 script Warpra 113,{ + callfunc "QWS_Town_Warpra",14,"Louyang Town"; + close; +} +morocc.gat,157,95,4 script Warpra 113,{ + callfunc "QWS_Town_Warpra",16,"Morroc Town"; + close; +} +nif_fild01.gat,319,77,1 script Warpra 113,{ + callfunc "QWS_Town_Warpra",17,"Niflheim Town"; + close; +} +payon.gat,183,110,4 script Warpra 113,{ + callfunc "QWS_Town_Warpra",18,"Payon Town"; + close; +} +prontera.gat,147,172,5 script Warpra 113,{ + callfunc "QWS_Town_Warpra",0,"Prontera Town"; + close; +} +umbala.gat,133,130,4 script Warpra 113,{ + callfunc "QWS_Town_Warpra",19,"Umbala Town"; + close; +} +xmas.gat,151,136,4 script Warpra 113,{ + callfunc "QWS_Town_Warpra",15,"Lutie Town"; + close; +} +yuno.gat,138,162,4 script Warpra 113,{ + callfunc "QWS_Town_Warpra",20,"Yuno Town"; + close; +} + +abyss_02.gat,274,266,1 script Warpra 113,{ + callfunc "QWS_Dungeon_Warpra",0,"Abyss Lake"; + close; +} + +ama_dun02.gat,192,118,5 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",1,"Amatsu Dungeon"; + close; +} + +anthell02.gat,170,165,3 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",2,"Ant Hell Dungeon"; + close; +} + +ayo_dun02.gat,258,193,5 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",3,"Ayotaya Dungeon"; + close; +} + +ein_dun02.gat,292,282,1 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",8,"Einbech Dungeon"; + close; +} + +iz_dun03.gat,202,47,2 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",4,"Byalan Dungeon"; + close; +} + +c_tower3.gat,129,106,4 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",5,"Clock Tower Dungeon"; + close; +} + +mjo_dun02.gat,39,25,4 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",6,"Coal Mine Dungeon"; + close; +} + +prt_sewb2.gat,176,30,3 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",7,"Culvert Dungeon"; + close; +} + +gefenia03.gat,137,34,0 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",9,"Gefenia Dungeon"; + close; +} + +gef_dun02.gat,218,61,2 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",10,"Gefen Dungeon"; + close; +} + +glast_01.gat,371,308,3 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",11,"Glast Heim Dungeon"; + close; +} + +gon_dun01.gat,167,273,4 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",12,"Gonryun Dungeon"; + close; +} + +juperos_02.gat,127,154,5 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",14,"Juperos Cave"; + close; +} + +kh_dun01.gat,14,224,3 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",28,"Kiel Dungeon"; + close; +} + +lhz_dun02.gat,156,151,5 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",15,"Lighthalzen Bio Lab"; + close; +} + +lou_dun02.gat,168,264,4 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",16,"Louyang Dungeon"; + close; +} + +mag_dun02.gat,46,41,3 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",17,"Magma Dungeon"; + close; +} + +odin_tem01.gat,115,148,3 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",18,"Odin Temple"; + close; +} + +orcsdun01.gat,185,11,3 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",19,"Orc Dungeon"; + close; +} + +pay_dun03.gat,162,143,3 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",20,"Payon Dungeon"; + close; +} + +moc_pryd02.gat,101,95,3 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",21,"Pyramides Dungeon"; + close; +} + +in_sphinx2.gat,274,268,1 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",22,"Sphinx Dungeon"; + close; +} + +tha_t07.gat,111,162,3 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",24,"Thanatos Tower"; + close; +} + +treasure02.gat,104,40,3 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",23,"Sunken Ship Dungeon"; + close; +} + +xmas_dun02.gat,124,131,3 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",25,"Toy Factory Dungeon"; + close; +} + +um_dun02.gat,44,28,3 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",27,"Umbala Dungeon"; + close; +} + +tur_dun02.gat,162,23,3 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",26,"Turtle Island Dungeon"; + close; +} +prt_maze02.gat,102,69,4 script Warpra Helper 112,{ + callfunc "QWS_Dungeon_Warpra",13,"Hidden Dungeon"; + close; +} diff --git a/npc/custom/eAAC_Scripts/roll_a_dice.txt b/npc/custom/eAAC_Scripts/roll_a_dice.txt index 5a5e47b73..469683dd7 100644 --- a/npc/custom/eAAC_Scripts/roll_a_dice.txt +++ b/npc/custom/eAAC_Scripts/roll_a_dice.txt @@ -1,244 +1,244 @@ -//==========================================================
-//Roll a Dice NPC
-//==========================================================
-//Made by birkiczd
-//==========================================================
-//This game lets you and the Dicer throw 3 dices.
-//Whoever get's a higher number (the player or dealer) wins.
-//==========================================================
-//Version:1.0 - made script public
-// 1.1 - fixed a few bugs,added dice emos =)
-// 1.2 - made variables for the amount of zenys for
-// each bet so it is easy for people to costumize
-// the script
-// 1.3 - added more emoticons,made an Info menu
-// option which contains explanations and rules,
-// added the amount of lost/won zeny on the end
-// of each game,added more colors
-// 1.4 - some small code optimization thanks to Myzter
-//==========================================================
-
-
-cmd_in02.gat,181,98,2 script Dicer 57,{
-
-//These variables allow you to set the amount of zeny people can bet
-set @betzeny1,500; //500 zeny
-set @betzeny2,1000; //1000 zeny
-set @betzeny3,2000; //2000 zeny
-set @betzeny4,10000; //10000 zeny
-
-//Variable for the number guess zeny bet
-set @betnum, 1000; //1000 Zeny
-
-
- mes "[Dicer]";
- mes "Welcome to the Revolution Dice Game.You wanna check your luck with dices?Remember I am the dice expert and rarely someone was able to beat me.";
- next;
- mes "[Dicer]";
- mes "What would you like to do?";
- next;
- menu "Play",L_play,"Info",L_info,"Go away",L_go;
-
-L_go:
- mes "[Dicer]";
- mes "Please come again when you are ready.";
- close;
-
-L_info:
- mes "[Dicer]";
- mes "Please choose one of the following options for more informations:";
- next;
- menu "Main Rules",L_main,"Bets and Wins",L_bet,"Extra Games",L_extra,"Go away",L_go;
-
-L_main:
- mes "[Dicer]";
- mes "^0080FFRoll A Dice^000000 is a very simple game.The game allows you and the NPC to throw 3 dices.Whoever gets a higher total number wins.";
- next;
- goto L_info;
-
-L_bet:
- mes "[Dicer]";
- mes "You have 4 zeny amounts to choose for your bet.If you choose a high bet your win will also be higher,it is that simple.Also various extra games can increase your win.";
- next;
- mes "[Dicer]";
- mes "Example:";
- mes "^0080FFBet^000000 ^0080FFWin^000000";
- mes "500 1000";
- mes "1000 2000";
- mes "2000 4000";
- mes "10000 20000";
- next;
- goto L_info;
-
-L_extra:
- mes "[Dicer]";
- mes "You can also try increasing your win by playing extra games like guessing your total number at the end of the game.It will cost you an extra amount of zeny but if you guess the number your win will be tripled instead of doubled.";
- next;
- goto L_info;
-
-L_play:
- mes "[Dicer]";
- mes "Ok,please choose the amount of zeny you want to bet:";
- next;
- menu ""+@betzeny1+" Zeny",L_zeny1,""+@betzeny2+" Zeny",L_zeny2,""+@betzeny3+" Zeny",L_zeny3,""+@betzeny4+" Zeny",L_zeny4,"Too rich for my blood...",L_go;
-
- L_zeny1:
- if(Zeny < @betzeny1) goto L_nzeny;
- set @bet, @betzeny1;
- goto L_gamea;
- L_zeny2:
- if(Zeny < @betzeny2) goto L_nzeny;
- set @bet, @betzeny2;
- goto L_gamea;
- L_zeny3:
- if(Zeny < @betzeny3) goto L_nzeny;
- set @bet, @betzeny3;
- goto L_gamea;
- L_zeny4:
- if(Zeny < @betzeny4) goto L_nzeny;
- set @bet, @betzeny4;
- goto L_gamea;
-
-L_nzeny:
- mes "[Dicer]";
- emotion 20;
- mes "Sorry but it seems you don't have enough zeny!";
- close;
-
-L_gamea:
- mes "[Dicer]";
- mes "Would you like to try to increase your win by trying to guess the number you will get?";
- mes "It will cost you another ^0080FF"+@betnum+"^000000 zeny.";
- next;
- menu "Yes",L_gamec,"No",L_gameb;
-
-L_gamec:
- if(Zeny < @betnum + @bet) goto L_nzeny;
- mes "[Dicer]";
- mes "Please input the number you think you will get (3-18).";
- input @numg;
- if(@numg<3) message strcharinfo(0),"Number is too low, input again.";
- if(@numg>18) message strcharinfo(0),"Number is too high, input again.";
- if(@numg<3||@numg>18) goto L_gamec;
- set Zeny, Zeny - @betnum;
- next;
- goto L_gameb;
-
-L_gameb:
-
- set @dea1, rand(1,6);
- set @dea2, rand(1,6);
- set @dea3, rand(1,6);
- set @pla1, rand(1,6);
- set @pla2, rand(1,6);
- set @pla3, rand(1,6);
- set @deatot, @dea1+@dea2+@dea3;
- set @platot, @pla1+@pla2+@pla3;
-
- mes "[Dicer]";
- mes "I will be the first one to roll the dices,and after that you will throw them.I am feeling lucky today, so you better go away before I take every zeny you have.";
- next;
- mes "[^0080FFDicer 1st Turn^000000]";
- mes "Throwing first dice!";
- mes ".....roll.....roll....roll....";
- emotion 58;
- mes " ";
- mes "First throw: ^0080FF"+@dea1+" ^000000";
- next;
- mes "[^0080FFDicer 2nd Turn^000000]";
- mes "Throwing second dice!";
- emotion 58;
- mes ".....roll.....roll....roll....";
- mes " ";
- mes "Second throw: ^0080FF"+@dea2+" ^000000";
- next;
- mes "[^0080FFDicer 3rd Turn^000000]";
- mes "Throwing third dice!";
- emotion 58;
- mes ".....roll.....roll....roll....";
- mes " ";
- mes "Third throw: ^0080FF"+@dea3+" ^000000";
- next;
- mes "[Dicer]";
- mes "Now it's your turn to throw the dices.I bet you can't get higher numbers then me.";
- next;
- mes "[^0080FFPlayer 1st Turn^000000]";
- mes "Throwing first dice!";
- mes ".....roll.....roll....roll....";
- emotion 58;
- mes " ";
- mes "First throw: ^0080FF"+@pla1+" ^000000";
- next;
- mes "[^0080FFPlayer 2nd Turn^000000]";
- mes "Throwing second dice!";
- emotion 58;
- mes ".....roll.....roll....roll....";
- mes " ";
- mes "Second throw: ^0080FF"+@pla2+" ^000000";
- next;
- mes "[^0080FFPlayer 3rd Turn^000000]";
- mes "Throwing third dice!";
- emotion 58;
- mes ".....roll.....roll....roll....";
- mes " ";
- mes "Third throw: ^0080FF"+@pla3+" ^000000";
- next;
- mes "[Dicer]";
- mes "Let's look at our total numbers:";
- mes " ";
- mes "Dicer Total: ^0080FF"+@deatot+" ^000000.";
- mes "Player Total: ^0080FF"+@platot+" ^000000.";
- next;
- if (@platot < @deatot) goto L_lose;
- if (@platot == @deatot) goto L_again;
- if (@platot > @deatot && @platot == @numg) goto L_win2;
- if (@platot > @deatot) goto L_win1;
-
-L_lose:
- mes "[Dicer]";
- set Zeny, Zeny - @bet;
- emotion 39;
- mes "I got a higher number!!!";
- mes "See I told you nobody can beat me!";
- mes " ";
- mes "You lost ^0080FF"+@bet+"^000000 Zeny.";
- next;
- goto L_againa;
-
-L_again:
- mes "[Dicer]";
- emotion 54;
- mes "It seems it's a draw.Let's play again.";
- next;
- goto L_play;
-
-L_win1:
- mes "[Dicer]";
- set Zeny, Zeny + @bet*2;
- set @wona, @bet*2;
- emotion 36;
- mes "I can't belive I lost. Here take your money.";
- mes " ";
- mes "You won ^0080FF"+@wona+"^000000 Zeny.";
- next;
- goto L_againa;
-
-L_win2:
- mes "[Dicer]";
- set Zeny, Zeny + @bet*3;
- set @wonb, @bet*3;
- emotion 36;
- mes "You even guessed the total number you got.I can't belive I lost. Here is your money.";
- mes " ";
- mes "You won ^0080FF"+@wonb+"^000000 Zeny.";
- next;
- goto L_againa;
-
-L_againa:
- mes "[Dicer]";
- mes "Would you like to play again?";
- next;
- menu "Yes",L_play,"No",L_go;
-
-
-}
+//========================================================== +//Roll a Dice NPC +//========================================================== +//Made by birkiczd +//========================================================== +//This game lets you and the Dicer throw 3 dices. +//Whoever get's a higher number (the player or dealer) wins. +//========================================================== +//Version:1.0 - made script public +// 1.1 - fixed a few bugs,added dice emos =) +// 1.2 - made variables for the amount of zenys for +// each bet so it is easy for people to costumize +// the script +// 1.3 - added more emoticons,made an Info menu +// option which contains explanations and rules, +// added the amount of lost/won zeny on the end +// of each game,added more colors +// 1.4 - some small code optimization thanks to Myzter +//========================================================== + + +cmd_in02.gat,181,98,2 script Dicer 57,{ + +//These variables allow you to set the amount of zeny people can bet +set @betzeny1,500; //500 zeny +set @betzeny2,1000; //1000 zeny +set @betzeny3,2000; //2000 zeny +set @betzeny4,10000; //10000 zeny + +//Variable for the number guess zeny bet +set @betnum, 1000; //1000 Zeny + + + mes "[Dicer]"; + mes "Welcome to the Revolution Dice Game.You wanna check your luck with dices?Remember I am the dice expert and rarely someone was able to beat me."; + next; + mes "[Dicer]"; + mes "What would you like to do?"; + next; + menu "Play",L_play,"Info",L_info,"Go away",L_go; + +L_go: + mes "[Dicer]"; + mes "Please come again when you are ready."; + close; + +L_info: + mes "[Dicer]"; + mes "Please choose one of the following options for more informations:"; + next; + menu "Main Rules",L_main,"Bets and Wins",L_bet,"Extra Games",L_extra,"Go away",L_go; + +L_main: + mes "[Dicer]"; + mes "^0080FFRoll A Dice^000000 is a very simple game.The game allows you and the NPC to throw 3 dices.Whoever gets a higher total number wins."; + next; + goto L_info; + +L_bet: + mes "[Dicer]"; + mes "You have 4 zeny amounts to choose for your bet.If you choose a high bet your win will also be higher,it is that simple.Also various extra games can increase your win."; + next; + mes "[Dicer]"; + mes "Example:"; + mes "^0080FFBet^000000 ^0080FFWin^000000"; + mes "500 1000"; + mes "1000 2000"; + mes "2000 4000"; + mes "10000 20000"; + next; + goto L_info; + +L_extra: + mes "[Dicer]"; + mes "You can also try increasing your win by playing extra games like guessing your total number at the end of the game.It will cost you an extra amount of zeny but if you guess the number your win will be tripled instead of doubled."; + next; + goto L_info; + +L_play: + mes "[Dicer]"; + mes "Ok,please choose the amount of zeny you want to bet:"; + next; + menu ""+@betzeny1+" Zeny",L_zeny1,""+@betzeny2+" Zeny",L_zeny2,""+@betzeny3+" Zeny",L_zeny3,""+@betzeny4+" Zeny",L_zeny4,"Too rich for my blood...",L_go; + + L_zeny1: + if(Zeny < @betzeny1) goto L_nzeny; + set @bet, @betzeny1; + goto L_gamea; + L_zeny2: + if(Zeny < @betzeny2) goto L_nzeny; + set @bet, @betzeny2; + goto L_gamea; + L_zeny3: + if(Zeny < @betzeny3) goto L_nzeny; + set @bet, @betzeny3; + goto L_gamea; + L_zeny4: + if(Zeny < @betzeny4) goto L_nzeny; + set @bet, @betzeny4; + goto L_gamea; + +L_nzeny: + mes "[Dicer]"; + emotion 20; + mes "Sorry but it seems you don't have enough zeny!"; + close; + +L_gamea: + mes "[Dicer]"; + mes "Would you like to try to increase your win by trying to guess the number you will get?"; + mes "It will cost you another ^0080FF"+@betnum+"^000000 zeny."; + next; + menu "Yes",L_gamec,"No",L_gameb; + +L_gamec: + if(Zeny < @betnum + @bet) goto L_nzeny; + mes "[Dicer]"; + mes "Please input the number you think you will get (3-18)."; + input @numg; + if(@numg<3) message strcharinfo(0),"Number is too low, input again."; + if(@numg>18) message strcharinfo(0),"Number is too high, input again."; + if(@numg<3||@numg>18) goto L_gamec; + set Zeny, Zeny - @betnum; + next; + goto L_gameb; + +L_gameb: + + set @dea1, rand(1,6); + set @dea2, rand(1,6); + set @dea3, rand(1,6); + set @pla1, rand(1,6); + set @pla2, rand(1,6); + set @pla3, rand(1,6); + set @deatot, @dea1+@dea2+@dea3; + set @platot, @pla1+@pla2+@pla3; + + mes "[Dicer]"; + mes "I will be the first one to roll the dices,and after that you will throw them.I am feeling lucky today, so you better go away before I take every zeny you have."; + next; + mes "[^0080FFDicer 1st Turn^000000]"; + mes "Throwing first dice!"; + mes ".....roll.....roll....roll...."; + emotion 58; + mes " "; + mes "First throw: ^0080FF"+@dea1+" ^000000"; + next; + mes "[^0080FFDicer 2nd Turn^000000]"; + mes "Throwing second dice!"; + emotion 58; + mes ".....roll.....roll....roll...."; + mes " "; + mes "Second throw: ^0080FF"+@dea2+" ^000000"; + next; + mes "[^0080FFDicer 3rd Turn^000000]"; + mes "Throwing third dice!"; + emotion 58; + mes ".....roll.....roll....roll...."; + mes " "; + mes "Third throw: ^0080FF"+@dea3+" ^000000"; + next; + mes "[Dicer]"; + mes "Now it's your turn to throw the dices.I bet you can't get higher numbers then me."; + next; + mes "[^0080FFPlayer 1st Turn^000000]"; + mes "Throwing first dice!"; + mes ".....roll.....roll....roll...."; + emotion 58; + mes " "; + mes "First throw: ^0080FF"+@pla1+" ^000000"; + next; + mes "[^0080FFPlayer 2nd Turn^000000]"; + mes "Throwing second dice!"; + emotion 58; + mes ".....roll.....roll....roll...."; + mes " "; + mes "Second throw: ^0080FF"+@pla2+" ^000000"; + next; + mes "[^0080FFPlayer 3rd Turn^000000]"; + mes "Throwing third dice!"; + emotion 58; + mes ".....roll.....roll....roll...."; + mes " "; + mes "Third throw: ^0080FF"+@pla3+" ^000000"; + next; + mes "[Dicer]"; + mes "Let's look at our total numbers:"; + mes " "; + mes "Dicer Total: ^0080FF"+@deatot+" ^000000."; + mes "Player Total: ^0080FF"+@platot+" ^000000."; + next; + if (@platot < @deatot) goto L_lose; + if (@platot == @deatot) goto L_again; + if (@platot > @deatot && @platot == @numg) goto L_win2; + if (@platot > @deatot) goto L_win1; + +L_lose: + mes "[Dicer]"; + set Zeny, Zeny - @bet; + emotion 39; + mes "I got a higher number!!!"; + mes "See I told you nobody can beat me!"; + mes " "; + mes "You lost ^0080FF"+@bet+"^000000 Zeny."; + next; + goto L_againa; + +L_again: + mes "[Dicer]"; + emotion 54; + mes "It seems it's a draw.Let's play again."; + next; + goto L_play; + +L_win1: + mes "[Dicer]"; + set Zeny, Zeny + @bet*2; + set @wona, @bet*2; + emotion 36; + mes "I can't belive I lost. Here take your money."; + mes " "; + mes "You won ^0080FF"+@wona+"^000000 Zeny."; + next; + goto L_againa; + +L_win2: + mes "[Dicer]"; + set Zeny, Zeny + @bet*3; + set @wonb, @bet*3; + emotion 36; + mes "You even guessed the total number you got.I can't belive I lost. Here is your money."; + mes " "; + mes "You won ^0080FF"+@wonb+"^000000 Zeny."; + next; + goto L_againa; + +L_againa: + mes "[Dicer]"; + mes "Would you like to play again?"; + next; + menu "Yes",L_play,"No",L_go; + + +} diff --git a/npc/custom/eAAC_Scripts/vendmachine.txt b/npc/custom/eAAC_Scripts/vendmachine.txt index 82a514c8d..ac7735b23 100644 --- a/npc/custom/eAAC_Scripts/vendmachine.txt +++ b/npc/custom/eAAC_Scripts/vendmachine.txt @@ -1,296 +1,296 @@ -//=====================================
-// Vending Machine Script
-// v2.3
-//=====================================
-// by Celestria
-//=====================================
-// Changelog:
-// 2.3 - Added in "Slam" feature, as well as admin ability to turn machine on and off.
-// - Added admin menu. Allows GMs to put machines in/out of service, and to clear
-// all jammed items.
-//
-// 2.2 - Added in/Renamed some variables to allow a single machine to block on several
-// items simultaneously. This fix also allows the two-item drop to work with every
-// item the machine is jammed on.
-//
-// 2.1 - Fixed an error where if one machine jammed on a menu item (say 3 for example),
-// if another machine also jammed on the same menu item (3 in this case), the original
-// machine to jam would be unjammed.
-// - This fix only allows a machine to jam one item at a time. Will fix in the future.
-//
-// 2.0 - Completely redid the script using a call-function.
-// Now all replica scripts can simply be a copy of Vending Machine,
-// but with variables modified to suit it''s intended use.
-//
-// 1.1 - Fixed $jamplayer1 not being a string, thanks to Terces.
-// - Changed random number that intiates jam to 1, to allow for faster modification of jam rates.
-//
-// 1.0 - Creted a script for selling numerous items that would occasionally jam on players.
-// - Used numbered variables to allow for multiplacation of the script.
-//=====================================
-
-p_track01.gat,45,58,4 script Vending Machine#1 910,{
-
- set @machine,1; //sets the unique number of this machine
- //DO NOT have two machines with the same number
-
- set @jamrate,1000; //Odds of machine jamming will be 1 in @jamrate
-
- set @slam,0; //set this to 0 to turn on the slam feature, any other setting disables it.
- set @fallrate,10; //Odds of machine falling on someone who hits it are 1 in @fallrate
- set @freerate,10000; //Odds of machine giving an item to someone who hits it are 1 in @freerate
-
- set @admin,99; //sets GM level needed to access Admin menu
-
- // the following sets the items for sale. Script currently only handles 10 items.
- setarray @item[0], 12143, 519, 565;
- setarray @price[0], 100, 50, 200;
-
- set @itemn$[0], getitemname(@item[0]);
- set @itemn$[1], getitemname(@item[1]);
- set @itemn$[2], getitemname(@item[2]);
- set @itemn$[3], getitemname(@item[3]);
- set @itemn$[4], getitemname(@item[4]);
- set @itemn$[5], getitemname(@item[5]);
- set @itemn$[6], getitemname(@item[6]);
- set @itemn$[7], getitemname(@item[7]);
- set @itemn$[8], getitemname(@item[8]);
- set @itemn$[9], getitemname(@item[9]);
-
- set @menu$[0], @itemn$[0]+" - "+@price[0];
- set @menu$[1], @itemn$[1]+" - "+@price[1];
- set @menu$[2], @itemn$[2]+" - "+@price[2];
- set @menu$[3], "Cancel";
- set @menu$[4], "";
- set @menu$[5], "";
- set @menu$[6], "";
- set @menu$[7], "";
- set @menu$[8], "";
- set @menu$[9], "";
- set @menu$[10], ""; // "Cancel" only. Used if vending ten items.
-
- callfunc "F_Vend1";
-}
-
-
-
-
-
-
-
-
-
-//===============================================================================================
-// Functions
-//
-// !!!DO NOT EDIT BELOW THIS LINE!!!
-//
-//===============================================================================================
-
-function script F_Vend1 {
-
- if(getgmlevel() >= @admin) goto M_Admin;
-
-M_Player:
- if($outorder[@machine]) goto M_Ooo;
- if(@slam) callfunc "F_Vend2";
- mes "You see a vending machine. What would you like to do?";
- next;
- menu "Buy an item",M_Vend,"Hit it",M_Hit;
-
-M_Vend:
- callfunc "F_Vend2";
- end;
-
-M_Hit:
- callfunc "F_Slam";
- end;
-
-M_Admin:
- mes "[Admin Mode]";
- mes "What would you like to do?";
- next;
- menu "Player Mode",M_Player,"Post 'Out of Order'",M_Ooo2,"Remove 'Out of Order'",M_Ooo3,"Fix Jammed Items",M_Fix;
-
-M_Ooo:
- mes "Out of Order";
- close;
-
-M_Ooo2:
- set $outorder[@machine],1;
- mes "The machine is now Out of Service";
- close;
-
-M_Ooo3:
- set $outorder[@machine],0;
- mes "The machine is now in service.";
- close;
-
-M_Fix:
- set $itemjam0$[@machine],"0";
- set $itemjam1$[@machine],"0";
- set $itemjam2$[@machine],"0";
- set $itemjam3$[@machine],"0";
- set $itemjam4$[@machine],"0";
- set $itemjam5$[@machine],"0";
- set $itemjam6$[@machine],"0";
- set $itemjam7$[@machine],"0";
- set $itemjam8$[@machine],"0";
- set $itemjam9$[@machine],"0";
- mes "All jammed items have been fixed.";
- close;
-}
-
-function script F_Vend2 {
-
- if(strcharinfo(0)==$itemjam0$[@machine]) goto B_StillJammed;
- if(strcharinfo(0)==$itemjam1$[@machine]) goto B_StillJammed;
- if(strcharinfo(0)==$itemjam2$[@machine]) goto B_StillJammed;
- if(strcharinfo(0)==$itemjam3$[@machine]) goto B_StillJammed;
- if(strcharinfo(0)==$itemjam4$[@machine]) goto B_StillJammed;
- if(strcharinfo(0)==$itemjam5$[@machine]) goto B_StillJammed;
- if(strcharinfo(0)==$itemjam6$[@machine]) goto B_StillJammed;
- if(strcharinfo(0)==$itemjam7$[@machine]) goto B_StillJammed;
- if(strcharinfo(0)==$itemjam8$[@machine]) goto B_StillJammed;
- if(strcharinfo(0)==$itemjam9$[@machine]) goto B_StillJammed;
- set @jammed,rand(1,@jamrate);
- mes "You peek inside the vending machine to see what's available.";
- next;
- menu @menu$[0],M_Ite0, @menu$[1],M_Ite1, @menu$[2],M_Ite2, @menu$[3],M_Ite3,
- @menu$[4],M_Ite4, @menu$[5],M_Ite5, @menu$[6],M_Ite6, @menu$[7],M_Ite7,
- @menu$[8],M_Ite8, @menu$[9],M_Ite9, @menu$[10],M_Ite10;
-
- M_Ite0:
- set @num, 0;
- goto B_Buy;
- M_Ite1:
- set @num, 1;
- goto B_Buy;
- M_Ite2:
- set @num, 2;
- goto B_Buy;
- M_Ite3:
- set @num, 3;
- goto B_Buy;
- M_Ite4:
- set @num, 4;
- goto B_Buy;
- M_Ite5:
- set @num, 5;
- goto B_Buy;
- M_Ite6:
- set @num, 6;
- goto B_Buy;
- M_Ite7:
- set @num, 7;
- goto B_Buy;
- M_Ite8:
- set @num, 8;
- goto B_Buy;
- M_Ite9:
- set @num, 9;
- goto B_Buy;
- M_Ite10:
- set @num, 10;
- goto B_Buy;
-
-
-
-B_Cancel:
- mes "On second thoughts, you decide not to buy anything.";
- close;
-
-B_StillJammed:
- mes "You shake and punch the vending machine, but it appears no matter how much energy you exert, the dang item isn't going to come loose.";
- next;
- mes "["+strcharinfo(0)+"]";
- mes "DANG VENDING MACHINES!";
- close;
-
-B_Broke:
- mes "As you put your last zeny in, you realise you don't have enough to afford the product.";
- mes "Sadly you hit the refund button and pick up what little zeny you have.";
- close;
-
-B_Buy:
- if (@menu$[@num] == "Cancel") goto B_Cancel;
- if(@num==0){if($itemjam0$[@machine]!="0") set @jammed,0;}
- if(@num==1){if($itemjam1$[@machine]!="0") set @jammed,0;}
- if(@num==2){if($itemjam2$[@machine]!="0") set @jammed,0;}
- if(@num==3){if($itemjam3$[@machine]!="0") set @jammed,0;}
- if(@num==4){if($itemjam4$[@machine]!="0") set @jammed,0;}
- if(@num==5){if($itemjam5$[@machine]!="0") set @jammed,0;}
- if(@num==6){if($itemjam6$[@machine]!="0") set @jammed,0;}
- if(@num==7){if($itemjam7$[@machine]!="0") set @jammed,0;}
- if(@num==8){if($itemjam8$[@machine]!="0") set @jammed,0;}
- if(@num==9){if($itemjam9$[@machine]!="0") set @jammed,0;}
- if(Zeny < @price[@num]) goto B_Broke;
- set Zeny,Zeny-@price[@num];
- if(@jammed == 1) goto B_Jamitem;
- mes "Vrrrrrrrr~";
- mes "*clunk*";
- next;
- if(@jammed == 0) goto B_Get2;
- getitem @item[@num],1;
- mes "A "+@itemn$[@num]+" pops out.";
- close;
-B_Get2:
- getitem @item[@num],2;
- mes "What the!?";
- mes "Two "+@itemn$[@num]+"s popped out!";
- mes "It must be your lucky day.";
- if(@num==0) set $itemjam0$[@machine],"0";
- if(@num==1) set $itemjam1$[@machine],"0";
- if(@num==2) set $itemjam2$[@machine],"0";
- if(@num==3) set $itemjam3$[@machine],"0";
- if(@num==4) set $itemjam4$[@machine],"0";
- if(@num==5) set $itemjam5$[@machine],"0";
- if(@num==6) set $itemjam6$[@machine],"0";
- if(@num==7) set $itemjam7$[@machine],"0";
- if(@num==8) set $itemjam8$[@machine],"0";
- if(@num==9) set $itemjam9$[@machine],"0";
- close;
-B_Jamitem:
- mes "Vrrrrrrrr~";
- mes "*click*";
- next;
- mes "["+strcharinfo(0)+"]";
- mes "Dammit!";
- mes "I hate it when these damn things jam!";
- if(@num==0) set $itemjam0$[@machine],strcharinfo(0);
- if(@num==1) set $itemjam1$[@machine],strcharinfo(0);
- if(@num==2) set $itemjam2$[@machine],strcharinfo(0);
- if(@num==3) set $itemjam3$[@machine],strcharinfo(0);
- if(@num==4) set $itemjam4$[@machine],strcharinfo(0);
- if(@num==5) set $itemjam5$[@machine],strcharinfo(0);
- if(@num==6) set $itemjam6$[@machine],strcharinfo(0);
- if(@num==7) set $itemjam7$[@machine],strcharinfo(0);
- if(@num==8) set $itemjam8$[@machine],strcharinfo(0);
- if(@num==9) set $itemjam9$[@machine],strcharinfo(0);
- close;
-}
-
-function script F_Slam {
-
- set @fall,rand(1,@fallrate);
- set @free,rand(1,@freerate);
-R_Item:
- set @num,rand(9);
- if(@item[@num]==0) goto R_Item;
-
- mes "You give the vending machine a good solid whack.";
- next;
- mes "...";
- next;
- if(@fall==1){
- mes "The machine shakes, and then falls directly on top of you.";
- close2;
- percentheal -100,-100;
- end;}
- if(@free==1){
- getitem @item[@num],1;
- mes "The machine shakes, and then drops an item.";
- close;}
- mes "The machine shakes, but nothing happens";
- close;
-}
+//===================================== +// Vending Machine Script +// v2.3 +//===================================== +// by Celestria +//===================================== +// Changelog: +// 2.3 - Added in "Slam" feature, as well as admin ability to turn machine on and off. +// - Added admin menu. Allows GMs to put machines in/out of service, and to clear +// all jammed items. +// +// 2.2 - Added in/Renamed some variables to allow a single machine to block on several +// items simultaneously. This fix also allows the two-item drop to work with every +// item the machine is jammed on. +// +// 2.1 - Fixed an error where if one machine jammed on a menu item (say 3 for example), +// if another machine also jammed on the same menu item (3 in this case), the original +// machine to jam would be unjammed. +// - This fix only allows a machine to jam one item at a time. Will fix in the future. +// +// 2.0 - Completely redid the script using a call-function. +// Now all replica scripts can simply be a copy of Vending Machine, +// but with variables modified to suit it''s intended use. +// +// 1.1 - Fixed $jamplayer1 not being a string, thanks to Terces. +// - Changed random number that intiates jam to 1, to allow for faster modification of jam rates. +// +// 1.0 - Creted a script for selling numerous items that would occasionally jam on players. +// - Used numbered variables to allow for multiplacation of the script. +//===================================== + +p_track01.gat,45,58,4 script Vending Machine#1 910,{ + + set @machine,1; //sets the unique number of this machine + //DO NOT have two machines with the same number + + set @jamrate,1000; //Odds of machine jamming will be 1 in @jamrate + + set @slam,0; //set this to 0 to turn on the slam feature, any other setting disables it. + set @fallrate,10; //Odds of machine falling on someone who hits it are 1 in @fallrate + set @freerate,10000; //Odds of machine giving an item to someone who hits it are 1 in @freerate + + set @admin,99; //sets GM level needed to access Admin menu + + // the following sets the items for sale. Script currently only handles 10 items. + setarray @item[0], 12143, 519, 565; + setarray @price[0], 100, 50, 200; + + set @itemn$[0], getitemname(@item[0]); + set @itemn$[1], getitemname(@item[1]); + set @itemn$[2], getitemname(@item[2]); + set @itemn$[3], getitemname(@item[3]); + set @itemn$[4], getitemname(@item[4]); + set @itemn$[5], getitemname(@item[5]); + set @itemn$[6], getitemname(@item[6]); + set @itemn$[7], getitemname(@item[7]); + set @itemn$[8], getitemname(@item[8]); + set @itemn$[9], getitemname(@item[9]); + + set @menu$[0], @itemn$[0]+" - "+@price[0]; + set @menu$[1], @itemn$[1]+" - "+@price[1]; + set @menu$[2], @itemn$[2]+" - "+@price[2]; + set @menu$[3], "Cancel"; + set @menu$[4], ""; + set @menu$[5], ""; + set @menu$[6], ""; + set @menu$[7], ""; + set @menu$[8], ""; + set @menu$[9], ""; + set @menu$[10], ""; // "Cancel" only. Used if vending ten items. + + callfunc "F_Vend1"; +} + + + + + + + + + +//=============================================================================================== +// Functions +// +// !!!DO NOT EDIT BELOW THIS LINE!!! +// +//=============================================================================================== + +function script F_Vend1 { + + if(getgmlevel() >= @admin) goto M_Admin; + +M_Player: + if($outorder[@machine]) goto M_Ooo; + if(@slam) callfunc "F_Vend2"; + mes "You see a vending machine. What would you like to do?"; + next; + menu "Buy an item",M_Vend,"Hit it",M_Hit; + +M_Vend: + callfunc "F_Vend2"; + end; + +M_Hit: + callfunc "F_Slam"; + end; + +M_Admin: + mes "[Admin Mode]"; + mes "What would you like to do?"; + next; + menu "Player Mode",M_Player,"Post 'Out of Order'",M_Ooo2,"Remove 'Out of Order'",M_Ooo3,"Fix Jammed Items",M_Fix; + +M_Ooo: + mes "Out of Order"; + close; + +M_Ooo2: + set $outorder[@machine],1; + mes "The machine is now Out of Service"; + close; + +M_Ooo3: + set $outorder[@machine],0; + mes "The machine is now in service."; + close; + +M_Fix: + set $itemjam0$[@machine],"0"; + set $itemjam1$[@machine],"0"; + set $itemjam2$[@machine],"0"; + set $itemjam3$[@machine],"0"; + set $itemjam4$[@machine],"0"; + set $itemjam5$[@machine],"0"; + set $itemjam6$[@machine],"0"; + set $itemjam7$[@machine],"0"; + set $itemjam8$[@machine],"0"; + set $itemjam9$[@machine],"0"; + mes "All jammed items have been fixed."; + close; +} + +function script F_Vend2 { + + if(strcharinfo(0)==$itemjam0$[@machine]) goto B_StillJammed; + if(strcharinfo(0)==$itemjam1$[@machine]) goto B_StillJammed; + if(strcharinfo(0)==$itemjam2$[@machine]) goto B_StillJammed; + if(strcharinfo(0)==$itemjam3$[@machine]) goto B_StillJammed; + if(strcharinfo(0)==$itemjam4$[@machine]) goto B_StillJammed; + if(strcharinfo(0)==$itemjam5$[@machine]) goto B_StillJammed; + if(strcharinfo(0)==$itemjam6$[@machine]) goto B_StillJammed; + if(strcharinfo(0)==$itemjam7$[@machine]) goto B_StillJammed; + if(strcharinfo(0)==$itemjam8$[@machine]) goto B_StillJammed; + if(strcharinfo(0)==$itemjam9$[@machine]) goto B_StillJammed; + set @jammed,rand(1,@jamrate); + mes "You peek inside the vending machine to see what's available."; + next; + menu @menu$[0],M_Ite0, @menu$[1],M_Ite1, @menu$[2],M_Ite2, @menu$[3],M_Ite3, + @menu$[4],M_Ite4, @menu$[5],M_Ite5, @menu$[6],M_Ite6, @menu$[7],M_Ite7, + @menu$[8],M_Ite8, @menu$[9],M_Ite9, @menu$[10],M_Ite10; + + M_Ite0: + set @num, 0; + goto B_Buy; + M_Ite1: + set @num, 1; + goto B_Buy; + M_Ite2: + set @num, 2; + goto B_Buy; + M_Ite3: + set @num, 3; + goto B_Buy; + M_Ite4: + set @num, 4; + goto B_Buy; + M_Ite5: + set @num, 5; + goto B_Buy; + M_Ite6: + set @num, 6; + goto B_Buy; + M_Ite7: + set @num, 7; + goto B_Buy; + M_Ite8: + set @num, 8; + goto B_Buy; + M_Ite9: + set @num, 9; + goto B_Buy; + M_Ite10: + set @num, 10; + goto B_Buy; + + + +B_Cancel: + mes "On second thoughts, you decide not to buy anything."; + close; + +B_StillJammed: + mes "You shake and punch the vending machine, but it appears no matter how much energy you exert, the dang item isn't going to come loose."; + next; + mes "["+strcharinfo(0)+"]"; + mes "DANG VENDING MACHINES!"; + close; + +B_Broke: + mes "As you put your last zeny in, you realise you don't have enough to afford the product."; + mes "Sadly you hit the refund button and pick up what little zeny you have."; + close; + +B_Buy: + if (@menu$[@num] == "Cancel") goto B_Cancel; + if(@num==0){if($itemjam0$[@machine]!="0") set @jammed,0;} + if(@num==1){if($itemjam1$[@machine]!="0") set @jammed,0;} + if(@num==2){if($itemjam2$[@machine]!="0") set @jammed,0;} + if(@num==3){if($itemjam3$[@machine]!="0") set @jammed,0;} + if(@num==4){if($itemjam4$[@machine]!="0") set @jammed,0;} + if(@num==5){if($itemjam5$[@machine]!="0") set @jammed,0;} + if(@num==6){if($itemjam6$[@machine]!="0") set @jammed,0;} + if(@num==7){if($itemjam7$[@machine]!="0") set @jammed,0;} + if(@num==8){if($itemjam8$[@machine]!="0") set @jammed,0;} + if(@num==9){if($itemjam9$[@machine]!="0") set @jammed,0;} + if(Zeny < @price[@num]) goto B_Broke; + set Zeny,Zeny-@price[@num]; + if(@jammed == 1) goto B_Jamitem; + mes "Vrrrrrrrr~"; + mes "*clunk*"; + next; + if(@jammed == 0) goto B_Get2; + getitem @item[@num],1; + mes "A "+@itemn$[@num]+" pops out."; + close; +B_Get2: + getitem @item[@num],2; + mes "What the!?"; + mes "Two "+@itemn$[@num]+"s popped out!"; + mes "It must be your lucky day."; + if(@num==0) set $itemjam0$[@machine],"0"; + if(@num==1) set $itemjam1$[@machine],"0"; + if(@num==2) set $itemjam2$[@machine],"0"; + if(@num==3) set $itemjam3$[@machine],"0"; + if(@num==4) set $itemjam4$[@machine],"0"; + if(@num==5) set $itemjam5$[@machine],"0"; + if(@num==6) set $itemjam6$[@machine],"0"; + if(@num==7) set $itemjam7$[@machine],"0"; + if(@num==8) set $itemjam8$[@machine],"0"; + if(@num==9) set $itemjam9$[@machine],"0"; + close; +B_Jamitem: + mes "Vrrrrrrrr~"; + mes "*click*"; + next; + mes "["+strcharinfo(0)+"]"; + mes "Dammit!"; + mes "I hate it when these damn things jam!"; + if(@num==0) set $itemjam0$[@machine],strcharinfo(0); + if(@num==1) set $itemjam1$[@machine],strcharinfo(0); + if(@num==2) set $itemjam2$[@machine],strcharinfo(0); + if(@num==3) set $itemjam3$[@machine],strcharinfo(0); + if(@num==4) set $itemjam4$[@machine],strcharinfo(0); + if(@num==5) set $itemjam5$[@machine],strcharinfo(0); + if(@num==6) set $itemjam6$[@machine],strcharinfo(0); + if(@num==7) set $itemjam7$[@machine],strcharinfo(0); + if(@num==8) set $itemjam8$[@machine],strcharinfo(0); + if(@num==9) set $itemjam9$[@machine],strcharinfo(0); + close; +} + +function script F_Slam { + + set @fall,rand(1,@fallrate); + set @free,rand(1,@freerate); +R_Item: + set @num,rand(9); + if(@item[@num]==0) goto R_Item; + + mes "You give the vending machine a good solid whack."; + next; + mes "..."; + next; + if(@fall==1){ + mes "The machine shakes, and then falls directly on top of you."; + close2; + percentheal -100,-100; + end;} + if(@free==1){ + getitem @item[@num],1; + mes "The machine shakes, and then drops an item."; + close;} + mes "The machine shakes, but nothing happens"; + close; +} diff --git a/npc/custom/eliza.txt b/npc/custom/eliza.txt index 7915492b5..c5e7c3d43 100644 --- a/npc/custom/eliza.txt +++ b/npc/custom/eliza.txt @@ -1,702 +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;
-}
+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/floating_rates.txt b/npc/custom/floating_rates.txt index 906afb74b..d1db13913 100644 --- a/npc/custom/floating_rates.txt +++ b/npc/custom/floating_rates.txt @@ -1,45 +1,45 @@ -//===== eAthena Script ======================================================================
-//= Floating Server Rates
-//===== Original By =========================================================================
-//= Lupus
-//===== Current Version: ====================================================================
-//= 1.0
-//===== Compatible With: ====================================================================
-//= Any eAthena, that has 'setbattleflag' function
-//===== Description: ========================================================================
-//= It's a simply example of setbattleflag
-//= This script will change your server rates from 1x to 1.5x every 6 hours
-//= Note: It doesn't affect Card granted drops, MVP & Treasure Chests drops ^_-
-//= It also doesn't affect CARD drops, because they are just 0.01%
-//===== Comments and Credits ================================================================
-//= You can make incredible scripts with 'setbattleflag'!
-//===========================================================================================
-
-
-prontera.gat,3,4,5 script FloatingRates -1,{
- end;
-OnInit:
-
-//add any other HOURS
-OnHour00:
-OnHour06:
-OnHour12:
-OnHour18:
-//-------------------
- set $@brate,rand(100,150);
- set $@jrate,rand(100,150);
- set $@drate,rand(100,150);
- //Base exp
- setbattleflag("base_exp_rate",$@brate);
- //Job exp
- setbattleflag("job_exp_rate",$@jrate);
- //Drops
- setbattleflag("item_rate_common",$@drate);
- setbattleflag("item_rate_heal",$@drate);
- setbattleflag("item_rate_use",$@drate);
- setbattleflag("item_rate_equip",$@drate);
- //we don't change card drops rate, because these values won't change them anyway
-
- announce "Current Rune-Midgard rates are: 1."+($@brate-100)+"x 1."+($@jrate-100)+"x 1."+($@drate-100)+"x",bc_all,0xFF6060;
- end;
-}
+//===== eAthena Script ====================================================================== +//= Floating Server Rates +//===== Original By ========================================================================= +//= Lupus +//===== Current Version: ==================================================================== +//= 1.0 +//===== Compatible With: ==================================================================== +//= Any eAthena, that has 'setbattleflag' function +//===== Description: ======================================================================== +//= It's a simply example of setbattleflag +//= This script will change your server rates from 1x to 1.5x every 6 hours +//= Note: It doesn't affect Card granted drops, MVP & Treasure Chests drops ^_- +//= It also doesn't affect CARD drops, because they are just 0.01% +//===== Comments and Credits ================================================================ +//= You can make incredible scripts with 'setbattleflag'! +//=========================================================================================== + + +prontera.gat,3,4,5 script FloatingRates -1,{ + end; +OnInit: + +//add any other HOURS +OnHour00: +OnHour06: +OnHour12: +OnHour18: +//------------------- + set $@brate,rand(100,150); + set $@jrate,rand(100,150); + set $@drate,rand(100,150); + //Base exp + setbattleflag("base_exp_rate",$@brate); + //Job exp + setbattleflag("job_exp_rate",$@jrate); + //Drops + setbattleflag("item_rate_common",$@drate); + setbattleflag("item_rate_heal",$@drate); + setbattleflag("item_rate_use",$@drate); + setbattleflag("item_rate_equip",$@drate); + //we don't change card drops rate, because these values won't change them anyway + + announce "Current Rune-Midgard rates are: 1."+($@brate-100)+"x 1."+($@jrate-100)+"x 1."+($@drate-100)+"x",bc_all,0xFF6060; + end; +} diff --git a/npc/custom/gefenia.txt b/npc/custom/gefenia.txt index af6d07b4a..547c9482c 100644 --- a/npc/custom/gefenia.txt +++ b/npc/custom/gefenia.txt @@ -1,34 +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;
+//===== 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 index d065d30c1..0c0038dac 100644 --- a/npc/custom/healers/heal.txt +++ b/npc/custom/healers/heal.txt @@ -1,52 +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
+//===== 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 index 2a64035d2..d3ea9fff4 100644 --- a/npc/custom/healers/heal_payment.txt +++ b/npc/custom/healers/heal_payment.txt @@ -1,107 +1,107 @@ -//===== eAthena Script =======================================
-//= Healer Script (/w payments)
-//===== By: ==================================================
-//= Yor & abunch of other people
-//===== Current Version: =====================================
-//= 1.3
-//===== 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]
-//= Removed Duplicates [Silent]
-//============================================================
-
-prontera.gat,150,184,5 script Healer#h2-1::Healer2 742,{
- set @tempHp, MaxHp-Hp;
- set @tempSpReal, MaxSp-Sp;
- set @tempSp, ((MaxSp-Sp) * BaseLevel) / 5;
- if (@tempHp > 0) goto WOUNDED;
- if (@tempSpReal > 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 @tempHp,0;
- goto FIN;
-
- REGENERATION:
- if (Zeny < @tempSp) goto NO_ZENYS;
- set Zeny, Zeny-@tempSp;
- heal 0,@tempSpReal;
- goto FIN;
-
- HEALINGS_AND_REGEN:
- if (Zeny < (@tempHp+@tempSp)) goto NO_ZENYS;
- set Zeny, Zeny-(@tempHp+@tempSp);
- heal @tempHp,@tempSpReal;
- 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(Healer2) Healer#h2-2 742
-ayothaya.gat,155,111,5 duplicate(Healer2) Healer#h2-3 742
-geffen.gat,121,61,5 duplicate(Healer2) Healer#h2-4 742
-umbala.gat,94,162,5 duplicate(Healer2) Healer#h2-5 742
-payon.gat,180,105,5 duplicate(Healer2) Healer#h2-6 742
-alberta.gat,185,144,5 duplicate(Healer2) Healer#h2-7 742
-aldebaran.gat,134,123,5 duplicate(Healer2) Healer#h2-8 742
-izlude.gat,125,118,5 duplicate(Healer2) Healer#h2-9 742
-xmas.gat,149,136,5 duplicate(Healer2) Healer#h2-10 742
-comodo.gat,188,162,5 duplicate(Healer2) Healer#h2-11 742
-amatsu.gat,200,80,5 duplicate(Healer2) Healer#h2-12 742
-gonryun.gat,164,130,5 duplicate(Healer2) Healer#h2-13 742
-yuno.gat,152,186,5 duplicate(Healer2) Healer#h2-14 742
-niflheim.gat,188,180,5 duplicate(Healer2) Healer#h2-15 742
+//===== eAthena Script ======================================= +//= Healer Script (/w payments) +//===== By: ================================================== +//= Yor & abunch of other people +//===== Current Version: ===================================== +//= 1.3 +//===== 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] +//= Removed Duplicates [Silent] +//============================================================ + +prontera.gat,150,184,5 script Healer#h2-1::Healer2 742,{ + set @tempHp, MaxHp-Hp; + set @tempSpReal, MaxSp-Sp; + set @tempSp, ((MaxSp-Sp) * BaseLevel) / 5; + if (@tempHp > 0) goto WOUNDED; + if (@tempSpReal > 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 @tempHp,0; + goto FIN; + + REGENERATION: + if (Zeny < @tempSp) goto NO_ZENYS; + set Zeny, Zeny-@tempSp; + heal 0,@tempSpReal; + goto FIN; + + HEALINGS_AND_REGEN: + if (Zeny < (@tempHp+@tempSp)) goto NO_ZENYS; + set Zeny, Zeny-(@tempHp+@tempSp); + heal @tempHp,@tempSpReal; + 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(Healer2) Healer#h2-2 742 +ayothaya.gat,155,111,5 duplicate(Healer2) Healer#h2-3 742 +geffen.gat,121,61,5 duplicate(Healer2) Healer#h2-4 742 +umbala.gat,94,162,5 duplicate(Healer2) Healer#h2-5 742 +payon.gat,180,105,5 duplicate(Healer2) Healer#h2-6 742 +alberta.gat,185,144,5 duplicate(Healer2) Healer#h2-7 742 +aldebaran.gat,134,123,5 duplicate(Healer2) Healer#h2-8 742 +izlude.gat,125,118,5 duplicate(Healer2) Healer#h2-9 742 +xmas.gat,149,136,5 duplicate(Healer2) Healer#h2-10 742 +comodo.gat,188,162,5 duplicate(Healer2) Healer#h2-11 742 +amatsu.gat,200,80,5 duplicate(Healer2) Healer#h2-12 742 +gonryun.gat,164,130,5 duplicate(Healer2) Healer#h2-13 742 +yuno.gat,152,186,5 duplicate(Healer2) Healer#h2-14 742 +niflheim.gat,188,180,5 duplicate(Healer2) Healer#h2-15 742 louyang.gat,225,103,5 duplicate(Healer2) Healer#h2-16 742
\ No newline at end of file diff --git a/npc/custom/jobs/jobmaster.txt b/npc/custom/jobs/jobmaster.txt index c929d4894..a8c147f11 100644 --- a/npc/custom/jobs/jobmaster.txt +++ b/npc/custom/jobs/jobmaster.txt @@ -1,265 +1,265 @@ -//===== eAthena Script =======================================
-//= eAthena Jobchanger AKA Job Master
-//===== By: ==================================================
-//= eAthena Dev Team [Ori:LunatikBunnie] [Cur:Lance]
-//===== Current Version: =====================================
-//= 1.5
-//===== Compatible With: =====================================
-//= eAthena SVN Trunk 6674
-//===== 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'
-//= 1.4 Added NJ/GS, changed all job numbers to Job_* constants.
-//= All credits go to pxxx [Skotlex]
-//= 1.5 Rewrite everything from scratch. [Lance]
-//============================================================
-prontera.gat,153,193,6 script Job Master 123,{
- mes "^ff0000[Job Master]^000000";
- if(Upper == 1 && Class >= Job_Lord_Knight) goto L_noReq;
- if(SkillPoint != 0){
- mes "I'm sorry, please use up all your skill points before changing jobs";
- mes "Please come again soon!";
- close;
- }
- if(JobLevel < 10) goto L_LvError;
- switch(Class){
- case Job_Novice_High:
- case Job_Baby:
- case Job_Novice:
- skill 142,1,0;
- skill 143,1,0;
- mes "Welcome, please select the job you wish to change into";
- if(lastJob != 0 && Class == Job_Novice_High){
- switch(lastJob){
- case Job_Knight:
- case Job_Crusader:
- set @target_job, Job_Swordman_High;
- break;
- case Job_Monk:
- case Job_Priest:
- set @target_job, Job_Acolyte_High;
- break;
- case Job_Alchem:
- case Job_Blacksmith:
- set @target_job, Job_Merchant_High;
- break;
- case Job_Rogue:
- case Job_Assassin:
- set @target_job, Job_Thief_High;
- break;
- case Job_Wizard:
- case Job_Sage:
- set @target_job, Job_Mage_High;
- break;
- case Job_Hunter:
- case Job_Bard:
- case Job_Dancer:
- set @target_job, Job_Archer_High;
- break;
- }
- } else {
- switch(select("Swordsman","Mage","Archer","Acolyte","Merchant","Thief",
- "Super Novice","Taekwon","Gunslinger","Ninja")){
- case 7:
- if(Class == Job_Novice_High) goto L_noReq;
- if($@JC_SupNovM > BaseLevel) goto L_BvError;
- set @target_job, Job_SuperNovice;
- break;
- case 8:
- if(Class == Job_Novice_High) goto L_noReq;
- if(Upper == 2) goto L_noReq;
- set @target_job, Job_Taekwon;
- break;
- case 9:
- case 10:
- if(Class == Job_Novice_High) goto L_noReq;
- set @target_job, @menu + 15;
- break;
- default:
- set @target_job, @menu;
- if(Class == Job_Novice_High) set @target_job, @target_job + 4001;
- break;
- }
- }
- mes "Are you sure you want to change to " + callfunc("getJobName",@target_job) + "?";
- if(select("No","Yes") == 2){
- callfunc "Job_Change", @target_job;
- if(@target_job == Job_Gunsliger || @target_job == Job_Ninja || @target_job == Job_Taekwon) {
- callfunc "F_ClearJobVar";
- } else {
- if($@JC_Plat) goto L_GivePlat;
- }
- }
- close;
- break;
- default:
- if(JobLevel < $@JC_MinimumJB) goto L_LvError;
- deletearray @job_opt, getarraysize(@job_opt);
- if(Class < Job_Knight || Class == Job_Taekwon || (Class > Job_Baby && Class < Job_Baby_Knight) || (Class > Job_Novice_High && Class < Job_Lord_Knight)){
- if(lastJob != 0){
- set @target_job, lastJob + 4001;
- } else {
- switch(Class){
- case Job_Swordman_High:
- case Job_Baby_Swordman:
- case Job_Swordman:
- set @job_opt[0], Job_Knight;
- set @job_opt[1], Job_Crusader;
- break;
- case Job_Mage_High:
- case Job_Baby_Mage:
- case Job_Mage:
- set @job_opt[0], Job_Wizard;
- set @job_opt[1], Job_Sage;
- break;
- case Job_Archer_High:
- case Job_Baby_Archer:
- case Job_Archer:
- set @job_opt[0], Job_Hunter;
- if(Sex == 0)
- set @job_opt[1], Job_Dancer;
- else
- set @job_opt[1], Job_Bard;
- break;
- case Job_Acolyte_High:
- case Job_Baby_Acolyte:
- case Job_Acolyte:
- set @job_opt[0], Job_Priest;
- set @job_opt[1], Job_Monk;
- break;
- case Job_Merchant_High:
- case Job_Baby_Merchant:
- case Job_Merchant:
- set @job_opt[0], Job_Blacksmith;
- set @job_opt[1], Job_Alchem;
- break;
- case Job_Thief_High:
- case Job_Baby_Thief:
- case Job_Thief:
- set @job_opt[0], Job_Assassin;
- set @job_opt[1], Job_Rogue;
- break;
- default:
- set @job_opt[0], Job_Star_Gladiator;
- set @job_opt[1], Job_Soul_Linker;
- break;
- }
- mes "Welcome, please select the job you wish to change into";
- set @target_job, @job_opt[select(callfunc("getJobName",@job_opt[0]), callfunc("getJobName",@job_opt[1]))-1];
- if(Class > Job_Novice_High && Class < Job_Lord_Knight) set @target_job, @target_job + 4001;
- }
- mes "Are you sure you want to change to " + callfunc("getJobName",@target_job) + "?";
- if(select("No","Yes")==2){
- callfunc "Job_Change", @target_job;
- if(@target_job == Job_Star_Gladiator || @target_job == Job_Soul_Linker) {
- callfunc "F_ClearJobVar";
- } else {
- if($@JC_Plat) goto L_GivePlat;
- }
- }
- close;
- }
- if(checkfalcon(0) || checkcart(0) || checkriding(0)) goto L_remove;
- if((Class >=Job_Knight) && (Class <=Job_Crusader2)){
- mes "Do you want to reborn?";
- if(select("Yes","No")==1){
- if(BaseLevel < 99 || JobLevel < 50) goto L_cantCh;
- set lastJob, Class;
- if(Class == Job_Knight2){
- set lastJob, Job_Knight;
- } else {
- if(Class == Job_Crusader2){
- set lastJob, Job_Crusader;
- }
- }
- jobchange Job_Novice_High;
- resetlvl(1);
- skill 142,1,0;
- skill 143,1,0;
- }
- close;
- }
- }
- mes "Looks like something has gone wrong. Please report to the eAthena Development Team about this error.";
- close;
-
-L_GivePlat:
- if (BaseClass==Job_SuperNovice) goto L_sSuperN;
- if (BaseClass==Job_Swordman) goto L_sSword;
- if (BaseClass==Job_Mage) goto L_sMage;
- if (BaseClass==Job_Archer) goto L_sArcher;
- if (BaseClass==Job_Acolyte) goto L_sAcolyte;
- if (BaseClass==Job_Merchant) goto L_sMerchant;
- if (BaseClass==Job_Thief) goto L_sThief;
- close;
-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;
- close;
-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_cantCh:
- mes "I'm sorry, you do not meet the requirements to change";
- mes "Please come again soon!";
- close;
-
-L_LvError:
- mes "I'm sorry, you do not seem to have enough Job Levels";
- mes "Please come again soon!";
- close;
-
-L_BvError:
- mes "I'm sorry, you do not seem to have enough Base Levels";
- mes "Please come again soon!";
- close;
-
-L_noReq:
- mes "I'm sorry, you do not meet the requirements to change";
- mes "Please come again soon!";
- close;
-
-L_remove:
- mes "Please remove your cart,falcon or peco";
- mes "Please come again soon!";
- close;
-
-OnInit:
- // Variable Setup
- set $@JC_MinimumJB, 40; //Minimum job level for changing between 2nd and advance Class (Default : 40)
- set $@JC_Plat, 1; //Give Platinum skills on Jobchange (Default : 1-yes)
- set $@JC_SupNovM, 45; //Base Level to change into Super Novice (Default : 45)
- end;
-}
+//===== eAthena Script ======================================= +//= eAthena Jobchanger AKA Job Master +//===== By: ================================================== +//= eAthena Dev Team [Ori:LunatikBunnie] [Cur:Lance] +//===== Current Version: ===================================== +//= 1.5 +//===== Compatible With: ===================================== +//= eAthena SVN Trunk 6674 +//===== 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' +//= 1.4 Added NJ/GS, changed all job numbers to Job_* constants. +//= All credits go to pxxx [Skotlex] +//= 1.5 Rewrite everything from scratch. [Lance] +//============================================================ +prontera.gat,153,193,6 script Job Master 123,{ + mes "^ff0000[Job Master]^000000"; + if(Upper == 1 && Class >= Job_Lord_Knight) goto L_noReq; + if(SkillPoint != 0){ + mes "I'm sorry, please use up all your skill points before changing jobs"; + mes "Please come again soon!"; + close; + } + if(JobLevel < 10) goto L_LvError; + switch(Class){ + case Job_Novice_High: + case Job_Baby: + case Job_Novice: + skill 142,1,0; + skill 143,1,0; + mes "Welcome, please select the job you wish to change into"; + if(lastJob != 0 && Class == Job_Novice_High){ + switch(lastJob){ + case Job_Knight: + case Job_Crusader: + set @target_job, Job_Swordman_High; + break; + case Job_Monk: + case Job_Priest: + set @target_job, Job_Acolyte_High; + break; + case Job_Alchem: + case Job_Blacksmith: + set @target_job, Job_Merchant_High; + break; + case Job_Rogue: + case Job_Assassin: + set @target_job, Job_Thief_High; + break; + case Job_Wizard: + case Job_Sage: + set @target_job, Job_Mage_High; + break; + case Job_Hunter: + case Job_Bard: + case Job_Dancer: + set @target_job, Job_Archer_High; + break; + } + } else { + switch(select("Swordsman","Mage","Archer","Acolyte","Merchant","Thief", + "Super Novice","Taekwon","Gunslinger","Ninja")){ + case 7: + if(Class == Job_Novice_High) goto L_noReq; + if($@JC_SupNovM > BaseLevel) goto L_BvError; + set @target_job, Job_SuperNovice; + break; + case 8: + if(Class == Job_Novice_High) goto L_noReq; + if(Upper == 2) goto L_noReq; + set @target_job, Job_Taekwon; + break; + case 9: + case 10: + if(Class == Job_Novice_High) goto L_noReq; + set @target_job, @menu + 15; + break; + default: + set @target_job, @menu; + if(Class == Job_Novice_High) set @target_job, @target_job + 4001; + break; + } + } + mes "Are you sure you want to change to " + callfunc("getJobName",@target_job) + "?"; + if(select("No","Yes") == 2){ + callfunc "Job_Change", @target_job; + if(@target_job == Job_Gunsliger || @target_job == Job_Ninja || @target_job == Job_Taekwon) { + callfunc "F_ClearJobVar"; + } else { + if($@JC_Plat) goto L_GivePlat; + } + } + close; + break; + default: + if(JobLevel < $@JC_MinimumJB) goto L_LvError; + deletearray @job_opt, getarraysize(@job_opt); + if(Class < Job_Knight || Class == Job_Taekwon || (Class > Job_Baby && Class < Job_Baby_Knight) || (Class > Job_Novice_High && Class < Job_Lord_Knight)){ + if(lastJob != 0){ + set @target_job, lastJob + 4001; + } else { + switch(Class){ + case Job_Swordman_High: + case Job_Baby_Swordman: + case Job_Swordman: + set @job_opt[0], Job_Knight; + set @job_opt[1], Job_Crusader; + break; + case Job_Mage_High: + case Job_Baby_Mage: + case Job_Mage: + set @job_opt[0], Job_Wizard; + set @job_opt[1], Job_Sage; + break; + case Job_Archer_High: + case Job_Baby_Archer: + case Job_Archer: + set @job_opt[0], Job_Hunter; + if(Sex == 0) + set @job_opt[1], Job_Dancer; + else + set @job_opt[1], Job_Bard; + break; + case Job_Acolyte_High: + case Job_Baby_Acolyte: + case Job_Acolyte: + set @job_opt[0], Job_Priest; + set @job_opt[1], Job_Monk; + break; + case Job_Merchant_High: + case Job_Baby_Merchant: + case Job_Merchant: + set @job_opt[0], Job_Blacksmith; + set @job_opt[1], Job_Alchem; + break; + case Job_Thief_High: + case Job_Baby_Thief: + case Job_Thief: + set @job_opt[0], Job_Assassin; + set @job_opt[1], Job_Rogue; + break; + default: + set @job_opt[0], Job_Star_Gladiator; + set @job_opt[1], Job_Soul_Linker; + break; + } + mes "Welcome, please select the job you wish to change into"; + set @target_job, @job_opt[select(callfunc("getJobName",@job_opt[0]), callfunc("getJobName",@job_opt[1]))-1]; + if(Class > Job_Novice_High && Class < Job_Lord_Knight) set @target_job, @target_job + 4001; + } + mes "Are you sure you want to change to " + callfunc("getJobName",@target_job) + "?"; + if(select("No","Yes")==2){ + callfunc "Job_Change", @target_job; + if(@target_job == Job_Star_Gladiator || @target_job == Job_Soul_Linker) { + callfunc "F_ClearJobVar"; + } else { + if($@JC_Plat) goto L_GivePlat; + } + } + close; + } + if(checkfalcon(0) || checkcart(0) || checkriding(0)) goto L_remove; + if((Class >=Job_Knight) && (Class <=Job_Crusader2)){ + mes "Do you want to reborn?"; + if(select("Yes","No")==1){ + if(BaseLevel < 99 || JobLevel < 50) goto L_cantCh; + set lastJob, Class; + if(Class == Job_Knight2){ + set lastJob, Job_Knight; + } else { + if(Class == Job_Crusader2){ + set lastJob, Job_Crusader; + } + } + jobchange Job_Novice_High; + resetlvl(1); + skill 142,1,0; + skill 143,1,0; + } + close; + } + } + mes "Looks like something has gone wrong. Please report to the eAthena Development Team about this error."; + close; + +L_GivePlat: + if (BaseClass==Job_SuperNovice) goto L_sSuperN; + if (BaseClass==Job_Swordman) goto L_sSword; + if (BaseClass==Job_Mage) goto L_sMage; + if (BaseClass==Job_Archer) goto L_sArcher; + if (BaseClass==Job_Acolyte) goto L_sAcolyte; + if (BaseClass==Job_Merchant) goto L_sMerchant; + if (BaseClass==Job_Thief) goto L_sThief; + close; +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; + close; +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_cantCh: + mes "I'm sorry, you do not meet the requirements to change"; + mes "Please come again soon!"; + close; + +L_LvError: + mes "I'm sorry, you do not seem to have enough Job Levels"; + mes "Please come again soon!"; + close; + +L_BvError: + mes "I'm sorry, you do not seem to have enough Base Levels"; + mes "Please come again soon!"; + close; + +L_noReq: + mes "I'm sorry, you do not meet the requirements to change"; + mes "Please come again soon!"; + close; + +L_remove: + mes "Please remove your cart,falcon or peco"; + mes "Please come again soon!"; + close; + +OnInit: + // Variable Setup + set $@JC_MinimumJB, 40; //Minimum job level for changing between 2nd and advance Class (Default : 40) + set $@JC_Plat, 1; //Give Platinum skills on Jobchange (Default : 1-yes) + set $@JC_SupNovM, 45; //Base Level to change into Super Novice (Default : 45) + end; +} diff --git a/npc/custom/jobs/old/jobchange.txt b/npc/custom/jobs/old/jobchange.txt index d1921a3b8..c8fbc44ae 100644 --- a/npc/custom/jobs/old/jobchange.txt +++ b/npc/custom/jobs/old/jobchange.txt @@ -1,734 +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;
-}
+//===== 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 index 65339d19c..5cd207f49 100644 --- a/npc/custom/jobs/reset.txt +++ b/npc/custom/jobs/reset.txt @@ -1,40 +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";
- mes "Please select the service you want:";
- next;
- 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;
+//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"; + mes "Please select the service you want:"; + next; + 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 index 218fb4feb..ed35fa42e 100644 --- a/npc/custom/lottery.txt +++ b/npc/custom/lottery.txt @@ -1,457 +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;
-}
-
+//===== 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/market.txt b/npc/custom/market.txt index 7cf84bb62..c3484c896 100644 --- a/npc/custom/market.txt +++ b/npc/custom/market.txt @@ -1,43 +1,43 @@ -//===== Athena Script =======================================
-//= Market Place
-//===== By ================================================
-//= Lupus
-//===== Version ===========================================
-//= 1.0
-//===== Compatible With ===================================
-//= eAthena 5760+
-//===== Description =======================================
-//= This script should move vending crowds from Prontera
-//= streets to a suitable market place. Save your traffic 8)
-//===== Comments ==========================================
-// No comments yet
-//=========================================================
-
-
-prontera.gat,144,174,3 script Market Place 722,{
- mes"[Market Place]";
- mes"Tristan III's order: ^FF0000Move all the private shops to a special Market Place^000000.";
- next;
- menu "Enter the Market",M_ENTER, "Cancel",-;
- close2;
- end;
-
-M_ENTER:
- if(rand(10)==0 && checkcart(0) && @mrketflg<30 && @mrketflg>5 && getcharid(2)>1) FlagEmblem getcharid(2);
- warp "gon_test",27+rand(5),98;
- set @mrketflg,@mrketflg+1;
- end;
-}
-
-gon_test,73,103,0 script MarketExit 45,1,2,{
- warp "prontera.gat",155,177-rand(10);
- end;
-}
-
-//disable vending in Prontera
-prontera.gat mapflag novending
-prt_in.gat mapflag novending
-//Market Place settings
-gon_test mapflag noteleport
-gon_test mapflag nomemo
-gon_test mapflag nobranch
+//===== Athena Script ======================================= +//= Market Place +//===== By ================================================ +//= Lupus +//===== Version =========================================== +//= 1.0 +//===== Compatible With =================================== +//= eAthena 5760+ +//===== Description ======================================= +//= This script should move vending crowds from Prontera +//= streets to a suitable market place. Save your traffic 8) +//===== Comments ========================================== +// No comments yet +//========================================================= + + +prontera.gat,144,174,3 script Market Place 722,{ + mes"[Market Place]"; + mes"Tristan III's order: ^FF0000Move all the private shops to a special Market Place^000000."; + next; + menu "Enter the Market",M_ENTER, "Cancel",-; + close2; + end; + +M_ENTER: + if(rand(10)==0 && checkcart(0) && @mrketflg<30 && @mrketflg>5 && getcharid(2)>1) FlagEmblem getcharid(2); + warp "gon_test",27+rand(5),98; + set @mrketflg,@mrketflg+1; + end; +} + +gon_test,73,103,0 script MarketExit 45,1,2,{ + warp "prontera.gat",155,177-rand(10); + end; +} + +//disable vending in Prontera +prontera.gat mapflag novending +prt_in.gat mapflag novending +//Market Place settings +gon_test mapflag noteleport +gon_test mapflag nomemo +gon_test mapflag nobranch diff --git a/npc/custom/morroc_raceway.txt b/npc/custom/morroc_raceway.txt index d0c21a09b..a1fd85785 100644 --- a/npc/custom/morroc_raceway.txt +++ b/npc/custom/morroc_raceway.txt @@ -1,246 +1,246 @@ -//===== eAthena Script =======================================
-//= Morroc Raceway Script
-//===== By: ==================================================
-//= acky (god@acky.com)
-//===== Current Version: =====================================
-//= 1.2
-//===== 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
-//= 1.2 Removed Duplicates [Silent]
-//============================================================
-
-//Warps you into race way
-morocc.gat,166,105,6 script Race Girl#01 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#02 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#01 722,{
-end;
-}
-pvp_y_1-5.gat,144,257,4 script Check Point 1#02 722,{
-end;
-}
-pvp_y_1-5.gat,70,252,3 script Check Point 2#01 722,{
-end;
-}
-pvp_y_1-5.gat,77,243,3 script Check Point 2#02 722,{
-end;
-}
-pvp_y_1-5.gat,81,48,1 script Check Point 3#01 722,{
-end;
-}
-pvp_y_1-5.gat,72,40,1 script Check Point 3#02 722,{
-end;
-}
-pvp_y_1-5.gat,244,65,7 script Check Point 4#01 722,{
-end;
-}
-pvp_y_1-5.gat,252,57,7 script Check Point 4#02 722,{
-end;
-}
-pvp_y_1-5.gat,259,260,5 script Check Point 5#01 722,{
-end;
-}
-pvp_y_1-5.gat,251,252,5 script Check Point 5#02 722,{
-end;
-}
-pvp_y_1-5.gat,174,249,4 script Finish Line#01 722,{
-end;
-}
-pvp_y_1-5.gat,174,238,4 script Finish Line#02 722,{
-end;
+//===== eAthena Script ======================================= +//= Morroc Raceway Script +//===== By: ================================================== +//= acky (god@acky.com) +//===== Current Version: ===================================== +//= 1.2 +//===== 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 +//= 1.2 Removed Duplicates [Silent] +//============================================================ + +//Warps you into race way +morocc.gat,166,105,6 script Race Girl#01 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#02 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#01 722,{ +end; +} +pvp_y_1-5.gat,144,257,4 script Check Point 1#02 722,{ +end; +} +pvp_y_1-5.gat,70,252,3 script Check Point 2#01 722,{ +end; +} +pvp_y_1-5.gat,77,243,3 script Check Point 2#02 722,{ +end; +} +pvp_y_1-5.gat,81,48,1 script Check Point 3#01 722,{ +end; +} +pvp_y_1-5.gat,72,40,1 script Check Point 3#02 722,{ +end; +} +pvp_y_1-5.gat,244,65,7 script Check Point 4#01 722,{ +end; +} +pvp_y_1-5.gat,252,57,7 script Check Point 4#02 722,{ +end; +} +pvp_y_1-5.gat,259,260,5 script Check Point 5#01 722,{ +end; +} +pvp_y_1-5.gat,251,252,5 script Check Point 5#02 722,{ +end; +} +pvp_y_1-5.gat,174,249,4 script Finish Line#01 722,{ +end; +} +pvp_y_1-5.gat,174,238,4 script Finish Line#02 722,{ +end; }
\ No newline at end of file diff --git a/npc/custom/mvm.txt b/npc/custom/mvm.txt index 6c4236b4c..47bd8cc23 100644 --- a/npc/custom/mvm.txt +++ b/npc/custom/mvm.txt @@ -1,896 +1,896 @@ -//===== eAthena Script =======================================
-//= Monster vs Monster
-//===== By: ==================================================
-//= acky - god@acky.com
-//===== Current Version: =====================================
-//= 1.1.3
-//===== 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]
-//= 1.1.3 Removed Duplicate Names [Silent]
-//= 1.1.4 Fixed SummonPad syntax. [KarLaeda]
-//============================================================
-
-// 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. ---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",1053, "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#01 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 {
-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 {
-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 //
-gon_test.gat,57,86,5 script Summon Pad 1::SummonPad 111,2,2,{
-end;
-OnTouch:
-set @marena,1;
-warp "gon_test.gat",57,99;
-}
-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#01 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#02 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
+//===== eAthena Script ======================================= +//= Monster vs Monster +//===== By: ================================================== +//= acky - god@acky.com +//===== Current Version: ===================================== +//= 1.1.3 +//===== 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] +//= 1.1.3 Removed Duplicate Names [Silent] +//= 1.1.4 Fixed SummonPad syntax. [KarLaeda] +//============================================================ + +// 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. ---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",1053, "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#01 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 { +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 { +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 // +gon_test.gat,57,86,5 script Summon Pad 1::SummonPad 111,2,2,{ +end; +OnTouch: +set @marena,1; +warp "gon_test.gat",57,99; +} +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#01 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#02 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#02 61
\ No newline at end of file diff --git a/npc/custom/penal_servitude.txt b/npc/custom/penal_servitude.txt index 75ae8f726..ec32bb663 100644 --- a/npc/custom/penal_servitude.txt +++ b/npc/custom/penal_servitude.txt @@ -1,194 +1,194 @@ -//===== Athena Script =======================================
-//= Penal Servitude Script
-//===== By ================================================
-//= Lupus
-//===== Version ===========================================
-//= 1.2
-//===== 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
-// 1.2 Stricted the conditions a bit
-//=========================================================
-
-sec_pri.gat,36,58,1 script Chief Warder 105,{
- mes "[Saddeus]";
- emotion 1;
- if(sex) {
- mes "Mr. Prisoner #"+BaseLevel+JobLevel+",";
- } else {
- 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;
- 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]";
- if(checkcart(0) || checkfalcon(0) || checkriding(0)){
- emotion e_hmm;
- mes "I'm sorry, you should release your Cart, PecoPeco or Falcon!";
- close;
- }
- 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;
- 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 nowarpto
-sec_in02.gat mapflag noexp
-sec_in02.gat mapflag noskill
-//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
+//===== Athena Script ======================================= +//= Penal Servitude Script +//===== By ================================================ +//= Lupus +//===== Version =========================================== +//= 1.2 +//===== 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 +// 1.2 Stricted the conditions a bit +//========================================================= + +sec_pri.gat,36,58,1 script Chief Warder 105,{ + mes "[Saddeus]"; + emotion 1; + if(sex) { + mes "Mr. Prisoner #"+BaseLevel+JobLevel+","; + } else { + 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; + 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]"; + if(checkcart(0) || checkfalcon(0) || checkriding(0)){ + emotion e_hmm; + mes "I'm sorry, you should release your Cart, PecoPeco or Falcon!"; + close; + } + 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; + 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 nowarpto +sec_in02.gat mapflag noexp +sec_in02.gat mapflag noskill +//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 index 3be00a151..a6768afd0 100644 --- a/npc/custom/platinum_skills.txt +++ b/npc/custom/platinum_skills.txt @@ -1,112 +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;
-}
-
+//===== 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 index e4b842df4..7d5b651a1 100644 --- a/npc/custom/poetry/ayothaya.txt +++ b/npc/custom/poetry/ayothaya.txt @@ -1,724 +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;
-}
+//===== 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 index 609a7fe14..a1872215f 100644 --- a/npc/custom/quests/bandit_beard.txt +++ b/npc/custom/quests/bandit_beard.txt @@ -1,236 +1,236 @@ -//===== eAthena Script =======================================
-//= Bandit Beard Quest
-//===== By: ==================================================
-//= Mega Man Expert & Lupus
-//===== Current Version: =====================================
-//= 1.2
-//===== 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
-//= 1.2 fixed donpcevent label [Lupus]
-//============================================================
-
-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::OnStart";
- 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,{
-OnStart:
- 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;
+//===== eAthena Script ======================================= +//= Bandit Beard Quest +//===== By: ================================================== +//= Mega Man Expert & Lupus +//===== Current Version: ===================================== +//= 1.2 +//===== 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 +//= 1.2 fixed donpcevent label [Lupus] +//============================================================ + +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::OnStart"; + 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,{ +OnStart: + 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 index 9b26f7ad0..a58cadc18 100644 --- a/npc/custom/quests/berzebub.txt +++ b/npc/custom/quests/berzebub.txt @@ -1,74 +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;
-}
+//===== 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 index 73e226fe7..3c393b456 100644 --- a/npc/custom/quests/dead_branch.txt +++ b/npc/custom/quests/dead_branch.txt @@ -1,105 +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;
-}
+//===== 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 index d4b80afdd..ab6258a4d 100644 --- a/npc/custom/quests/elvenear.txt +++ b/npc/custom/quests/elvenear.txt @@ -1,68 +1,68 @@ -//===== 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";
- next;
- if(countitem(2213)<1 || countitem(1040)<20 || countitem(919)<20) goto L_NoMake;
- delitem 2213,1;
- delitem 1040,20;
- delitem 919,20;
- 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 "[Elven Ears Quest]";
- 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 "[Elven Ears Quest]";
- 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;
-}
+//===== 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"; + next; + if(countitem(2213)<1 || countitem(1040)<20 || countitem(919)<20) goto L_NoMake; + delitem 2213,1; + delitem 1040,20; + delitem 919,20; + 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 "[Elven Ears Quest]"; + 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 "[Elven Ears Quest]"; + 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 index d91a780d0..45f8d355e 100644 --- a/npc/custom/quests/event_6_new_hats.txt +++ b/npc/custom/quests/event_6_new_hats.txt @@ -1,372 +1,372 @@ -//===== eAthena Script =======================================
-//= Custom Quest For New Headgears
-//===== By: ==================================================
-//= RedxSwordxHero, Lupus
-//===== Current Version: =====================================
-//= 1.4b
-//===== 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. 1.4a fixed wrong item ID [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 1 hat and my brothers provides the other 5.";
- 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 1 hat and my brothers provides the other 5.";
- 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 2 hats and my brothers provides the other 4.";
- 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(10009) < 1) goto L_ITEM_2b;//Items: Wild Flower,
- 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 2 hats and my brothers provides the other 4.";
- 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;
+//===== eAthena Script ======================================= +//= Custom Quest For New Headgears +//===== By: ================================================== +//= RedxSwordxHero, Lupus +//===== Current Version: ===================================== +//= 1.4b +//===== 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. 1.4a fixed wrong item ID [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 1 hat and my brothers provides the other 5."; + 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 1 hat and my brothers provides the other 5."; + 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 2 hats and my brothers provides the other 4."; + 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(10009) < 1) goto L_ITEM_2b;//Items: Wild Flower, + 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 2 hats and my brothers provides the other 4."; + 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; }
\ No newline at end of file diff --git a/npc/custom/quests/fashion.txt b/npc/custom/quests/fashion.txt index 0681478f9..cf8d9dc4a 100644 --- a/npc/custom/quests/fashion.txt +++ b/npc/custom/quests/fashion.txt @@ -1,69 +1,69 @@ -//===== 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";
- next;
- if(countitem(2271)<1 || countitem(975)<1) goto M_NOITEMS;
- delitem 2271,1;
- delitem 975,1;
- 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 "[Fashionable Glasses Quest]";
- 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 "[Fashionable Glasses Quest]";
- 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;
-}
+//===== 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"; + next; + if(countitem(2271)<1 || countitem(975)<1) goto M_NOITEMS; + delitem 2271,1; + delitem 975,1; + 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 "[Fashionable Glasses Quest]"; + 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 "[Fashionable Glasses Quest]"; + 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 index 39b5f0aaa..123f04a51 100644 --- a/npc/custom/quests/ironcane.txt +++ b/npc/custom/quests/ironcane.txt @@ -1,49 +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;
-}
+//===== 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 index a0a0975aa..7b6650ba4 100644 --- a/npc/custom/quests/kaho_balmung.txt +++ b/npc/custom/quests/kaho_balmung.txt @@ -1,76 +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;
-}
+// $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 index 2a74b6c06..50872bcfd 100644 --- a/npc/custom/quests/kahohorn.txt +++ b/npc/custom/quests/kahohorn.txt @@ -1,84 +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;
-}
+//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/kiel_quest.txt b/npc/custom/quests/kiel_quest.txt index 862079f1d..cfc22e588 100644 --- a/npc/custom/quests/kiel_quest.txt +++ b/npc/custom/quests/kiel_quest.txt @@ -1,63 +1,63 @@ -//===== eAthena Script =======================================
-//= Custom Kiel Dungeon Warper
-//===== By: ==================================================
-//= Lupus
-//===== Current Version: =====================================
-//= 1.0
-//===== Compatible With: =====================================
-//= eAthena 1.0
-//===== Description: =========================================
-//= I't custom 8) But you have to pay every time u enter
-//===== Additional Comments: =================================
-//=
-//============================================================
-
-prontera.gat,157,168,2 script Kiel Capry 68,{
- mes "[Kiel Capry]";
- mes callfunc("F_Hi");
- mes "Help us! Everybody's evacuated! There's an accident in my father's University...";
- if(rand(2))close;
- specialeffect 417;
- next;
- emotion e_wah;
- mes "[Kiel Capry]";
- mes "My father, ^FF0000Kiel Carlo^000000 is waiting for help in the broken elevator.";
- if(rand(2))close;
- next;
- mes "[Kiel Capry]";
- mes "What? Our home is located in the middle of ^FF0000Yuno field 08^000000...";
- close;
-}
-
-kh_school.gat,119,146,3 script Kiel Carlo 748,{
- mes "[Kiel Carlo]";
- mes callfunc("F_Hi");
- mes "We have evacuated all the students!";
- mes "What? Are you going to jump in the lift tunnel, just in hands of the gone bad robots?";
- mes "Well... we nedd money. Will you pay 10.000z?";
- next;
- emotion e_hmm;
- menu "Yep.",M_GO, "No way!",-;
-
- mes "[Kiel Carlo]";
- mes "Well... "+callfunc("F_Bye");
- close;
-
-M_GO:
- mes "[Kiel Carlo]";
- mes "I never let you go if you don't meet these conditions:";
- mes "1. You have to be 70 Base Level or upper.";
- mes "2. You have to donate 10.000 zeny.";
- next;
- if(BaseLevel<70 || Zeny<10000){
- mes "[Kiel Carlo]";
- mes "Alas... I can't let you in.";
- emotion e_sry;
- close;
- }
- set Zeny,Zeny-10000;
- warp "kh_kiehl02.gat",rand(46,53),rand(9,12);
- end;
-}
-
-kh_kiehl02.gat,49,5,0 warp warpk06 1,1,kh_school.gat,119,146
+//===== eAthena Script ======================================= +//= Custom Kiel Dungeon Warper +//===== By: ================================================== +//= Lupus +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= eAthena 1.0 +//===== Description: ========================================= +//= I't custom 8) But you have to pay every time u enter +//===== Additional Comments: ================================= +//= +//============================================================ + +prontera.gat,157,168,2 script Kiel Capry 68,{ + mes "[Kiel Capry]"; + mes callfunc("F_Hi"); + mes "Help us! Everybody's evacuated! There's an accident in my father's University..."; + if(rand(2))close; + specialeffect 417; + next; + emotion e_wah; + mes "[Kiel Capry]"; + mes "My father, ^FF0000Kiel Carlo^000000 is waiting for help in the broken elevator."; + if(rand(2))close; + next; + mes "[Kiel Capry]"; + mes "What? Our home is located in the middle of ^FF0000Yuno field 08^000000..."; + close; +} + +kh_school.gat,119,146,3 script Kiel Carlo 748,{ + mes "[Kiel Carlo]"; + mes callfunc("F_Hi"); + mes "We have evacuated all the students!"; + mes "What? Are you going to jump in the lift tunnel, just in hands of the gone bad robots?"; + mes "Well... we nedd money. Will you pay 10.000z?"; + next; + emotion e_hmm; + menu "Yep.",M_GO, "No way!",-; + + mes "[Kiel Carlo]"; + mes "Well... "+callfunc("F_Bye"); + close; + +M_GO: + mes "[Kiel Carlo]"; + mes "I never let you go if you don't meet these conditions:"; + mes "1. You have to be 70 Base Level or upper."; + mes "2. You have to donate 10.000 zeny."; + next; + if(BaseLevel<70 || Zeny<10000){ + mes "[Kiel Carlo]"; + mes "Alas... I can't let you in."; + emotion e_sry; + close; + } + set Zeny,Zeny-10000; + warp "kh_kiehl02.gat",rand(46,53),rand(9,12); + end; +} + +kh_kiehl02.gat,49,5,0 warp warpk06 1,1,kh_school.gat,119,146 diff --git a/npc/custom/quests/lvl99_quest.txt b/npc/custom/quests/lvl99_quest.txt index aebb44d3d..9788cd57d 100644 --- a/npc/custom/quests/lvl99_quest.txt +++ b/npc/custom/quests/lvl99_quest.txt @@ -1,67 +1,67 @@ -//===== eAthena Script =======================================
-//= Quest for 99 Base Level Players
-//===== By: ==================================================
-//= Lupus
-//===== Current Version: =====================================
-//= 1.0
-//===== Compatible With: =====================================
-//= Any eAthena Version
-//===== Description: =========================================
-//= It makes players stay longer at 99th level and get a
-//= Jewel Case as a reward
-//===== Additional Comments: =================================
-//=
-//============================================================
-
-
-lighthalzen.gat,108,229,2 script La Fenn 766,{
- mes "[La Fenn]";
- if(BaseLevel<99) {
- if(Q_99LVL) {
- mes "You... You got younger!!! But you are defenitely YOU!";
- mes "I couldn't think you were able to meet my condition...";
- emotion e_hmm;
- next;
- mes "[La Fenn]";
- mes "Here is your prize. It's yours for good.";
- set Q_99LVL,0;
- getitem 12106,1; //Jewel Case
- emotion e_grat;
- } else {
- mes callfunc("F_Hi");
- mes "...";
- emotion e_yawn;
- next;
- mes "[La Fenn]";
- mes "I've got a riddle for a strong man of 2nd Class and 99 Base Level.";
- mes "*Yawn* If you meet some, please tell them about my riddle.";
- }
- close;
- }
- if(BaseLevel==99 && Upper==0) {
- if(Q_99LVL) {
- mes "Now go forth and get younger!";
- mes "If you solve my riddle, then I'll give you a magical Jewel Case with a rare accessory.";
- } else {
- mes callfunc("F_Hi")+" The Hero!";
- if(BaseExp<1000000) {
- mes "Now you're strong.";
- mes "But... not quite strong for my riddle.";
- if(rand(2)) {
- mes "Kill "+((1000000-BaseExp)/3765+1)+" more Seals and return.";
- } else {
- mes "Kill "+((1000000-BaseExp)/81+1)+" more Poporings and come back.";
- }
- } else {
- mes "Now you're REALLY strong.";
- mes "And if you get younger than now I'll give you my treasure.";
- set Q_99LVL,1;
- emotion e_no1;
- }
- }
- close;
- }
- emotion e_hmm;
- mes "...";
- close;
+//===== eAthena Script ======================================= +//= Quest for 99 Base Level Players +//===== By: ================================================== +//= Lupus +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= Any eAthena Version +//===== Description: ========================================= +//= It makes players stay longer at 99th level and get a +//= Jewel Case as a reward +//===== Additional Comments: ================================= +//= +//============================================================ + + +lighthalzen.gat,108,229,2 script La Fenn 766,{ + mes "[La Fenn]"; + if(BaseLevel<99) { + if(Q_99LVL) { + mes "You... You got younger!!! But you are defenitely YOU!"; + mes "I couldn't think you were able to meet my condition..."; + emotion e_hmm; + next; + mes "[La Fenn]"; + mes "Here is your prize. It's yours for good."; + set Q_99LVL,0; + getitem 12106,1; //Jewel Case + emotion e_grat; + } else { + mes callfunc("F_Hi"); + mes "..."; + emotion e_yawn; + next; + mes "[La Fenn]"; + mes "I've got a riddle for a strong man of 2nd Class and 99 Base Level."; + mes "*Yawn* If you meet some, please tell them about my riddle."; + } + close; + } + if(BaseLevel==99 && Upper==0) { + if(Q_99LVL) { + mes "Now go forth and get younger!"; + mes "If you solve my riddle, then I'll give you a magical Jewel Case with a rare accessory."; + } else { + mes callfunc("F_Hi")+" The Hero!"; + if(BaseExp<1000000) { + mes "Now you're strong."; + mes "But... not quite strong for my riddle."; + if(rand(2)) { + mes "Kill "+((1000000-BaseExp)/3765+1)+" more Seals and return."; + } else { + mes "Kill "+((1000000-BaseExp)/81+1)+" more Poporings and come back."; + } + } else { + mes "Now you're REALLY strong."; + mes "And if you get younger than now I'll give you my treasure."; + set Q_99LVL,1; + emotion e_no1; + } + } + close; + } + emotion e_hmm; + mes "..."; + close; }
\ No newline at end of file diff --git a/npc/custom/quests/magicalhatquest.txt b/npc/custom/quests/magicalhatquest.txt index 69fb42390..dd5d04682 100644 --- a/npc/custom/quests/magicalhatquest.txt +++ b/npc/custom/quests/magicalhatquest.txt @@ -1,58 +1,58 @@ -//===== 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 "[Wizard Hat Dude]";
- 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;
-}
+//===== 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 "[Wizard Hat Dude]"; + 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/may_hats.txt b/npc/custom/quests/may_hats.txt index f514432c3..2c8d6dfb8 100644 --- a/npc/custom/quests/may_hats.txt +++ b/npc/custom/quests/may_hats.txt @@ -1,180 +1,180 @@ -//===== eAthena Script =======================================
-//= Quests: Bird Nest, Lion Mask, Skeleton Manteau,
-//= Fashion Hip Sack & Sales Banner
-//===== By: ==================================================
-//= Lupus
-//===== Current Version: =====================================
-//= 1.01
-//===== Compatible With: =====================================
-//= eAthena 1.0
-//===== Description: =========================================
-//= Custom quest for some RO mobile game bonus items
-//===== Additional Comments: =================================
-//= 1 May, 2006
-//= 1.01 translated the rest of dialogues
-//============================================================
-
-gonryun.gat,187,140,4 script Yakima 850,{
- mes "[Yakima]";
- mes callfunc("F_Hi");
- mes "I can make some items for you.";
- mes "They are quite rare novadays...";
- specialeffect 417;
- next;
- menu "Bird Nest",-,"Lion Mask",M_2,"Skeleton Manteau",M_3,"Fashion Hip Sack",M_4,"Sales Banner",M_5,"Leave",M_EXIT;
-
- mes "[Yakima]";
- mes "Oh.. it's an excellent item for any beast hunter.";
- emotion e_rock;
- next;
- mes "[Yakima]";
- mes "For the hat I'll need:";
- mes "1 Sombrero,";
- mes "920 Feathers of Birds and";
- mes "310 Bills of Birds.";
- next;
- mes "[Yakima]";
- mes "Do you have all the items?";
- next;
- menu "Yeah.",-,"Nay.",M_EXIT;
-
- if(countitem(5067) < 1 || countitem(916) < 920 || countitem(925) < 310) GOTO L_NOITEM;//Items: Sombrero, Feather_of_Birds, Bill_of_Birds,
- delitem 5067,1;//Items: Sombrero,
- delitem 916,920;//Items: Feather_of_Birds,
- delitem 925,310;//Items: Bill_of_Birds,
- getitem 5129,1;//Items: Bird_Nest,
- mes "[Yakima]";
- mes "Thank you very very much!";
- mes callfunc("F_Bye");
- close;
-
-M_2:
- mes "[Yakima]";
- mes "Bingo! Many people are afraid of lions... to the muteness...";
- emotion e_slur;
- next;
- mes "[Yakima]";
- mes "For the hat I'll need:";
- mes "1 Tiger Mask,";
- mes "10 Tiger's Footskins,";
- mes "30 Tiger Skins and";
- mes "300 Tiger Panties.";
- next;
- mes "[Yakima]";
- mes "Do you have all the items?";
- next;
- menu "Yeah.",-,"Nay.",M_EXIT;
-
- if(countitem(5098) < 1 || countitem(1030) < 10 || countitem(1029) < 30 || countitem(7267) < 300) GOTO L_NOITEM;//Items: Tiger_Mask, Tiger_Skin, Tiger's_Footskin, Tiger_Panty,
- delitem 5098,1;//Items: Tiger_Mask,
- delitem 1030,10;//Items: Tiger's_Footskin,
- delitem 1029,30;//Items: Tiger_Skin,
- delitem 7267,300;//Items: Tiger_Panty,
- getitem 5130,1;//Items: Lion_Mask,
- mes "[Yakima]";
- mes "Thank you very very much!";
- mes callfunc("F_Bye");
- close;
-
-M_3:
- mes "[Yakima]";
- mes "I wish I sold this filthy manteau faster...";
- mes "Guess it isn't so plain as it looks... Hmm.";
- emotion e_wah;
- next;
- mes "[Yakima]";
- mes "I'm giving it almost for free:";
- mes "10 Old Manteaus,";
- mes "3 Skull Rings,";
- mes "2 Manteau[1] and";
- mes "1 Ragamuffin Manteau.";
- next;
- mes "[Yakima]";
- mes "Do you have all the items?";
- next;
- menu "Yeah.",-,"Nay.",M_EXIT;
-
- if(countitem(2508) < 1 || countitem(2506) < 2 || countitem(2609) < 3 || countitem(7207) < 10) GOTO L_NOITEM;//Items: Ragamuffin_Manteau, Manteau_, Skull_Ring, Old_Manteau,
- delitem 2508,1;//Items: Ragamuffin_Manteau,
- delitem 2506,2;//Items: Manteau_,
- delitem 2609,3;//Items: Skull_Ring,
- delitem 7207,10;//Items: Old_Manteau,
- getitem 2511,1;//Items: Skeleton_Manteau,
- mes "[Yakima]";
- mes "Thank you very very much!";
- mes callfunc("F_Bye");
- close;
-
-M_4:
- mes "[Yakima]";
- mes "It's a fresh style! Ancessory and a bag all in one! You'd get +2 STR... It's different from that sabby nest!";
- mes "It fits to Merchant classonly.";
- emotion e_heh;
- next;
- mes "[Yakima]";
- mes "Now my stock is full of those bags... So I'll make it from 3 flower things and a rough piece of clothes:";
- mes "3 Romantic Flowers,";
- mes "3 Fancy Flowers,";
- mes "2 Flower Rings and";
- mes "3 Pirate Bandanas.";
- next;
- mes "[Yakima]";
- mes "Do you have all the items?";
- next;
- menu "Yeah.",-,"Nay.",M_EXIT;
-
- if(countitem(2269) < 3 || countitem(2207) < 3 || countitem(2612) < 2 || countitem(2287)<3 ) GOTO L_NOITEM;//Items: Romantic_Flower, Fancy_Flower, Flower_Ring,
- delitem 2269,3;//Items: Romantic_Flower,
- delitem 2207,3;//Items: Fancy_Flower,
- delitem 2612,2;//Items: Flower_Ring,
- delitem 2287,3;//Items: Pirate_Bandana
- getitem 2641,1;//Items: Fashion_Hip_Sack,
- mes "[Yakima]";
- mes "Thank you very very much!";
- mes callfunc("F_Bye");
- close;
-
-M_5:
- mes "[Yakima]";
- mes "Well, well, well... this sign fits any class from a certain level!";
- mes "Your foes'd be dazzled!";
- emotion e_no1;
- next;
- mes "[Yakima]";
- mes "Well... we construct it from some common items:";
- mes "1 Scarlet Dyestuff,";
- mes "1 Orange Dyestuff,";
- mes "2 Stop Posts,";
- mes "3 Clown Noses,";
- mes "180 Fig Leaves and";
- mes "20 Solid Peaches.";
- next;
- mes "[Yakima]";
- mes "Do you have all the items?";
- next;
- menu "Yeah.",-,"Nay.",M_EXIT;
-
- if(countitem(975) < 1 || countitem(980) < 1 || countitem(2272) < 2 || countitem(2262) < 3 || countitem(7298) < 180 || countitem(7164) < 20) GOTO L_NOITEM;//Items: Scarlet_Dyestuff, Orange_Dyestuff, Stop_Post, Clown_Nose, Fig_Leaf, Solid_Peach,
- delitem 975,1;//Items: Scarlet_Dyestuff,
- delitem 980,1;//Items: Orange_Dyestuff,
- delitem 2272,2;//Items: Stop_Post,
- delitem 2262,3;//Items: Clown_Nose,
- delitem 7298,180;//Items: Fig_Leaf,
- delitem 7164,20;//Items: Solid_Peach,
- getitem 5100,1;//Items: Sales_Banner,
- mes "[Yakima]";
- mes "Thank you very very much!";
- mes callfunc("F_Bye");
- close;
-
-L_NOITEM:
- mes "[Yakima]";
- mes "You are lack of items. Please, get all the items.";
- emotion e_sry;
- close;
-
-M_EXIT:
- mes "[Yakima]";
- mes callfunc("F_Bye");
- close;
-}
+//===== eAthena Script ======================================= +//= Quests: Bird Nest, Lion Mask, Skeleton Manteau, +//= Fashion Hip Sack & Sales Banner +//===== By: ================================================== +//= Lupus +//===== Current Version: ===================================== +//= 1.01 +//===== Compatible With: ===================================== +//= eAthena 1.0 +//===== Description: ========================================= +//= Custom quest for some RO mobile game bonus items +//===== Additional Comments: ================================= +//= 1 May, 2006 +//= 1.01 translated the rest of dialogues +//============================================================ + +gonryun.gat,187,140,4 script Yakima 850,{ + mes "[Yakima]"; + mes callfunc("F_Hi"); + mes "I can make some items for you."; + mes "They are quite rare novadays..."; + specialeffect 417; + next; + menu "Bird Nest",-,"Lion Mask",M_2,"Skeleton Manteau",M_3,"Fashion Hip Sack",M_4,"Sales Banner",M_5,"Leave",M_EXIT; + + mes "[Yakima]"; + mes "Oh.. it's an excellent item for any beast hunter."; + emotion e_rock; + next; + mes "[Yakima]"; + mes "For the hat I'll need:"; + mes "1 Sombrero,"; + mes "920 Feathers of Birds and"; + mes "310 Bills of Birds."; + next; + mes "[Yakima]"; + mes "Do you have all the items?"; + next; + menu "Yeah.",-,"Nay.",M_EXIT; + + if(countitem(5067) < 1 || countitem(916) < 920 || countitem(925) < 310) GOTO L_NOITEM;//Items: Sombrero, Feather_of_Birds, Bill_of_Birds, + delitem 5067,1;//Items: Sombrero, + delitem 916,920;//Items: Feather_of_Birds, + delitem 925,310;//Items: Bill_of_Birds, + getitem 5129,1;//Items: Bird_Nest, + mes "[Yakima]"; + mes "Thank you very very much!"; + mes callfunc("F_Bye"); + close; + +M_2: + mes "[Yakima]"; + mes "Bingo! Many people are afraid of lions... to the muteness..."; + emotion e_slur; + next; + mes "[Yakima]"; + mes "For the hat I'll need:"; + mes "1 Tiger Mask,"; + mes "10 Tiger's Footskins,"; + mes "30 Tiger Skins and"; + mes "300 Tiger Panties."; + next; + mes "[Yakima]"; + mes "Do you have all the items?"; + next; + menu "Yeah.",-,"Nay.",M_EXIT; + + if(countitem(5098) < 1 || countitem(1030) < 10 || countitem(1029) < 30 || countitem(7267) < 300) GOTO L_NOITEM;//Items: Tiger_Mask, Tiger_Skin, Tiger's_Footskin, Tiger_Panty, + delitem 5098,1;//Items: Tiger_Mask, + delitem 1030,10;//Items: Tiger's_Footskin, + delitem 1029,30;//Items: Tiger_Skin, + delitem 7267,300;//Items: Tiger_Panty, + getitem 5130,1;//Items: Lion_Mask, + mes "[Yakima]"; + mes "Thank you very very much!"; + mes callfunc("F_Bye"); + close; + +M_3: + mes "[Yakima]"; + mes "I wish I sold this filthy manteau faster..."; + mes "Guess it isn't so plain as it looks... Hmm."; + emotion e_wah; + next; + mes "[Yakima]"; + mes "I'm giving it almost for free:"; + mes "10 Old Manteaus,"; + mes "3 Skull Rings,"; + mes "2 Manteau[1] and"; + mes "1 Ragamuffin Manteau."; + next; + mes "[Yakima]"; + mes "Do you have all the items?"; + next; + menu "Yeah.",-,"Nay.",M_EXIT; + + if(countitem(2508) < 1 || countitem(2506) < 2 || countitem(2609) < 3 || countitem(7207) < 10) GOTO L_NOITEM;//Items: Ragamuffin_Manteau, Manteau_, Skull_Ring, Old_Manteau, + delitem 2508,1;//Items: Ragamuffin_Manteau, + delitem 2506,2;//Items: Manteau_, + delitem 2609,3;//Items: Skull_Ring, + delitem 7207,10;//Items: Old_Manteau, + getitem 2511,1;//Items: Skeleton_Manteau, + mes "[Yakima]"; + mes "Thank you very very much!"; + mes callfunc("F_Bye"); + close; + +M_4: + mes "[Yakima]"; + mes "It's a fresh style! Ancessory and a bag all in one! You'd get +2 STR... It's different from that sabby nest!"; + mes "It fits to Merchant classonly."; + emotion e_heh; + next; + mes "[Yakima]"; + mes "Now my stock is full of those bags... So I'll make it from 3 flower things and a rough piece of clothes:"; + mes "3 Romantic Flowers,"; + mes "3 Fancy Flowers,"; + mes "2 Flower Rings and"; + mes "3 Pirate Bandanas."; + next; + mes "[Yakima]"; + mes "Do you have all the items?"; + next; + menu "Yeah.",-,"Nay.",M_EXIT; + + if(countitem(2269) < 3 || countitem(2207) < 3 || countitem(2612) < 2 || countitem(2287)<3 ) GOTO L_NOITEM;//Items: Romantic_Flower, Fancy_Flower, Flower_Ring, + delitem 2269,3;//Items: Romantic_Flower, + delitem 2207,3;//Items: Fancy_Flower, + delitem 2612,2;//Items: Flower_Ring, + delitem 2287,3;//Items: Pirate_Bandana + getitem 2641,1;//Items: Fashion_Hip_Sack, + mes "[Yakima]"; + mes "Thank you very very much!"; + mes callfunc("F_Bye"); + close; + +M_5: + mes "[Yakima]"; + mes "Well, well, well... this sign fits any class from a certain level!"; + mes "Your foes'd be dazzled!"; + emotion e_no1; + next; + mes "[Yakima]"; + mes "Well... we construct it from some common items:"; + mes "1 Scarlet Dyestuff,"; + mes "1 Orange Dyestuff,"; + mes "2 Stop Posts,"; + mes "3 Clown Noses,"; + mes "180 Fig Leaves and"; + mes "20 Solid Peaches."; + next; + mes "[Yakima]"; + mes "Do you have all the items?"; + next; + menu "Yeah.",-,"Nay.",M_EXIT; + + if(countitem(975) < 1 || countitem(980) < 1 || countitem(2272) < 2 || countitem(2262) < 3 || countitem(7298) < 180 || countitem(7164) < 20) GOTO L_NOITEM;//Items: Scarlet_Dyestuff, Orange_Dyestuff, Stop_Post, Clown_Nose, Fig_Leaf, Solid_Peach, + delitem 975,1;//Items: Scarlet_Dyestuff, + delitem 980,1;//Items: Orange_Dyestuff, + delitem 2272,2;//Items: Stop_Post, + delitem 2262,3;//Items: Clown_Nose, + delitem 7298,180;//Items: Fig_Leaf, + delitem 7164,20;//Items: Solid_Peach, + getitem 5100,1;//Items: Sales_Banner, + mes "[Yakima]"; + mes "Thank you very very much!"; + mes callfunc("F_Bye"); + close; + +L_NOITEM: + mes "[Yakima]"; + mes "You are lack of items. Please, get all the items."; + emotion e_sry; + close; + +M_EXIT: + mes "[Yakima]"; + mes callfunc("F_Bye"); + close; +} diff --git a/npc/custom/quests/sphinx_mask.txt b/npc/custom/quests/sphinx_mask.txt index 2ebffe22a..59d36ad05 100644 --- a/npc/custom/quests/sphinx_mask.txt +++ b/npc/custom/quests/sphinx_mask.txt @@ -1,80 +1,80 @@ -//===== eAthena Script =======================================
-//= Sphinx Mask Quest (custom)
-//===== By: ==================================================
-//= sabernet09 & eAthena Team
-//===== Current Version: =====================================
-//= 1.2
-//===== Compatible With: =====================================
-//= eAthena 7.15 +
-//===== Description: =========================================
-//= this quest is related to Umbalian Chief
-//= 1.1 Removed it from official Umbala quests [Lupus]
-//= 1.2 Added a missing variable (sphmask_q) [erKURITA]
-//============================================================
-
-
-//===========================================================================
-morocc.gat,140,156,5 script Turban Thief 58,{
- if(event_umbala < 2) goto AWAY;
- if(sphmask_q) goto NoBus;
- mes "[Turban Thief]";
- mes "E'llo mah frien, would I interesst tu with this rare mask? Its value I assure you is real mah frien. Tis manific!";
- next;
- mes "[Turban Thief]";
- mes "Wah? O ho ho ho, so you know thaz I steal dis from those savages no? Well I won'tz give it back. But I will for a pricez... wat you say?";
- next;
- menu "Pay 1,000,000z",-,"No deal",NoGo;
-
- if(Zeny < 1000000) goto NotEnough;
- set Zeny,Zeny-1000000;
- mes "[Turban Thief]";
- mes "O ho ho, its a deal then!";
- getitem 7114,1;//Items: Sphinx Mask,
- set sphmask_q,1;
- close;
-
- NoGo:
- mes "[Turban Thief]";
- mes "Ahh a business man are you no? Fine, how about...";
- next;
- menu "Pay 750,000",-,"Nope lower",NoGoB;
-
- if(Zeny < 750000) goto NotEnough;
- set Zeny,Zeny-750000;
- mes "[Turban Thief]";
- mes "It is a done deal, no refunds!";
- getitem 7114,1;//Items: Sphinx Mask,
- set sphmask_q,1;
- close;
- NoGoB:
- mes "[Turban Thief]";
- mes "Hmmm... you drive a hard bargain, ok... my final offer...";
- next;
- menu "Pay 500,000",-,"It can go lower than that.",NoGoC;
-
- if(Zeny < 500000) goto NotEnough;
- set Zeny,Zeny-500000;
- mes "[Turban Thief]";
- mes "Alright, here you go then...";
- getitem 7114,1;//Items: Sphinx Mask,
- set sphmask_q,1;
- close;
- NoGoC:
- next;
- mes "[Turban Thief]";
- mes "Ack! Forgez it! I can do bettaz en elsez where!";
- set sphmask_q,1;
- close;
- NoBus:
- mes "[Turban Thief]";
- mes "You have no more business with me, go away!";
- close;
- AWAY:
- mes "[Turban Thief]";
- mes "What do you wan te withz me? Be gone!";
- close;
- NotEnough:
- mes "[Turban Thief]";
- mes "Are youz playin wit me? You don't have ze money!";
- close;
+//===== eAthena Script ======================================= +//= Sphinx Mask Quest (custom) +//===== By: ================================================== +//= sabernet09 & eAthena Team +//===== Current Version: ===================================== +//= 1.2 +//===== Compatible With: ===================================== +//= eAthena 7.15 + +//===== Description: ========================================= +//= this quest is related to Umbalian Chief +//= 1.1 Removed it from official Umbala quests [Lupus] +//= 1.2 Added a missing variable (sphmask_q) [erKURITA] +//============================================================ + + +//=========================================================================== +morocc.gat,140,156,5 script Turban Thief 58,{ + if(event_umbala < 2) goto AWAY; + if(sphmask_q) goto NoBus; + mes "[Turban Thief]"; + mes "E'llo mah frien, would I interesst tu with this rare mask? Its value I assure you is real mah frien. Tis manific!"; + next; + mes "[Turban Thief]"; + mes "Wah? O ho ho ho, so you know thaz I steal dis from those savages no? Well I won'tz give it back. But I will for a pricez... wat you say?"; + next; + menu "Pay 1,000,000z",-,"No deal",NoGo; + + if(Zeny < 1000000) goto NotEnough; + set Zeny,Zeny-1000000; + mes "[Turban Thief]"; + mes "O ho ho, its a deal then!"; + getitem 7114,1;//Items: Sphinx Mask, + set sphmask_q,1; + close; + + NoGo: + mes "[Turban Thief]"; + mes "Ahh a business man are you no? Fine, how about..."; + next; + menu "Pay 750,000",-,"Nope lower",NoGoB; + + if(Zeny < 750000) goto NotEnough; + set Zeny,Zeny-750000; + mes "[Turban Thief]"; + mes "It is a done deal, no refunds!"; + getitem 7114,1;//Items: Sphinx Mask, + set sphmask_q,1; + close; + NoGoB: + mes "[Turban Thief]"; + mes "Hmmm... you drive a hard bargain, ok... my final offer..."; + next; + menu "Pay 500,000",-,"It can go lower than that.",NoGoC; + + if(Zeny < 500000) goto NotEnough; + set Zeny,Zeny-500000; + mes "[Turban Thief]"; + mes "Alright, here you go then..."; + getitem 7114,1;//Items: Sphinx Mask, + set sphmask_q,1; + close; + NoGoC: + next; + mes "[Turban Thief]"; + mes "Ack! Forgez it! I can do bettaz en elsez where!"; + set sphmask_q,1; + close; + NoBus: + mes "[Turban Thief]"; + mes "You have no more business with me, go away!"; + close; + AWAY: + mes "[Turban Thief]"; + mes "What do you wan te withz me? Be gone!"; + close; + NotEnough: + mes "[Turban Thief]"; + mes "Are youz playin wit me? You don't have ze money!"; + close; }
\ No newline at end of file diff --git a/npc/custom/quests/sunglasses.txt b/npc/custom/quests/sunglasses.txt index f8830eec6..bcd4cf364 100644 --- a/npc/custom/quests/sunglasses.txt +++ b/npc/custom/quests/sunglasses.txt @@ -1,144 +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;
-}
-
+//===== 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 index d33811847..9a9bdd29f 100644 --- a/npc/custom/quests/tha_statues.txt +++ b/npc/custom/quests/tha_statues.txt @@ -1,277 +1,277 @@ -//===== eAthena Script =======================================
-//= Custom Thanatos Tower Quest
-//===== By: ==================================================
-//= Bibilol & Moryagorn
-//===== Current Version: =====================================
-//= 1.1
-//===== Compatible With: =====================================
-//= Any eAthena Version;
-//===== Description: =========================================
-//= Custom Thanatos Tower Quest
-//===== Additional Comments: =================================
-//= 1.1 Fixed wrong NPC names in their dialogues, added
-//= Justin84's gems check in Sox NPC [Lupus]
-//============================================================
-
-
-//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 Vox.";
- 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 Hox.";
- 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.";
- next;
- mes "[Sox]";
- mes "You have to give me Red Magic Stone, Yellow Magic Stone, Blue Magic Stone & Green Magic Stone.";
- next;
- if(countitem(7426) < 1 || countitem(7427) < 1 || countitem(7428) < 1 || countitem(7429) < 1) goto nostone;
- delitem 7426,1;
- delitem 7427,1;
- delitem 7428,1;
- delitem 7429,1;
- mes "[Sox]";
- 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;
-
-nostone:
- mes "[Sox]";
- mes "Oh well, seems you don't have enough stones.";
- close;
-
-nook:
- mes "[Sox]";
- mes "Sorry, Go back and talk to Dox.";
- next;
- set TSQ_CHK,0;
- close;
+//===== eAthena Script ======================================= +//= Custom Thanatos Tower Quest +//===== By: ================================================== +//= Bibilol & Moryagorn +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= Any eAthena Version; +//===== Description: ========================================= +//= Custom Thanatos Tower Quest +//===== Additional Comments: ================================= +//= 1.1 Fixed wrong NPC names in their dialogues, added +//= Justin84's gems check in Sox NPC [Lupus] +//============================================================ + + +//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 Vox."; + 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 Hox."; + 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."; + next; + mes "[Sox]"; + mes "You have to give me Red Magic Stone, Yellow Magic Stone, Blue Magic Stone & Green Magic Stone."; + next; + if(countitem(7426) < 1 || countitem(7427) < 1 || countitem(7428) < 1 || countitem(7429) < 1) goto nostone; + delitem 7426,1; + delitem 7427,1; + delitem 7428,1; + delitem 7429,1; + mes "[Sox]"; + 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; + +nostone: + mes "[Sox]"; + mes "Oh well, seems you don't have enough stones."; + close; + +nook: + mes "[Sox]"; + mes "Sorry, Go back and talk to Dox."; + next; + set TSQ_CHK,0; + close; }
\ No newline at end of file diff --git a/npc/custom/quests/thq/THQS_ChatingNPC.txt b/npc/custom/quests/thq/THQS_ChatingNPC.txt index d7ec81d2c..6d3a938dd 100644 --- a/npc/custom/quests/thq/THQS_ChatingNPC.txt +++ b/npc/custom/quests/thq/THQS_ChatingNPC.txt @@ -1,103 +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;
+//===== 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 index 8a8da7e4c..6f12a6fe5 100644 --- a/npc/custom/quests/thq/THQS_GuildNPC.txt +++ b/npc/custom/quests/thq/THQS_GuildNPC.txt @@ -1,95 +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;
-
+//===== 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 index a2e7ddb21..011553089 100644 --- a/npc/custom/quests/thq/THQS_QuestNPC.txt +++ b/npc/custom/quests/thq/THQS_QuestNPC.txt @@ -1,560 +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;
-}
+//===== 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 index 623e281fc..d7aad4312 100644 --- a/npc/custom/quests/thq/THQS_Quests.txt +++ b/npc/custom/quests/thq/THQS_Quests.txt @@ -1,1053 +1,1053 @@ -//===== 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.3
-//===== 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]
-//= 1.3 Removed Duplicates [Silent]
-//////////////////////////////////////////////////////////
-
-
-///////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#01 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","Flora::OnMobDead";
- 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,"Flora::OnMobDead";
- monster "pay_dun00.gat",0,0,"Flaming Bastard",1072,1,"Flora::OnMobDead";
- close;
-OnMobDead:
- end;
-}
-//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;
- 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#01 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#02 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#01 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#02 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;
- 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#02 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;
-}
+//===== 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.3 +//===== 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] +//= 1.3 Removed Duplicates [Silent] +////////////////////////////////////////////////////////// + + +///////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#01 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","Flora::OnMobDead"; + 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,"Flora::OnMobDead"; + monster "pay_dun00.gat",0,0,"Flaming Bastard",1072,1,"Flora::OnMobDead"; + close; +OnMobDead: + end; +} +//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; + 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#01 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#02 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#01 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#02 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; + 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#02 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 index 5a6b2a70e..b76305ede 100644 --- a/npc/custom/quests/thq/THQS_TTShop.txt +++ b/npc/custom/quests/thq/THQS_TTShop.txt @@ -1,523 +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;
-}
+//===== 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/umbalian_language.txt b/npc/custom/quests/umbalian_language.txt index 55bd878bb..b61569683 100644 --- a/npc/custom/quests/umbalian_language.txt +++ b/npc/custom/quests/umbalian_language.txt @@ -1,213 +1,213 @@ -//===== eAthena Script =======================================
-//= Custom Umbalian Language Quest
-//===== By: ==================================================
-//= sabernet09 & eAthena Team
-//===== Current Version: =====================================
-//= 1.0
-//===== Compatible With: =====================================
-//= eAthena 7.15 +
-//===== Description: =========================================
-//= 1.0 Removed it from offical Umbala Quests [Lupus]
-//============================================================
-
-
-//======================================================================================//
-// Custom Umbala Language Quest
-//======================================================================================//
-
-prontera.gat,145,290,5 script Mason 742,{
- mes "[Mason]";
- if(umb_lang==0) goto L_NOT_GOT_QUEST;
- if(umb_lang==2 || umb_mason==1) goto L_AGAIN;
-
- mes "Hey there, I came here to Prontera in search of an old lady who can remove cards from slots. Do you know where I can find her?";
- menu "Yes",-, "No",M_NO;
-
- mes "Oooo, could you please tell me where she's at? I'd be really appreciative.";
- menu "Swordsman Association",-, "Sanctuary",M_Boo1,"Prontera Chivalry",M_Boo2,"Trading Post",M_Boo3,"Kit Shop",M_Boo4,"Inn",M_Boo5,"Armory",M_DONE,"Library",M_Boo6,"Job Agency",M_Boo7,"Prontera Castle",M_Boo8,"City Hall",M_Boo9;
-
- next;
- mes "[Mason]";
- mes "Hmm... I dunno why she would be there... guess I'll take a look.";
- close;
-M_Boo1:
- next;
- mes "[Mason]";
- mes "Wow I never knew she was a religious person... I'll see to it thanks.";
- close;
-M_Boo2:
- next;
- mes "[Mason]";
- mes "Hmm.... are you sure about that?";
- close;
-M_Boo3:
- next;
- mes "[Mason]";
- mes "Why would she need to go there? I think you might be mistaken.";
- close;
-M_Boo4:
- next;
- mes "[Mason]";
- mes "The only thing she'd need at a Kit shop is medicine for her rheumatism. She's probably long gone from there by now.";
- close;
-M_Boo5:
- next;
- mes "[Mason]";
- mes "I don't think she needs to be there, she LIVES here in Prontera.";
- close;
-M_Boo6:
- next;
- mes "[Mason]";
- mes "Ah I see, if she's studying then I don't want to bother her. Thanks anyways.";
- close;
-M_Boo7:
- next;
- mes "[Mason]";
- mes "Job Agency? I don't think so. Don't lead me all around Prontera please! She's already a teacher here.";
- close;
-M_Boo8:
- next;
- mes "[Mason]";
- mes "The castle eh, I don't want to step in there... just doesn't feel like my style. I don't like that noble feeling of importance type of thing.";
- close;
-M_Boo9:
- next;
- mes "[Mason]";
- mes "O wow, did she become an important part of Prontera? I'd think she's too busy for me to visit. I'll try again later.";
- close;
-M_DONE:
- next;
- mes "[Mason]";
- mes "Ah, I heard that her class was somewhere around there... thanks a lot! Here's a lil something for your help.";
- getitem 7117,1;//Items: Torn Spell Book,
- set umb_mason,1;
- close;
-
-L_AGAIN:
- emotion e_thx;
- mes "Yay, I found her! Thank you very much for you help!";
- close;
-
-L_NOT_GOT_QUEST:
- mes "Hi! I came here to Prontera in search of an old lady... But...";
- close;
-M_NO:
- mes "Oh.. Ok.. Thanks anyways.";
- close;
-}
-
-aldebaran.gat,153,212,1 script Mojo 740,{
- mes "[Mojo]";
- if(umb_lang!=1) goto L_NOT_GOT_QUEST;
- mes "Oh no! I lost my teacher's ^FF0000old magic book^000000!";
- mes "What am I going to do... those dumb Bathory...";
- if(umb_lang==1) set umb_mojo,1;
- close;
-L_NOT_GOT_QUEST:
- emotion e_what;
- mes "I lost my teacher's book! What am I going to do...";
- close;
-}
-
-amatsu.gat,267,189,4 script Marie 744,{
- mes "[Marie]";
- if(umb_lang==0) goto L_NOT_GOT_QUEST;
- if(umb_lang==2 || umb_marie==1) goto L_AGAIN;
- if(countitem(9001)>0 && countitem(643)>0) goto L_DONE;//Items: Poring Egg, Pet Incubator,
- mes "Hello, is there something you need?";
- next;
- menu "No nothing at all.",M_NO,"Your teacher sent me.",-;
-
- mes "[Marie]";
- mes "What does he want from me?";
- emotion e_what;
- next;
- mes "[Marie]";
- mes "Oh wait, I see... he wants his reference scroll back am I right? Well, I'm kinda still using it buuut... I'll give it back if you can gimme a poring egg and an incubator. Those things are so cute!";
- close;
-
-L_NOT_GOT_QUEST:
- emotion e_what;
- mes "Hi! What do you want from me?";
- close;
-
-M_NO:
- mes "[Marie]";
- mes "Hrrmm okay? Cya then..";
- close;
-
-L_DONE:
- mes "Heyyy there, you have a poring egg and the pet incubator to go with it! Are those for me?";
- menu "Yep!",-, "Sorry, no.",M_DOH;
-
- mes "[Marie]";
- if(countitem(9001)==0 && countitem(643)==0) goto M_DOH;//Items: Poring Egg, Pet Incubator,
- mes "Yatta! Here's a lil something in return.";
- delitem 9001,1;//Items: Poring Egg,
- delitem 643,1;//Items: Pet Incubator,
- getitem 7118,1;//Items: Torn Scroll,
- set umb_marie,1; //got Torn Scroll
- close;
-
-M_DOH:
- mes "Oh.. pooo... sigh...";
- close;
-
-L_AGAIN:
- emotion e_thx;
- mes "Yay! I love Porings!";
- close;
-}
-
-yuno.gat,157,366,2 script Wise Man Fabius 743,{
- mes "[Fabius]";
- if(event_umbala >= 3) set umb_lang,2; //You already learnt Umbalian language from Umbalian Chief. So this Quest is disabled
- if(umb_lang<2) goto L_QUEST;
- mes "You speak Umbalian fluently! So you will never forget the language of Umbalians!";
- close;
-L_QUEST:
- if((countitem(1006) < 1) || (countitem(7118) < 1) || (countitem(7117) < 1)) goto L_DONE;//Items: Old Magic Book, Torn Scroll, Torn Spell Book,
- delitem 1006,1; //Items: Old Magic Book,
- delitem 7118,1; //Items: Torn Scroll,
- delitem 7117,1;//Items: Torn Spell Book,
- emotion e_thx;
- mes "Ah, you've done well in retrieving my references. These artifacts holds information about ruins around the world, from the burning hell of the Magma Dungeon, to the strange eerie Hidden Forest of Yggsadril.";
- next;
- mes "[Fabius]";
- mes "But enough talk, you're just eager to get your reward aren't you? Well it may not sound much, but my reward for you is knowledge...";
- next;
- mes "[Fabius]";
- mes "Actually it is knowledge of the Umbalian people. They are connected to this world of Midgard in some special way, we just can't confirm it yet. There is a theory that they may be like the elves and protect the ancient tree of Yggsadril.";
- next;
- mes "[Fabius]";
- mes "And I, a great wise man of Yuno, will teach you their language!";
- next;
- mes "^0000FF Learned the language of Umbalians! ^000000";
- set umb_lang,2;
- //clear subquests
- set umb_marie,0;
- set umb_mason,0;
- set umb_mojo,0;
- //make you understand Umbalian people
- //it's an alternative way to learn Umbalian Language
- if(event_umbala < 3) set event_umbala,3;
- close;
-L_DONE:
- set umb_lang,1; //got Quest
- mes "Argh! My three students ran off with my references! Hey you! Can you get them back for me? I'll gladly reward you.";
- next;
- mes "[Fabius]";
- mes "From what I know, they're in different seperate towns making something out of themselves.";
- if(umb_marie==0 && umb_mason==0 && umb_mojo==0) goto L_NOT_MET;
- if(umb_marie==1) mes "Oh... You found Marie in Amatsu.";
- if(umb_mojo==1) mes "You saw Mojo in Aldebaran?";
- if(umb_mason==1) mes "So... Mason's in Prontera now... Well...";
- if(umb_marie==0) mes "I wonder where is our sea girl Marie?";
- if(umb_mojo==0) mes "Mojo should be somewhere near water...";
- if(umb_mason==0) mes "Where'd Mason go then...";
- mes "Oh yeah, tell them I sent you";
- close;
-L_NOT_MET:
- mes "Oh yeah, tell them I sent you, their names are Marie, Mason and Mojo.";
- close;
+//===== eAthena Script ======================================= +//= Custom Umbalian Language Quest +//===== By: ================================================== +//= sabernet09 & eAthena Team +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= eAthena 7.15 + +//===== Description: ========================================= +//= 1.0 Removed it from offical Umbala Quests [Lupus] +//============================================================ + + +//======================================================================================// +// Custom Umbala Language Quest +//======================================================================================// + +prontera.gat,145,290,5 script Mason 742,{ + mes "[Mason]"; + if(umb_lang==0) goto L_NOT_GOT_QUEST; + if(umb_lang==2 || umb_mason==1) goto L_AGAIN; + + mes "Hey there, I came here to Prontera in search of an old lady who can remove cards from slots. Do you know where I can find her?"; + menu "Yes",-, "No",M_NO; + + mes "Oooo, could you please tell me where she's at? I'd be really appreciative."; + menu "Swordsman Association",-, "Sanctuary",M_Boo1,"Prontera Chivalry",M_Boo2,"Trading Post",M_Boo3,"Kit Shop",M_Boo4,"Inn",M_Boo5,"Armory",M_DONE,"Library",M_Boo6,"Job Agency",M_Boo7,"Prontera Castle",M_Boo8,"City Hall",M_Boo9; + + next; + mes "[Mason]"; + mes "Hmm... I dunno why she would be there... guess I'll take a look."; + close; +M_Boo1: + next; + mes "[Mason]"; + mes "Wow I never knew she was a religious person... I'll see to it thanks."; + close; +M_Boo2: + next; + mes "[Mason]"; + mes "Hmm.... are you sure about that?"; + close; +M_Boo3: + next; + mes "[Mason]"; + mes "Why would she need to go there? I think you might be mistaken."; + close; +M_Boo4: + next; + mes "[Mason]"; + mes "The only thing she'd need at a Kit shop is medicine for her rheumatism. She's probably long gone from there by now."; + close; +M_Boo5: + next; + mes "[Mason]"; + mes "I don't think she needs to be there, she LIVES here in Prontera."; + close; +M_Boo6: + next; + mes "[Mason]"; + mes "Ah I see, if she's studying then I don't want to bother her. Thanks anyways."; + close; +M_Boo7: + next; + mes "[Mason]"; + mes "Job Agency? I don't think so. Don't lead me all around Prontera please! She's already a teacher here."; + close; +M_Boo8: + next; + mes "[Mason]"; + mes "The castle eh, I don't want to step in there... just doesn't feel like my style. I don't like that noble feeling of importance type of thing."; + close; +M_Boo9: + next; + mes "[Mason]"; + mes "O wow, did she become an important part of Prontera? I'd think she's too busy for me to visit. I'll try again later."; + close; +M_DONE: + next; + mes "[Mason]"; + mes "Ah, I heard that her class was somewhere around there... thanks a lot! Here's a lil something for your help."; + getitem 7117,1;//Items: Torn Spell Book, + set umb_mason,1; + close; + +L_AGAIN: + emotion e_thx; + mes "Yay, I found her! Thank you very much for you help!"; + close; + +L_NOT_GOT_QUEST: + mes "Hi! I came here to Prontera in search of an old lady... But..."; + close; +M_NO: + mes "Oh.. Ok.. Thanks anyways."; + close; +} + +aldebaran.gat,153,212,1 script Mojo 740,{ + mes "[Mojo]"; + if(umb_lang!=1) goto L_NOT_GOT_QUEST; + mes "Oh no! I lost my teacher's ^FF0000old magic book^000000!"; + mes "What am I going to do... those dumb Bathory..."; + if(umb_lang==1) set umb_mojo,1; + close; +L_NOT_GOT_QUEST: + emotion e_what; + mes "I lost my teacher's book! What am I going to do..."; + close; +} + +amatsu.gat,267,189,4 script Marie 744,{ + mes "[Marie]"; + if(umb_lang==0) goto L_NOT_GOT_QUEST; + if(umb_lang==2 || umb_marie==1) goto L_AGAIN; + if(countitem(9001)>0 && countitem(643)>0) goto L_DONE;//Items: Poring Egg, Pet Incubator, + mes "Hello, is there something you need?"; + next; + menu "No nothing at all.",M_NO,"Your teacher sent me.",-; + + mes "[Marie]"; + mes "What does he want from me?"; + emotion e_what; + next; + mes "[Marie]"; + mes "Oh wait, I see... he wants his reference scroll back am I right? Well, I'm kinda still using it buuut... I'll give it back if you can gimme a poring egg and an incubator. Those things are so cute!"; + close; + +L_NOT_GOT_QUEST: + emotion e_what; + mes "Hi! What do you want from me?"; + close; + +M_NO: + mes "[Marie]"; + mes "Hrrmm okay? Cya then.."; + close; + +L_DONE: + mes "Heyyy there, you have a poring egg and the pet incubator to go with it! Are those for me?"; + menu "Yep!",-, "Sorry, no.",M_DOH; + + mes "[Marie]"; + if(countitem(9001)==0 && countitem(643)==0) goto M_DOH;//Items: Poring Egg, Pet Incubator, + mes "Yatta! Here's a lil something in return."; + delitem 9001,1;//Items: Poring Egg, + delitem 643,1;//Items: Pet Incubator, + getitem 7118,1;//Items: Torn Scroll, + set umb_marie,1; //got Torn Scroll + close; + +M_DOH: + mes "Oh.. pooo... sigh..."; + close; + +L_AGAIN: + emotion e_thx; + mes "Yay! I love Porings!"; + close; +} + +yuno.gat,157,366,2 script Wise Man Fabius 743,{ + mes "[Fabius]"; + if(event_umbala >= 3) set umb_lang,2; //You already learnt Umbalian language from Umbalian Chief. So this Quest is disabled + if(umb_lang<2) goto L_QUEST; + mes "You speak Umbalian fluently! So you will never forget the language of Umbalians!"; + close; +L_QUEST: + if((countitem(1006) < 1) || (countitem(7118) < 1) || (countitem(7117) < 1)) goto L_DONE;//Items: Old Magic Book, Torn Scroll, Torn Spell Book, + delitem 1006,1; //Items: Old Magic Book, + delitem 7118,1; //Items: Torn Scroll, + delitem 7117,1;//Items: Torn Spell Book, + emotion e_thx; + mes "Ah, you've done well in retrieving my references. These artifacts holds information about ruins around the world, from the burning hell of the Magma Dungeon, to the strange eerie Hidden Forest of Yggsadril."; + next; + mes "[Fabius]"; + mes "But enough talk, you're just eager to get your reward aren't you? Well it may not sound much, but my reward for you is knowledge..."; + next; + mes "[Fabius]"; + mes "Actually it is knowledge of the Umbalian people. They are connected to this world of Midgard in some special way, we just can't confirm it yet. There is a theory that they may be like the elves and protect the ancient tree of Yggsadril."; + next; + mes "[Fabius]"; + mes "And I, a great wise man of Yuno, will teach you their language!"; + next; + mes "^0000FF Learned the language of Umbalians! ^000000"; + set umb_lang,2; + //clear subquests + set umb_marie,0; + set umb_mason,0; + set umb_mojo,0; + //make you understand Umbalian people + //it's an alternative way to learn Umbalian Language + if(event_umbala < 3) set event_umbala,3; + close; +L_DONE: + set umb_lang,1; //got Quest + mes "Argh! My three students ran off with my references! Hey you! Can you get them back for me? I'll gladly reward you."; + next; + mes "[Fabius]"; + mes "From what I know, they're in different seperate towns making something out of themselves."; + if(umb_marie==0 && umb_mason==0 && umb_mojo==0) goto L_NOT_MET; + if(umb_marie==1) mes "Oh... You found Marie in Amatsu."; + if(umb_mojo==1) mes "You saw Mojo in Aldebaran?"; + if(umb_mason==1) mes "So... Mason's in Prontera now... Well..."; + if(umb_marie==0) mes "I wonder where is our sea girl Marie?"; + if(umb_mojo==0) mes "Mojo should be somewhere near water..."; + if(umb_mason==0) mes "Where'd Mason go then..."; + mes "Oh yeah, tell them I sent you"; + close; +L_NOT_MET: + mes "Oh yeah, tell them I sent you, their names are Marie, Mason and Mojo."; + close; }
\ No newline at end of file diff --git a/npc/custom/quests/valhallen.txt b/npc/custom/quests/valhallen.txt index dc61114e2..b9a36a153 100644 --- a/npc/custom/quests/valhallen.txt +++ b/npc/custom/quests/valhallen.txt @@ -1,197 +1,197 @@ -//===== 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:
- mes "[Lenneth]";
- mes "Please return when you change your mind.";
- close;
-}
+//===== 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: + mes "[Lenneth]"; + mes "Please return when you change your mind."; + close; +} diff --git a/npc/custom/rpsroulette.txt b/npc/custom/rpsroulette.txt index d205ae252..247468947 100644 --- a/npc/custom/rpsroulette.txt +++ b/npc/custom/rpsroulette.txt @@ -1,286 +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,20;
- close;
-
-LEAVE:
- mes "Pansy.";
- close;
-}
+//===== 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,20; + close; + +LEAVE: + mes "Pansy."; + close; +} diff --git a/npc/custom/shifty_assassin.txt b/npc/custom/shifty_assassin.txt index 9c225e10f..940a7808e 100644 --- a/npc/custom/shifty_assassin.txt +++ b/npc/custom/shifty_assassin.txt @@ -1,208 +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;
+//===== 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 index af7e759e3..d805caac5 100644 --- a/npc/custom/sign_your_items.txt +++ b/npc/custom/sign_your_items.txt @@ -1,215 +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;
-}
+//===== 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 index a4a4f7919..7da3c5244 100644 --- a/npc/custom/stock_market.txt +++ b/npc/custom/stock_market.txt @@ -1,793 +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;
-}
-
+//===== 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 index d0576fe63..8daaa3f02 100644 --- a/npc/custom/tougijou.txt +++ b/npc/custom/tougijou.txt @@ -1,344 +1,344 @@ -//===============================================================================
-// 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::OnMobDead";set $@addmon,1;close;
- L1_2:
- monster "gon_test.gat",58,87,"The Poison Food",1428,1,"mobend::OnMobDead";set $@addmon,1;close;
- L1_3:
- monster "gon_test.gat",58,87,"Anemia",1434,1,"mobend::OnMobDead";set $@addmon,1;close;
- L1_4:
- monster "gon_test.gat",58,87,"The Bug",1430,1,"mobend::OnMobDead";set $@addmon,1;close;
- L1_5:
- monster "gon_test.gat",58,87,"Incision",1457,1,"mobend::OnMobDead";set $@addmon,1;close;
- L1_6:
- monster "gon_test.gat",58,87,"Rabies",1432,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close;
- L2_2:
- monster "gon_test.gat",58,87,"Toror",1442,1,"mobend::OnMobDead";set $@addmon,1;close;
- L2_3:
- monster "gon_test.gat",58,87,"Kangeishi",1469,1,"mobend::OnMobDead";set $@addmon,1;close;
- L2_4:
- monster "gon_test.gat",58,87,"Blackdock",1460,1,"mobend::OnMobDead";set $@addmon,1;close;
- L2_5:
- monster "gon_test.gat",58,87,"Merou",1425,1,"mobend::OnMobDead";set $@addmon,1;close;
- L2_6:
- monster "gon_test.gat",58,87,"Kyoushi",1472,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close;
- L3_2:
- monster "gon_test.gat",58,87,"Mushibamu",1443,1,"mobend::OnMobDead";set $@addmon,1;close;
- L3_3:
- monster "gon_test.gat",58,87,"Sorappo",1455,1,"mobend::OnMobDead";set $@addmon,1;close;
- L3_4:
- monster "gon_test.gat",58,87,"Freezer",1426,1,"mobend::OnMobDead";set $@addmon,1;close;
- L3_5:
- monster "gon_test.gat",58,87,"Heat",1436,1,"mobend::OnMobDead";set $@addmon,1;close;
- L3_6:
- monster "gon_test.gat",58,87,"The Rotten",1423,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close;
- L4_2:
- monster "gon_test.gat",58,87,"Onion",1440,1,"mobend::OnMobDead";set $@addmon,1;close;
- L4_3:
- monster "gon_test.gat",58,87,"Big Centipede",1429,1,"mobend::OnMobDead";set $@addmon,1;close;
- L4_4:
- monster "gon_test.gat",58,87,"Marionette",1459,1,"mobend::OnMobDead";set $@addmon,1;close;
- L4_5:
- monster "gon_test.gat",58,87,"Matchstick Girl",1444,1,"mobend::OnMobDead";set $@addmon,1;close;
- L4_6:
- monster "gon_test.gat",58,87,"Fly",1422,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close;
- L5_2:
- monster "gon_test.gat",58,87,"Ikitsuchi",1481,1,"mobend::OnMobDead";set $@addmon,1;close;
- L5_3:
- monster "gon_test.gat",58,87,"Master Snake",1424,1,"mobend::OnMobDead";set $@addmon,1;close;
- L5_4:
- monster "gon_test.gat",58,87,"Poison Dragon",1465,1,"mobend::OnMobDead";set $@addmon,1;close;
- L5_5:
- monster "gon_test.gat",58,87,"Seiryuu, the Blue Dragon",1466,1,"mobend::OnMobDead";set $@addmon,1;close;
- L5_6:
- monster "gon_test.gat",58,87,"Epidemic Devil",1433,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close;
- L6_2:
- monster "gon_test.gat",58,87,"Moat Putter",1473,1,"mobend::OnMobDead";set $@addmon,1;close;
- L6_3:
- monster "gon_test.gat",58,87,"God of Lightning",1431,1,"mobend::OnMobDead";set $@addmon,1;close;
- L6_4:
- monster "gon_test.gat",58,87,"Revengeing Ghost",1446,1,"mobend::OnMobDead";set $@addmon,1;close;
- L6_5:
- monster "gon_test.gat",58,87,"Fusoushin",1474,1,"mobend::OnMobDead";set $@addmon,1;close;
- L6_6:
- monster "gon_test.gat",58,87,"Hanmou",1471,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close;
- L7_2:
- monster "gon_test.gat",58,87,"Axe",1439,1,"mobend::OnMobDead";set $@addmon,1;close;
- L7_3:
- monster "gon_test.gat",58,87,"Big Hammer",1461,1,"mobend::OnMobDead";set $@addmon,1;close;
- L7_4:
- monster "gon_test.gat",58,87,"Armor",1467,1,"mobend::OnMobDead";set $@addmon,1;close;
- L7_5:
- monster "gon_test.gat",58,87,"Bow",1453,1,"mobend::OnMobDead";set $@addmon,1;close;
- L7_6:
- monster "gon_test.gat",58,87,"Iron Bullet",1479,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close;
- L8_2:
- monster "gon_test.gat",58,87,"Tooth",1475,1,"mobend::OnMobDead";set $@addmon,1;close;
- L8_3:
- monster "gon_test.gat",58,87,"The Hair",1437,1,"mobend::OnMobDead";set $@addmon,1;close;
- L8_4:
- monster "gon_test.gat",58,87,"Hand",1441,1,"mobend::OnMobDead";set $@addmon,1;close;
- L8_5:
- monster "gon_test.gat",58,87,"Muscle",1476,1,"mobend::OnMobDead";set $@addmon,1;close;
- L8_6:
- monster "gon_test.gat",58,87,"Bone",1435,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close;
- L9_2:
- monster "gon_test.gat",58,87,"Mirror",1448,1,"mobend::OnMobDead";set $@addmon,1;close;
- L9_3:
- monster "gon_test.gat",58,87,"Book",1478,1,"mobend::OnMobDead";set $@addmon,1;close;
- L9_4:
- monster "gon_test.gat",58,87,"Glove",1489,1,"mobend::OnMobDead";set $@addmon,1;close;
- L9_5:
- monster "gon_test.gat",58,87,"Bag",1488,1,"mobend::OnMobDead";set $@addmon,1;close;
- L9_6:
- monster "gon_test.gat",58,87,"Clothes",1438,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close;
- L10_2:
- monster "gon_test.gat",58,87,"Hot-Blood-Man",1464,1,"mobend::OnMobDead";set $@addmon,1;close;
- L10_3:
- monster "gon_test.gat",58,87,"Executioner",1487,1,"mobend::OnMobDead";set $@addmon,1;close;
- L10_4:
- monster "gon_test.gat",58,87,"Mutant Dragon",1449,1,"mobend::OnMobDead";set $@addmon,1;close;
- L10_5:
- monster "gon_test.gat",58,87,"Syntetic Beast",1456,1,"mobend::OnMobDead";set $@addmon,1;close;
- L10_6:
- monster "gon_test.gat",58,87,"Satan",1486,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close;
- L11_2:
- monster "gon_test.gat",58,87,"Assassin",1483,1,"mobend::OnMobDead";set $@addmon,1;close;
- L11_3:
- monster "gon_test.gat",58,87,"Samurai",1490,1,"mobend::OnMobDead";set $@addmon,1;close;
- L11_4:
- monster "gon_test.gat",58,87,"Budoka",1484,1,"mobend::OnMobDead";set $@addmon,1;close;
- L11_5:
- monster "gon_test.gat",58,87,"Fencer",1485,1,"mobend::OnMobDead";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,{
-OnMobDead:
- 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;
-}
+//=============================================================================== +// 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::OnMobDead";set $@addmon,1;close; + L1_2: + monster "gon_test.gat",58,87,"The Poison Food",1428,1,"mobend::OnMobDead";set $@addmon,1;close; + L1_3: + monster "gon_test.gat",58,87,"Anemia",1434,1,"mobend::OnMobDead";set $@addmon,1;close; + L1_4: + monster "gon_test.gat",58,87,"The Bug",1430,1,"mobend::OnMobDead";set $@addmon,1;close; + L1_5: + monster "gon_test.gat",58,87,"Incision",1457,1,"mobend::OnMobDead";set $@addmon,1;close; + L1_6: + monster "gon_test.gat",58,87,"Rabies",1432,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close; + L2_2: + monster "gon_test.gat",58,87,"Toror",1442,1,"mobend::OnMobDead";set $@addmon,1;close; + L2_3: + monster "gon_test.gat",58,87,"Kangeishi",1469,1,"mobend::OnMobDead";set $@addmon,1;close; + L2_4: + monster "gon_test.gat",58,87,"Blackdock",1460,1,"mobend::OnMobDead";set $@addmon,1;close; + L2_5: + monster "gon_test.gat",58,87,"Merou",1425,1,"mobend::OnMobDead";set $@addmon,1;close; + L2_6: + monster "gon_test.gat",58,87,"Kyoushi",1472,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close; + L3_2: + monster "gon_test.gat",58,87,"Mushibamu",1443,1,"mobend::OnMobDead";set $@addmon,1;close; + L3_3: + monster "gon_test.gat",58,87,"Sorappo",1455,1,"mobend::OnMobDead";set $@addmon,1;close; + L3_4: + monster "gon_test.gat",58,87,"Freezer",1426,1,"mobend::OnMobDead";set $@addmon,1;close; + L3_5: + monster "gon_test.gat",58,87,"Heat",1436,1,"mobend::OnMobDead";set $@addmon,1;close; + L3_6: + monster "gon_test.gat",58,87,"The Rotten",1423,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close; + L4_2: + monster "gon_test.gat",58,87,"Onion",1440,1,"mobend::OnMobDead";set $@addmon,1;close; + L4_3: + monster "gon_test.gat",58,87,"Big Centipede",1429,1,"mobend::OnMobDead";set $@addmon,1;close; + L4_4: + monster "gon_test.gat",58,87,"Marionette",1459,1,"mobend::OnMobDead";set $@addmon,1;close; + L4_5: + monster "gon_test.gat",58,87,"Matchstick Girl",1444,1,"mobend::OnMobDead";set $@addmon,1;close; + L4_6: + monster "gon_test.gat",58,87,"Fly",1422,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close; + L5_2: + monster "gon_test.gat",58,87,"Ikitsuchi",1481,1,"mobend::OnMobDead";set $@addmon,1;close; + L5_3: + monster "gon_test.gat",58,87,"Master Snake",1424,1,"mobend::OnMobDead";set $@addmon,1;close; + L5_4: + monster "gon_test.gat",58,87,"Poison Dragon",1465,1,"mobend::OnMobDead";set $@addmon,1;close; + L5_5: + monster "gon_test.gat",58,87,"Seiryuu, the Blue Dragon",1466,1,"mobend::OnMobDead";set $@addmon,1;close; + L5_6: + monster "gon_test.gat",58,87,"Epidemic Devil",1433,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close; + L6_2: + monster "gon_test.gat",58,87,"Moat Putter",1473,1,"mobend::OnMobDead";set $@addmon,1;close; + L6_3: + monster "gon_test.gat",58,87,"God of Lightning",1431,1,"mobend::OnMobDead";set $@addmon,1;close; + L6_4: + monster "gon_test.gat",58,87,"Revengeing Ghost",1446,1,"mobend::OnMobDead";set $@addmon,1;close; + L6_5: + monster "gon_test.gat",58,87,"Fusoushin",1474,1,"mobend::OnMobDead";set $@addmon,1;close; + L6_6: + monster "gon_test.gat",58,87,"Hanmou",1471,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close; + L7_2: + monster "gon_test.gat",58,87,"Axe",1439,1,"mobend::OnMobDead";set $@addmon,1;close; + L7_3: + monster "gon_test.gat",58,87,"Big Hammer",1461,1,"mobend::OnMobDead";set $@addmon,1;close; + L7_4: + monster "gon_test.gat",58,87,"Armor",1467,1,"mobend::OnMobDead";set $@addmon,1;close; + L7_5: + monster "gon_test.gat",58,87,"Bow",1453,1,"mobend::OnMobDead";set $@addmon,1;close; + L7_6: + monster "gon_test.gat",58,87,"Iron Bullet",1479,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close; + L8_2: + monster "gon_test.gat",58,87,"Tooth",1475,1,"mobend::OnMobDead";set $@addmon,1;close; + L8_3: + monster "gon_test.gat",58,87,"The Hair",1437,1,"mobend::OnMobDead";set $@addmon,1;close; + L8_4: + monster "gon_test.gat",58,87,"Hand",1441,1,"mobend::OnMobDead";set $@addmon,1;close; + L8_5: + monster "gon_test.gat",58,87,"Muscle",1476,1,"mobend::OnMobDead";set $@addmon,1;close; + L8_6: + monster "gon_test.gat",58,87,"Bone",1435,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close; + L9_2: + monster "gon_test.gat",58,87,"Mirror",1448,1,"mobend::OnMobDead";set $@addmon,1;close; + L9_3: + monster "gon_test.gat",58,87,"Book",1478,1,"mobend::OnMobDead";set $@addmon,1;close; + L9_4: + monster "gon_test.gat",58,87,"Glove",1489,1,"mobend::OnMobDead";set $@addmon,1;close; + L9_5: + monster "gon_test.gat",58,87,"Bag",1488,1,"mobend::OnMobDead";set $@addmon,1;close; + L9_6: + monster "gon_test.gat",58,87,"Clothes",1438,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close; + L10_2: + monster "gon_test.gat",58,87,"Hot-Blood-Man",1464,1,"mobend::OnMobDead";set $@addmon,1;close; + L10_3: + monster "gon_test.gat",58,87,"Executioner",1487,1,"mobend::OnMobDead";set $@addmon,1;close; + L10_4: + monster "gon_test.gat",58,87,"Mutant Dragon",1449,1,"mobend::OnMobDead";set $@addmon,1;close; + L10_5: + monster "gon_test.gat",58,87,"Syntetic Beast",1456,1,"mobend::OnMobDead";set $@addmon,1;close; + L10_6: + monster "gon_test.gat",58,87,"Satan",1486,1,"mobend::OnMobDead";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::OnMobDead";set $@addmon,1;close; + L11_2: + monster "gon_test.gat",58,87,"Assassin",1483,1,"mobend::OnMobDead";set $@addmon,1;close; + L11_3: + monster "gon_test.gat",58,87,"Samurai",1490,1,"mobend::OnMobDead";set $@addmon,1;close; + L11_4: + monster "gon_test.gat",58,87,"Budoka",1484,1,"mobend::OnMobDead";set $@addmon,1;close; + L11_5: + monster "gon_test.gat",58,87,"Fencer",1485,1,"mobend::OnMobDead";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,{ +OnMobDead: + 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 index c9858ceda..449b74724 100644 --- a/npc/custom/warper/warper.txt +++ b/npc/custom/warper/warper.txt @@ -1,143 +1,143 @@ -//===== eAthena Script =======================================
-//= Warper Script
-//===== By: ==================================================
-//= Darkchild
-//===== Current Version: =====================================
-//= 1.8
-//===== 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]
-//= 1.7 Temporary? Added F_ClearGarbage to clear unused/outdated variables [Lupus]
-//= 1.8 Removed Duplicates [Silent]
-//============================================================
-//============================================================
-//= 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#01::warpra 859,{
-// set @lvlselect,0;
-
- callfunc "F_ClearGarbage"; //Clear outdated, unused variables
-
- 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#02 859
-aldebaran.gat,145,118,4 duplicate(warpra) Warp Agent#03 859
-amatsu.gat,192,81,1 duplicate(warpra) Warp Agent#04 859
-ayothaya.gat,144,117,6 duplicate(warpra) Warp Agent#05 859
-comodo.gat,194,158,4 duplicate(warpra) Warp Agent#06 859
-einbroch.gat,59,205,4 duplicate(warpra) Warp Agent#07 859
-einbroch.gat,243,189,2 duplicate(warpra) Warp Agent#08 859
-einbech.gat,135,249,4 duplicate(warpra) Warp Agent#09 859
-geffen.gat,115,66,4 duplicate(warpra) Warp Agent#10 859
-gonryun.gat,151,130,4 duplicate(warpra) Warp Agent#11 859
-izlude.gat,133,117,4 duplicate(warpra) Warp Agent#12 859
-hugel.gat,88,151,5 duplicate(warpra) Warp Agent#13 859
-lighthalzen.gat,155,79,6 duplicate(warpra) Warp Agent#14 859
-louyang.gat,210,106,4 duplicate(warpra) Warp Agent#15 859
-morocc.gat,156,95,4 duplicate(warpra) Warp Agent#16 859
-prontera.gat,161,192,4 duplicate(warpra) Warp Agent#17 859
-payon.gat,182,110,4 duplicate(warpra) Warp Agent#18 859
-umbala.gat,132,130,4 duplicate(warpra) Warp Agent#19 859
-xmas.gat,150,136,4 duplicate(warpra) Warp Agent#20 859
-yuno.gat,137,162,4 duplicate(warpra) Warp Agent#21 859
-
-//----------------Dungeons----------------\\
-ama_dun01.gat,233,9,1 duplicate(warpra) Warp Agent#22 859
-moc_fild04.gat,207,331,4 duplicate(warpra) Warp Agent#23 859
-ayo_fild02.gat,279,154,4 duplicate(warpra) Warp Agent#24 859
-izlu2dun.gat,104,82,4 duplicate(warpra) Warp Agent#25 859
-prt_sewb1.gat,125,253,4 duplicate(warpra) Warp Agent#26 859
-mjolnir_02.gat,85,363,4 duplicate(warpra) Warp Agent#27 859
-einbech.gat,81,101,1 duplicate(warpra) Warp Agent#28 859
-glast_01.gat,370,308,4 duplicate(warpra) Warp Agent#29 859
-yuno_fild03.gat,37,135,4 duplicate(warpra) Warp Agent#30 859
-niflheim.gat,32,161,4 duplicate(warpra) Warp Agent#31 859
-gef_fild10.gat,71,339,4 duplicate(warpra) Warp Agent#32 859
-pay_arche.gat,39,135,4 duplicate(warpra) Warp Agent#33 859
-moc_ruins.gat,64,166,4 duplicate(warpra) Warp Agent#34 859
-moc_fild19.gat,106,97,4 duplicate(warpra) Warp Agent#35 859
-alb2trea.gat,73,101,4 duplicate(warpra) Warp Agent#36 859
-tur_dun01.gat,148,239,4 duplicate(warpra) Warp Agent#37 859
-lhz_dun01.gat,157,285,4 duplicate(warpra) Warp Agent#38 859
-hu_fild05.gat,186,210,4 duplicate(warpra) Warp Agent#39 859
-yuno_fild07.gat,221,179,4 duplicate(warpra) Warp Agent#40 859
-tha_scene01.gat,139,194,1 duplicate(warpra) Warp Agent#41 859
-odin_tem01.gat,96,149,4 duplicate(warpra) Warp Agent#42 859
+//===== eAthena Script ======================================= +//= Warper Script +//===== By: ================================================== +//= Darkchild +//===== Current Version: ===================================== +//= 1.8 +//===== 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] +//= 1.7 Temporary? Added F_ClearGarbage to clear unused/outdated variables [Lupus] +//= 1.8 Removed Duplicates [Silent] +//============================================================ +//============================================================ +//= 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#01::warpra 859,{ +// set @lvlselect,0; + + callfunc "F_ClearGarbage"; //Clear outdated, unused variables + + 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#02 859 +aldebaran.gat,145,118,4 duplicate(warpra) Warp Agent#03 859 +amatsu.gat,192,81,1 duplicate(warpra) Warp Agent#04 859 +ayothaya.gat,144,117,6 duplicate(warpra) Warp Agent#05 859 +comodo.gat,194,158,4 duplicate(warpra) Warp Agent#06 859 +einbroch.gat,59,205,4 duplicate(warpra) Warp Agent#07 859 +einbroch.gat,243,189,2 duplicate(warpra) Warp Agent#08 859 +einbech.gat,135,249,4 duplicate(warpra) Warp Agent#09 859 +geffen.gat,115,66,4 duplicate(warpra) Warp Agent#10 859 +gonryun.gat,151,130,4 duplicate(warpra) Warp Agent#11 859 +izlude.gat,133,117,4 duplicate(warpra) Warp Agent#12 859 +hugel.gat,88,151,5 duplicate(warpra) Warp Agent#13 859 +lighthalzen.gat,155,79,6 duplicate(warpra) Warp Agent#14 859 +louyang.gat,210,106,4 duplicate(warpra) Warp Agent#15 859 +morocc.gat,156,95,4 duplicate(warpra) Warp Agent#16 859 +prontera.gat,161,192,4 duplicate(warpra) Warp Agent#17 859 +payon.gat,182,110,4 duplicate(warpra) Warp Agent#18 859 +umbala.gat,132,130,4 duplicate(warpra) Warp Agent#19 859 +xmas.gat,150,136,4 duplicate(warpra) Warp Agent#20 859 +yuno.gat,137,162,4 duplicate(warpra) Warp Agent#21 859 + +//----------------Dungeons----------------\\ +ama_dun01.gat,233,9,1 duplicate(warpra) Warp Agent#22 859 +moc_fild04.gat,207,331,4 duplicate(warpra) Warp Agent#23 859 +ayo_fild02.gat,279,154,4 duplicate(warpra) Warp Agent#24 859 +izlu2dun.gat,104,82,4 duplicate(warpra) Warp Agent#25 859 +prt_sewb1.gat,125,253,4 duplicate(warpra) Warp Agent#26 859 +mjolnir_02.gat,85,363,4 duplicate(warpra) Warp Agent#27 859 +einbech.gat,81,101,1 duplicate(warpra) Warp Agent#28 859 +glast_01.gat,370,308,4 duplicate(warpra) Warp Agent#29 859 +yuno_fild03.gat,37,135,4 duplicate(warpra) Warp Agent#30 859 +niflheim.gat,32,161,4 duplicate(warpra) Warp Agent#31 859 +gef_fild10.gat,71,339,4 duplicate(warpra) Warp Agent#32 859 +pay_arche.gat,39,135,4 duplicate(warpra) Warp Agent#33 859 +moc_ruins.gat,64,166,4 duplicate(warpra) Warp Agent#34 859 +moc_fild19.gat,106,97,4 duplicate(warpra) Warp Agent#35 859 +alb2trea.gat,73,101,4 duplicate(warpra) Warp Agent#36 859 +tur_dun01.gat,148,239,4 duplicate(warpra) Warp Agent#37 859 +lhz_dun01.gat,157,285,4 duplicate(warpra) Warp Agent#38 859 +hu_fild05.gat,186,210,4 duplicate(warpra) Warp Agent#39 859 +yuno_fild07.gat,221,179,4 duplicate(warpra) Warp Agent#40 859 +tha_scene01.gat,139,194,1 duplicate(warpra) Warp Agent#41 859 +odin_tem01.gat,96,149,4 duplicate(warpra) Warp Agent#42 859 |