diff options
Diffstat (limited to 'npc/custom')
-rw-r--r-- | npc/custom/etc/airplane.txt | 884 | ||||
-rw-r--r-- | npc/custom/etc/bank.txt | 236 | ||||
-rw-r--r-- | npc/custom/etc/bank_kafra.txt | 232 | ||||
-rw-r--r-- | npc/custom/etc/blackjack.txt | 694 | ||||
-rw-r--r-- | npc/custom/etc/floating_rates.txt | 86 | ||||
-rw-r--r-- | npc/custom/etc/lottery.txt | 908 | ||||
-rw-r--r-- | npc/custom/etc/market.txt | 78 | ||||
-rw-r--r-- | npc/custom/etc/monster_arena.txt | 1802 | ||||
-rw-r--r-- | npc/custom/etc/morroc_raceway.txt | 476 | ||||
-rw-r--r-- | npc/custom/etc/mvp_arena.txt | 642 | ||||
-rw-r--r-- | npc/custom/etc/penal_servitude.txt | 386 | ||||
-rw-r--r-- | npc/custom/etc/rpsroulette.txt | 572 | ||||
-rw-r--r-- | npc/custom/etc/shifty_assassin.txt | 398 | ||||
-rw-r--r-- | npc/custom/etc/stock_market.txt | 1582 | ||||
-rw-r--r-- | npc/custom/etc/wandering_poets.txt | 1424 | ||||
-rw-r--r-- | npc/custom/healer.txt | 96 | ||||
-rw-r--r-- | npc/custom/item_signer.txt | 446 | ||||
-rw-r--r-- | npc/custom/itemmall.txt | 86 | ||||
-rw-r--r-- | npc/custom/jobmaster.txt | 638 | ||||
-rw-r--r-- | npc/custom/quest_warper.txt | 4274 | ||||
-rw-r--r-- | npc/custom/resetnpc.txt | 122 | ||||
-rw-r--r-- | npc/custom/stylist.txt | 64 |
22 files changed, 8063 insertions, 8063 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 |