diff options
Diffstat (limited to 'npc/custom/etc')
-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 |
15 files changed, 5200 insertions, 5200 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; +} |