summaryrefslogtreecommitdiff
path: root/npc/custom/etc
diff options
context:
space:
mode:
authoreuphyy <euphyy@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-06-01 02:36:44 +0000
committereuphyy <euphyy@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-06-01 02:36:44 +0000
commit6979b1d621c2e5c6dab882e3825c4a867d19ba98 (patch)
tree225a767df0994bd069bc148eafd0e9d90b5804b9 /npc/custom/etc
parentfb10d4b4a1cf11daf0be70c2c03ca12358b22fbe (diff)
downloadhercules-6979b1d621c2e5c6dab882e3825c4a867d19ba98.tar.gz
hercules-6979b1d621c2e5c6dab882e3825c4a867d19ba98.tar.bz2
hercules-6979b1d621c2e5c6dab882e3825c4a867d19ba98.tar.xz
hercules-6979b1d621c2e5c6dab882e3825c4a867d19ba98.zip
/custom/ folder overhaul:
==== Script Changes ==== * Warper replaced with Euphy's Warper v1.2 * Stylist replaced with a much more efficient script * Healer replaced with more efficient script * MVP Arena heavily condensed, and text edited * Removed logout suggestion in Reset NPC (why was that there?) * Quest Warper added to scripts_custom.conf [bug fix] ==== Reorganization ==== * All folders in root directory removed except "battleground", "events", "quests" * All non-essential scripts in root directory moved to "etc" folder * A few files renamed for easier identification * scripts_custom.conf reordered for easier identification git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16193 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'npc/custom/etc')
-rw-r--r--npc/custom/etc/airplane.txt442
-rw-r--r--npc/custom/etc/bank.txt119
-rw-r--r--npc/custom/etc/bank_kafra.txt116
-rw-r--r--npc/custom/etc/blackjack.txt347
-rw-r--r--npc/custom/etc/floating_rates.txt43
-rw-r--r--npc/custom/etc/lottery.txt454
-rw-r--r--npc/custom/etc/market.txt39
-rw-r--r--npc/custom/etc/monster_arena.txt901
-rw-r--r--npc/custom/etc/morroc_raceway.txt238
-rw-r--r--npc/custom/etc/mvp_arena.txt322
-rw-r--r--npc/custom/etc/penal_servitude.txt193
-rw-r--r--npc/custom/etc/rpsroulette.txt286
-rw-r--r--npc/custom/etc/shifty_assassin.txt199
-rw-r--r--npc/custom/etc/stock_market.txt791
-rw-r--r--npc/custom/etc/wandering_poets.txt712
15 files changed, 5202 insertions, 0 deletions
diff --git a/npc/custom/etc/airplane.txt b/npc/custom/etc/airplane.txt
new file mode 100644
index 000000000..fe03c2bf8
--- /dev/null
+++ b/npc/custom/etc/airplane.txt
@@ -0,0 +1,442 @@
+//===== rAthena Script =======================================
+//= elRO Airship
+//===== By: ==================================================
+//= Draike, Bluto, Hephaestus
+//===== Current Version: =====================================
+//= 2.2a
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== 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,103,72,0 warp airs02a 1,1,airplane,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,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";
+ setarray $locationsmap$[1],"prt_fild08";
+ setarray $locationsmap$[2],"pay_fild08";
+ setarray $locationsmap$[3],"mjolnir_12";
+ setarray $locationsmap$[4],"pay_fild03";
+ setarray $locationsmap$[5],"gef_fild00";
+ setarray $locationsmap$[6],"moc_fild10";
+ setarray $locationsmap$[7],"glast_01";
+ setarray $locationsmap$[8],"umbala";
+ setarray $locationsmap$[9],"comodo";
+ setarray $locationsmap$[10],"amatsu";
+ setarray $locationsmap$[11],"niflheim";
+ setarray $locationsmap$[12],"xmas";
+ setarray $locationsmap$[13],"louyang";
+ setarray $locationsmap$[14],"gonryun";
+ setarray $locationsmap$[15],"yuno";
+ setarray $locationsmap$[16],"moc_fild04";
+ setarray $locationsmap$[17],"jawaii";
+ setarray $locationsmap$[18],"gef_fild10";
+ setarray $locationsmap$[19],"mjolnir_02";
+ setarray $locationsmap$[20],"gefenia01";
+ setarray $locationsmap$[21],"ayothaya";
+ setarray $locationsmap$[22],"lighthalzen";
+ setarray $locationsmap$[23],"jupe_gate";
+ 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", 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,153,43,5 script Airport Porter 774,{
+ callfunc "F_Porter",0;
+}
+prt_fild08,206,279,5 script Porter#01 774,{
+ callfunc "F_Porter",1;
+}
+gef_fild00,50,364,5 script Porter#02 774,{
+ callfunc "F_Porter",5;
+}
+moc_fild10,163,173,5 script Porter#03 774,{
+ callfunc "F_Porter",6;
+}
+mjolnir_12,61,380,5 script Porter#04 774,{
+ callfunc "F_Porter",3;
+}
+pay_fild08,159,91,5 script Porter#05 774,{
+ callfunc "F_Porter",2;
+}
+pay_fild03,194,181,5 script Porter#06 774,{
+ callfunc "F_Porter",4;
+}
+glast_01,196,326,1 script Porter#07 774,{
+ callfunc "F_Porter",7;
+}
+umbala,188,98,3 script Porter#08 774,{
+ callfunc "F_Porter",8;
+}
+comodo,203,75,8 script Porter#09 774,{
+ callfunc "F_Porter",9;
+}
+amatsu,115,78,8 script Porter#10 774,{
+ callfunc "F_Porter",10;
+}
+niflheim,132,242,5 script Porter#11 774,{
+ callfunc "F_Porter",11;
+}
+xmas,232,309,5 script Porter#12 774,{
+ callfunc "F_Porter",12;
+}
+louyang,35,279,8 script Porter#13 774,{
+ callfunc "F_Porter",13;
+}
+gonryun,82,95,7 script Porter#14 774,{
+ callfunc "F_Porter",14;
+}
+yuno,58,195,4 script Porter#15 774,{
+ callfunc "F_Porter",15;
+}
+moc_fild04,210,326,2 script Porter#16 774,{
+ callfunc "F_Porter",16;
+}
+jawaii,247,174,7 script Porter#17 774,{
+ callfunc "F_Porter",17;
+}
+gef_fild10,159,95,2 script Porter#18 774,{
+ callfunc "F_Porter",18;
+}
+mjolnir_02,76,364,5 script Porter#19 774,{
+ callfunc "F_Porter",19;
+}
+gefenia01,97,22,6 script Porter#20 774,{
+ callfunc "F_Porter",20;
+}
+ayothaya,182,105,5 script Porter#21 774,{
+ callfunc "F_Porter",21;
+}
+lighthalzen,99,241,4 script Porter#22 774,{
+ callfunc "F_Porter",22;
+}
+jupe_gate,46,18,7 script Porter#23 774,{
+ callfunc "F_Porter",23;
+}
+airport,141,43,5 script Itinerary Schedule 837,{
+ mes "^FF0000[Itinerary]^000000";
+ callfunc "F_Itin";
+}
+
+airplane,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;
+}
diff --git a/npc/custom/etc/bank.txt b/npc/custom/etc/bank.txt
new file mode 100644
index 000000000..7003e2f65
--- /dev/null
+++ b/npc/custom/etc/bank.txt
@@ -0,0 +1,119 @@
+//===== rAthena Script =======================================
+//= Banker Script
+//===== By: ==================================================
+//= Syrus22 (1.0)
+//===== Current Version: =====================================
+//= 2.0
+//===== Compatible With: =====================================
+//= Any rAthena 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.
+//= Version 2.0: Optimized and brought the script up to standard. [Jguy]
+//============================================================
+
+prontera,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;
+switch(select("I'd like to make a deposit.:I'd like to make a withdrawl.:What's my current balance?:Cancel")) {
+ case 1:
+ 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) {
+ mes "[Banker]";
+ mes "Oh, and do realize there is a " +@cost + " Zeny charge on all transactions!";
+ next;
+ }
+ input @deposit;
+ if (@deposit < 1) {
+ mes "Make sure you ask me to deposit a real amount.";
+ close;
+ }
+ else if (@deposit > Zeny) {
+ mes "It does not appear like you have the amount of zeny you're trying to deposit!";
+ close;
+ }
+ else if (@deposit > (Zeny - @cost)) {
+ mes "You need " + @cost + " Zeny to cover the transaction fee!";
+ close;
+ }
+ else {
+ 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;
+ }
+
+ case 2:
+ 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) {
+ mes "[Banker]";
+ mes "Oh, and do realize there is a " +@cost + " Zeny charge on all transactions!";
+ next;
+ }
+ input @withdrawl;
+ if (@withdrawl < 1) {
+ mes "Please don't play games. I need a real amount to withdraw.";
+ close;
+ }
+ else if (@withdrawl > #bankstorage) {
+ mes "I show you only have ^00FF00" + #bankstorage +"^000000 zeny in your account!";
+ close;
+ }
+ else if ((@cost > Zeny) && ((Zeny + @withdrawl) > @cost)) {
+ 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;
+ switch(select("Yes please.:No, Thanks")){
+ case 1:
+ mes "[Banker]";
+ mes "Removing " + @cost + " from your withdrawl to cover the deposit fee...";
+ set @withdrawl,@withdrawl - @cost;
+ set #bankstorage,#bankstorage - @cost;
+ set @cost,0;
+ next;
+ set Zeny,Zeny - @cost;
+ set Zeny,Zeny + @withdrawl;
+ set #bankstorage,#bankstorage - @withdrawl;
+ mes "[Banker]";
+ mes "There's your Zeny. Have a good day.";
+ close;
+ case 2:
+ mes "[Banker]";
+ mes "Very well... come again soon.";
+ close;
+ }
+ }
+ else {
+ set Zeny,Zeny - @cost;
+ set Zeny,Zeny + @withdrawl;
+ set #bankstorage,#bankstorage - @withdrawl;
+ mes "[Banker]";
+ mes "There's your Zeny. Have a good day.";
+ close;
+ }
+ case 3:
+ mes "[Banker]";
+ mes "Hmmmm let me check some paper work.";
+ next;
+ mes "*Rustle, Rustle*";
+ next;
+ mes "[Banker]";
+ mes "You currently have " + #bankstorage + " Zeny in your account.";
+ close;
+ case 4:
+ mes "[Banker]";
+ mes "Very well... come again soon.";
+ close;
+ }
+} // EOF \ No newline at end of file
diff --git a/npc/custom/etc/bank_kafra.txt b/npc/custom/etc/bank_kafra.txt
new file mode 100644
index 000000000..3c9cba5c4
--- /dev/null
+++ b/npc/custom/etc/bank_kafra.txt
@@ -0,0 +1,116 @@
+//===== rAthena Script =======================================
+//= The 2nd Bank of Prontera (with daily 0.01% income!)
+//===== By: ==================================================
+//= Lupus (1.0)
+//===== Current Version: =====================================
+//= 1.2a
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== 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
+// 1.2a Corrected bad duplicate names. (bugreport:921) [Samuray22]
+//============================================================
+
+- 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;
+ if(input(@kafrabank) == 1) goto L_TOO_BIG_AMOUNT;
+
+ if(@kafrabank<1000) goto L_LESS_1000;
+ 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;
+ if(input(@kafrabank) == 1) goto L_TOO_BIG_AMOUNT;
+
+ if(@kafrabank<1) goto B_EXIT2;
+ 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;
+}
+
+prontera,131,190,1 duplicate(bankg) Bank Clerk#1-1 833
+geffen,125,73,3 duplicate(bankg) Bank Clerk#2-1 833
+izlude,145,107,1 duplicate(bankg) Bank Clerk#3-1 833
+morocc,147,84,7 duplicate(bankg) Bank Clerk#4-1 833
diff --git a/npc/custom/etc/blackjack.txt b/npc/custom/etc/blackjack.txt
new file mode 100644
index 000000000..8362ac5ab
--- /dev/null
+++ b/npc/custom/etc/blackjack.txt
@@ -0,0 +1,347 @@
+//===== rAthena Script =======================================
+//= Black Jack
+//===== By: ==================================================
+//= kobra_k88
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== 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,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 useful, 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 received 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/etc/floating_rates.txt b/npc/custom/etc/floating_rates.txt
new file mode 100644
index 000000000..84d16ba9a
--- /dev/null
+++ b/npc/custom/etc/floating_rates.txt
@@ -0,0 +1,43 @@
+//===== rAthena Script =======================================
+//= Floating Server Rates
+//===== By: ==================================================
+//= Lupus
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== 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%
+//===== Additional Comments: =================================
+//= You can make incredible scripts with 'setbattleflag'!
+//============================================================
+
+- script FloatingRates -1,{
+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
+ atcommand "@reloadmobdb";
+
+ 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/etc/lottery.txt b/npc/custom/etc/lottery.txt
new file mode 100644
index 000000000..1b6d9f7ee
--- /dev/null
+++ b/npc/custom/etc/lottery.txt
@@ -0,0 +1,454 @@
+//===== rAthena Script =======================================
+//= Lottery
+//===== By: ==================================================
+//= acky
+//===== Current Version: =====================================
+//= 1.2.1a
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== 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
+//============================================================
+
+- script lotterygenerator -1,{
+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;
+}
+
+prontera,141,182,5 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() > 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;
+}
diff --git a/npc/custom/etc/market.txt b/npc/custom/etc/market.txt
new file mode 100644
index 000000000..b8f39644d
--- /dev/null
+++ b/npc/custom/etc/market.txt
@@ -0,0 +1,39 @@
+//===== rAthena Script =======================================
+//= Market Place
+//===== By: ==================================================
+//= Lupus
+//===== Current Version: =====================================
+//= 1.1
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= This script should move vending crowds from Prontera
+//= streets to a suitable market place. Save your traffic 8)
+//===== Additional Comments: =================================
+//= 1.1 Optimized it, Removed labels. [Spre]
+//============================================================
+
+prontera,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;
+ if (select("Yes Please:No") == 2) {
+ close;
+ }
+ // I didn't see the need to check and show venders.... Since it didnt even work
+ warp "gon_test",27+rand(5),98;
+ end;
+}
+
+gon_test,73,103,0 script MarketExit 45,1,2,{
+ warp "prontera",155,177-rand(10);
+ end;
+}
+
+//disable vending in Prontera
+prontera mapflag novending
+prt_in mapflag novending
+//Market Place settings
+gon_test mapflag noteleport
+gon_test mapflag nomemo
+gon_test mapflag nobranch
diff --git a/npc/custom/etc/monster_arena.txt b/npc/custom/etc/monster_arena.txt
new file mode 100644
index 000000000..a6f52846c
--- /dev/null
+++ b/npc/custom/etc/monster_arena.txt
@@ -0,0 +1,901 @@
+//===== rAthena Script =======================================
+//= Monster vs Monster
+//===== By: ==================================================
+//= acky
+//===== Current Version: =====================================
+//= 1.2
+//===== Compatible With: =====================================
+//= rAthena 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]
+//= 1.1.5 Some cleanup & optimization [KarLaeda]
+//= 1.2 Replaced effect numerics with constants. [Samuray22]
+//============================================================
+
+// Entrance //
+prontera,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") + "^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",56,99;
+ set @battle,0;
+ warp "gon_test",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,56,91,6 duplicate(monsterreferee) Referee#01 61
+
+
+// Usher //
+gon_test,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:
+ close2;
+ savepoint "gon_test",56,99;
+ set @battle,1;
+ atcommand strcharinfo(0) + "@option 64 0 64";
+ warp "gon_test",72,87;
+ end;
+
+L_4to6:
+ close2;
+ savepoint "gon_test",56,99;
+ set @battle,1;
+ atcommand strcharinfo(0) + "@option 64 0 64";
+ warp "gon_test",57,86;
+ end;
+
+L_1to3:
+ close2;
+ savepoint "gon_test",56,99;
+ set @battle,1;
+ atcommand strcharinfo(0) + "@option 64 0 64";
+ warp "gon_test",43,87;
+ end;
+
+L_Exit:
+ close2;
+ savepoint "prontera",149,186;
+ set @battle,0;
+ atcommand strcharinfo(0) + "@option 0 0 0";
+ warp "prontera",149,186;
+ end;
+
+L_Spec:
+ close2;
+ savepoint "gon_test",56,99;
+ set @battle,0;
+ atcommand strcharinfo(0) + "@option 0 0 0";
+ warp "gon_test",57,99;
+ end;
+
+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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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 EF_VALLENTINE2;
+ 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,57,86,5 script Summon Pad 1::SummonPad 111,2,2,{
+ end;
+OnTouch:
+ set @marena,1;
+ warp "gon_test",57,99;
+}
+gon_test,43,87,5 duplicate(SummonPad) Summon Pad 2 111,2,2
+gon_test,72,87,5 duplicate(SummonPad) Summon Pad 3 111,2,2
+
+
+
+// Skill Disabler //
+gon_test,57,99,5 script Skill Disable 111,3,3,{
+ atcommand strcharinfo(0) + "@skilloff";
+ disablenpc "Skill Disable";
+ end;
+}
+
+// Duel Arena //
+gon_test,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",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",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",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,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",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,49,5,5 duplicate(SummonPad) Summon Pad 4 111,2,2
+gon_test,55,8,6 duplicate(monsterreferee) Referee#02 61
diff --git a/npc/custom/etc/morroc_raceway.txt b/npc/custom/etc/morroc_raceway.txt
new file mode 100644
index 000000000..d346083db
--- /dev/null
+++ b/npc/custom/etc/morroc_raceway.txt
@@ -0,0 +1,238 @@
+//===== rAthena Script =======================================
+//= Morroc Raceway
+//===== By: ==================================================
+//= acky
+//===== Current Version: =====================================
+//= 1.3
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= Lets players race around Morroc (pvp_y_1-5)
+//===== 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]
+//= 1.3 Replaced effect numerics with constants. [Samuray22]
+//============================================================
+
+//Warps you into race way
+morocc,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",165,256;
+ close;
+}
+
+//Warps you out of raceway
+pvp_y_1-5,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",165,101;
+L_Cancel:
+ mes "[Race Girl]";
+ mes "Come again soon!";
+ close;
+}
+
+//Counts down and starts race
+pvp_y_1-5,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 EF_CHIMTO;
+ 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") < 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,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,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,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,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,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,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,144,267,4 script Check Point 1#01 722,{
+ end;
+}
+pvp_y_1-5,144,257,4 script Check Point 1#02 722,{
+ end;
+}
+pvp_y_1-5,70,252,3 script Check Point 2#01 722,{
+ end;
+}
+pvp_y_1-5,77,243,3 script Check Point 2#02 722,{
+ end;
+}
+pvp_y_1-5,81,48,1 script Check Point 3#01 722,{
+ end;
+}
+pvp_y_1-5,72,40,1 script Check Point 3#02 722,{
+ end;
+}
+pvp_y_1-5,244,65,7 script Check Point 4#01 722,{
+ end;
+}
+pvp_y_1-5,252,57,7 script Check Point 4#02 722,{
+ end;
+}
+pvp_y_1-5,259,260,5 script Check Point 5#01 722,{
+ end;
+}
+pvp_y_1-5,251,252,5 script Check Point 5#02 722,{
+ end;
+}
+pvp_y_1-5,174,249,4 script Finish Line#01 722,{
+ end;
+}
+pvp_y_1-5,174,238,4 script Finish Line#02 722,{
+ end;
+}
diff --git a/npc/custom/etc/mvp_arena.txt b/npc/custom/etc/mvp_arena.txt
new file mode 100644
index 000000000..51eabfb2a
--- /dev/null
+++ b/npc/custom/etc/mvp_arena.txt
@@ -0,0 +1,322 @@
+//===== rAthena Script =======================================
+//= MVP Arena
+//===== By: ==================================================
+//= Darkchild
+//===== Current Version: =====================================
+//= 1.4
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= Rooms containing 16 different MVPs
+//===== Additional Comments: =================================
+//= 1.0 first version of script
+//= 1.1 Optimised The MVP arena [massdriller]
+//= 1.2 - NPC in prontera [Silent]
+//= 1.3 - Removed Duplicates
+//= 1.4 - Optimized, text edited [Euphy]
+//============================================================
+
+// ==== Entrance ====
+prontera,154,197,3 script MVP Warper 768,{
+ mes "[ ^0065DFMVP Warper^000000 ]";
+ mes "Would you like to enter";
+ mes "the MVP Arena?";
+ if (select("Yes!","No thanks.") == 2) close;
+ warp "quiz_00",50,24;
+ close;
+}
+
+// ==== Information NPC ====
+quiz_00,49,31,4 script MVP Arena Guide 778,{
+ 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.";
+ next;
+ switch(select("Information","Heal me!","Return to Prontera","Cancel")) {
+ case 1:
+ mes "[ ^0065DFMVP Arena Guide^000000 ]";
+ mes "There are four Keepers, and each can spawn four different MVPs.";
+ mes "There are eight rooms per Keeper, and sixteen MVPs in total.";
+ close;
+ case 2:
+ specialeffect2 313;
+ percentheal 100,100;
+ close;
+ case 3:
+ warp "prontera",156,179;
+ close;
+ case 4:
+ close; }
+}
+
+// ==== Keepers ====
+function script Keeper {
+ mes "[ ^0065DF"+strnpcinfo(1)+"^000000 ]";
+ mes "Which arena would you";
+ mes "like to enter?";
+ set .@menu$,"";
+ for(set .@i,1; .@i<9; set .@i,.@i+1)
+ set .@menu$, .@menu$+"Arena "+.@i+" ["+getmapusers("pvp_n_"+.@i+"-"+getarg(0))+"/20]:";
+ set .@i, select(.@menu$);
+ if (getmapusers("pvp_n_"+.@i+"-"+getarg(0))>19) {
+ mes "[ ^0065DF"+strnpcinfo(1)+"^000000 ]";
+ mes "Sorry, this arena is full!";
+ close; }
+ warp "pvp_n_"+.@i+"-"+getarg(0),102,102;
+ close;
+}
+
+quiz_00,56,31,4 script Alpha MVP 770,{
+ callfunc "Keeper",2; }
+quiz_00,58,31,4 script Beta MVP 773,{
+ callfunc "Keeper",3; }
+quiz_00,60,31,4 script Theta MVP 774,{
+ callfunc "Keeper",4; }
+quiz_00,62,31,4 script Epsilon MVP 776,{
+ callfunc "Keeper",5; }
+
+// ==== Protectors ====
+function script Protector {
+ switch(select(""+((getarg(0)=="")?"":"Harder Monsters")+":Heal:Exit")) {
+ case 1:
+ warp getarg(0),102,102;
+ close;
+ case 2:
+ specialeffect2 313;
+ percentheal 100,100;
+ close;
+ case 3:
+ warp "prontera",156,179;
+ close; }
+}
+
+pvp_n_1-2,100,100,4 script MVP-Protector#01 727,{
+ callfunc "Protector","pvp_n_2-2"; }
+pvp_n_2-2,100,100,4 script MVP-Protector#02 727,{
+ callfunc "Protector","pvp_n_3-2"; }
+pvp_n_3-2,100,100,4 script MVP-Protector#03 727,{
+ callfunc "Protector","pvp_n_4-2"; }
+pvp_n_4-2,100,100,4 script MVP-Protector#04 727,{
+ callfunc "Protector","pvp_n_5-2"; }
+pvp_n_5-2,100,100,4 script MVP-Protector#05 727,{
+ callfunc "Protector","pvp_n_6-2"; }
+pvp_n_6-2,100,100,4 script MVP-Protector#06 727,{
+ callfunc "Protector","pvp_n_7-2"; }
+pvp_n_7-2,100,100,4 script MVP-Protector#07 727,{
+ callfunc "Protector","pvp_n_8-2"; }
+pvp_n_8-2,100,100,4 script MVP-Protector#08 727,{
+ callfunc "Protector",""; }
+
+pvp_n_1-3,100,100,4 script MVP-Protector#09 727,{
+ callfunc "Protector","pvp_n_2-3"; }
+pvp_n_2-3,100,100,4 script MVP-Protector#10 727,{
+ callfunc "Protector","pvp_n_3-3"; }
+pvp_n_3-3,100,100,4 script MVP-Protector#11 727,{
+ callfunc "Protector","pvp_n_4-3"; }
+pvp_n_4-3,100,100,4 script MVP-Protector#12 727,{
+ callfunc "Protector","pvp_n_5-3"; }
+pvp_n_5-3,100,100,4 script MVP-Protector#13 727,{
+ callfunc "Protector","pvp_n_6-3"; }
+pvp_n_6-3,100,100,4 script MVP-Protector#14 727,{
+ callfunc "Protector","pvp_n_7-3"; }
+pvp_n_7-3,100,100,4 script MVP-Protector#15 727,{
+ callfunc "Protector","pvp_n_8-3"; }
+pvp_n_8-3,100,100,4 script MVP-Protector#16 727,{
+ callfunc "Protector",""; }
+
+pvp_n_1-4,100,100,4 script MVP-Protector#17 727,{
+ callfunc "Protector","pvp_n_2-4"; }
+pvp_n_2-4,100,100,4 script MVP-Protector#18 727,{
+ callfunc "Protector","pvp_n_3-4"; }
+pvp_n_3-4,100,100,4 script MVP-Protector#19 727,{
+ callfunc "Protector","pvp_n_4-4"; }
+pvp_n_4-4,100,100,4 script MVP-Protector#20 727,{
+ callfunc "Protector","pvp_n_5-4"; }
+pvp_n_5-4,100,100,4 script MVP-Protector#21 727,{
+ callfunc "Protector","pvp_n_6-4"; }
+pvp_n_6-4,100,100,4 script MVP-Protector#22 727,{
+ callfunc "Protector","pvp_n_7-4"; }
+pvp_n_7-4,100,100,4 script MVP-Protector#23 727,{
+ callfunc "Protector","pvp_n_8-4"; }
+pvp_n_8-4,100,100,4 script MVP-Protector#24 727,{
+ callfunc "Protector",""; }
+
+pvp_n_1-5,100,100,4 script MVP-Protector#25 727,{
+ callfunc "Protector","pvp_n_2-5"; }
+pvp_n_2-5,100,100,4 script MVP-Protector#26 727,{
+ callfunc "Protector","pvp_n_3-5"; }
+pvp_n_3-5,100,100,4 script MVP-Protector#27 727,{
+ callfunc "Protector","pvp_n_4-5"; }
+pvp_n_4-5,100,100,4 script MVP-Protector#28 727,{
+ callfunc "Protector","pvp_n_5-5"; }
+pvp_n_5-5,100,100,4 script MVP-Protector#29 727,{
+ callfunc "Protector","pvp_n_6-5"; }
+pvp_n_6-5,100,100,4 script MVP-Protector#30 727,{
+ callfunc "Protector","pvp_n_7-5"; }
+pvp_n_7-5,100,100,4 script MVP-Protector#31 727,{
+ callfunc "Protector","pvp_n_8-5"; }
+pvp_n_8-5,100,100,4 script MVP-Protector#32 727,{
+ callfunc "Protector",""; }
+
+// ==== Alpha ====
+pvp_n_1-2,0,0,0,0 monster Eddga 1115,3,60000,66000
+pvp_n_1-2,0,0,0,0 monster Mistress 1059,1,60000,66000
+pvp_n_2-2,0,0,0,0 monster Mistress 1059,3,60000,66000
+pvp_n_2-2,0,0,0,0 monster Moonlight 1150,1,60000,66000
+pvp_n_3-2,0,0,0,0 monster Mistress 1059,1,60000,66000
+pvp_n_3-2,0,0,0,0 monster Moonlight 1150,2,60000,66000
+pvp_n_3-2,0,0,0,0 monster Maya 1147,1,60000,66000
+pvp_n_4-2,0,0,0,0 monster Eddga 1115,1,60000,66000
+pvp_n_4-2,0,0,0,0 monster Mistress 1059,1,60000,66000
+pvp_n_4-2,0,0,0,0 monster Moonlight 1150,1,60000,66000
+pvp_n_4-2,0,0,0,0 monster Maya 1147,1,60000,66000
+pvp_n_5-2,0,0,0,0 monster Eddga 1115,1,60000,66000
+pvp_n_5-2,0,0,0,0 monster Mistress 1059,2,60000,66000
+pvp_n_5-2,0,0,0,0 monster Moonlight 1150,1,60000,66000
+pvp_n_5-2,0,0,0,0 monster Maya 1147,2,60000,66000
+pvp_n_6-2,0,0,0,0 monster Eddga 1115,2,60000,66000
+pvp_n_6-2,0,0,0,0 monster Mistress 1059,3,60000,66000
+pvp_n_6-2,0,0,0,0 monster Moonlight 1150,1,60000,66000
+pvp_n_6-2,0,0,0,0 monster Maya 1147,2,60000,66000
+pvp_n_7-2,0,0,0,0 monster Eddga 1115,3,60000,66000
+pvp_n_7-2,0,0,0,0 monster Mistress 1059,3,60000,66000
+pvp_n_7-2,0,0,0,0 monster Moonlight 1150,2,60000,66000
+pvp_n_7-2,0,0,0,0 monster Maya 1147,2,60000,66000
+pvp_n_8-2,0,0,0,0 monster Eddga 1115,3,60000,66000
+pvp_n_8-2,0,0,0,0 monster Mistress 1059,3,60000,66000
+pvp_n_8-2,0,0,0,0 monster Moonlight 1150,3,60000,66000
+pvp_n_8-2,0,0,0,0 monster Maya 1147,3,60000,66000
+
+// ==== Beta ====
+pvp_n_1-3,0,0,0,0 monster Phreeoni 1159,3,60000,66000
+pvp_n_1-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
+pvp_n_2-3,0,0,0,0 monster Phreeoni 1159,2,60000,66000
+pvp_n_2-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
+pvp_n_2-3,0,0,0,0 monster Orc Hero 1087,1,60000,66000
+pvp_n_3-3,0,0,0,0 monster Phreeoni 1159,1,60000,66000
+pvp_n_3-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
+pvp_n_3-3,0,0,0,0 monster Orc Hero 1087,1,60000,66000
+pvp_n_3-3,0,0,0,0 monster Orc Lord 1190,1,60000,66000
+pvp_n_4-3,0,0,0,0 monster Phreeoni 1159,2,60000,66000
+pvp_n_4-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
+pvp_n_4-3,0,0,0,0 monster Orc Hero 1087,1,60000,66000
+pvp_n_4-3,0,0,0,0 monster Orc Lord 1190,1,60000,66000
+pvp_n_5-3,0,0,0,0 monster Phreeoni 1159,1,60000,66000
+pvp_n_5-3,0,0,0,0 monster Turtle General 1312,2,60000,66000
+pvp_n_5-3,0,0,0,0 monster Orc Hero 1087,2,60000,66000
+pvp_n_5-3,0,0,0,0 monster Orc Lord 1190,1,60000,66000
+pvp_n_6-3,0,0,0,0 monster Phreeoni 1159,2,60000,66000
+pvp_n_6-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
+pvp_n_6-3,0,0,0,0 monster Orc Hero 1087,2,60000,66000
+pvp_n_6-3,0,0,0,0 monster Orc Lord 1190,2,60000,66000
+pvp_n_7-3,0,0,0,0 monster Phreeoni 1159,3,60000,66000
+pvp_n_7-3,0,0,0,0 monster Turtle General 1312,1,60000,66000
+pvp_n_7-3,0,0,0,0 monster Orc Hero 1087,2,60000,66000
+pvp_n_7-3,0,0,0,0 monster Orc Lord 1190,3,60000,66000
+pvp_n_8-3,0,0,0,0 monster Phreeoni 1159,3,60000,66000
+pvp_n_8-3,0,0,0,0 monster Turtle General 1312,3,60000,66000
+pvp_n_8-3,0,0,0,0 monster Orc Hero 1087,3,60000,66000
+pvp_n_8-3,0,0,0,0 monster Orc Lord 1190,3,60000,66000
+
+// ==== Theta ====
+pvp_n_1-4,0,0,0,0 monster Drake 1112,3,60000,66000
+pvp_n_1-4,0,0,0,0 monster Osiris 1038,1,60000,66000
+pvp_n_2-4,0,0,0,0 monster Drake 1112,2,60000,66000
+pvp_n_2-4,0,0,0,0 monster Osiris 1038,1,60000,66000
+pvp_n_2-4,0,0,0,0 monster Doppelganger 1046,1,60000,66000
+pvp_n_3-4,0,0,0,0 monster Drake 1112,1,60000,66000
+pvp_n_3-4,0,0,0,0 monster Osiris 1038,1,60000,66000
+pvp_n_3-4,0,0,0,0 monster Doppelganger 1046,1,60000,66000
+pvp_n_3-4,0,0,0,0 monster Lord of Death 1373,1,60000,66000
+pvp_n_4-4,0,0,0,0 monster Drake 1112,2,60000,66000
+pvp_n_4-4,0,0,0,0 monster Osiris 1038,1,60000,66000
+pvp_n_4-4,0,0,0,0 monster Doppelganger 1046,2,60000,66000
+pvp_n_4-4,0,0,0,0 monster Lord of Death 1373,1,60000,66000
+pvp_n_5-4,0,0,0,0 monster Drake 1112,3,60000,66000
+pvp_n_5-4,0,0,0,0 monster Osiris 1038,2,60000,66000
+pvp_n_5-4,0,0,0,0 monster Doppelganger 1046,2,60000,66000
+pvp_n_5-4,0,0,0,0 monster Lord of Death 1373,1,60000,66000
+pvp_n_6-4,0,0,0,0 monster Drake 1112,3,60000,66000
+pvp_n_6-4,0,0,0,0 monster Osiris 1038,2,60000,66000
+pvp_n_6-4,0,0,0,0 monster Doppelganger 1046,2,60000,66000
+pvp_n_6-4,0,0,0,0 monster Lord of Death 1373,2,60000,66000
+pvp_n_7-4,0,0,0,0 monster Drake 1112,3,60000,66000
+pvp_n_7-4,0,0,0,0 monster Osiris 1038,2,60000,66000
+pvp_n_7-4,0,0,0,0 monster Doppelganger 1046,3,60000,66000
+pvp_n_7-4,0,0,0,0 monster Lord of Death 1373,2,60000,66000
+pvp_n_8-4,0,0,0,0 monster Drake 1112,3,60000,66000
+pvp_n_8-4,0,0,0,0 monster Osiris 1038,3,60000,66000
+pvp_n_8-4,0,0,0,0 monster Doppelganger 1046,3,60000,66000
+pvp_n_8-4,0,0,0,0 monster Lord of Death 1373,3,60000,66000
+
+// ==== Epsilon ====
+pvp_n_1-5,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000
+pvp_n_1-5,0,0,0,0 monster Pharoh 1157,1,60000,66000
+pvp_n_2-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
+pvp_n_2-5,0,0,0,0 monster Pharoh 1157,1,60000,66000
+pvp_n_2-5,0,0,0,0 monster Dark Lord 1272,1,60000,66000
+pvp_n_3-5,0,0,0,0 monster Incantation Samurai 1492,1,60000,66000
+pvp_n_3-5,0,0,0,0 monster Pharoh 1157,1,60000,66000
+pvp_n_3-5,0,0,0,0 monster Dark Lord 1272,1,60000,66000
+pvp_n_3-5,0,0,0,0 monster Baphomet 1039,1,60000,66000
+pvp_n_4-5,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000
+pvp_n_4-5,0,0,0,0 monster Pharoh 1157,1,60000,66000
+pvp_n_4-5,0,0,0,0 monster Dark Lord 1272,1,60000,66000
+pvp_n_4-5,0,0,0,0 monster Baphomet 1039,1,60000,66000
+pvp_n_5-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
+pvp_n_5-5,0,0,0,0 monster Pharoh 1157,2,60000,66000
+pvp_n_5-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000
+pvp_n_5-5,0,0,0,0 monster Baphomet 1039,1,60000,66000
+pvp_n_6-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
+pvp_n_6-5,0,0,0,0 monster Pharoh 1157,2,60000,66000
+pvp_n_6-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000
+pvp_n_6-5,0,0,0,0 monster Baphomet 1039,1,60000,66000
+pvp_n_7-5,0,0,0,0 monster Incantation Samurai 1492,2,60000,66000
+pvp_n_7-5,0,0,0,0 monster Pharoh 1157,2,60000,66000
+pvp_n_7-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000
+pvp_n_7-5,0,0,0,0 monster Baphomet 1039,2,60000,66000
+pvp_n_8-5,0,0,0,0 monster Incantation Samurai 1492,3,60000,66000
+pvp_n_8-5,0,0,0,0 monster Pharoh 1157,2,60000,66000
+pvp_n_8-5,0,0,0,0 monster Dark Lord 1272,2,60000,66000
+pvp_n_8-5,0,0,0,0 monster Baphomet 1039,2,60000,66000
+
+// ==== Mapflags ====
+pvp_n_1-1 mapflag pvp_nightmaredrop off
+pvp_n_2-1 mapflag pvp_nightmaredrop off
+pvp_n_3-1 mapflag pvp_nightmaredrop off
+pvp_n_4-1 mapflag pvp_nightmaredrop off
+pvp_n_5-1 mapflag pvp_nightmaredrop off
+pvp_n_6-1 mapflag pvp_nightmaredrop off
+pvp_n_7-1 mapflag pvp_nightmaredrop off
+pvp_n_8-1 mapflag pvp_nightmaredrop off
+pvp_n_1-2 mapflag pvp_nightmaredrop off
+pvp_n_2-2 mapflag pvp_nightmaredrop off
+pvp_n_3-2 mapflag pvp_nightmaredrop off
+pvp_n_4-2 mapflag pvp_nightmaredrop off
+pvp_n_5-2 mapflag pvp_nightmaredrop off
+pvp_n_6-2 mapflag pvp_nightmaredrop off
+pvp_n_7-2 mapflag pvp_nightmaredrop off
+pvp_n_8-2 mapflag pvp_nightmaredrop off
+pvp_n_1-3 mapflag pvp_nightmaredrop off
+pvp_n_2-3 mapflag pvp_nightmaredrop off
+pvp_n_3-3 mapflag pvp_nightmaredrop off
+pvp_n_4-3 mapflag pvp_nightmaredrop off
+pvp_n_5-3 mapflag pvp_nightmaredrop off
+pvp_n_6-3 mapflag pvp_nightmaredrop off
+pvp_n_7-3 mapflag pvp_nightmaredrop off
+pvp_n_8-3 mapflag pvp_nightmaredrop off
+pvp_n_1-4 mapflag pvp_nightmaredrop off
+pvp_n_2-4 mapflag pvp_nightmaredrop off
+pvp_n_3-4 mapflag pvp_nightmaredrop off
+pvp_n_4-4 mapflag pvp_nightmaredrop off
+pvp_n_5-4 mapflag pvp_nightmaredrop off
+pvp_n_6-4 mapflag pvp_nightmaredrop off
+pvp_n_7-4 mapflag pvp_nightmaredrop off
+pvp_n_8-4 mapflag pvp_nightmaredrop off
+pvp_n_1-5 mapflag pvp_nightmaredrop off
+pvp_n_2-5 mapflag pvp_nightmaredrop off
+pvp_n_3-5 mapflag pvp_nightmaredrop off
+pvp_n_4-5 mapflag pvp_nightmaredrop off
+pvp_n_5-5 mapflag pvp_nightmaredrop off
+pvp_n_6-5 mapflag pvp_nightmaredrop off
+pvp_n_7-5 mapflag pvp_nightmaredrop off
+pvp_n_8-5 mapflag pvp_nightmaredrop off \ No newline at end of file
diff --git a/npc/custom/etc/penal_servitude.txt b/npc/custom/etc/penal_servitude.txt
new file mode 100644
index 000000000..65f4feedd
--- /dev/null
+++ b/npc/custom/etc/penal_servitude.txt
@@ -0,0 +1,193 @@
+//===== rAthena Script =======================================
+//= Penal Servitude
+//===== By: ==================================================
+//= Lupus
+//===== Current Version: =====================================
+//= 1.2
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= A simple Penal Servitude Script.
+//= It could cheer up your prisoners a bit.
+//===== Additional 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,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",105,112;
+ warp "izlude",105,112;
+ close;
+
+M_Q1:
+ 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() || checkfalcon() || checkriding()){
+ 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",179,76;
+ warp "sec_in02",179,76;
+ close;
+
+L_W2:
+ savepoint "sec_in02",139,32;
+ warp "sec_in02",139,32;
+ close;
+
+L_W3:
+ savepoint "sec_in02",100,28;
+ warp "sec_in02",100,28;
+ close;
+
+L_W4:
+ savepoint "sec_in02",107,75;
+ warp "sec_in02",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,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",105,112;
+ warp "izlude",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 mapflag nomemo
+sec_in02 mapflag nosave SavePoint
+sec_in02 mapflag noteleport
+sec_in02 mapflag nobranch
+sec_in02 mapflag nowarp
+sec_in02 mapflag nowarpto
+sec_in02 mapflag noexp
+sec_in02 mapflag noskill
+//sec_in02 mapflag pvp
+//sec_in02 mapflag pvp_noparty
+//sec_in02 mapflag gvg
+sec_in02 mapflag pvp_nightmaredrop random,all,300
+
+sec_in02,138,55,100,100 monster Toadstool 1182,30,10000,10000,1
+sec_in02,138,55,100,100 monster Fabre 1184,10,20000,20000
+sec_in02,138,55,100,100 monster Chonchon 1183,11,20000,20000
+sec_in02,138,55,100,100 monster Spore 1014,12,20000,20000
+sec_in02,138,55,100,100 monster Poison Spore 1077,3,20000,20000
diff --git a/npc/custom/etc/rpsroulette.txt b/npc/custom/etc/rpsroulette.txt
new file mode 100644
index 000000000..9d8fa278c
--- /dev/null
+++ b/npc/custom/etc/rpsroulette.txt
@@ -0,0 +1,286 @@
+//===== rAthena Script =======================================
+//= Rock Scissors Roulette
+//===== By: ==================================================
+//= acky
+//===== Current Version: =====================================
+//= 1.2
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= Plays a hybrid Russian Roulette Rock Scissors Paper game.
+//===== Additional Comments: =================================
+//= Prizes customizable, Added emotions.
+//= 1.2 Fixes by Blackthunder and me [Poki#3]
+//============================================================
+
+cmd_in02,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/etc/shifty_assassin.txt b/npc/custom/etc/shifty_assassin.txt
new file mode 100644
index 000000000..c31d571c1
--- /dev/null
+++ b/npc/custom/etc/shifty_assassin.txt
@@ -0,0 +1,199 @@
+//===== rAthena Script =======================================
+//= Shifty Assassin
+//===== By: ==================================================
+//= acky
+//===== Current Version: =====================================
+//= 1.1.2
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= Players buy ninjas to assassinate other players
+//===== Additional Comments: =================================
+//= 1.1.1 Changed all gmcommand to atcommand as Poki#3 suggested. [Vicious]
+//= 1.1.2 Updated WoE Check. [Paradox924X]
+//============================================================
+
+morocc,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() > 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 (agitcheck()) 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;
+}
diff --git a/npc/custom/etc/stock_market.txt b/npc/custom/etc/stock_market.txt
new file mode 100644
index 000000000..33415e551
--- /dev/null
+++ b/npc/custom/etc/stock_market.txt
@@ -0,0 +1,791 @@
+//===== rAthena Script =======================================
+//= Stock Market Game
+//===== By: ==================================================
+//= acky
+//===== Current Version: =====================================
+//= 1.3.1
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== 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
+//============================================================
+
+- 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;
+}
+
+prontera,140,181,5 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() > 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() > 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;
+}
diff --git a/npc/custom/etc/wandering_poets.txt b/npc/custom/etc/wandering_poets.txt
new file mode 100644
index 000000000..d9a36c0c4
--- /dev/null
+++ b/npc/custom/etc/wandering_poets.txt
@@ -0,0 +1,712 @@
+//===== rAthena Script =======================================
+//= Wandering Poets
+//===== By: ==================================================
+//= MouseJstr
+//===== Current Version: =====================================
+//= 0.2a
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//=
+//===== Additional Comments: =================================
+//=
+//============================================================
+
+ayothaya,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,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,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;
+}