diff options
author | brianluau <brianluau@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-06-01 03:40:58 +0000 |
---|---|---|
committer | brianluau <brianluau@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-06-01 03:40:58 +0000 |
commit | 74b92bb34163160e59e24dd6a07c16e30e9743be (patch) | |
tree | 45321838afbcdcf35f91570e2b19ba3e1998b0ce | |
parent | 6979b1d621c2e5c6dab882e3825c4a867d19ba98 (diff) | |
download | hercules-74b92bb34163160e59e24dd6a07c16e30e9743be.tar.gz hercules-74b92bb34163160e59e24dd6a07c16e30e9743be.tar.bz2 hercules-74b92bb34163160e59e24dd6a07c16e30e9743be.tar.xz hercules-74b92bb34163160e59e24dd6a07c16e30e9743be.zip |
- Follow up to r16164 and r16193: used SVN Copy/Move so SVN History is preserved.
- Added svn:eol-style=native property for some recently added text files.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16194 54d463be-8e91-2dee-dedb-b68131a5f0ec
30 files changed, 12198 insertions, 12198 deletions
diff --git a/npc/custom/etc/airplane.txt b/npc/custom/etc/airplane.txt index fe03c2bf8..2469b6a24 100644 --- a/npc/custom/etc/airplane.txt +++ b/npc/custom/etc/airplane.txt @@ -1,442 +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;
-}
+//===== 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 index 7003e2f65..33fc558f9 100644 --- a/npc/custom/etc/bank.txt +++ b/npc/custom/etc/bank.txt @@ -1,119 +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;
- }
+//===== 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 index 3c9cba5c4..734c129d5 100644 --- a/npc/custom/etc/bank_kafra.txt +++ b/npc/custom/etc/bank_kafra.txt @@ -1,116 +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
+//===== 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 index 8362ac5ab..951af3f68 100644 --- a/npc/custom/etc/blackjack.txt +++ b/npc/custom/etc/blackjack.txt @@ -1,347 +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;
-}
+//===== 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 index 84d16ba9a..daa11878e 100644 --- a/npc/custom/etc/floating_rates.txt +++ b/npc/custom/etc/floating_rates.txt @@ -1,43 +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;
-}
+//===== 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 index 1b6d9f7ee..7cc9a53f1 100644 --- a/npc/custom/etc/lottery.txt +++ b/npc/custom/etc/lottery.txt @@ -1,454 +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;
-}
+//===== 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 index b8f39644d..d07eabac8 100644 --- a/npc/custom/etc/market.txt +++ b/npc/custom/etc/market.txt @@ -1,39 +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
+//===== 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 index a6f52846c..251759a7c 100644 --- a/npc/custom/etc/monster_arena.txt +++ b/npc/custom/etc/monster_arena.txt @@ -1,901 +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
+//===== 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 index d346083db..768084173 100644 --- a/npc/custom/etc/morroc_raceway.txt +++ b/npc/custom/etc/morroc_raceway.txt @@ -1,238 +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;
-}
+//===== 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 index 51eabfb2a..7047eaa21 100644 --- a/npc/custom/etc/mvp_arena.txt +++ b/npc/custom/etc/mvp_arena.txt @@ -1,322 +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
+//===== 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 index 65f4feedd..bfbd39c63 100644 --- a/npc/custom/etc/penal_servitude.txt +++ b/npc/custom/etc/penal_servitude.txt @@ -1,193 +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
+//===== 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 index 9d8fa278c..8e3d04a3e 100644 --- a/npc/custom/etc/rpsroulette.txt +++ b/npc/custom/etc/rpsroulette.txt @@ -1,286 +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;
-}
+//===== 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 index c31d571c1..8f4bbe4cf 100644 --- a/npc/custom/etc/shifty_assassin.txt +++ b/npc/custom/etc/shifty_assassin.txt @@ -1,199 +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;
-}
+//===== 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 index 33415e551..6f90bcaef 100644 --- a/npc/custom/etc/stock_market.txt +++ b/npc/custom/etc/stock_market.txt @@ -1,791 +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;
-}
+//===== 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 index d9a36c0c4..2451c5e8b 100644 --- a/npc/custom/etc/wandering_poets.txt +++ b/npc/custom/etc/wandering_poets.txt @@ -1,712 +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;
-}
+//===== 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; +} diff --git a/npc/custom/healer.txt b/npc/custom/healer.txt index 34f5b6a39..9b1bacfbe 100644 --- a/npc/custom/healer.txt +++ b/npc/custom/healer.txt @@ -1,49 +1,49 @@ -//===== rAthena Script =======================================
-//= Healer
-//===== By: ==================================================
-//= Euphy
-//===== Current Version: =====================================
-//= 1.0
-//===== Compatible With: =====================================
-//= rAthena SVN
-//===== Description: =========================================
-//= Basic healer script.
-//============================================================
-
-- script Healer -1,{
-
- set .@Price,0; // Zeny required for heal
- set .@Buffs,0; // Also buff players? (1: yes / 0: no)
- set .@Delay,0; // Heal delay, in seconds
-
- if (@HD > gettimetick(2)) end;
- if (.@Price) {
- message strcharinfo(0),"Healing costs "+.@Price+" Zeny.";
- if (Zeny < .@Price) end;
- if(select("^0055FFHeal^000000:^777777Cancel^000000")==2) close;
- set Zeny, Zeny-.@Price; }
- specialeffect2 313; percentheal 100,100;
- if (.@Buffs) {
- specialeffect2 37; sc_start SC_INCREASEAGI,240000,10;
- specialeffect2 42; sc_start SC_BLESSING,240000,10; }
- if (.@Delay) set @HD, gettimetick(2)+.@Delay;
- if (.@Price) close;
- end;
-}
-
-alberta,185,144,5 duplicate(Healer) Healer#alb 742
-aldebaran,134,123,5 duplicate(Healer) Healer#alde 742
-amatsu,200,80,5 duplicate(Healer) Healer#ama 742
-ayothaya,155,111,5 duplicate(Healer) Healer#ayo 742
-comodo,188,162,5 duplicate(Healer) Healer#com 742
-geffen,121,61,5 duplicate(Healer) Healer#gef 742
-gonryun,164,130,5 duplicate(Healer) Healer#gon 742
-izlude,125,118,5 duplicate(Healer) Healer#izl 742
-louyang,225,103,5 duplicate(Healer) Healer#lou 742
-morocc,159,96,5 duplicate(Healer) Healer#mor 742
-niflheim,188,180,5 duplicate(Healer) Healer#nif 742
-payon,180,105,5 duplicate(Healer) Healer#pay 742
-prontera,150,184,5 duplicate(Healer) Healer#pront 742
-umbala,94,162,5 duplicate(Healer) Healer#umb 742
-xmas,149,136,5 duplicate(Healer) Healer#xmas 742
+//===== rAthena Script ======================================= +//= Healer +//===== By: ================================================== +//= Euphy +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Basic healer script. +//============================================================ + +- script Healer -1,{ + + set .@Price,0; // Zeny required for heal + set .@Buffs,0; // Also buff players? (1: yes / 0: no) + set .@Delay,0; // Heal delay, in seconds + + if (@HD > gettimetick(2)) end; + if (.@Price) { + message strcharinfo(0),"Healing costs "+.@Price+" Zeny."; + if (Zeny < .@Price) end; + if(select("^0055FFHeal^000000:^777777Cancel^000000")==2) close; + set Zeny, Zeny-.@Price; } + specialeffect2 313; percentheal 100,100; + if (.@Buffs) { + specialeffect2 37; sc_start SC_INCREASEAGI,240000,10; + specialeffect2 42; sc_start SC_BLESSING,240000,10; } + if (.@Delay) set @HD, gettimetick(2)+.@Delay; + if (.@Price) close; + end; +} + +alberta,185,144,5 duplicate(Healer) Healer#alb 742 +aldebaran,134,123,5 duplicate(Healer) Healer#alde 742 +amatsu,200,80,5 duplicate(Healer) Healer#ama 742 +ayothaya,155,111,5 duplicate(Healer) Healer#ayo 742 +comodo,188,162,5 duplicate(Healer) Healer#com 742 +geffen,121,61,5 duplicate(Healer) Healer#gef 742 +gonryun,164,130,5 duplicate(Healer) Healer#gon 742 +izlude,125,118,5 duplicate(Healer) Healer#izl 742 +louyang,225,103,5 duplicate(Healer) Healer#lou 742 +morocc,159,96,5 duplicate(Healer) Healer#mor 742 +niflheim,188,180,5 duplicate(Healer) Healer#nif 742 +payon,180,105,5 duplicate(Healer) Healer#pay 742 +prontera,150,184,5 duplicate(Healer) Healer#pront 742 +umbala,94,162,5 duplicate(Healer) Healer#umb 742 +xmas,149,136,5 duplicate(Healer) Healer#xmas 742 yuno,152,186,5 duplicate(Healer) Healer#yuno 742
\ No newline at end of file diff --git a/npc/custom/item_signer.txt b/npc/custom/item_signer.txt index 98e7cf2c8..99ea97b70 100644 --- a/npc/custom/item_signer.txt +++ b/npc/custom/item_signer.txt @@ -1,223 +1,223 @@ -//===== rAthena Script =======================================
-//= Sign Your Items
-//===== By: ==================================================
-//= Lupus
-//===== Current Version: =====================================
-//= 1.0
-//===== Compatible With: =====================================
-//= rAthena SVN
-//===== Description: =========================================
-//= Write you name on your rare equipment or weapon ^_-
-//= Original X-Mas mini-quest(could be used as a permanent one)
-//===== Additional Comments: =================================
-//=
-//============================================================
-
-prt_in,24,61,7 script Perchik 47,{
- mes "[Perchik]";
- if(BaseJob==Job_Novice || BaseLevel<50) {
- mes "Sorry, I don't help newbies. Go kill more Porings.";
- emotion e_sry;
- close;
- }
- mes "Hi, I can ^000090sign your name^000000 on almost any rare item you can hold.";
- next;
- menu "Tell me more...",-, "Sign my items, please",M_DO;
-
- mes "[Perchik]";
- mes "I can put your name on any slotless equipment or weapon.";
- emotion e_ic;
- next;
- mes "[Perchik]";
- mes "A week ago, my BOSS told me to send away newbies. I dunno why.";
- next;
- mes "[Perchik]";
- mes "For my work I accept ^0000803 Gift Box^000000es (gray one)";
- mes "plus ^FF00005000z^000000 per each refine of your item.";
- next;
- emotion e_cry;
- mes "[Perchik]";
- mes "Alas, I have 12 hungry children";
- mes "and a very angry wife.";
- next;
- mes "[Perchik]";
- mes "Or it was... 12 angry children";
- mes "and a very hungry wife...";
- emotion e_hmm;
- close;
-
-M_DO:
- mes "[Perchik]";
- mes "Show me your items to sign...";
-M_MENU:
- next;
- menu getequipname(1),M_PART1,getequipname(9),M_PART9,getequipname(10),M_PART10,getequipname(2),M_PART2,getequipname(4),M_PART4,
- getequipname(3),M_PART3,getequipname(5),M_PART5,getequipname(6),M_PART6,getequipname(7),M_PART7,getequipname(8),M_PART8;
-
- //Head Gear
-M_PART1:
- set @part,1;
- if (getequipisequiped(1)) goto L_CHECK1;
- mes "[Perchik]";
- mes "A bald head under a cheap wig... There's nothing worthy to sign.";
- emotion 6;
- goto M_MENU;
-M_PART9:
- set @part,9;
- if (getequipisequiped(9)) goto L_CHECK1;
- mes "[Perchik]";
- mes "Glasses... I can't see any glasses...";
- emotion 20;
- goto M_MENU;
-M_PART10:
- set @part,10;
- if (getequipisequiped(10)) goto L_CHECK1;
- mes "[Perchik]";
- mes "I don't see any mask here.";
- emotion 20;
- goto M_MENU;
- //Armor
-M_PART2:
- set @part,2;
- if (getequipisequiped(2)) goto L_CHECK1;
- mes "[Perchik]";
- mes "Your belly...? Yes, it's rather fat.";
- emotion 6;
- goto M_MENU;
- //Left Hand
-M_PART3:
- set @part,3;
- if (getequipisequiped(3)) goto L_CHECK1;
- mes "[Perchik]";
- mes "Sign your left hand? I'm not a celebrity, you know...";
- emotion 4;
- goto M_MENU;
- //Right Hand
-M_PART4:
- set @part,4;
- if (getequipisequiped(4)) goto L_CHECK1;
- mes "[Perchik]";
- mes "It isn't an armor... It's a mud!!! Wash your hands more often.";
- emotion 4;
- goto M_MENU;
- //Garment
-M_PART5:
- set @part,5;
- if (getequipisequiped(5)) goto L_CHECK1;
- mes "[Perchik]";
- mes "Look... It's empty...";
- goto M_MENU;
- //Foot Gear
-M_PART6:
- set @part,6;
- if (getequipisequiped(6)) goto L_CHECK1;
- mes "[Perchik]";
- mes "Aw!! I don't like stinky feet.";
- emotion 16;
- goto M_MENU;
- //Accessory1
-M_PART7:
- set @part,7;
- if (getequipisequiped(7)) goto L_CHECK1;
- mes "[Perchik]";
- mes "Yep... a pocket with a huge hole...";
- emotion 20;
- goto M_MENU;
- //Accessory2
-M_PART8:
- set @part,8;
- if (getequipisequiped(8)) goto L_CHECK1;
- mes "[Perchik]";
- mes "I see your fat belly...";
- emotion 20;
- goto M_MENU;
-
-L_CHECK1:
- set @ref,0;
- set @id,getequipid(@part);
- if(getequipisidentify(@part)) goto L_CHECK2;
- mes "[Perchik]";
- mes "How could you equip such unknown item?";
- npctalk "What a sneaky cheater!";
- emotion e_wah;
- close;
-
-L_CHECK2:
- set @ref,getequiprefinerycnt(@part);
- mes "[Perchik]";
- mes "You want me to sign your "+getitemname(@id)+"...";
- if(BaseJob==Job_Novice) {
- mes "But you're a Novice. My BOSS told me to send such weaklings away.";
- emotion e_sry;
- goto M_MENU;
- }
- set @slot0,getequipcardid(@part,0);
- set @slot1,getequipcardid(@part,1);
- set @slot2,getequipcardid(@part,2);
- set @slot3,getequipcardid(@part,3);
-
- if(@slot0==255 || @slot0==254 || @slot0<0) {
- mes "Alas, this item's already signed.";
- mes "I would never touch masters work.";
- emotion e_hmm;
- goto M_MENU;
- }
- if(@slot0>4000 && @slot0<5000) {
- mes "A card? Here?!";
- mes "As I said before, I don't sign items with cards.";
- emotion e_hmm;
- goto M_MENU;
- }
- if(getiteminfo(@id,10)) {
- mes "Sorry. I don't sign slotted items.";
- emotion e_sry;
- goto M_MENU;
- }
- getinventorylist;
- for (set .@i,0; .@i < @inventorylist_count; set .@i,.@i+1){
- if(@inventorylist_expire[.@i] != 0) {
- mes "Sorry, I don't sign rental items!";
- emotion e_hmm;
- goto M_MENU;
- }
- }
-
- if(@ref)mes "It has been refined "+@ref+" times... Adding ^FF00005000z^000000 per time.";
- mes "Give me ^0000803 gray Gift Boxes^000000";
- if(@ref)mes "and ^FF0000"+(5000*@ref)+"z^000000.";
- next;
- menu "Ok!",-, "Leave",M_END;
- if(Zeny>=(5000*@ref) && countitem(644)>=3) {
- delitem 644,3;
- set Zeny,Zeny-(5000*@ref);
- goto L_MAKE;
- }
- mes "[Perchik]";
- mes "I don't work for 'thanks'.";
- emotion e_sry;
- close;
-
-L_MAKE:
- if(countitem2(@id,1,@ref,0,@slot0,@slot1,@slot2,@slot3)==0) {
- mes "[Perchik]";
- mes "Where is... "+getitemname(@id)+"?";
- npctalk "You're a snoozy cheater!";
- logmes "CHEATER: Tried to sign an item not having it: "+getitemname(@id);
- emotion e_wah;
- close;
- }
- delitem2 @id,1,1,@ref,0,@slot0,@slot1,@slot2,@slot3;
-
- mes "[Perchik]";
- mes "Done!";
- emotion e_proud;
-
- getitem2 @id,1,1,@ref,0,254,0,getcharid(0)&0xffff,(getcharid(0)>>16)&0xffff;
- close;
-
-M_END:
- mes "[Perchik]";
- mes "See you...";
- emotion e_yawn;
- close;
-}
+//===== rAthena Script ======================================= +//= Sign Your Items +//===== By: ================================================== +//= Lupus +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Write you name on your rare equipment or weapon ^_- +//= Original X-Mas mini-quest(could be used as a permanent one) +//===== Additional Comments: ================================= +//= +//============================================================ + +prt_in,24,61,7 script Perchik 47,{ + mes "[Perchik]"; + if(BaseJob==Job_Novice || BaseLevel<50) { + mes "Sorry, I don't help newbies. Go kill more Porings."; + emotion e_sry; + close; + } + mes "Hi, I can ^000090sign your name^000000 on almost any rare item you can hold."; + next; + menu "Tell me more...",-, "Sign my items, please",M_DO; + + mes "[Perchik]"; + mes "I can put your name on any slotless equipment or weapon."; + emotion e_ic; + next; + mes "[Perchik]"; + mes "A week ago, my BOSS told me to send away newbies. I dunno why."; + next; + mes "[Perchik]"; + mes "For my work I accept ^0000803 Gift Box^000000es (gray one)"; + mes "plus ^FF00005000z^000000 per each refine of your item."; + next; + emotion e_cry; + mes "[Perchik]"; + mes "Alas, I have 12 hungry children"; + mes "and a very angry wife."; + next; + mes "[Perchik]"; + mes "Or it was... 12 angry children"; + mes "and a very hungry wife..."; + emotion e_hmm; + close; + +M_DO: + mes "[Perchik]"; + mes "Show me your items to sign..."; +M_MENU: + next; + menu getequipname(1),M_PART1,getequipname(9),M_PART9,getequipname(10),M_PART10,getequipname(2),M_PART2,getequipname(4),M_PART4, + getequipname(3),M_PART3,getequipname(5),M_PART5,getequipname(6),M_PART6,getequipname(7),M_PART7,getequipname(8),M_PART8; + + //Head Gear +M_PART1: + set @part,1; + if (getequipisequiped(1)) goto L_CHECK1; + mes "[Perchik]"; + mes "A bald head under a cheap wig... There's nothing worthy to sign."; + emotion 6; + goto M_MENU; +M_PART9: + set @part,9; + if (getequipisequiped(9)) goto L_CHECK1; + mes "[Perchik]"; + mes "Glasses... I can't see any glasses..."; + emotion 20; + goto M_MENU; +M_PART10: + set @part,10; + if (getequipisequiped(10)) goto L_CHECK1; + mes "[Perchik]"; + mes "I don't see any mask here."; + emotion 20; + goto M_MENU; + //Armor +M_PART2: + set @part,2; + if (getequipisequiped(2)) goto L_CHECK1; + mes "[Perchik]"; + mes "Your belly...? Yes, it's rather fat."; + emotion 6; + goto M_MENU; + //Left Hand +M_PART3: + set @part,3; + if (getequipisequiped(3)) goto L_CHECK1; + mes "[Perchik]"; + mes "Sign your left hand? I'm not a celebrity, you know..."; + emotion 4; + goto M_MENU; + //Right Hand +M_PART4: + set @part,4; + if (getequipisequiped(4)) goto L_CHECK1; + mes "[Perchik]"; + mes "It isn't an armor... It's a mud!!! Wash your hands more often."; + emotion 4; + goto M_MENU; + //Garment +M_PART5: + set @part,5; + if (getequipisequiped(5)) goto L_CHECK1; + mes "[Perchik]"; + mes "Look... It's empty..."; + goto M_MENU; + //Foot Gear +M_PART6: + set @part,6; + if (getequipisequiped(6)) goto L_CHECK1; + mes "[Perchik]"; + mes "Aw!! I don't like stinky feet."; + emotion 16; + goto M_MENU; + //Accessory1 +M_PART7: + set @part,7; + if (getequipisequiped(7)) goto L_CHECK1; + mes "[Perchik]"; + mes "Yep... a pocket with a huge hole..."; + emotion 20; + goto M_MENU; + //Accessory2 +M_PART8: + set @part,8; + if (getequipisequiped(8)) goto L_CHECK1; + mes "[Perchik]"; + mes "I see your fat belly..."; + emotion 20; + goto M_MENU; + +L_CHECK1: + set @ref,0; + set @id,getequipid(@part); + if(getequipisidentify(@part)) goto L_CHECK2; + mes "[Perchik]"; + mes "How could you equip such unknown item?"; + npctalk "What a sneaky cheater!"; + emotion e_wah; + close; + +L_CHECK2: + set @ref,getequiprefinerycnt(@part); + mes "[Perchik]"; + mes "You want me to sign your "+getitemname(@id)+"..."; + if(BaseJob==Job_Novice) { + mes "But you're a Novice. My BOSS told me to send such weaklings away."; + emotion e_sry; + goto M_MENU; + } + set @slot0,getequipcardid(@part,0); + set @slot1,getequipcardid(@part,1); + set @slot2,getequipcardid(@part,2); + set @slot3,getequipcardid(@part,3); + + if(@slot0==255 || @slot0==254 || @slot0<0) { + mes "Alas, this item's already signed."; + mes "I would never touch masters work."; + emotion e_hmm; + goto M_MENU; + } + if(@slot0>4000 && @slot0<5000) { + mes "A card? Here?!"; + mes "As I said before, I don't sign items with cards."; + emotion e_hmm; + goto M_MENU; + } + if(getiteminfo(@id,10)) { + mes "Sorry. I don't sign slotted items."; + emotion e_sry; + goto M_MENU; + } + getinventorylist; + for (set .@i,0; .@i < @inventorylist_count; set .@i,.@i+1){ + if(@inventorylist_expire[.@i] != 0) { + mes "Sorry, I don't sign rental items!"; + emotion e_hmm; + goto M_MENU; + } + } + + if(@ref)mes "It has been refined "+@ref+" times... Adding ^FF00005000z^000000 per time."; + mes "Give me ^0000803 gray Gift Boxes^000000"; + if(@ref)mes "and ^FF0000"+(5000*@ref)+"z^000000."; + next; + menu "Ok!",-, "Leave",M_END; + if(Zeny>=(5000*@ref) && countitem(644)>=3) { + delitem 644,3; + set Zeny,Zeny-(5000*@ref); + goto L_MAKE; + } + mes "[Perchik]"; + mes "I don't work for 'thanks'."; + emotion e_sry; + close; + +L_MAKE: + if(countitem2(@id,1,@ref,0,@slot0,@slot1,@slot2,@slot3)==0) { + mes "[Perchik]"; + mes "Where is... "+getitemname(@id)+"?"; + npctalk "You're a snoozy cheater!"; + logmes "CHEATER: Tried to sign an item not having it: "+getitemname(@id); + emotion e_wah; + close; + } + delitem2 @id,1,1,@ref,0,@slot0,@slot1,@slot2,@slot3; + + mes "[Perchik]"; + mes "Done!"; + emotion e_proud; + + getitem2 @id,1,1,@ref,0,254,0,getcharid(0)&0xffff,(getcharid(0)>>16)&0xffff; + close; + +M_END: + mes "[Perchik]"; + mes "See you..."; + emotion e_yawn; + close; +} diff --git a/npc/custom/itemmall.txt b/npc/custom/itemmall.txt index 43ecadfc6..bbc20420d 100644 --- a/npc/custom/itemmall.txt +++ b/npc/custom/itemmall.txt @@ -1,44 +1,44 @@ -//===== rAthena Script =======================================
-//= Shop Street
-//===== By: ==================================================
-//= Masao
-//===== Current Version: =====================================
-//= 1.0 [Masao]
-//===== Compatible With: =====================================
-//= Any rA SVN
-//===== Description: =========================================
-//= A Shopstreet in Prontera where players can buy some Equipment.
-//============================================================
-
-prontera,147,240,5 shop Armor 99,2304:10000,2306:20000,2308:20000,2310:50000,2311:50000,2313:50000,2315:75000,2317:100000,2322:20000,2326:60000,2331:75000,2342:100000,2353:75000,2364:150000,2367:100000,2399:50000
-prontera,147,242,5 shop Shield 99,2102:10000,2106:60000,2108:60000,2110:85000,2114:30000,2116:30000,2123:50000,2124:50000
-prontera,147,244,5 shop Footgear 99,2404:10000,2406:20000,2409:30000,2412:50000,2417:50000,2418:50000,2424:50000,2425:20000
-prontera,147,246,5 shop Mace 99,1502:10000,1505:20000,1511:20000,1514:-1,1517:-1,1520:50000,1522:100000,1523:25000,1528:50000,1529:50000,1531:50000
-prontera,147,248,5 shop Knuckle 494,1802:20000,1804:50000,1806:60000,1808:75000,1810:70000,1812:60000,1813:100000,1814:100000,1822:150000
-prontera,147,250,5 shop Whips 494,1951:10000,1953:20000,1955:30000,1962:20000,1963:50000,1972:10000,1974:10000,1976:50000
-prontera,147,252,5 shop Instruments 494,1902:10000,1904:20000,1906:-1,1908:50000,1913:50000,1914:50000,1915:50000,1916:50000,1917:50000
-prontera,147,254,5 shop Books 494,1550:30000,1551:60000,1552:51000,1559:25000,1561:75000,1564:25000,1568:70000,1569:70000,1570:70000,1571:70000,1572:50000
-prontera,147,256,5 shop Guns 497,13103:60000,13105:100000,13106:200000,13101:10000,13150:6000,13152:30000,13153:50000,13155:60000,13156:100000,13154:30000,13159:250000,13157:150000,13161:300000,13162:500000
-prontera,147,258,5 shop Fuuma Shuriken 497,7522:500,7521:500,7523:500
-prontera,147,260,5 shop One-Handed Swords 497,1108:10000,1117:10000,1120:100000,1124:50000,1130:100000,1131:50000,1133:50000,1138:200000,1139:200000,1145:-1,1149:50000
-prontera,147,262,5 shop Two-Handed Swords 497,1155:50000,1158:90000,1163:120000,1164:50000,1165:50000,1166:75000,1168:50000,1169:500000,1172:200000,1175:75000
-prontera,147,264,5 shop Spears 731,1405:20000,1408:50000,1415:100000,1417:75000,1421:75000,1422:25000
-prontera,147,238,1 shop Dagger 731,1208:20000,1211:20000,1217:20000,1223:50000,1231:75000,1235:75000,1236:75000,1237:75000
-prontera,164,264,4 shop Axes 731,1302:10000,1306:20000,1307:45000,1309:75000,1352:20000,1355:30000,1358:75000,1363:50000,1364:50000,1365:50000,1366:50000,1371:100000
-prontera,164,262,4 shop Accessories 731,2621:-1,2622:-1,2624:30000,2618:10000,2625:30000,2626:30000,2674:10000,2648:50000,2649:50000,2627:-1,2701:75000
-prontera,164,260,4 shop Bows 731,1702:20000,1705:50000,1708:20000,1720:50000,1723:75000,1724:75000,1725:75000
-prontera,164,258,4 shop Staffs / Rods 731,1602:20000,1605:20000,1608:20000,1611:45000,1618:85000,1620:85000,1622:50000,1624:50000,1625:50000,1626:50000
-prontera,164,256,4 shop Garments 405,2504:10000,2506:40000,2507:82000,2508:56000,2514:50000,2518:60000,2519:60000,2528:85000,2531:10000,2553:10000
-prontera,164,254,4 shop Katars 405,1251:50000,1253:100000,1255:75000,1261:125000,1262:20000,1263:20000,1265:100000,1275:100000,1276:100000,1277:100000,1278:100000
-prontera,164,252,4 shop Lower Headgear 405,2218:10000,5054:30000,2267:5000,5107:100000,2265:5000,2266:50000,2269:50000,2270:50000
-prontera,164,250,4 shop Middle Headgear 405,2201:5000,2203:4000,2205:3500,2212:5000,2225:10000,2229:50000,2231:50000,2234:50000,2235:50000,2281:25000,2292:50000,2296:50000
-prontera,164,248,4 shop Upper Headgear 405,2210:1000,2211:1000,2213:10000,2214:20000,2217:10000,2221:5000,2223:10000,2246:75000,2256:75000,2264:100000,2280:20000,2299:30000
-prontera,164,246,4 shop Headgear 01 832,5380:40000,5382:40000,2269:5000,2270:5000,5107:15000,5110:15000,2247:30000:5206:10000,2245:30000,2286:35000,2296:15000,2258:45000,5161:200000,5104:40000,2295:20000,5026:30000,5032:100000,5038:30000,5229:65000,5227:65000,5228:65000,5198:50000,5058:300000,5253:80000,5252:60000,5296:100000,5231:300000,5232:300000,5233:300000,5230:300000,5234:300000,5076:50000
-prontera,164,244,4 shop Headgear 02 832,5059:100000,5235:75000,5236:75000,5237:75000,5293:150000,5303:35000,5304:65000,5312:65000,5315:45000,5317:45000,5319:75000,5320:120000,5323:588888,5336:50000,5337:50000,5338:50000,5339:50000,5346:50000
-prontera,164,242,4 shop Headgear 03 832,5181:300000,5102:500000,5016:75000,5349:150000,5013:700000,5022:500000,5171:1250000,5135:500000,5029:50000,5033:65000,5040:100000,5047:35000,5065:65000,5068:50000,5074:50000,5084:75000,5086:150000,5108:350000,5121:100000,5133:50000,5137:100000,5138:150000,5140:55000,5146:75000,5151:75000,5152:150000,5170:150000,5173:75000,5174:75000,5175:75000,5184:50000,5185:45000,5187:75000,5188:50000,5191:25000,5192:25000,5193:25000,5194:25000,5195:25000,5196:25000,5197:25000
-prontera,164,240,4 shop Headgear 04 832,5200:75000,5205:100000,5211:75000,5226:50000,5238:75000,5239:75000,5240:75000,5241:75000,5242:75000,5243:50000,5325:75000,5254:100000,5255:65000,5257:50000,5297:100000,2202:45000,5258:35000,5298:50000,5276:50000,5273:50000,5275:50000,5274:50000,5259:50000,5271:250000,5272:50000,5284:50000,5286:75000,5288:50000,5289:50000,5291:55000,5292:55000,5294:55000,5352:50000,5324:100000,5359:50000,5360:50000
-prontera,164,238,4 shop Headgear 05 832,5340:50000,5341:50000,5342:50000,5343:50000,5344:50000,5345:50000,5354:50000,5355:50000,5361:65000,5365:50000,5373:75000,5374:350000,5379:50000,5383:60000,5384:88888,5390:88888,5388:50000,5411:50000,5393:75000,5397:35000,5399:50000,5800:175000,5801:300000,5802:150000
-prontera,151,284,4 shop Ammunition 880,1766:50,1755:20,1750:10,1754:20,1761:20,1752:20,1760:20,1759:20,1772:100,1757:30,1770:20,1769:30,1765:40,1763:30,1762:30,1767:30,1764:30,1751:20,1768:30,1753:30,1756:30,1758:30,1771:1000,13200:50,13202:100,13201:300,13206:500,13203:500,13207:500,13204:500,13205:500,13252:50,13254:500,13251:100,13253:300,13250:50,13256:50,13259:50,13258:50,13255:50,13257:50
-prontera,153,284,4 shop Alchemist Dealer 880,715:600,716:600,717:600,1025:200,7136:500,7135:500,7136:500,7137:500,7138:500,7139:500
-prontera,155,284,4 shop Street Dealer 880,678:5000,505:-1,506:40,610:4000,545:150,546:600,547:1650
+//===== rAthena Script ======================================= +//= Shop Street +//===== By: ================================================== +//= Masao +//===== Current Version: ===================================== +//= 1.0 [Masao] +//===== Compatible With: ===================================== +//= Any rA SVN +//===== Description: ========================================= +//= A Shopstreet in Prontera where players can buy some Equipment. +//============================================================ + +prontera,147,240,5 shop Armor 99,2304:10000,2306:20000,2308:20000,2310:50000,2311:50000,2313:50000,2315:75000,2317:100000,2322:20000,2326:60000,2331:75000,2342:100000,2353:75000,2364:150000,2367:100000,2399:50000 +prontera,147,242,5 shop Shield 99,2102:10000,2106:60000,2108:60000,2110:85000,2114:30000,2116:30000,2123:50000,2124:50000 +prontera,147,244,5 shop Footgear 99,2404:10000,2406:20000,2409:30000,2412:50000,2417:50000,2418:50000,2424:50000,2425:20000 +prontera,147,246,5 shop Mace 99,1502:10000,1505:20000,1511:20000,1514:-1,1517:-1,1520:50000,1522:100000,1523:25000,1528:50000,1529:50000,1531:50000 +prontera,147,248,5 shop Knuckle 494,1802:20000,1804:50000,1806:60000,1808:75000,1810:70000,1812:60000,1813:100000,1814:100000,1822:150000 +prontera,147,250,5 shop Whips 494,1951:10000,1953:20000,1955:30000,1962:20000,1963:50000,1972:10000,1974:10000,1976:50000 +prontera,147,252,5 shop Instruments 494,1902:10000,1904:20000,1906:-1,1908:50000,1913:50000,1914:50000,1915:50000,1916:50000,1917:50000 +prontera,147,254,5 shop Books 494,1550:30000,1551:60000,1552:51000,1559:25000,1561:75000,1564:25000,1568:70000,1569:70000,1570:70000,1571:70000,1572:50000 +prontera,147,256,5 shop Guns 497,13103:60000,13105:100000,13106:200000,13101:10000,13150:6000,13152:30000,13153:50000,13155:60000,13156:100000,13154:30000,13159:250000,13157:150000,13161:300000,13162:500000 +prontera,147,258,5 shop Fuuma Shuriken 497,7522:500,7521:500,7523:500 +prontera,147,260,5 shop One-Handed Swords 497,1108:10000,1117:10000,1120:100000,1124:50000,1130:100000,1131:50000,1133:50000,1138:200000,1139:200000,1145:-1,1149:50000 +prontera,147,262,5 shop Two-Handed Swords 497,1155:50000,1158:90000,1163:120000,1164:50000,1165:50000,1166:75000,1168:50000,1169:500000,1172:200000,1175:75000 +prontera,147,264,5 shop Spears 731,1405:20000,1408:50000,1415:100000,1417:75000,1421:75000,1422:25000 +prontera,147,238,1 shop Dagger 731,1208:20000,1211:20000,1217:20000,1223:50000,1231:75000,1235:75000,1236:75000,1237:75000 +prontera,164,264,4 shop Axes 731,1302:10000,1306:20000,1307:45000,1309:75000,1352:20000,1355:30000,1358:75000,1363:50000,1364:50000,1365:50000,1366:50000,1371:100000 +prontera,164,262,4 shop Accessories 731,2621:-1,2622:-1,2624:30000,2618:10000,2625:30000,2626:30000,2674:10000,2648:50000,2649:50000,2627:-1,2701:75000 +prontera,164,260,4 shop Bows 731,1702:20000,1705:50000,1708:20000,1720:50000,1723:75000,1724:75000,1725:75000 +prontera,164,258,4 shop Staffs / Rods 731,1602:20000,1605:20000,1608:20000,1611:45000,1618:85000,1620:85000,1622:50000,1624:50000,1625:50000,1626:50000 +prontera,164,256,4 shop Garments 405,2504:10000,2506:40000,2507:82000,2508:56000,2514:50000,2518:60000,2519:60000,2528:85000,2531:10000,2553:10000 +prontera,164,254,4 shop Katars 405,1251:50000,1253:100000,1255:75000,1261:125000,1262:20000,1263:20000,1265:100000,1275:100000,1276:100000,1277:100000,1278:100000 +prontera,164,252,4 shop Lower Headgear 405,2218:10000,5054:30000,2267:5000,5107:100000,2265:5000,2266:50000,2269:50000,2270:50000 +prontera,164,250,4 shop Middle Headgear 405,2201:5000,2203:4000,2205:3500,2212:5000,2225:10000,2229:50000,2231:50000,2234:50000,2235:50000,2281:25000,2292:50000,2296:50000 +prontera,164,248,4 shop Upper Headgear 405,2210:1000,2211:1000,2213:10000,2214:20000,2217:10000,2221:5000,2223:10000,2246:75000,2256:75000,2264:100000,2280:20000,2299:30000 +prontera,164,246,4 shop Headgear 01 832,5380:40000,5382:40000,2269:5000,2270:5000,5107:15000,5110:15000,2247:30000:5206:10000,2245:30000,2286:35000,2296:15000,2258:45000,5161:200000,5104:40000,2295:20000,5026:30000,5032:100000,5038:30000,5229:65000,5227:65000,5228:65000,5198:50000,5058:300000,5253:80000,5252:60000,5296:100000,5231:300000,5232:300000,5233:300000,5230:300000,5234:300000,5076:50000 +prontera,164,244,4 shop Headgear 02 832,5059:100000,5235:75000,5236:75000,5237:75000,5293:150000,5303:35000,5304:65000,5312:65000,5315:45000,5317:45000,5319:75000,5320:120000,5323:588888,5336:50000,5337:50000,5338:50000,5339:50000,5346:50000 +prontera,164,242,4 shop Headgear 03 832,5181:300000,5102:500000,5016:75000,5349:150000,5013:700000,5022:500000,5171:1250000,5135:500000,5029:50000,5033:65000,5040:100000,5047:35000,5065:65000,5068:50000,5074:50000,5084:75000,5086:150000,5108:350000,5121:100000,5133:50000,5137:100000,5138:150000,5140:55000,5146:75000,5151:75000,5152:150000,5170:150000,5173:75000,5174:75000,5175:75000,5184:50000,5185:45000,5187:75000,5188:50000,5191:25000,5192:25000,5193:25000,5194:25000,5195:25000,5196:25000,5197:25000 +prontera,164,240,4 shop Headgear 04 832,5200:75000,5205:100000,5211:75000,5226:50000,5238:75000,5239:75000,5240:75000,5241:75000,5242:75000,5243:50000,5325:75000,5254:100000,5255:65000,5257:50000,5297:100000,2202:45000,5258:35000,5298:50000,5276:50000,5273:50000,5275:50000,5274:50000,5259:50000,5271:250000,5272:50000,5284:50000,5286:75000,5288:50000,5289:50000,5291:55000,5292:55000,5294:55000,5352:50000,5324:100000,5359:50000,5360:50000 +prontera,164,238,4 shop Headgear 05 832,5340:50000,5341:50000,5342:50000,5343:50000,5344:50000,5345:50000,5354:50000,5355:50000,5361:65000,5365:50000,5373:75000,5374:350000,5379:50000,5383:60000,5384:88888,5390:88888,5388:50000,5411:50000,5393:75000,5397:35000,5399:50000,5800:175000,5801:300000,5802:150000 +prontera,151,284,4 shop Ammunition 880,1766:50,1755:20,1750:10,1754:20,1761:20,1752:20,1760:20,1759:20,1772:100,1757:30,1770:20,1769:30,1765:40,1763:30,1762:30,1767:30,1764:30,1751:20,1768:30,1753:30,1756:30,1758:30,1771:1000,13200:50,13202:100,13201:300,13206:500,13203:500,13207:500,13204:500,13205:500,13252:50,13254:500,13251:100,13253:300,13250:50,13256:50,13259:50,13258:50,13255:50,13257:50 +prontera,153,284,4 shop Alchemist Dealer 880,715:600,716:600,717:600,1025:200,7136:500,7135:500,7136:500,7137:500,7138:500,7139:500 +prontera,155,284,4 shop Street Dealer 880,678:5000,505:-1,506:40,610:4000,545:150,546:600,547:1650 prontera,157,284,4 shop Sheepy Gonzales 895,12028:1000,12262:500,12016:750
\ No newline at end of file diff --git a/npc/custom/jobmaster.txt b/npc/custom/jobmaster.txt index fca6747a8..e11fa50c2 100644 --- a/npc/custom/jobmaster.txt +++ b/npc/custom/jobmaster.txt @@ -1,319 +1,319 @@ -//===== rAthena Script =======================================
-//= Job Master
-//===== By: ==================================================
-//= rAthena Dev Team [Ori:LunatikBunnie]
-//===== Current Version: =====================================
-//= 1.7
-//===== Compatible With: =====================================
-//= rAthena SVN; 15624+
-//===== Description: =========================================
-//= Changes your job without asking too much
-//= For other info, please contact me at Lunatikbunnie@gmail.com
-//= Editted menu to avoid button mashing.
-//= 1.3 Added TK/SL/SG, thanks to Haplo. Fixed minor bugs [Lupus]
-//= script leaves grabage variable: 'lastJob'
-//= 1.4 Added NJ/GS, changed all job numbers to Job_* constants.
-//= All credits go to pxxx [Skotlex]
-//= 1.5 Rewrite everything from scratch. [Lance]
-//= 1.5a fixed Baby -> Super Baby change. Switched to JobName() [Lupus]
-//= 1.6 Added support for both branches of 3rd classes,
-//= unified response order, fixed minor quirk.
-//= 1.7 Corrected typo on EAJ_THIRD to EAJL_THIRD and fixed job
-//= level requirement to change to 3rd. [Rytech]
-//===== TODO: ================================================
-//= Add baby 3rd classes
-//= Could be restructured some more using eajobs
-//============================================================
-
-prontera,153,193,6 script Job Master 123,{
- mes "^ff0000[Job Master]^000000";
- if(Class >= Job_Rune_Knight) goto L_noReq;
-
- if(SkillPoint != 0)
- {
- mes "I'm sorry, please use up all your skill points before changing jobs";
- mes "Please come again soon!";
- close;
- }
-
- if(JobLevel < 10) goto L_LvError;
-
- switch(Class){
- case Job_Novice_High:
- case Job_Baby:
- case Job_Novice:
- skill 142,1,0;
- skill 143,1,0;
- mes "Welcome, please select the job you wish to change into";
- if(lastJob != 0 && Class == Job_Novice_High){
- switch(lastJob){
- case Job_Knight:
- case Job_Crusader:
- set @target_job, Job_Swordman_High;
- break;
- case Job_Monk:
- case Job_Priest:
- set @target_job, Job_Acolyte_High;
- break;
- case Job_Alchemist:
- case Job_Blacksmith:
- set @target_job, Job_Merchant_High;
- break;
- case Job_Rogue:
- case Job_Assassin:
- set @target_job, Job_Thief_High;
- break;
- case Job_Wizard:
- case Job_Sage:
- set @target_job, Job_Mage_High;
- break;
- case Job_Hunter:
- case Job_Bard:
- case Job_Dancer:
- set @target_job, Job_Archer_High;
- break;
- }
- } else {
- switch(select("Swordsman","Mage","Archer","Acolyte","Merchant","Thief",
- "Super Novice","Taekwon","Gunslinger","Ninja")){
- case 7:
- if(Class == Job_Novice_High) goto L_noReq;
- if($@JC_SupNovM > BaseLevel) goto L_BvError;
- if(Upper == 2)
- set @target_job, Job_Super_Baby;
- else
- set @target_job, Job_SuperNovice;
- break;
- case 8:
- if(Class == Job_Novice_High) goto L_noReq;
- if(Upper == 2) goto L_noReq;
- set @target_job, Job_Taekwon;
- break;
- case 9:
- case 10:
- if(Class == Job_Novice_High || Upper == 2) goto L_noReq;
- set @target_job, @menu + 15;
- break;
- default:
- set @target_job, @menu;
- if(Class == Job_Novice_High) set @target_job, @target_job + 4001;
- break;
- }
- }
- mes "Are you sure you want to change to " + JobName(@target_job) + "?";
- if(select("Yes","No") == 1){
- callfunc "Job_Change", @target_job;
- if(@target_job == Job_Gunslinger || @target_job == Job_Ninja || @target_job == Job_Taekwon) {
- callfunc "F_ClearJobVar";
- } else {
- if($@JC_Plat) goto L_GivePlat;
- }
- }
- close;
- break;
- default:
- if(JobLevel < $@JC_MinimumJB) goto L_LvError;
- deletearray @job_opt, getarraysize(@job_opt);
- if(Class < Job_Knight || Class == Job_Taekwon || (Class > Job_Baby && Class < Job_Baby_Knight) || (Class > Job_Novice_High && Class < Job_Lord_Knight)){
- if(lastJob != 0 && Class >= Job_Swordman_High){ // lastJob could have been set before changing back to non-trans
- set @target_job, lastJob + 4001;
- } else {
- switch(Class){
- case Job_Swordman_High:
- case Job_Baby_Swordman:
- case Job_Swordman:
- set @job_opt[0], Job_Knight;
- set @job_opt[1], Job_Crusader;
- break;
- case Job_Mage_High:
- case Job_Baby_Mage:
- case Job_Mage:
- set @job_opt[0], Job_Wizard;
- set @job_opt[1], Job_Sage;
- break;
- case Job_Archer_High:
- case Job_Baby_Archer:
- case Job_Archer:
- set @job_opt[0], Job_Hunter;
- if(Sex == 0)
- set @job_opt[1], Job_Dancer;
- else
- set @job_opt[1], Job_Bard;
- break;
- case Job_Acolyte_High:
- case Job_Baby_Acolyte:
- case Job_Acolyte:
- set @job_opt[0], Job_Priest;
- set @job_opt[1], Job_Monk;
- break;
- case Job_Merchant_High:
- case Job_Baby_Merchant:
- case Job_Merchant:
- set @job_opt[0], Job_Blacksmith;
- set @job_opt[1], Job_Alchemist;
- break;
- case Job_Thief_High:
- case Job_Baby_Thief:
- case Job_Thief:
- set @job_opt[0], Job_Assassin;
- set @job_opt[1], Job_Rogue;
- break;
- default:
- set @job_opt[0], Job_Star_Gladiator;
- set @job_opt[1], Job_Soul_Linker;
- break;
- }
- mes "Welcome, please select the job you wish to change into";
- set @target_job, @job_opt[select(JobName(@job_opt[0]), JobName(@job_opt[1]))-1];
- if(Class > Job_Novice_High && Class < Job_Lord_Knight) set @target_job, @target_job + 4001;
- }
- mes "Are you sure you want to change to " + JobName(@target_job) + "?";
- if(select("Yes","No")==1){
- callfunc "Job_Change", @target_job;
- if(@target_job == Job_Star_Gladiator || @target_job == Job_Soul_Linker) {
- callfunc "F_ClearJobVar";
- } else {
- if($@JC_Plat) goto L_GivePlat;
- }
- }
- close;
- }
-
- if(BaseLevel < 99 || JobLevel < 50) goto L_cantCh;
- if(checkfalcon() || checkcart() || checkriding()) goto L_remove;
-
- if((Class >= Job_Knight) && (Class <= Job_Crusader2)){
- if (.thirdclass==1) {
- mes "Would you like to be reborn or change to 3rd class?";
- switch(select("I want to be reborn!", "I want to change to 3rd class!", "Cancel"))
- {
- case 1:
- mes "Are you sure you want to be reborn?";
- if(select("Yes", "No")==1){
- set lastJob, Class;
- if(Class == Job_Knight2){
- set lastJob, Job_Knight;
- } else {
- if(Class == Job_Crusader2){
- set lastJob, Job_Crusader;
- }
- }
- jobchange Job_Novice_High;
- resetlvl(1);
- skill 142,1,0;
- skill 143,1,0;
- }
- break;
- case 2:
- goto L_Third;
- }
- close;
- }
- else {
- mes "Are you sure you want to be reborn?";
- if(select("Yes", "No")==1){
- set lastJob, Class;
- if(Class == Job_Knight2){
- set lastJob, Job_Knight;
- } else {
- if(Class == Job_Crusader2){
- set lastJob, Job_Crusader;
- }
- }
- jobchange Job_Novice_High;
- resetlvl(1);
- skill 142,1,0;
- skill 143,1,0;
- }
- }
- }
- if (Class >= Job_Lord_Knight && Class <= Job_Paladin2 && .thirdclass == 1)
- {
- if(JobLevel < 50) goto L_cantCh;
- goto L_Third;
- }
- }
- mes "I'm sorry, there are no further classes for your job.";
- close;
-
-L_Third:
- set @target_job, roclass(eaclass() | EAJL_THIRD);
- mes "Are you sure you want to change to " + JobName(@target_job) + "?";
- if(select("Yes", "No")==1){
- callfunc "Job_Change", @target_job;
- }
- close;
-L_GivePlat:
- if (BaseClass==Job_SuperNovice) goto L_sSuperN;
- if (BaseClass==Job_Swordman) goto L_sSword;
- if (BaseClass==Job_Mage) goto L_sMage;
- if (BaseClass==Job_Archer) goto L_sArcher;
- if (BaseClass==Job_Acolyte) goto L_sAcolyte;
- if (BaseClass==Job_Merchant) goto L_sMerchant;
- if (BaseClass==Job_Thief) goto L_sThief;
- close;
-L_sSuperN:
- skill 142,1,0;
- close;
-L_sSword:
- skill 142,1,0;
- skill 144,1,0;
- skill 145,1,0;
- skill 146,1,0;
- close;
-L_sMage:
- skill 142,1,0;
- skill 157,1,0;
- close;
-L_sArcher:
- skill 142,1,0;
- skill 147,1,0;
- skill 148,1,0;
- close;
-L_sAcolyte:
- skill 142,1,0;
- skill 156,1,0;
- close;
-L_sMerchant:
- skill 142,1,0;
- skill 153,1,0;
- skill 154,1,0;
- skill 155,1,0;
- close;
-L_sThief:
- skill 142,1,0;
- skill 149,1,0;
- skill 150,1,0;
- skill 151,1,0;
- skill 152,1,0;
- close;
-
-L_cantCh:
- mes "I'm sorry, you do not meet the requirements to change";
- mes "Please come again soon!";
- close;
-L_LvError:
- mes "I'm sorry, you do not seem to have enough Job Levels";
- mes "Please come again soon!";
- close;
-L_BvError:
- mes "I'm sorry, you do not seem to have enough Base Levels";
- mes "Please come again soon!";
- close;
-L_noReq:
- mes "I'm sorry, you do not meet the requirements to change";
- mes "Please come again soon!";
- close;
-L_remove:
- mes "Please remove your cart,falcon or peco";
- mes "Please come again soon!";
- close;
-
-OnInit:
- // Variable Setup
- set $@JC_MinimumJB, 40; //Minimum job level for changing to 2nd classes (Default : 40)
- set $@JC_Plat, 1; //Give Platinum skills on Jobchange (Default : 1-yes)
- set $@JC_SupNovM, 45; //Base Level to change into Super Novice (Default : 45)
- set .thirdclass, 1; // Allow players to change into third class?
- end;
-}
+//===== rAthena Script ======================================= +//= Job Master +//===== By: ================================================== +//= rAthena Dev Team [Ori:LunatikBunnie] +//===== Current Version: ===================================== +//= 1.7 +//===== Compatible With: ===================================== +//= rAthena SVN; 15624+ +//===== Description: ========================================= +//= Changes your job without asking too much +//= For other info, please contact me at Lunatikbunnie@gmail.com +//= Editted menu to avoid button mashing. +//= 1.3 Added TK/SL/SG, thanks to Haplo. Fixed minor bugs [Lupus] +//= script leaves grabage variable: 'lastJob' +//= 1.4 Added NJ/GS, changed all job numbers to Job_* constants. +//= All credits go to pxxx [Skotlex] +//= 1.5 Rewrite everything from scratch. [Lance] +//= 1.5a fixed Baby -> Super Baby change. Switched to JobName() [Lupus] +//= 1.6 Added support for both branches of 3rd classes, +//= unified response order, fixed minor quirk. +//= 1.7 Corrected typo on EAJ_THIRD to EAJL_THIRD and fixed job +//= level requirement to change to 3rd. [Rytech] +//===== TODO: ================================================ +//= Add baby 3rd classes +//= Could be restructured some more using eajobs +//============================================================ + +prontera,153,193,6 script Job Master 123,{ + mes "^ff0000[Job Master]^000000"; + if(Class >= Job_Rune_Knight) goto L_noReq; + + if(SkillPoint != 0) + { + mes "I'm sorry, please use up all your skill points before changing jobs"; + mes "Please come again soon!"; + close; + } + + if(JobLevel < 10) goto L_LvError; + + switch(Class){ + case Job_Novice_High: + case Job_Baby: + case Job_Novice: + skill 142,1,0; + skill 143,1,0; + mes "Welcome, please select the job you wish to change into"; + if(lastJob != 0 && Class == Job_Novice_High){ + switch(lastJob){ + case Job_Knight: + case Job_Crusader: + set @target_job, Job_Swordman_High; + break; + case Job_Monk: + case Job_Priest: + set @target_job, Job_Acolyte_High; + break; + case Job_Alchemist: + case Job_Blacksmith: + set @target_job, Job_Merchant_High; + break; + case Job_Rogue: + case Job_Assassin: + set @target_job, Job_Thief_High; + break; + case Job_Wizard: + case Job_Sage: + set @target_job, Job_Mage_High; + break; + case Job_Hunter: + case Job_Bard: + case Job_Dancer: + set @target_job, Job_Archer_High; + break; + } + } else { + switch(select("Swordsman","Mage","Archer","Acolyte","Merchant","Thief", + "Super Novice","Taekwon","Gunslinger","Ninja")){ + case 7: + if(Class == Job_Novice_High) goto L_noReq; + if($@JC_SupNovM > BaseLevel) goto L_BvError; + if(Upper == 2) + set @target_job, Job_Super_Baby; + else + set @target_job, Job_SuperNovice; + break; + case 8: + if(Class == Job_Novice_High) goto L_noReq; + if(Upper == 2) goto L_noReq; + set @target_job, Job_Taekwon; + break; + case 9: + case 10: + if(Class == Job_Novice_High || Upper == 2) goto L_noReq; + set @target_job, @menu + 15; + break; + default: + set @target_job, @menu; + if(Class == Job_Novice_High) set @target_job, @target_job + 4001; + break; + } + } + mes "Are you sure you want to change to " + JobName(@target_job) + "?"; + if(select("Yes","No") == 1){ + callfunc "Job_Change", @target_job; + if(@target_job == Job_Gunslinger || @target_job == Job_Ninja || @target_job == Job_Taekwon) { + callfunc "F_ClearJobVar"; + } else { + if($@JC_Plat) goto L_GivePlat; + } + } + close; + break; + default: + if(JobLevel < $@JC_MinimumJB) goto L_LvError; + deletearray @job_opt, getarraysize(@job_opt); + if(Class < Job_Knight || Class == Job_Taekwon || (Class > Job_Baby && Class < Job_Baby_Knight) || (Class > Job_Novice_High && Class < Job_Lord_Knight)){ + if(lastJob != 0 && Class >= Job_Swordman_High){ // lastJob could have been set before changing back to non-trans + set @target_job, lastJob + 4001; + } else { + switch(Class){ + case Job_Swordman_High: + case Job_Baby_Swordman: + case Job_Swordman: + set @job_opt[0], Job_Knight; + set @job_opt[1], Job_Crusader; + break; + case Job_Mage_High: + case Job_Baby_Mage: + case Job_Mage: + set @job_opt[0], Job_Wizard; + set @job_opt[1], Job_Sage; + break; + case Job_Archer_High: + case Job_Baby_Archer: + case Job_Archer: + set @job_opt[0], Job_Hunter; + if(Sex == 0) + set @job_opt[1], Job_Dancer; + else + set @job_opt[1], Job_Bard; + break; + case Job_Acolyte_High: + case Job_Baby_Acolyte: + case Job_Acolyte: + set @job_opt[0], Job_Priest; + set @job_opt[1], Job_Monk; + break; + case Job_Merchant_High: + case Job_Baby_Merchant: + case Job_Merchant: + set @job_opt[0], Job_Blacksmith; + set @job_opt[1], Job_Alchemist; + break; + case Job_Thief_High: + case Job_Baby_Thief: + case Job_Thief: + set @job_opt[0], Job_Assassin; + set @job_opt[1], Job_Rogue; + break; + default: + set @job_opt[0], Job_Star_Gladiator; + set @job_opt[1], Job_Soul_Linker; + break; + } + mes "Welcome, please select the job you wish to change into"; + set @target_job, @job_opt[select(JobName(@job_opt[0]), JobName(@job_opt[1]))-1]; + if(Class > Job_Novice_High && Class < Job_Lord_Knight) set @target_job, @target_job + 4001; + } + mes "Are you sure you want to change to " + JobName(@target_job) + "?"; + if(select("Yes","No")==1){ + callfunc "Job_Change", @target_job; + if(@target_job == Job_Star_Gladiator || @target_job == Job_Soul_Linker) { + callfunc "F_ClearJobVar"; + } else { + if($@JC_Plat) goto L_GivePlat; + } + } + close; + } + + if(BaseLevel < 99 || JobLevel < 50) goto L_cantCh; + if(checkfalcon() || checkcart() || checkriding()) goto L_remove; + + if((Class >= Job_Knight) && (Class <= Job_Crusader2)){ + if (.thirdclass==1) { + mes "Would you like to be reborn or change to 3rd class?"; + switch(select("I want to be reborn!", "I want to change to 3rd class!", "Cancel")) + { + case 1: + mes "Are you sure you want to be reborn?"; + if(select("Yes", "No")==1){ + set lastJob, Class; + if(Class == Job_Knight2){ + set lastJob, Job_Knight; + } else { + if(Class == Job_Crusader2){ + set lastJob, Job_Crusader; + } + } + jobchange Job_Novice_High; + resetlvl(1); + skill 142,1,0; + skill 143,1,0; + } + break; + case 2: + goto L_Third; + } + close; + } + else { + mes "Are you sure you want to be reborn?"; + if(select("Yes", "No")==1){ + set lastJob, Class; + if(Class == Job_Knight2){ + set lastJob, Job_Knight; + } else { + if(Class == Job_Crusader2){ + set lastJob, Job_Crusader; + } + } + jobchange Job_Novice_High; + resetlvl(1); + skill 142,1,0; + skill 143,1,0; + } + } + } + if (Class >= Job_Lord_Knight && Class <= Job_Paladin2 && .thirdclass == 1) + { + if(JobLevel < 50) goto L_cantCh; + goto L_Third; + } + } + mes "I'm sorry, there are no further classes for your job."; + close; + +L_Third: + set @target_job, roclass(eaclass() | EAJL_THIRD); + mes "Are you sure you want to change to " + JobName(@target_job) + "?"; + if(select("Yes", "No")==1){ + callfunc "Job_Change", @target_job; + } + close; +L_GivePlat: + if (BaseClass==Job_SuperNovice) goto L_sSuperN; + if (BaseClass==Job_Swordman) goto L_sSword; + if (BaseClass==Job_Mage) goto L_sMage; + if (BaseClass==Job_Archer) goto L_sArcher; + if (BaseClass==Job_Acolyte) goto L_sAcolyte; + if (BaseClass==Job_Merchant) goto L_sMerchant; + if (BaseClass==Job_Thief) goto L_sThief; + close; +L_sSuperN: + skill 142,1,0; + close; +L_sSword: + skill 142,1,0; + skill 144,1,0; + skill 145,1,0; + skill 146,1,0; + close; +L_sMage: + skill 142,1,0; + skill 157,1,0; + close; +L_sArcher: + skill 142,1,0; + skill 147,1,0; + skill 148,1,0; + close; +L_sAcolyte: + skill 142,1,0; + skill 156,1,0; + close; +L_sMerchant: + skill 142,1,0; + skill 153,1,0; + skill 154,1,0; + skill 155,1,0; + close; +L_sThief: + skill 142,1,0; + skill 149,1,0; + skill 150,1,0; + skill 151,1,0; + skill 152,1,0; + close; + +L_cantCh: + mes "I'm sorry, you do not meet the requirements to change"; + mes "Please come again soon!"; + close; +L_LvError: + mes "I'm sorry, you do not seem to have enough Job Levels"; + mes "Please come again soon!"; + close; +L_BvError: + mes "I'm sorry, you do not seem to have enough Base Levels"; + mes "Please come again soon!"; + close; +L_noReq: + mes "I'm sorry, you do not meet the requirements to change"; + mes "Please come again soon!"; + close; +L_remove: + mes "Please remove your cart,falcon or peco"; + mes "Please come again soon!"; + close; + +OnInit: + // Variable Setup + set $@JC_MinimumJB, 40; //Minimum job level for changing to 2nd classes (Default : 40) + set $@JC_Plat, 1; //Give Platinum skills on Jobchange (Default : 1-yes) + set $@JC_SupNovM, 45; //Base Level to change into Super Novice (Default : 45) + set .thirdclass, 1; // Allow players to change into third class? + end; +} diff --git a/npc/custom/quest_warper.txt b/npc/custom/quest_warper.txt index cffaebdb4..85919fa0f 100644 --- a/npc/custom/quest_warper.txt +++ b/npc/custom/quest_warper.txt @@ -1,2137 +1,2137 @@ -//===== rAthena Script ============================================
-//= Quest Warper Script
-//===== By: =======================================================
-//= DZeroX, Darkchild, Neouni
-//===== Current Version: ==========================================
-//= 2.2
-//===== Compatible With: ==========================================
-//= rAthena SVN
-//===== Description: ==============================================
-//= Warper that works only after locations are unlocked
-//===== Additional Comments: ======================================
-//= 1.0 - NPCs created
-//= 1.1 - Add Dungeons by sturm
-//= 1.2 - Add All char in account unlocked by ace_killer
-//= 1.3 - Add new 7 towns and 7 dungeons by escoteiro
-// - Correct bug jawaii town by escoteiro
-// - Remove some excessive warpras by escoteiro
-//= 1.4 - Rewrite of the Warpa system [Neouni]
-// - Corrected some bugs caused by autoconverting the old script
-//= 1.4a - Rewrite of menu to be custom for each player [Neouni]
-// - Dungeon listing rewrite
-// - Town listing rewrite
-// - GameMaster can Customise Main menu
-//= 1.4b - Pricing round [Neouni]
-// - GM menu added for pricing
-// - Town Warp pricing tags added
-// - Dungeon Warp pricing tags added
-//= 1.5 - storage functions pricing [Neouni]
-// - storage pricing added
-// - kafra points setting added
-// - kafra storage code security added
-// - Healing scripts pricing added
-// - Heal Part script added
-//= 1.6 - Dungeon warp [Neouni] (beta only)
-// - added option to add a extra fee for going down deeper into dungeon
-// partly by rebuilding the dungeon warping into variable menu's
-//= 1.6a - alot of fixes for beta release [Neouni] (public release)
-// - fixed syntax problems
-// - fixed missing pyramid gats in @DGat$ array
-// - removed the culver level 5 that didn't exist
-// and caused quite alot of problems (i didn't check while converting)
-//-1.7 - Readability of Dungeon menu building increased [Neouni]
-// - Thanatos Tower & Louyang Dungeon added
-//-1.8 - changed around unlock variables [Neouni]
-// - Moved warp variables to mark what you have unlocked to an binary array in login based permanent variable
-// (warp variables are saved in login database, so all charservers have these unlocked)
-// - Town Warp unlock array max 21/(unknown max) items used instead of max account #variables 32 !
-// - Dungeon Warp unlock array 28/(unknown max) items used instead of max account #variables 32 !
-// - (max login ##variables = 16, i used 3)
-// - old variables are cleared on next save
-// - Extra Variable clear added for every character, just in case (request by Terces)
-//-1.8a - Show ammount of users on map [Neouni]
-// - Default = off, enable in GM menu
-// - Requested by escoteiro
-//-1.8b - Small typo fixed in stampcard script [Neouni]
-// - Reported by escoteiro
-//-1.9 - Making it more edit friendly [Neouni]
-// - Made Dungeon warp arrays more readable & editable (QWS_Darray)
-// - Made town warp arrays more readable & editable (QWS_Tarray)
-//-2.0 - Special Warp menu added [Neouni]
-// - when all towns and dungeons are collected a new option on the main menu will show
-// - it will only show when you setup the mapname of the warp !
-// - requested by escoteiro
-// - several bugs fixed
-//-2.0a - Dungeon Level Limit & Split dungeon fees
-// - Limits dungeon based on Depth, access special setup menu thru GM-Menu
-// - Dungeon fees split up based on Basic , Advanced & Overseas
-// - Old Dungeon fee system removed, all dungeon fees now set to 0
-//-2.0b
-// - Special warpname menu option name bug fixed
-//-2.1 Updated names to fall within retrictions. [L0ne_W0lf]
-//-2.2 #kafra_code is now stored as is. [brianluau]
-//=================================================================
-
-//========================Function=&=Script========================
-
-
-function script Q_Warpra {
-// Quick hack for backwards compatibility pre 1.8
-if (##QWS_UP < 18) callfunc "QWS_BackComp";
-// Extra clear variables because marker is saved on all char servers and variables can be on multiple servers
-if (QWS_ExtraVARClear < 18) callfunc "Extra_Variable_Clear";
-
- mes "[Warpra]";
- mes "Hello,";
- mes "I can warp you to any town or dungeon, but you need to unlock them first.";
- mes "To unlock them, you have to visit us.";
- mes "What do you need?";
-
- if(getarg(0) == 0) callfunc "QWS_MMarray",0;
- if(getarg(0) == 1) callfunc "QWS_MMarray",1;
-
- set @MMenu,select(@Mmenulist$[0],@Mmenulist$[1],@Mmenulist$[2],@Mmenulist$[3],@Mmenulist$[4],@Mmenulist$[5],@Mmenulist$[6],@Mmenulist$[7],@Mmenulist$[8],@Mmenulist$[9],@Mmenulist$[10],@Mmenulist$[11]);
-
- switch(@Mmenuref[@MMenu-1]+1){
- case 1:
- goto GM_Menu;
- case 2:
- warp $QW_SP_WarpMap$, $QW_SP_WarpX, $QW_SP_WarpY;
- close2;
- debugmes "Please check your special warp menu settings on the Warpra";
- end;
- case 3:
- goto L_town;
- case 4:
- goto L_dungeon;
- case 5:
- goto L_FewWarps;
- case 6:
- goto L_NoUnlock;
- case 7:
- goto L_heal_Full;
- case 8:
- goto L_heal_Part;
- case 9:
- goto L_Storage;
- case 10:
- goto L_GStorage;
- case 11:
- goto L_end;
- default:
- goto L_end;
-}
-
-//=====================GM-Menu=Functions===========================
-
-GM_Menu:
-next;
-//----------------Town-Warp
- if ($QW_TW_OFF == 0) mes "Town warping = ^00FF00 On ^000000";
- if ($QW_TW_OFF == 1) mes "Town warping = ^FF0000 Off ^000000";
-//----------------Dungeon-Warp
- if ($QW_DW_OFF == 0) mes "Dungeon warping = ^00FF00 On ^000000";
- if ($QW_DW_OFF == 1) mes "Dungeon warping = ^FF0000 Off ^000000";
-//----------------Dungeon-Depth-Limit
- if ($QW_DL == 1) mes "Dungeon Depth limit is ^00FF00 On ^000000";
- if ($QW_DL == 0) mes "Dungeon Depth limit is ^FF0000 Off ^000000";
- mes "If on Dungeon Depth limit is set to ^0000FF"+$QW_DDL+"^000000";
-//----------------ShowMapUsers
- if ($QW_MapUserShow == 1) mes "Show Map Users = ^00FF00 On ^000000";
- if ($QW_MapUserShow == 0) mes "Show Map Users = ^FF0000 Off ^000000";
-//----------------Healfull
- if ($QW_HF == 1) mes "Healing full = ^00FF00 On ^000000";
-//----------------Healpart
- if ($QW_HP == 1) mes "Healing partly = ^00FF00 On ^000000";
- if (($QW_HF == 0)&&($QW_HP == 0)) mes "Healing = ^FF0000 Off ^000000";
-//----------------Storage
- if ($QW_Stor == 1) mes "Storage = ^00FF00 On ^000000";
- if ($QW_Stor == 0) mes "Storage = ^FF0000 Off ^000000";
-//----------------GuildStorage
- if ($QW_GStor == 1) mes "Guild Storage = ^00FF00 On ^000000";
- if ($QW_GStor == 0) mes "Guild Storage = ^FF0000 Off ^000000";
-//----------------KafraPoints
- if ($QW_KPoint == 1) mes "Kafra points collect = ^00FF00 On ^000000";
- if ($QW_KPoint == 0) mes "Kafra points collect = ^FF0000 Off ^000000";
-//----------------GMmenu
- switch(select("Town Warping","Dungeon Warping","Dungeon Level Limit","Show Map Users","Healing full","Healing partly","Storage","Guild Storage","Kafra points collect","Set Prices","Special Warp","Exit")) {
-
-// Using callsub and a small check to not make 1 part of the script set it on and the other turning it off again
-
-case 1:
- if ($QW_TW_OFF == 0) {
- set $QW_TW_OFF,1;
- goto GM_Menu;
- } else
- set $QW_TW_OFF,0;
- goto GM_Menu;
-case 2:
- if ($QW_DW_OFF == 0) {
- set $QW_DW_OFF,1;
- goto GM_Menu;
- } else
- set $QW_DW_OFF,0;
- goto GM_Menu;
-case 3:
- goto DungeonLevelLimit;
-case 4:
- if ($QW_MapUserShow == 0) {
- set $QW_MapUserShow,1;
- goto GM_Menu;
- } else
- set $QW_MapUserShow,0;
- goto GM_Menu;
-case 5:
- if ($QW_HF == 0) {
- set $QW_HF,1;
- set $QW_HP,0;
- goto GM_Menu;
- } else
- set $QW_HF,0;
- goto GM_Menu;
-case 6:
- if ($QW_HP == 0) {
- set $QW_HP,1;
- set $QW_HF,0;
- goto GM_Menu;
- } else
- set $QW_HP,0;
- goto GM_Menu;
-case 7:
- if ($QW_Stor == 0) {
- set $QW_Stor,1;
- goto GM_Menu;
- } else
- set $QW_Stor,0;
- goto GM_Menu;
-case 8:
- if ($QW_GStor == 0) {
- set $QW_GStor,1;
- goto GM_Menu;
- } else
- set $QW_GStor,0;
- goto GM_Menu;
-case 9:
- if ($QW_KPoint == 0) {
- set $QW_KPoint,1;
- goto GM_Menu;
- } else
- set $QW_KPoint,0;
- goto GM_Menu;
-case 10:
- goto Setprice;
-case 11:
- goto SpecialWarpMenu;
-default:
- close;
- end;
-}
-
-
-//======================GM-Menu=Pricing============================
-
-Setprice:
- if ($QW_DW_FEE != 0) set $QW_DW_FEE,0;
- next;
- mes "Scroll thru the list to see all the options";
-//----------------Warp-Basic-Price
- if ($QW_BW_PRICE != 0) mes "Basic - Warps are = ^00FF00 "+$QW_BW_PRICE+" ^000000";
- if ($QW_BW_PRICE == 0) mes "Basic - Warps are = ^FF0000 Free ^000000";
-//----------------Warp-Advanced-Price
- if ($QW_AW_PRICE != 0) mes "Advanced - Warps are = ^00FF00 "+$QW_AW_PRICE+" ^000000";
- if ($QW_AW_PRICE == 0) mes "Advanced - Warps are = ^FF0000 Free ^000000";
-//----------------Warp-Oversea-Price
- if ($QW_OW_PRICE != 0) mes "Overseas - Warps are = ^00FF00 "+$QW_OW_PRICE+" ^000000";
- if ($QW_OW_PRICE == 0) mes "Overseas - Warps are = ^FF0000 Free ^000000";
-//----------------Basic-Dungeon-Level-Warp-Fee
- if ($QW_BW_FEE != 0) mes "Basic Dungeon level warp fee = ^00FF00 "+$QW_BW_FEE+" ^000000 zeny per level";
- if ($QW_BW_FEE == 0) mes "Basic Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level";
-//----------------Advanced-Dungeon-Level-Warp-Fee
- if ($QW_AW_FEE != 0) mes "Advanced Dungeon level warp fee = ^00FF00 "+$QW_AW_FEE+" ^000000 zeny per level";
- if ($QW_AW_FEE == 0) mes "Advanced Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level";
-//----------------Overseas-Dungeon-Level-Warp-Fee
- if ($QW_OW_FEE != 0) mes "Overseas Dungeon level warp fee = ^00FF00 "+$QW_OW_FEE+" ^000000 zeny per level";
- if ($QW_OW_FEE == 0) mes "Overseas Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level";
-//----------------Heal-Full
- if ($QW_HF_PRICE != 0) mes "Full Healing = ^00FF00 "+$QW_HF_PRICE+" ^000000";
- if ($QW_HF_PRICE == 0) mes "Full Healing = ^FF0000 Free ^000000";
-//----------------Heal-Part
- if ($QW_HP_H_PRICE != 0) mes "^FF0000HP ^000000Part Healing = ^00FF00 "+$QW_HP_H_PRICE+" ^000000 a point";
- if ($QW_HP_H_PRICE == 0) mes "^FF0000HP ^000000Part Healing = ^FF0000 Free ^000000";
- if ($QW_HP_S_PRICE != 0) mes "^0000FFSP ^000000Part Healing = ^00FF00 "+$QW_HP_S_PRICE+" ^000000 a point";
- if ($QW_HP_S_PRICE == 0) mes "^0000FFSP ^000000Part Healing = ^FF0000 Free ^000000";
-//----------------Storage
- if (($QW_S_PRICE != 0)&&($QW_S_PRICE != 60)) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000";
- if ($QW_S_PRICE == 0) mes "Storage = ^FF0000 Free ^000000";
- if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000";
-//----------------Guild-Storage
- if ($QW_GS_PRICE != 0) mes "Guild Storage = ^00FF00 "+$QW_GS_PRICE+" ^000000";
- if ($QW_GS_PRICE == 0) mes "Guild Storage = ^FF0000 Free ^000000";
-
- switch(select("Basic - Warps","Advanced - Warps","Overseas - Warps","Basic Dungeon warp fee","Advanced Dungeon warp fee","Overseas Dungeon warp fee","Full Healing","Part Healing","Storage","Guild Storage","Back","Exit")) {
-
-case 1:
- next;
- if ($QW_BW_PRICE != 0) mes "Basic - Warps are = ^00FF00 "+$QW_BW_PRICE+" ^000000";
- if ($QW_BW_PRICE == 0) mes "Basic - Warps are = ^FF0000 Free ^000000";
- mes "Basic - Warps are starter towns and related dungeons";
- input $QW_BW_PRICE;
- goto Setprice;
-
-case 2:
- next;
- if ($QW_AW_PRICE != 0) mes "Advanced - Warps are = ^00FF00 "+$QW_AW_PRICE+" ^000000";
- if ($QW_AW_PRICE == 0) mes "Advanced - Warps are = ^FF0000 Free ^000000";
- mes "Advanced - Warps are towns and dungeons on the same island but not close to any starter town";
- input $QW_AW_PRICE;
- goto Setprice;
-
-case 3:
- next;
- if ($QW_OW_PRICE != 0) mes "Overseas - Warps are = ^00FF00 "+$QW_OW_PRICE+" ^000000";
- if ($QW_OW_PRICE == 0) mes "Overseas - Warps are = ^FF0000 Free ^000000";
- mes "Overseas - Warps are towns and dungeons overseas reachable by boat from alberta";
- input $QW_OW_PRICE;
- goto Setprice;
-
-case 4:
- next;
- if ($QW_BW_FEE != 0) mes "Basic Dungeon level warp fee = ^00FF00 "+$QW_BW_FEE+" ^000000 zeny per level";
- if ($QW_BW_FEE == 0) mes "Basic Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level";
- mes "Basic - Warps are starter town related dungeons";
- mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee";
- mes "These costs are on top of the regular Warp costs";
- input $QW_BW_FEE;
- goto Setprice;
-
-case 5:
- next;
- if ($QW_AW_FEE != 0) mes "Advanced Dungeon level warp fee = ^00FF00 "+$QW_AW_FEE+" ^000000 zeny per level";
- if ($QW_AW_FEE == 0) mes "Advanced Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level";
- mes "Advanced - Warps are dungeons not close to any starter town";
- mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee";
- mes "These costs are on top of the regular Warp costs";
- input $QW_AW_FEE;
- goto Setprice;
-
-case 6:
- next;
- if ($QW_OW_FEE != 0) mes "Overseas Dungeon level warp fee = ^00FF00 "+$QW_OW_FEE+" ^000000 zeny per level";
- if ($QW_OW_FEE == 0) mes "Overseas Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level";
- mes "Overseas - Warps are dungeons related to towns overseas reachable by boat from alberta";
- mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee";
- mes "These costs are on top of the regular Warp costs";
- input $QW_OW_FEE;
- goto Setprice;
-
-case 7:
- next;
- if ($QW_HF_PRICE != 0) mes "Full Healing = ^00FF00 "+$QW_HF_PRICE+" ^000000";
- if ($QW_HF_PRICE == 0) mes "Full Healing = ^FF0000 Free ^000000";
- mes "Instant full healing 1 price";
- input $QW_HF_PRICE;
- goto Setprice;
-
-case 8:
- next;
- if ($QW_HP_H_PRICE != 0) mes "^FF0000HP ^000000Part Healing = ^00FF00 "+$QW_HP_H_PRICE+" ^000000 a point";
- if ($QW_HP_H_PRICE == 0) mes "^FF0000HP ^000000Part Healing = ^FF0000 Free ^000000";
- if ($QW_HP_S_PRICE != 0) mes "^0000FFSP ^000000Part Healing = ^00FF00 "+$QW_HP_S_PRICE+" ^000000 a point";
- if ($QW_HP_S_PRICE == 0) mes "^0000FFSP ^000000Part Healing = ^FF0000 Free ^000000";
- mes "Healing price per 1 HP";
- mes "Healing price per 1 SP";
- mes "2 inputs, first HP then SP";
- input $QW_HP_H_PRICE;
- input $QW_HP_S_PRICE;
- goto Setprice;
-
-case 9:
- next;
- if (($QW_S_PRICE != 0)&&($QW_S_PRICE != 60)) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000";
- if ($QW_S_PRICE == 0) mes "Storage = ^FF0000 Free ^000000";
- if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000";
- mes "Storage cost, if set to 60 Kafra pricing will be handled";
- input $QW_S_PRICE;
- goto Setprice;
-
-case 10:
- next;
- if ($QW_GS_PRICE != 0) mes "Guild Storage = ^00FF00 "+$QW_GS_PRICE+" ^000000";
- if ($QW_GS_PRICE == 0) mes "Guild Storage = ^FF0000 Free ^000000";
- mes "Guild Storage, free on Guild Kafras";
- input $QW_GS_PRICE;
- goto Setprice;
-case 11:
- goto GM_Menu;
-default:
- close;
- end;
-}
-
-//======================Special=Warp=Menu==========================
-
-SpecialWarpMenu:
- if ($QW_SP_Warpname$ == "") set $QW_SP_Warpname$,"Special Warp";
- next;
- mes "Scroll down to see all the information";
- mes "The Special warp menu option will show in the main menu when all towns & dungeons are unlocked";
- mes "And when the map for special warping has been set";
- mes "menu option name set to ^0000FF"+$QW_SP_Warpname$+"^000000";
- if ($QW_SP_WarpMap$ == "") mes "map is currently ^FF0000not^000000 set, and Special warp menu is off";
- if ($QW_SP_WarpMap$ != "") mes "map is currently set to ^0000FF"+$QW_SP_WarpMap$+"^000000 and Special Warp menu is on";
- mes "coords are set to ^0000FF"+$QW_SP_WarpX+","+$QW_SP_WarpY+"^000000";
- switch(select("Set Special Warp name to show in menu", "Set WarpMap","Set Coords","Go Back to GM_Menu","Exit")){
-
-case 1:
- next;
- mes "set the name to show in the menu as option";
- input $QW_SP_Warpname$;
- goto SpecialWarpMenu;
-case 2:
- next;
- mes "set the map in the ^0000FFmapname^000000 format";
- mes "when this warpmap is set the option for players will show once they meet the requirments";
- mes "to disable Special Warp Menu option clear this !";
- input $QW_SP_WarpMap$;
- goto SpecialWarpMenu;
-case 3:
- next;
- mes "First input = Xcoord";
- mes "Second input = Ycoord";
- input $QW_SP_WarpX;
- input $QW_SP_WarpY;
- goto SpecialWarpMenu;
-case 4:
- goto GM_Menu;
-default:
- close;
- end;
-}
-
-//======================Dungeon=Level=Limit========================
-DungeonLevelLimit:
- next;
- if ($QW_DL == 1) mes "Dungeon Depth limit is ^00FF00 On ^000000";
- if ($QW_DL == 0) mes "Dungeon Depth limit is ^FF0000 Off ^000000";
- mes "If^00FF00 On ^000000Dungeon Depth limit is set to ^0000FF"+$QW_DDL+"^000000";
-
- switch(select("Toggle Dungeon Depth Limit", "Set Dungeon Depth Limit","Go Back to GM_Menu","Exit")){
-
-case 1:
- if ($QW_DL == 0) {
- set $QW_DL,1;
- goto DungeonLevelLimit;
- } else
- set $QW_DL,0;
- goto DungeonLevelLimit;
-case 2:
- next;
- mes "set limit of Dungeon Depth 0 = entrance";
- mes "Depth 1 is a map connected to 0 and so on";
- mes "Shortest Route to map counts as depth";
- input $QW_DDL;
- goto DungeonLevelLimit;
-case 3:
- goto GM_Menu;
-default:
- close;
- end;
-}
-
-//===========================Towns=================================
-
-L_town:
- callfunc "QWS_Tarray";
-
-// Expected maximum is set to 25 items, if you add more options add more ",@Tmenulist$[xx]"
-
- set @TWMenu,select(@Tmenulist$[0],@Tmenulist$[1],@Tmenulist$[2],@Tmenulist$[3],@Tmenulist$[4],@Tmenulist$[5],@Tmenulist$[6],@Tmenulist$[7],@Tmenulist$[8],@Tmenulist$[9],@Tmenulist$[10],@Tmenulist$[11],@Tmenulist$[12],@Tmenulist$[13],@Tmenulist$[14],@Tmenulist$[15],@Tmenulist$[16],@Tmenulist$[17],@Tmenulist$[18],@Tmenulist$[19],@Tmenulist$[20],@Tmenulist$[21],@Tmenulist$[22],@Tmenulist$[23],@Tmenulist$[24]);
-
- if (@Tmenuref[@TWMenu-1] == 57005) goto L_end; // 57005='dead' in hex
-
- if(Zeny<@pTprice[@Tmenuref[@TWMenu-1]]) callsub L_Short_on_zeny,0;
-
- set Zeny, Zeny-@pTprice[@Tmenuref[@TWMenu-1]];
- if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@pTprice[@Tmenuref[@TWMenu-1]]/16);
- warp @pTmap$[@Tmenuref[@TWMenu-1]],@pTXcoords[@Tmenuref[@TWMenu-1]],@pTYcoords[@Tmenuref[@TWMenu-1]];
- close2; // this part safegaurds against errors/typos
- set Zeny, Zeny+@pTprice[@Tmenuref[@TWMenu-1]];
- end;
-
-//=========================Dungeons================================
-
-L_dungeon:
- callfunc "QWS_Darray";
-
-// Expected maximum is set to 35 items, if you add more options add more ",@Dmenulist$[xx]"
-
- set @DWMenu,select(@Dmenulist$[0],@Dmenulist$[1],@Dmenulist$[2],@Dmenulist$[3],@Dmenulist$[4],@Dmenulist$[5],@Dmenulist$[6],@Dmenulist$[7],@Dmenulist$[8],@Dmenulist$[9],@Dmenulist$[10],@Dmenulist$[11],@Dmenulist$[12],@Dmenulist$[13],@Dmenulist$[14],@Dmenulist$[15],@Dmenulist$[16],@Dmenulist$[17],@Dmenulist$[18],@Dmenulist$[19],@Dmenulist$[20],@Dmenulist$[21],@Dmenulist$[22],@Dmenulist$[23],@Dmenulist$[24],@Dmenulist$[25],@Dmenulist$[26],@Dmenulist$[27],@Dmenulist$[28],@Dmenulist$[29],@Dmenulist$[30],@Dmenulist$[31],@Dmenulist$[32],@Dmenulist$[33],@Dmenulist$[34]);
-
- if (@Dmenuref[@DWMenu-1] == 57005) goto L_end; // 57005='dead' in hex
- set @DwarpMenu, (@Dmenuref[@DWMenu-1]);
- callfunc "QWS_DLarray";
-
- next;
- mes "[Warpra]";
- mes "Please select where you want to go";
-
-// Expected maximum is set to 18 items, if you have dungeons with more levels add more ",@DWLmenulist$[xx]"
- set @DWLMenu,select(@DWLmenulist$[0], @DWLmenulist$[1], @DWLmenulist$[2], @DWLmenulist$[3], @DWLmenulist$[4], @DWLmenulist$[5], @DWLmenulist$[6], @DWLmenulist$[7], @DWLmenulist$[8], @DWLmenulist$[9], @DWLmenulist$[10], @DWLmenulist$[11], @DWLmenulist$[12], @DWLmenulist$[13], @DWLmenulist$[14], @DWLmenulist$[15], @DWLmenulist$[16], @DWLmenulist$[17]);
-
- if (@DWLmenuref[@DWLMenu-1] == 57005) goto L_end; // 57005='dead' in hex
-
- set @Darrayref, @DWLmenuref[@DWLMenu-1];
- set @warpprice, @pDprice[@Dmenuref[@DWMenu-1]]+(getd(@pDfee$[@Dmenuref[@DWMenu-1]])*(@DDepth[@Darrayref]));
-
- if(Zeny<@warpprice) callsub L_Short_on_zeny,1;
-
- set Zeny, Zeny-(@warpprice);
- if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@warpprice/16);
- warp @DGat$[@Darrayref],@DXcoords[@Darrayref],@DYcoords[@Darrayref];
- close2; // this part safegaurds against errors/typos
- set Zeny, Zeny+@pTprice[@Tmenuref[@DWMenu-1]];
- end;
-
-//=============================Healing=============================
-
-L_heal_Full:
- set @healfee, $QW_HF_PRICE;
- if(Zeny<@healfee) callsub L_Short_on_zeny,4;
- set Zeny, Zeny-@healfee;
- if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@healfee/500);
- next;
- mes "[Warpra]";
- mes "Close this window and I will Heal you.";
- close2;
- percentheal 100,100;
- end;
-
-L_heal_Part:
- set @healchoice,select("Full heal","Health Points only","Skill Points only","Exit");
- if (@healchoice == 1) callsub PHeal,1,1;
- if (@healchoice == 2) callsub PHeal,1,0;
- if (@healchoice == 3) callsub PHeal,0,1;
- goto L_end;
-
-PHeal:
- next;
- set @Hp, MaxHp-Hp;
- set @Sp, MaxSp-Sp;
- set @HpPrice, @hp*$QW_HP_H_PRICE;
- set @SpPrice, @sp*$QW_HP_S_PRICE;
- mes "[Warpra]";
- if(getarg(0) == 1) mes ""+@HpPrice+" Zeny for "+@Hp+" health points";
- if(getarg(1) == 1) mes ""+@SpPrice+" Zeny for "+@Sp+" skill points";
- set @total, @HpPrice+@SpPrice;
- mes "for a total of "+@total+" zeny";
- if (select("Heal me","Let me see the choices again")==2) goto L_heal_Part;
-
- if(getarg(0) == 1)set @HpPrice, (MaxHp-Hp)*$QW_HP_H_PRICE;
- if(getarg(1) == 1)set @SpPrice, (MaxSp-Sp)*$QW_HP_S_PRICE;
- set @healfee, @HpPrice+@SpPrice;
- if (getarg(0) == 1)&&(getarg(1) == 1)&&(Zeny<@healfee) goto Zeny_Short_Both;
- if (getarg(0) == 1)&&(Zeny<@healfee) goto Zeny_short_HP;
- if (getarg(1) == 1)&&(Zeny<@healfee) goto Zeny_short_SP;
- set Zeny, Zeny-@healfee;
- if (getarg(0) == 1)&&(getarg(1) == 1) percentheal 100,100;
- if (getarg(0) == 1) percentheal 100,0;
- if (getarg(1) == 1) percentheal 0,100;
- close;
- end;
-
-Zeny_Short_Both:
- mes "[Warpra]";
- mes "choose another option, you can afford both.";
- mes "I can heal as much as you can afford too.";
- if (select("OK","Exit") == 2) goto L_end;
- goto PHeal;
-
-Zeny_short_HP:
- mes "[Warpra]";
- mes "do you want me to partly heal your HP ?";
- if (select("Yes","No") == 2) goto L_end;
- set @Hp, Zeny/$QW_HP_H_PRICE;
- set @HpPrice, @Hp*$QW_HP_H_PRICE;
- if (@Hp == 1) mes "your not worth the effort";
- if (@Hp == 1) goto L_end;
- set Zeny, Zeny-@HpPrice;
- heal @Hp,0;
- close;
- end;
-
-
-Zeny_short_SP:
- mes "[Warpra]";
- mes "do you want me to partly heal your SP ?";
- if (select("Yes","No") == 2) goto L_end;
- set @Sp, Zeny/$QW_HP_S_PRICE;
- set @SpPrice, @Sp*$QW_HP_S_PRICE;
- if (@Sp == 1) mes "your not worth the effort";
- if (@Sp == 1) goto L_end;
- set Zeny, Zeny-@SpPrice;
- heal 0,@Sp;
- close;
- end;
-
-
-//=============================Storage=============================
-
-L_Storage:
- next;
- if(basicskillcheck() > 0 && getskilllv("NV_BASIC") < 6) goto L_StorageJBlow;
- set @fee, $QW_S_PRICE;
- if ($QW_S_PRICE == 60)&&(BaseJob == Job_Novice) set @fee, 30;
- if ($QW_S_PRICE == 60)&&(BaseJob != Job_Novice) set @fee, 60;
- if(Zeny<@fee) callsub L_Short_on_zeny,2;
- set Zeny, Zeny-@fee;
- if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@fee/5);
-
- mes "[Warpra]";
- mes "Close this window and i will open your storage.";
-
- callsub F_CheckKafCode; //check your storage password thru kafra coding, if set
-
- close2;
- openstorage;
- end;
-
-F_CheckKafCode:
- if(#kafra_code==0) return;
- mes "Enter your storage password:";
- set @code_,0;
- input @code_;
- if(@code_ != #kafra_code) {
- dispbottom "Wrong storage password.";
- close;
- }
- set @kafcode_try,0;
- set @code_,0;
- return;
-
-L_StorageJBlow:
- mes "[Warpra]";
- mes "I am sorry but you have to be at least Novice level 6 if you want to use the storage.";
- return;
-
-L_GStorage:
- if(@GID==0) goto L_NoGuild;
- if(Zeny<$QW_GS_PRICE) callsub L_Short_on_zeny,3;
- set Zeny, Zeny-$QW_GS_PRICE;
- if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + ($QW_GS_PRICE/5);
- next;
- mes "[Warpra]";
- mes "Close this window and i will open the ^5533FF" + GetGuildName(@GID) + "^000000 storage.";
- close2;
- guildopenstorage;
- end;
-
-L_NoGuild:
- next;
- mes "[Warpra]";
- mes "You are not a part of a guild I can't help you.";
- close;
- end;
-
-L_end:
- close;
- end;
-
-//============================Few=Warp=============================
-L_FewWarps:
- next;
- mes "[Warpra ]";
- mes "You need to unlock locations before they come available to you.";
- mes "To unlock a location talk to my colleagues all over the world.";
- mes "Each account got it's own stamp card.";
- mes "Want me to check what stamps you have collected so far ?.";
- if (select("Yes","No")==1) callsub stampcard;
- close;
- end;
-
-
-//============================No=Unlock============================
-
-L_NoUnlock:
- next;
- mes "[Warpra ]";
- mes "I don't unlock this location, my assistant deeper in the dungeon will unlock this place.";
- close;
- end;
-
-//=========================Short=On=Zeny===========================
-L_Short_on_zeny:
- next;
- if (getarg(0) == 0) mes "you don't seem to have "+@pTprice[@Tmenuref[@TWMenu-1]]+" zeny, to pay for the warp fee to "+@pTmenuitems$[@Tmenuref[@TWMenu-1]]+"";
- if (getarg(0) == 1) mes "you don't seem to have "+@warpprice+" zeny, to pay for the warp fee to "+@DLevelName$[@DWLmenuref[@DWLMenu-1]]+" at "+@pDmenuitems$[@Dmenuref[@DWMenu-1]]+"";
- if (getarg(0) == 2) mes "you don't seem to have "+@fee+" zeny, to pay for the storage fee";
- if (getarg(0) == 3) mes "you don't seem to have "+$QW_GS_PRICE+" zeny, to pay for the guild storage fee";
- if (getarg(0) == 4) mes "you don't seem to have "+@healfee+" zeny, to pay for your healing";
- close;
- end;
-
-//===========================Stamp=Card============================
-stampcard:
-// Counting of the ammount of places you have unlocked
- next;
- mes "Let me check what Towns you have";
-
- callfunc "QWS_TownStamps";
-
- mes "you collected^00FF00 "+@Tstamp+" of "+@MaxTstamp+" ^000000Towns.";
- if (@Tstamp == 15) mes "They say there is an island you can only get to when married";
- if (@Tstamp == 15) emotion 18;
- next;
-
- mes "Let me check what dungeons you have";
-
- callfunc "QWS_DungeonStamps";
-
- mes "you collected^00FF00 "+@Dstamp+" of "+@MaxDstamp+" ^000000Dungeons";
- mes "To unlock a dungeon, search for my colleague.";
- mes "You can usually find them near the middle or end of the dungeon";
- return;
-}
-
-function script QWS_TownStamps {
- set @Tstamp,0;
- set @MaxTstamp,21; //maximum number of towns
- set @binvalue,1;
- set @Tstamploop,0;
- do {
- if ((@binvalue & ##QWS_T_Unlock) == @binvalue) set @Tstamp,@Tstamp+1;
-
- set @binvalue, @binvalue *2;
- set @Tstamploop, @Tstamploop + 1;
-
-}while (@Tstamploop < @MaxTstamp);
-return;
-}
-
-function script QWS_DungeonStamps {
- set @Dstamp,0;
- set @MaxDstamp,29; //maximum number of dungeons
- set @binvalue,1;
- set @Dstamploop,0;
- do {
- if ((@binvalue & ##QWS_D_Unlock) == @binvalue) set @Dstamp,@Dstamp+1;
-
- set @binvalue, @binvalue *2;
- set @Dstamploop, @Dstamploop + 1;
-
-}while (@Dstamploop < @MaxDstamp);
-return;
-}
-
-//======================Main=Menu=Array============================
-
-function script QWS_MMarray {
-
-// Currently 9 items
-
- setarray @pMmenuitems$[0], "GameMaster Menu", $QW_SP_Warpname$, "Warp to Towns", "Warp to Dungeons", "Why so few Warps ?", "Why don't you Unlock this location ?", "Heal", "Heal", "Storage", "Guild Storage", "Cancel";
- set @Mi,0; // That's our loop counter.
- set @Mj,0; // That's the menu lines counter.
-//----------------GameMaster-Menu
- if (getgmlevel()>= 80) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if (getgmlevel()>= 80) set @Mmenuref[@Mj],@Mi;
- if (getgmlevel()>= 80) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------Special-Warp
- callfunc "QWS_TownStamps";
- callfunc "QWS_DungeonStamps";
- if (@Tstamp == @MaxTstamp)&&(@Dstamp == @MaxDstamp)&&($QW_SP_WarpMap$ != "") {
- set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- set @Mmenuref[@Mj],@Mi;
- set @Mj,@Mj+1;
- }
- set @Mi,@Mi+1;
-//----------------Town-Warp
- if ($QW_TW_OFF == 0) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if ($QW_TW_OFF == 0) set @Mmenuref[@Mj],@Mi;
- if ($QW_TW_OFF == 0) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------Dungeon-Warp
- if ($QW_DW_OFF == 0) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if ($QW_DW_OFF == 0) set @Mmenuref[@Mj],@Mi;
- if ($QW_DW_OFF == 0) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------Why-So-Few-Warps
- set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- set @Mmenuref[@Mj],@Mi;
- set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------No-Unlock
- if (getarg(0) == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if (getarg(0) == 1) set @Mmenuref[@Mj],@Mi;
- if (getarg(0) == 1) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------Healfull
- if ($QW_HF == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if ($QW_HF == 1) set @Mmenuref[@Mj],@Mi;
- if ($QW_HF == 1) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------Healpart
- if ($QW_HP == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if ($QW_HP == 1) set @Mmenuref[@Mj],@Mi;
- if ($QW_HP == 1) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------Storage
- if ($QW_Stor == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if ($QW_Stor == 1) set @Mmenuref[@Mj],@Mi;
- if ($QW_Stor == 1) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------GuildStorage
- if ($QW_GStor == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- if ($QW_GStor == 1) set @Mmenuref[@Mj],@Mi;
- if ($QW_GStor == 1) set @Mj,@Mj+1;
- set @Mi,@Mi+1;
-//----------------Cancel
- set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
- set @Mmenuref[@Mj],@Mi;
- return;
- }
-
-
-
-//======================Town=Menu=Array============================
-
-//----------------Prontera // I do this to find back sections quickly altho almost the same name is a line below it now
-// setarray @pTmenuitems$[@Ti], "Prontera"; // Name of Town shown in Town select Menu
-// setarray @pTprice[@Ti], $QW_BW_PRICE; // warp prices (Basic ($QW_BW_PRICE), Advanced ($QW_AW_PRICE), Overseas $QW_OW_PRICE)
-//
-// setarray @pTmap$[@Ti], "prontera"; // mapfilename of town
-// setarray @pTXcoords[@Ti], 156; // X warp coords
-// setarray @pTYcoords[@Ti], 187; // Y warp coords
-//
-// QWS_Make_Town_Menu XXX;
-//
-// the full wap commands send out by this script for these example would be
-//warp example_01 123 123
-//
-// use the same XXX number as you used when making your own town warpra
-// Read below how
-//
-// example:
-//
-//syntax:
-//mapname,xcoord,ycoord,directionfacing script Name of NPC NPC-ID,{
-//
-// Full example using fake map & coords
-//
-//example_01,213,213,4 script Warpra 112,{
-// callfunc "QWS_Town_Warpra",XXX,"A FAKE TOWN FOR EXAMPLE";
-// close;
-// }
-// use a free number for XXX, last used is 20, for Yuno
-
-function script QWS_Tarray {
- function QWS_Make_Town_Menu;
-
- set @Ti,0; // That's our loop counter.
- set @Tj,0; // That's the menu lines counter.
-//----------------Prontera
- setarray @pTmenuitems$[@Ti], "Prontera";
- setarray @pTprice[@Ti], $QW_BW_PRICE;
-
- setarray @pTmap$[@Ti], "prontera";
- setarray @pTXcoords[@Ti], 156;
- setarray @pTYcoords[@Ti], 187;
-
- QWS_Make_Town_Menu 0;
-//----------------Alberta
- setarray @pTmenuitems$[@Ti], "Alberta";
- setarray @pTprice[@Ti], $QW_BW_PRICE;
-
- setarray @pTmap$[@Ti], "alberta";
- setarray @pTXcoords[@Ti], 27;
- setarray @pTYcoords[@Ti], 236;
-
- QWS_Make_Town_Menu 1;
-//----------------Aldebaran
- setarray @pTmenuitems$[@Ti], "Aldebaran";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "aldebaran";
- setarray @pTXcoords[@Ti], 145;
- setarray @pTYcoords[@Ti], 120;
-
- QWS_Make_Town_Menu 2;
-//----------------Amatsu:
- setarray @pTmenuitems$[@Ti], "Amatsu";
- setarray @pTprice[@Ti], $QW_OW_PRICE;
-
- setarray @pTmap$[@Ti], "amatsu";
- setarray @pTXcoords[@Ti], 197;
- setarray @pTYcoords[@Ti], 86;
-
- QWS_Make_Town_Menu 3;
-//----------------Ayothaya:
- setarray @pTmenuitems$[@Ti], "Ayothaya";
- setarray @pTprice[@Ti], $QW_OW_PRICE;
-
- setarray @pTmap$[@Ti], "ayothaya";
- setarray @pTXcoords[@Ti], 150;
- setarray @pTYcoords[@Ti], 57;
-
- QWS_Make_Town_Menu 4;
-//----------------Comodo:
- setarray @pTmenuitems$[@Ti], "Comodo";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "comodo";
- setarray @pTXcoords[@Ti], 188;
- setarray @pTYcoords[@Ti], 161;
-
- QWS_Make_Town_Menu 5;
-//----------------Einbech:
- setarray @pTmenuitems$[@Ti], "Einbech";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "einbech";
- setarray @pTXcoords[@Ti], 172;
- setarray @pTYcoords[@Ti], 126;
-
- QWS_Make_Town_Menu 6;
-//----------------Einbroch:
- setarray @pTmenuitems$[@Ti], "Einbroch";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "einbroch";
- setarray @pTXcoords[@Ti], 230;
- setarray @pTYcoords[@Ti], 191;
-
- QWS_Make_Town_Menu 7;
-//----------------Geffen:
- setarray @pTmenuitems$[@Ti], "Geffen";
- setarray @pTprice[@Ti], $QW_BW_PRICE;
-
- setarray @pTmap$[@Ti], "geffen";
- setarray @pTXcoords[@Ti], 119;
- setarray @pTYcoords[@Ti], 66;
-
- QWS_Make_Town_Menu 8;
-//----------------Gonryun:
- setarray @pTmenuitems$[@Ti], "Gonryun";
- setarray @pTprice[@Ti], $QW_OW_PRICE;
-
- setarray @pTmap$[@Ti], "gonryun";
- setarray @pTXcoords[@Ti], 150;
- setarray @pTYcoords[@Ti], 130;
-
- QWS_Make_Town_Menu 9;
-//----------------Hugel:
- setarray @pTmenuitems$[@Ti], "Hugel";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "hugel";
- setarray @pTXcoords[@Ti], 95;
- setarray @pTYcoords[@Ti], 121;
-
- QWS_Make_Town_Menu 10;
-//----------------Izlude:
- setarray @pTmenuitems$[@Ti], "Izlude";
- setarray @pTprice[@Ti], $QW_BW_PRICE;
-
- setarray @pTmap$[@Ti], "izlude";
- setarray @pTXcoords[@Ti], 128;
- setarray @pTYcoords[@Ti], 111;
-
- QWS_Make_Town_Menu 11;
-//----------------Jawaii:
- setarray @pTmenuitems$[@Ti], "Jawaii";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "jawaii";
- setarray @pTXcoords[@Ti], 243;
- setarray @pTYcoords[@Ti], 115;
-
- QWS_Make_Town_Menu 12;
-//----------------Lighthalzen:
- setarray @pTmenuitems$[@Ti], "Lighthalzen";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "lighthalzen";
- setarray @pTXcoords[@Ti], 158;
- setarray @pTYcoords[@Ti], 110;
-
- QWS_Make_Town_Menu 13;
-//----------------Louyang:
- setarray @pTmenuitems$[@Ti], "Louyang";
- setarray @pTprice[@Ti], $QW_OW_PRICE;
-
- setarray @pTmap$[@Ti], "louyang";
- setarray @pTXcoords[@Ti], 210;
- setarray @pTYcoords[@Ti], 108;
-
- QWS_Make_Town_Menu 14;
-//----------------Lutie
- setarray @pTmenuitems$[@Ti], "Lutie";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "xmas";
- setarray @pTXcoords[@Ti], 148;
- setarray @pTYcoords[@Ti], 131;
-
- QWS_Make_Town_Menu 15;
-//----------------Morroc:
- setarray @pTmenuitems$[@Ti], "Morroc";
- setarray @pTprice[@Ti], $QW_BW_PRICE;
-
- setarray @pTmap$[@Ti], "morocc";
- setarray @pTXcoords[@Ti], 159;
- setarray @pTYcoords[@Ti], 93;
-
- QWS_Make_Town_Menu 16;
-//----------------Niflheim:
- setarray @pTmenuitems$[@Ti], "Niflheim";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "niflheim";
- setarray @pTXcoords[@Ti], 195;
- setarray @pTYcoords[@Ti], 186;
-
- QWS_Make_Town_Menu 17;
-//----------------Payon:
- setarray @pTmenuitems$[@Ti], "Payon";
- setarray @pTprice[@Ti], $QW_BW_PRICE;
-
- setarray @pTmap$[@Ti], "payon";
- setarray @pTXcoords[@Ti], 152;
- setarray @pTYcoords[@Ti], 75;
-
- QWS_Make_Town_Menu 18;
-//----------------Umbala:
- setarray @pTmenuitems$[@Ti], "Umbala";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "umbala";
- setarray @pTXcoords[@Ti], 130;
- setarray @pTYcoords[@Ti], 130;
-
- QWS_Make_Town_Menu 19;
-//----------------Yuno:
- setarray @pTmenuitems$[@Ti], "Yuno";
- setarray @pTprice[@Ti], $QW_AW_PRICE;
-
- setarray @pTmap$[@Ti], "yuno";
- setarray @pTXcoords[@Ti], 160;
- setarray @pTYcoords[@Ti], 168;
-
- QWS_Make_Town_Menu 20;
-//----------------Cancel
- setarray @pTmenuitems$[@Ti], "Cancel";
- setarray @pTprice[@Ti], 0;
-
- set @Tmenulist$[@Tj],@pTmenuitems$[@Ti];
- set @Tmenuref[@Tj],57005; // 57005='dead' in hex
- return;
-
-
-//----------------Make Town Menu Function
-
-function QWS_Make_Town_Menu {
- set @temptownmenubin,1;
- if (getarg(0) == 0) goto menu_item;
- set @templooptownmenu,0;
- do {
- set @temptownmenubin, @temptownmenubin * 2;
- set @templooptownmenu, @templooptownmenu + 1;
- }while (getarg(0) > @templooptownmenu);
-// check marker and make menu item
-menu_item:
- if ((@temptownmenubin & ##QWS_T_Unlock) != @temptownmenubin) {
- set @Ti,@Ti+1;
- return;
- }
- if (@pTprice[@Ti] != 0)&&($QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
- if (@pTprice[@Ti] == 0)&&($QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
- if (@pTprice[@Ti] != 0)&&($QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]"+" -> "+@pTprice[@Ti];
- if (@pTprice[@Ti] == 0)&&($QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]";
- set @Tmenuref[@Tj],@Ti;
- set @Tj,@Tj+1;
- set @Ti,@Ti+1;
- return;
-
-}
-}
-
-//====================Dungeon=Menu=Arrays==========================
-
-//----------------A FAKE DUNGEON FOR EXAMPLE // I do this to find back sections quickly altho almost the same name is a line below it now
-// setarray @pDmenuitems$[@Di], "Fake Dungeon"; // Name of Dungeon shown in Dungeon select Menu
-// setarray @pDprice[@Di], $QW_BW_PRICE; // warp prices (Basic ($QW_BW_PRICE), Advanced ($QW_AW_PRICE), Overseas $QW_OW_PRICE)
-// setarray @pDfee$[@Di], "$QW_BW_FEE"; // Identifyer for the Dungeon fee caluclation (Basic ("$QW_BW_FEE"), Advanced ("$QW_AW_FEE"), Overseas ("$QW_OW_FEE")) please use setting in relation with option above (Don't forget "")
-// setarray @DLevels[@Di], 2; //number of levels in dungeon (very important if set to high will shift all leveldata!!)
-//
-// setarray @DGat$[@Dref], "example_01", "example_02"; // mapfilename of dungeon level
-// setarray @DLevelName$[@Dref], "Example Level 1", "Example Level 2"; // level name shown in dungeon level select
-// setarray @DXcoords[@Dref], 123, 234; // X warp coords
-// setarray @DYcoords[@Dref], 123, 234;// Y warp coords
-// setarray @DDepth[@Dref], 0, 1; // relative depth to entrance to calculate extra warp fee
-//
-// QWS_Make_Dungeon_Menu XXX
-//
-// the full wap commands send out by this scripts for these examples would be
-// for Example Level 1:
-//warp example_01 123 123
-//
-// for Example Level 2:
-//warp example_02 234 234
-//
-// use the same XXX number as you used when making your own dungeon unlocker (Warpra Helper) inside the dungeon
-// (usually half way near a warp to next level)
-// Read below how
-//
-// example:
-//
-//syntax:
-//mapname,xcoord,ycoord,directionfacing script Name of NPC NPC-ID,{
-//
-// Full example using fake map & coords
-//
-//example_01,213,213,4 script Warpra Helper 112,{
-// callfunc "QWS_Dungeon_Warpra",XXX,"A FAKE DUNGEON FOR EXAMPLE";
-// close;
-// }
-// use a free number for XXX, last used is 28, for Kiel Dungeon
-
-function script QWS_Darray {
- function QWS_Make_Dungeon_Menu;
-
- set @Di,0;
- set @Dj,0;
- set @Dref,0;
-//----------------ABYSS LAKE
- setarray @pDmenuitems$[@Di], "Abyss Lake";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 3;
-
- setarray @DGat$[@Dref], "abyss_01", "abyss_02", "abyss_03";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
- setarray @DXcoords[@Dref], 265, 275, 116;
- setarray @DYcoords[@Dref], 273, 270, 27;
- setarray @DDepth[@Dref], 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 0;
-
-//----------------AMATSU DUNGEON
- setarray @pDmenuitems$[@Di], "Amatsu Dungeon";
- setarray @pDprice[@Di], $QW_OW_PRICE;
- setarray @pDfee$[@Di], "$QW_OW_FEE";
- setarray @DLevels[@Di], 3;
-
- setarray @DGat$[@Dref], "ama_dun01", "ama_dun02", "ama_dun03";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
- setarray @DXcoords[@Dref], 227, 32, 119;
- setarray @DYcoords[@Dref], 10, 43, 15;
- setarray @DDepth[@Dref], 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 1;
-
-//----------------ANT HELL
- setarray @pDmenuitems$[@Di], "Ant Hell Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[2], 2;
-
- setarray @DGat$[@Dref], "anthell01", "anthell02";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2";
- setarray @DXcoords[@Dref], 32, 34;
- setarray @DYcoords[@Dref], 262, 263;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 2;
-
-//----------------AYOTAYA
- setarray @pDmenuitems$[@Di], "Ayotaya Dungeon";
- setarray @pDprice[@Di], $QW_OW_PRICE;
- setarray @pDfee$[@Di], "$QW_OW_FEE";
- setarray @DLevels[3], 2;
-
- setarray @DGat$[@Dref], "ayo_dun01", "ayo_dun02";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2";
- setarray @DXcoords[@Dref], 275, 150;
- setarray @DYcoords[@Dref], 17, 13;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 3;
-
-//----------------BYALAN
- setarray @pDmenuitems$[@Di], "Byalan Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[4], 5;
-
- setarray @DGat$[@Dref], "iz_dun00", "iz_dun01", "iz_dun02", "iz_dun03", "iz_dun04";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5";
- setarray @DXcoords[@Dref], 168, 41, 236, 32, 26;
- setarray @DYcoords[@Dref], 168, 37, 204, 63, 27;
- setarray @DDepth[@Dref], 0, 1, 2, 3, 4;
-
- QWS_Make_Dungeon_Menu 4;
-
-//----------------CLOCK TOWER
- setarray @pDmenuitems$[@Di], "Clock Tower Dungeon";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[5], 8;
-
- setarray @DGat$[@Dref], "c_tower1", "c_tower2", "c_tower3", "c_tower4", "alde_dun01", "alde_dun02", "alde_dun03", "alde_dun04";
- setarray @DLevelName$[@Dref], "Clock Tower Level 1", "Clock Tower Level 2", "Clock Tower Level 3", "Clock Tower Level 4", "Basement 1F", "Basement 2F", "Basement 3F", "Basement 4F";
- setarray @DXcoords[@Dref], 200, 268, 64, 32, 197, 262, 276, 122;
- setarray @DYcoords[@Dref], 163, 26, 148, 63, 25, 41, 53, 125;
- setarray @DDepth[@Dref], 0, 1, 2, 3, 1, 2, 3, 4;
-
- QWS_Make_Dungeon_Menu 5;
-
-//----------------COAL MINE
- setarray @pDmenuitems$[@Di], "Coal Mine Dungeon";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[6], 3;
-
- setarray @DGat$[@Dref], "mjo_dun01", "mjo_dun02", "mjo_dun03";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
- setarray @DXcoords[@Dref], 52, 381, 302;
- setarray @DYcoords[@Dref], 17, 343, 261;
- setarray @DDepth[@Dref], 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 6;
-
-//----------------CULVERT
- setarray @pDmenuitems$[@Di], "Culvert Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[7], 4;
-
- setarray @DGat$[@Dref], "prt_sewb1", "prt_sewb2", "prt_sewb3", "prt_sewb4";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4";
- setarray @DXcoords[@Dref], 132, 19, 180, 100;
- setarray @DYcoords[@Dref], 248, 19, 169, 92;
- setarray @DDepth[@Dref], 0, 1, 2, 3;
-
- QWS_Make_Dungeon_Menu 7;
-
-//----------------EINBECH DUNGEON
- setarray @pDmenuitems$[@Di], "Einbech Dungeon";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[8], 2;
-
- setarray @DGat$[@Dref], "ein_dun01", "ein_dun02";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2";
- setarray @DXcoords[@Dref], 22, 292;
- setarray @DYcoords[@Dref], 14, 290;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 8;
-
-//----------------GEFENIA DUNGEON
- setarray @pDmenuitems$[@Di], "Gefenia Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[9], 4;
-
- setarray @DGat$[@Dref], "gefenia01", "gefenia02", "gefenia03", "gefenia04";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4";
- setarray @DXcoords[@Dref], 59, 201, 264, 33;
- setarray @DYcoords[@Dref], 167, 35, 236, 270;
- setarray @DDepth[@Dref], 0, 1, 2, 3;
-
- QWS_Make_Dungeon_Menu 9;
-
-//----------------GEFFEN DUNGEON
- setarray @pDmenuitems$[@Di], "Geffen Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 4;
-
- setarray @DGat$[@Dref], "gef_dun00", "gef_dun01", "gef_dun02", "gef_dun03";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4";
- setarray @DXcoords[@Dref], 104, 115, 106, 203;
- setarray @DYcoords[@Dref], 100, 236, 132, 200;
- setarray @DDepth[@Dref], 0, 1, 2, 3;
-
- QWS_Make_Dungeon_Menu 10;
-
-//----------------GLAST HEIM
- setarray @pDmenuitems$[@Di], "Glast Heim Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 17;
-
- setarray @DGat$[@Dref], "glast_01", "gl_church", "gl_chyard", "gl_in01", "gl_cas01", "gl_cas02", "gl_knt01", "gl_knt02", "gl_prison", "gl_prison1", "gl_step", "gl_sew01", "gl_sew02", "gl_sew03", "gl_sew04", "gl_dun01", "gl_dun02";
- setarray @DLevelName$[@Dref], "Glast Heim Entrance", "St. Abbey", "Churchyard", "Inside Glast Heim", "Castle 1", "Castle 2", "Chivalry 1", "Chivalry 2", "Prison 1", "Prison 2", "Steps", "Sewers 1", "Sewers 2", "Sewers 3", "Sewers 4", "Lowest Cave 1", "Lowest Cave 2";
- setarray @DXcoords[@Dref], 370, 156, 147, 121, 199, 104, 150, 157, 14, 150, 117, 258, 108, 171, 68, 133, 224;
- setarray @DYcoords[@Dref], 300, 8, 15, 59, 29, 25, 10, 287, 70, 14, 124, 255, 291, 273, 277, 271, 274;
- setarray @DDepth[@Dref], 0, 1, 2, 1, 1, 2, 1, 2, 2, 3, 1, 4, 2, 3, 4, 5, 6;
-
- QWS_Make_Dungeon_Menu 11;
-
-//----------------GONRYUN DUNGEON
- setarray @pDmenuitems$[@Di], "Gonryun Dungeon";
- setarray @pDprice[@Di], $QW_OW_PRICE;
- setarray @pDfee$[@Di], "$QW_OW_FEE";
- setarray @DLevels[@Di], 3;
-
- setarray @DGat$[@Dref], "gon_dun01", "gon_dun02", "gon_dun03";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
- setarray @DXcoords[@Dref], 143, 17, 68;
- setarray @DYcoords[@Dref], 59, 114, 9;
- setarray @DDepth[@Dref], 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 12;
-
-//----------------HIDDEN DUNGEON
- setarray @pDmenuitems$[@Di], "Hidden Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 3;
-
- setarray @DGat$[@Dref], "prt_maze01", "prt_maze02", "prt_maze03";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
- setarray @DXcoords[@Dref], 176, 94, 23;
- setarray @DYcoords[@Dref], 6, 19, 8;
- setarray @DDepth[@Dref], 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 13;
-
-//----------------JUPEROS CAVE
- setarray @pDmenuitems$[@Di], "Juperos Cave";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 2;
-
- setarray @DGat$[@Dref], "juperos_01", "juperos_02";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2";
- setarray @DXcoords[@Dref], 53, 36;
- setarray @DYcoords[@Dref], 247, 60;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 14;
-
-//----------------KIEL DUNGEON
- setarray @pDmenuitems$[@Di], "Kiel Dungeon";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 2;
-
- setarray @DGat$[@Dref], "kh_dun01", "kh_dun02";
- setarray @DLevelName$[@Dref], "1st Floor", "2nd Floor";
- setarray @DXcoords[@Dref], 63, 42;
- setarray @DYcoords[@Dref], 10, 197;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 28;
-
-//----------------LIGHTHALZEN BIO LAB
- setarray @pDmenuitems$[@Di], "Lighthalzen Bio Lab";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 3;
-
- setarray @DGat$[@Dref], "lhz_dun01", "lhz_dun02", "lhz_dun03";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
- setarray @DXcoords[@Dref], 150, 150, 140;
- setarray @DYcoords[@Dref], 287, 18, 137;
- setarray @DDepth[@Dref], 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 15;
-
-//----------------LOUYANG DUNGEON
- setarray @pDmenuitems$[@Di], "Louyang Dungeon";
- setarray @pDprice[@Di], $QW_OW_PRICE;
- setarray @pDfee$[@Di], "$QW_OW_FEE";
- setarray @DLevels[@Di], 2;
-
- setarray @DGat$[@Dref], "lou_dun02", "lou_dun03";
- setarray @DLevelName$[@Dref], "Royal Tomb Level 1", "Royal Tomb Level 2";
- setarray @DXcoords[@Dref], 282, 165;
- setarray @DYcoords[@Dref], 20, 38;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 16;
-
-//----------------MAGMA DUNGEON
- setarray @pDmenuitems$[@Di], "Magma Dungeon";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 2;
-
- setarray @DGat$[@Dref], "mag_dun01", "mag_dun02";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2";
- setarray @DXcoords[@Dref], 126, 47;
- setarray @DYcoords[@Dref], 69, 32;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 17;
-
-//----------------ODIN TEMPLE
- setarray @pDmenuitems$[@Di], "Odin Temple";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 1;
-
- setarray @DGat$[@Dref], "odin_tem01";
- setarray @DLevelName$[@Dref], "Level 1";
- setarray @DXcoords[@Dref], 96;
- setarray @DYcoords[@Dref], 145;
- setarray @DDepth[@Dref], 0;
-
- QWS_Make_Dungeon_Menu 18;
-
-//----------------ORC DUNGEON
- setarray @pDmenuitems$[@Di], "Orc Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 2;
-
- setarray @DGat$[@Dref], "orcsdun01", "orcsdun02";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2";
- setarray @DXcoords[@Dref], 32, 21;
- setarray @DYcoords[@Dref], 169, 185;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 19;
-
-//----------------PAYON DUNGEON
- setarray @pDmenuitems$[@Di], "Payon Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 5;
-
- setarray @DGat$[@Dref], "pay_dun00", "pay_dun01", "pay_dun02", "pay_dun03", "pay_dun04";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5";
- setarray @DXcoords[@Dref], 22, 19, 19, 155, 201;
- setarray @DYcoords[@Dref], 180, 33, 63, 159, 204;
- setarray @DDepth[@Dref], 0, 1, 2, 3, 4;
-
- QWS_Make_Dungeon_Menu 20;
-
-//----------------PYRAMIDS
- setarray @pDmenuitems$[@Di], "Pyramids Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 6;
-
- setarray @DGat$[@Dref], "moc_pryd01", "moc_pryd02", "moc_pryd03", "moc_pryd04", "moc_pryd05", "moc_pryd06";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Basement 1", "Basement 2";
- setarray @DXcoords[@Dref], 192, 10, 100, 181, 94, 192;
- setarray @DYcoords[@Dref], 9, 192, 92, 11, 96, 8;
- setarray @DDepth[@Dref], 0, 1, 2, 3, 1, 2;
-
- QWS_Make_Dungeon_Menu 21;
-
-//----------------SPHINX
- setarray @pDmenuitems$[@Di], "Sphinx Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 5;
-
- setarray @DGat$[@Dref], "in_sphinx1", "in_sphinx2", "in_sphinx3", "in_sphinx4", "in_sphinx5";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5";
- setarray @DXcoords[@Dref], 192, 149, 210, 10, 100;
- setarray @DYcoords[@Dref], 9, 81, 54, 222, 99;
- setarray @DDepth[@Dref], 0, 1, 2, 3, 4;
-
- QWS_Make_Dungeon_Menu 22;
-
-//----------------SUNKEN SHIP
- setarray @pDmenuitems$[@Di], "Sunken Ship Dungeon";
- setarray @pDprice[@Di], $QW_BW_PRICE;
- setarray @pDfee$[@Di], "$QW_BW_FEE";
- setarray @DLevels[@Di], 2;
-
- setarray @DGat$[@Dref], "treasure01", "treasure02";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2";
- setarray @DXcoords[@Dref], 69, 102;
- setarray @DYcoords[@Dref], 24, 27;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 23;
-
-//----------------THANATOS TOWER
- setarray @pDmenuitems$[@Di], "Thanatos Tower";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 13;
-
- setarray @DGat$[@Dref], "tha_t01", "tha_t02", "tha_t03", "tha_t04", "tha_t05", "tha_t06", "tha_t07", "tha_t08", "tha_t09", "tha_t10", "tha_t11", "tha_t12", "thana_boss";
- setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Level 6", "Level 7", "Level 8", "Level 9", "Level 10", "Level 11", "Level 12", "Thanatos Boss";
- setarray @DXcoords[@Dref], 150, 150, 220, 59, 62, 206, 35, 105, 88, 168, 90, 129, 85;
- setarray @DYcoords[@Dref], 35, 136, 158, 143, 11, 8, 166, 44, 145, 138, 36, 83, 76;
- setarray @DDepth[@Dref], 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12;
-
- QWS_Make_Dungeon_Menu 24;
-
-//----------------TOY FACTORY
- setarray @pDmenuitems$[@Di], "Toy Factory Dungeon";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 2;
-
- setarray @DGat$[@Dref], "xmas_dun01", "xmas_dun02";
- setarray @DLevelName$[@Dref], "Factory Warehouse", "Classifying Room";
- setarray @DXcoords[@Dref], 205, 129;
- setarray @DYcoords[@Dref], 16, 133;
- setarray @DDepth[@Dref], 0, 1;
-
- QWS_Make_Dungeon_Menu 25;
-
-//----------------TURTLE ISTLAND
- setarray @pDmenuitems$[@Di], "Turtle Island Dungeon";
- setarray @pDprice[@Di], $QW_AW_PRICE;
- setarray @pDfee$[@Di], "$QW_AW_FEE";
- setarray @DLevels[@Di], 4;
-
- setarray @DGat$[@Dref], "tur_dun01", "tur_dun02", "tur_dun03", "tur_dun04";
- setarray @DLevelName$[@Dref], "Outside", "Level 1", "Level 2", "Level 3";
- setarray @DXcoords[@Dref], 161, 148, 132, 100;
- setarray @DYcoords[@Dref], 34, 256, 190, 192;
- setarray @DDepth[@Dref], 0, 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 26;
-
-//----------------UMBALA
- setarray @pDmenuitems$[@Di], "Umbala Dungeon";
- setarray @pDprice[@Di], $QW_OW_PRICE;
- setarray @pDfee$[@Di], "$QW_OW_FEE";
- setarray @DLevels[@Di], 3;
-
- setarray @DGat$[@Dref], "um_dun01", "um_dun02", "yggdrasil01";
- setarray @DLevelName$[@Dref], "Carpenter's Shop in The Tree", "Passage to a Foreign World", "Hvergelmir's Fountain";
- setarray @DXcoords[@Dref], 205, 48, 40;
- setarray @DYcoords[@Dref], 26, 30, 63;
- setarray @DDepth[@Dref], 0, 1, 2;
-
- QWS_Make_Dungeon_Menu 27;
-
-//----------------Cancel
- setarray @pDmenuitems$[@Di], "Cancel";
- setarray @pDprice[@Di], 0;
-
- set @Dmenulist$[@Dj],@pDmenuitems$[@Di];
- set @Dmenuref[@Dj],57005; // 57005='dead' in hex
- return;
-
-
-//----------------Make Dungeon Menu Function
-
-function QWS_Make_Dungeon_Menu {
- set @tempdungeonmenubin,1;
- if (getarg(0) == 0) goto menu_item;
- set @temploopdungeonmenu,0;
- do {
- set @tempdungeonmenubin, @tempdungeonmenubin * 2;
- set @temploopdungeonmenu, @temploopdungeonmenu + 1;
- }while (getarg(0) > @temploopdungeonmenu);
-// check marker and make menu item
-menu_item:
- if ((@tempdungeonmenubin & ##QWS_D_Unlock) != @tempdungeonmenubin) {
- setarray @DLocRef[@Di], @Dref;
- set @Dref, @Dref+@DLevels[@Di];
- set @Di,@Di+1;
- return;
- }
- if ($QW_MapUserShow == 1) {
- set @tempmapusers,0;
- set @mapusersloop,0;
- do {
- set @tempmapusers,(getmapusers(@DGat$[@Dref+@mapusersloop]) + @tempmapusers);
- set @mapusersloop, (@mapusersloop + 1);
- }while (@DLevels[@Di] > @mapusersloop);
- if (@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" ["+@tempmapusers+"] -> "+@pDprice[@Di];
- if (@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" ["+@tempmapusers+"]";
- set @Dmenuref[@Dj],@Di;
- set @Dj,@Dj+1;
- setarray @DLocRef[@Di], @Dref;
- set @Dref, @Dref+@DLevels[@Di];
- set @Di,@Di+1;
- return;
- }
- if (@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di];
- if (@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di];
- set @Dmenuref[@Dj],@Di;
- set @Dj,@Dj+1;
- setarray @DLocRef[@Di], @Dref;
- set @Dref, @Dref+@DLevels[@Di];
- set @Di,@Di+1;
- return;
-
-}
-}
-
-function script QWS_DLarray {
-//----------------Start building Menu
- set @DWref,@DLocRef[@DwarpMenu]; // That's our reference to the arrays with leveldata.
- set @DWi,0; // That's our loop counter.
- set @DWj,0; // That's the menu lines counter.
- cleararray @DWLmenulist$[0],"",20; // Clearing the array to get rid off ghost items in menu
- do {
- if ($QW_DL == 0)||($QW_DDL >= @DDepth[@DWref]) {
-
- set @warpprice, (@pDprice[@DwarpMenu]+ (getd(@pDfee$[@DwarpMenu])*@DDepth[@DWref]));
-
- if (@warpprice != 0)&&($QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" -> "+@warpprice;
- if (@warpprice == 0)&&($QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref];
- if (@warpprice != 0)&&($QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"] -> "+@warpprice;
- if (@warpprice == 0)&&($QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"]";
- set @DWLmenuref[@DWj],@DWref;
-
- set @DWj,@DWj+1;
- }
- set @DWref, @DWref+1;
- set @DWi,@DWi+1;
- }while (@DWi < @DLevels[@DwarpMenu]);
- set @DWLmenulist$[@DWj], "Exit";
- set @DWLmenuref[@DWj],57005; // 57005='dead' in hex
- return;
- }
-
-
-//=================Backwards=Compatibility=Pre=1.8=================
-
-function script QWS_BackComp {
-// reference where i put the towns: "Prontera"[0], "Alberta"[1], "Aldebaran"[2], "Amatsu"[3], "Ayothaya"[4], "Comodo"[5], "Einbech"[6], "Einbroch"[7], "Geffen"[8], "Gonryun"[9], "Hugel"[10], "Izlude"[11], "Jawaii"[12], "Lighthalzen"[13], "Louyang"[14], "Lutie"[15], "Morroc"[16], "Niflheim"[17], "Payon"[18], "Umbala"[19], "Yuno"[20];
-// reference where i put the dungeons: "Abyss Lake"[0], "Amatsu Dungeon"[1], "Ant Hell Dungeon"[2], "Ayotaya Dungeon"[3], "Byalan Dungeon"[4], "Clock Tower Dungeon"[5], "Coal Mine Dungeon"[6], "Culvert Dungeon"[7], "Einbech Dungeon"[8], "Gefenia Dungeon"[9], "Geffen Dungeon"[10], "Glast Heim Dungeon"[11], "Gonryun Dungeon"[12], "Hidden Dungeon"[13], "Juperos Cave"[14], "Lighthalzen Bio Lab"[15], "Louyang Dungeon"[16], "Magma Dungeon"[17], "Odin Temple"[18], "Orc Dungeon"[19], "Payon Dungeon"[20], "Pyramids Dungeon"[21], "Sphinx Dungeon"[22], "Sunken Ship Dungeon"[23], "Thanatos Tower"[24], "Toy Factory Dungeon"[25], "Turtle Island Dungeon"[26], "Umbala Dungeon"[27], "Kiel Dungeon[28];
-// also clears variables so that the account file variables can be used for something else variable 0 = variable delete on next save
-
-// Towns
- set @towntemp,0;
- if (#prontera != 0) set @towntemp,@towntemp + 1;
- if (#alberta != 0) set @towntemp,@towntemp + 2;
- if (#aldebaran != 0) set @towntemp,@towntemp + 4;
- if (#amatsu != 0) set @towntemp,@towntemp + 8;
- if (#ayotaya != 0) set @towntemp,@towntemp + 16;
- if (#comodo != 0) set @towntemp,@towntemp + 32;
- if (#einbech != 0) set @towntemp,@towntemp + 64;
- if (#einbroch != 0) set @towntemp,@towntemp + 128;
- if (#geffen != 0) set @towntemp,@towntemp + 256;
- if (#gonryun != 0) set @towntemp,@towntemp + 512;
- if (#hugel != 0) set @towntemp,@towntemp + 1024;
- if (#izlude != 0) set @towntemp,@towntemp + 2048;
- if (#jawaii != 0) set @towntemp,@towntemp + 4096;
- if (#lighthalzen != 0) set @towntemp,@towntemp + 8192;
- if (#louyang != 0) set @towntemp,@towntemp + 16384;
- if (#xmas != 0) set @towntemp,@towntemp + 32768;
- if (#morocc != 0) set @towntemp,@towntemp + 65536;
- if (#niflheim != 0) set @towntemp,@towntemp + 131072;
- if (#payon != 0) set @towntemp,@towntemp + 262144;
- if (#umbala != 0) set @towntemp,@towntemp + 524288;
- if (#yuno != 0) set @towntemp,@towntemp + 1048576;
-// Clear Town variables
- set #prontera,0;
- set #alberta,0;
- set #aldebaran,0;
- set #amatsu,0;
- set #ayotaya,0;
- set #comodo,0;
- set #einbech,0;
- set #einbroch,0;
- set #geffen,0;
- set #gonryun,0;
- set #hugel,0;
- set #izlude,0;
- set #jawaii,0;
- set #lighthalzen,0;
- set #louyang,0;
- set #xmas,0;
- set #morocc,0;
- set #niflheim,0;
- set #payon,0;
- set #umbala,0;
- set #yuno,0;
-// set Town warp unlock variable
-set ##QWS_T_Unlock, (##QWS_T_Unlock | @towntemp);
- //because multiple account servers now stack on 1 variable i used a 'or' to stack them
-// Dungeons
- set @dungeontemp,0;
- if (#abyss != 0) set @dungeontemp,@dungeontemp + 1;
- if (#ama_dun != 0) set @dungeontemp,@dungeontemp + 2;
- if (#anthell != 0) set @dungeontemp,@dungeontemp + 4;
- if (#ayotaya_dun != 0) set @dungeontemp,@dungeontemp + 8;
- if (#iz_dun != 0) set @dungeontemp,@dungeontemp + 16;
- if (#c_tower != 0) set @dungeontemp,@dungeontemp + 32;
- if (#mjo_dun != 0) set @dungeontemp,@dungeontemp + 64;
- if (#prt_sewb != 0) set @dungeontemp,@dungeontemp + 128;
- if (#einbech_dun != 0) set @dungeontemp,@dungeontemp + 256;
- if (#gefenia != 0) set @dungeontemp,@dungeontemp + 512;
- if (#gef_dun != 0) set @dungeontemp,@dungeontemp + 1024;
- if (#gl_dun != 0) set @dungeontemp,@dungeontemp + 2048;
- if (#gon_dun != 0) set @dungeontemp,@dungeontemp + 4096;
- if (#hid_dun != 0) set @dungeontemp,@dungeontemp + 8192;
- if (#juperos != 0) set @dungeontemp,@dungeontemp + 16384;
- if (#lighthalzen_dun != 0) set @dungeontemp,@dungeontemp + 32768;
- if (#louyang_dun != 0) set @dungeontemp,@dungeontemp + 65536;
- if (#mag_dun != 0) set @dungeontemp,@dungeontemp + 131072;
- if (#odintemple != 0) set @dungeontemp,@dungeontemp + 262144;
- if (#orcsdun != 0) set @dungeontemp,@dungeontemp + 524288;
- if (#pay_dun != 0) set @dungeontemp,@dungeontemp + 1048576;
- if (#moc_pryd != 0) set @dungeontemp,@dungeontemp + 2097152;
- if (#in_sphinx != 0) set @dungeontemp,@dungeontemp + 4194304;
- if (#treasure != 0) set @dungeontemp,@dungeontemp + 8388608;
- if (#thanatos_tower != 0) set @dungeontemp,@dungeontemp + 16777216;
- if (#xmas_dun != 0) set @dungeontemp,@dungeontemp + 33554432;
- if (#tur_dun != 0) set @dungeontemp,@dungeontemp + 67108864;
- if (#um_dun != 0) set @dungeontemp,@dungeontemp + 134217728;
-// Clear Dungeon variables
- set #abyss,0;
- set #ama_dun,0;
- set #anthell,0;
- set #ayotaya_dun,0;
- set #iz_dun,0;
- set #c_tower,0;
- set #mjo_dun,0;
- set #prt_sewb,0;
- set #einbech_dun,0;
- set #gefenia,0;
- set #gef_dun,0;
- set #gl_dun,0;
- set #gon_dun,0;
- set #hid_dun,0;
- set #juperos,0;
- set #lighthalzen_dun,0;
- set #louyang_dun,0;
- set #mag_dun,0;
- set #odintemple,0;
- set #orcsdun,0;
- set #pay_dun,0;
- set #moc_pryd,0;
- set #in_sphinx,0;
- set #treasure,0;
- set #thanatos_tower,0;
- set #xmas_dun,0;
- set #tur_dun,0;
- set #um_dun,0;
-// set Town warp unlock variable
-set ##QWS_D_Unlock, (##QWS_D_Unlock | @dungeontemp);
-//mark that this character has done the upgrade to 1.8
-set ##QWS_UP,18;
-return;
-}
-
-
-//===================Extra=Variable=Clear=Pre=1.8==================
-function script Extra_Variable_Clear {
-// Clear Town variables
- set #prontera,0;
- set #alberta,0;
- set #aldebaran,0;
- set #amatsu,0;
- set #ayotaya,0;
- set #comodo,0;
- set #einbech,0;
- set #einbroch,0;
- set #geffen,0;
- set #gonryun,0;
- set #hugel,0;
- set #izlude,0;
- set #jawaii,0;
- set #lighthalzen,0;
- set #louyang,0;
- set #xmas,0;
- set #morocc,0;
- set #niflheim,0;
- set #payon,0;
- set #umbala,0;
- set #yuno,0;
-
-// Clear Dungeon variables
- set #abyss,0;
- set #ama_dun,0;
- set #anthell,0;
- set #ayotaya_dun,0;
- set #iz_dun,0;
- set #c_tower,0;
- set #mjo_dun,0;
- set #prt_sewb,0;
- set #einbech_dun,0;
- set #gefenia,0;
- set #gef_dun,0;
- set #gl_dun,0;
- set #gon_dun,0;
- set #hid_dun,0;
- set #juperos,0;
- set #lighthalzen_dun,0;
- set #louyang_dun,0;
- set #mag_dun,0;
- set #odintemple,0;
- set #orcsdun,0;
- set #pay_dun,0;
- set #moc_pryd,0;
- set #in_sphinx,0;
- set #treasure,0;
- set #thanatos_tower,0;
- set #xmas_dun,0;
- set #tur_dun,0;
- set #um_dun,0;
-
-// as the account based variables are limited just run this on every character to save some variables
-set QWS_ExtraVARClear,18;
-return;
-}
-
-//================Dungeon=Warpras=That=Only=Unlock=================
-
-function script QWS_Dungeon_Warpra {
- function QWS_D_getbin;
- function QWS_D_setbin;
-
- if ((QWS_D_getbin(getarg(0)) == 0) && (getarg(1) != "")) {
- mes "[Warpra]";
- mes getarg(1)+" unlocked!";
- QWS_D_setbin(getarg(0));
- return;
- } else if (QWS_D_getbin(getarg(0)) == 1){
- mes "[Warpra]";
- mes "Sorry I can only unlock this location.";
- } else
- debugmes "QWS_Dungeon_Warpra error, improper syntax ?";
- return;
-
-
-function QWS_D_setbin {
- set @tempsetbindata,1;
- if (getarg(0) == 0) goto binset;
- set @temploopsetbin,0;
- do {
- set @tempsetbindata, @tempsetbindata * 2;
- set @temploopsetbin, @temploopsetbin + 1;
- } while (getarg(0) > @temploopsetbin);
-binset:
- set ##QWS_D_Unlock,(##QWS_D_Unlock | @tempsetbindata);
- return;
-}
-
-function QWS_D_getbin {
- set @tempgetbindata,1;
- if (getarg(0) == 0) goto binget;
- set @temploopgetbin,0;
- do {
- set @tempgetbindata, @tempgetbindata * 2;
- set @temploopgetbin, @temploopgetbin + 1;
- } while (getarg(0) > @temploopgetbin);
-binget:
- if ((@tempgetbindata & ##QWS_D_Unlock) == @tempgetbindata) return 1;
- return 0;
-}
-}
-
-//==========================Town=Warpras===========================
-
-function script QWS_Town_Warpra {
- function QWS_T_getbin;
- function QWS_T_setbin;
-
- if ((QWS_T_getbin(getarg(0)) == 0) && (getarg(1) != "")) {
- mes "[Warpra]";
- mes getarg(1)+" unlocked!";
- QWS_T_setbin(getarg(0));
- return;
- } else if (QWS_T_getbin(getarg(0)) == 1){
-callfunc "Q_Warpra",0;
- } else
- debugmes "QWS_Town_Warpra error, improper syntax ?";
- return;
-
-
-function QWS_T_setbin {
- set @tempsetbindata,1;
- if (getarg(0) == 0) goto binset;
- set @temploopsetbin,0;
- do {
- set @tempsetbindata, @tempsetbindata * 2;
- set @temploopsetbin, @temploopsetbin + 1;
- } while (getarg(0) > @temploopsetbin);
-binset:
- set ##QWS_T_Unlock,(##QWS_T_Unlock | @tempsetbindata);
- return;
-}
-
-function QWS_T_getbin {
- set @tempgetbindata,1;
- if (getarg(0) == 0) goto binget;
- set @temploopgetbin,0;
- do {
- set @tempgetbindata, @tempgetbindata * 2;
- set @temploopgetbin, @temploopgetbin + 1;
- } while (getarg(0) > @temploopgetbin);
-binget:
- if ((@tempgetbindata & ##QWS_T_Unlock) == @tempgetbindata) return 1;
- return 0;
-}
-}
-//============================Warpras==============================
-
-alb2trea,73,101,4 script Warpra#1 113,{
- callfunc "Q_Warpra",1;
-}
-ama_fild01,178,325,1 script Warpra#2 113,{
- callfunc "Q_Warpra",1;
-}
-gef_fild10,71,339,4 script Warpra#3 113,{
- callfunc "Q_Warpra",1;
-}
-izlu2dun,104,82,4 script Warpra#4 113,{
- callfunc "Q_Warpra",1;
-}
-mjolnir_02,85,363,4 script Warpra#5 113,{
- callfunc "Q_Warpra",1;
-}
-moc_fild04,207,331,4 script Warpra#6 113,{
- callfunc "Q_Warpra",1;
-}
-moc_fild19,106,97,4 script Warpra#7 113,{
- callfunc "Q_Warpra",1;
-}
-moc_ruins,64,166,4 script Warpra#8 113,{
- callfunc "Q_Warpra",1;
-}
-niflheim,197,192,3 script Warpra#9 113,{
- callfunc "Q_Warpra",1;
-}
-pay_arche,39,135,4 script Warpra#10 113,{
- callfunc "Q_Warpra",1;
-}
-prt_fild05,273,215,4 script Warpra#11 113,{
- callfunc "Q_Warpra",1;
-}
-tur_dun01,148,239,4 script Warpra#12 113,{
- callfunc "Q_Warpra",1;
-}
-valkyrie,48,35,8 script Warpra#13 113,{
- callfunc "Q_Warpra",1;
-}
-yuno_fild03,37,135,4 script Warpra#14 113,{
- callfunc "Q_Warpra",1;
-}
-
-alberta,32,240,4 script Warpra#15 113,{
- callfunc "QWS_Town_Warpra",1,"Alberta Town";
- close;
-}
-aldebaran,146,118,4 script Warpra#16 113,{
- callfunc "QWS_Town_Warpra",2,"Aldebaran Town";
- close;
-}
-ayothaya,216,171,5 script Warpra#17 113,{
- callfunc "QWS_Town_Warpra",4,"Ayotaya Town";
- close;
-}
-amatsu,193,81,1 script Warpra#18 113,{
- callfunc "QWS_Town_Warpra",3,"Amatsu Town";
- close;
-}
-comodo,195,158,4 script Warpra#19 113,{
- callfunc "QWS_Town_Warpra",5,"Comodo Town";
- close;
-}
-einbroch,229,196,5 script Warpra#20 113,{
- callfunc "QWS_Town_Warpra",7,"Einbroch Town";
- close;
-}
-einbech,173,131,5 script Warpra#21 113,{
- callfunc "QWS_Town_Warpra",6,"Einbech Town";
- close;
-}
-geffen,116,66,4 script Warpra#22 113,{
- callfunc "QWS_Town_Warpra",8,"Geffen Town";
- close;
-}
-gonryun,152,130,4 script Warpra#23 113,{
- callfunc "QWS_Town_Warpra",9,"Gonryun Town";
- close;
-}
-hugel,90,127,5 script Warpra#24 113,{
- callfunc "QWS_Town_Warpra",10,"Hugel Town";
- close;
-}
-jawaii,107,182,5 script Warpra#25 113,{
- callfunc "QWS_Town_Warpra",12,"Jawaii Town";
- close;
-}
-izlude,132,116,4 script Warpra#26 113,{
- callfunc "QWS_Town_Warpra",11,"Izlude Town";
- close;
-}
-lighthalzen,153,100,5 script Warpra#27 113,{
- callfunc "QWS_Town_Warpra",13,"Lighthalzen Town";
- close;
-}
-louyang,211,106,4 script Warpra#28 113,{
- callfunc "QWS_Town_Warpra",14,"Louyang Town";
- close;
-}
-morocc,157,95,4 script Warpra#29 113,{
- callfunc "QWS_Town_Warpra",16,"Morroc Town";
- close;
-}
-nif_fild01,319,77,1 script Warpra#30 113,{
- callfunc "QWS_Town_Warpra",17,"Niflheim Town";
- close;
-}
-payon,183,110,4 script Warpra#31 113,{
- callfunc "QWS_Town_Warpra",18,"Payon Town";
- close;
-}
-prontera,147,172,5 script Warpra#32 113,{
- callfunc "QWS_Town_Warpra",0,"Prontera Town";
- close;
-}
-umbala,133,130,4 script Warpra#33 113,{
- callfunc "QWS_Town_Warpra",19,"Umbala Town";
- close;
-}
-xmas,151,136,4 script Warpra#34 113,{
- callfunc "QWS_Town_Warpra",15,"Lutie Town";
- close;
-}
-yuno,138,162,4 script Warpra#35 113,{
- callfunc "QWS_Town_Warpra",20,"Yuno Town";
- close;
-}
-
-abyss_02,274,266,1 script Warpra#36 113,{
- callfunc "QWS_Dungeon_Warpra",0,"Abyss Lake";
- close;
-}
-
-ama_dun02,192,118,5 script Warpra Helper#1 112,{
- callfunc "QWS_Dungeon_Warpra",1,"Amatsu Dungeon";
- close;
-}
-
-anthell02,170,165,3 script Warpra Helper#2 112,{
- callfunc "QWS_Dungeon_Warpra",2,"Ant Hell Dungeon";
- close;
-}
-
-ayo_dun02,258,193,5 script Warpra Helper#3 112,{
- callfunc "QWS_Dungeon_Warpra",3,"Ayotaya Dungeon";
- close;
-}
-
-ein_dun02,292,282,1 script Warpra Helper#4 112,{
- callfunc "QWS_Dungeon_Warpra",8,"Einbech Dungeon";
- close;
-}
-
-iz_dun03,202,47,2 script Warpra Helper#5 112,{
- callfunc "QWS_Dungeon_Warpra",4,"Byalan Dungeon";
- close;
-}
-
-c_tower3,129,106,4 script Warpra Helper#6 112,{
- callfunc "QWS_Dungeon_Warpra",5,"Clock Tower Dungeon";
- close;
-}
-
-mjo_dun02,39,25,4 script Warpra Helper#7 112,{
- callfunc "QWS_Dungeon_Warpra",6,"Coal Mine Dungeon";
- close;
-}
-
-prt_sewb2,176,30,3 script Warpra Helper#8 112,{
- callfunc "QWS_Dungeon_Warpra",7,"Culvert Dungeon";
- close;
-}
-
-gefenia03,137,34,0 script Warpra Helper#9 112,{
- callfunc "QWS_Dungeon_Warpra",9,"Gefenia Dungeon";
- close;
-}
-
-gef_dun02,218,61,2 script Warpra Helper#10 112,{
- callfunc "QWS_Dungeon_Warpra",10,"Gefen Dungeon";
- close;
-}
-
-glast_01,371,308,3 script Warpra Helper#11 112,{
- callfunc "QWS_Dungeon_Warpra",11,"Glast Heim Dungeon";
- close;
-}
-
-gon_dun01,167,273,4 script Warpra Helper#12 112,{
- callfunc "QWS_Dungeon_Warpra",12,"Gonryun Dungeon";
- close;
-}
-
-juperos_02,127,154,5 script Warpra Helper#13 112,{
- callfunc "QWS_Dungeon_Warpra",14,"Juperos Cave";
- close;
-}
-
-kh_dun01,14,224,3 script Warpra Helper#14 112,{
- callfunc "QWS_Dungeon_Warpra",28,"Kiel Dungeon";
- close;
-}
-
-lhz_dun02,156,151,5 script Warpra Helper#15 112,{
- callfunc "QWS_Dungeon_Warpra",15,"Lighthalzen Bio Lab";
- close;
-}
-
-lou_dun02,168,264,4 script Warpra Helper#16 112,{
- callfunc "QWS_Dungeon_Warpra",16,"Louyang Dungeon";
- close;
-}
-
-mag_dun02,46,41,3 script Warpra Helper#17 112,{
- callfunc "QWS_Dungeon_Warpra",17,"Magma Dungeon";
- close;
-}
-
-odin_tem01,115,148,3 script Warpra Helper#18 112,{
- callfunc "QWS_Dungeon_Warpra",18,"Odin Temple";
- close;
-}
-
-orcsdun01,185,11,3 script Warpra Helper#19 112,{
- callfunc "QWS_Dungeon_Warpra",19,"Orc Dungeon";
- close;
-}
-
-pay_dun03,162,143,3 script Warpra Helper#20 112,{
- callfunc "QWS_Dungeon_Warpra",20,"Payon Dungeon";
- close;
-}
-
-moc_pryd02,101,95,3 script Warpra Helper#21 112,{
- callfunc "QWS_Dungeon_Warpra",21,"Pyramides Dungeon";
- close;
-}
-
-in_sphinx2,274,268,1 script Warpra Helper#22 112,{
- callfunc "QWS_Dungeon_Warpra",22,"Sphinx Dungeon";
- close;
-}
-
-tha_t07,111,162,3 script Warpra Helper#23 112,{
- callfunc "QWS_Dungeon_Warpra",24,"Thanatos Tower";
- close;
-}
-
-treasure02,104,40,3 script Warpra Helper#24 112,{
- callfunc "QWS_Dungeon_Warpra",23,"Sunken Ship Dungeon";
- close;
-}
-
-xmas_dun02,124,131,3 script Warpra Helper#25 112,{
- callfunc "QWS_Dungeon_Warpra",25,"Toy Factory Dungeon";
- close;
-}
-
-um_dun02,44,28,3 script Warpra Helper#26 112,{
- callfunc "QWS_Dungeon_Warpra",27,"Umbala Dungeon";
- close;
-}
-
-tur_dun02,162,23,3 script Warpra Helper#27 112,{
- callfunc "QWS_Dungeon_Warpra",26,"Turtle Island Dungeon";
- close;
-}
-prt_maze02,102,69,4 script Warpra Helper#28 112,{
- callfunc "QWS_Dungeon_Warpra",13,"Hidden Dungeon";
- close;
-}
+//===== rAthena Script ============================================ +//= Quest Warper Script +//===== By: ======================================================= +//= DZeroX, Darkchild, Neouni +//===== Current Version: ========================================== +//= 2.2 +//===== Compatible With: ========================================== +//= rAthena SVN +//===== Description: ============================================== +//= Warper that works only after locations are unlocked +//===== Additional Comments: ====================================== +//= 1.0 - NPCs created +//= 1.1 - Add Dungeons by sturm +//= 1.2 - Add All char in account unlocked by ace_killer +//= 1.3 - Add new 7 towns and 7 dungeons by escoteiro +// - Correct bug jawaii town by escoteiro +// - Remove some excessive warpras by escoteiro +//= 1.4 - Rewrite of the Warpa system [Neouni] +// - Corrected some bugs caused by autoconverting the old script +//= 1.4a - Rewrite of menu to be custom for each player [Neouni] +// - Dungeon listing rewrite +// - Town listing rewrite +// - GameMaster can Customise Main menu +//= 1.4b - Pricing round [Neouni] +// - GM menu added for pricing +// - Town Warp pricing tags added +// - Dungeon Warp pricing tags added +//= 1.5 - storage functions pricing [Neouni] +// - storage pricing added +// - kafra points setting added +// - kafra storage code security added +// - Healing scripts pricing added +// - Heal Part script added +//= 1.6 - Dungeon warp [Neouni] (beta only) +// - added option to add a extra fee for going down deeper into dungeon +// partly by rebuilding the dungeon warping into variable menu's +//= 1.6a - alot of fixes for beta release [Neouni] (public release) +// - fixed syntax problems +// - fixed missing pyramid gats in @DGat$ array +// - removed the culver level 5 that didn't exist +// and caused quite alot of problems (i didn't check while converting) +//-1.7 - Readability of Dungeon menu building increased [Neouni] +// - Thanatos Tower & Louyang Dungeon added +//-1.8 - changed around unlock variables [Neouni] +// - Moved warp variables to mark what you have unlocked to an binary array in login based permanent variable +// (warp variables are saved in login database, so all charservers have these unlocked) +// - Town Warp unlock array max 21/(unknown max) items used instead of max account #variables 32 ! +// - Dungeon Warp unlock array 28/(unknown max) items used instead of max account #variables 32 ! +// - (max login ##variables = 16, i used 3) +// - old variables are cleared on next save +// - Extra Variable clear added for every character, just in case (request by Terces) +//-1.8a - Show ammount of users on map [Neouni] +// - Default = off, enable in GM menu +// - Requested by escoteiro +//-1.8b - Small typo fixed in stampcard script [Neouni] +// - Reported by escoteiro +//-1.9 - Making it more edit friendly [Neouni] +// - Made Dungeon warp arrays more readable & editable (QWS_Darray) +// - Made town warp arrays more readable & editable (QWS_Tarray) +//-2.0 - Special Warp menu added [Neouni] +// - when all towns and dungeons are collected a new option on the main menu will show +// - it will only show when you setup the mapname of the warp ! +// - requested by escoteiro +// - several bugs fixed +//-2.0a - Dungeon Level Limit & Split dungeon fees +// - Limits dungeon based on Depth, access special setup menu thru GM-Menu +// - Dungeon fees split up based on Basic , Advanced & Overseas +// - Old Dungeon fee system removed, all dungeon fees now set to 0 +//-2.0b +// - Special warpname menu option name bug fixed +//-2.1 Updated names to fall within retrictions. [L0ne_W0lf] +//-2.2 #kafra_code is now stored as is. [brianluau] +//================================================================= + +//========================Function=&=Script======================== + + +function script Q_Warpra { +// Quick hack for backwards compatibility pre 1.8 +if (##QWS_UP < 18) callfunc "QWS_BackComp"; +// Extra clear variables because marker is saved on all char servers and variables can be on multiple servers +if (QWS_ExtraVARClear < 18) callfunc "Extra_Variable_Clear"; + + mes "[Warpra]"; + mes "Hello,"; + mes "I can warp you to any town or dungeon, but you need to unlock them first."; + mes "To unlock them, you have to visit us."; + mes "What do you need?"; + + if(getarg(0) == 0) callfunc "QWS_MMarray",0; + if(getarg(0) == 1) callfunc "QWS_MMarray",1; + + set @MMenu,select(@Mmenulist$[0],@Mmenulist$[1],@Mmenulist$[2],@Mmenulist$[3],@Mmenulist$[4],@Mmenulist$[5],@Mmenulist$[6],@Mmenulist$[7],@Mmenulist$[8],@Mmenulist$[9],@Mmenulist$[10],@Mmenulist$[11]); + + switch(@Mmenuref[@MMenu-1]+1){ + case 1: + goto GM_Menu; + case 2: + warp $QW_SP_WarpMap$, $QW_SP_WarpX, $QW_SP_WarpY; + close2; + debugmes "Please check your special warp menu settings on the Warpra"; + end; + case 3: + goto L_town; + case 4: + goto L_dungeon; + case 5: + goto L_FewWarps; + case 6: + goto L_NoUnlock; + case 7: + goto L_heal_Full; + case 8: + goto L_heal_Part; + case 9: + goto L_Storage; + case 10: + goto L_GStorage; + case 11: + goto L_end; + default: + goto L_end; +} + +//=====================GM-Menu=Functions=========================== + +GM_Menu: +next; +//----------------Town-Warp + if ($QW_TW_OFF == 0) mes "Town warping = ^00FF00 On ^000000"; + if ($QW_TW_OFF == 1) mes "Town warping = ^FF0000 Off ^000000"; +//----------------Dungeon-Warp + if ($QW_DW_OFF == 0) mes "Dungeon warping = ^00FF00 On ^000000"; + if ($QW_DW_OFF == 1) mes "Dungeon warping = ^FF0000 Off ^000000"; +//----------------Dungeon-Depth-Limit + if ($QW_DL == 1) mes "Dungeon Depth limit is ^00FF00 On ^000000"; + if ($QW_DL == 0) mes "Dungeon Depth limit is ^FF0000 Off ^000000"; + mes "If on Dungeon Depth limit is set to ^0000FF"+$QW_DDL+"^000000"; +//----------------ShowMapUsers + if ($QW_MapUserShow == 1) mes "Show Map Users = ^00FF00 On ^000000"; + if ($QW_MapUserShow == 0) mes "Show Map Users = ^FF0000 Off ^000000"; +//----------------Healfull + if ($QW_HF == 1) mes "Healing full = ^00FF00 On ^000000"; +//----------------Healpart + if ($QW_HP == 1) mes "Healing partly = ^00FF00 On ^000000"; + if (($QW_HF == 0)&&($QW_HP == 0)) mes "Healing = ^FF0000 Off ^000000"; +//----------------Storage + if ($QW_Stor == 1) mes "Storage = ^00FF00 On ^000000"; + if ($QW_Stor == 0) mes "Storage = ^FF0000 Off ^000000"; +//----------------GuildStorage + if ($QW_GStor == 1) mes "Guild Storage = ^00FF00 On ^000000"; + if ($QW_GStor == 0) mes "Guild Storage = ^FF0000 Off ^000000"; +//----------------KafraPoints + if ($QW_KPoint == 1) mes "Kafra points collect = ^00FF00 On ^000000"; + if ($QW_KPoint == 0) mes "Kafra points collect = ^FF0000 Off ^000000"; +//----------------GMmenu + switch(select("Town Warping","Dungeon Warping","Dungeon Level Limit","Show Map Users","Healing full","Healing partly","Storage","Guild Storage","Kafra points collect","Set Prices","Special Warp","Exit")) { + +// Using callsub and a small check to not make 1 part of the script set it on and the other turning it off again + +case 1: + if ($QW_TW_OFF == 0) { + set $QW_TW_OFF,1; + goto GM_Menu; + } else + set $QW_TW_OFF,0; + goto GM_Menu; +case 2: + if ($QW_DW_OFF == 0) { + set $QW_DW_OFF,1; + goto GM_Menu; + } else + set $QW_DW_OFF,0; + goto GM_Menu; +case 3: + goto DungeonLevelLimit; +case 4: + if ($QW_MapUserShow == 0) { + set $QW_MapUserShow,1; + goto GM_Menu; + } else + set $QW_MapUserShow,0; + goto GM_Menu; +case 5: + if ($QW_HF == 0) { + set $QW_HF,1; + set $QW_HP,0; + goto GM_Menu; + } else + set $QW_HF,0; + goto GM_Menu; +case 6: + if ($QW_HP == 0) { + set $QW_HP,1; + set $QW_HF,0; + goto GM_Menu; + } else + set $QW_HP,0; + goto GM_Menu; +case 7: + if ($QW_Stor == 0) { + set $QW_Stor,1; + goto GM_Menu; + } else + set $QW_Stor,0; + goto GM_Menu; +case 8: + if ($QW_GStor == 0) { + set $QW_GStor,1; + goto GM_Menu; + } else + set $QW_GStor,0; + goto GM_Menu; +case 9: + if ($QW_KPoint == 0) { + set $QW_KPoint,1; + goto GM_Menu; + } else + set $QW_KPoint,0; + goto GM_Menu; +case 10: + goto Setprice; +case 11: + goto SpecialWarpMenu; +default: + close; + end; +} + + +//======================GM-Menu=Pricing============================ + +Setprice: + if ($QW_DW_FEE != 0) set $QW_DW_FEE,0; + next; + mes "Scroll thru the list to see all the options"; +//----------------Warp-Basic-Price + if ($QW_BW_PRICE != 0) mes "Basic - Warps are = ^00FF00 "+$QW_BW_PRICE+" ^000000"; + if ($QW_BW_PRICE == 0) mes "Basic - Warps are = ^FF0000 Free ^000000"; +//----------------Warp-Advanced-Price + if ($QW_AW_PRICE != 0) mes "Advanced - Warps are = ^00FF00 "+$QW_AW_PRICE+" ^000000"; + if ($QW_AW_PRICE == 0) mes "Advanced - Warps are = ^FF0000 Free ^000000"; +//----------------Warp-Oversea-Price + if ($QW_OW_PRICE != 0) mes "Overseas - Warps are = ^00FF00 "+$QW_OW_PRICE+" ^000000"; + if ($QW_OW_PRICE == 0) mes "Overseas - Warps are = ^FF0000 Free ^000000"; +//----------------Basic-Dungeon-Level-Warp-Fee + if ($QW_BW_FEE != 0) mes "Basic Dungeon level warp fee = ^00FF00 "+$QW_BW_FEE+" ^000000 zeny per level"; + if ($QW_BW_FEE == 0) mes "Basic Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level"; +//----------------Advanced-Dungeon-Level-Warp-Fee + if ($QW_AW_FEE != 0) mes "Advanced Dungeon level warp fee = ^00FF00 "+$QW_AW_FEE+" ^000000 zeny per level"; + if ($QW_AW_FEE == 0) mes "Advanced Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level"; +//----------------Overseas-Dungeon-Level-Warp-Fee + if ($QW_OW_FEE != 0) mes "Overseas Dungeon level warp fee = ^00FF00 "+$QW_OW_FEE+" ^000000 zeny per level"; + if ($QW_OW_FEE == 0) mes "Overseas Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level"; +//----------------Heal-Full + if ($QW_HF_PRICE != 0) mes "Full Healing = ^00FF00 "+$QW_HF_PRICE+" ^000000"; + if ($QW_HF_PRICE == 0) mes "Full Healing = ^FF0000 Free ^000000"; +//----------------Heal-Part + if ($QW_HP_H_PRICE != 0) mes "^FF0000HP ^000000Part Healing = ^00FF00 "+$QW_HP_H_PRICE+" ^000000 a point"; + if ($QW_HP_H_PRICE == 0) mes "^FF0000HP ^000000Part Healing = ^FF0000 Free ^000000"; + if ($QW_HP_S_PRICE != 0) mes "^0000FFSP ^000000Part Healing = ^00FF00 "+$QW_HP_S_PRICE+" ^000000 a point"; + if ($QW_HP_S_PRICE == 0) mes "^0000FFSP ^000000Part Healing = ^FF0000 Free ^000000"; +//----------------Storage + if (($QW_S_PRICE != 0)&&($QW_S_PRICE != 60)) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000"; + if ($QW_S_PRICE == 0) mes "Storage = ^FF0000 Free ^000000"; + if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000"; +//----------------Guild-Storage + if ($QW_GS_PRICE != 0) mes "Guild Storage = ^00FF00 "+$QW_GS_PRICE+" ^000000"; + if ($QW_GS_PRICE == 0) mes "Guild Storage = ^FF0000 Free ^000000"; + + switch(select("Basic - Warps","Advanced - Warps","Overseas - Warps","Basic Dungeon warp fee","Advanced Dungeon warp fee","Overseas Dungeon warp fee","Full Healing","Part Healing","Storage","Guild Storage","Back","Exit")) { + +case 1: + next; + if ($QW_BW_PRICE != 0) mes "Basic - Warps are = ^00FF00 "+$QW_BW_PRICE+" ^000000"; + if ($QW_BW_PRICE == 0) mes "Basic - Warps are = ^FF0000 Free ^000000"; + mes "Basic - Warps are starter towns and related dungeons"; + input $QW_BW_PRICE; + goto Setprice; + +case 2: + next; + if ($QW_AW_PRICE != 0) mes "Advanced - Warps are = ^00FF00 "+$QW_AW_PRICE+" ^000000"; + if ($QW_AW_PRICE == 0) mes "Advanced - Warps are = ^FF0000 Free ^000000"; + mes "Advanced - Warps are towns and dungeons on the same island but not close to any starter town"; + input $QW_AW_PRICE; + goto Setprice; + +case 3: + next; + if ($QW_OW_PRICE != 0) mes "Overseas - Warps are = ^00FF00 "+$QW_OW_PRICE+" ^000000"; + if ($QW_OW_PRICE == 0) mes "Overseas - Warps are = ^FF0000 Free ^000000"; + mes "Overseas - Warps are towns and dungeons overseas reachable by boat from alberta"; + input $QW_OW_PRICE; + goto Setprice; + +case 4: + next; + if ($QW_BW_FEE != 0) mes "Basic Dungeon level warp fee = ^00FF00 "+$QW_BW_FEE+" ^000000 zeny per level"; + if ($QW_BW_FEE == 0) mes "Basic Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level"; + mes "Basic - Warps are starter town related dungeons"; + mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee"; + mes "These costs are on top of the regular Warp costs"; + input $QW_BW_FEE; + goto Setprice; + +case 5: + next; + if ($QW_AW_FEE != 0) mes "Advanced Dungeon level warp fee = ^00FF00 "+$QW_AW_FEE+" ^000000 zeny per level"; + if ($QW_AW_FEE == 0) mes "Advanced Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level"; + mes "Advanced - Warps are dungeons not close to any starter town"; + mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee"; + mes "These costs are on top of the regular Warp costs"; + input $QW_AW_FEE; + goto Setprice; + +case 6: + next; + if ($QW_OW_FEE != 0) mes "Overseas Dungeon level warp fee = ^00FF00 "+$QW_OW_FEE+" ^000000 zeny per level"; + if ($QW_OW_FEE == 0) mes "Overseas Dungeon level warp fee = ^FF0000 NO ^000000 zeny per level"; + mes "Overseas - Warps are dungeons related to towns overseas reachable by boat from alberta"; + mes "Dungeon warp fees are calculated by maps away from entrance of the dungeon times Dungeon warp fee"; + mes "These costs are on top of the regular Warp costs"; + input $QW_OW_FEE; + goto Setprice; + +case 7: + next; + if ($QW_HF_PRICE != 0) mes "Full Healing = ^00FF00 "+$QW_HF_PRICE+" ^000000"; + if ($QW_HF_PRICE == 0) mes "Full Healing = ^FF0000 Free ^000000"; + mes "Instant full healing 1 price"; + input $QW_HF_PRICE; + goto Setprice; + +case 8: + next; + if ($QW_HP_H_PRICE != 0) mes "^FF0000HP ^000000Part Healing = ^00FF00 "+$QW_HP_H_PRICE+" ^000000 a point"; + if ($QW_HP_H_PRICE == 0) mes "^FF0000HP ^000000Part Healing = ^FF0000 Free ^000000"; + if ($QW_HP_S_PRICE != 0) mes "^0000FFSP ^000000Part Healing = ^00FF00 "+$QW_HP_S_PRICE+" ^000000 a point"; + if ($QW_HP_S_PRICE == 0) mes "^0000FFSP ^000000Part Healing = ^FF0000 Free ^000000"; + mes "Healing price per 1 HP"; + mes "Healing price per 1 SP"; + mes "2 inputs, first HP then SP"; + input $QW_HP_H_PRICE; + input $QW_HP_S_PRICE; + goto Setprice; + +case 9: + next; + if (($QW_S_PRICE != 0)&&($QW_S_PRICE != 60)) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000"; + if ($QW_S_PRICE == 0) mes "Storage = ^FF0000 Free ^000000"; + if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000"; + mes "Storage cost, if set to 60 Kafra pricing will be handled"; + input $QW_S_PRICE; + goto Setprice; + +case 10: + next; + if ($QW_GS_PRICE != 0) mes "Guild Storage = ^00FF00 "+$QW_GS_PRICE+" ^000000"; + if ($QW_GS_PRICE == 0) mes "Guild Storage = ^FF0000 Free ^000000"; + mes "Guild Storage, free on Guild Kafras"; + input $QW_GS_PRICE; + goto Setprice; +case 11: + goto GM_Menu; +default: + close; + end; +} + +//======================Special=Warp=Menu========================== + +SpecialWarpMenu: + if ($QW_SP_Warpname$ == "") set $QW_SP_Warpname$,"Special Warp"; + next; + mes "Scroll down to see all the information"; + mes "The Special warp menu option will show in the main menu when all towns & dungeons are unlocked"; + mes "And when the map for special warping has been set"; + mes "menu option name set to ^0000FF"+$QW_SP_Warpname$+"^000000"; + if ($QW_SP_WarpMap$ == "") mes "map is currently ^FF0000not^000000 set, and Special warp menu is off"; + if ($QW_SP_WarpMap$ != "") mes "map is currently set to ^0000FF"+$QW_SP_WarpMap$+"^000000 and Special Warp menu is on"; + mes "coords are set to ^0000FF"+$QW_SP_WarpX+","+$QW_SP_WarpY+"^000000"; + switch(select("Set Special Warp name to show in menu", "Set WarpMap","Set Coords","Go Back to GM_Menu","Exit")){ + +case 1: + next; + mes "set the name to show in the menu as option"; + input $QW_SP_Warpname$; + goto SpecialWarpMenu; +case 2: + next; + mes "set the map in the ^0000FFmapname^000000 format"; + mes "when this warpmap is set the option for players will show once they meet the requirments"; + mes "to disable Special Warp Menu option clear this !"; + input $QW_SP_WarpMap$; + goto SpecialWarpMenu; +case 3: + next; + mes "First input = Xcoord"; + mes "Second input = Ycoord"; + input $QW_SP_WarpX; + input $QW_SP_WarpY; + goto SpecialWarpMenu; +case 4: + goto GM_Menu; +default: + close; + end; +} + +//======================Dungeon=Level=Limit======================== +DungeonLevelLimit: + next; + if ($QW_DL == 1) mes "Dungeon Depth limit is ^00FF00 On ^000000"; + if ($QW_DL == 0) mes "Dungeon Depth limit is ^FF0000 Off ^000000"; + mes "If^00FF00 On ^000000Dungeon Depth limit is set to ^0000FF"+$QW_DDL+"^000000"; + + switch(select("Toggle Dungeon Depth Limit", "Set Dungeon Depth Limit","Go Back to GM_Menu","Exit")){ + +case 1: + if ($QW_DL == 0) { + set $QW_DL,1; + goto DungeonLevelLimit; + } else + set $QW_DL,0; + goto DungeonLevelLimit; +case 2: + next; + mes "set limit of Dungeon Depth 0 = entrance"; + mes "Depth 1 is a map connected to 0 and so on"; + mes "Shortest Route to map counts as depth"; + input $QW_DDL; + goto DungeonLevelLimit; +case 3: + goto GM_Menu; +default: + close; + end; +} + +//===========================Towns================================= + +L_town: + callfunc "QWS_Tarray"; + +// Expected maximum is set to 25 items, if you add more options add more ",@Tmenulist$[xx]" + + set @TWMenu,select(@Tmenulist$[0],@Tmenulist$[1],@Tmenulist$[2],@Tmenulist$[3],@Tmenulist$[4],@Tmenulist$[5],@Tmenulist$[6],@Tmenulist$[7],@Tmenulist$[8],@Tmenulist$[9],@Tmenulist$[10],@Tmenulist$[11],@Tmenulist$[12],@Tmenulist$[13],@Tmenulist$[14],@Tmenulist$[15],@Tmenulist$[16],@Tmenulist$[17],@Tmenulist$[18],@Tmenulist$[19],@Tmenulist$[20],@Tmenulist$[21],@Tmenulist$[22],@Tmenulist$[23],@Tmenulist$[24]); + + if (@Tmenuref[@TWMenu-1] == 57005) goto L_end; // 57005='dead' in hex + + if(Zeny<@pTprice[@Tmenuref[@TWMenu-1]]) callsub L_Short_on_zeny,0; + + set Zeny, Zeny-@pTprice[@Tmenuref[@TWMenu-1]]; + if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@pTprice[@Tmenuref[@TWMenu-1]]/16); + warp @pTmap$[@Tmenuref[@TWMenu-1]],@pTXcoords[@Tmenuref[@TWMenu-1]],@pTYcoords[@Tmenuref[@TWMenu-1]]; + close2; // this part safegaurds against errors/typos + set Zeny, Zeny+@pTprice[@Tmenuref[@TWMenu-1]]; + end; + +//=========================Dungeons================================ + +L_dungeon: + callfunc "QWS_Darray"; + +// Expected maximum is set to 35 items, if you add more options add more ",@Dmenulist$[xx]" + + set @DWMenu,select(@Dmenulist$[0],@Dmenulist$[1],@Dmenulist$[2],@Dmenulist$[3],@Dmenulist$[4],@Dmenulist$[5],@Dmenulist$[6],@Dmenulist$[7],@Dmenulist$[8],@Dmenulist$[9],@Dmenulist$[10],@Dmenulist$[11],@Dmenulist$[12],@Dmenulist$[13],@Dmenulist$[14],@Dmenulist$[15],@Dmenulist$[16],@Dmenulist$[17],@Dmenulist$[18],@Dmenulist$[19],@Dmenulist$[20],@Dmenulist$[21],@Dmenulist$[22],@Dmenulist$[23],@Dmenulist$[24],@Dmenulist$[25],@Dmenulist$[26],@Dmenulist$[27],@Dmenulist$[28],@Dmenulist$[29],@Dmenulist$[30],@Dmenulist$[31],@Dmenulist$[32],@Dmenulist$[33],@Dmenulist$[34]); + + if (@Dmenuref[@DWMenu-1] == 57005) goto L_end; // 57005='dead' in hex + set @DwarpMenu, (@Dmenuref[@DWMenu-1]); + callfunc "QWS_DLarray"; + + next; + mes "[Warpra]"; + mes "Please select where you want to go"; + +// Expected maximum is set to 18 items, if you have dungeons with more levels add more ",@DWLmenulist$[xx]" + set @DWLMenu,select(@DWLmenulist$[0], @DWLmenulist$[1], @DWLmenulist$[2], @DWLmenulist$[3], @DWLmenulist$[4], @DWLmenulist$[5], @DWLmenulist$[6], @DWLmenulist$[7], @DWLmenulist$[8], @DWLmenulist$[9], @DWLmenulist$[10], @DWLmenulist$[11], @DWLmenulist$[12], @DWLmenulist$[13], @DWLmenulist$[14], @DWLmenulist$[15], @DWLmenulist$[16], @DWLmenulist$[17]); + + if (@DWLmenuref[@DWLMenu-1] == 57005) goto L_end; // 57005='dead' in hex + + set @Darrayref, @DWLmenuref[@DWLMenu-1]; + set @warpprice, @pDprice[@Dmenuref[@DWMenu-1]]+(getd(@pDfee$[@Dmenuref[@DWMenu-1]])*(@DDepth[@Darrayref])); + + if(Zeny<@warpprice) callsub L_Short_on_zeny,1; + + set Zeny, Zeny-(@warpprice); + if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@warpprice/16); + warp @DGat$[@Darrayref],@DXcoords[@Darrayref],@DYcoords[@Darrayref]; + close2; // this part safegaurds against errors/typos + set Zeny, Zeny+@pTprice[@Tmenuref[@DWMenu-1]]; + end; + +//=============================Healing============================= + +L_heal_Full: + set @healfee, $QW_HF_PRICE; + if(Zeny<@healfee) callsub L_Short_on_zeny,4; + set Zeny, Zeny-@healfee; + if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@healfee/500); + next; + mes "[Warpra]"; + mes "Close this window and I will Heal you."; + close2; + percentheal 100,100; + end; + +L_heal_Part: + set @healchoice,select("Full heal","Health Points only","Skill Points only","Exit"); + if (@healchoice == 1) callsub PHeal,1,1; + if (@healchoice == 2) callsub PHeal,1,0; + if (@healchoice == 3) callsub PHeal,0,1; + goto L_end; + +PHeal: + next; + set @Hp, MaxHp-Hp; + set @Sp, MaxSp-Sp; + set @HpPrice, @hp*$QW_HP_H_PRICE; + set @SpPrice, @sp*$QW_HP_S_PRICE; + mes "[Warpra]"; + if(getarg(0) == 1) mes ""+@HpPrice+" Zeny for "+@Hp+" health points"; + if(getarg(1) == 1) mes ""+@SpPrice+" Zeny for "+@Sp+" skill points"; + set @total, @HpPrice+@SpPrice; + mes "for a total of "+@total+" zeny"; + if (select("Heal me","Let me see the choices again")==2) goto L_heal_Part; + + if(getarg(0) == 1)set @HpPrice, (MaxHp-Hp)*$QW_HP_H_PRICE; + if(getarg(1) == 1)set @SpPrice, (MaxSp-Sp)*$QW_HP_S_PRICE; + set @healfee, @HpPrice+@SpPrice; + if (getarg(0) == 1)&&(getarg(1) == 1)&&(Zeny<@healfee) goto Zeny_Short_Both; + if (getarg(0) == 1)&&(Zeny<@healfee) goto Zeny_short_HP; + if (getarg(1) == 1)&&(Zeny<@healfee) goto Zeny_short_SP; + set Zeny, Zeny-@healfee; + if (getarg(0) == 1)&&(getarg(1) == 1) percentheal 100,100; + if (getarg(0) == 1) percentheal 100,0; + if (getarg(1) == 1) percentheal 0,100; + close; + end; + +Zeny_Short_Both: + mes "[Warpra]"; + mes "choose another option, you can afford both."; + mes "I can heal as much as you can afford too."; + if (select("OK","Exit") == 2) goto L_end; + goto PHeal; + +Zeny_short_HP: + mes "[Warpra]"; + mes "do you want me to partly heal your HP ?"; + if (select("Yes","No") == 2) goto L_end; + set @Hp, Zeny/$QW_HP_H_PRICE; + set @HpPrice, @Hp*$QW_HP_H_PRICE; + if (@Hp == 1) mes "your not worth the effort"; + if (@Hp == 1) goto L_end; + set Zeny, Zeny-@HpPrice; + heal @Hp,0; + close; + end; + + +Zeny_short_SP: + mes "[Warpra]"; + mes "do you want me to partly heal your SP ?"; + if (select("Yes","No") == 2) goto L_end; + set @Sp, Zeny/$QW_HP_S_PRICE; + set @SpPrice, @Sp*$QW_HP_S_PRICE; + if (@Sp == 1) mes "your not worth the effort"; + if (@Sp == 1) goto L_end; + set Zeny, Zeny-@SpPrice; + heal 0,@Sp; + close; + end; + + +//=============================Storage============================= + +L_Storage: + next; + if(basicskillcheck() > 0 && getskilllv("NV_BASIC") < 6) goto L_StorageJBlow; + set @fee, $QW_S_PRICE; + if ($QW_S_PRICE == 60)&&(BaseJob == Job_Novice) set @fee, 30; + if ($QW_S_PRICE == 60)&&(BaseJob != Job_Novice) set @fee, 60; + if(Zeny<@fee) callsub L_Short_on_zeny,2; + set Zeny, Zeny-@fee; + if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@fee/5); + + mes "[Warpra]"; + mes "Close this window and i will open your storage."; + + callsub F_CheckKafCode; //check your storage password thru kafra coding, if set + + close2; + openstorage; + end; + +F_CheckKafCode: + if(#kafra_code==0) return; + mes "Enter your storage password:"; + set @code_,0; + input @code_; + if(@code_ != #kafra_code) { + dispbottom "Wrong storage password."; + close; + } + set @kafcode_try,0; + set @code_,0; + return; + +L_StorageJBlow: + mes "[Warpra]"; + mes "I am sorry but you have to be at least Novice level 6 if you want to use the storage."; + return; + +L_GStorage: + if(@GID==0) goto L_NoGuild; + if(Zeny<$QW_GS_PRICE) callsub L_Short_on_zeny,3; + set Zeny, Zeny-$QW_GS_PRICE; + if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + ($QW_GS_PRICE/5); + next; + mes "[Warpra]"; + mes "Close this window and i will open the ^5533FF" + GetGuildName(@GID) + "^000000 storage."; + close2; + guildopenstorage; + end; + +L_NoGuild: + next; + mes "[Warpra]"; + mes "You are not a part of a guild I can't help you."; + close; + end; + +L_end: + close; + end; + +//============================Few=Warp============================= +L_FewWarps: + next; + mes "[Warpra ]"; + mes "You need to unlock locations before they come available to you."; + mes "To unlock a location talk to my colleagues all over the world."; + mes "Each account got it's own stamp card."; + mes "Want me to check what stamps you have collected so far ?."; + if (select("Yes","No")==1) callsub stampcard; + close; + end; + + +//============================No=Unlock============================ + +L_NoUnlock: + next; + mes "[Warpra ]"; + mes "I don't unlock this location, my assistant deeper in the dungeon will unlock this place."; + close; + end; + +//=========================Short=On=Zeny=========================== +L_Short_on_zeny: + next; + if (getarg(0) == 0) mes "you don't seem to have "+@pTprice[@Tmenuref[@TWMenu-1]]+" zeny, to pay for the warp fee to "+@pTmenuitems$[@Tmenuref[@TWMenu-1]]+""; + if (getarg(0) == 1) mes "you don't seem to have "+@warpprice+" zeny, to pay for the warp fee to "+@DLevelName$[@DWLmenuref[@DWLMenu-1]]+" at "+@pDmenuitems$[@Dmenuref[@DWMenu-1]]+""; + if (getarg(0) == 2) mes "you don't seem to have "+@fee+" zeny, to pay for the storage fee"; + if (getarg(0) == 3) mes "you don't seem to have "+$QW_GS_PRICE+" zeny, to pay for the guild storage fee"; + if (getarg(0) == 4) mes "you don't seem to have "+@healfee+" zeny, to pay for your healing"; + close; + end; + +//===========================Stamp=Card============================ +stampcard: +// Counting of the ammount of places you have unlocked + next; + mes "Let me check what Towns you have"; + + callfunc "QWS_TownStamps"; + + mes "you collected^00FF00 "+@Tstamp+" of "+@MaxTstamp+" ^000000Towns."; + if (@Tstamp == 15) mes "They say there is an island you can only get to when married"; + if (@Tstamp == 15) emotion 18; + next; + + mes "Let me check what dungeons you have"; + + callfunc "QWS_DungeonStamps"; + + mes "you collected^00FF00 "+@Dstamp+" of "+@MaxDstamp+" ^000000Dungeons"; + mes "To unlock a dungeon, search for my colleague."; + mes "You can usually find them near the middle or end of the dungeon"; + return; +} + +function script QWS_TownStamps { + set @Tstamp,0; + set @MaxTstamp,21; //maximum number of towns + set @binvalue,1; + set @Tstamploop,0; + do { + if ((@binvalue & ##QWS_T_Unlock) == @binvalue) set @Tstamp,@Tstamp+1; + + set @binvalue, @binvalue *2; + set @Tstamploop, @Tstamploop + 1; + +}while (@Tstamploop < @MaxTstamp); +return; +} + +function script QWS_DungeonStamps { + set @Dstamp,0; + set @MaxDstamp,29; //maximum number of dungeons + set @binvalue,1; + set @Dstamploop,0; + do { + if ((@binvalue & ##QWS_D_Unlock) == @binvalue) set @Dstamp,@Dstamp+1; + + set @binvalue, @binvalue *2; + set @Dstamploop, @Dstamploop + 1; + +}while (@Dstamploop < @MaxDstamp); +return; +} + +//======================Main=Menu=Array============================ + +function script QWS_MMarray { + +// Currently 9 items + + setarray @pMmenuitems$[0], "GameMaster Menu", $QW_SP_Warpname$, "Warp to Towns", "Warp to Dungeons", "Why so few Warps ?", "Why don't you Unlock this location ?", "Heal", "Heal", "Storage", "Guild Storage", "Cancel"; + set @Mi,0; // That's our loop counter. + set @Mj,0; // That's the menu lines counter. +//----------------GameMaster-Menu + if (getgmlevel()>= 80) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if (getgmlevel()>= 80) set @Mmenuref[@Mj],@Mi; + if (getgmlevel()>= 80) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------Special-Warp + callfunc "QWS_TownStamps"; + callfunc "QWS_DungeonStamps"; + if (@Tstamp == @MaxTstamp)&&(@Dstamp == @MaxDstamp)&&($QW_SP_WarpMap$ != "") { + set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + set @Mmenuref[@Mj],@Mi; + set @Mj,@Mj+1; + } + set @Mi,@Mi+1; +//----------------Town-Warp + if ($QW_TW_OFF == 0) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if ($QW_TW_OFF == 0) set @Mmenuref[@Mj],@Mi; + if ($QW_TW_OFF == 0) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------Dungeon-Warp + if ($QW_DW_OFF == 0) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if ($QW_DW_OFF == 0) set @Mmenuref[@Mj],@Mi; + if ($QW_DW_OFF == 0) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------Why-So-Few-Warps + set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + set @Mmenuref[@Mj],@Mi; + set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------No-Unlock + if (getarg(0) == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if (getarg(0) == 1) set @Mmenuref[@Mj],@Mi; + if (getarg(0) == 1) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------Healfull + if ($QW_HF == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if ($QW_HF == 1) set @Mmenuref[@Mj],@Mi; + if ($QW_HF == 1) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------Healpart + if ($QW_HP == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if ($QW_HP == 1) set @Mmenuref[@Mj],@Mi; + if ($QW_HP == 1) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------Storage + if ($QW_Stor == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if ($QW_Stor == 1) set @Mmenuref[@Mj],@Mi; + if ($QW_Stor == 1) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------GuildStorage + if ($QW_GStor == 1) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + if ($QW_GStor == 1) set @Mmenuref[@Mj],@Mi; + if ($QW_GStor == 1) set @Mj,@Mj+1; + set @Mi,@Mi+1; +//----------------Cancel + set @Mmenulist$[@Mj],@pMmenuitems$[@Mi]; + set @Mmenuref[@Mj],@Mi; + return; + } + + + +//======================Town=Menu=Array============================ + +//----------------Prontera // I do this to find back sections quickly altho almost the same name is a line below it now +// setarray @pTmenuitems$[@Ti], "Prontera"; // Name of Town shown in Town select Menu +// setarray @pTprice[@Ti], $QW_BW_PRICE; // warp prices (Basic ($QW_BW_PRICE), Advanced ($QW_AW_PRICE), Overseas $QW_OW_PRICE) +// +// setarray @pTmap$[@Ti], "prontera"; // mapfilename of town +// setarray @pTXcoords[@Ti], 156; // X warp coords +// setarray @pTYcoords[@Ti], 187; // Y warp coords +// +// QWS_Make_Town_Menu XXX; +// +// the full wap commands send out by this script for these example would be +//warp example_01 123 123 +// +// use the same XXX number as you used when making your own town warpra +// Read below how +// +// example: +// +//syntax: +//mapname,xcoord,ycoord,directionfacing script Name of NPC NPC-ID,{ +// +// Full example using fake map & coords +// +//example_01,213,213,4 script Warpra 112,{ +// callfunc "QWS_Town_Warpra",XXX,"A FAKE TOWN FOR EXAMPLE"; +// close; +// } +// use a free number for XXX, last used is 20, for Yuno + +function script QWS_Tarray { + function QWS_Make_Town_Menu; + + set @Ti,0; // That's our loop counter. + set @Tj,0; // That's the menu lines counter. +//----------------Prontera + setarray @pTmenuitems$[@Ti], "Prontera"; + setarray @pTprice[@Ti], $QW_BW_PRICE; + + setarray @pTmap$[@Ti], "prontera"; + setarray @pTXcoords[@Ti], 156; + setarray @pTYcoords[@Ti], 187; + + QWS_Make_Town_Menu 0; +//----------------Alberta + setarray @pTmenuitems$[@Ti], "Alberta"; + setarray @pTprice[@Ti], $QW_BW_PRICE; + + setarray @pTmap$[@Ti], "alberta"; + setarray @pTXcoords[@Ti], 27; + setarray @pTYcoords[@Ti], 236; + + QWS_Make_Town_Menu 1; +//----------------Aldebaran + setarray @pTmenuitems$[@Ti], "Aldebaran"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "aldebaran"; + setarray @pTXcoords[@Ti], 145; + setarray @pTYcoords[@Ti], 120; + + QWS_Make_Town_Menu 2; +//----------------Amatsu: + setarray @pTmenuitems$[@Ti], "Amatsu"; + setarray @pTprice[@Ti], $QW_OW_PRICE; + + setarray @pTmap$[@Ti], "amatsu"; + setarray @pTXcoords[@Ti], 197; + setarray @pTYcoords[@Ti], 86; + + QWS_Make_Town_Menu 3; +//----------------Ayothaya: + setarray @pTmenuitems$[@Ti], "Ayothaya"; + setarray @pTprice[@Ti], $QW_OW_PRICE; + + setarray @pTmap$[@Ti], "ayothaya"; + setarray @pTXcoords[@Ti], 150; + setarray @pTYcoords[@Ti], 57; + + QWS_Make_Town_Menu 4; +//----------------Comodo: + setarray @pTmenuitems$[@Ti], "Comodo"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "comodo"; + setarray @pTXcoords[@Ti], 188; + setarray @pTYcoords[@Ti], 161; + + QWS_Make_Town_Menu 5; +//----------------Einbech: + setarray @pTmenuitems$[@Ti], "Einbech"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "einbech"; + setarray @pTXcoords[@Ti], 172; + setarray @pTYcoords[@Ti], 126; + + QWS_Make_Town_Menu 6; +//----------------Einbroch: + setarray @pTmenuitems$[@Ti], "Einbroch"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "einbroch"; + setarray @pTXcoords[@Ti], 230; + setarray @pTYcoords[@Ti], 191; + + QWS_Make_Town_Menu 7; +//----------------Geffen: + setarray @pTmenuitems$[@Ti], "Geffen"; + setarray @pTprice[@Ti], $QW_BW_PRICE; + + setarray @pTmap$[@Ti], "geffen"; + setarray @pTXcoords[@Ti], 119; + setarray @pTYcoords[@Ti], 66; + + QWS_Make_Town_Menu 8; +//----------------Gonryun: + setarray @pTmenuitems$[@Ti], "Gonryun"; + setarray @pTprice[@Ti], $QW_OW_PRICE; + + setarray @pTmap$[@Ti], "gonryun"; + setarray @pTXcoords[@Ti], 150; + setarray @pTYcoords[@Ti], 130; + + QWS_Make_Town_Menu 9; +//----------------Hugel: + setarray @pTmenuitems$[@Ti], "Hugel"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "hugel"; + setarray @pTXcoords[@Ti], 95; + setarray @pTYcoords[@Ti], 121; + + QWS_Make_Town_Menu 10; +//----------------Izlude: + setarray @pTmenuitems$[@Ti], "Izlude"; + setarray @pTprice[@Ti], $QW_BW_PRICE; + + setarray @pTmap$[@Ti], "izlude"; + setarray @pTXcoords[@Ti], 128; + setarray @pTYcoords[@Ti], 111; + + QWS_Make_Town_Menu 11; +//----------------Jawaii: + setarray @pTmenuitems$[@Ti], "Jawaii"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "jawaii"; + setarray @pTXcoords[@Ti], 243; + setarray @pTYcoords[@Ti], 115; + + QWS_Make_Town_Menu 12; +//----------------Lighthalzen: + setarray @pTmenuitems$[@Ti], "Lighthalzen"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "lighthalzen"; + setarray @pTXcoords[@Ti], 158; + setarray @pTYcoords[@Ti], 110; + + QWS_Make_Town_Menu 13; +//----------------Louyang: + setarray @pTmenuitems$[@Ti], "Louyang"; + setarray @pTprice[@Ti], $QW_OW_PRICE; + + setarray @pTmap$[@Ti], "louyang"; + setarray @pTXcoords[@Ti], 210; + setarray @pTYcoords[@Ti], 108; + + QWS_Make_Town_Menu 14; +//----------------Lutie + setarray @pTmenuitems$[@Ti], "Lutie"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "xmas"; + setarray @pTXcoords[@Ti], 148; + setarray @pTYcoords[@Ti], 131; + + QWS_Make_Town_Menu 15; +//----------------Morroc: + setarray @pTmenuitems$[@Ti], "Morroc"; + setarray @pTprice[@Ti], $QW_BW_PRICE; + + setarray @pTmap$[@Ti], "morocc"; + setarray @pTXcoords[@Ti], 159; + setarray @pTYcoords[@Ti], 93; + + QWS_Make_Town_Menu 16; +//----------------Niflheim: + setarray @pTmenuitems$[@Ti], "Niflheim"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "niflheim"; + setarray @pTXcoords[@Ti], 195; + setarray @pTYcoords[@Ti], 186; + + QWS_Make_Town_Menu 17; +//----------------Payon: + setarray @pTmenuitems$[@Ti], "Payon"; + setarray @pTprice[@Ti], $QW_BW_PRICE; + + setarray @pTmap$[@Ti], "payon"; + setarray @pTXcoords[@Ti], 152; + setarray @pTYcoords[@Ti], 75; + + QWS_Make_Town_Menu 18; +//----------------Umbala: + setarray @pTmenuitems$[@Ti], "Umbala"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "umbala"; + setarray @pTXcoords[@Ti], 130; + setarray @pTYcoords[@Ti], 130; + + QWS_Make_Town_Menu 19; +//----------------Yuno: + setarray @pTmenuitems$[@Ti], "Yuno"; + setarray @pTprice[@Ti], $QW_AW_PRICE; + + setarray @pTmap$[@Ti], "yuno"; + setarray @pTXcoords[@Ti], 160; + setarray @pTYcoords[@Ti], 168; + + QWS_Make_Town_Menu 20; +//----------------Cancel + setarray @pTmenuitems$[@Ti], "Cancel"; + setarray @pTprice[@Ti], 0; + + set @Tmenulist$[@Tj],@pTmenuitems$[@Ti]; + set @Tmenuref[@Tj],57005; // 57005='dead' in hex + return; + + +//----------------Make Town Menu Function + +function QWS_Make_Town_Menu { + set @temptownmenubin,1; + if (getarg(0) == 0) goto menu_item; + set @templooptownmenu,0; + do { + set @temptownmenubin, @temptownmenubin * 2; + set @templooptownmenu, @templooptownmenu + 1; + }while (getarg(0) > @templooptownmenu); +// check marker and make menu item +menu_item: + if ((@temptownmenubin & ##QWS_T_Unlock) != @temptownmenubin) { + set @Ti,@Ti+1; + return; + } + if (@pTprice[@Ti] != 0)&&($QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti]; + if (@pTprice[@Ti] == 0)&&($QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]; + if (@pTprice[@Ti] != 0)&&($QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]"+" -> "+@pTprice[@Ti]; + if (@pTprice[@Ti] == 0)&&($QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]"; + set @Tmenuref[@Tj],@Ti; + set @Tj,@Tj+1; + set @Ti,@Ti+1; + return; + +} +} + +//====================Dungeon=Menu=Arrays========================== + +//----------------A FAKE DUNGEON FOR EXAMPLE // I do this to find back sections quickly altho almost the same name is a line below it now +// setarray @pDmenuitems$[@Di], "Fake Dungeon"; // Name of Dungeon shown in Dungeon select Menu +// setarray @pDprice[@Di], $QW_BW_PRICE; // warp prices (Basic ($QW_BW_PRICE), Advanced ($QW_AW_PRICE), Overseas $QW_OW_PRICE) +// setarray @pDfee$[@Di], "$QW_BW_FEE"; // Identifyer for the Dungeon fee caluclation (Basic ("$QW_BW_FEE"), Advanced ("$QW_AW_FEE"), Overseas ("$QW_OW_FEE")) please use setting in relation with option above (Don't forget "") +// setarray @DLevels[@Di], 2; //number of levels in dungeon (very important if set to high will shift all leveldata!!) +// +// setarray @DGat$[@Dref], "example_01", "example_02"; // mapfilename of dungeon level +// setarray @DLevelName$[@Dref], "Example Level 1", "Example Level 2"; // level name shown in dungeon level select +// setarray @DXcoords[@Dref], 123, 234; // X warp coords +// setarray @DYcoords[@Dref], 123, 234;// Y warp coords +// setarray @DDepth[@Dref], 0, 1; // relative depth to entrance to calculate extra warp fee +// +// QWS_Make_Dungeon_Menu XXX +// +// the full wap commands send out by this scripts for these examples would be +// for Example Level 1: +//warp example_01 123 123 +// +// for Example Level 2: +//warp example_02 234 234 +// +// use the same XXX number as you used when making your own dungeon unlocker (Warpra Helper) inside the dungeon +// (usually half way near a warp to next level) +// Read below how +// +// example: +// +//syntax: +//mapname,xcoord,ycoord,directionfacing script Name of NPC NPC-ID,{ +// +// Full example using fake map & coords +// +//example_01,213,213,4 script Warpra Helper 112,{ +// callfunc "QWS_Dungeon_Warpra",XXX,"A FAKE DUNGEON FOR EXAMPLE"; +// close; +// } +// use a free number for XXX, last used is 28, for Kiel Dungeon + +function script QWS_Darray { + function QWS_Make_Dungeon_Menu; + + set @Di,0; + set @Dj,0; + set @Dref,0; +//----------------ABYSS LAKE + setarray @pDmenuitems$[@Di], "Abyss Lake"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 3; + + setarray @DGat$[@Dref], "abyss_01", "abyss_02", "abyss_03"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; + setarray @DXcoords[@Dref], 265, 275, 116; + setarray @DYcoords[@Dref], 273, 270, 27; + setarray @DDepth[@Dref], 0, 1, 2; + + QWS_Make_Dungeon_Menu 0; + +//----------------AMATSU DUNGEON + setarray @pDmenuitems$[@Di], "Amatsu Dungeon"; + setarray @pDprice[@Di], $QW_OW_PRICE; + setarray @pDfee$[@Di], "$QW_OW_FEE"; + setarray @DLevels[@Di], 3; + + setarray @DGat$[@Dref], "ama_dun01", "ama_dun02", "ama_dun03"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; + setarray @DXcoords[@Dref], 227, 32, 119; + setarray @DYcoords[@Dref], 10, 43, 15; + setarray @DDepth[@Dref], 0, 1, 2; + + QWS_Make_Dungeon_Menu 1; + +//----------------ANT HELL + setarray @pDmenuitems$[@Di], "Ant Hell Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[2], 2; + + setarray @DGat$[@Dref], "anthell01", "anthell02"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2"; + setarray @DXcoords[@Dref], 32, 34; + setarray @DYcoords[@Dref], 262, 263; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 2; + +//----------------AYOTAYA + setarray @pDmenuitems$[@Di], "Ayotaya Dungeon"; + setarray @pDprice[@Di], $QW_OW_PRICE; + setarray @pDfee$[@Di], "$QW_OW_FEE"; + setarray @DLevels[3], 2; + + setarray @DGat$[@Dref], "ayo_dun01", "ayo_dun02"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2"; + setarray @DXcoords[@Dref], 275, 150; + setarray @DYcoords[@Dref], 17, 13; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 3; + +//----------------BYALAN + setarray @pDmenuitems$[@Di], "Byalan Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[4], 5; + + setarray @DGat$[@Dref], "iz_dun00", "iz_dun01", "iz_dun02", "iz_dun03", "iz_dun04"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5"; + setarray @DXcoords[@Dref], 168, 41, 236, 32, 26; + setarray @DYcoords[@Dref], 168, 37, 204, 63, 27; + setarray @DDepth[@Dref], 0, 1, 2, 3, 4; + + QWS_Make_Dungeon_Menu 4; + +//----------------CLOCK TOWER + setarray @pDmenuitems$[@Di], "Clock Tower Dungeon"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[5], 8; + + setarray @DGat$[@Dref], "c_tower1", "c_tower2", "c_tower3", "c_tower4", "alde_dun01", "alde_dun02", "alde_dun03", "alde_dun04"; + setarray @DLevelName$[@Dref], "Clock Tower Level 1", "Clock Tower Level 2", "Clock Tower Level 3", "Clock Tower Level 4", "Basement 1F", "Basement 2F", "Basement 3F", "Basement 4F"; + setarray @DXcoords[@Dref], 200, 268, 64, 32, 197, 262, 276, 122; + setarray @DYcoords[@Dref], 163, 26, 148, 63, 25, 41, 53, 125; + setarray @DDepth[@Dref], 0, 1, 2, 3, 1, 2, 3, 4; + + QWS_Make_Dungeon_Menu 5; + +//----------------COAL MINE + setarray @pDmenuitems$[@Di], "Coal Mine Dungeon"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[6], 3; + + setarray @DGat$[@Dref], "mjo_dun01", "mjo_dun02", "mjo_dun03"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; + setarray @DXcoords[@Dref], 52, 381, 302; + setarray @DYcoords[@Dref], 17, 343, 261; + setarray @DDepth[@Dref], 0, 1, 2; + + QWS_Make_Dungeon_Menu 6; + +//----------------CULVERT + setarray @pDmenuitems$[@Di], "Culvert Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[7], 4; + + setarray @DGat$[@Dref], "prt_sewb1", "prt_sewb2", "prt_sewb3", "prt_sewb4"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4"; + setarray @DXcoords[@Dref], 132, 19, 180, 100; + setarray @DYcoords[@Dref], 248, 19, 169, 92; + setarray @DDepth[@Dref], 0, 1, 2, 3; + + QWS_Make_Dungeon_Menu 7; + +//----------------EINBECH DUNGEON + setarray @pDmenuitems$[@Di], "Einbech Dungeon"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[8], 2; + + setarray @DGat$[@Dref], "ein_dun01", "ein_dun02"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2"; + setarray @DXcoords[@Dref], 22, 292; + setarray @DYcoords[@Dref], 14, 290; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 8; + +//----------------GEFENIA DUNGEON + setarray @pDmenuitems$[@Di], "Gefenia Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[9], 4; + + setarray @DGat$[@Dref], "gefenia01", "gefenia02", "gefenia03", "gefenia04"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4"; + setarray @DXcoords[@Dref], 59, 201, 264, 33; + setarray @DYcoords[@Dref], 167, 35, 236, 270; + setarray @DDepth[@Dref], 0, 1, 2, 3; + + QWS_Make_Dungeon_Menu 9; + +//----------------GEFFEN DUNGEON + setarray @pDmenuitems$[@Di], "Geffen Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 4; + + setarray @DGat$[@Dref], "gef_dun00", "gef_dun01", "gef_dun02", "gef_dun03"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4"; + setarray @DXcoords[@Dref], 104, 115, 106, 203; + setarray @DYcoords[@Dref], 100, 236, 132, 200; + setarray @DDepth[@Dref], 0, 1, 2, 3; + + QWS_Make_Dungeon_Menu 10; + +//----------------GLAST HEIM + setarray @pDmenuitems$[@Di], "Glast Heim Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 17; + + setarray @DGat$[@Dref], "glast_01", "gl_church", "gl_chyard", "gl_in01", "gl_cas01", "gl_cas02", "gl_knt01", "gl_knt02", "gl_prison", "gl_prison1", "gl_step", "gl_sew01", "gl_sew02", "gl_sew03", "gl_sew04", "gl_dun01", "gl_dun02"; + setarray @DLevelName$[@Dref], "Glast Heim Entrance", "St. Abbey", "Churchyard", "Inside Glast Heim", "Castle 1", "Castle 2", "Chivalry 1", "Chivalry 2", "Prison 1", "Prison 2", "Steps", "Sewers 1", "Sewers 2", "Sewers 3", "Sewers 4", "Lowest Cave 1", "Lowest Cave 2"; + setarray @DXcoords[@Dref], 370, 156, 147, 121, 199, 104, 150, 157, 14, 150, 117, 258, 108, 171, 68, 133, 224; + setarray @DYcoords[@Dref], 300, 8, 15, 59, 29, 25, 10, 287, 70, 14, 124, 255, 291, 273, 277, 271, 274; + setarray @DDepth[@Dref], 0, 1, 2, 1, 1, 2, 1, 2, 2, 3, 1, 4, 2, 3, 4, 5, 6; + + QWS_Make_Dungeon_Menu 11; + +//----------------GONRYUN DUNGEON + setarray @pDmenuitems$[@Di], "Gonryun Dungeon"; + setarray @pDprice[@Di], $QW_OW_PRICE; + setarray @pDfee$[@Di], "$QW_OW_FEE"; + setarray @DLevels[@Di], 3; + + setarray @DGat$[@Dref], "gon_dun01", "gon_dun02", "gon_dun03"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; + setarray @DXcoords[@Dref], 143, 17, 68; + setarray @DYcoords[@Dref], 59, 114, 9; + setarray @DDepth[@Dref], 0, 1, 2; + + QWS_Make_Dungeon_Menu 12; + +//----------------HIDDEN DUNGEON + setarray @pDmenuitems$[@Di], "Hidden Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 3; + + setarray @DGat$[@Dref], "prt_maze01", "prt_maze02", "prt_maze03"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; + setarray @DXcoords[@Dref], 176, 94, 23; + setarray @DYcoords[@Dref], 6, 19, 8; + setarray @DDepth[@Dref], 0, 1, 2; + + QWS_Make_Dungeon_Menu 13; + +//----------------JUPEROS CAVE + setarray @pDmenuitems$[@Di], "Juperos Cave"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 2; + + setarray @DGat$[@Dref], "juperos_01", "juperos_02"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2"; + setarray @DXcoords[@Dref], 53, 36; + setarray @DYcoords[@Dref], 247, 60; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 14; + +//----------------KIEL DUNGEON + setarray @pDmenuitems$[@Di], "Kiel Dungeon"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 2; + + setarray @DGat$[@Dref], "kh_dun01", "kh_dun02"; + setarray @DLevelName$[@Dref], "1st Floor", "2nd Floor"; + setarray @DXcoords[@Dref], 63, 42; + setarray @DYcoords[@Dref], 10, 197; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 28; + +//----------------LIGHTHALZEN BIO LAB + setarray @pDmenuitems$[@Di], "Lighthalzen Bio Lab"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 3; + + setarray @DGat$[@Dref], "lhz_dun01", "lhz_dun02", "lhz_dun03"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3"; + setarray @DXcoords[@Dref], 150, 150, 140; + setarray @DYcoords[@Dref], 287, 18, 137; + setarray @DDepth[@Dref], 0, 1, 2; + + QWS_Make_Dungeon_Menu 15; + +//----------------LOUYANG DUNGEON + setarray @pDmenuitems$[@Di], "Louyang Dungeon"; + setarray @pDprice[@Di], $QW_OW_PRICE; + setarray @pDfee$[@Di], "$QW_OW_FEE"; + setarray @DLevels[@Di], 2; + + setarray @DGat$[@Dref], "lou_dun02", "lou_dun03"; + setarray @DLevelName$[@Dref], "Royal Tomb Level 1", "Royal Tomb Level 2"; + setarray @DXcoords[@Dref], 282, 165; + setarray @DYcoords[@Dref], 20, 38; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 16; + +//----------------MAGMA DUNGEON + setarray @pDmenuitems$[@Di], "Magma Dungeon"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 2; + + setarray @DGat$[@Dref], "mag_dun01", "mag_dun02"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2"; + setarray @DXcoords[@Dref], 126, 47; + setarray @DYcoords[@Dref], 69, 32; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 17; + +//----------------ODIN TEMPLE + setarray @pDmenuitems$[@Di], "Odin Temple"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 1; + + setarray @DGat$[@Dref], "odin_tem01"; + setarray @DLevelName$[@Dref], "Level 1"; + setarray @DXcoords[@Dref], 96; + setarray @DYcoords[@Dref], 145; + setarray @DDepth[@Dref], 0; + + QWS_Make_Dungeon_Menu 18; + +//----------------ORC DUNGEON + setarray @pDmenuitems$[@Di], "Orc Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 2; + + setarray @DGat$[@Dref], "orcsdun01", "orcsdun02"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2"; + setarray @DXcoords[@Dref], 32, 21; + setarray @DYcoords[@Dref], 169, 185; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 19; + +//----------------PAYON DUNGEON + setarray @pDmenuitems$[@Di], "Payon Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 5; + + setarray @DGat$[@Dref], "pay_dun00", "pay_dun01", "pay_dun02", "pay_dun03", "pay_dun04"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5"; + setarray @DXcoords[@Dref], 22, 19, 19, 155, 201; + setarray @DYcoords[@Dref], 180, 33, 63, 159, 204; + setarray @DDepth[@Dref], 0, 1, 2, 3, 4; + + QWS_Make_Dungeon_Menu 20; + +//----------------PYRAMIDS + setarray @pDmenuitems$[@Di], "Pyramids Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 6; + + setarray @DGat$[@Dref], "moc_pryd01", "moc_pryd02", "moc_pryd03", "moc_pryd04", "moc_pryd05", "moc_pryd06"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Basement 1", "Basement 2"; + setarray @DXcoords[@Dref], 192, 10, 100, 181, 94, 192; + setarray @DYcoords[@Dref], 9, 192, 92, 11, 96, 8; + setarray @DDepth[@Dref], 0, 1, 2, 3, 1, 2; + + QWS_Make_Dungeon_Menu 21; + +//----------------SPHINX + setarray @pDmenuitems$[@Di], "Sphinx Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 5; + + setarray @DGat$[@Dref], "in_sphinx1", "in_sphinx2", "in_sphinx3", "in_sphinx4", "in_sphinx5"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5"; + setarray @DXcoords[@Dref], 192, 149, 210, 10, 100; + setarray @DYcoords[@Dref], 9, 81, 54, 222, 99; + setarray @DDepth[@Dref], 0, 1, 2, 3, 4; + + QWS_Make_Dungeon_Menu 22; + +//----------------SUNKEN SHIP + setarray @pDmenuitems$[@Di], "Sunken Ship Dungeon"; + setarray @pDprice[@Di], $QW_BW_PRICE; + setarray @pDfee$[@Di], "$QW_BW_FEE"; + setarray @DLevels[@Di], 2; + + setarray @DGat$[@Dref], "treasure01", "treasure02"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2"; + setarray @DXcoords[@Dref], 69, 102; + setarray @DYcoords[@Dref], 24, 27; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 23; + +//----------------THANATOS TOWER + setarray @pDmenuitems$[@Di], "Thanatos Tower"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 13; + + setarray @DGat$[@Dref], "tha_t01", "tha_t02", "tha_t03", "tha_t04", "tha_t05", "tha_t06", "tha_t07", "tha_t08", "tha_t09", "tha_t10", "tha_t11", "tha_t12", "thana_boss"; + setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Level 6", "Level 7", "Level 8", "Level 9", "Level 10", "Level 11", "Level 12", "Thanatos Boss"; + setarray @DXcoords[@Dref], 150, 150, 220, 59, 62, 206, 35, 105, 88, 168, 90, 129, 85; + setarray @DYcoords[@Dref], 35, 136, 158, 143, 11, 8, 166, 44, 145, 138, 36, 83, 76; + setarray @DDepth[@Dref], 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12; + + QWS_Make_Dungeon_Menu 24; + +//----------------TOY FACTORY + setarray @pDmenuitems$[@Di], "Toy Factory Dungeon"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 2; + + setarray @DGat$[@Dref], "xmas_dun01", "xmas_dun02"; + setarray @DLevelName$[@Dref], "Factory Warehouse", "Classifying Room"; + setarray @DXcoords[@Dref], 205, 129; + setarray @DYcoords[@Dref], 16, 133; + setarray @DDepth[@Dref], 0, 1; + + QWS_Make_Dungeon_Menu 25; + +//----------------TURTLE ISTLAND + setarray @pDmenuitems$[@Di], "Turtle Island Dungeon"; + setarray @pDprice[@Di], $QW_AW_PRICE; + setarray @pDfee$[@Di], "$QW_AW_FEE"; + setarray @DLevels[@Di], 4; + + setarray @DGat$[@Dref], "tur_dun01", "tur_dun02", "tur_dun03", "tur_dun04"; + setarray @DLevelName$[@Dref], "Outside", "Level 1", "Level 2", "Level 3"; + setarray @DXcoords[@Dref], 161, 148, 132, 100; + setarray @DYcoords[@Dref], 34, 256, 190, 192; + setarray @DDepth[@Dref], 0, 0, 1, 2; + + QWS_Make_Dungeon_Menu 26; + +//----------------UMBALA + setarray @pDmenuitems$[@Di], "Umbala Dungeon"; + setarray @pDprice[@Di], $QW_OW_PRICE; + setarray @pDfee$[@Di], "$QW_OW_FEE"; + setarray @DLevels[@Di], 3; + + setarray @DGat$[@Dref], "um_dun01", "um_dun02", "yggdrasil01"; + setarray @DLevelName$[@Dref], "Carpenter's Shop in The Tree", "Passage to a Foreign World", "Hvergelmir's Fountain"; + setarray @DXcoords[@Dref], 205, 48, 40; + setarray @DYcoords[@Dref], 26, 30, 63; + setarray @DDepth[@Dref], 0, 1, 2; + + QWS_Make_Dungeon_Menu 27; + +//----------------Cancel + setarray @pDmenuitems$[@Di], "Cancel"; + setarray @pDprice[@Di], 0; + + set @Dmenulist$[@Dj],@pDmenuitems$[@Di]; + set @Dmenuref[@Dj],57005; // 57005='dead' in hex + return; + + +//----------------Make Dungeon Menu Function + +function QWS_Make_Dungeon_Menu { + set @tempdungeonmenubin,1; + if (getarg(0) == 0) goto menu_item; + set @temploopdungeonmenu,0; + do { + set @tempdungeonmenubin, @tempdungeonmenubin * 2; + set @temploopdungeonmenu, @temploopdungeonmenu + 1; + }while (getarg(0) > @temploopdungeonmenu); +// check marker and make menu item +menu_item: + if ((@tempdungeonmenubin & ##QWS_D_Unlock) != @tempdungeonmenubin) { + setarray @DLocRef[@Di], @Dref; + set @Dref, @Dref+@DLevels[@Di]; + set @Di,@Di+1; + return; + } + if ($QW_MapUserShow == 1) { + set @tempmapusers,0; + set @mapusersloop,0; + do { + set @tempmapusers,(getmapusers(@DGat$[@Dref+@mapusersloop]) + @tempmapusers); + set @mapusersloop, (@mapusersloop + 1); + }while (@DLevels[@Di] > @mapusersloop); + if (@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" ["+@tempmapusers+"] -> "+@pDprice[@Di]; + if (@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" ["+@tempmapusers+"]"; + set @Dmenuref[@Dj],@Di; + set @Dj,@Dj+1; + setarray @DLocRef[@Di], @Dref; + set @Dref, @Dref+@DLevels[@Di]; + set @Di,@Di+1; + return; + } + if (@pDprice[@Di] != 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]+" -> "+@pDprice[@Di]; + if (@pDprice[@Di] == 0) set @Dmenulist$[@Dj], @pDmenuitems$[@Di]; + set @Dmenuref[@Dj],@Di; + set @Dj,@Dj+1; + setarray @DLocRef[@Di], @Dref; + set @Dref, @Dref+@DLevels[@Di]; + set @Di,@Di+1; + return; + +} +} + +function script QWS_DLarray { +//----------------Start building Menu + set @DWref,@DLocRef[@DwarpMenu]; // That's our reference to the arrays with leveldata. + set @DWi,0; // That's our loop counter. + set @DWj,0; // That's the menu lines counter. + cleararray @DWLmenulist$[0],"",20; // Clearing the array to get rid off ghost items in menu + do { + if ($QW_DL == 0)||($QW_DDL >= @DDepth[@DWref]) { + + set @warpprice, (@pDprice[@DwarpMenu]+ (getd(@pDfee$[@DwarpMenu])*@DDepth[@DWref])); + + if (@warpprice != 0)&&($QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" -> "+@warpprice; + if (@warpprice == 0)&&($QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]; + if (@warpprice != 0)&&($QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"] -> "+@warpprice; + if (@warpprice == 0)&&($QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"]"; + set @DWLmenuref[@DWj],@DWref; + + set @DWj,@DWj+1; + } + set @DWref, @DWref+1; + set @DWi,@DWi+1; + }while (@DWi < @DLevels[@DwarpMenu]); + set @DWLmenulist$[@DWj], "Exit"; + set @DWLmenuref[@DWj],57005; // 57005='dead' in hex + return; + } + + +//=================Backwards=Compatibility=Pre=1.8================= + +function script QWS_BackComp { +// reference where i put the towns: "Prontera"[0], "Alberta"[1], "Aldebaran"[2], "Amatsu"[3], "Ayothaya"[4], "Comodo"[5], "Einbech"[6], "Einbroch"[7], "Geffen"[8], "Gonryun"[9], "Hugel"[10], "Izlude"[11], "Jawaii"[12], "Lighthalzen"[13], "Louyang"[14], "Lutie"[15], "Morroc"[16], "Niflheim"[17], "Payon"[18], "Umbala"[19], "Yuno"[20]; +// reference where i put the dungeons: "Abyss Lake"[0], "Amatsu Dungeon"[1], "Ant Hell Dungeon"[2], "Ayotaya Dungeon"[3], "Byalan Dungeon"[4], "Clock Tower Dungeon"[5], "Coal Mine Dungeon"[6], "Culvert Dungeon"[7], "Einbech Dungeon"[8], "Gefenia Dungeon"[9], "Geffen Dungeon"[10], "Glast Heim Dungeon"[11], "Gonryun Dungeon"[12], "Hidden Dungeon"[13], "Juperos Cave"[14], "Lighthalzen Bio Lab"[15], "Louyang Dungeon"[16], "Magma Dungeon"[17], "Odin Temple"[18], "Orc Dungeon"[19], "Payon Dungeon"[20], "Pyramids Dungeon"[21], "Sphinx Dungeon"[22], "Sunken Ship Dungeon"[23], "Thanatos Tower"[24], "Toy Factory Dungeon"[25], "Turtle Island Dungeon"[26], "Umbala Dungeon"[27], "Kiel Dungeon[28]; +// also clears variables so that the account file variables can be used for something else variable 0 = variable delete on next save + +// Towns + set @towntemp,0; + if (#prontera != 0) set @towntemp,@towntemp + 1; + if (#alberta != 0) set @towntemp,@towntemp + 2; + if (#aldebaran != 0) set @towntemp,@towntemp + 4; + if (#amatsu != 0) set @towntemp,@towntemp + 8; + if (#ayotaya != 0) set @towntemp,@towntemp + 16; + if (#comodo != 0) set @towntemp,@towntemp + 32; + if (#einbech != 0) set @towntemp,@towntemp + 64; + if (#einbroch != 0) set @towntemp,@towntemp + 128; + if (#geffen != 0) set @towntemp,@towntemp + 256; + if (#gonryun != 0) set @towntemp,@towntemp + 512; + if (#hugel != 0) set @towntemp,@towntemp + 1024; + if (#izlude != 0) set @towntemp,@towntemp + 2048; + if (#jawaii != 0) set @towntemp,@towntemp + 4096; + if (#lighthalzen != 0) set @towntemp,@towntemp + 8192; + if (#louyang != 0) set @towntemp,@towntemp + 16384; + if (#xmas != 0) set @towntemp,@towntemp + 32768; + if (#morocc != 0) set @towntemp,@towntemp + 65536; + if (#niflheim != 0) set @towntemp,@towntemp + 131072; + if (#payon != 0) set @towntemp,@towntemp + 262144; + if (#umbala != 0) set @towntemp,@towntemp + 524288; + if (#yuno != 0) set @towntemp,@towntemp + 1048576; +// Clear Town variables + set #prontera,0; + set #alberta,0; + set #aldebaran,0; + set #amatsu,0; + set #ayotaya,0; + set #comodo,0; + set #einbech,0; + set #einbroch,0; + set #geffen,0; + set #gonryun,0; + set #hugel,0; + set #izlude,0; + set #jawaii,0; + set #lighthalzen,0; + set #louyang,0; + set #xmas,0; + set #morocc,0; + set #niflheim,0; + set #payon,0; + set #umbala,0; + set #yuno,0; +// set Town warp unlock variable +set ##QWS_T_Unlock, (##QWS_T_Unlock | @towntemp); + //because multiple account servers now stack on 1 variable i used a 'or' to stack them +// Dungeons + set @dungeontemp,0; + if (#abyss != 0) set @dungeontemp,@dungeontemp + 1; + if (#ama_dun != 0) set @dungeontemp,@dungeontemp + 2; + if (#anthell != 0) set @dungeontemp,@dungeontemp + 4; + if (#ayotaya_dun != 0) set @dungeontemp,@dungeontemp + 8; + if (#iz_dun != 0) set @dungeontemp,@dungeontemp + 16; + if (#c_tower != 0) set @dungeontemp,@dungeontemp + 32; + if (#mjo_dun != 0) set @dungeontemp,@dungeontemp + 64; + if (#prt_sewb != 0) set @dungeontemp,@dungeontemp + 128; + if (#einbech_dun != 0) set @dungeontemp,@dungeontemp + 256; + if (#gefenia != 0) set @dungeontemp,@dungeontemp + 512; + if (#gef_dun != 0) set @dungeontemp,@dungeontemp + 1024; + if (#gl_dun != 0) set @dungeontemp,@dungeontemp + 2048; + if (#gon_dun != 0) set @dungeontemp,@dungeontemp + 4096; + if (#hid_dun != 0) set @dungeontemp,@dungeontemp + 8192; + if (#juperos != 0) set @dungeontemp,@dungeontemp + 16384; + if (#lighthalzen_dun != 0) set @dungeontemp,@dungeontemp + 32768; + if (#louyang_dun != 0) set @dungeontemp,@dungeontemp + 65536; + if (#mag_dun != 0) set @dungeontemp,@dungeontemp + 131072; + if (#odintemple != 0) set @dungeontemp,@dungeontemp + 262144; + if (#orcsdun != 0) set @dungeontemp,@dungeontemp + 524288; + if (#pay_dun != 0) set @dungeontemp,@dungeontemp + 1048576; + if (#moc_pryd != 0) set @dungeontemp,@dungeontemp + 2097152; + if (#in_sphinx != 0) set @dungeontemp,@dungeontemp + 4194304; + if (#treasure != 0) set @dungeontemp,@dungeontemp + 8388608; + if (#thanatos_tower != 0) set @dungeontemp,@dungeontemp + 16777216; + if (#xmas_dun != 0) set @dungeontemp,@dungeontemp + 33554432; + if (#tur_dun != 0) set @dungeontemp,@dungeontemp + 67108864; + if (#um_dun != 0) set @dungeontemp,@dungeontemp + 134217728; +// Clear Dungeon variables + set #abyss,0; + set #ama_dun,0; + set #anthell,0; + set #ayotaya_dun,0; + set #iz_dun,0; + set #c_tower,0; + set #mjo_dun,0; + set #prt_sewb,0; + set #einbech_dun,0; + set #gefenia,0; + set #gef_dun,0; + set #gl_dun,0; + set #gon_dun,0; + set #hid_dun,0; + set #juperos,0; + set #lighthalzen_dun,0; + set #louyang_dun,0; + set #mag_dun,0; + set #odintemple,0; + set #orcsdun,0; + set #pay_dun,0; + set #moc_pryd,0; + set #in_sphinx,0; + set #treasure,0; + set #thanatos_tower,0; + set #xmas_dun,0; + set #tur_dun,0; + set #um_dun,0; +// set Town warp unlock variable +set ##QWS_D_Unlock, (##QWS_D_Unlock | @dungeontemp); +//mark that this character has done the upgrade to 1.8 +set ##QWS_UP,18; +return; +} + + +//===================Extra=Variable=Clear=Pre=1.8================== +function script Extra_Variable_Clear { +// Clear Town variables + set #prontera,0; + set #alberta,0; + set #aldebaran,0; + set #amatsu,0; + set #ayotaya,0; + set #comodo,0; + set #einbech,0; + set #einbroch,0; + set #geffen,0; + set #gonryun,0; + set #hugel,0; + set #izlude,0; + set #jawaii,0; + set #lighthalzen,0; + set #louyang,0; + set #xmas,0; + set #morocc,0; + set #niflheim,0; + set #payon,0; + set #umbala,0; + set #yuno,0; + +// Clear Dungeon variables + set #abyss,0; + set #ama_dun,0; + set #anthell,0; + set #ayotaya_dun,0; + set #iz_dun,0; + set #c_tower,0; + set #mjo_dun,0; + set #prt_sewb,0; + set #einbech_dun,0; + set #gefenia,0; + set #gef_dun,0; + set #gl_dun,0; + set #gon_dun,0; + set #hid_dun,0; + set #juperos,0; + set #lighthalzen_dun,0; + set #louyang_dun,0; + set #mag_dun,0; + set #odintemple,0; + set #orcsdun,0; + set #pay_dun,0; + set #moc_pryd,0; + set #in_sphinx,0; + set #treasure,0; + set #thanatos_tower,0; + set #xmas_dun,0; + set #tur_dun,0; + set #um_dun,0; + +// as the account based variables are limited just run this on every character to save some variables +set QWS_ExtraVARClear,18; +return; +} + +//================Dungeon=Warpras=That=Only=Unlock================= + +function script QWS_Dungeon_Warpra { + function QWS_D_getbin; + function QWS_D_setbin; + + if ((QWS_D_getbin(getarg(0)) == 0) && (getarg(1) != "")) { + mes "[Warpra]"; + mes getarg(1)+" unlocked!"; + QWS_D_setbin(getarg(0)); + return; + } else if (QWS_D_getbin(getarg(0)) == 1){ + mes "[Warpra]"; + mes "Sorry I can only unlock this location."; + } else + debugmes "QWS_Dungeon_Warpra error, improper syntax ?"; + return; + + +function QWS_D_setbin { + set @tempsetbindata,1; + if (getarg(0) == 0) goto binset; + set @temploopsetbin,0; + do { + set @tempsetbindata, @tempsetbindata * 2; + set @temploopsetbin, @temploopsetbin + 1; + } while (getarg(0) > @temploopsetbin); +binset: + set ##QWS_D_Unlock,(##QWS_D_Unlock | @tempsetbindata); + return; +} + +function QWS_D_getbin { + set @tempgetbindata,1; + if (getarg(0) == 0) goto binget; + set @temploopgetbin,0; + do { + set @tempgetbindata, @tempgetbindata * 2; + set @temploopgetbin, @temploopgetbin + 1; + } while (getarg(0) > @temploopgetbin); +binget: + if ((@tempgetbindata & ##QWS_D_Unlock) == @tempgetbindata) return 1; + return 0; +} +} + +//==========================Town=Warpras=========================== + +function script QWS_Town_Warpra { + function QWS_T_getbin; + function QWS_T_setbin; + + if ((QWS_T_getbin(getarg(0)) == 0) && (getarg(1) != "")) { + mes "[Warpra]"; + mes getarg(1)+" unlocked!"; + QWS_T_setbin(getarg(0)); + return; + } else if (QWS_T_getbin(getarg(0)) == 1){ +callfunc "Q_Warpra",0; + } else + debugmes "QWS_Town_Warpra error, improper syntax ?"; + return; + + +function QWS_T_setbin { + set @tempsetbindata,1; + if (getarg(0) == 0) goto binset; + set @temploopsetbin,0; + do { + set @tempsetbindata, @tempsetbindata * 2; + set @temploopsetbin, @temploopsetbin + 1; + } while (getarg(0) > @temploopsetbin); +binset: + set ##QWS_T_Unlock,(##QWS_T_Unlock | @tempsetbindata); + return; +} + +function QWS_T_getbin { + set @tempgetbindata,1; + if (getarg(0) == 0) goto binget; + set @temploopgetbin,0; + do { + set @tempgetbindata, @tempgetbindata * 2; + set @temploopgetbin, @temploopgetbin + 1; + } while (getarg(0) > @temploopgetbin); +binget: + if ((@tempgetbindata & ##QWS_T_Unlock) == @tempgetbindata) return 1; + return 0; +} +} +//============================Warpras============================== + +alb2trea,73,101,4 script Warpra#1 113,{ + callfunc "Q_Warpra",1; +} +ama_fild01,178,325,1 script Warpra#2 113,{ + callfunc "Q_Warpra",1; +} +gef_fild10,71,339,4 script Warpra#3 113,{ + callfunc "Q_Warpra",1; +} +izlu2dun,104,82,4 script Warpra#4 113,{ + callfunc "Q_Warpra",1; +} +mjolnir_02,85,363,4 script Warpra#5 113,{ + callfunc "Q_Warpra",1; +} +moc_fild04,207,331,4 script Warpra#6 113,{ + callfunc "Q_Warpra",1; +} +moc_fild19,106,97,4 script Warpra#7 113,{ + callfunc "Q_Warpra",1; +} +moc_ruins,64,166,4 script Warpra#8 113,{ + callfunc "Q_Warpra",1; +} +niflheim,197,192,3 script Warpra#9 113,{ + callfunc "Q_Warpra",1; +} +pay_arche,39,135,4 script Warpra#10 113,{ + callfunc "Q_Warpra",1; +} +prt_fild05,273,215,4 script Warpra#11 113,{ + callfunc "Q_Warpra",1; +} +tur_dun01,148,239,4 script Warpra#12 113,{ + callfunc "Q_Warpra",1; +} +valkyrie,48,35,8 script Warpra#13 113,{ + callfunc "Q_Warpra",1; +} +yuno_fild03,37,135,4 script Warpra#14 113,{ + callfunc "Q_Warpra",1; +} + +alberta,32,240,4 script Warpra#15 113,{ + callfunc "QWS_Town_Warpra",1,"Alberta Town"; + close; +} +aldebaran,146,118,4 script Warpra#16 113,{ + callfunc "QWS_Town_Warpra",2,"Aldebaran Town"; + close; +} +ayothaya,216,171,5 script Warpra#17 113,{ + callfunc "QWS_Town_Warpra",4,"Ayotaya Town"; + close; +} +amatsu,193,81,1 script Warpra#18 113,{ + callfunc "QWS_Town_Warpra",3,"Amatsu Town"; + close; +} +comodo,195,158,4 script Warpra#19 113,{ + callfunc "QWS_Town_Warpra",5,"Comodo Town"; + close; +} +einbroch,229,196,5 script Warpra#20 113,{ + callfunc "QWS_Town_Warpra",7,"Einbroch Town"; + close; +} +einbech,173,131,5 script Warpra#21 113,{ + callfunc "QWS_Town_Warpra",6,"Einbech Town"; + close; +} +geffen,116,66,4 script Warpra#22 113,{ + callfunc "QWS_Town_Warpra",8,"Geffen Town"; + close; +} +gonryun,152,130,4 script Warpra#23 113,{ + callfunc "QWS_Town_Warpra",9,"Gonryun Town"; + close; +} +hugel,90,127,5 script Warpra#24 113,{ + callfunc "QWS_Town_Warpra",10,"Hugel Town"; + close; +} +jawaii,107,182,5 script Warpra#25 113,{ + callfunc "QWS_Town_Warpra",12,"Jawaii Town"; + close; +} +izlude,132,116,4 script Warpra#26 113,{ + callfunc "QWS_Town_Warpra",11,"Izlude Town"; + close; +} +lighthalzen,153,100,5 script Warpra#27 113,{ + callfunc "QWS_Town_Warpra",13,"Lighthalzen Town"; + close; +} +louyang,211,106,4 script Warpra#28 113,{ + callfunc "QWS_Town_Warpra",14,"Louyang Town"; + close; +} +morocc,157,95,4 script Warpra#29 113,{ + callfunc "QWS_Town_Warpra",16,"Morroc Town"; + close; +} +nif_fild01,319,77,1 script Warpra#30 113,{ + callfunc "QWS_Town_Warpra",17,"Niflheim Town"; + close; +} +payon,183,110,4 script Warpra#31 113,{ + callfunc "QWS_Town_Warpra",18,"Payon Town"; + close; +} +prontera,147,172,5 script Warpra#32 113,{ + callfunc "QWS_Town_Warpra",0,"Prontera Town"; + close; +} +umbala,133,130,4 script Warpra#33 113,{ + callfunc "QWS_Town_Warpra",19,"Umbala Town"; + close; +} +xmas,151,136,4 script Warpra#34 113,{ + callfunc "QWS_Town_Warpra",15,"Lutie Town"; + close; +} +yuno,138,162,4 script Warpra#35 113,{ + callfunc "QWS_Town_Warpra",20,"Yuno Town"; + close; +} + +abyss_02,274,266,1 script Warpra#36 113,{ + callfunc "QWS_Dungeon_Warpra",0,"Abyss Lake"; + close; +} + +ama_dun02,192,118,5 script Warpra Helper#1 112,{ + callfunc "QWS_Dungeon_Warpra",1,"Amatsu Dungeon"; + close; +} + +anthell02,170,165,3 script Warpra Helper#2 112,{ + callfunc "QWS_Dungeon_Warpra",2,"Ant Hell Dungeon"; + close; +} + +ayo_dun02,258,193,5 script Warpra Helper#3 112,{ + callfunc "QWS_Dungeon_Warpra",3,"Ayotaya Dungeon"; + close; +} + +ein_dun02,292,282,1 script Warpra Helper#4 112,{ + callfunc "QWS_Dungeon_Warpra",8,"Einbech Dungeon"; + close; +} + +iz_dun03,202,47,2 script Warpra Helper#5 112,{ + callfunc "QWS_Dungeon_Warpra",4,"Byalan Dungeon"; + close; +} + +c_tower3,129,106,4 script Warpra Helper#6 112,{ + callfunc "QWS_Dungeon_Warpra",5,"Clock Tower Dungeon"; + close; +} + +mjo_dun02,39,25,4 script Warpra Helper#7 112,{ + callfunc "QWS_Dungeon_Warpra",6,"Coal Mine Dungeon"; + close; +} + +prt_sewb2,176,30,3 script Warpra Helper#8 112,{ + callfunc "QWS_Dungeon_Warpra",7,"Culvert Dungeon"; + close; +} + +gefenia03,137,34,0 script Warpra Helper#9 112,{ + callfunc "QWS_Dungeon_Warpra",9,"Gefenia Dungeon"; + close; +} + +gef_dun02,218,61,2 script Warpra Helper#10 112,{ + callfunc "QWS_Dungeon_Warpra",10,"Gefen Dungeon"; + close; +} + +glast_01,371,308,3 script Warpra Helper#11 112,{ + callfunc "QWS_Dungeon_Warpra",11,"Glast Heim Dungeon"; + close; +} + +gon_dun01,167,273,4 script Warpra Helper#12 112,{ + callfunc "QWS_Dungeon_Warpra",12,"Gonryun Dungeon"; + close; +} + +juperos_02,127,154,5 script Warpra Helper#13 112,{ + callfunc "QWS_Dungeon_Warpra",14,"Juperos Cave"; + close; +} + +kh_dun01,14,224,3 script Warpra Helper#14 112,{ + callfunc "QWS_Dungeon_Warpra",28,"Kiel Dungeon"; + close; +} + +lhz_dun02,156,151,5 script Warpra Helper#15 112,{ + callfunc "QWS_Dungeon_Warpra",15,"Lighthalzen Bio Lab"; + close; +} + +lou_dun02,168,264,4 script Warpra Helper#16 112,{ + callfunc "QWS_Dungeon_Warpra",16,"Louyang Dungeon"; + close; +} + +mag_dun02,46,41,3 script Warpra Helper#17 112,{ + callfunc "QWS_Dungeon_Warpra",17,"Magma Dungeon"; + close; +} + +odin_tem01,115,148,3 script Warpra Helper#18 112,{ + callfunc "QWS_Dungeon_Warpra",18,"Odin Temple"; + close; +} + +orcsdun01,185,11,3 script Warpra Helper#19 112,{ + callfunc "QWS_Dungeon_Warpra",19,"Orc Dungeon"; + close; +} + +pay_dun03,162,143,3 script Warpra Helper#20 112,{ + callfunc "QWS_Dungeon_Warpra",20,"Payon Dungeon"; + close; +} + +moc_pryd02,101,95,3 script Warpra Helper#21 112,{ + callfunc "QWS_Dungeon_Warpra",21,"Pyramides Dungeon"; + close; +} + +in_sphinx2,274,268,1 script Warpra Helper#22 112,{ + callfunc "QWS_Dungeon_Warpra",22,"Sphinx Dungeon"; + close; +} + +tha_t07,111,162,3 script Warpra Helper#23 112,{ + callfunc "QWS_Dungeon_Warpra",24,"Thanatos Tower"; + close; +} + +treasure02,104,40,3 script Warpra Helper#24 112,{ + callfunc "QWS_Dungeon_Warpra",23,"Sunken Ship Dungeon"; + close; +} + +xmas_dun02,124,131,3 script Warpra Helper#25 112,{ + callfunc "QWS_Dungeon_Warpra",25,"Toy Factory Dungeon"; + close; +} + +um_dun02,44,28,3 script Warpra Helper#26 112,{ + callfunc "QWS_Dungeon_Warpra",27,"Umbala Dungeon"; + close; +} + +tur_dun02,162,23,3 script Warpra Helper#27 112,{ + callfunc "QWS_Dungeon_Warpra",26,"Turtle Island Dungeon"; + close; +} +prt_maze02,102,69,4 script Warpra Helper#28 112,{ + callfunc "QWS_Dungeon_Warpra",13,"Hidden Dungeon"; + close; +} diff --git a/npc/custom/resetnpc.txt b/npc/custom/resetnpc.txt index 4069c9f09..6d630a41f 100644 --- a/npc/custom/resetnpc.txt +++ b/npc/custom/resetnpc.txt @@ -1,62 +1,62 @@ -//===== rAthena Script =======================================
-//= Reset NPC
-//===== By: ==================================================
-//= rAthena Dev Team
-//===== Current Version: =====================================
-//= 1.1
-//===== Compatible With: =====================================
-//= rAthena SVN
-//===== Description: =========================================
-//= Resets skills, stats, or both.
-//===== Additional Comments: =================================
-//= 1.0 First Version
-//= 1.1 Optimized for the greater good. [Kisuka]
-//= 1.2 Cleaning [Euphy]
-//============================================================
-
-prontera,150,193,4 script Reset Girl 124,{
-
- set .@ResetStat,5000; // Zeny for stat reset
- set .@ResetSkill,5000; // Zeny for skill reset
- set .@ResetBoth,9000; // Zeny for resetting both together
-
- mes "[Reset Girl]";
- mes "I am the Reset Girl.";
- mes "Reset Stats: "+ .@ResetStat +"z";
- mes "Reset Skills: "+ .@ResetSkill +"z";
- mes "Reset Both: "+ .@ResetBoth +"z";
- mes "Please select the service you want:";
- next;
- switch(select("^FF3355Reset Skills:Reset Stats:Reset Both^000000:Cancel")) {
- case 1:
- mes "[Reset Girl]";
- if (Zeny < .@ResetSkill) {
- mes "Sorry, you don't have enough Zeny.";
- close; }
- set Zeny, Zeny-.@ResetSkill;
- ResetSkill;
- mes "There you go!";
- close;
- case 2:
- mes "[Reset Girl]";
- if (Zeny < .@ResetStat) {
- mes "Sorry, you don't have enough Zeny.";
- close; }
- set Zeny, Zeny-.@ResetStat;
- ResetStatus;
- mes "There you go!";
- close;
- case 3:
- mes "[Reset Girl]";
- if (Zeny < .@ResetBoth) {
- mes "Sorry, you don't have enough Zeny.";
- close; }
- set Zeny, Zeny-.@ResetBoth;
- ResetSkill;
- ResetStatus;
- mes "There you go!";
- close;
- case 4:
- close;
- }
+//===== rAthena Script ======================================= +//= Reset NPC +//===== By: ================================================== +//= rAthena Dev Team +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Resets skills, stats, or both. +//===== Additional Comments: ================================= +//= 1.0 First Version +//= 1.1 Optimized for the greater good. [Kisuka] +//= 1.2 Cleaning [Euphy] +//============================================================ + +prontera,150,193,4 script Reset Girl 124,{ + + set .@ResetStat,5000; // Zeny for stat reset + set .@ResetSkill,5000; // Zeny for skill reset + set .@ResetBoth,9000; // Zeny for resetting both together + + mes "[Reset Girl]"; + mes "I am the Reset Girl."; + mes "Reset Stats: "+ .@ResetStat +"z"; + mes "Reset Skills: "+ .@ResetSkill +"z"; + mes "Reset Both: "+ .@ResetBoth +"z"; + mes "Please select the service you want:"; + next; + switch(select("^FF3355Reset Skills:Reset Stats:Reset Both^000000:Cancel")) { + case 1: + mes "[Reset Girl]"; + if (Zeny < .@ResetSkill) { + mes "Sorry, you don't have enough Zeny."; + close; } + set Zeny, Zeny-.@ResetSkill; + ResetSkill; + mes "There you go!"; + close; + case 2: + mes "[Reset Girl]"; + if (Zeny < .@ResetStat) { + mes "Sorry, you don't have enough Zeny."; + close; } + set Zeny, Zeny-.@ResetStat; + ResetStatus; + mes "There you go!"; + close; + case 3: + mes "[Reset Girl]"; + if (Zeny < .@ResetBoth) { + mes "Sorry, you don't have enough Zeny."; + close; } + set Zeny, Zeny-.@ResetBoth; + ResetSkill; + ResetStatus; + mes "There you go!"; + close; + case 4: + close; + } }
\ No newline at end of file diff --git a/npc/custom/stylist.txt b/npc/custom/stylist.txt index c91853b32..3bcb04c9e 100644 --- a/npc/custom/stylist.txt +++ b/npc/custom/stylist.txt @@ -1,33 +1,33 @@ -//===== rAthena Script =======================================
-//= Stylist
-//===== By: ==================================================
-//= Euphy
-//===== Current Version: =====================================
-//= 1.0
-//===== Compatible With: =====================================
-//= rAthena SVN
-//===== Description: =========================================
-//= Changes your hair style, hair color, and cloth color.
-//============================================================
-
-prontera,170,180,1 script Stylist#custom_stylist 122,{
-
- setarray .@Styles[1],553,37,250; // Maximum dye, hair style, and hair color
-
- setarray .@Look[1],7,1,6;
- set .@s, select(" ~ Cloth color: ~ Hairstyle: ~ Hair color");
- set .@Revert, getlook(.@Look[.@s]); set .@Style,1;
- while(1) {
- setlook .@Look[.@s], .@Style;
- message strcharinfo(0),"This is style #"+.@Style+".";
- set .@menu$, " ~ Next (^0055FF"+((.@Style!=.@Styles[.@s])?.@Style+1:1)+"^000000): ~ Previous (^0055FF"+((.@Style!=1)?.@Style-1:.@Styles[.@s])+"^000000): ~ Jump to...: ~ Revert to original (^0055FF"+.@Revert+"^000000)";
- switch(select(.@menu$)) {
- case 1: set .@Style, ((.@Style!=.@Styles[.@s])?.@Style+1:1); break;
- case 2: set .@Style, ((.@Style!=1)?.@Style-1:.@Styles[.@s]); break;
- case 3: message strcharinfo(0),"Choose a style between 1 - "+.@Styles[.@s]+".";
- input .@Style,0,.@Styles[.@s];
- if (!.@Style) set .@Style, rand(1,.@Styles[.@s]);
- break;
- case 4: set .@Style, .@Revert; setlook .@Look[.@s], .@Revert; break; }
- } end;
+//===== rAthena Script ======================================= +//= Stylist +//===== By: ================================================== +//= Euphy +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Changes your hair style, hair color, and cloth color. +//============================================================ + +prontera,170,180,1 script Stylist#custom_stylist 122,{ + + setarray .@Styles[1],553,37,250; // Maximum dye, hair style, and hair color + + setarray .@Look[1],7,1,6; + set .@s, select(" ~ Cloth color: ~ Hairstyle: ~ Hair color"); + set .@Revert, getlook(.@Look[.@s]); set .@Style,1; + while(1) { + setlook .@Look[.@s], .@Style; + message strcharinfo(0),"This is style #"+.@Style+"."; + set .@menu$, " ~ Next (^0055FF"+((.@Style!=.@Styles[.@s])?.@Style+1:1)+"^000000): ~ Previous (^0055FF"+((.@Style!=1)?.@Style-1:.@Styles[.@s])+"^000000): ~ Jump to...: ~ Revert to original (^0055FF"+.@Revert+"^000000)"; + switch(select(.@menu$)) { + case 1: set .@Style, ((.@Style!=.@Styles[.@s])?.@Style+1:1); break; + case 2: set .@Style, ((.@Style!=1)?.@Style-1:.@Styles[.@s]); break; + case 3: message strcharinfo(0),"Choose a style between 1 - "+.@Styles[.@s]+"."; + input .@Style,0,.@Styles[.@s]; + if (!.@Style) set .@Style, rand(1,.@Styles[.@s]); + break; + case 4: set .@Style, .@Revert; setlook .@Look[.@s], .@Revert; break; } + } end; }
\ No newline at end of file diff --git a/npc/merchants/falcon_flute.txt b/npc/merchants/falcon_flute.txt index 707fee35b..738275d73 100644 --- a/npc/merchants/falcon_flute.txt +++ b/npc/merchants/falcon_flute.txt @@ -1,123 +1,123 @@ -//===== rAthena Script =======================================
-//= Falcon Flute Trader
-//===== By: ==================================================
-//= Masao
-//= Credits to Muad_Dib for the translation & Ziu for the
-//= Item ID of the Falcon Flute.
-//===== Current Version: =====================================
-//= 1.0
-//===== Compatible With: =====================================
-//= rAthena
-//===== Description: =========================================
-//= An NPC which sells you a Falcon Flute so you're able to
-//= summon a Falcon wherever you are.
-//===== Additional Comments: =================================
-//= 1.0 First Version. [Masao]
-//= 1.1 Added Baby Hunter and Baby Ranger check. bugreport:5728 [Masao]
-//============================================================
-
-- script Falcon Flute Trader::fflute -1,{
-
- if (Class == Job_Baby_Hunter || Class == Job_Hunter || Class == Job_Sniper || Class == Job_Baby_Ranger || Class == Job_Ranger || Class == Job_Ranger_T) {
- mes "[Falcon Flute Trader]";
- mes "Do you need a Falcon?";
- mes "With a magical Flute, you can call your Falcon from anywhere!";
- next;
- mes "[Falcon Flute Trader]";
- mes "It's marvelous, isn't it? Ha ha ha!";
- next;
- mes "[Falcon Flute Trader]";
- mes "Why I'm selling these Falcon Flutes?";
- mes "It's because I have no clue how they work.";
- mes "Ha ha ha!";
- next;
- mes "[Falcon Flute Trader]";
- mes "Of course, you'll need the Skill ^ff0000Falcon Mastery^000000.";
- mes "I don't have the Skill, so I don't know how to handle Falcons.";
- mes "As it's for now, I may never have a Falcon.";
- next;
- mes "[Falcon Flute Trader]";
- mes "But I can't give you one for free!";
- mes "I have to make money since i also need to eat!";
- next;
- mes "[Falcon Flute Trader]";
- mes "If you need a Falcon Flute I will sell them for 12,500 zeny. Or is that too expensive?";
- next;
- if (Class == Job_Baby_Hunter || Class == Job_Hunter || Class == Job_Sniper) {
- switch (select("Don't buy one:Buy a Falcon Flute")) {
- case 1:
- mes "[Falcon Flute Trader]";
- mes "That's too bad. If you need one, come back!";
- close;
- case 2:
- if (Zeny >= 12500) {
- if (countitem(12848) >= 1) {
- mes "[Falcon Flute Trader]";
- mes "As i can see you already have an Falcon Flute!";
- mes "Don't worry my young friend, once you've purchased the Falcon Flute you won't need to do so again";
- mes "since the Falcon Flute won't disappear upon usage, isn't that great?";
- close;
- }
- mes "[Falcon Flute Trader]";
- mes "Here, take this Flute.";
- mes "With it you can whistle for your Falcon from anywhere.";
- set Zeny, Zeny - 12500;
- getitem 12848,1; // Falcon Flute
- next;
- mes "[Falcon Flute Trader]";
- mes "Just a reminder.";
- mes "You need the Skill ^ff0000Falcon Mastery^000000 in order to use it!";
- close;
- }
- mes "[Falcon Flute Trader]";
- mes "I'm sorry but you don't have enough money to buy a Falcon Flute, please come back when you have more money!";
- close;
- }
- }
- mes "[Falcon Flute Trader]";
- mes "For Rangers however, I have a special Price of 10,000 zeny!";
- next;
- switch (select("Don't buy one:Buy a Falcon flute")) {
- case 1:
- mes "[Falcon Flute Trader]";
- mes "That's too bad. If you need one, come back!";
- close;
- case 2:
- if (Zeny >= 10000) {
- if (countitem(12848) >= 1) {
- mes "[Falcon Flute Trader]";
- mes "As i can see you already have an Falcon Flute!";
- mes "Don't worry my young friend, once you've purchased the Falcon Flute you won't need to do so again";
- mes "since the Falcon Flute won't disappear upon usage, isn't that great?";
- close;
- }
- mes "[Falcon Flute Trader]";
- mes "Here take this Flute.";
- mes "With it you can whistle for your Falcon from anywhere.";
- set Zeny, Zeny - 10000;
- getitem 12848,1; // Falcon Flute
- next;
- mes "[Falcon Flute Trader]";
- mes "Just a reminder.";
- mes "You need the Skill ^ff0000Falcon Mastery^000000 in order to use it!";
- close;
- }
- mes "[Falcon Flute Trader]";
- mes "I'm sorry but you don't have enough money to buy a Falcon Flute, please come back when you have more money!";
- close;
- }
- }
- if (Class == Job_Baby_Archer || Class == Job_Archer) {
- mes "[Falcon Flute Trader]";
- mes "Hello young one!";
- mes "Currently i can't help you,";
- mes "but why don't you return to me when you've become an great Hunter and learned how to handle Falcons properly?";
- close;
- }
- mes "[Falcon Flute Trader]";
- mes "Isn't it a beautiful Day today?";
- close;
-}
-
-hu_in01,386,306,3 duplicate(fflute) Falcon Flute Trader#fft 51
-pay_arche,91,134,3 duplicate(fflute) Falcon Flute Trader#fft2 51
\ No newline at end of file +//===== rAthena Script ======================================= +//= Falcon Flute Trader +//===== By: ================================================== +//= Masao +//= Credits to Muad_Dib for the translation & Ziu for the +//= Item ID of the Falcon Flute. +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena +//===== Description: ========================================= +//= An NPC which sells you a Falcon Flute so you're able to +//= summon a Falcon wherever you are. +//===== Additional Comments: ================================= +//= 1.0 First Version. [Masao] +//= 1.1 Added Baby Hunter and Baby Ranger check. bugreport:5728 [Masao] +//============================================================ + +- script Falcon Flute Trader::fflute -1,{ + + if (Class == Job_Baby_Hunter || Class == Job_Hunter || Class == Job_Sniper || Class == Job_Baby_Ranger || Class == Job_Ranger || Class == Job_Ranger_T) { + mes "[Falcon Flute Trader]"; + mes "Do you need a Falcon?"; + mes "With a magical Flute, you can call your Falcon from anywhere!"; + next; + mes "[Falcon Flute Trader]"; + mes "It's marvelous, isn't it? Ha ha ha!"; + next; + mes "[Falcon Flute Trader]"; + mes "Why I'm selling these Falcon Flutes?"; + mes "It's because I have no clue how they work."; + mes "Ha ha ha!"; + next; + mes "[Falcon Flute Trader]"; + mes "Of course, you'll need the Skill ^ff0000Falcon Mastery^000000."; + mes "I don't have the Skill, so I don't know how to handle Falcons."; + mes "As it's for now, I may never have a Falcon."; + next; + mes "[Falcon Flute Trader]"; + mes "But I can't give you one for free!"; + mes "I have to make money since i also need to eat!"; + next; + mes "[Falcon Flute Trader]"; + mes "If you need a Falcon Flute I will sell them for 12,500 zeny. Or is that too expensive?"; + next; + if (Class == Job_Baby_Hunter || Class == Job_Hunter || Class == Job_Sniper) { + switch (select("Don't buy one:Buy a Falcon Flute")) { + case 1: + mes "[Falcon Flute Trader]"; + mes "That's too bad. If you need one, come back!"; + close; + case 2: + if (Zeny >= 12500) { + if (countitem(12848) >= 1) { + mes "[Falcon Flute Trader]"; + mes "As i can see you already have an Falcon Flute!"; + mes "Don't worry my young friend, once you've purchased the Falcon Flute you won't need to do so again"; + mes "since the Falcon Flute won't disappear upon usage, isn't that great?"; + close; + } + mes "[Falcon Flute Trader]"; + mes "Here, take this Flute."; + mes "With it you can whistle for your Falcon from anywhere."; + set Zeny, Zeny - 12500; + getitem 12848,1; // Falcon Flute + next; + mes "[Falcon Flute Trader]"; + mes "Just a reminder."; + mes "You need the Skill ^ff0000Falcon Mastery^000000 in order to use it!"; + close; + } + mes "[Falcon Flute Trader]"; + mes "I'm sorry but you don't have enough money to buy a Falcon Flute, please come back when you have more money!"; + close; + } + } + mes "[Falcon Flute Trader]"; + mes "For Rangers however, I have a special Price of 10,000 zeny!"; + next; + switch (select("Don't buy one:Buy a Falcon flute")) { + case 1: + mes "[Falcon Flute Trader]"; + mes "That's too bad. If you need one, come back!"; + close; + case 2: + if (Zeny >= 10000) { + if (countitem(12848) >= 1) { + mes "[Falcon Flute Trader]"; + mes "As i can see you already have an Falcon Flute!"; + mes "Don't worry my young friend, once you've purchased the Falcon Flute you won't need to do so again"; + mes "since the Falcon Flute won't disappear upon usage, isn't that great?"; + close; + } + mes "[Falcon Flute Trader]"; + mes "Here take this Flute."; + mes "With it you can whistle for your Falcon from anywhere."; + set Zeny, Zeny - 10000; + getitem 12848,1; // Falcon Flute + next; + mes "[Falcon Flute Trader]"; + mes "Just a reminder."; + mes "You need the Skill ^ff0000Falcon Mastery^000000 in order to use it!"; + close; + } + mes "[Falcon Flute Trader]"; + mes "I'm sorry but you don't have enough money to buy a Falcon Flute, please come back when you have more money!"; + close; + } + } + if (Class == Job_Baby_Archer || Class == Job_Archer) { + mes "[Falcon Flute Trader]"; + mes "Hello young one!"; + mes "Currently i can't help you,"; + mes "but why don't you return to me when you've become an great Hunter and learned how to handle Falcons properly?"; + close; + } + mes "[Falcon Flute Trader]"; + mes "Isn't it a beautiful Day today?"; + close; +} + +hu_in01,386,306,3 duplicate(fflute) Falcon Flute Trader#fft 51 +pay_arche,91,134,3 duplicate(fflute) Falcon Flute Trader#fft2 51 diff --git a/npc/quests/collection/quest_disguiseloliruri.txt b/npc/quests/collection/quest_disguiseloliruri.txt index 6cd5f2faf..42ff4800c 100644 --- a/npc/quests/collection/quest_disguiseloliruri.txt +++ b/npc/quests/collection/quest_disguiseloliruri.txt @@ -1,150 +1,150 @@ -//===== rAthena Script =======================================
-//= iRO Repeatable EXP Quests.
-//===== By: ==================================================
-//= Masao
-//===== Current Version: =====================================
-//= 1.0
-//===== Compatible With: =====================================
-//= rAthena SVN
-//===== Description: =========================================
-//= Custom Version.
-//= Repeatable EXP Quest : Kill 50 Disguise or Loli Ruri.
-//===== Additional Comments: =================================
-//= 1.0 First version.
-//============================================================
-
-nif_fild02,332,327,4 script Deadman 795,{
-
- if (checkquest(60173) != -1) {
- if (checkquest(60173,HUNTING) != 2 ) {
- mes "[Deadman]";
- mes "Have you finished hunting the 50 Disguise?";
- next;
- switch(select("Yes:No:I want to quit")) {
- case 1:
- mes "[Deadman]";
- mes "Hmm, I don't think you've hunted 50 yet.";
- close;
- case 2:
- mes "[Deadman]";
- mes "Remember, I need help hunting Disguise so go and hunt 50 of them.";
- close;
- case 3:
- mes "[Deadman]";
- mes "Are you sure that you want to stop hunting?";
- mes "Any progress that you've made will be erased";
- next;
- switch(select("Yes:No")) {
- case 1:
- mes "[Deadman]";
- mes "Ok then, well come back here if you change your mind.";
- erasequest 60173;
- close;
- case 2:
- mes "[Deadman]";
- mes "Please kill 50 Disguise in order to make this a Place were people can go to and gather Experience.";
- close;
- }
- }
- }
- mes "[Deadman]";
- mes "Amazing, you did that with speed.";
- getexp 140600,95800;
- erasequest 60173;
- close;
- }
- if (checkquest(60176) != -1) {
- if (checkquest(60176,HUNTING) != 2 ) {
- mes "[Deadman]";
- mes "Have you finished hunting the 50 Loli Ruri?";
- next;
- switch(select("Yes:No:I want to quit")) {
- case 1:
- mes "[Deadman]";
- mes "Hmm, I don't think you've hunted 50 yet.";
- close;
- case 2:
- mes "[Deadman]";
- mes "Remember, I need help hunting Loli Ruri so go and hunt 50 of them.";
- close;
- case 3:
- mes "[Deadman]";
- mes "Are you sure that you want to stop hunting?";
- mes "Any progress that you've made will be erased";
- next;
- switch(select("Yes:No")) {
- case 1:
- mes "[Deadman]";
- mes "Ok then, well come back here if you change your mind.";
- erasequest 60176;
- close;
- case 2:
- mes "[Deadman]";
- mes "Please kill 50 Loli Ruri in order to make this a Place were people can go to and gather Experience.";
- close;
- }
- }
- }
- mes "[Deadman]";
- mes "Amazing, you did that with speed.";
- getexp 332000,239500;
- erasequest 60176;
- close;
- }
- if ((BaseLevel > 59) && (BaseLevel < 99)) {
- mes "[Deadman]";
- mes "Oh great!";
- mes "You are here to help me right?";
- mes "If not, i don't know what to do with the Monsters in this Place!";
- next;
- switch(select("Sure:No")) {
- case 1:
- mes "[Deadman]";
- mes "Great! I knew the moment i saw you that i can count on you!";
- mes "I need you to reduce the Amount of Monsters which are currently rampaging on this Map!";
- mes "There are to many Disguise and Loli Ruri around, which makes it impossible for the lower level players to gain good experience here.";
- next;
- mes "[Deadman]";
- mes "So, which of those Monsters would you like to hunt for me?";
- next;
- switch(select("Disguise:Loli Ruri:Cancel")) {
- case 1:
- if(BaseLevel > 90){
- mes "[Deadman]";
- mes "Thank you for your great help with the Disguise!";
- mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them.";
- close;
- }
- mes "[Deadman]";
- mes "Kill 50 of those Disguise and let me know when you're done. I will reward you for your efforts.";
- setquest 60173;
- close;
- case 2:
- if(BaseLevel > 98){
- mes "[Deadman]";
- mes "Thank you for your great help with the Loli Ruri!";
- mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them.";
- close;
- }
- mes "[Deadman]";
- mes "Kill 50 of those Loli Ruri and let me know when you're done. I will reward you for your efforts.";
- setquest 60176;
- close;
- case 3:
- mes "[Deadman]";
- mes "If you change your mind, please come back.";
- close;
- }
- case 2:
- mes "[Deadman]";
- mes "If you change your mind, please come back.";
- close;
- }
- }
- mes "[Deadman]";
- mes "Oh boy, Oh boy!";
- next;
- mes "[Deadman]";
- mes "Sorry I can't talk right now I am in a world of pain here, these darn Disguise and Loli Ruri are going to kill me.";
- close;
-}
\ No newline at end of file +//===== rAthena Script ======================================= +//= iRO Repeatable EXP Quests. +//===== By: ================================================== +//= Masao +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Custom Version. +//= Repeatable EXP Quest : Kill 50 Disguise or Loli Ruri. +//===== Additional Comments: ================================= +//= 1.0 First version. +//============================================================ + +nif_fild02,332,327,4 script Deadman 795,{ + + if (checkquest(60173) != -1) { + if (checkquest(60173,HUNTING) != 2 ) { + mes "[Deadman]"; + mes "Have you finished hunting the 50 Disguise?"; + next; + switch(select("Yes:No:I want to quit")) { + case 1: + mes "[Deadman]"; + mes "Hmm, I don't think you've hunted 50 yet."; + close; + case 2: + mes "[Deadman]"; + mes "Remember, I need help hunting Disguise so go and hunt 50 of them."; + close; + case 3: + mes "[Deadman]"; + mes "Are you sure that you want to stop hunting?"; + mes "Any progress that you've made will be erased"; + next; + switch(select("Yes:No")) { + case 1: + mes "[Deadman]"; + mes "Ok then, well come back here if you change your mind."; + erasequest 60173; + close; + case 2: + mes "[Deadman]"; + mes "Please kill 50 Disguise in order to make this a Place were people can go to and gather Experience."; + close; + } + } + } + mes "[Deadman]"; + mes "Amazing, you did that with speed."; + getexp 140600,95800; + erasequest 60173; + close; + } + if (checkquest(60176) != -1) { + if (checkquest(60176,HUNTING) != 2 ) { + mes "[Deadman]"; + mes "Have you finished hunting the 50 Loli Ruri?"; + next; + switch(select("Yes:No:I want to quit")) { + case 1: + mes "[Deadman]"; + mes "Hmm, I don't think you've hunted 50 yet."; + close; + case 2: + mes "[Deadman]"; + mes "Remember, I need help hunting Loli Ruri so go and hunt 50 of them."; + close; + case 3: + mes "[Deadman]"; + mes "Are you sure that you want to stop hunting?"; + mes "Any progress that you've made will be erased"; + next; + switch(select("Yes:No")) { + case 1: + mes "[Deadman]"; + mes "Ok then, well come back here if you change your mind."; + erasequest 60176; + close; + case 2: + mes "[Deadman]"; + mes "Please kill 50 Loli Ruri in order to make this a Place were people can go to and gather Experience."; + close; + } + } + } + mes "[Deadman]"; + mes "Amazing, you did that with speed."; + getexp 332000,239500; + erasequest 60176; + close; + } + if ((BaseLevel > 59) && (BaseLevel < 99)) { + mes "[Deadman]"; + mes "Oh great!"; + mes "You are here to help me right?"; + mes "If not, i don't know what to do with the Monsters in this Place!"; + next; + switch(select("Sure:No")) { + case 1: + mes "[Deadman]"; + mes "Great! I knew the moment i saw you that i can count on you!"; + mes "I need you to reduce the Amount of Monsters which are currently rampaging on this Map!"; + mes "There are to many Disguise and Loli Ruri around, which makes it impossible for the lower level players to gain good experience here."; + next; + mes "[Deadman]"; + mes "So, which of those Monsters would you like to hunt for me?"; + next; + switch(select("Disguise:Loli Ruri:Cancel")) { + case 1: + if(BaseLevel > 90){ + mes "[Deadman]"; + mes "Thank you for your great help with the Disguise!"; + mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them."; + close; + } + mes "[Deadman]"; + mes "Kill 50 of those Disguise and let me know when you're done. I will reward you for your efforts."; + setquest 60173; + close; + case 2: + if(BaseLevel > 98){ + mes "[Deadman]"; + mes "Thank you for your great help with the Loli Ruri!"; + mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them."; + close; + } + mes "[Deadman]"; + mes "Kill 50 of those Loli Ruri and let me know when you're done. I will reward you for your efforts."; + setquest 60176; + close; + case 3: + mes "[Deadman]"; + mes "If you change your mind, please come back."; + close; + } + case 2: + mes "[Deadman]"; + mes "If you change your mind, please come back."; + close; + } + } + mes "[Deadman]"; + mes "Oh boy, Oh boy!"; + next; + mes "[Deadman]"; + mes "Sorry I can't talk right now I am in a world of pain here, these darn Disguise and Loli Ruri are going to kill me."; + close; +} diff --git a/npc/quests/collection/quest_mantis.txt b/npc/quests/collection/quest_mantis.txt index ec4e65a5b..5e9249a1c 100644 --- a/npc/quests/collection/quest_mantis.txt +++ b/npc/quests/collection/quest_mantis.txt @@ -1,101 +1,101 @@ -//===== rAthena Script =======================================
-//= iRO Repeatable EXP Quests.
-//===== By: ==================================================
-//= Masao
-//===== Current Version: =====================================
-//= 1.0
-//===== Compatible With: =====================================
-//= rAthena SVN
-//===== Description: =========================================
-//= Custom Version.
-//= Repeatable EXP Quest : Kill 50 Mantis.
-//===== Additional Comments: =================================
-//= 1.0 First version.
-//============================================================
-
-lou_fild01,240,354,4 script Mantis Researcher 878,{
-
- if (checkquest(60179) != -1) {
- if (checkquest(60179,HUNTING) != 2 ) {
- mes "[Mantis Researcher]";
- mes "Have you finished hunting the 50 Mantis?";
- next;
- switch(select("Yes:No:I want to quit")) {
- case 1:
- mes "[Mantis Researcher]";
- mes "Hmm, I don't think you've hunted 50 yet.";
- close;
- case 2:
- mes "[Mantis Researcher]";
- mes "Remember, I need help hunting Mantis so go and hunt 50 of them.";
- close;
- case 3:
- mes "[Mantis Researcher]";
- mes "Are you sure that you want to stop hunting?";
- mes "Any progress that you've made will be erased";
- next;
- switch(select("Yes:No")) {
- case 1:
- mes "[Mantis Researcher]";
- mes "Ok then, well come back here if you change your mind.";
- erasequest 60179;
- close;
- case 2:
- mes "[Mantis Researcher]";
- mes "Please kill 50 Mantis in order to make this a Place were people can go to and gather Experience.";
- close;
- }
- }
- }
- mes "[Mantis Researcher]";
- mes "Amazing, you did that with speed.";
- getexp 18818,7527;
- erasequest 60179;
- close;
- }
- if ((BaseLevel > 34) && (BaseLevel < 71)) {
- mes "[Mantis Researcher]";
- mes "Oh great!";
- mes "You are here to help me right?";
- mes "If not, i don't know what to do with the Monsters in this Place!";
- next;
- switch(select("Sure:No")) {
- case 1:
- mes "[Mantis Researcher]";
- mes "Great! I knew the moment i saw you that i can count on you!";
- mes "I need you to reduce the Amount of Monsters which are currently rampaging on this Map!";
- mes "There are to many Mantis around, which makes it impossible for the lower level players to gain good experience here.";
- next;
- mes "[Mantis Researcher]";
- mes "So, would you still like to help me?";
- next;
- switch(select("Sure:Cancel")) {
- case 1:
- if(BaseLevel > 70){
- mes "[Mantis Researcher]";
- mes "Thank you for your great help with the Mantis!";
- mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them.";
- close;
- }
- mes "[Mantis Researcher]";
- mes "Kill 50 of those Mantis and let me know when you're done. I will reward you for your efforts.";
- setquest 60179;
- close;
- case 2:
- mes "[Mantis Researcher]";
- mes "If you change your mind, please come back.";
- close;
- }
- case 2:
- mes "[Mantis Researcher]";
- mes "If you change your mind, please come back.";
- close;
- }
- }
- mes "[Mantis Researcher]";
- mes "Oh boy, Oh boy!";
- next;
- mes "[Mantis Researcher]";
- mes "Sorry I can't talk right now I am in a world of pain here, these darn Mantis are going to kill me.";
- close;
-}
\ No newline at end of file +//===== rAthena Script ======================================= +//= iRO Repeatable EXP Quests. +//===== By: ================================================== +//= Masao +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Custom Version. +//= Repeatable EXP Quest : Kill 50 Mantis. +//===== Additional Comments: ================================= +//= 1.0 First version. +//============================================================ + +lou_fild01,240,354,4 script Mantis Researcher 878,{ + + if (checkquest(60179) != -1) { + if (checkquest(60179,HUNTING) != 2 ) { + mes "[Mantis Researcher]"; + mes "Have you finished hunting the 50 Mantis?"; + next; + switch(select("Yes:No:I want to quit")) { + case 1: + mes "[Mantis Researcher]"; + mes "Hmm, I don't think you've hunted 50 yet."; + close; + case 2: + mes "[Mantis Researcher]"; + mes "Remember, I need help hunting Mantis so go and hunt 50 of them."; + close; + case 3: + mes "[Mantis Researcher]"; + mes "Are you sure that you want to stop hunting?"; + mes "Any progress that you've made will be erased"; + next; + switch(select("Yes:No")) { + case 1: + mes "[Mantis Researcher]"; + mes "Ok then, well come back here if you change your mind."; + erasequest 60179; + close; + case 2: + mes "[Mantis Researcher]"; + mes "Please kill 50 Mantis in order to make this a Place were people can go to and gather Experience."; + close; + } + } + } + mes "[Mantis Researcher]"; + mes "Amazing, you did that with speed."; + getexp 18818,7527; + erasequest 60179; + close; + } + if ((BaseLevel > 34) && (BaseLevel < 71)) { + mes "[Mantis Researcher]"; + mes "Oh great!"; + mes "You are here to help me right?"; + mes "If not, i don't know what to do with the Monsters in this Place!"; + next; + switch(select("Sure:No")) { + case 1: + mes "[Mantis Researcher]"; + mes "Great! I knew the moment i saw you that i can count on you!"; + mes "I need you to reduce the Amount of Monsters which are currently rampaging on this Map!"; + mes "There are to many Mantis around, which makes it impossible for the lower level players to gain good experience here."; + next; + mes "[Mantis Researcher]"; + mes "So, would you still like to help me?"; + next; + switch(select("Sure:Cancel")) { + case 1: + if(BaseLevel > 70){ + mes "[Mantis Researcher]"; + mes "Thank you for your great help with the Mantis!"; + mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them."; + close; + } + mes "[Mantis Researcher]"; + mes "Kill 50 of those Mantis and let me know when you're done. I will reward you for your efforts."; + setquest 60179; + close; + case 2: + mes "[Mantis Researcher]"; + mes "If you change your mind, please come back."; + close; + } + case 2: + mes "[Mantis Researcher]"; + mes "If you change your mind, please come back."; + close; + } + } + mes "[Mantis Researcher]"; + mes "Oh boy, Oh boy!"; + next; + mes "[Mantis Researcher]"; + mes "Sorry I can't talk right now I am in a world of pain here, these darn Mantis are going to kill me."; + close; +} diff --git a/npc/quests/collection/quest_zhupolong.txt b/npc/quests/collection/quest_zhupolong.txt index f33e4e6ff..bf3999683 100644 --- a/npc/quests/collection/quest_zhupolong.txt +++ b/npc/quests/collection/quest_zhupolong.txt @@ -1,101 +1,101 @@ -//===== rAthena Script =======================================
-//= iRO Repeatable EXP Quests.
-//===== By: ==================================================
-//= Masao
-//===== Current Version: =====================================
-//= 1.0
-//===== Compatible With: =====================================
-//= rAthena SVN
-//===== Description: =========================================
-//= Custom Version.
-//= Repeatable EXP Quest : Kill 50 Zhu Po Long.
-//===== Additional Comments: =================================
-//= 1.0 First version.
-//============================================================
-
-lou_dun02,161,264,4 script Dragon Hunter 732,{
-
- if (checkquest(60182) != -1) {
- if (checkquest(60182,HUNTING) != 2 ) {
- mes "[Dragon Hunter]";
- mes "Have you finished hunting the 50 Zhu Po Long?";
- next;
- switch(select("Yes:No:I want to quit")) {
- case 1:
- mes "[Dragon Hunter]";
- mes "Hmm, I don't think you've hunted 50 yet.";
- close;
- case 2:
- mes "[Dragon Hunter]";
- mes "Remember, I need help hunting Zhu Po Long so go and hunt 50 of them.";
- close;
- case 3:
- mes "[Dragon Hunter]";
- mes "Are you sure that you want to stop hunting?";
- mes "Any progress that you've made will be erased";
- next;
- switch(select("Yes:No")) {
- case 1:
- mes "[Dragon Hunter]";
- mes "Ok then, well come back here if you change your mind.";
- erasequest 60182;
- close;
- case 2:
- mes "[Dragon Hunter]";
- mes "Please kill 50 Zhu Po Long in order to make this a Place were people can go to and gather Experience.";
- close;
- }
- }
- }
- mes "[Dragon Hunter]";
- mes "Amazing, you did that with speed.";
- getexp 151300,60520;
- erasequest 60182;
- close;
- }
- if ((BaseLevel > 49) && (BaseLevel < 91)) {
- mes "[Dragon Hunter]";
- mes "Oh great!";
- mes "You are here to help me right?";
- mes "If not, i don't know what to do with the Monsters in this Place!";
- next;
- switch(select("Sure:No")) {
- case 1:
- mes "[Dragon Hunter]";
- mes "Great! I knew the moment i saw you that i can count on you!";
- mes "I need you to reduce the Amount of Monsters which are currently rampaging on this Map!";
- mes "There are to many Zhu Po Long around, which makes it impossible for the lower level players to gain good experience here.";
- next;
- mes "[Dragon Hunter]";
- mes "So, would you still like to help me?";
- next;
- switch(select("Sure:Cancel")) {
- case 1:
- if(BaseLevel > 90){
- mes "[Dragon Hunter]";
- mes "Thank you for your great help with the Zhu Po Long!";
- mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them.";
- close;
- }
- mes "[Dragon Hunter]";
- mes "Kill 50 of those Zhu Po Long and let me know when you're done. I will reward you for your efforts.";
- setquest 60182;
- close;
- case 2:
- mes "[Dragon Hunter]";
- mes "If you change your mind, please come back.";
- close;
- }
- case 2:
- mes "[Dragon Hunter]";
- mes "If you change your mind, please come back.";
- close;
- }
- }
- mes "[Dragon Hunter]";
- mes "Oh boy, Oh boy!";
- next;
- mes "[Dragon Hunter]";
- mes "Sorry I can't talk right now I am in a world of pain here, these darn Zhu Po Long are going to kill me.";
- close;
-}
\ No newline at end of file +//===== rAthena Script ======================================= +//= iRO Repeatable EXP Quests. +//===== By: ================================================== +//= Masao +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Custom Version. +//= Repeatable EXP Quest : Kill 50 Zhu Po Long. +//===== Additional Comments: ================================= +//= 1.0 First version. +//============================================================ + +lou_dun02,161,264,4 script Dragon Hunter 732,{ + + if (checkquest(60182) != -1) { + if (checkquest(60182,HUNTING) != 2 ) { + mes "[Dragon Hunter]"; + mes "Have you finished hunting the 50 Zhu Po Long?"; + next; + switch(select("Yes:No:I want to quit")) { + case 1: + mes "[Dragon Hunter]"; + mes "Hmm, I don't think you've hunted 50 yet."; + close; + case 2: + mes "[Dragon Hunter]"; + mes "Remember, I need help hunting Zhu Po Long so go and hunt 50 of them."; + close; + case 3: + mes "[Dragon Hunter]"; + mes "Are you sure that you want to stop hunting?"; + mes "Any progress that you've made will be erased"; + next; + switch(select("Yes:No")) { + case 1: + mes "[Dragon Hunter]"; + mes "Ok then, well come back here if you change your mind."; + erasequest 60182; + close; + case 2: + mes "[Dragon Hunter]"; + mes "Please kill 50 Zhu Po Long in order to make this a Place were people can go to and gather Experience."; + close; + } + } + } + mes "[Dragon Hunter]"; + mes "Amazing, you did that with speed."; + getexp 151300,60520; + erasequest 60182; + close; + } + if ((BaseLevel > 49) && (BaseLevel < 91)) { + mes "[Dragon Hunter]"; + mes "Oh great!"; + mes "You are here to help me right?"; + mes "If not, i don't know what to do with the Monsters in this Place!"; + next; + switch(select("Sure:No")) { + case 1: + mes "[Dragon Hunter]"; + mes "Great! I knew the moment i saw you that i can count on you!"; + mes "I need you to reduce the Amount of Monsters which are currently rampaging on this Map!"; + mes "There are to many Zhu Po Long around, which makes it impossible for the lower level players to gain good experience here."; + next; + mes "[Dragon Hunter]"; + mes "So, would you still like to help me?"; + next; + switch(select("Sure:Cancel")) { + case 1: + if(BaseLevel > 90){ + mes "[Dragon Hunter]"; + mes "Thank you for your great help with the Zhu Po Long!"; + mes "Currently the Situation is stable and i'm not in need of your help anymore to kill them."; + close; + } + mes "[Dragon Hunter]"; + mes "Kill 50 of those Zhu Po Long and let me know when you're done. I will reward you for your efforts."; + setquest 60182; + close; + case 2: + mes "[Dragon Hunter]"; + mes "If you change your mind, please come back."; + close; + } + case 2: + mes "[Dragon Hunter]"; + mes "If you change your mind, please come back."; + close; + } + } + mes "[Dragon Hunter]"; + mes "Oh boy, Oh boy!"; + next; + mes "[Dragon Hunter]"; + mes "Sorry I can't talk right now I am in a world of pain here, these darn Zhu Po Long are going to kill me."; + close; +} diff --git a/npc/quests/eden/56-70.txt b/npc/quests/eden/56-70.txt index da30977ce..c810aa3d3 100644 --- a/npc/quests/eden/56-70.txt +++ b/npc/quests/eden/56-70.txt @@ -1,1439 +1,1439 @@ -//===== rAthena Script =======================================
-// Eden Group Quests - Mission [56 - 70]
-//===== By: ==================================================
-//= L0ne_W0lf
-//===== Current Version: =====================================
-//= 1.1
-//===== Compatible With: =====================================
-//= rAthena SVN
-//===== Description: =========================================
-//= Repetable Quests for Players between Baselevel 55 - 71 .
-//===== Additional Comments: =================================
-//= 1.0 First Version.
-//= 1.1 Some little optimization here and there. [Masao]
-//============================================================
-
-moc_para01,42,38,3 script Mission [56 - 70] 857,{
-
- if (countitem(6219) > 0) {
- if (checkquest(3259) > -1) {
- erasequest 3259;
- }
- if (checkquest(3253) > -1) {
- erasequest 3253;
- }
- if (checkquest(3265) > -1) {
- erasequest 3265;
- }
- mes "Here is the list of various adventures for level 55~70 adventurers.";
- next;
- mes "Lots of missions such as a Monster Hunting, Delivery Goods, Finding People.";
- next;
- switch (select("Mission Numbers 1~5:Mission Numbers 6~10:Mission Numbers 11~15")) {
- case 1:
- switch (select("What is this Bandage?:Dangerous Alligators.:That wasn't a mermaid...:My country is calling me!")) {
- case 1:
- if (checkquest(3250) == 0) {
- mes "This mission is assigned by the Rekenber corporation from Lighthalzen. Below are the details.";
- next;
- mes "Rekenber corporation is about to launch a new project called 'Green Medical Center'. For the first product of the project, we are preparing well-being Bandages.";
- next;
- mes "Regarding the project, we need to research monster's reactions when they are wrapped with Rotten Bandages.";
- next;
- mes "If you are interested, please hunt 30 Mummies and bring 30 Rotten Bandages. You can find them in the Pyramid West of Morroc.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "- Rekenber corporation chief director 'Julie E Delph' -";
- next;
- mes " ";
- next;
- mes "Would you like to accept this mission?";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3250;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3250,HUNTING) == 1) {
- mes "You have an on-going mission. Would you like to check the details?";
- next;
- switch (select("Check the details.:Cancel.")) {
- case 1:
- mes "This mission is assigned by the Rekenber corporation from Lighthalzen. Below are the details.";
- next;
- mes "Rekenber corporation is about to launch a new project called 'Green Medical Center'. For the first product of the project, we are preparing well-being Bandages.";
- next;
- mes "Regarding the project, we need to research monster's reactions when they are wrapped with Rotten Bandages.";
- next;
- mes "If you are interested, please hunt 30 Mummies and bring 30 Rotten Bandages. You can find them in the Pyramid West of Morroc.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "- Rekenber corporation chief director 'Julie E Delph' -";
- close;
- case 2:
- close;
- }
- }
- if ((checkquest(3250,HUNTING) == 2) && (countitem(930) > 19)) {
- mes "I have done pretty well for the mission. Should I report it now?";
- next;
- switch (select("Report the mission.:Do not report it yet.")) {
- case 1:
- delitem 930,20; //Rotten_Bandage
- getexp 15000,5000;
- erasequest 3250;
- mes "You have completed the mission. Get rewards.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3250) == 2) {
- mes "This mission is assigned by the Rekenber corporation from Lighthalzen. Below are the details.";
- next;
- mes "Rekenber corporation is about to launch a new project called 'Green Medical Center'. For the first product of the project, we are preparing well-being Bandages.";
- next;
- mes "Regarding the project, we need to research monster's reactions when they are wrapped with Rotten Bandages.";
- next;
- mes "If you are interested, please hunt 30 Mummies and bring 30 Rotten Bandages. You can find them in the Pyramid West of Morroc.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "- Rekenber corporation chief director 'Julie E Delph' -";
- next;
- mes " ";
- next;
- mes "Would you like to accept this mission?";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3250;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- close;
- case 2:
- if (checkquest(3251) == 0) {
- mes "This mission is assigned by the Comodo cooperative society. Below are the details.";
- next;
- mes "Alligators have gone wild these days, they attack women and drunken people who hang out near the beach.";
- next;
- mes "This is a very shameful situation for us, the most wonderful vacation spot in Rune-Midgard.";
- next;
- mes "So, it would be very helpful if you hunt 30 Alligators to clean out this situation.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes " ";
- next;
- mes "Would you like to accept this mission?";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3251;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3251,HUNTING) == 1) {
- mes "You have an on-going mission. Would you like to check the details?";
- next;
- switch (select("Check the details.:Cancel.")) {
- case 1:
- mes "This mission is assigned by the Comodo cooperative society. Below are the details.";
- next;
- mes "Alligators have gone wild these days, they attack women and drunken people who hang out near the beach.";
- next;
- mes "This is a very shameful situation for us, the most wonderful vacation spot in Rune-Midgard.";
- next;
- mes "So, it would be very helpful if you hunt 30 Alligators to clean out this situation.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3251,HUNTING) == 2) {
- mes "I have done pretty well for the mission. Should I report it now?";
- next;
- switch (select("Report the mission.:Do not report it yet.")) {
- case 1:
- getexp 16000,6000;
- erasequest 3251;
- mes "You have completed the mission. Get rewards.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3251) == 2) {
- mes "This mission is assigned by the Comodo cooperative society. Below are the details.";
- next;
- mes "Alligators have gone wild these days, they attack women and drunken people who hang out near the beach.";
- next;
- mes "This is a very shameful situation for us, the most wonderful vacation spot in Rune-Midgard.";
- next;
- mes "So, it would be very helpful if you hunt 30 Alligators to clean out this situation.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes " ";
- next;
- mes "Would you like to accept this mission?";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3251;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- close;
- case 3:
- if (checkquest(3252) == 0) {
- mes "This mission is assigned by an unknown client from Izlude.";
- next;
- mes "I have admired the beach of Izlude, ever since I was born.";
- next;
- mes "When I was young, I found a mysterious creature in the Izlude dungeon, I had never seen something like that before...";
- next;
- mes "I instantly thought it was a mermaid. I was so supprised, I have studied about mermaids in whole my life.";
- next;
- mes "But, as I studied harder, I found that the creature was not a mermaid... yes, It wasn't beautiful at all like other mermaids...";
- next;
- mes "I finally tracked down the fact that it was a Merman, not a Mermaid!";
- next;
- mes "Merman... I have wasted my life studying this monster! So please hunt 30 Mermans to make me feel better.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Izlude 'The Lost dream mermaid' --";
- next;
- mes " ";
- next;
- mes "Would you like to accept this mission?";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3252;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3252,HUNTING) == 1) {
- mes "You have an on-going mission. Would you like to check the details?";
- next;
- switch (select("Check the details.:Cancel.")) {
- case 1:
- mes "This mission is assigned by an unknown client from Izlude.";
- next;
- mes "I have admired the beach of Izlude, ever since I was born.";
- next;
- mes "When I was young, I found a mysterious creature in the Izlude dungeon, I had never seen something like that before.";
- next;
- mes "I instantly thought it was a mermaid. I was so supprised, I have studied about mermaids in whole my life.";
- next;
- mes "But, as I studied harder, I found that the creature was not a mermaid... yes, It wasn't beautiful at all like other mermaids...";
- next;
- mes "I finally tracked down the fact that it was a Merman, not a Mermaid!";
- next;
- mes " Merman... I have wasted my life studying this monster! So please hunt 30 Mermans to make me feel better.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Izlude 'The Lost dream mermaid' --";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3252,HUNTING) == 2) {
- mes "I have done pretty well for the mission. Should I report it now?";
- next;
- switch (select("Report the mission.:Do not report it yet.")) {
- case 1:
- getexp 17000,8000;
- erasequest 3252;
- mes "You have completed the mission. Get rewards.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3252) == 2) {
- mes "This mission is assigned by an unknown client from Izlude.";
- next;
- mes "I have admired the beach of Izlude, ever since I was born.";
- next;
- mes "When I was young, I found a mysterious creature in the Izlude dungeon, I had never seen something like that before.";
- next;
- mes "I instantly thought it was a mermaid. I was so supprised, I have studied about mermaids in whole my life.";
- next;
- mes "But, as I studied harder, I found that the creature was not a mermaid... yes, It wasn't beautiful at all like other mermaids...";
- next;
- mes "I finally tracked down the fact that it was a Merman, not a Mermaid!";
- next;
- mes "Merman... I have wasted my life studying this monster! So please hunt 30 Mermans to make me feel better.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Izlude 'The Lost dream mermaid' --";
- next;
- mes " ";
- next;
- mes "Would you like to accept this mission?";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3252;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- close;
- case 4:
- if (checkquest(3254) == 0) {
- mes "This mission is assigned by the government officer of the Rune-Midgarts Kingdom.";
- next;
- mes "To prevent a flood in Prontera, we decided to build a huge dam to regulate the water supply.";
- next;
- mes "But, we are shorthanded on supplies and we need to collect Fine Sand and Grit.";
- next;
- mes "So, we would like to ask for help. People, please bring us 10 Fine Sand and 30 Grit each so we can build the dam.";
- next;
- mes "You can get those materials from Sand Man, I wish you good luck!";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Government officer of the Rune-Midgarts Kingdom, Dufre Kent --";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3254;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- if ((checkquest(3254) == 1) && (countitem(7043) < 10) && (countitem(1056) < 30)) {
- mes "You have an on-going mission. Would you like to check the details?";
- next;
- switch (select("Check the details.:Cancel.")) {
- case 1:
- mes "This mission is assigned by the government officer of the Rune-Midgarts Kingdom.";
- next;
- mes "To prevent a flood in Prontera, we decided to build a huge dam to regulate the water supply.";
- next;
- mes "But, we are shorthanded on supplies and we need to collect Fine Sand and Grit.";
- next;
- mes "So, we would like to ask for help. People, please bring us 10 Fine Sand and 30 Grit each so we can build the dam.";
- next;
- mes "You can get those materials from Sand Man, I wish you good luck!";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Government officer of the Rune-Midgarts Kingdom, Dufre Kent --";
- close;
- case 2:
- close;
- }
- }
- if ((checkquest(3254) == 1) && (countitem(7043) > 9) && (countitem(1056) > 29)) {
- mes "I have done pretty well for the mission. Should I report it now?";
- next;
- switch (select("Report the mission.:Do not report it yet.")) {
- case 1:
- delitem 7043,10; //Fine_Sand
- delitem 1056,30; //Grit
- getexp 18000,8000;
- erasequest 3254;
- mes "You have completed the mission. Get rewards.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3254) == 2) {
- mes "This mission is assigned by the government officer of the Rune-Midgarts Kingdom.";
- next;
- mes "To prevent a flood in Prontera, we decided to build a huge dam to regulate the water supply.";
- next;
- mes "But, we are shorthanded on supplies and we need to collect Fine Sand and Grit.";
- next;
- mes "So, we would like to ask for help. People, please bring us 10 Fine Sand and 30 Grit each so we can build the dam.";
- next;
- mes "You can get those materials from Sand Man, I wish you good luck!";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Government officer of the Rune-Midgarts Kingdom, Dufre Kent --";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3254;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- close;
- }
- case 2:
- switch (select("Hunt Wild Boar:Preparing the Summer:A Woman's Grudge:Special ingredients:Puppet Master's Agony")) {
- case 1:
- if (checkquest(3255) == 0) {
- mes "This mission is assigned by the Payon town hall.";
- next;
- mes "Wild animals are always annoyances to farmers.";
- next;
- mes "They attack our farm and ruin whole crops!! We can't stand it anymore!";
- next;
- mes "So, we would like to ask for the help from brave adventurers.";
- next;
- mes "Please, hunt 30 Savages to save our crops!";
- next;
- mes "You can easily find those monsters around our town and field.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Payon town hall members --";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3255;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3255,HUNTING) == 1) {
- mes "You have an on-going mission. Would you like to check the details?";
- next;
- switch (select("Check the details.:Cancel.")) {
- case 1:
- mes "This mission is assigned by the Payon town hall.";
- next;
- mes "Wild animals are always annoyances to farmers.";
- next;
- mes "They attack our farm and ruin whole crops!! We can't stand it anymore!";
- next;
- mes "???????????????ð??????????????j??????????????????";
- next;
- mes "Please, hunt 30 Savages to save our crops!";
- next;
- mes "You can easily find those monsters around our town and field.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Payon town hall members --";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3255,HUNTING) == 2) {
- mes "I have done pretty well for the mission. Should I report it now?";
- next;
- switch (select("Report the mission.:Do not report it yet.")) {
- case 1:
- getexp 16000,7000;
- erasequest 3255;
- mes "You have completed the mission. Get rewards.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3255) == 2) {
- mes "This mission is assigned by the Payon town hall.";
- next;
- mes "Wild animals are always annoyances to farmers.";
- next;
- mes "They attack our farm and ruin whole crops!! We can't stand it anymore!";
- next;
- mes "???????????????ð??????????????j??????????????????";
- next;
- mes "Please, hunt 30 Savages to save our crops!";
- next;
- mes "You can easily find those monsters around our town and field.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Payon town hall members --";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3255;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- close;
- case 2:
- if (checkquest(3256) == 0) {
- mes "This mission is assigned by the Morroc blacksmith Aragham.";
- next;
- mes "Hello~~~~, Adventurers! This is Aragham, the hottest blacksmith in Morroc!";
- next;
- mes "Anyway, I have a son named Aragam Junior, the cute one. Haha.";
- next;
- mes "He will be attending summer camp this summer, but he doesn't know how to swim.";
- next;
- mes "I want to teach him, but as you know I am a blacksmith, a far cry from swimming! Hehe.";
- next;
- mes "But, I figured that if I make swim fins, it will be great for his confidence~!";
- next;
- mes "To make it, I need 30 Sticky Webfoots from a Roda Frog. Can you bring them to me?";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "PS. Do not compare me with Hollgrehenn or Antonio!!!!";
- next;
- mes "-- The hottest blacksmith, Morroc blacksmith Aragham --";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3256;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- if ((checkquest(3256) == 1) && (countitem(918) < 30)) {
- mes "You have an on-going mission. Would you like to check the details?";
- next;
- switch (select("Check the details.:Cancel.")) {
- case 1:
- mes "This mission is assigned by the Morroc blacksmith Aragham.";
- next;
- mes "Hello~~~~, Adventurers! This is Aragham, the hottest blacksmith in Morroc!";
- next;
- mes "Anyway, I have a son named Aragam Junior, the cute one. Haha.";
- next;
- mes "He will be attending summer camp this summer, but he doesn't know how to swim.";
- next;
- mes "I want to teach him, but as you know I am a blacksmith, a far cry from swimming! Hehe.";
- next;
- mes "But, I figured that if I make swim fins, it will be great for his confidence~!";
- next;
- mes "To make it, I need 30 Sticky Webfoots from a Roda Frog. Can you bring them to me?";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "PS. Do not compare me with Hollgrehenn or Antonio!!!!";
- next;
- mes "-- The hottest blacksmith, Morroc blacksmith Aragham --";
- close;
- case 2:
- close;
- }
- }
- if ((checkquest(3256) == 1) && (countitem(918) > 29)) {
- mes "I have done pretty well for the mission. Should I report it now?";
- next;
- switch (select("Report the mission.:Do not report it yet.")) {
- case 1:
- delitem 918,30; //Sticky_Webfoot
- getexp 15000,5000;
- erasequest 3256;
- mes "You have completed the mission. Get rewards.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3256) == 2) {
- mes "This mission is assigned by the Morroc blacksmith Aragham.";
- next;
- mes "Hello~~~~, Adventurers! This is Aragham, the hottest blacksmith in Morroc!";
- next;
- mes "Anyway, I have a son named Aragam Junior, the cute one. Haha.";
- next;
- mes "He will be attending summer camp this summer, but he doesn't know how to swim.";
- next;
- mes "I want to teach him, but as you know I am a blacksmith, a far cry from swimming! Hehe.";
- next;
- mes "But, I figured that if I make swim fins, it will be great for his confidence~!";
- next;
- mes "To make it, I need 30 Sticky Webfoots from a Roda Frog. Can you bring them to me?";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "PS. Do not compare me with Hollgrehenn or Antonio!!!!";
- next;
- mes "-- The hottest blacksmith, Morroc blacksmith Aragham --";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3256;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- close;
- case 3:
- if (checkquest(3257) == 0) {
- mes "This mission is assigned by an inventor Dorian from Izlude.";
- next;
- mes "Have you heard the story that if women have a grudge on their mind, it will bring natural disasters.";
- next;
- mes "Wow, so guys must watch out for those sensitive women! Make sure they don't have any grudges on you.";
- next;
- mes "Women can bring strange phenomenons with them!";
- next;
- mes "I am so intrigued with that story that I'm trying to prove that it can be true.";
- next;
- mes "So I need to make women upset! Haha, I know what a mean idea, right?";
- next;
- mes "But this is seriously just for studying... So please hunt 30 Sohee's who seems to be revived from victimized souls.";
- next;
- mes "So I can keep observing the case.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Elegance inventor Dorian --";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3257;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3257,HUNTING) == 1) {
- mes "You have an on-going mission. Would you like to check the details?";
- next;
- switch (select("Check the details.:Cancel.")) {
- case 1:
- mes "This mission is assigned by an inventor Dorian from Izlude.";
- next;
- mes "Have you heard the story that if women have a grudge on their mind, it will bring natural disasters.";
- next;
- mes "Wow, so guys must watch out for those sensitive women! Make sure they don't have any grudges on you.";
- next;
- mes "Women can bring strange phenomenons with them!";
- next;
- mes "I am so intrigued with that story that I'm trying to prove that it can be true.";
- next;
- mes "So I need to make women upset! Haha, I know what a mean idea, right?";
- next;
- mes "But this is seriously just for studying... So please hunt 30 Sohee's who seems to be revived from victimized souls.";
- next;
- mes "So I can keep observing the case.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Elegance inventor Dorian --";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3257,HUNTING) == 2) {
- mes "I have done pretty well for the mission. Should I report it now?";
- next;
- switch (select("Report the mission.:Do not report it yet.")) {
- case 1:
- getexp 17000,8000;
- erasequest 3257;
- mes "You have completed the mission. Get rewards.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3257) == 2) {
- mes "This mission is assigned by an inventor Dorian from Izlude.";
- next;
- mes "Have you heard the story that if women have a grudge on their mind, it will bring natural disasters.";
- next;
- mes "Wow, so guys must watch out for those sensitive women! Make sure they don't have any grudges on you.";
- next;
- mes "Women can bring strange phenomenons with them!";
- next;
- mes "I am so intrigued with that story that I'm trying to prove that it can be true.";
- next;
- mes "So I need to make women upset! Haha, I know what a mean idea, right?";
- next;
- mes "But this is seriously just for studying... So please hunt 30 Sohee's who seems to be revived from victimized souls.";
- next;
- mes "So I can keep observing the case.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Elegance inventor Dorian --";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3257;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- close;
- case 4:
- if (checkquest(3258) == 0) {
- mes "This mission is assigned by Wallah from Payon.";
- next;
- mes "Hello, adventurer. How are you? How is your health?";
- next;
- mes "I am a pharmacist and I am having a hard time getting special ingredients lately.";
- next;
- mes "Because I am a little sensitive girl, how can I possibly get those things by myself.";
- next;
- mes "So, please help me. Just bring 40 Huge Leafs to me, that will be enough to complete my special medicine!";
- next;
- mes "Please bring it as soon as possible, people need my medicine.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Wallah --";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3258;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- if ((checkquest(3258) == 1) && (countitem(7198) < 40)) {
- mes "You have an on-going mission. Would you like to check the details?";
- next;
- switch (select("Check the details.:Cancel.")) {
- case 1:
- mes "This mission is assigned by Wallah from Payon.";
- next;
- mes "Hello, adventurer. How are you? How is your health?";
- next;
- mes "I am a pharmacist and I am having a hard time getting special ingredients lately.";
- next;
- mes "Because I am a little sensitive girl, how can I possibly get those things by myself.";
- next;
- mes "So, please help me. Just bring 40 Huge Leafs to me, that will be enough to complete my special medicine!";
- next;
- mes "Please bring it as soon as possible, people need my medicine.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Wallah --";
- close;
- case 2:
- close;
- }
- }
- if ((checkquest(3258) == 1) && (countitem(7198) > 39)) {
- mes "I have done pretty well for the mission. Should I report it now?";
- next;
- switch (select("Report the mission.:Do not report it yet.")) {
- case 1:
- delitem 7198,40; //Great_Leaf
- getexp 16000,7000;
- erasequest 3258;
- mes "You have completed the mission. Get rewards.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3258) == 2) {
- mes "This mission is assigned by Wallah from Payon.";
- next;
- mes "Hello, adventurer. How are you? How is your health?";
- next;
- mes "I am a pharmacist and I am having a hard time getting special ingredients lately.";
- next;
- mes "Because I am a little sensitive girl, how can I possibly get those things by myself.";
- next;
- mes "So, please help me. Just bring 40 Huge Leafs to me, that will be enough to complete my special medicine!";
- next;
- mes "Please bring it as soon as possible, people need my medicine.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Wallah --";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3258;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- close;
- case 5:
- if (checkquest(12217) == 0) {
- mes "This mission is assigned by puppet master Woonute from Geffen.";
- next;
- mes "You know being a puppet master is kind of a hard job to satisfy people.";
- next;
- mes "People can search and see so many different things on their own thesedays.";
- next;
- mes "Their expectations are getting high, I can't satisfy them anymore.";
- next;
- mes "But if I can make new toy concepts, like living toys, it will be ground breaking.";
- next;
- mes "I heard that there are live dolls called Marionettes. Can you hunt 30 Marionettes for me? And also bring 30 Golden Hair, those will be great materials for the new toys.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Puppet Master Woonute --";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 12217;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- if ((checkquest(12217,HUNTING) == 1) && (countitem(1060) < 30)) {
- mes "You have an on-going mission. Would you like to check the details?";
- next;
- switch (select("Check the details.:Cancel.")) {
- case 1:
- mes "This mission is assigned by puppet master Woonute from Geffen.";
- next;
- mes "You know being a puppet master is kind of a hard job to satisfy people.";
- next;
- mes "People can search and see so many different things on their own thesedays.";
- next;
- mes "Their expectations are getting high, I can't satisfy them anymore.";
- next;
- mes "But if I can make new toy concepts, like living toys, it will be ground breaking.";
- next;
- mes "I heard that there are live dolls called Marionettes. Can you hunt 30 Marionettes for me? And also bring 30 Golden Hair, those will be great materials for the new toys.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Puppet Master Woonute --";
- close;
- case 2:
- close;
- }
- }
- if ((checkquest(12217,HUNTING) == 2) && (countitem(1060) > 29)) {
- mes "I have done pretty well for the mission. Should I report it now?";
- next;
- switch (select("Report the mission.:Do not report it yet.")) {
- case 1:
- delitem 1060,30; //Golden_Hair
- getexp 17000,7000;
- erasequest 3259;
- mes "You have completed the mission. Get rewards.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(12217) == 2) {
- mes "This mission is assigned by puppet master Woonute from Geffen.";
- next;
- mes "You know being a puppet master is kind of a hard job to satisfy people.";
- next;
- mes "People can search and see so many different things on their own thesedays.";
- next;
- mes "Their expectations are getting high, I can't satisfy them anymore.";
- next;
- mes "But if I can make new toy concepts, like living toys, it will be ground breaking.";
- next;
- mes "I heard that there are live dolls called Marionettes. Can you hunt 30 Marionettes for me? And also bring 30 Golden Hair, those will be great materials for the new toys.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Puppet Master Woonute --";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 12217;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- close;
- }
- case 3:
- switch (select("Tiresome Flies:Dangerous Munak:Make the World green:Magic Wand")) {
- case 1:
- if (checkquest(3260) == 0) {
- mes "This mission is assigned by an exterminator from Prontera.";
- next;
- mes "As the weather gets warmer, insects multiply more and more. It is already out of control.";
- next;
- mes "People in Prontera cannot sleep because of all the bugs in their house.";
- next;
- mes "So, please help us, hunt 30 Hunter Flies. Then the flies can be reduced slowly.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- The Prontera exterminator --";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3260;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3260,HUNTING) == 1) {
- mes "You have an on-going mission. Would you like to check the details?";
- next;
- switch (select("Check the details.:Cancel.")) {
- case 1:
- mes "This mission is assigned by an exterminator from Prontera.";
- next;
- mes "As the weather gets warmer, insects multiply more and more. It is already out of control.";
- next;
- mes "People in Prontera cannot sleep because of all the bugs in their house.";
- next;
- mes "So, please help us, hunt 30 Hunter Flies. Then the flies can be reduced slowly.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- The Prontera exterminator --";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3260,HUNTING) == 2) {
- mes "I have done pretty well for the mission. Should I report it now?";
- next;
- switch (select("Report the mission.:Do not report it yet.")) {
- case 1:
- getexp 16000,6000;
- erasequest 3260;
- mes "You have completed the mission. Get rewards.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3260) == 2) {
- mes "This mission is assigned by an exterminator from Prontera.";
- next;
- mes "As the weather gets warmer, insects multiply more and more. It is already out of control.";
- next;
- mes "People in Prontera cannot sleep because of all the bugs in their house.";
- next;
- mes "So, please help us, hunt 30 Hunter Flies. Then the flies can be reduced slowly.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- The Prontera exterminator --";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3260;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- close;
- case 2:
- if (checkquest(3261) == 0) {
- mes "This mission is assigned by Cheese Dongja from Payon.";
- next;
- mes "Have you heard about Munak?";
- next;
- mes "The ugly monster Munak is threatening people in Payon.";
- next;
- mes "So we need brave adventurers like you!";
- next;
- mes "Please hunt 30 Munaks then Payon will be in peace.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "- Payon Cheese Dongja -";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3261;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3261,HUNTING) == 1) {
- mes "You have an on-going mission. Would you like to check the details?";
- next;
- switch (select("Check the details.:Cancel.")) {
- case 1:
- mes "This mission is assigned by Cheese Dongja from Payon.";
- next;
- mes "Have you heard about Munak?";
- next;
- mes "The ugly monster Munak is threatening people in Payon.";
- next;
- mes "So we need brave adventurers like you!";
- next;
- mes "Please hunt 30 Munaks then Payon will be in peace.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "- Payon Cheese Dongja -";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3261,HUNTING) == 2) {
- mes "I have done pretty well for the mission. Should I report it now?";
- next;
- switch (select("Report the mission.:Do not report it yet.")) {
- case 1:
- getexp 16000,7000;
- erasequest 3261;
- mes "You have completed the mission. Get rewards.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3261) == 2) {
- mes "This mission is assigned by Cheese Dongja from Payon.";
- next;
- mes "Have you heard about Munak?";
- next;
- mes "The ugly monster Munak is threatening people in Payon.";
- next;
- mes "So we need brave adventurers like you!";
- next;
- mes "Please hunt 30 Munaks then Payon will be in peace.";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "- Payon Cheese Dongja -";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3261;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- close;
- case 3:
- if (checkquest(3262) == 0) {
- mes "This mission is assigned by a gem dealer, Ibraham from Morroc.";
- next;
- mes "A small beautiful flower in the barren desert... What an incredible scene it would be!";
- next;
- mes "Planting flowers can make the world green and it will be so pretty everywhere.";
- next;
- mes "I plan to plant strong flowers in the Morroc desert so the soil gets better.";
- next;
- mes "I need 40 Maneater Blossom from Flora, I know Maneater Blossom is an ugly flower, but still it is a plant.";
- next;
- mes "I hope you can hunt Flora and get me 40 Maneater Blossoms. You are making the world green! Be proud!";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Morroc Ibraham --";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3262;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- if ((checkquest(3262) == 1) && (countitem(1032) < 40)) {
- mes "You have an on-going mission. Would you like to check the details?";
- next;
- switch (select("Check the details.:Cancel.")) {
- case 1:
- mes "This mission is assigned by a gem dealer, Ibraham from Morroc.";
- next;
- mes "A small beautiful flower in the barren desert... What an incredible scene it would be!";
- next;
- mes "Planting flowers can make the world green and it will be so pretty everywhere.";
- next;
- mes "I plan to plant strong flowers in the Morroc desert so the soil gets better.";
- next;
- mes "I need 40 Maneater Blossom from Flora, I know Maneater Blossom is an ugly flower, but still it is a plant.";
- next;
- mes "I hope you can hunt Flora and get me 40 Maneater Blossoms. You are making the world green! Be proud!";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Morroc Ibraham --";
- close;
- case 2:
- close;
- }
- }
- if ((checkquest(3262) == 1) && (countitem(1032) > 39)) {
- mes "I have done pretty well for the mission. Should I report it now?";
- next;
- switch (select("Report the mission.:Do not report it yet.")) {
- case 1:
- delitem 1032,40; //Blossom_Of_Maneater
- getexp 17000,7000;
- erasequest 3262;
- mes "You have completed the mission. Get rewards.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3262) == 2) {
- mes "This mission is assigned by a gem dealer, Ibraham from Morroc.";
- next;
- mes "A small beautiful flower in the barren desert... What an incredible scene it would be!";
- next;
- mes "Planting flowers can make the world green and it will be so pretty everywhere.";
- next;
- mes "I plan to plant strong flowers in the Morroc desert so the soil gets better.";
- next;
- mes "I need 40 Maneater Blossom from Flora, I know Maneater Blossom is an ugly flower, but still it is a plant.";
- next;
- mes "I hope you can hunt Flora and get me 40 Maneater Blossoms. You are making the world green! Be proud!";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Morroc Ibraham --";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3262;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- close;
- case 4:
- if (checkquest(3263) == 0) {
- mes "This mission is assigned by the Payon blacksmith Antonio.";
- next;
- mes "Magic wand! Have you heard about it? It is an incredible wand!";
- next;
- mes "If you say the magic words and swing the wand, it will make your wishes come true.";
- next;
- mes "So, I decided to make it by myself. Then I will be rich and powerful~! Haha!!";
- next;
- mes "To make the wand, I need some special materials.";
- next;
- mes "Please bring me 30 Dokebi Horns and 30 Trunks. If you do so, I will lend you my magic wand once. Haha, good deal?";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Payon blacksmith Antonio --";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3263;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- if ((checkquest(3263) == 1) && (countitem(1021) < 30) && (countitem(7150) < 30)) {
- mes "You have an on-going mission. Would you like to check the details?";
- next;
- switch (select("Check the details.:Cancel.")) {
- case 1:
- mes "This mission is assigned by the Payon blacksmith Antonio.";
- next;
- mes "Magic wand! Have you heard about it? It is an incredible wand!";
- next;
- mes "If you say the magic words and swing the wand, it will make your wishes come true.";
- next;
- mes "So, I decided to make it by myself. Then I will be rich and powerful~! Haha!!";
- next;
- mes "To make the wand, I need some special materials.";
- next;
- mes "Please bring me 30 Dokebi Horns and 30 Trunks. If you do so, I will lend you my magic wand once. Haha, good deal?";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Payon blacksmith Antonio --";
- close;
- case 2:
- close;
- }
- }
- if ((checkquest(3263) == 1) && (countitem(1021) > 29) && (countitem(7150) > 29)) {
- mes "I have done pretty well for the mission. Should I report it now?";
- next;
- switch (select("Report the mission.:Do not report it yet.")) {
- case 1:
- delitem 1021,30; //Dokkaebi_Horn
- delitem 7150,30; //Bamboo_Cut
- getexp 18000,8000;
- erasequest 3263;
- mes "You have completed the mission. Get rewards.";
- close;
- case 2:
- close;
- }
- }
- if (checkquest(3263) == 2) {
- mes "This mission is assigned by the Payon blacksmith Antonio.";
- next;
- mes "Magic wand! Have you heard about it? It is an incredible wand!";
- next;
- mes "If you say the magic words and swing the wand, it will make your wishes come true.";
- next;
- mes "So, I decided to make it by myself. Then I will be rich and powerful~! Haha!!";
- next;
- mes "To make the wand, I need some special materials.";
- next;
- mes "Please bring me 30 Dokebi Horns and 30 Trunks. If you do so, I will lend you my magic wand once. Haha, good deal?";
- next;
- mes "Please confirm it to us after you complete the mission, then we will give you proper rewards.";
- next;
- mes "-- Payon blacksmith Antonio --";
- next;
- mes " ";
- next;
- switch (select("Accept the mission.:Do not accept the mission.")) {
- case 1:
- if ((BaseLevel > 54) && (BaseLevel < 71)) {
- setquest 3263;
- mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission.";
- next;
- mes "This mission doesn't have time limits.";
- close;
- }
- mes "These missions are not fit for my level. I should look for other missions.";
- close;
- case 2:
- close;
- }
- }
- close;
- }
- }
- }
- mes "To get these missions, I need to Join the Eden Group first. I must find Secretary Lime Evenor and become a member.";
- close;
-}
\ No newline at end of file +//===== rAthena Script ======================================= +// Eden Group Quests - Mission [56 - 70] +//===== By: ================================================== +//= L0ne_W0lf +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Repetable Quests for Players between Baselevel 55 - 71 . +//===== Additional Comments: ================================= +//= 1.0 First Version. +//= 1.1 Some little optimization here and there. [Masao] +//============================================================ + +moc_para01,42,38,3 script Mission [56 - 70] 857,{ + + if (countitem(6219) > 0) { + if (checkquest(3259) > -1) { + erasequest 3259; + } + if (checkquest(3253) > -1) { + erasequest 3253; + } + if (checkquest(3265) > -1) { + erasequest 3265; + } + mes "Here is the list of various adventures for level 55~70 adventurers."; + next; + mes "Lots of missions such as a Monster Hunting, Delivery Goods, Finding People."; + next; + switch (select("Mission Numbers 1~5:Mission Numbers 6~10:Mission Numbers 11~15")) { + case 1: + switch (select("What is this Bandage?:Dangerous Alligators.:That wasn't a mermaid...:My country is calling me!")) { + case 1: + if (checkquest(3250) == 0) { + mes "This mission is assigned by the Rekenber corporation from Lighthalzen. Below are the details."; + next; + mes "Rekenber corporation is about to launch a new project called 'Green Medical Center'. For the first product of the project, we are preparing well-being Bandages."; + next; + mes "Regarding the project, we need to research monster's reactions when they are wrapped with Rotten Bandages."; + next; + mes "If you are interested, please hunt 30 Mummies and bring 30 Rotten Bandages. You can find them in the Pyramid West of Morroc."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "- Rekenber corporation chief director 'Julie E Delph' -"; + next; + mes " "; + next; + mes "Would you like to accept this mission?"; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3250; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + if (checkquest(3250,HUNTING) == 1) { + mes "You have an on-going mission. Would you like to check the details?"; + next; + switch (select("Check the details.:Cancel.")) { + case 1: + mes "This mission is assigned by the Rekenber corporation from Lighthalzen. Below are the details."; + next; + mes "Rekenber corporation is about to launch a new project called 'Green Medical Center'. For the first product of the project, we are preparing well-being Bandages."; + next; + mes "Regarding the project, we need to research monster's reactions when they are wrapped with Rotten Bandages."; + next; + mes "If you are interested, please hunt 30 Mummies and bring 30 Rotten Bandages. You can find them in the Pyramid West of Morroc."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "- Rekenber corporation chief director 'Julie E Delph' -"; + close; + case 2: + close; + } + } + if ((checkquest(3250,HUNTING) == 2) && (countitem(930) > 19)) { + mes "I have done pretty well for the mission. Should I report it now?"; + next; + switch (select("Report the mission.:Do not report it yet.")) { + case 1: + delitem 930,20; //Rotten_Bandage + getexp 15000,5000; + erasequest 3250; + mes "You have completed the mission. Get rewards."; + close; + case 2: + close; + } + } + if (checkquest(3250) == 2) { + mes "This mission is assigned by the Rekenber corporation from Lighthalzen. Below are the details."; + next; + mes "Rekenber corporation is about to launch a new project called 'Green Medical Center'. For the first product of the project, we are preparing well-being Bandages."; + next; + mes "Regarding the project, we need to research monster's reactions when they are wrapped with Rotten Bandages."; + next; + mes "If you are interested, please hunt 30 Mummies and bring 30 Rotten Bandages. You can find them in the Pyramid West of Morroc."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "- Rekenber corporation chief director 'Julie E Delph' -"; + next; + mes " "; + next; + mes "Would you like to accept this mission?"; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3250; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + close; + case 2: + if (checkquest(3251) == 0) { + mes "This mission is assigned by the Comodo cooperative society. Below are the details."; + next; + mes "Alligators have gone wild these days, they attack women and drunken people who hang out near the beach."; + next; + mes "This is a very shameful situation for us, the most wonderful vacation spot in Rune-Midgard."; + next; + mes "So, it would be very helpful if you hunt 30 Alligators to clean out this situation."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes " "; + next; + mes "Would you like to accept this mission?"; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3251; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + if (checkquest(3251,HUNTING) == 1) { + mes "You have an on-going mission. Would you like to check the details?"; + next; + switch (select("Check the details.:Cancel.")) { + case 1: + mes "This mission is assigned by the Comodo cooperative society. Below are the details."; + next; + mes "Alligators have gone wild these days, they attack women and drunken people who hang out near the beach."; + next; + mes "This is a very shameful situation for us, the most wonderful vacation spot in Rune-Midgard."; + next; + mes "So, it would be very helpful if you hunt 30 Alligators to clean out this situation."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + close; + case 2: + close; + } + } + if (checkquest(3251,HUNTING) == 2) { + mes "I have done pretty well for the mission. Should I report it now?"; + next; + switch (select("Report the mission.:Do not report it yet.")) { + case 1: + getexp 16000,6000; + erasequest 3251; + mes "You have completed the mission. Get rewards."; + close; + case 2: + close; + } + } + if (checkquest(3251) == 2) { + mes "This mission is assigned by the Comodo cooperative society. Below are the details."; + next; + mes "Alligators have gone wild these days, they attack women and drunken people who hang out near the beach."; + next; + mes "This is a very shameful situation for us, the most wonderful vacation spot in Rune-Midgard."; + next; + mes "So, it would be very helpful if you hunt 30 Alligators to clean out this situation."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes " "; + next; + mes "Would you like to accept this mission?"; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3251; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + close; + case 3: + if (checkquest(3252) == 0) { + mes "This mission is assigned by an unknown client from Izlude."; + next; + mes "I have admired the beach of Izlude, ever since I was born."; + next; + mes "When I was young, I found a mysterious creature in the Izlude dungeon, I had never seen something like that before..."; + next; + mes "I instantly thought it was a mermaid. I was so supprised, I have studied about mermaids in whole my life."; + next; + mes "But, as I studied harder, I found that the creature was not a mermaid... yes, It wasn't beautiful at all like other mermaids..."; + next; + mes "I finally tracked down the fact that it was a Merman, not a Mermaid!"; + next; + mes "Merman... I have wasted my life studying this monster! So please hunt 30 Mermans to make me feel better."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Izlude 'The Lost dream mermaid' --"; + next; + mes " "; + next; + mes "Would you like to accept this mission?"; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3252; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + if (checkquest(3252,HUNTING) == 1) { + mes "You have an on-going mission. Would you like to check the details?"; + next; + switch (select("Check the details.:Cancel.")) { + case 1: + mes "This mission is assigned by an unknown client from Izlude."; + next; + mes "I have admired the beach of Izlude, ever since I was born."; + next; + mes "When I was young, I found a mysterious creature in the Izlude dungeon, I had never seen something like that before."; + next; + mes "I instantly thought it was a mermaid. I was so supprised, I have studied about mermaids in whole my life."; + next; + mes "But, as I studied harder, I found that the creature was not a mermaid... yes, It wasn't beautiful at all like other mermaids..."; + next; + mes "I finally tracked down the fact that it was a Merman, not a Mermaid!"; + next; + mes " Merman... I have wasted my life studying this monster! So please hunt 30 Mermans to make me feel better."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Izlude 'The Lost dream mermaid' --"; + close; + case 2: + close; + } + } + if (checkquest(3252,HUNTING) == 2) { + mes "I have done pretty well for the mission. Should I report it now?"; + next; + switch (select("Report the mission.:Do not report it yet.")) { + case 1: + getexp 17000,8000; + erasequest 3252; + mes "You have completed the mission. Get rewards."; + close; + case 2: + close; + } + } + if (checkquest(3252) == 2) { + mes "This mission is assigned by an unknown client from Izlude."; + next; + mes "I have admired the beach of Izlude, ever since I was born."; + next; + mes "When I was young, I found a mysterious creature in the Izlude dungeon, I had never seen something like that before."; + next; + mes "I instantly thought it was a mermaid. I was so supprised, I have studied about mermaids in whole my life."; + next; + mes "But, as I studied harder, I found that the creature was not a mermaid... yes, It wasn't beautiful at all like other mermaids..."; + next; + mes "I finally tracked down the fact that it was a Merman, not a Mermaid!"; + next; + mes "Merman... I have wasted my life studying this monster! So please hunt 30 Mermans to make me feel better."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Izlude 'The Lost dream mermaid' --"; + next; + mes " "; + next; + mes "Would you like to accept this mission?"; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3252; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + close; + case 4: + if (checkquest(3254) == 0) { + mes "This mission is assigned by the government officer of the Rune-Midgarts Kingdom."; + next; + mes "To prevent a flood in Prontera, we decided to build a huge dam to regulate the water supply."; + next; + mes "But, we are shorthanded on supplies and we need to collect Fine Sand and Grit."; + next; + mes "So, we would like to ask for help. People, please bring us 10 Fine Sand and 30 Grit each so we can build the dam."; + next; + mes "You can get those materials from Sand Man, I wish you good luck!"; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Government officer of the Rune-Midgarts Kingdom, Dufre Kent --"; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3254; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + if ((checkquest(3254) == 1) && (countitem(7043) < 10) && (countitem(1056) < 30)) { + mes "You have an on-going mission. Would you like to check the details?"; + next; + switch (select("Check the details.:Cancel.")) { + case 1: + mes "This mission is assigned by the government officer of the Rune-Midgarts Kingdom."; + next; + mes "To prevent a flood in Prontera, we decided to build a huge dam to regulate the water supply."; + next; + mes "But, we are shorthanded on supplies and we need to collect Fine Sand and Grit."; + next; + mes "So, we would like to ask for help. People, please bring us 10 Fine Sand and 30 Grit each so we can build the dam."; + next; + mes "You can get those materials from Sand Man, I wish you good luck!"; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Government officer of the Rune-Midgarts Kingdom, Dufre Kent --"; + close; + case 2: + close; + } + } + if ((checkquest(3254) == 1) && (countitem(7043) > 9) && (countitem(1056) > 29)) { + mes "I have done pretty well for the mission. Should I report it now?"; + next; + switch (select("Report the mission.:Do not report it yet.")) { + case 1: + delitem 7043,10; //Fine_Sand + delitem 1056,30; //Grit + getexp 18000,8000; + erasequest 3254; + mes "You have completed the mission. Get rewards."; + close; + case 2: + close; + } + } + if (checkquest(3254) == 2) { + mes "This mission is assigned by the government officer of the Rune-Midgarts Kingdom."; + next; + mes "To prevent a flood in Prontera, we decided to build a huge dam to regulate the water supply."; + next; + mes "But, we are shorthanded on supplies and we need to collect Fine Sand and Grit."; + next; + mes "So, we would like to ask for help. People, please bring us 10 Fine Sand and 30 Grit each so we can build the dam."; + next; + mes "You can get those materials from Sand Man, I wish you good luck!"; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Government officer of the Rune-Midgarts Kingdom, Dufre Kent --"; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3254; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + close; + } + case 2: + switch (select("Hunt Wild Boar:Preparing the Summer:A Woman's Grudge:Special ingredients:Puppet Master's Agony")) { + case 1: + if (checkquest(3255) == 0) { + mes "This mission is assigned by the Payon town hall."; + next; + mes "Wild animals are always annoyances to farmers."; + next; + mes "They attack our farm and ruin whole crops!! We can't stand it anymore!"; + next; + mes "So, we would like to ask for the help from brave adventurers."; + next; + mes "Please, hunt 30 Savages to save our crops!"; + next; + mes "You can easily find those monsters around our town and field."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Payon town hall members --"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3255; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + if (checkquest(3255,HUNTING) == 1) { + mes "You have an on-going mission. Would you like to check the details?"; + next; + switch (select("Check the details.:Cancel.")) { + case 1: + mes "This mission is assigned by the Payon town hall."; + next; + mes "Wild animals are always annoyances to farmers."; + next; + mes "They attack our farm and ruin whole crops!! We can't stand it anymore!"; + next; + mes "???????????????ð??????????????j??????????????????"; + next; + mes "Please, hunt 30 Savages to save our crops!"; + next; + mes "You can easily find those monsters around our town and field."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Payon town hall members --"; + close; + case 2: + close; + } + } + if (checkquest(3255,HUNTING) == 2) { + mes "I have done pretty well for the mission. Should I report it now?"; + next; + switch (select("Report the mission.:Do not report it yet.")) { + case 1: + getexp 16000,7000; + erasequest 3255; + mes "You have completed the mission. Get rewards."; + close; + case 2: + close; + } + } + if (checkquest(3255) == 2) { + mes "This mission is assigned by the Payon town hall."; + next; + mes "Wild animals are always annoyances to farmers."; + next; + mes "They attack our farm and ruin whole crops!! We can't stand it anymore!"; + next; + mes "???????????????ð??????????????j??????????????????"; + next; + mes "Please, hunt 30 Savages to save our crops!"; + next; + mes "You can easily find those monsters around our town and field."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Payon town hall members --"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3255; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + close; + case 2: + if (checkquest(3256) == 0) { + mes "This mission is assigned by the Morroc blacksmith Aragham."; + next; + mes "Hello~~~~, Adventurers! This is Aragham, the hottest blacksmith in Morroc!"; + next; + mes "Anyway, I have a son named Aragam Junior, the cute one. Haha."; + next; + mes "He will be attending summer camp this summer, but he doesn't know how to swim."; + next; + mes "I want to teach him, but as you know I am a blacksmith, a far cry from swimming! Hehe."; + next; + mes "But, I figured that if I make swim fins, it will be great for his confidence~!"; + next; + mes "To make it, I need 30 Sticky Webfoots from a Roda Frog. Can you bring them to me?"; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "PS. Do not compare me with Hollgrehenn or Antonio!!!!"; + next; + mes "-- The hottest blacksmith, Morroc blacksmith Aragham --"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3256; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + if ((checkquest(3256) == 1) && (countitem(918) < 30)) { + mes "You have an on-going mission. Would you like to check the details?"; + next; + switch (select("Check the details.:Cancel.")) { + case 1: + mes "This mission is assigned by the Morroc blacksmith Aragham."; + next; + mes "Hello~~~~, Adventurers! This is Aragham, the hottest blacksmith in Morroc!"; + next; + mes "Anyway, I have a son named Aragam Junior, the cute one. Haha."; + next; + mes "He will be attending summer camp this summer, but he doesn't know how to swim."; + next; + mes "I want to teach him, but as you know I am a blacksmith, a far cry from swimming! Hehe."; + next; + mes "But, I figured that if I make swim fins, it will be great for his confidence~!"; + next; + mes "To make it, I need 30 Sticky Webfoots from a Roda Frog. Can you bring them to me?"; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "PS. Do not compare me with Hollgrehenn or Antonio!!!!"; + next; + mes "-- The hottest blacksmith, Morroc blacksmith Aragham --"; + close; + case 2: + close; + } + } + if ((checkquest(3256) == 1) && (countitem(918) > 29)) { + mes "I have done pretty well for the mission. Should I report it now?"; + next; + switch (select("Report the mission.:Do not report it yet.")) { + case 1: + delitem 918,30; //Sticky_Webfoot + getexp 15000,5000; + erasequest 3256; + mes "You have completed the mission. Get rewards."; + close; + case 2: + close; + } + } + if (checkquest(3256) == 2) { + mes "This mission is assigned by the Morroc blacksmith Aragham."; + next; + mes "Hello~~~~, Adventurers! This is Aragham, the hottest blacksmith in Morroc!"; + next; + mes "Anyway, I have a son named Aragam Junior, the cute one. Haha."; + next; + mes "He will be attending summer camp this summer, but he doesn't know how to swim."; + next; + mes "I want to teach him, but as you know I am a blacksmith, a far cry from swimming! Hehe."; + next; + mes "But, I figured that if I make swim fins, it will be great for his confidence~!"; + next; + mes "To make it, I need 30 Sticky Webfoots from a Roda Frog. Can you bring them to me?"; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "PS. Do not compare me with Hollgrehenn or Antonio!!!!"; + next; + mes "-- The hottest blacksmith, Morroc blacksmith Aragham --"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3256; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + close; + case 3: + if (checkquest(3257) == 0) { + mes "This mission is assigned by an inventor Dorian from Izlude."; + next; + mes "Have you heard the story that if women have a grudge on their mind, it will bring natural disasters."; + next; + mes "Wow, so guys must watch out for those sensitive women! Make sure they don't have any grudges on you."; + next; + mes "Women can bring strange phenomenons with them!"; + next; + mes "I am so intrigued with that story that I'm trying to prove that it can be true."; + next; + mes "So I need to make women upset! Haha, I know what a mean idea, right?"; + next; + mes "But this is seriously just for studying... So please hunt 30 Sohee's who seems to be revived from victimized souls."; + next; + mes "So I can keep observing the case."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Elegance inventor Dorian --"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3257; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + if (checkquest(3257,HUNTING) == 1) { + mes "You have an on-going mission. Would you like to check the details?"; + next; + switch (select("Check the details.:Cancel.")) { + case 1: + mes "This mission is assigned by an inventor Dorian from Izlude."; + next; + mes "Have you heard the story that if women have a grudge on their mind, it will bring natural disasters."; + next; + mes "Wow, so guys must watch out for those sensitive women! Make sure they don't have any grudges on you."; + next; + mes "Women can bring strange phenomenons with them!"; + next; + mes "I am so intrigued with that story that I'm trying to prove that it can be true."; + next; + mes "So I need to make women upset! Haha, I know what a mean idea, right?"; + next; + mes "But this is seriously just for studying... So please hunt 30 Sohee's who seems to be revived from victimized souls."; + next; + mes "So I can keep observing the case."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Elegance inventor Dorian --"; + close; + case 2: + close; + } + } + if (checkquest(3257,HUNTING) == 2) { + mes "I have done pretty well for the mission. Should I report it now?"; + next; + switch (select("Report the mission.:Do not report it yet.")) { + case 1: + getexp 17000,8000; + erasequest 3257; + mes "You have completed the mission. Get rewards."; + close; + case 2: + close; + } + } + if (checkquest(3257) == 2) { + mes "This mission is assigned by an inventor Dorian from Izlude."; + next; + mes "Have you heard the story that if women have a grudge on their mind, it will bring natural disasters."; + next; + mes "Wow, so guys must watch out for those sensitive women! Make sure they don't have any grudges on you."; + next; + mes "Women can bring strange phenomenons with them!"; + next; + mes "I am so intrigued with that story that I'm trying to prove that it can be true."; + next; + mes "So I need to make women upset! Haha, I know what a mean idea, right?"; + next; + mes "But this is seriously just for studying... So please hunt 30 Sohee's who seems to be revived from victimized souls."; + next; + mes "So I can keep observing the case."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Elegance inventor Dorian --"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3257; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + close; + case 4: + if (checkquest(3258) == 0) { + mes "This mission is assigned by Wallah from Payon."; + next; + mes "Hello, adventurer. How are you? How is your health?"; + next; + mes "I am a pharmacist and I am having a hard time getting special ingredients lately."; + next; + mes "Because I am a little sensitive girl, how can I possibly get those things by myself."; + next; + mes "So, please help me. Just bring 40 Huge Leafs to me, that will be enough to complete my special medicine!"; + next; + mes "Please bring it as soon as possible, people need my medicine."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Wallah --"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3258; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + if ((checkquest(3258) == 1) && (countitem(7198) < 40)) { + mes "You have an on-going mission. Would you like to check the details?"; + next; + switch (select("Check the details.:Cancel.")) { + case 1: + mes "This mission is assigned by Wallah from Payon."; + next; + mes "Hello, adventurer. How are you? How is your health?"; + next; + mes "I am a pharmacist and I am having a hard time getting special ingredients lately."; + next; + mes "Because I am a little sensitive girl, how can I possibly get those things by myself."; + next; + mes "So, please help me. Just bring 40 Huge Leafs to me, that will be enough to complete my special medicine!"; + next; + mes "Please bring it as soon as possible, people need my medicine."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Wallah --"; + close; + case 2: + close; + } + } + if ((checkquest(3258) == 1) && (countitem(7198) > 39)) { + mes "I have done pretty well for the mission. Should I report it now?"; + next; + switch (select("Report the mission.:Do not report it yet.")) { + case 1: + delitem 7198,40; //Great_Leaf + getexp 16000,7000; + erasequest 3258; + mes "You have completed the mission. Get rewards."; + close; + case 2: + close; + } + } + if (checkquest(3258) == 2) { + mes "This mission is assigned by Wallah from Payon."; + next; + mes "Hello, adventurer. How are you? How is your health?"; + next; + mes "I am a pharmacist and I am having a hard time getting special ingredients lately."; + next; + mes "Because I am a little sensitive girl, how can I possibly get those things by myself."; + next; + mes "So, please help me. Just bring 40 Huge Leafs to me, that will be enough to complete my special medicine!"; + next; + mes "Please bring it as soon as possible, people need my medicine."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Wallah --"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3258; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + close; + case 5: + if (checkquest(12217) == 0) { + mes "This mission is assigned by puppet master Woonute from Geffen."; + next; + mes "You know being a puppet master is kind of a hard job to satisfy people."; + next; + mes "People can search and see so many different things on their own thesedays."; + next; + mes "Their expectations are getting high, I can't satisfy them anymore."; + next; + mes "But if I can make new toy concepts, like living toys, it will be ground breaking."; + next; + mes "I heard that there are live dolls called Marionettes. Can you hunt 30 Marionettes for me? And also bring 30 Golden Hair, those will be great materials for the new toys."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Puppet Master Woonute --"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 12217; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + if ((checkquest(12217,HUNTING) == 1) && (countitem(1060) < 30)) { + mes "You have an on-going mission. Would you like to check the details?"; + next; + switch (select("Check the details.:Cancel.")) { + case 1: + mes "This mission is assigned by puppet master Woonute from Geffen."; + next; + mes "You know being a puppet master is kind of a hard job to satisfy people."; + next; + mes "People can search and see so many different things on their own thesedays."; + next; + mes "Their expectations are getting high, I can't satisfy them anymore."; + next; + mes "But if I can make new toy concepts, like living toys, it will be ground breaking."; + next; + mes "I heard that there are live dolls called Marionettes. Can you hunt 30 Marionettes for me? And also bring 30 Golden Hair, those will be great materials for the new toys."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Puppet Master Woonute --"; + close; + case 2: + close; + } + } + if ((checkquest(12217,HUNTING) == 2) && (countitem(1060) > 29)) { + mes "I have done pretty well for the mission. Should I report it now?"; + next; + switch (select("Report the mission.:Do not report it yet.")) { + case 1: + delitem 1060,30; //Golden_Hair + getexp 17000,7000; + erasequest 3259; + mes "You have completed the mission. Get rewards."; + close; + case 2: + close; + } + } + if (checkquest(12217) == 2) { + mes "This mission is assigned by puppet master Woonute from Geffen."; + next; + mes "You know being a puppet master is kind of a hard job to satisfy people."; + next; + mes "People can search and see so many different things on their own thesedays."; + next; + mes "Their expectations are getting high, I can't satisfy them anymore."; + next; + mes "But if I can make new toy concepts, like living toys, it will be ground breaking."; + next; + mes "I heard that there are live dolls called Marionettes. Can you hunt 30 Marionettes for me? And also bring 30 Golden Hair, those will be great materials for the new toys."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Puppet Master Woonute --"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 12217; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + close; + } + case 3: + switch (select("Tiresome Flies:Dangerous Munak:Make the World green:Magic Wand")) { + case 1: + if (checkquest(3260) == 0) { + mes "This mission is assigned by an exterminator from Prontera."; + next; + mes "As the weather gets warmer, insects multiply more and more. It is already out of control."; + next; + mes "People in Prontera cannot sleep because of all the bugs in their house."; + next; + mes "So, please help us, hunt 30 Hunter Flies. Then the flies can be reduced slowly."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- The Prontera exterminator --"; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3260; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + if (checkquest(3260,HUNTING) == 1) { + mes "You have an on-going mission. Would you like to check the details?"; + next; + switch (select("Check the details.:Cancel.")) { + case 1: + mes "This mission is assigned by an exterminator from Prontera."; + next; + mes "As the weather gets warmer, insects multiply more and more. It is already out of control."; + next; + mes "People in Prontera cannot sleep because of all the bugs in their house."; + next; + mes "So, please help us, hunt 30 Hunter Flies. Then the flies can be reduced slowly."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- The Prontera exterminator --"; + close; + case 2: + close; + } + } + if (checkquest(3260,HUNTING) == 2) { + mes "I have done pretty well for the mission. Should I report it now?"; + next; + switch (select("Report the mission.:Do not report it yet.")) { + case 1: + getexp 16000,6000; + erasequest 3260; + mes "You have completed the mission. Get rewards."; + close; + case 2: + close; + } + } + if (checkquest(3260) == 2) { + mes "This mission is assigned by an exterminator from Prontera."; + next; + mes "As the weather gets warmer, insects multiply more and more. It is already out of control."; + next; + mes "People in Prontera cannot sleep because of all the bugs in their house."; + next; + mes "So, please help us, hunt 30 Hunter Flies. Then the flies can be reduced slowly."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- The Prontera exterminator --"; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3260; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + close; + case 2: + if (checkquest(3261) == 0) { + mes "This mission is assigned by Cheese Dongja from Payon."; + next; + mes "Have you heard about Munak?"; + next; + mes "The ugly monster Munak is threatening people in Payon."; + next; + mes "So we need brave adventurers like you!"; + next; + mes "Please hunt 30 Munaks then Payon will be in peace."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "- Payon Cheese Dongja -"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3261; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + if (checkquest(3261,HUNTING) == 1) { + mes "You have an on-going mission. Would you like to check the details?"; + next; + switch (select("Check the details.:Cancel.")) { + case 1: + mes "This mission is assigned by Cheese Dongja from Payon."; + next; + mes "Have you heard about Munak?"; + next; + mes "The ugly monster Munak is threatening people in Payon."; + next; + mes "So we need brave adventurers like you!"; + next; + mes "Please hunt 30 Munaks then Payon will be in peace."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "- Payon Cheese Dongja -"; + close; + case 2: + close; + } + } + if (checkquest(3261,HUNTING) == 2) { + mes "I have done pretty well for the mission. Should I report it now?"; + next; + switch (select("Report the mission.:Do not report it yet.")) { + case 1: + getexp 16000,7000; + erasequest 3261; + mes "You have completed the mission. Get rewards."; + close; + case 2: + close; + } + } + if (checkquest(3261) == 2) { + mes "This mission is assigned by Cheese Dongja from Payon."; + next; + mes "Have you heard about Munak?"; + next; + mes "The ugly monster Munak is threatening people in Payon."; + next; + mes "So we need brave adventurers like you!"; + next; + mes "Please hunt 30 Munaks then Payon will be in peace."; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "- Payon Cheese Dongja -"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3261; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + close; + case 3: + if (checkquest(3262) == 0) { + mes "This mission is assigned by a gem dealer, Ibraham from Morroc."; + next; + mes "A small beautiful flower in the barren desert... What an incredible scene it would be!"; + next; + mes "Planting flowers can make the world green and it will be so pretty everywhere."; + next; + mes "I plan to plant strong flowers in the Morroc desert so the soil gets better."; + next; + mes "I need 40 Maneater Blossom from Flora, I know Maneater Blossom is an ugly flower, but still it is a plant."; + next; + mes "I hope you can hunt Flora and get me 40 Maneater Blossoms. You are making the world green! Be proud!"; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Morroc Ibraham --"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3262; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + if ((checkquest(3262) == 1) && (countitem(1032) < 40)) { + mes "You have an on-going mission. Would you like to check the details?"; + next; + switch (select("Check the details.:Cancel.")) { + case 1: + mes "This mission is assigned by a gem dealer, Ibraham from Morroc."; + next; + mes "A small beautiful flower in the barren desert... What an incredible scene it would be!"; + next; + mes "Planting flowers can make the world green and it will be so pretty everywhere."; + next; + mes "I plan to plant strong flowers in the Morroc desert so the soil gets better."; + next; + mes "I need 40 Maneater Blossom from Flora, I know Maneater Blossom is an ugly flower, but still it is a plant."; + next; + mes "I hope you can hunt Flora and get me 40 Maneater Blossoms. You are making the world green! Be proud!"; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Morroc Ibraham --"; + close; + case 2: + close; + } + } + if ((checkquest(3262) == 1) && (countitem(1032) > 39)) { + mes "I have done pretty well for the mission. Should I report it now?"; + next; + switch (select("Report the mission.:Do not report it yet.")) { + case 1: + delitem 1032,40; //Blossom_Of_Maneater + getexp 17000,7000; + erasequest 3262; + mes "You have completed the mission. Get rewards."; + close; + case 2: + close; + } + } + if (checkquest(3262) == 2) { + mes "This mission is assigned by a gem dealer, Ibraham from Morroc."; + next; + mes "A small beautiful flower in the barren desert... What an incredible scene it would be!"; + next; + mes "Planting flowers can make the world green and it will be so pretty everywhere."; + next; + mes "I plan to plant strong flowers in the Morroc desert so the soil gets better."; + next; + mes "I need 40 Maneater Blossom from Flora, I know Maneater Blossom is an ugly flower, but still it is a plant."; + next; + mes "I hope you can hunt Flora and get me 40 Maneater Blossoms. You are making the world green! Be proud!"; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Morroc Ibraham --"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3262; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + close; + case 4: + if (checkquest(3263) == 0) { + mes "This mission is assigned by the Payon blacksmith Antonio."; + next; + mes "Magic wand! Have you heard about it? It is an incredible wand!"; + next; + mes "If you say the magic words and swing the wand, it will make your wishes come true."; + next; + mes "So, I decided to make it by myself. Then I will be rich and powerful~! Haha!!"; + next; + mes "To make the wand, I need some special materials."; + next; + mes "Please bring me 30 Dokebi Horns and 30 Trunks. If you do so, I will lend you my magic wand once. Haha, good deal?"; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Payon blacksmith Antonio --"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3263; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + if ((checkquest(3263) == 1) && (countitem(1021) < 30) && (countitem(7150) < 30)) { + mes "You have an on-going mission. Would you like to check the details?"; + next; + switch (select("Check the details.:Cancel.")) { + case 1: + mes "This mission is assigned by the Payon blacksmith Antonio."; + next; + mes "Magic wand! Have you heard about it? It is an incredible wand!"; + next; + mes "If you say the magic words and swing the wand, it will make your wishes come true."; + next; + mes "So, I decided to make it by myself. Then I will be rich and powerful~! Haha!!"; + next; + mes "To make the wand, I need some special materials."; + next; + mes "Please bring me 30 Dokebi Horns and 30 Trunks. If you do so, I will lend you my magic wand once. Haha, good deal?"; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Payon blacksmith Antonio --"; + close; + case 2: + close; + } + } + if ((checkquest(3263) == 1) && (countitem(1021) > 29) && (countitem(7150) > 29)) { + mes "I have done pretty well for the mission. Should I report it now?"; + next; + switch (select("Report the mission.:Do not report it yet.")) { + case 1: + delitem 1021,30; //Dokkaebi_Horn + delitem 7150,30; //Bamboo_Cut + getexp 18000,8000; + erasequest 3263; + mes "You have completed the mission. Get rewards."; + close; + case 2: + close; + } + } + if (checkquest(3263) == 2) { + mes "This mission is assigned by the Payon blacksmith Antonio."; + next; + mes "Magic wand! Have you heard about it? It is an incredible wand!"; + next; + mes "If you say the magic words and swing the wand, it will make your wishes come true."; + next; + mes "So, I decided to make it by myself. Then I will be rich and powerful~! Haha!!"; + next; + mes "To make the wand, I need some special materials."; + next; + mes "Please bring me 30 Dokebi Horns and 30 Trunks. If you do so, I will lend you my magic wand once. Haha, good deal?"; + next; + mes "Please confirm it to us after you complete the mission, then we will give you proper rewards."; + next; + mes "-- Payon blacksmith Antonio --"; + next; + mes " "; + next; + switch (select("Accept the mission.:Do not accept the mission.")) { + case 1: + if ((BaseLevel > 54) && (BaseLevel < 71)) { + setquest 3263; + mes "I have successfully accepted the mission. I have to come back and confirm my work after I complete the mission."; + next; + mes "This mission doesn't have time limits."; + close; + } + mes "These missions are not fit for my level. I should look for other missions."; + close; + case 2: + close; + } + } + close; + } + } + } + mes "To get these missions, I need to Join the Eden Group first. I must find Secretary Lime Evenor and become a member."; + close; +} diff --git a/npc/quests/magic_books.txt b/npc/quests/magic_books.txt index 40af631a1..d85bfb0d3 100644 --- a/npc/quests/magic_books.txt +++ b/npc/quests/magic_books.txt @@ -1,2161 +1,2161 @@ -//===== rAthena Script =======================================
-//= Magic Book Seller
-//===== By: ==================================================
-//= Masao
-//= Credits to Muad_Dib for the translation.
-//===== Current Version: =====================================
-//= 1.0
-//===== Compatible With: =====================================
-//= rAthena
-//===== Description: =========================================
-//= An NPC which sells you different kinds of Magic Books.
-//===== Additional Comments: =================================
-//= 1.0 First Version. [Masao]
-//============================================================
-
-geffen_in,176,105,4 script Magic Book Master Velof 64,{
-
- if (checkweight(1201,1) == 0) {
- mes "You're carrying too many items. Please make some room in your bag first.";
- close;
- }
- if ((MaxWeight - Weight) < 1000) {
- mes "You're overweight with items. Please lose some item weight first.";
- close;
- }
- if ((Upper == 2) && (Class != Job_Baby_Warlock)) {
- mes "[Magic Book Master Velof]";
- mes "What are you, a baby?";
- mes "I'm not here to babysit. Get lost!";
- close;
- }
- if ((Class != Job_Warlock) && (Class != Job_Warlock_T) && (Class != Job_Baby_Warlock)) {
- mes "[Magic Book Master Velof]";
- mes "Ha ha, are you also seeking new knowledge?";
- next;
- mes "[Magic Book Master Velof]";
- mes "I'm sorry, but my knowledge doesn't concern you.";
- close;
- }
- if (getskilllv(2230) < 1) { // WL_RELEASE
- mes "[Magic Book Master Velof]";
- mes "Well you've met all the qualifications except one: you need the Release spell.";
- next;
- mes "[Magic Book Master Velof]";
- mes "Learn the spell first. I've got so many things to tell you.";
- close;
- }
- if ((getskilllv(2230) > 0) && (Class == Job_Warlock) || (Class == Job_Warlock_T) || (Class == Job_Baby_Warlock)) {
- mes "[Magic Book Master Velof]";
- mes "Welcome, my friend.";
- mes "Congratulations on entering a brand new world of magic.";
- next;
- mes "[Magic Book Master Velof]";
- mes "We magic practitioners are always thirsty for new knowledge and power.";
- next;
- mes "[Magic Book Master Velof]";
- mes "We endure great hardship and pain to achieve what we want. When we finally do, the sense of accomplishment defies description. That's why both you and I have chosen the way of magic.";
- next;
- mes "[Magic Book Master Velof]";
- mes "By the way, what brings you to me today?";
- next;
- switch (select("Nothing.:Do you know the Reading Spell Book?:What's the Freezing Spell?:Can I have a Magic Book?:Can I use the Reading Spell Book without the Freezing Spell?:About the Ultimate Magic Book")) {
- case 1:
- mes "[Magic Book Master Velof]";
- mes "Hah! You're silly.";
- close;
- case 2:
- mes "[Magic Book Master Velof]";
- mes "Reading Spell Book literally means 'read a spell book.' Do you know how to use Magic Books?";
- next;
- switch (select("Yes, I do.:No, I don't.")) {
- case 1:
- mes "[Magic Book Master Velof]";
- mes "Well then, you don't need an additional lecture.";
- close;
- case 2:
- mes "[Magic Book Master Velof]";
- mes "Magic Books are an advanced type of magic scroll. While spells on scrolls disappear after one use, the ones in Magic Books can be cast multiple times.";
- next;
- mes "[Magic Book Master Velof]";
- mes "Let's compare a spell on a scroll to a wire. When the wire is used to open a door or do something else, it's bent and crushed, losing its original shape. A spell from a Magic Book is more like a shape memory alloy.";
- next;
- mes "[Magic Book Master Velof]";
- mes "Huh, don't you now what shape memory alloy is? Eh, just remember this: a wire made from shape memory alloy restores its shape over time.";
- next;
- mes "[Magic Book Master Velof]";
- mes "Like the alloy, a spell on a Magic Book remains after a use, although reusing the spell has a downtime for its restoration.";
- next;
- mes "[Magic Book Master Velof]";
- mes "...Oh, I didn't mean to talk for too long. Anyways, you can use Magic Books to cast spells that you've learned. Its concept is different from normal spells.";
- next;
- select("What's the difference?");
- mes "[Magic Book Master Velof]";
- mes "Why do you have to write your existing spells in Magic Books, you asked?";
- next;
- mes "[Magic Book Master Velof]";
- mes "That's a good question. It's related to Magic Binding.";
- next;
- mes "[Magic Book Master Velof]";
- mes "You already learned Release, which allows you to hold the energy of the four different elements before the actual casting. Magic Binding is similar to Release.";
- next;
- mes "[Magic Book Master Velof]";
- mes "Since you've learned Release, you're capable of using Magic Binding as well. Well, let's talk about that later.";
- next;
- mes "[Magic Book Master Velof]";
- mes "You know how to hold an existing spell, and then cast it at a desired timing via Release.";
- next;
- mes "[Magic Book Master Velof]";
- mes "Carrying the globes of the four elements is also related to Magic Binding.";
- next;
- mes "[Magic Book Master Velof]";
- mes "As you know, the four elements are Fire, Water, Wind, and Earth. Being able to employ them freely is the essential principle of magic.";
- next;
- mes "[Magic Book Master Velof]";
- mes "We Humans use torches to keep fire, fans to blow wind, and bowls to hold water. We also use clay to make earthenware.";
- next;
- mes "[Magic Book Master Velof]";
- mes "Those activities may differ from magic, but both are the same in the sense of employing the four elements.";
- next;
- mes "[Magic Book Master Velof]";
- mes "When you use complex magic spells to summon a storm, drop lightning, or burn an area, that consumes a lot of your energy, both physically and mentally.";
- next;
- mes "[Magic Book Master Velof]";
- mes "When you fail to bind such powerful magic spells or fail to control them,";
- next;
- mes "[Magic Book Master Velof]";
- mes "you can receive irreparable damage to your mind and body.";
- next;
- mes "[Magic Book Master Velof]";
- mes "That's why we use Magic Books to reduce that burden. It helps summon pre-cast spells while you're focusing on binding their magic power.";
- next;
- mes "[Magic Book Master Velof]";
- mes "There's one downside though: Magic Books cannot be used for spells that you haven't learned.";
- next;
- mes "[Magic Book Master Velof]";
- mes "As I said earlier, spells in Magic Books tend to go back to what they are.";
- next;
- mes "[Magic Book Master Velof]";
- mes "That said, as a Circler, you cannot change or create spells in Magic Books.";
- next;
- mes "[Magic Book Master Velof]";
- mes "Even if you create one, its power will be beyond your capacity.";
- next;
- mes "[Magic Book Master Velof]";
- mes "In order to use the Reading Spell Book, you must learn the Freezing Spell to bind magic.";
- close;
- }
- case 3:
- mes "[Magic Book Master Velof]";
- mes "The Freezing Spell is used for Magic Binding. It helps you to insert a magic spell to a circle.";
- next;
- mes "[Magic Book Master Velof]";
- mes "Circles of magic work organically with each other. When you use the Freezing Spell to bind a spell, the spell won't activate until you cast the release spell.";
- next;
- mes "[Magic Book Master Velof]";
- mes "Of course, binding a spell continuously consumes your mana, but it consumes less mana than conventional magic spells.";
- next;
- mes "[Magic Book Master Velof]";
- mes "Magic Binding becomes more difficult when you use more powerful magic spells.";
- next;
- mes "[Magic Book Master Velof]";
- mes "For weak spells, you can bind two to three of them with your circle. For more powerful spells, maybe one or two is possible.";
- next;
- mes "[Magic Book Master Velof]";
- mes "That all depends on your ability to control your spells. You'll have to try and experience Magic Binding after you first learn it to really understand.";
- close;
- case 4:
- mes "[Magic Book Master Velof]";
- mes "I'm sorry, but I only have Magic Books for beginners, but they're obviously not suitable for you. Do you still want one?";
- next;
- switch (select("Sure thing.:Where can I find advanced books?")) {
- case 1:
- mes "[Magic Book Master Velof]";
- mes "Please go talk to [Lea] in the Archive. Tell her that you need one of the Magic Books that I've stored in there.";
- next;
- mes "[Magic Book Master Velof]";
- mes "For your information, she won't give it to you without anything in return. Expect her to ask you for something!";
- if (wm_book < 1) {
- set wm_book, 1;
- }
- close;
- case 2:
- mes "[Magic Book Master Velof]";
- mes "I'm sorry, but our management has recently decided to limit the availability of Magic Books for Multi Circlers. It's because their numbers are increasing more quickly than we expected.";
- next;
- mes "[Magic Book Master Velof]";
- mes "You could find one if you try hard, but I don't have any with me.";
- next;
- mes "[Magic Book Master Velof]";
- mes "If our management releases the restriction, you'll be the first one to know. Don't worry.";
- close;
- }
- case 5:
- mes "[Magic Book Master Velof]";
- mes "Nothing will happen when you try to bind magic without using Magic Binding because you have nothing to hold magic.";
- next;
- mes "[Magic Book Master Velof]";
- mes "It's like water that needs a bowl to stay in place.";
- next;
- mes "[Magic Book Master Velof]";
- mes "The problem is when you try to forcefully cast a spell that you haven't learned. It'll definately backfire on you.";
- next;
- mes "[Magic Book Master Velof]";
- mes "Of course, the damage won't be severe: you'll fall asleep or be thrown into confusion. This is all because there's a conflict between your Magic Book and the force of Magic Binding when you're trying to summon and hold a unlearned spell.";
- next;
- mes "[Magic Book Master Velof]";
- mes "Don't try it out just to see what happens for yourself! Falling asleep while casting a spell? There's nothing more humiliating than that to magic practitioners like us.";
- close;
- case 6:
- if ((BaseLevel > 139) && (getskilllv(2217) > 0) || (getskilllv(2213) > 0)) {
- if(mac_book < 1){
- mes "[Magic Book Master Velof]";
- mes "I'm sorry, but could you ask someone else? I'm kind of busy right now.";
- close;
- }
- if (mac_book == 1) {
- mes "[Magic Book Master Velof]";
- mes "Huh, are you looking for the Ultimate Magic Book? Who sent you?";
- next;
- select("Ms. Lea.");
- mes "[Magic Book Master Velof]";
- mes "I'm sorry, but there's not much information left about the Ultimate Magic Book.";
- next;
- mes "[Magic Book Master Velof]";
- mes "A few scholars in the Midgard Continent once tried to collect ancient Magic Books and reproduce that book, but...";
- next;
- select("But what?");
- mes "[Magic Book Master Velof]";
- mes "Oh yes, perhaps he might know something.";
- next;
- select("Yes, I knew this was coming!");
- mes "[Magic Book Master Velof]";
- mes "My brother is just like you. He's very interested in recreating the Ultimate Magic Book.";
- next;
- mes "[Magic Book Master Velof]";
- mes "His name is Galfos.";
- mes "He's been taking a great interest in the ancient Magic Books.";
- next;
- mes "[Magic Book Master Velof]";
- mes "I didn't support him or give him any advice for his research since I thought he'd give on it pretty quickly, but...";
- next;
- mes "[Magic Book Master Velof]";
- mes "If he's discovered anything useful, maybe it can helpful to you.";
- next;
- select("Where's Galfos now?");
- mes "[Magic Book Master Velof]";
- mes "I've heard that he's near the Expedition Camp beyond the Dimensional Rift to seek information about the ancient Magic Books.";
- next;
- mes "[Magic Book Master Velof]";
- mes "If you want to see him, you should prepare for a long journey.";
- set mac_book,2;
- close;
- }
- if (mac_book > 1) {
- mes "[Magic Book Master Velof]";
- mes "Galfos is near the Expedition Camp beyond the Dimensional Rift.";
- next;
- mes "[Magic Book Master Velof]";
- mes "If you want to see him, you should prepare for a long journey.";
- close;
- }
- }
- mes "[Magic Book Master Velof]";
- mes "Ha ha, I'm sorry, but you should focus on strengthening your body rather than creating Magic Books.";
- close;
- }
- }
- mes "[Magic Book Master Velof]";
- mes "Ha ha, are you also seeking new knowledge?";
- next;
- mes "[Magic Book Master Velof]";
- mes "I'm sorry, but my knowledge doesn't concern you.";
- close;
-}
-
-geffen_in,175,112,4 script Lea 123,{
-
- if (checkweight(1201,1) == 0) {
- mes "You're carrying too many items. Please make some room in your bag first.";
- close;
- }
- if ((MaxWeight - Weight) < 1000) {
- mes "You're overweight with items. Please lose some item weight first.";
- close;
- }
- if ((wm_book > 0) && (Class == Job_Warlock) || (Class == Job_Warlock_T) || (Class == Job_Baby_Warlock)) {
- mes "[Lea]";
- mes "You can only read books here. If you'd like to borrow any books, please receive an approval from 1 manager and 1 High Mage.";
- next;
- mes "[Lea]";
- mes "How may I help you?";
- next;
- select("Master Velof asked me to bring his Magic Book.");
- mes "[Lea]";
- mes "Are you borrowing a book?";
- next;
- switch (select("Let me think.:I want the Beginner's Magic Books.:I want the Intermediate Magic Books.:I want the Superior Magic Books.:I want the Ultimate Magic Book.")) {
- case 1:
- mes "[Lea]";
- mes "No problem.";
- close;
- case 2:
- mes "[Lea]";
- mes "We're in trouble because so many people want to borrow our Magic Books.";
- next;
- mes "[Lea]";
- mes "Unfortunately, many of our lent books aren't returned on time. That's why we've decided to charge a security deposit.";
- next;
- select("A security deposit?");
- mes "[Lea]";
- mes "Yes. You may pay a minimum of 10,000 Rune-Midgarts zeny. Alternatively, you can bring 2 Old Magic Books or 50 Old Pages. Once you pay the deposit, I'll let you borrow some Magic Books.";
- next;
- switch (select("Where can I find Old Magic Books and Old Pages?:I'll pay with zeny.:I'll pay with Old Magic Books.:I'll pay with Old Pages.")) {
- case 1:
- mes "[Lea]";
- mes "I heard that you can find them from Ride Words, Death Words, Bathorys, and other monsters. I ask that you please don't strain yourself to find those items.";
- next;
- mes "[Lea]";
- mes "Your life is more important than anything else, you know?";
- close;
- case 2:
- if (Zeny > 10000) {
- mes "[Lea]";
- mes "What kind of Magic Book do you want?";
- next;
- switch (select("Let me think.:Magic Book (Fire Bolt):Magic Book (Cold Bolt):Magic Book (Lightning Bolt)")) {
- case 1:
- mes "[Lea]";
- mes "No problem.";
- close;
- case 2:
- if (countitem(6189) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (Zeny > 10000) {
- mes "[Lea]";
- mes "The book's return date is written on the lending card on the back cover of the book.";
- next;
- mes "[Lea]";
- mes "Please try not to lose or damage the book to avoid paying any extra charges.";
- set Zeny, Zeny - 10000;
- getitem 6189,1; //Magic_Book_FB
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 3:
- if (countitem(6190) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (Zeny > 10000) {
- mes "[Lea]";
- mes "The book's return date is written on the lending card on the back cover of the book.";
- next;
- mes "[Lea]";
- mes "Please try not to lose or damage the book to avoid paying any extra charges.";
- set Zeny, Zeny - 10000;
- getitem 6190,1; //Magic_Book_CB
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 4:
- if (countitem(6191) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (Zeny > 10000) {
- mes "[Lea]";
- mes "The book's return date is written on the lending card on the back cover of the book.";
- next;
- mes "[Lea]";
- mes "Please try not to lose or damage the book to avoid paying any extra charges.";
- set Zeny, Zeny - 10000;
- getitem 6191,1; //Magic_Book_LB
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- }
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 3:
- if (countitem(1006) > 1) {
- mes "[Lea]";
- mes "What kind of Magic Book do you want?";
- next;
- switch (select("Let me think.:Magic Book (Fire Bolt):Magic Book (Cold Bolt):Magic Book (Lightning Bolt)")) {
- case 1:
- mes "[Lea]";
- mes "No problem.";
- close;
- case 2:
- if (countitem(6189) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(1006) > 1) {
- mes "[Lea]";
- mes "The book's return date is written on the lending card on the back cover of the book.";
- next;
- mes "[Lea]";
- mes "Please try not to lose or damage the book to avoid paying any extra charges.";
- delitem 1006,2; //Old_Magic_Book
- getitem 6189,1; //Magic_Book_FB
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 3:
- if (countitem(6190) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(1006) > 1) {
- mes "[Lea]";
- mes "The book's return date is written on the lending card on the back cover of the book.";
- next;
- mes "[Lea]";
- mes "Please try not to lose or damage the book to avoid paying any extra charges.";
- delitem 1006,2; //Old_Magic_Book
- getitem 6190,1; //Magic_Book_CB
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 4:
- if (countitem(6191) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(1006) > 1) {
- mes "[Lea]";
- mes "The book's return date is written on the lending card on the back cover of the book.";
- next;
- mes "[Lea]";
- mes "Please try not to lose or damage the book to avoid paying any extra charges.";
- delitem 1006,2; //Old_Magic_Book
- getitem 6191,1; //Magic_Book_LB
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- }
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 4:
- if (countitem(1097) > 49) {
- mes "[Lea]";
- mes "What kind of Magic Book do you want?";
- next;
- switch (select("Let me think.:Magic Book (Fire Bolt):Magic Book (Cold Bolt):Magic Book (Lightning Bolt)")) {
- case 1:
- mes "[Lea]";
- mes "No problem.";
- close;
- case 2:
- if (countitem(6189) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(1097) > 49) {
- mes "[Lea]";
- mes "The book's return date is written on the lending card on the back cover of the book.";
- next;
- mes "[Lea]";
- mes "Please try not to lose or damage the book to avoid paying any extra charges.";
- delitem 1097,50; //Worn_Out_Page
- getitem 6189,1; //Magic_Book_FB
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 3:
- if (countitem(6190) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(1097) > 49) {
- mes "[Lea]";
- mes "The book's return date is written on the lending card on the back cover of the book.";
- next;
- mes "[Lea]";
- mes "Please try not to lose or damage the book to avoid paying any extra charges.";
- delitem 1097,50; //Worn_Out_Page
- getitem 6190,1; //Magic_Book_CB
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 4:
- if (countitem(6191) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- else if (countitem(1097) > 49) {
- mes "[Lea]";
- mes "The book's return date is written on the lending card on the back cover of the book.";
- next;
- mes "[Lea]";
- mes "Please try not to lose or damage the book to avoid paying any extra charges.";
- delitem 1097,50; //Worn_Out_Page
- getitem 6191,1; //Magic_Book_LB
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- }
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- }
- case 3:
- mes "[Lea]";
- mes "Ah, so you want the Intermediate Magic Books. Please pay 50,000 Rune-Midgartian zeny, or you can bring me 2 Old Blue Boxes or 9 Eluniums to borrow the Intermediate Magic Books.";
- next;
- switch (select("Where can I find Old Blue Boxes and Eluniums?:I'll pay 50,000 zeny.:I'll pay with Old Blue Boxes.:I'll pay with Eluniums.")) {
- case 1:
- mes "[Lea]";
- mes "Old Blue Boxes are quite rare to find, but they can be obtained from monsters everywhere in the world, including Myst Cases, Megalogons, Mimics, Nightmares, Krabens, Requiems, Nine Tails, Noxiouses, and Byorgues.";
- mes "If you have sufficient funds, you may buy the boxes from street vendors.";
- next;
- mes "[Lea]";
- mes "Eluniums can be obtained from Hyeguns, Zombie Prisoners, Teddy Bears, Obsedians, and Loli Ruris. Or you can refine Rough Eluniums to Eluniums at the Forge in town, and that may be easier.";
- close;
- case 2:
- if (Zeny > 50000) {
- mes "[Lea]";
- mes "What kind of Magic Book do you want?";
- next;
- switch (select("Let me think.:Magic Book (Storm Gust):Magic Book (Lord of Vermillion):Magic Book (Meteor Storm):Magic Book (Thunderstorm):Magic Book (Jupitel Thunder):Magic Book (Water Ball):Magic Book (Heaven's Drive):Magic Book (Earth Spike)")) {
- case 1:
- mes "[Lea]";
- mes "No problem.";
- close;
- case 2:
- if (countitem(6192) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (Zeny > 50000) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 50000;
- getitem 6192,1; //Magic_Book_SG
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 3:
- if (countitem(6193) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (Zeny > 50000) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 50000;
- getitem 6193,1; //Magic_Book_LOV
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 4:
- if (countitem(6194) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- else if (Zeny > 50000) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 50000;
- getitem 6194,1; //Magic_Book_MS
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 5:
- if (countitem(6197) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (Zeny > 50000) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 50000;
- getitem 6197,1; //Magic_Book_TS
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 6:
- if (countitem(6198) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (Zeny > 50000) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 50000;
- getitem 6198,1; //Magic_Book_JT
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 7:
- if (countitem(6199) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (Zeny > 50000) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 50000;
- getitem 6199,1; //Magic_Book_WB
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 8:
- if (countitem(6200) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- else if (Zeny > 50000) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 50000;
- getitem 6200,1; //Magic_Book_HD
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 9:
- if (countitem(6201) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (Zeny > 50000) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 50000;
- getitem 6201,1; //Magic_Book_ES
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- }
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 3:
- if (countitem(603) > 1) {
- mes "[Lea]";
- mes "What kind of Magic Book do you want?";
- next;
- switch (select("Let me think.:Magic Book (Storm Gust):Magic Book (Lord of Vermillion):Magic Book (Meteor Storm):Magic Book (Thunderstorm):Magic Book (Jupitel Thunder):Magic Book (Water Ball):Magic Book (Heaven's Drive):Magic Book (Earth Spike)")) {
- case 1:
- mes "[Lea]";
- mes "No problem.";
- close;
- case 2:
- if (countitem(6192) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(603) > 1) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 603,2; //Old_Blue_Box
- getitem 6192,1; //Magic_Book_SG
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 3:
- if (countitem(6193) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(603) > 1) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 603,2; //Old_Blue_Box
- getitem 6193,1; //Magic_Book_LOV
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 4:
- if (countitem(6194) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(603) > 1) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 603,2; //Old_Blue_Box
- getitem 6194,1; //Magic_Book_MS
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 5:
- if (countitem(6197) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(603) > 1) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 603,2; //Old_Blue_Box
- getitem 6197,1; //Magic_Book_TS
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 6:
- if (countitem(6198) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(603) > 1) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 603,2; //Old_Blue_Box
- getitem 6198,1; //Magic_Book_JT
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 7:
- if (countitem(6199) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(603) > 1) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 603,2; //Old_Blue_Box
- getitem 6199,1; //Magic_Book_WB
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 8:
- if (countitem(6200) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(603) > 1) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 603,2; //Old_Blue_Box
- getitem 6200,1; //Magic_Book_HD
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 9:
- if (countitem(6201) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(603) > 1) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 603,2; //Old_Blue_Box
- getitem 6201,1; //Magic_Book_ES
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- }
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 4:
- if (countitem(985) > 8) {
- mes "[Lea]";
- mes "What kind of Magic Book do you want?";
- next;
- switch (select("Let me think.:Magic Book (Storm Gust):Magic Book (Lord of Vermillion):Magic Book (Meteor Storm):Magic Book (Thunderstorm):Magic Book (Jupitel Thunder):Magic Book (Water Ball):Magic Book (Heaven's Drive):Magic Book (Earth Spike)")) {
- case 1:
- mes "[Lea]";
- mes "No problem.";
- close;
- case 2:
- if (countitem(6192) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(985) > 8) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 985,9; //Elunium
- getitem 6192,1; //Magic_Book_SG
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 3:
- if (countitem(6193) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(985) > 8) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 985,9; //Elunium
- getitem 6193,1; //Magic_Book_LOV
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 4:
- if (countitem(6194) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(985) > 8) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 985,9; //Elunium
- getitem 6194,1; //Magic_Book_MS
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 5:
- if (countitem(6197) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(985) > 8) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 985,9; //Elunium
- getitem 6197,1; //Magic_Book_TS
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 6:
- if (countitem(6198) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(985) > 8) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 985,9; //Elunium
- getitem 6198,1; //Magic_Book_JT
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 7:
- if (countitem(6199) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(985) > 8) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 985,9; //Elunium
- getitem 6199,1; //Magic_Book_WB
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 8:
- if (countitem(6200) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(985) > 8) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 985,9; //Elunium
- getitem 6200,1; //Magic_Book_HD
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 9:
- if (countitem(6201) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (countitem(985) > 8) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- delitem 985,9; //Elunium
- getitem 6201,1; //Magic_Book_ES
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- }
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- }
- case 4:
- mes "[Lea]";
- mes "Oh, do you want the Superior Magic Books? For your information, borrowing those Magic Books requires many conditions and restrictions. Are you sure that you want it?";
- next;
- select("Yes.");
- mes "[Lea]";
- mes "I see. If you're determined to borrow the Superior Magic Books, please choose one of the following tyes of payment for the security deposit.";
- next;
- mes "[Lea]";
- mes "[12 Mystery Pieces and 100,000 zeny], [7 Oridecons and 100,000 zeny], or [1 Old Violet Box and 100,000 zeny]. Now how would you like to pay your deposit?";
- switch (select("Where can I find those items?:Let me think.:I'll pay with 12 Mystery Pieces and 100,000 zeny.:I'll pay with 7 Oridecons and 100,000 zeny.:I'll pay with 1 Old Violet Box and 100,000 zeny.")) {
- next;
- case 1:
- mes "[Lea] ";
- mes "Mystery Pieces can be obtained from machine creatures in the Juperos Dungeon, and they're the fountain of knowledge from the ancient civilization. Ah, I get excited thinking about those artifacts.";
- next;
- mes "[Lea]";
- mes "Oridecons can be obtained from Executioners, Gryphons, Jokers, and Abysmal Knights, but it'll be easier to collect Rough Oridecons than Oridecons.";
- next;
- mes "[Lea]";
- mes "You can refine Rough Oridecons to Oridecons at the Forge in town.";
- next;
- mes "[Lea]";
- mes "Old Violet Boxes can be obtained from Mimics, Megaliths, Orc Lords, Stormy Knights, and Osirises.";
- next;
- mes "[Lea]";
- mes "The boxes are a subject worthy of serious study since they're used to test Schrodinger's pet cat.";
- close;
- case 2:
- mes "[Lea]";
- mes "If you're unable to collect the items for the security deposit, I can offer you an alternate payment method.";
- next;
- mes "[Lea]";
- mes "How does 200,000 Rune-Midgartian zeny sound?";
- switch (select("I'm sorry, but I can't pay that much.:Sounds good.")) {
- next;
- case 1:
- mes "[Lea]";
- mes "I see.";
- close;
- case 2:
- if (Zeny > 199999) {
- mes "[Lea]";
- mes "What kind of Magic Book do you want?";
- next;
- switch (select("Let me think.:Magic Book (Earth Strain):Magic Book (Chain Lightning):Magic Book (Crimson Rock):Magic Book (Drain Life)")) {
- case 1:
- mes "[Lea]";
- mes "No problem.";
- close;
- case 2:
- if (countitem(6202) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (Zeny > 199999) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 200000;
- getitem 6202,1; //Magic_Book_ES_
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 3:
- if (countitem(6203) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (Zeny > 199999) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 200000;
- getitem 6203,1; //Magic_Book_CL
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 4:
- if (countitem(6204) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (Zeny > 199999) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 200000;
- getitem 6204,1; //Magic_Book_CR
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 5:
- if (countitem(6205) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if (Zeny > 199999) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 200000;
- getitem 6205,1; //Magic_Book_DL
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- }
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- }
- case 3:
- if ((Zeny > 99999) && (countitem(7094) > 11)) {
- mes "[Lea]";
- mes "What kind of Magic Book do you want?";
- next;
- switch (select("Let me think.:Magic Book (Earth Strain):Magic Book (Chain Lightning):Magic Book (Crimson Rock):Magic Book (Drain Life)")) {
- case 1:
- mes "[Lea]";
- mes "No problem.";
- close;
- case 2:
- if (countitem(6202) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if ((Zeny > 99999) && (countitem(7094) > 11)) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 100000;
- delitem 7094,12; //Mystery_Piece
- getitem 6202,1; //Magic_Book_ES_
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 3:
- if (countitem(6203) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if ((Zeny > 99999) && (countitem(7094) > 11)) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 100000;
- delitem 7094,12; //Mystery_Piece
- getitem 6203,1; //Magic_Book_CL
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 4:
- if (countitem(6204) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if ((Zeny > 99999) && (countitem(7094) > 11)) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 100000;
- delitem 7094,12; //Mystery_Piece
- getitem 6204,1; //Magic_Book_CR
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 5:
- if (countitem(6205) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if ((Zeny > 99999) && (countitem(7094) > 11)) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 100000;
- delitem 7094,12; //Mystery_Piece
- getitem 6205,1; //Magic_Book_DL
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- }
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 4:
- if ((Zeny > 99999) && (countitem(984) > 6)) {
- mes "[Lea]";
- mes "What kind of Magic Book do you want?";
- next;
- switch (select("Let me think.:Magic Book (Earth Strain):Magic Book (Chain Lightning):Magic Book (Crimson Rock):Magic Book (Drain Life)")) {
- case 1:
- mes "[Lea]";
- mes "No problem.";
- close;
- case 2:
- if (countitem(6202) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if ((Zeny > 99999) && (countitem(984) > 6)) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 100000;
- delitem 984,7; //Oridecon
- getitem 6202,1; //Magic_Book_ES_
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 3:
- if (countitem(6203) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if ((Zeny > 99999) && (countitem(984) > 6)) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 100000;
- delitem 984,7; //Oridecon
- getitem 6203,1; //Magic_Book_CL
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 4:
- if (countitem(6204) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if ((Zeny > 99999) && (countitem(984) > 6)) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 100000;
- delitem 984,7; //Oridecon
- getitem 6204,1; //Magic_Book_CR
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 5:
- if (countitem(6205) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if ((Zeny > 99999) && (countitem(984) > 6)) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 100000;
- delitem 984,7; //Oridecon
- getitem 6205,1; //Magic_Book_DL
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- }
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 5:
- if ((Zeny > 99999) && (countitem(617) > 0)) {
- mes "[Lea]";
- mes "What kind of Magic Book do you want?";
- next;
- switch (select("Let me think.:Magic Book (Earth Strain):Magic Book (Chain Lightning):Magic Book (Crimson Rock):Magic Book (Drain Life)")) {
- case 1:
- mes "[Lea]";
- mes "No problem.";
- close;
- case 2:
- if (countitem(6202) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if ((Zeny > 99999) && (countitem(617) > 0)) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 100000;
- delitem 617,1; //Old_Violet_Box
- getitem 6202,1; //Magic_Book_ES_
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 3:
- if (countitem(6203) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if ((Zeny > 99999) && (countitem(617) > 0)) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 100000;
- delitem 617,1; //Old_Violet_Box
- getitem 6203,1; //Magic_Book_CL
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 4:
- if (countitem(6204) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if ((Zeny > 99999) && (countitem(617) > 0)) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 100000;
- delitem 617,1; //Old_Violet_Box
- getitem 6204,1; //Magic_Book_CR
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- case 5:
- if (countitem(6205) > 0) {
- mes "[Lea]";
- mes "You already have that Magic Book. You can't borrow a new book until you return the current one.";
- next;
- mes "[Lea]";
- mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know.";
- close;
- }
- if ((Zeny > 99999) && (countitem(617) > 0)) {
- mes "[Lea]";
- mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation.";
- next;
- mes "[Lea]";
- mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books.";
- set Zeny, Zeny - 100000;
- delitem 617,1; //Old_Violet_Box
- getitem 6205,1; //Magic_Book_DL
- close;
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- }
- }
- mes "[Lea]";
- mes "I'm sorry, but you don't have enough funds.";
- close;
- }
- case 5:
- if ((BaseLevel > 139) && (mac_book < 1) && ((getskilllv(2217) > 0) || (getskilllv(2213) > 0))) {
- mes "[Lea]";
- mes "Did... Did you just say the Ultimate Magic Book?";
- next;
- mes "[Lea]";
- mes "Oh, my....";
- mes "I can't believe someone actually wants that book.";
- next;
- select("Please don't say that you don't have it.");
- mes "[Lea]";
- mes "Frankly, I've never even seen the Ultimate Magic Book.";
- next;
- mes "[Lea]";
- mes "You should ask Master Velof if you want to know more about that book.";
- next;
- mes "[Lea]";
- mes "I'm sorry that I can't help you more than that.";
- set mac_book,1;
- close;
- }
- if ((BaseLevel > 139) && (mac_book > 0) && ((getskilllv(2217) > 0) || (getskilllv(2213) > 0))) {
- mes "[Lea]";
- mes "You should ask Master Velof for some information about that book.";
- close;
- }
- mes "[Lea]";
- mes "How about practicing your magic spells for now?";
- next;
- mes "[Lea]";
- mes "In order to obtain the Ultimate Magic Book, you must reach Level 140 and learn Tetera Bolt and Comet.";
- next;
- mes "[Lea]";
- mes "That book can't be used by just anyone, you know?";
- close;
- }
- }
- mes "[Lea]";
- mes "Welcome to the Magic Archive. You can read and borrow books from here under certain conditions.";
- close;
-}
-
-mid_camp,255,244,4 script Galfos 735,{
-
- if (checkweight(1201,1) == 0) {
- mes "You're carrying too many items. Please make some room in your bag first.";
- close;
- }
- if ((MaxWeight - Weight) < 1000) {
- mes "You're overweight with items. Please lose some item weight first.";
- close;
- }
- if (Upper == 2) {
- mes "[Galfos]";
- mes "What are you, a baby?";
- mes "I'm not here to babysit. Get lost!";
- close;
- }
- if ((Class != Job_Warlock) && (Class != Job_Warlock_T) && (Class != Job_Baby_Warlock)) {
- mes "[Galfos]";
- mes "My right arm feels hot while my left arm feels cold. I can never get used to this weird weather!";
- close;
- }
- if (getskilllv(2230) < 1) {
- mes "[Galfos]";
- mes "Ah, I'll get myself in trouble if I stay here any longer. Maybe I'm already in...";
- close;
- }
- if ((BaseLevel < 140) || (getskilllv(2217) < 1) && (getskilllv(2213) < 1)) {
- mes "[Galfos]";
- mes "I'm sorry, but I don't talk to people that aren't even ready for this.";
- close;
- }
- if (mac_book < 2) {
- mes "[Galfos]";
- mes "You look strong, but you don't seem to have any business with me.";
- close;
- }
- if (mac_book == 2) {
- mes "[Galfos]";
- mes "What brings you to me?";
- next;
- select("I heard that you've studied the Ultimate Magic Book.");
- mes "[Galfos]";
- mes "Why, are you interested too?";
- mes "I didn't know someone would actually take an interest in that book. Yes, I'm studying that magic book. How did you find that out?";
- next;
- select("You're Velof's brother, right?");
- mes "[Galfos]";
- mes "Yes, I'm Galfos, and Velof is my brother.";
- next;
- mes "[Galfos]";
- mes "Wait a minute,";
- mes "did the old man recommend me to you?";
- next;
- select("That's right.");
- mes "[Galfos]";
- mes "Wow!";
- mes "This is surprising. He never took my research very seriously. I'm glad that he finally changed his mind.";
- next;
- mes "[Galfos]";
- mes "Heh! Your timing couldn't be better: I was looking for a test object.";
- next;
- select("A test object?");
- mes "[Galfos]";
- mes "Frankly, I'm only interested in creating the Ultimate Magic Book.";
- next;
- mes "[Galfos]";
- mes "I'm not good at using magic, not to mention that I prefer fists in fighting. Nevertheless, I find Magic Books to be incredibly intriguing.";
- next;
- mes "[Galfos]";
- mes "The problem is that I can't use the Ultimate Magic Book, even if I made one. That's why I can't really test it on my own.";
- next;
- mes "[Galfos]";
- mes "That's why I've been waiting for a true magic practitioner like you that can help me test my Ultimate Magic Book.";
- next;
- select("(What is he talking about?)");
- mes "[Galfos]";
- mes "My research is almost done,";
- mes "and I need to solve one last problem to create the Magic Book.";
- next;
- mes "[Galfos]";
- mes "To make the ancient Ultimate Magic Book, I need an artifact and some spells to fuse into it.";
- next;
- mes "[Galfos]";
- mes "I've perfectly restored the spells based on the ancient documents, but I still have no information about the necessary artifact.";
- next;
- mes "[Galfos]";
- mes "Ah, but there's a silver lining!";
- next;
- select("(Now we're getting somewhere!)");
- mes "[Galfos]";
- mes "Ha ha...";
- mes "There's a great archive in El Dicastes, the Capital City of the Evil Giants, where all knowledge in this world is stored.";
- next;
- mes "[Galfos]";
- mes "Maybe that's the place to find some information about the artifact for this Ultimate Magic Book.";
- next;
- mes "[Galfos]";
- mes "You know what to do, don't you? Find information about the artifact in the El Dicastes archive, using everything in your power.";
- next;
- mes "[Galfos]";
- mes "Afterwards, create and bring me the artifact. We'll talk about creating the Magic Book afterwards.";
- set mac_book,3;
- close;
- }
- if (mac_book == 3) {
- mes "[Galfos]";
- mes "You know what to do, don't you? Find information about the artifact in the El Dicastes archive, using everything in your power.";
- next;
- mes "[Galfos]";
- mes "Afterwards, create and bring me the artifact. We'll talk about creating the Magic Book afterwards.";
- close;
- }
- if (mac_book == 4) {
- mes "[Galfos]";
- mes "Oh, did you find";
- mes "anything useful?";
- next;
- switch (select("I've discovered everything about Comet.:I've mastered the zenith of Tetra Vortex.")) {
- case 1:
- if (countitem(6195) > 0) {
- mes "[Galfos]";
- mes "Are you kidding me? You already have the book!";
- close;
- }
- if (checkquest(12218) == 2) {
- mes "[Galfos]";
- mes "Oh my, I sense incredible energy coming from you. This is great! Now we're ready to make the Ultimate Magic Book.";
- next;
- mes "[Galfos]";
- mes "There's one problem, though: I'm so broke that I don't even have enough money to buy the tools to make the book.";
- next;
- mes "[Galfos]";
- mes "I need at least ^0000aa1000,000 zeny^000000 to buy all the necessary tools. Do you have the money?";
- next;
- switch (select("Wh-what? No!:Sure.")) {
- case 1:
- mes "[Galfos]";
- mes "Aw, you don't? It's disappointing, but there's nothing I can do. Come back when you have enough money, okay?";
- close;
- case 2:
- if (Zeny > 1000000) {
- mes "[Galfos]";
- mes "Alright then, let's get started!";
- next;
- specialeffect2 EF_DISPELL;
- progressbar "ffff00",4;
- specialeffect2 EF_LORD;
- set Zeny, Zeny - 1000000;
- getitem 6195,1; //Magic_Book_CM
- mes "[Galfos]";
- mes "Man, I almost lost my control to the incredible magic energy! Here's your Magic Book.";
- next;
- mes "[Galfos]";
- mes "Thank you for making my dream come true. Feel free to come back if you need another one of these books.";
- close;
- }
- mes "[Galfos]";
- mes "Hey, what did I tell you? I can't buy the tools to make the book without money!";
- close;
- }
- }
- mes "[Galfos]";
- mes "Are you sure that you've found something? It doesn't seem like you've learned what we need...";
- close;
- case 2:
- if (countitem(6196) > 0) {
- mes "[Galfos]";
- mes "Are you kidding me? You already have the book!";
- close;
- }
- if ((checkquest(12219) == 2) && (checkquest(12220) == 2) && (checkquest(12221) == 2) && (checkquest(12222) == 2)) {
- mes "[Galfos]";
- mes "Oh my, I sense incredible energy coming from you. This is great! Now we're ready to make the Ultimate Magic Book.";
- next;
- mes "[Galfos]";
- mes "There's one problem, though: I'm so broke that I don't even have enough money to buy the tools to make the book.";
- next;
- mes "[Galfos]";
- mes "I need at least ^0000aa1000,000 zeny^000000 to buy all the necessary tools. Do you have the money?";
- next;
- switch (select("Wh-what? No!:Sure.")) {
- case 1:
- mes "[Galfos]";
- mes "Aw, you don't? It's disappointing, but there's nothing I can do. Come back when you have enough money, okay?";
- close;
- case 2:
- if (Zeny > 1000000) {
- mes "[Galfos]";
- mes "Alright then, let's get started!";
- next;
- specialeffect2 EF_DISPELL;
- progressbar "ffff00",4;
- specialeffect2 EF_LORD;
- set Zeny, Zeny - 1000000;
- getitem 6196,1; //Magic_Book_TV
- mes "[Galfos]";
- mes "Man, I almost lost my control to the incredible magic energy. Here's your Magic Book.";
- next;
- mes "[Galfos]";
- mes "Thank you for making my dream come true. Feel free to come back if you need another one of these books.";
- close;
- }
- mes "[Galfos]";
- mes "Hey, what did I tell you? I can't buy the tools to make the book without money!";
- close;
- }
- }
- mes "[Galfos]";
- mes "Are you sure that you've found something? It doesn't seem like you've learned what we need...";
- close;
- }
- }
- mes "[Galfos]";
- mes "Is there anything else you need?";
- close;
-}
-
-dic_in01,25,190,0 script Mysterious Documents 844,{
-
- if (isequipped(2782) < 1) {
- mes "I better not forget to equip my ring.";
- close;
- }
- if (ep13_3_invite < 6) {
- mes "When you approach the documents, an Evil Giant that looks like the archive manager tries to call Guard Galton. You should get out of here quickly.";
- close;
- }
- if (checkquest(12165,"PLAYTIME") == 1) {
- mes "The documents are making you feel nauseous. You should come back later after your stomach settles.";
- close;
- }
- if (checkquest(12165,"PLAYTIME") == 2) {
- mes "You don't feel as nauseous anymore. It should be safe to proceed now.";
- erasequest 12165;
- close;
- }
- if ((BaseLevel < 140) || (getskilllv(2217) < 1) && (getskilllv(2213) < 1)) {
- mes "The documents in this container aren't legible. It's not use trying to read them.";
- close;
- }
- specialeffect2 EF_DISPELL;
- progressbar "ffff00",4;
- if (mac_book < 3) {
- mes "You have discovered records about magic, acceleration, and particle waves.";
- close;
- }
- if (mac_book == 3) {
- mes "You have discovered records about magic, acceleration, and particle waves. These documents must be the ones that Galfos is looking for.";
- set mac_book, 4;
- close;
- }
- if (mac_book == 4) {
- if (rand(1,10) == 1) {
- if (getskilllv(2213) > 0) {
- if (checkquest(12218) == 1) {
- mes "You already own this document.";
- close;
- }
- mes "^660066In order to create the essence of lava, you must refine 40 Burning Hearts at the hottest place on the 2nd floor of the Thor's Volcano Dungeon.^000000";
- mes "^660066You must do this by using the greatest power in that place. The Humans have used this method to study the acceleration of magic particles since ancient times.^000000";
- next;
- mes "You have discovered the ^990099Lava Essence Creation Method^000000. Please check your Quest window for more details.";
- specialeffect2 EF_STEAL;
- close2;
- setquest 12218;
- end;
- }
- mes "Nothing in this document looks useful.";
- close;
- }
- if (rand(1,10) == 2) {
- if (getskilllv(2217) > 0) {
- if (checkquest(12219) == 1) {
- mes "You already own this document.";
- close;
- }
- mes "^660066The essence of flame can be refined on stable ground on the 1st floor of the Thor's Volcano Dungeon. 10 Love Coals are necessary to refine the essence.^000000";
- mes "^660066According to Humans' information, this essence constitutes one of the four natural elements.^000000";
- next;
- mes "You have discovered the ^990099Flame Essence Creation Method^000000. Please check your Quest window for more details.";
- specialeffect2 EF_STEAL;
- close2;
- setquest 12219;
- end;
- }
- mes "Nothing in this document looks useful.";
- close;
- }
- if (rand(1,10) == 3) {
- if (getskilllv(2217) > 0) {
- if (checkquest(12220) == 1) {
- mes "You already own this document.";
- close;
- }
- mes "^660066I succeeded in refining the essence of glacier deep inside the 3rd floor of the Ice Cave. If you'd like to try, prepare 10 Ice Hearts and go to the following location.^000000";
- next;
- mes "You have discovered the ^990099Glacier Essence Creation Method^000000. Please check your Quest window for more details.";
- specialeffect2 EF_STEAL;
- close2;
- setquest 12220;
- end;
- }
- mes "Nothing in this document looks useful.";
- close;
- }
- if (rand(1,10) == 4) {
- if (getskilllv(2217) > 0) {
- if (checkquest(12221) == 1) {
- mes "You already own this document.";
- close;
- }
- mes "^660066I was able to refine the essence of fossil from old rocks on the 2nd floor of the Mine Dungeon. So far, that place is the most stable among all the testing grounds.";
- mes "If you'd like to try, prepare 10 Jubilees and go to the dungeon. Good luck.^000000";
- next;
- mes "You have discovered the ^990099Fossil Essence Creation Method^000000. Please check your Quest window for more details.";
- specialeffect2 EF_STEAL;
- close2;
- setquest 12221;
- end;
- }
- mes "Nothing in this document looks useful.";
- close;
- }
- if (rand(1,10) == 5) {
- if (getskilllv(2217) > 0) {
- if (checkquest(12222) == 1) {
- mes "You already own this document.";
- close;
- }
- mes "^660066In order to refine the essence of storm, I visited the Hermit's Checkerboard in Kunlun where the spirit of the wind resides.";
- mes "The refining process was easy, but I had a hard time finding the catalyst, Dragon Teeth.^000000";
- next;
- mes "You have discovered the ^990099Storm Essence Creation Method^000000. Please check your Quest window for more details.";
- specialeffect2 EF_STEAL;
- close2;
- setquest 12222;
- end;
- }
- mes "Nothing in this document looks useful.";
- close;
- }
- if (rand(1,10) == 10) {
- mes "You suddenly feel sick, and this nausea won't go away easily. You should try finding the documents you need later.";
- setquest 12165;
- close;
- }
- mes "Nothing here looks special.";
- close;
- }
- mes "You no longer need to search this place.";
- close;
-}
-
-thor_v02,163,104,0 script Powerful Lava Energy#33 844,{
-
- if ((MaxWeight - Weight) < 1000) {
- mes "Please lighten your bag.";
- close;
- }
- if ((checkquest(12218) == 1) && (countitem(7097) > 39)) {
- specialeffect2 EF_BLIND;
- specialeffect2 EF_BEGINSPELL;
- progressbar "ffff00",4;
- delitem 7097,40; //Burning_Heart
- if (rand(1,2) == 1) {
- mes "You have used 40 Burning Hearts to create ^999900Lava Essence^000000.";
- next;
- mes "^008800The Lava Essence will last permanently, unless there's a problem.^000000";
- completequest 12218;
- specialeffect2 EF_LORD;
- close;
- }
- mes "^008888You have failed to refine the essence using 40 Burning Hearts.^000000";
- close;
- }
- if (checkquest(12218) == 2) {
- mes "You've already created Lava Essence in this area.";
- close;
- }
- mes "Someone already used this area.";
- close;
-}
-
-thor_v01,185,91,0 script Powerful Flame Energy#33 844,{
-
- if ((MaxWeight - Weight) < 1000) {
- mes "Please lighten your bag.";
- close;
- }
- if ((checkquest(12219) == 1) && (countitem(7098) > 9)) {
- specialeffect2 EF_BLIND;
- specialeffect2 EF_BEGINSPELL;
- progressbar "ffff00",4;
- delitem 7098,10; //Live_Coal
- if (rand(1,3) == 1) {
- mes "You have used 10 Live Coals to create ^999900Flame Essence^000000.";
- next;
- mes "^008800The Flame Essence will last permanently, unless there's a problem.^000000";
- completequest 12219;
- specialeffect2 EF_LORD;
- close;
- }
- mes "^008888You have failed to refine the essence using 10 Live Coals.^000000";
- close;
- }
- if (checkquest(12219) == 2) {
- mes "You've already created Flame Essence in this area.";
- close;
- }
- mes "Someone already used this area.";
- close;
-}
-
-ice_dun03,137,148,0 script Powerful Glacier Energy 844,{
-
- if ((MaxWeight - Weight) < 1000) {
- mes "Please lighten your bag.";
- close;
- }
- if ((checkquest(12220) == 1) && (countitem(7561) > 9)) {
- specialeffect2 EF_BLIND;
- specialeffect2 EF_BEGINSPELL;
- progressbar "ffff00",4;
- delitem 7561,10; //Ice_Heart
- if (rand(1,3) == 1) {
- mes "You have used 10 Glacial Hearts to create ^999900Glacier Essence^000000.";
- next;
- mes "^008800The Glacier Essence will last permanently, unless there's a problem.^000000";
- completequest 12220;
- specialeffect2 EF_LORD;
- close;
- }
- mes "^008888You have failed to refine the essence using 10 Glacial Hearts.^000000";
- close;
- }
- if (checkquest(12220) == 2) {
- mes "You've already created Glacier Essence in this area.";
- close;
- }
- mes "Someone already used this area.";
- close;
-}
-
-ein_dun02,181,124,0 script Powerful Fossil Energy 844,{
-
- if ((MaxWeight - Weight) < 1000) {
- mes "Please lighten your bag.";
- close;
- }
- if ((checkquest(12221) == 1) && (countitem(7312) > 9)) {
- specialeffect2 EF_BLIND;
- specialeffect2 EF_BEGINSPELL;
- progressbar "ffff00",4;
- delitem 7312,10; //Jubilee
- if (rand(1,3) == 1) {
- mes "You have used 10 Jubilees to create ^999900Fossil Essence^000000.";
- next;
- mes "^008800The Fossil Essence will last permanently, unless there's a problem.^000000";
- specialeffect2 EF_LORD;
- completequest 12221;
- close;
- }
- mes "^008888You have failed to refine the essence using 10 Jubilees.^000000";
- close;
- }
- if (checkquest(12221) == 2) {
- mes "You've already created Fossil Essence in this area.";
- close;
- }
- mes "Someone already used this area.";
- close;
-}
-
-gon_dun02,252,198,0 script Powerful Storm Energy#33 844,{
-
- if ((MaxWeight - Weight) < 1000) {
- mes "Please lighten your bag.";
- close;
- }
- if ((checkquest(12222) == 1) && (countitem(7266) > 9)) {
- specialeffect2 EF_BLIND;
- specialeffect2 EF_BEGINSPELL;
- progressbar "ffff00",4;
- delitem 7266,10; //Dragon_Fang
- if (rand(1,3) == 1) {
- mes "You have used 10 Dragon Teeth to create ^999900Storm Essence^000000.";
- next;
- mes "^008800The Storm Essence will last permanently, unless there's a problem.^000000";
- specialeffect2 EF_LORD;
- completequest 12222;
- close;
- }
- mes "^008888You have failed to refine the essence using 10 Dragon Teeth.^000000";
- close;
- }
- if (checkquest(12222) == 2) {
- mes "You've already created Storm Essence in this area.";
- close;
- }
- mes "Someone already used this area.";
- close;
-}
\ No newline at end of file +//===== rAthena Script ======================================= +//= Magic Book Seller +//===== By: ================================================== +//= Masao +//= Credits to Muad_Dib for the translation. +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena +//===== Description: ========================================= +//= An NPC which sells you different kinds of Magic Books. +//===== Additional Comments: ================================= +//= 1.0 First Version. [Masao] +//============================================================ + +geffen_in,176,105,4 script Magic Book Master Velof 64,{ + + if (checkweight(1201,1) == 0) { + mes "You're carrying too many items. Please make some room in your bag first."; + close; + } + if ((MaxWeight - Weight) < 1000) { + mes "You're overweight with items. Please lose some item weight first."; + close; + } + if ((Upper == 2) && (Class != Job_Baby_Warlock)) { + mes "[Magic Book Master Velof]"; + mes "What are you, a baby?"; + mes "I'm not here to babysit. Get lost!"; + close; + } + if ((Class != Job_Warlock) && (Class != Job_Warlock_T) && (Class != Job_Baby_Warlock)) { + mes "[Magic Book Master Velof]"; + mes "Ha ha, are you also seeking new knowledge?"; + next; + mes "[Magic Book Master Velof]"; + mes "I'm sorry, but my knowledge doesn't concern you."; + close; + } + if (getskilllv(2230) < 1) { // WL_RELEASE + mes "[Magic Book Master Velof]"; + mes "Well you've met all the qualifications except one: you need the Release spell."; + next; + mes "[Magic Book Master Velof]"; + mes "Learn the spell first. I've got so many things to tell you."; + close; + } + if ((getskilllv(2230) > 0) && (Class == Job_Warlock) || (Class == Job_Warlock_T) || (Class == Job_Baby_Warlock)) { + mes "[Magic Book Master Velof]"; + mes "Welcome, my friend."; + mes "Congratulations on entering a brand new world of magic."; + next; + mes "[Magic Book Master Velof]"; + mes "We magic practitioners are always thirsty for new knowledge and power."; + next; + mes "[Magic Book Master Velof]"; + mes "We endure great hardship and pain to achieve what we want. When we finally do, the sense of accomplishment defies description. That's why both you and I have chosen the way of magic."; + next; + mes "[Magic Book Master Velof]"; + mes "By the way, what brings you to me today?"; + next; + switch (select("Nothing.:Do you know the Reading Spell Book?:What's the Freezing Spell?:Can I have a Magic Book?:Can I use the Reading Spell Book without the Freezing Spell?:About the Ultimate Magic Book")) { + case 1: + mes "[Magic Book Master Velof]"; + mes "Hah! You're silly."; + close; + case 2: + mes "[Magic Book Master Velof]"; + mes "Reading Spell Book literally means 'read a spell book.' Do you know how to use Magic Books?"; + next; + switch (select("Yes, I do.:No, I don't.")) { + case 1: + mes "[Magic Book Master Velof]"; + mes "Well then, you don't need an additional lecture."; + close; + case 2: + mes "[Magic Book Master Velof]"; + mes "Magic Books are an advanced type of magic scroll. While spells on scrolls disappear after one use, the ones in Magic Books can be cast multiple times."; + next; + mes "[Magic Book Master Velof]"; + mes "Let's compare a spell on a scroll to a wire. When the wire is used to open a door or do something else, it's bent and crushed, losing its original shape. A spell from a Magic Book is more like a shape memory alloy."; + next; + mes "[Magic Book Master Velof]"; + mes "Huh, don't you now what shape memory alloy is? Eh, just remember this: a wire made from shape memory alloy restores its shape over time."; + next; + mes "[Magic Book Master Velof]"; + mes "Like the alloy, a spell on a Magic Book remains after a use, although reusing the spell has a downtime for its restoration."; + next; + mes "[Magic Book Master Velof]"; + mes "...Oh, I didn't mean to talk for too long. Anyways, you can use Magic Books to cast spells that you've learned. Its concept is different from normal spells."; + next; + select("What's the difference?"); + mes "[Magic Book Master Velof]"; + mes "Why do you have to write your existing spells in Magic Books, you asked?"; + next; + mes "[Magic Book Master Velof]"; + mes "That's a good question. It's related to Magic Binding."; + next; + mes "[Magic Book Master Velof]"; + mes "You already learned Release, which allows you to hold the energy of the four different elements before the actual casting. Magic Binding is similar to Release."; + next; + mes "[Magic Book Master Velof]"; + mes "Since you've learned Release, you're capable of using Magic Binding as well. Well, let's talk about that later."; + next; + mes "[Magic Book Master Velof]"; + mes "You know how to hold an existing spell, and then cast it at a desired timing via Release."; + next; + mes "[Magic Book Master Velof]"; + mes "Carrying the globes of the four elements is also related to Magic Binding."; + next; + mes "[Magic Book Master Velof]"; + mes "As you know, the four elements are Fire, Water, Wind, and Earth. Being able to employ them freely is the essential principle of magic."; + next; + mes "[Magic Book Master Velof]"; + mes "We Humans use torches to keep fire, fans to blow wind, and bowls to hold water. We also use clay to make earthenware."; + next; + mes "[Magic Book Master Velof]"; + mes "Those activities may differ from magic, but both are the same in the sense of employing the four elements."; + next; + mes "[Magic Book Master Velof]"; + mes "When you use complex magic spells to summon a storm, drop lightning, or burn an area, that consumes a lot of your energy, both physically and mentally."; + next; + mes "[Magic Book Master Velof]"; + mes "When you fail to bind such powerful magic spells or fail to control them,"; + next; + mes "[Magic Book Master Velof]"; + mes "you can receive irreparable damage to your mind and body."; + next; + mes "[Magic Book Master Velof]"; + mes "That's why we use Magic Books to reduce that burden. It helps summon pre-cast spells while you're focusing on binding their magic power."; + next; + mes "[Magic Book Master Velof]"; + mes "There's one downside though: Magic Books cannot be used for spells that you haven't learned."; + next; + mes "[Magic Book Master Velof]"; + mes "As I said earlier, spells in Magic Books tend to go back to what they are."; + next; + mes "[Magic Book Master Velof]"; + mes "That said, as a Circler, you cannot change or create spells in Magic Books."; + next; + mes "[Magic Book Master Velof]"; + mes "Even if you create one, its power will be beyond your capacity."; + next; + mes "[Magic Book Master Velof]"; + mes "In order to use the Reading Spell Book, you must learn the Freezing Spell to bind magic."; + close; + } + case 3: + mes "[Magic Book Master Velof]"; + mes "The Freezing Spell is used for Magic Binding. It helps you to insert a magic spell to a circle."; + next; + mes "[Magic Book Master Velof]"; + mes "Circles of magic work organically with each other. When you use the Freezing Spell to bind a spell, the spell won't activate until you cast the release spell."; + next; + mes "[Magic Book Master Velof]"; + mes "Of course, binding a spell continuously consumes your mana, but it consumes less mana than conventional magic spells."; + next; + mes "[Magic Book Master Velof]"; + mes "Magic Binding becomes more difficult when you use more powerful magic spells."; + next; + mes "[Magic Book Master Velof]"; + mes "For weak spells, you can bind two to three of them with your circle. For more powerful spells, maybe one or two is possible."; + next; + mes "[Magic Book Master Velof]"; + mes "That all depends on your ability to control your spells. You'll have to try and experience Magic Binding after you first learn it to really understand."; + close; + case 4: + mes "[Magic Book Master Velof]"; + mes "I'm sorry, but I only have Magic Books for beginners, but they're obviously not suitable for you. Do you still want one?"; + next; + switch (select("Sure thing.:Where can I find advanced books?")) { + case 1: + mes "[Magic Book Master Velof]"; + mes "Please go talk to [Lea] in the Archive. Tell her that you need one of the Magic Books that I've stored in there."; + next; + mes "[Magic Book Master Velof]"; + mes "For your information, she won't give it to you without anything in return. Expect her to ask you for something!"; + if (wm_book < 1) { + set wm_book, 1; + } + close; + case 2: + mes "[Magic Book Master Velof]"; + mes "I'm sorry, but our management has recently decided to limit the availability of Magic Books for Multi Circlers. It's because their numbers are increasing more quickly than we expected."; + next; + mes "[Magic Book Master Velof]"; + mes "You could find one if you try hard, but I don't have any with me."; + next; + mes "[Magic Book Master Velof]"; + mes "If our management releases the restriction, you'll be the first one to know. Don't worry."; + close; + } + case 5: + mes "[Magic Book Master Velof]"; + mes "Nothing will happen when you try to bind magic without using Magic Binding because you have nothing to hold magic."; + next; + mes "[Magic Book Master Velof]"; + mes "It's like water that needs a bowl to stay in place."; + next; + mes "[Magic Book Master Velof]"; + mes "The problem is when you try to forcefully cast a spell that you haven't learned. It'll definately backfire on you."; + next; + mes "[Magic Book Master Velof]"; + mes "Of course, the damage won't be severe: you'll fall asleep or be thrown into confusion. This is all because there's a conflict between your Magic Book and the force of Magic Binding when you're trying to summon and hold a unlearned spell."; + next; + mes "[Magic Book Master Velof]"; + mes "Don't try it out just to see what happens for yourself! Falling asleep while casting a spell? There's nothing more humiliating than that to magic practitioners like us."; + close; + case 6: + if ((BaseLevel > 139) && (getskilllv(2217) > 0) || (getskilllv(2213) > 0)) { + if(mac_book < 1){ + mes "[Magic Book Master Velof]"; + mes "I'm sorry, but could you ask someone else? I'm kind of busy right now."; + close; + } + if (mac_book == 1) { + mes "[Magic Book Master Velof]"; + mes "Huh, are you looking for the Ultimate Magic Book? Who sent you?"; + next; + select("Ms. Lea."); + mes "[Magic Book Master Velof]"; + mes "I'm sorry, but there's not much information left about the Ultimate Magic Book."; + next; + mes "[Magic Book Master Velof]"; + mes "A few scholars in the Midgard Continent once tried to collect ancient Magic Books and reproduce that book, but..."; + next; + select("But what?"); + mes "[Magic Book Master Velof]"; + mes "Oh yes, perhaps he might know something."; + next; + select("Yes, I knew this was coming!"); + mes "[Magic Book Master Velof]"; + mes "My brother is just like you. He's very interested in recreating the Ultimate Magic Book."; + next; + mes "[Magic Book Master Velof]"; + mes "His name is Galfos."; + mes "He's been taking a great interest in the ancient Magic Books."; + next; + mes "[Magic Book Master Velof]"; + mes "I didn't support him or give him any advice for his research since I thought he'd give on it pretty quickly, but..."; + next; + mes "[Magic Book Master Velof]"; + mes "If he's discovered anything useful, maybe it can helpful to you."; + next; + select("Where's Galfos now?"); + mes "[Magic Book Master Velof]"; + mes "I've heard that he's near the Expedition Camp beyond the Dimensional Rift to seek information about the ancient Magic Books."; + next; + mes "[Magic Book Master Velof]"; + mes "If you want to see him, you should prepare for a long journey."; + set mac_book,2; + close; + } + if (mac_book > 1) { + mes "[Magic Book Master Velof]"; + mes "Galfos is near the Expedition Camp beyond the Dimensional Rift."; + next; + mes "[Magic Book Master Velof]"; + mes "If you want to see him, you should prepare for a long journey."; + close; + } + } + mes "[Magic Book Master Velof]"; + mes "Ha ha, I'm sorry, but you should focus on strengthening your body rather than creating Magic Books."; + close; + } + } + mes "[Magic Book Master Velof]"; + mes "Ha ha, are you also seeking new knowledge?"; + next; + mes "[Magic Book Master Velof]"; + mes "I'm sorry, but my knowledge doesn't concern you."; + close; +} + +geffen_in,175,112,4 script Lea 123,{ + + if (checkweight(1201,1) == 0) { + mes "You're carrying too many items. Please make some room in your bag first."; + close; + } + if ((MaxWeight - Weight) < 1000) { + mes "You're overweight with items. Please lose some item weight first."; + close; + } + if ((wm_book > 0) && (Class == Job_Warlock) || (Class == Job_Warlock_T) || (Class == Job_Baby_Warlock)) { + mes "[Lea]"; + mes "You can only read books here. If you'd like to borrow any books, please receive an approval from 1 manager and 1 High Mage."; + next; + mes "[Lea]"; + mes "How may I help you?"; + next; + select("Master Velof asked me to bring his Magic Book."); + mes "[Lea]"; + mes "Are you borrowing a book?"; + next; + switch (select("Let me think.:I want the Beginner's Magic Books.:I want the Intermediate Magic Books.:I want the Superior Magic Books.:I want the Ultimate Magic Book.")) { + case 1: + mes "[Lea]"; + mes "No problem."; + close; + case 2: + mes "[Lea]"; + mes "We're in trouble because so many people want to borrow our Magic Books."; + next; + mes "[Lea]"; + mes "Unfortunately, many of our lent books aren't returned on time. That's why we've decided to charge a security deposit."; + next; + select("A security deposit?"); + mes "[Lea]"; + mes "Yes. You may pay a minimum of 10,000 Rune-Midgarts zeny. Alternatively, you can bring 2 Old Magic Books or 50 Old Pages. Once you pay the deposit, I'll let you borrow some Magic Books."; + next; + switch (select("Where can I find Old Magic Books and Old Pages?:I'll pay with zeny.:I'll pay with Old Magic Books.:I'll pay with Old Pages.")) { + case 1: + mes "[Lea]"; + mes "I heard that you can find them from Ride Words, Death Words, Bathorys, and other monsters. I ask that you please don't strain yourself to find those items."; + next; + mes "[Lea]"; + mes "Your life is more important than anything else, you know?"; + close; + case 2: + if (Zeny > 10000) { + mes "[Lea]"; + mes "What kind of Magic Book do you want?"; + next; + switch (select("Let me think.:Magic Book (Fire Bolt):Magic Book (Cold Bolt):Magic Book (Lightning Bolt)")) { + case 1: + mes "[Lea]"; + mes "No problem."; + close; + case 2: + if (countitem(6189) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (Zeny > 10000) { + mes "[Lea]"; + mes "The book's return date is written on the lending card on the back cover of the book."; + next; + mes "[Lea]"; + mes "Please try not to lose or damage the book to avoid paying any extra charges."; + set Zeny, Zeny - 10000; + getitem 6189,1; //Magic_Book_FB + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 3: + if (countitem(6190) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (Zeny > 10000) { + mes "[Lea]"; + mes "The book's return date is written on the lending card on the back cover of the book."; + next; + mes "[Lea]"; + mes "Please try not to lose or damage the book to avoid paying any extra charges."; + set Zeny, Zeny - 10000; + getitem 6190,1; //Magic_Book_CB + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 4: + if (countitem(6191) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (Zeny > 10000) { + mes "[Lea]"; + mes "The book's return date is written on the lending card on the back cover of the book."; + next; + mes "[Lea]"; + mes "Please try not to lose or damage the book to avoid paying any extra charges."; + set Zeny, Zeny - 10000; + getitem 6191,1; //Magic_Book_LB + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + } + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 3: + if (countitem(1006) > 1) { + mes "[Lea]"; + mes "What kind of Magic Book do you want?"; + next; + switch (select("Let me think.:Magic Book (Fire Bolt):Magic Book (Cold Bolt):Magic Book (Lightning Bolt)")) { + case 1: + mes "[Lea]"; + mes "No problem."; + close; + case 2: + if (countitem(6189) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(1006) > 1) { + mes "[Lea]"; + mes "The book's return date is written on the lending card on the back cover of the book."; + next; + mes "[Lea]"; + mes "Please try not to lose or damage the book to avoid paying any extra charges."; + delitem 1006,2; //Old_Magic_Book + getitem 6189,1; //Magic_Book_FB + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 3: + if (countitem(6190) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(1006) > 1) { + mes "[Lea]"; + mes "The book's return date is written on the lending card on the back cover of the book."; + next; + mes "[Lea]"; + mes "Please try not to lose or damage the book to avoid paying any extra charges."; + delitem 1006,2; //Old_Magic_Book + getitem 6190,1; //Magic_Book_CB + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 4: + if (countitem(6191) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(1006) > 1) { + mes "[Lea]"; + mes "The book's return date is written on the lending card on the back cover of the book."; + next; + mes "[Lea]"; + mes "Please try not to lose or damage the book to avoid paying any extra charges."; + delitem 1006,2; //Old_Magic_Book + getitem 6191,1; //Magic_Book_LB + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + } + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 4: + if (countitem(1097) > 49) { + mes "[Lea]"; + mes "What kind of Magic Book do you want?"; + next; + switch (select("Let me think.:Magic Book (Fire Bolt):Magic Book (Cold Bolt):Magic Book (Lightning Bolt)")) { + case 1: + mes "[Lea]"; + mes "No problem."; + close; + case 2: + if (countitem(6189) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(1097) > 49) { + mes "[Lea]"; + mes "The book's return date is written on the lending card on the back cover of the book."; + next; + mes "[Lea]"; + mes "Please try not to lose or damage the book to avoid paying any extra charges."; + delitem 1097,50; //Worn_Out_Page + getitem 6189,1; //Magic_Book_FB + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 3: + if (countitem(6190) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(1097) > 49) { + mes "[Lea]"; + mes "The book's return date is written on the lending card on the back cover of the book."; + next; + mes "[Lea]"; + mes "Please try not to lose or damage the book to avoid paying any extra charges."; + delitem 1097,50; //Worn_Out_Page + getitem 6190,1; //Magic_Book_CB + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 4: + if (countitem(6191) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + else if (countitem(1097) > 49) { + mes "[Lea]"; + mes "The book's return date is written on the lending card on the back cover of the book."; + next; + mes "[Lea]"; + mes "Please try not to lose or damage the book to avoid paying any extra charges."; + delitem 1097,50; //Worn_Out_Page + getitem 6191,1; //Magic_Book_LB + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + } + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + } + case 3: + mes "[Lea]"; + mes "Ah, so you want the Intermediate Magic Books. Please pay 50,000 Rune-Midgartian zeny, or you can bring me 2 Old Blue Boxes or 9 Eluniums to borrow the Intermediate Magic Books."; + next; + switch (select("Where can I find Old Blue Boxes and Eluniums?:I'll pay 50,000 zeny.:I'll pay with Old Blue Boxes.:I'll pay with Eluniums.")) { + case 1: + mes "[Lea]"; + mes "Old Blue Boxes are quite rare to find, but they can be obtained from monsters everywhere in the world, including Myst Cases, Megalogons, Mimics, Nightmares, Krabens, Requiems, Nine Tails, Noxiouses, and Byorgues."; + mes "If you have sufficient funds, you may buy the boxes from street vendors."; + next; + mes "[Lea]"; + mes "Eluniums can be obtained from Hyeguns, Zombie Prisoners, Teddy Bears, Obsedians, and Loli Ruris. Or you can refine Rough Eluniums to Eluniums at the Forge in town, and that may be easier."; + close; + case 2: + if (Zeny > 50000) { + mes "[Lea]"; + mes "What kind of Magic Book do you want?"; + next; + switch (select("Let me think.:Magic Book (Storm Gust):Magic Book (Lord of Vermillion):Magic Book (Meteor Storm):Magic Book (Thunderstorm):Magic Book (Jupitel Thunder):Magic Book (Water Ball):Magic Book (Heaven's Drive):Magic Book (Earth Spike)")) { + case 1: + mes "[Lea]"; + mes "No problem."; + close; + case 2: + if (countitem(6192) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (Zeny > 50000) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 50000; + getitem 6192,1; //Magic_Book_SG + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 3: + if (countitem(6193) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (Zeny > 50000) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 50000; + getitem 6193,1; //Magic_Book_LOV + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 4: + if (countitem(6194) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + else if (Zeny > 50000) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 50000; + getitem 6194,1; //Magic_Book_MS + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 5: + if (countitem(6197) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (Zeny > 50000) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 50000; + getitem 6197,1; //Magic_Book_TS + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 6: + if (countitem(6198) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (Zeny > 50000) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 50000; + getitem 6198,1; //Magic_Book_JT + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 7: + if (countitem(6199) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (Zeny > 50000) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 50000; + getitem 6199,1; //Magic_Book_WB + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 8: + if (countitem(6200) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + else if (Zeny > 50000) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 50000; + getitem 6200,1; //Magic_Book_HD + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 9: + if (countitem(6201) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (Zeny > 50000) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 50000; + getitem 6201,1; //Magic_Book_ES + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + } + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 3: + if (countitem(603) > 1) { + mes "[Lea]"; + mes "What kind of Magic Book do you want?"; + next; + switch (select("Let me think.:Magic Book (Storm Gust):Magic Book (Lord of Vermillion):Magic Book (Meteor Storm):Magic Book (Thunderstorm):Magic Book (Jupitel Thunder):Magic Book (Water Ball):Magic Book (Heaven's Drive):Magic Book (Earth Spike)")) { + case 1: + mes "[Lea]"; + mes "No problem."; + close; + case 2: + if (countitem(6192) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(603) > 1) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 603,2; //Old_Blue_Box + getitem 6192,1; //Magic_Book_SG + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 3: + if (countitem(6193) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(603) > 1) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 603,2; //Old_Blue_Box + getitem 6193,1; //Magic_Book_LOV + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 4: + if (countitem(6194) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(603) > 1) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 603,2; //Old_Blue_Box + getitem 6194,1; //Magic_Book_MS + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 5: + if (countitem(6197) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(603) > 1) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 603,2; //Old_Blue_Box + getitem 6197,1; //Magic_Book_TS + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 6: + if (countitem(6198) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(603) > 1) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 603,2; //Old_Blue_Box + getitem 6198,1; //Magic_Book_JT + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 7: + if (countitem(6199) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(603) > 1) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 603,2; //Old_Blue_Box + getitem 6199,1; //Magic_Book_WB + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 8: + if (countitem(6200) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(603) > 1) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 603,2; //Old_Blue_Box + getitem 6200,1; //Magic_Book_HD + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 9: + if (countitem(6201) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(603) > 1) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 603,2; //Old_Blue_Box + getitem 6201,1; //Magic_Book_ES + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + } + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 4: + if (countitem(985) > 8) { + mes "[Lea]"; + mes "What kind of Magic Book do you want?"; + next; + switch (select("Let me think.:Magic Book (Storm Gust):Magic Book (Lord of Vermillion):Magic Book (Meteor Storm):Magic Book (Thunderstorm):Magic Book (Jupitel Thunder):Magic Book (Water Ball):Magic Book (Heaven's Drive):Magic Book (Earth Spike)")) { + case 1: + mes "[Lea]"; + mes "No problem."; + close; + case 2: + if (countitem(6192) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(985) > 8) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 985,9; //Elunium + getitem 6192,1; //Magic_Book_SG + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 3: + if (countitem(6193) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(985) > 8) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 985,9; //Elunium + getitem 6193,1; //Magic_Book_LOV + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 4: + if (countitem(6194) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(985) > 8) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 985,9; //Elunium + getitem 6194,1; //Magic_Book_MS + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 5: + if (countitem(6197) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(985) > 8) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 985,9; //Elunium + getitem 6197,1; //Magic_Book_TS + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 6: + if (countitem(6198) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(985) > 8) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 985,9; //Elunium + getitem 6198,1; //Magic_Book_JT + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 7: + if (countitem(6199) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(985) > 8) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 985,9; //Elunium + getitem 6199,1; //Magic_Book_WB + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 8: + if (countitem(6200) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(985) > 8) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 985,9; //Elunium + getitem 6200,1; //Magic_Book_HD + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 9: + if (countitem(6201) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (countitem(985) > 8) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + delitem 985,9; //Elunium + getitem 6201,1; //Magic_Book_ES + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + } + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + } + case 4: + mes "[Lea]"; + mes "Oh, do you want the Superior Magic Books? For your information, borrowing those Magic Books requires many conditions and restrictions. Are you sure that you want it?"; + next; + select("Yes."); + mes "[Lea]"; + mes "I see. If you're determined to borrow the Superior Magic Books, please choose one of the following tyes of payment for the security deposit."; + next; + mes "[Lea]"; + mes "[12 Mystery Pieces and 100,000 zeny], [7 Oridecons and 100,000 zeny], or [1 Old Violet Box and 100,000 zeny]. Now how would you like to pay your deposit?"; + switch (select("Where can I find those items?:Let me think.:I'll pay with 12 Mystery Pieces and 100,000 zeny.:I'll pay with 7 Oridecons and 100,000 zeny.:I'll pay with 1 Old Violet Box and 100,000 zeny.")) { + next; + case 1: + mes "[Lea] "; + mes "Mystery Pieces can be obtained from machine creatures in the Juperos Dungeon, and they're the fountain of knowledge from the ancient civilization. Ah, I get excited thinking about those artifacts."; + next; + mes "[Lea]"; + mes "Oridecons can be obtained from Executioners, Gryphons, Jokers, and Abysmal Knights, but it'll be easier to collect Rough Oridecons than Oridecons."; + next; + mes "[Lea]"; + mes "You can refine Rough Oridecons to Oridecons at the Forge in town."; + next; + mes "[Lea]"; + mes "Old Violet Boxes can be obtained from Mimics, Megaliths, Orc Lords, Stormy Knights, and Osirises."; + next; + mes "[Lea]"; + mes "The boxes are a subject worthy of serious study since they're used to test Schrodinger's pet cat."; + close; + case 2: + mes "[Lea]"; + mes "If you're unable to collect the items for the security deposit, I can offer you an alternate payment method."; + next; + mes "[Lea]"; + mes "How does 200,000 Rune-Midgartian zeny sound?"; + switch (select("I'm sorry, but I can't pay that much.:Sounds good.")) { + next; + case 1: + mes "[Lea]"; + mes "I see."; + close; + case 2: + if (Zeny > 199999) { + mes "[Lea]"; + mes "What kind of Magic Book do you want?"; + next; + switch (select("Let me think.:Magic Book (Earth Strain):Magic Book (Chain Lightning):Magic Book (Crimson Rock):Magic Book (Drain Life)")) { + case 1: + mes "[Lea]"; + mes "No problem."; + close; + case 2: + if (countitem(6202) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (Zeny > 199999) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 200000; + getitem 6202,1; //Magic_Book_ES_ + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 3: + if (countitem(6203) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (Zeny > 199999) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 200000; + getitem 6203,1; //Magic_Book_CL + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 4: + if (countitem(6204) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (Zeny > 199999) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 200000; + getitem 6204,1; //Magic_Book_CR + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 5: + if (countitem(6205) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if (Zeny > 199999) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 200000; + getitem 6205,1; //Magic_Book_DL + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + } + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + } + case 3: + if ((Zeny > 99999) && (countitem(7094) > 11)) { + mes "[Lea]"; + mes "What kind of Magic Book do you want?"; + next; + switch (select("Let me think.:Magic Book (Earth Strain):Magic Book (Chain Lightning):Magic Book (Crimson Rock):Magic Book (Drain Life)")) { + case 1: + mes "[Lea]"; + mes "No problem."; + close; + case 2: + if (countitem(6202) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if ((Zeny > 99999) && (countitem(7094) > 11)) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 100000; + delitem 7094,12; //Mystery_Piece + getitem 6202,1; //Magic_Book_ES_ + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 3: + if (countitem(6203) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if ((Zeny > 99999) && (countitem(7094) > 11)) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 100000; + delitem 7094,12; //Mystery_Piece + getitem 6203,1; //Magic_Book_CL + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 4: + if (countitem(6204) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if ((Zeny > 99999) && (countitem(7094) > 11)) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 100000; + delitem 7094,12; //Mystery_Piece + getitem 6204,1; //Magic_Book_CR + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 5: + if (countitem(6205) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if ((Zeny > 99999) && (countitem(7094) > 11)) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 100000; + delitem 7094,12; //Mystery_Piece + getitem 6205,1; //Magic_Book_DL + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + } + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 4: + if ((Zeny > 99999) && (countitem(984) > 6)) { + mes "[Lea]"; + mes "What kind of Magic Book do you want?"; + next; + switch (select("Let me think.:Magic Book (Earth Strain):Magic Book (Chain Lightning):Magic Book (Crimson Rock):Magic Book (Drain Life)")) { + case 1: + mes "[Lea]"; + mes "No problem."; + close; + case 2: + if (countitem(6202) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if ((Zeny > 99999) && (countitem(984) > 6)) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 100000; + delitem 984,7; //Oridecon + getitem 6202,1; //Magic_Book_ES_ + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 3: + if (countitem(6203) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if ((Zeny > 99999) && (countitem(984) > 6)) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 100000; + delitem 984,7; //Oridecon + getitem 6203,1; //Magic_Book_CL + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 4: + if (countitem(6204) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if ((Zeny > 99999) && (countitem(984) > 6)) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 100000; + delitem 984,7; //Oridecon + getitem 6204,1; //Magic_Book_CR + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 5: + if (countitem(6205) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if ((Zeny > 99999) && (countitem(984) > 6)) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 100000; + delitem 984,7; //Oridecon + getitem 6205,1; //Magic_Book_DL + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + } + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 5: + if ((Zeny > 99999) && (countitem(617) > 0)) { + mes "[Lea]"; + mes "What kind of Magic Book do you want?"; + next; + switch (select("Let me think.:Magic Book (Earth Strain):Magic Book (Chain Lightning):Magic Book (Crimson Rock):Magic Book (Drain Life)")) { + case 1: + mes "[Lea]"; + mes "No problem."; + close; + case 2: + if (countitem(6202) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if ((Zeny > 99999) && (countitem(617) > 0)) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 100000; + delitem 617,1; //Old_Violet_Box + getitem 6202,1; //Magic_Book_ES_ + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 3: + if (countitem(6203) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if ((Zeny > 99999) && (countitem(617) > 0)) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 100000; + delitem 617,1; //Old_Violet_Box + getitem 6203,1; //Magic_Book_CL + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 4: + if (countitem(6204) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if ((Zeny > 99999) && (countitem(617) > 0)) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 100000; + delitem 617,1; //Old_Violet_Box + getitem 6204,1; //Magic_Book_CR + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + case 5: + if (countitem(6205) > 0) { + mes "[Lea]"; + mes "You already have that Magic Book. You can't borrow a new book until you return the current one."; + next; + mes "[Lea]"; + mes "Don't you know how many others would want the book you already have? It's a bit selfish to want more than one, you know."; + close; + } + if ((Zeny > 99999) && (countitem(617) > 0)) { + mes "[Lea]"; + mes "Thank you for your deposit. The book's return date is written on the lending card on the back cover of the book. Please try not to lose or damage the book and avoid paying compensation."; + next; + mes "[Lea]"; + mes "The Intermediate and Superior Magic Books must be returned upon borrowing the Ultimate Magic Book. Remember that you're just borrowing them, so make sure you take good care of those books."; + set Zeny, Zeny - 100000; + delitem 617,1; //Old_Violet_Box + getitem 6205,1; //Magic_Book_DL + close; + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + } + } + mes "[Lea]"; + mes "I'm sorry, but you don't have enough funds."; + close; + } + case 5: + if ((BaseLevel > 139) && (mac_book < 1) && ((getskilllv(2217) > 0) || (getskilllv(2213) > 0))) { + mes "[Lea]"; + mes "Did... Did you just say the Ultimate Magic Book?"; + next; + mes "[Lea]"; + mes "Oh, my...."; + mes "I can't believe someone actually wants that book."; + next; + select("Please don't say that you don't have it."); + mes "[Lea]"; + mes "Frankly, I've never even seen the Ultimate Magic Book."; + next; + mes "[Lea]"; + mes "You should ask Master Velof if you want to know more about that book."; + next; + mes "[Lea]"; + mes "I'm sorry that I can't help you more than that."; + set mac_book,1; + close; + } + if ((BaseLevel > 139) && (mac_book > 0) && ((getskilllv(2217) > 0) || (getskilllv(2213) > 0))) { + mes "[Lea]"; + mes "You should ask Master Velof for some information about that book."; + close; + } + mes "[Lea]"; + mes "How about practicing your magic spells for now?"; + next; + mes "[Lea]"; + mes "In order to obtain the Ultimate Magic Book, you must reach Level 140 and learn Tetera Bolt and Comet."; + next; + mes "[Lea]"; + mes "That book can't be used by just anyone, you know?"; + close; + } + } + mes "[Lea]"; + mes "Welcome to the Magic Archive. You can read and borrow books from here under certain conditions."; + close; +} + +mid_camp,255,244,4 script Galfos 735,{ + + if (checkweight(1201,1) == 0) { + mes "You're carrying too many items. Please make some room in your bag first."; + close; + } + if ((MaxWeight - Weight) < 1000) { + mes "You're overweight with items. Please lose some item weight first."; + close; + } + if (Upper == 2) { + mes "[Galfos]"; + mes "What are you, a baby?"; + mes "I'm not here to babysit. Get lost!"; + close; + } + if ((Class != Job_Warlock) && (Class != Job_Warlock_T) && (Class != Job_Baby_Warlock)) { + mes "[Galfos]"; + mes "My right arm feels hot while my left arm feels cold. I can never get used to this weird weather!"; + close; + } + if (getskilllv(2230) < 1) { + mes "[Galfos]"; + mes "Ah, I'll get myself in trouble if I stay here any longer. Maybe I'm already in..."; + close; + } + if ((BaseLevel < 140) || (getskilllv(2217) < 1) && (getskilllv(2213) < 1)) { + mes "[Galfos]"; + mes "I'm sorry, but I don't talk to people that aren't even ready for this."; + close; + } + if (mac_book < 2) { + mes "[Galfos]"; + mes "You look strong, but you don't seem to have any business with me."; + close; + } + if (mac_book == 2) { + mes "[Galfos]"; + mes "What brings you to me?"; + next; + select("I heard that you've studied the Ultimate Magic Book."); + mes "[Galfos]"; + mes "Why, are you interested too?"; + mes "I didn't know someone would actually take an interest in that book. Yes, I'm studying that magic book. How did you find that out?"; + next; + select("You're Velof's brother, right?"); + mes "[Galfos]"; + mes "Yes, I'm Galfos, and Velof is my brother."; + next; + mes "[Galfos]"; + mes "Wait a minute,"; + mes "did the old man recommend me to you?"; + next; + select("That's right."); + mes "[Galfos]"; + mes "Wow!"; + mes "This is surprising. He never took my research very seriously. I'm glad that he finally changed his mind."; + next; + mes "[Galfos]"; + mes "Heh! Your timing couldn't be better: I was looking for a test object."; + next; + select("A test object?"); + mes "[Galfos]"; + mes "Frankly, I'm only interested in creating the Ultimate Magic Book."; + next; + mes "[Galfos]"; + mes "I'm not good at using magic, not to mention that I prefer fists in fighting. Nevertheless, I find Magic Books to be incredibly intriguing."; + next; + mes "[Galfos]"; + mes "The problem is that I can't use the Ultimate Magic Book, even if I made one. That's why I can't really test it on my own."; + next; + mes "[Galfos]"; + mes "That's why I've been waiting for a true magic practitioner like you that can help me test my Ultimate Magic Book."; + next; + select("(What is he talking about?)"); + mes "[Galfos]"; + mes "My research is almost done,"; + mes "and I need to solve one last problem to create the Magic Book."; + next; + mes "[Galfos]"; + mes "To make the ancient Ultimate Magic Book, I need an artifact and some spells to fuse into it."; + next; + mes "[Galfos]"; + mes "I've perfectly restored the spells based on the ancient documents, but I still have no information about the necessary artifact."; + next; + mes "[Galfos]"; + mes "Ah, but there's a silver lining!"; + next; + select("(Now we're getting somewhere!)"); + mes "[Galfos]"; + mes "Ha ha..."; + mes "There's a great archive in El Dicastes, the Capital City of the Evil Giants, where all knowledge in this world is stored."; + next; + mes "[Galfos]"; + mes "Maybe that's the place to find some information about the artifact for this Ultimate Magic Book."; + next; + mes "[Galfos]"; + mes "You know what to do, don't you? Find information about the artifact in the El Dicastes archive, using everything in your power."; + next; + mes "[Galfos]"; + mes "Afterwards, create and bring me the artifact. We'll talk about creating the Magic Book afterwards."; + set mac_book,3; + close; + } + if (mac_book == 3) { + mes "[Galfos]"; + mes "You know what to do, don't you? Find information about the artifact in the El Dicastes archive, using everything in your power."; + next; + mes "[Galfos]"; + mes "Afterwards, create and bring me the artifact. We'll talk about creating the Magic Book afterwards."; + close; + } + if (mac_book == 4) { + mes "[Galfos]"; + mes "Oh, did you find"; + mes "anything useful?"; + next; + switch (select("I've discovered everything about Comet.:I've mastered the zenith of Tetra Vortex.")) { + case 1: + if (countitem(6195) > 0) { + mes "[Galfos]"; + mes "Are you kidding me? You already have the book!"; + close; + } + if (checkquest(12218) == 2) { + mes "[Galfos]"; + mes "Oh my, I sense incredible energy coming from you. This is great! Now we're ready to make the Ultimate Magic Book."; + next; + mes "[Galfos]"; + mes "There's one problem, though: I'm so broke that I don't even have enough money to buy the tools to make the book."; + next; + mes "[Galfos]"; + mes "I need at least ^0000aa1000,000 zeny^000000 to buy all the necessary tools. Do you have the money?"; + next; + switch (select("Wh-what? No!:Sure.")) { + case 1: + mes "[Galfos]"; + mes "Aw, you don't? It's disappointing, but there's nothing I can do. Come back when you have enough money, okay?"; + close; + case 2: + if (Zeny > 1000000) { + mes "[Galfos]"; + mes "Alright then, let's get started!"; + next; + specialeffect2 EF_DISPELL; + progressbar "ffff00",4; + specialeffect2 EF_LORD; + set Zeny, Zeny - 1000000; + getitem 6195,1; //Magic_Book_CM + mes "[Galfos]"; + mes "Man, I almost lost my control to the incredible magic energy! Here's your Magic Book."; + next; + mes "[Galfos]"; + mes "Thank you for making my dream come true. Feel free to come back if you need another one of these books."; + close; + } + mes "[Galfos]"; + mes "Hey, what did I tell you? I can't buy the tools to make the book without money!"; + close; + } + } + mes "[Galfos]"; + mes "Are you sure that you've found something? It doesn't seem like you've learned what we need..."; + close; + case 2: + if (countitem(6196) > 0) { + mes "[Galfos]"; + mes "Are you kidding me? You already have the book!"; + close; + } + if ((checkquest(12219) == 2) && (checkquest(12220) == 2) && (checkquest(12221) == 2) && (checkquest(12222) == 2)) { + mes "[Galfos]"; + mes "Oh my, I sense incredible energy coming from you. This is great! Now we're ready to make the Ultimate Magic Book."; + next; + mes "[Galfos]"; + mes "There's one problem, though: I'm so broke that I don't even have enough money to buy the tools to make the book."; + next; + mes "[Galfos]"; + mes "I need at least ^0000aa1000,000 zeny^000000 to buy all the necessary tools. Do you have the money?"; + next; + switch (select("Wh-what? No!:Sure.")) { + case 1: + mes "[Galfos]"; + mes "Aw, you don't? It's disappointing, but there's nothing I can do. Come back when you have enough money, okay?"; + close; + case 2: + if (Zeny > 1000000) { + mes "[Galfos]"; + mes "Alright then, let's get started!"; + next; + specialeffect2 EF_DISPELL; + progressbar "ffff00",4; + specialeffect2 EF_LORD; + set Zeny, Zeny - 1000000; + getitem 6196,1; //Magic_Book_TV + mes "[Galfos]"; + mes "Man, I almost lost my control to the incredible magic energy. Here's your Magic Book."; + next; + mes "[Galfos]"; + mes "Thank you for making my dream come true. Feel free to come back if you need another one of these books."; + close; + } + mes "[Galfos]"; + mes "Hey, what did I tell you? I can't buy the tools to make the book without money!"; + close; + } + } + mes "[Galfos]"; + mes "Are you sure that you've found something? It doesn't seem like you've learned what we need..."; + close; + } + } + mes "[Galfos]"; + mes "Is there anything else you need?"; + close; +} + +dic_in01,25,190,0 script Mysterious Documents 844,{ + + if (isequipped(2782) < 1) { + mes "I better not forget to equip my ring."; + close; + } + if (ep13_3_invite < 6) { + mes "When you approach the documents, an Evil Giant that looks like the archive manager tries to call Guard Galton. You should get out of here quickly."; + close; + } + if (checkquest(12165,"PLAYTIME") == 1) { + mes "The documents are making you feel nauseous. You should come back later after your stomach settles."; + close; + } + if (checkquest(12165,"PLAYTIME") == 2) { + mes "You don't feel as nauseous anymore. It should be safe to proceed now."; + erasequest 12165; + close; + } + if ((BaseLevel < 140) || (getskilllv(2217) < 1) && (getskilllv(2213) < 1)) { + mes "The documents in this container aren't legible. It's not use trying to read them."; + close; + } + specialeffect2 EF_DISPELL; + progressbar "ffff00",4; + if (mac_book < 3) { + mes "You have discovered records about magic, acceleration, and particle waves."; + close; + } + if (mac_book == 3) { + mes "You have discovered records about magic, acceleration, and particle waves. These documents must be the ones that Galfos is looking for."; + set mac_book, 4; + close; + } + if (mac_book == 4) { + if (rand(1,10) == 1) { + if (getskilllv(2213) > 0) { + if (checkquest(12218) == 1) { + mes "You already own this document."; + close; + } + mes "^660066In order to create the essence of lava, you must refine 40 Burning Hearts at the hottest place on the 2nd floor of the Thor's Volcano Dungeon.^000000"; + mes "^660066You must do this by using the greatest power in that place. The Humans have used this method to study the acceleration of magic particles since ancient times.^000000"; + next; + mes "You have discovered the ^990099Lava Essence Creation Method^000000. Please check your Quest window for more details."; + specialeffect2 EF_STEAL; + close2; + setquest 12218; + end; + } + mes "Nothing in this document looks useful."; + close; + } + if (rand(1,10) == 2) { + if (getskilllv(2217) > 0) { + if (checkquest(12219) == 1) { + mes "You already own this document."; + close; + } + mes "^660066The essence of flame can be refined on stable ground on the 1st floor of the Thor's Volcano Dungeon. 10 Love Coals are necessary to refine the essence.^000000"; + mes "^660066According to Humans' information, this essence constitutes one of the four natural elements.^000000"; + next; + mes "You have discovered the ^990099Flame Essence Creation Method^000000. Please check your Quest window for more details."; + specialeffect2 EF_STEAL; + close2; + setquest 12219; + end; + } + mes "Nothing in this document looks useful."; + close; + } + if (rand(1,10) == 3) { + if (getskilllv(2217) > 0) { + if (checkquest(12220) == 1) { + mes "You already own this document."; + close; + } + mes "^660066I succeeded in refining the essence of glacier deep inside the 3rd floor of the Ice Cave. If you'd like to try, prepare 10 Ice Hearts and go to the following location.^000000"; + next; + mes "You have discovered the ^990099Glacier Essence Creation Method^000000. Please check your Quest window for more details."; + specialeffect2 EF_STEAL; + close2; + setquest 12220; + end; + } + mes "Nothing in this document looks useful."; + close; + } + if (rand(1,10) == 4) { + if (getskilllv(2217) > 0) { + if (checkquest(12221) == 1) { + mes "You already own this document."; + close; + } + mes "^660066I was able to refine the essence of fossil from old rocks on the 2nd floor of the Mine Dungeon. So far, that place is the most stable among all the testing grounds."; + mes "If you'd like to try, prepare 10 Jubilees and go to the dungeon. Good luck.^000000"; + next; + mes "You have discovered the ^990099Fossil Essence Creation Method^000000. Please check your Quest window for more details."; + specialeffect2 EF_STEAL; + close2; + setquest 12221; + end; + } + mes "Nothing in this document looks useful."; + close; + } + if (rand(1,10) == 5) { + if (getskilllv(2217) > 0) { + if (checkquest(12222) == 1) { + mes "You already own this document."; + close; + } + mes "^660066In order to refine the essence of storm, I visited the Hermit's Checkerboard in Kunlun where the spirit of the wind resides."; + mes "The refining process was easy, but I had a hard time finding the catalyst, Dragon Teeth.^000000"; + next; + mes "You have discovered the ^990099Storm Essence Creation Method^000000. Please check your Quest window for more details."; + specialeffect2 EF_STEAL; + close2; + setquest 12222; + end; + } + mes "Nothing in this document looks useful."; + close; + } + if (rand(1,10) == 10) { + mes "You suddenly feel sick, and this nausea won't go away easily. You should try finding the documents you need later."; + setquest 12165; + close; + } + mes "Nothing here looks special."; + close; + } + mes "You no longer need to search this place."; + close; +} + +thor_v02,163,104,0 script Powerful Lava Energy#33 844,{ + + if ((MaxWeight - Weight) < 1000) { + mes "Please lighten your bag."; + close; + } + if ((checkquest(12218) == 1) && (countitem(7097) > 39)) { + specialeffect2 EF_BLIND; + specialeffect2 EF_BEGINSPELL; + progressbar "ffff00",4; + delitem 7097,40; //Burning_Heart + if (rand(1,2) == 1) { + mes "You have used 40 Burning Hearts to create ^999900Lava Essence^000000."; + next; + mes "^008800The Lava Essence will last permanently, unless there's a problem.^000000"; + completequest 12218; + specialeffect2 EF_LORD; + close; + } + mes "^008888You have failed to refine the essence using 40 Burning Hearts.^000000"; + close; + } + if (checkquest(12218) == 2) { + mes "You've already created Lava Essence in this area."; + close; + } + mes "Someone already used this area."; + close; +} + +thor_v01,185,91,0 script Powerful Flame Energy#33 844,{ + + if ((MaxWeight - Weight) < 1000) { + mes "Please lighten your bag."; + close; + } + if ((checkquest(12219) == 1) && (countitem(7098) > 9)) { + specialeffect2 EF_BLIND; + specialeffect2 EF_BEGINSPELL; + progressbar "ffff00",4; + delitem 7098,10; //Live_Coal + if (rand(1,3) == 1) { + mes "You have used 10 Live Coals to create ^999900Flame Essence^000000."; + next; + mes "^008800The Flame Essence will last permanently, unless there's a problem.^000000"; + completequest 12219; + specialeffect2 EF_LORD; + close; + } + mes "^008888You have failed to refine the essence using 10 Live Coals.^000000"; + close; + } + if (checkquest(12219) == 2) { + mes "You've already created Flame Essence in this area."; + close; + } + mes "Someone already used this area."; + close; +} + +ice_dun03,137,148,0 script Powerful Glacier Energy 844,{ + + if ((MaxWeight - Weight) < 1000) { + mes "Please lighten your bag."; + close; + } + if ((checkquest(12220) == 1) && (countitem(7561) > 9)) { + specialeffect2 EF_BLIND; + specialeffect2 EF_BEGINSPELL; + progressbar "ffff00",4; + delitem 7561,10; //Ice_Heart + if (rand(1,3) == 1) { + mes "You have used 10 Glacial Hearts to create ^999900Glacier Essence^000000."; + next; + mes "^008800The Glacier Essence will last permanently, unless there's a problem.^000000"; + completequest 12220; + specialeffect2 EF_LORD; + close; + } + mes "^008888You have failed to refine the essence using 10 Glacial Hearts.^000000"; + close; + } + if (checkquest(12220) == 2) { + mes "You've already created Glacier Essence in this area."; + close; + } + mes "Someone already used this area."; + close; +} + +ein_dun02,181,124,0 script Powerful Fossil Energy 844,{ + + if ((MaxWeight - Weight) < 1000) { + mes "Please lighten your bag."; + close; + } + if ((checkquest(12221) == 1) && (countitem(7312) > 9)) { + specialeffect2 EF_BLIND; + specialeffect2 EF_BEGINSPELL; + progressbar "ffff00",4; + delitem 7312,10; //Jubilee + if (rand(1,3) == 1) { + mes "You have used 10 Jubilees to create ^999900Fossil Essence^000000."; + next; + mes "^008800The Fossil Essence will last permanently, unless there's a problem.^000000"; + specialeffect2 EF_LORD; + completequest 12221; + close; + } + mes "^008888You have failed to refine the essence using 10 Jubilees.^000000"; + close; + } + if (checkquest(12221) == 2) { + mes "You've already created Fossil Essence in this area."; + close; + } + mes "Someone already used this area."; + close; +} + +gon_dun02,252,198,0 script Powerful Storm Energy#33 844,{ + + if ((MaxWeight - Weight) < 1000) { + mes "Please lighten your bag."; + close; + } + if ((checkquest(12222) == 1) && (countitem(7266) > 9)) { + specialeffect2 EF_BLIND; + specialeffect2 EF_BEGINSPELL; + progressbar "ffff00",4; + delitem 7266,10; //Dragon_Fang + if (rand(1,3) == 1) { + mes "You have used 10 Dragon Teeth to create ^999900Storm Essence^000000."; + next; + mes "^008800The Storm Essence will last permanently, unless there's a problem.^000000"; + specialeffect2 EF_LORD; + completequest 12222; + close; + } + mes "^008888You have failed to refine the essence using 10 Dragon Teeth.^000000"; + close; + } + if (checkquest(12222) == 2) { + mes "You've already created Storm Essence in this area."; + close; + } + mes "Someone already used this area."; + close; +} diff --git a/npc/quests/pile_bunker.txt b/npc/quests/pile_bunker.txt index d55721f75..6f8d5ae54 100644 --- a/npc/quests/pile_bunker.txt +++ b/npc/quests/pile_bunker.txt @@ -1,59 +1,59 @@ -//===== rAthena Script =======================================
-//= Pile Bunker Quest
-//===== By: ==================================================
-//= JayPee Mateo
-//===== Current Version: =====================================
-//= 2.0
-//===== Compatible With: =====================================
-//= rAthena SVN
-//===== Description: =========================================
-//= 1.0 A Pile Bunker quest based on iRO WiKi. [JayPee Mateo]
-//= iRO WiKi Link: http://irowiki.org/wiki/Pile_Bunker_quest
-//= 2.0 Rewrited the Script a little so it looks a bit better. [Masao]
-//============================================================
-
-yuno,179,174,5 script Gomer 813,{
-
- if(Class == Job_Mechanic || Class == Job_Mechanic_T || Class == Job_Baby_Mechanic){
- mes "[Gomer]";
- mes "Hello "+strcharinfo(0)+",";
- mes "My name is Gomer and i can create Pile Bunkers for you if you bring me the required Items i need.";
- next;
- switch(select("Required items for Pile Bunker?:I brought the materials!")){
- case 1:
- mes "[Gomer]";
- mes "These are the required Items:";
- mes "1x Brocca";
- mes "200x Steel";
- mes "30x Flexible Tube";
- close;
- case 2:
- if(countitem(1415) < 1 || countitem(999) < 200 || countitem(7325) < 30){
- mes "[Gomer]";
- mes "You dont have all the required items. Just talk to me when you have all the requirements.";
- close;
- }
- mes "[Gomer]";
- mes "Great you brought me all the materials i needed!";
- next;
- delitem 1415,1; // Brocca
- delitem 999,50; // Steel
- delitem 7325,30; // Flexible Tube
- getitem 1549,1; // Pile Bunker
- getitem 1360,1; // Two-Handed Axe
- mes "[Gomer]";
- mes "So please, take this Pile Bunker and this Two-Handed Axe i made for you.";
- mes "If you need an new Pile Bunker just come and visit me again!";
- close;
- }
- }
- if(BaseJob == Merchant){
- mes "[Gomer]";
- mes "I'm sorry young one, but you do not seem ready yet to use the Pile Bunker.";
- mes "Come back when you've grown in strength!";
- close;
- }
- mes "[Gomer]";
- mes "Isn't it a beautiful Day today?";
- close;
-}
\ No newline at end of file +//===== rAthena Script ======================================= +//= Pile Bunker Quest +//===== By: ================================================== +//= JayPee Mateo +//===== Current Version: ===================================== +//= 2.0 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= 1.0 A Pile Bunker quest based on iRO WiKi. [JayPee Mateo] +//= iRO WiKi Link: http://irowiki.org/wiki/Pile_Bunker_quest +//= 2.0 Rewrited the Script a little so it looks a bit better. [Masao] +//============================================================ + +yuno,179,174,5 script Gomer 813,{ + + if(Class == Job_Mechanic || Class == Job_Mechanic_T || Class == Job_Baby_Mechanic){ + mes "[Gomer]"; + mes "Hello "+strcharinfo(0)+","; + mes "My name is Gomer and i can create Pile Bunkers for you if you bring me the required Items i need."; + next; + switch(select("Required items for Pile Bunker?:I brought the materials!")){ + case 1: + mes "[Gomer]"; + mes "These are the required Items:"; + mes "1x Brocca"; + mes "200x Steel"; + mes "30x Flexible Tube"; + close; + case 2: + if(countitem(1415) < 1 || countitem(999) < 200 || countitem(7325) < 30){ + mes "[Gomer]"; + mes "You dont have all the required items. Just talk to me when you have all the requirements."; + close; + } + mes "[Gomer]"; + mes "Great you brought me all the materials i needed!"; + next; + delitem 1415,1; // Brocca + delitem 999,50; // Steel + delitem 7325,30; // Flexible Tube + getitem 1549,1; // Pile Bunker + getitem 1360,1; // Two-Handed Axe + mes "[Gomer]"; + mes "So please, take this Pile Bunker and this Two-Handed Axe i made for you."; + mes "If you need an new Pile Bunker just come and visit me again!"; + close; + } + } + if(BaseJob == Merchant){ + mes "[Gomer]"; + mes "I'm sorry young one, but you do not seem ready yet to use the Pile Bunker."; + mes "Come back when you've grown in strength!"; + close; + } + mes "[Gomer]"; + mes "Isn't it a beautiful Day today?"; + close; +} diff --git a/src/login/login.h b/src/login/login.h index 2092e6e71..e79f44626 100644 --- a/src/login/login.h +++ b/src/login/login.h @@ -65,7 +65,7 @@ struct Login_Config { int start_limited_time; // new account expiration time (-1: unlimited) bool use_md5_passwds; // work with password hashes instead of plaintext passwords? int group_id_to_connect; // required group id to connect - int min_group_id_to_connect; // minimum group id to connect + int min_group_id_to_connect; // minimum group id to connect bool check_client_version; // check the clientversion set in the clientinfo ? uint32 client_version_to_connect; // the client version needed to connect (if checking is enabled) |