//===== eAthena Script =======================================
//= The Airship System Script
//===== By: ==================================================
//= eAthena Dev Team
//===== Current Version: =====================================
//= 1.2
//===== Compatible With: =====================================
//= eAthena SVN 3422+(Requires jA Script System)
//===== Description: =========================================
//= The Airship System used in the official servers, however this
//= one is still about 25% custom and is missing some npcs.
//===== Additional Comments: =================================
//= 0.1 Added first version, it might be a little buggy [MasterOfMuppets]
//= 0.1a Fixed the Airport Staff#Iz which was [MasterOfMuppets]
//= warping you to the same location as Airport Staff#Ein
//= 0.2 Implemented some more airship NPCs, more are to come.
//= 0.3 Implemented some more NPCs [MasterOfMuppets]
//= 0.4 Implemented two mini games scripted by Dj-Yhn [MasterOfMuppets]
//= 0.5 Removed Duplicates [Silent]
//= 0.5a Fixed a typo [Evera]
//= 0.5b Fixed appledice bugs [Lupus]
//= 0.6 Added Rachel to the international route [Playtester]
//= 0.7 Implemented Few Missings NPCs like (Pilot, Aanos, etc...).
//= Corrected Dialogs from some NPCs.
//= Added sistem to work with the "How Does the Airship Work" Quest [Samuray22]
//= 0.8 Moved Gambling NPC Kaci since it's part of a quest. [SinSloth]
//= 0.8b Fixed a Little Bug with the "How Does the Airship Work" Quest. [Samuray22]
//= 0.9 Fixed a incorrect variable changed form "mob_inv" to "mobinv". [Samuray22]
//= 0.9b Fixed a typo and bad variable use in the Typing Challenge [ultramage]
//= 1.0 Fixed bad NPC header data to comply with rev. 11603. [L0ne_W0lf]
//= 1.1 Touch-ups, and changed references of "Yuno" to "Juno", [L0ne_W0lf]
//= 1.1a Small fix to comparison check. [Paradox924X]
//= 1.1b Small fix to zeny check. [Kisuka]
//= 1.2 Updated some NPCs based on official files. [L0ne_W0lf]
//============================================================
//============================================================
//= The Airship System (Juno -> Hugel -> Einbroch -> Lighthalzen -> repeat)
//============================================================
airplane,243,74,4 script #AirshipWarp-1 45,2,2,{
OnTouch:
if($@airplanelocation == 1)warp "einbroch",90,275;
if($@airplanelocation == 2)warp "yuno",85,265;
if($@airplanelocation == 3)warp "lighthalzen",302,75;
if($@airplanelocation == 4)warp "hugel",182,150;
end;
OnHide:
misceffect 16;
end;
OnUnhide:
misceffect 215;
end;
}
airplane,243,29,4 script #AirshipWarp-2 45,2,2,{
OnTouch:
if($@airplanelocation == 1)warp "einbroch",90,275;
if($@airplanelocation == 2)warp "yuno",85,265;
if($@airplanelocation == 3)warp "lighthalzen",302,75;
if($@airplanelocation == 4)warp "hugel",182,150;
end;
OnHide:
misceffect 16;
end;
OnUnhide:
misceffect 215;
end;
}
airplane,1,1,0 script EinYuno_Airship -1,{
OnInit:
while(1)
{
initnpctimer;
setnpctimer 0;
set $@airplanelocation,0;
donpcevent "#AirshipWarp-1::OnHide";
donpcevent "#AirshipWarp-2::OnHide";
disablenpc "#AirshipWarp-1";
disablenpc "#AirshipWarp-2";
mapannounce "airplane","The Airship is leaving the ground. Our next destination is Hugel.",bc_map,0xBA55D3;
end;
OnTimer15000:
mapannounce "airplane","We are heading to Hugel.",bc_map,0xBA55D3;
end;
OnTimer30000:
mapannounce "airplane","We will arrive in Hugel shortly.",bc_map,0xBA55D3;
end;
OnTimer45000:
set $@airplanelocation,4;
enablenpc "#AirshipWarp-1";
enablenpc "#AirshipWarp-2";
donpcevent "#AirshipWarp-1::OnUnhide";
donpcevent "#AirshipWarp-2::OnUnhide";
mapannounce "airplane","Welcome to Hugel. Have a safe trip.",bc_map,0xBA55D3;
end;
OnTimer55000:
mapannounce "airplane","Currently, we are in Hugel. The Airship will leave shortly.",bc_map,0xBA55D3;
end;
OnTimer65000:
set $@airplanelocation,0;
donpcevent "#AirshipWarp-1::OnHide";
donpcevent "#AirshipWarp-2::OnHide";
disablenpc "#AirshipWarp-1";
disablenpc "#AirshipWarp-2";
mapannounce "airplane","The Airship is leaving the ground. Our next destination is Einbroch.",bc_map,0x00FF00;
end;
OnTimer80000:
mapannounce "airplane","We are heading to Einbroch.",bc_map,0x00FF00;
end;
OnTimer95000:
mapannounce "airplane","We will arrive in Einbroch shortly.",bc_map,0x00FF00;
end;
OnTimer110000:
set $@airplanelocation,1;
enablenpc "#AirshipWarp-1";
enablenpc "#AirshipWarp-2";
donpcevent "#AirshipWarp-1::OnUnhide";
donpcevent "#AirshipWarp-2::OnUnhide";
mapannounce "airplane","Welcome to Einbroch. Have a safe trip.",bc_map,0x00FF00;
end;
OnTimer120000:
mapannounce "airplane","Currently, we are in Einbroch. The Airship will take off shortly.",bc_map,0x00FF00;
end;
OnTimer130000:
set $@airplanelocation,0;
donpcevent "#AirshipWarp-1::OnHide";
donpcevent "#AirshipWarp-2::OnHide";
disablenpc "#AirshipWarp-1";
disablenpc "#AirshipWarp-2";
mapannounce "airplane","The Airship is leaving the ground. Our next destination is Lighthalzen.",bc_map,0xFF8600;
end;
OnTimer145000:
mapannounce "airplane","We are heading to Lighthalzen.",bc_map,0xFF8600;
end;
OnTimer160000:
mapannounce "airplane","We will arrive in Lighthalzen shortly.",bc_map,0xFF8600;
end;
OnTimer175000:
set $@airplanelocation,3;
enablenpc "#AirshipWarp-1";
enablenpc "#AirshipWarp-2";
donpcevent "#AirshipWarp-1::OnUnhide";
donpcevent "#AirshipWarp-2::OnUnhide";
mapannounce "airplane","Welcome to Lighthalzen. Have a safe trip.",bc_map,0xFF8600;
end;
OnTimer185000:
mapannounce "airplane","Currently, we are in Lighthalzen. The Airship will leave shortly.",bc_map,0xFF8600;
end;
OnTimer195000:
set $@airplanelocation,0;
donpcevent "#AirshipWarp-1::OnHide";
donpcevent "#AirshipWarp-2::OnHide";
disablenpc "#AirshipWarp-1";
disablenpc "#AirshipWarp-2";
mapannounce "airplane","The Airship is now taking off. Our next destination is Juno.",bc_map,0x70DBDB;
end;
OnTimer210000:
mapannounce "airplane","We are heading to Juno.",bc_map,0x70DBDB;
end;
OnTimer225000:
mapannounce "airplane","We will arrive in Juno shortly.",bc_map,0x70DBDB;
end;
OnTimer240000:
set $@airplanelocation,2;
enablenpc "#AirshipWarp-1";
enablenpc "#AirshipWarp-2";
donpcevent "#AirshipWarp-1::OnUnhide";
donpcevent "#AirshipWarp-2::OnUnhide";
mapannounce "airplane","Welcome to Juno. Have a safe trip.",bc_map,0x70DBDB;
end;
OnTimer250000:
mapannounce "airplane","Currently, we are in Juno. The Airship will leave shortly.",bc_map,0x70DBDB;
end;
OnTimer260000:
stopnpctimer;
}
}
//C4644E
//============================================================
//= Some normal NPCS (airplane)
//============================================================
airplane,240,64,5 script Exit#01::Exit2 857,{
end;
}
airplane,247,64,5 duplicate(Exit2) Exit#02 857
airplane,240,39,1 duplicate(Exit2) Exit#03 857
airplane,247,39,1 duplicate(Exit2) Exit#04 857
airplane,100,69,2 script Airship Crew#01::Airship Crew 852,{
mes "[Airship Crew]";
mes "If we've landed at";
mes "your destination and";
mes "you'd like to leave the";
mes "Airship, please use the";
mes "stairs up ahead. Thank";
mes "you for you patronage.";
close;
}
airplane,250,58,2 script Airship Staff#airplane 67,{
if (hg_ma1 == 3) {
mes "[Airship Staff]";
mes "Welcome";
mes "to the Airship.";
mes "How may I help you?";
next;
switch(select("Do you have a passenger named Thierry?")) {
case 1:
break;
}
mes "[Airship Staff]";
mes "I am sorry, but I do not think that we have a passenger by that name.";
close;
}
mes "[Airship Staff]";
mes "Welcome";
mes "to the Airship.";
mes "How may I help you?";
next;
switch(select("Using the Airship:Captain's Cabin:Facilities:Cancel")) {
case 1:
mes "[Airship Staff]";
mes "When you see a broadcast";
mes "announcing that we have";
mes "arrived at your destination,";
mes "please use one of the exits";
mes "located at the north and";
mes "south ends of the Airship.";
next;
mes "[Airship Staff]";
mes "If you happen to miss";
mes "your stop, don't worry.";
mes "The Airship is constantly";
mes "en route and you'll get";
mes "another chance to arrive";
mes "to your intended destination.";
break;
case 2:
mes "[Airship Staff]";
mes "The Captain's Cabin";
mes "is located at the front";
mes "of the Airship. There, you";
mes "can meet the captain and";
mes "the pilot of the Airship.";
break;
case 3:
mes "[Airship Staff]";
mes "The Airship provides";
mes "various Mini Games for";
mes "the entertainment of all";
mes "our passengers. We invite";
mes "you to try your luck and skills";
mes "in the Airship's Mini Games~";
break;
case 4:
mes "[Airship Staff]";
mes "Well, I hope you";
mes "your flight aboard";
mes "our Airships. Thank";
mes "you and have a good day.";
break;
}
close;
}
airplane,80,71,2 script Zerta#01airplane 834,{
mes "[Zerta]";
mes "Oh, hello adventurer.";
mes "I am currently on a";
mes "sacred journey, offering";
mes "prayer for the sake of the";
mes "Rune-Midgard continent.";
close;
}
airplane,65,63,4 script Maelin#01airplane 714,{
mes "[Maelin]";
mes "Um, this Airship is";
mes "to Lutie, isn't it? I've";
mes "waiting so long,";
mes "but I haven't heard any";
mes "broadcast about Lutie.";
close;
}
airplane,72,34,6 script Aanos#01airplane 702,{
mes "[Aanos]";
mes "Oh wooow~";
mes "The sky looks";
mes "so different and";
mes "pretty from up there!";
close;
}
airplane,221,158,2 script Pilot#airplane 852,{
if (hg_ma1 == 3) {
mes "[Pilot]";
mes "I wish that I could go drink a cold fresh beer.";
mes "Drinking is the goal of my life! Drinking gives me energy!";
mes "I am nothing without drinks!";
next;
mes "[Pilot]";
mes "But! Driving under the influence is not good.";
mes "But! That makes me want to drink more and more!";
emotion e_sob;
next;
switch(select("Do you know a passenger named Thierry?")) {
case 1:
break;
}
mes "[Pilot]";
mes "This uniform is";
mes "really dapper, but";
mes "it's way too thick to";
mes "wear around the Airship.";
next;
mes "[Pilot]";
mes "...";
mes "......";
mes "No one ever really";
mes "comes into this room.";
mes "And the captain IS a reindeer.^FFFFFF ^000000 I could just strip to my boxers.";
next;
emotion e_omg;
mes "[Pilot]";
mes "Wah!? Who is it!";
next;
mes "- ...He is not listening to you, at all. -";
close;
}
set .@pilot,rand(1,4);
if (.@pilot == 1) {
mes "[Pilot]";
mes "It's been sooo";
mes "long since I've";
mes "enjoyed a nice, cold";
mes "alcoholic brew. But the";
mes "job requires me to be as";
mes "clear headed as I can!";
next;
mes "[Pilot]";
mes "Always drink responsibly!";
mes "Still, I can't remember the";
mes "last time I had a real vacation";
mes "or even a day off. Yeap, some";
mes "booze, some chips, some TV";
mes "and serius R&R is in order.";
emotion e_sob;
}
else if (.@pilot == 2) {
mes "[Pilot]";
mes "Man, the weather";
mes "is really nice today.";
mes "Bright, open skies make";
mes "for some good visibility";
mes "and safe, carefree flying.";
}
else if (.@pilot == 3) {
mes "[Pilot]";
mes "You know, our captain's a";
mes "respectable guy. Him and";
mes "his brother are actually well";
mes "known in the aircraft industry.";
mes "Who knew reindeer made";
mes "such good captains?";
next;
mes "[Pilot]";
mes "Just between you";
mes "and me, I gotta tell";
mes "you, that Santa was onto";
mes "something, getting reindeers";
mes "and elves to work for him.";
mes "The man must be a genius!";
}
else {
mes "[Pilot]";
mes "You know, this whole";
mes "piloting thing in the air,";
mes "it's rather new, you know?";
mes "Yeah, they got this Airship";
mes "operation in a hurry.";
next;
emotion e_omg;
mes "[Pilot]";
mes "Still, they where real";
mes "serius, really thought";
mes "ahead. I mean, they had us";
mes "training while the Airships";
mes "were still being invented.";
mes "Isn't that freakin' crazy?!";
}
close;
}
//============================================================
//= The Airship System (Izlude -> Juno -> Rachel -> Repeat)
//============================================================
airplane_01,243,74,4 script #AirshipWarp-3 45,2,2,{
OnTouch:
if($@airplanelocation2 == 1)warp "izlude",202,56;
if($@airplanelocation2 == 2)warp "yuno",20,265;
if($@airplanelocation2 == 3)warp "ra_fild12",292,204;
end;
OnHide:
misceffect 16;
end;
OnUnhide:
misceffect 215;
end;
}
airplane_01,243,29,4 script #AirshipWarp-4 45,2,2,{
OnTouch:
if($@airplanelocation2 == 1)warp "izlude",202,56;
if($@airplanelocation2 == 2)warp "yuno",20,265;
if($@airplanelocation2 == 3)warp "ra_fild12",292,204;
end;
OnHide:
misceffect 16;
end;
OnUnhide:
misceffect 215;
end;
}
airplane_01,1,1,0 script YunoIzl_Airship -1,{
OnInit:
while(1)
{
disablenpc "Airship#airplane02";
initnpctimer;
setnpctimer 0;
set $@airplanelocation2,0;
donpcevent "#AirshipWarp-3::OnHide";
donpcevent "#AirshipWarp-4::OnHide";
disablenpc "#AirshipWarp-3";
disablenpc "#AirshipWarp-4";
mapannounce "airplane_01","The Airship is leaving the ground. Our next destination is Izlude.",bc_map,0x00FF00;
end;
OnTimer15000:
set .mobinv, .mobinv+1;
if(.mobinv >= 9 && rand(1,3) == 3) {
stopnpctimer;
enablenpc "Airship#airplane02";
donpcevent "Airship#airplane02::OnInvasion";
}
mapannounce "airplane_01","We are heading to Izlude.",bc_map,0x00FF00;
end;
OnTimer30000:
mapannounce "airplane_01","We will arrive in Izlude shortly.",bc_map,0x00FF00;
end;
OnTimer45000:
set $@airplanelocation2,1;
enablenpc "#AirshipWarp-3";
enablenpc "#AirshipWarp-4";
donpcevent "#AirshipWarp-3::OnUnhide";
donpcevent "#AirshipWarp-4::OnUnhide";
mapannounce "airplane_01","Welcome to Izlude. Have a safe trip.",bc_map,0x00FF00;
end;
OnTimer55000:
mapannounce "airplane_01","Currently, we are in Izlude. The Airship will leave shortly.",bc_map,0x00FF00;
end;
OnTimer65000:
set $@airplanelocation2,0;
donpcevent "#AirshipWarp-3::OnHide";
donpcevent "#AirshipWarp-4::OnHide";
disablenpc "#AirshipWarp-3";
disablenpc "#AirshipWarp-4";
mapannounce "airplane_01","The Airship is leaving the ground. Our next destination is Juno.",bc_map,0x70DBDB;
end;
OnTimer80000:
mapannounce "airplane_01","We are heading to Juno.",bc_map,0x70DBDB;
end;
OnTimer95000:
mapannounce "airplane_01","We will arrive in Juno shortly.",bc_map,0x70DBDB;
end;
OnTimer110000:
set $@airplanelocation2,2;
enablenpc "#AirshipWarp-3";
enablenpc "#AirshipWarp-4";
donpcevent "#AirshipWarp-3::OnUnhide";
donpcevent "#AirshipWarp-4::OnUnhide";
mapannounce "airplane_01","Welcome to Juno. Have a safe trip.",bc_map,0x70DBDB;
end;
OnTimer120000:
mapannounce "airplane_01","Currently, we are in Juno. The Airship will take off shortly.",bc_map,0x70DBDB;
end;
OnTimer130000:
set $@airplanelocation2,0;
donpcevent "#AirshipWarp-3::OnHide";
donpcevent "#AirshipWarp-4::OnHide";
disablenpc "#AirshipWarp-3";
disablenpc "#AirshipWarp-4";
mapannounce "airplane_01","The Airship is leaving the ground. Our next destination is Rachel.",bc_map,0xFF8600;
end;
OnTimer145000:
mapannounce "airplane_01","We are heading to Rachel.",bc_map,0xFF8600;
end;
OnTimer160000:
mapannounce "airplane_01","We will arrive in Rachel shortly.",bc_map,0xFF8600;
end;
OnTimer175000:
set $@airplanelocation2,3;
enablenpc "#AirshipWarp-3";
enablenpc "#AirshipWarp-4";
donpcevent "#AirshipWarp-3::OnUnhide";
donpcevent "#AirshipWarp-4::OnUnhide";
mapannounce "airplane_01","Welcome to Rachel. Have a safe trip.",bc_map,0xFF8600;
end;
OnTimer185000:
mapannounce "airplane_01","Currently, we are in Rachel. The Airship will leave shortly.",bc_map,0xFF8600;
end;
OnTimer195000:
stopnpctimer;
}
OnReturn:
killmonsterall "airplane_01";
set .mobinv, 0;
mapannounce "airplane_01","Monster threat nullfied. The Airship is now returning to normal operation.",bc_map,0x00FF00;
startnpctimer;
end;
}
//============================================================
//= Some normal NPCS (airplane_01)
//============================================================
airplane_01,240,64,5 duplicate(Exit2) Exit#05 857
airplane_01,247,64,5 duplicate(Exit2) Exit#06 857
airplane_01,240,39,1 duplicate(Exit2) Exit#07 857
airplane_01,247,39,1 duplicate(Exit2) Exit#08 857
airplane_01,100,69,2 duplicate(Airship Crew) Airship Crew#02 852
airplane_01,250,58,2 script Airship Staff#airplane01 67,{
mes "[Airship Staff]";
mes "Welcome";
mes "to the Airship.";
mes "How may I help you?";
next;
switch(select("Using the Airship:Captain's Cabin:Facilities:Cancel")) {
case 1:
mes "[Airship Staff]";
mes "When you see a broadcast";
mes "announcing that we have";
mes "arrived at your destination,";
mes "please use one of the exits";
mes "located at the north and";
mes "south ends of the Airship.";
next;
mes "[Airship Staff]";
mes "If you happen to miss";
mes "your stop, don't worry.";
mes "The Airship is constantly";
mes "en route and you'll get";
mes "another chance to arrive";
mes "to your intended destination.";
break;
case 2:
mes "[Airship Staff]";
mes "The Captain's Cabin";
mes "is located at the front";
mes "of the Airship. There, you";
mes "can meet the captain and";
mes "the pilot of the Airship.";
break;
case 3:
mes "[Airship Staff]";
mes "The Airship provides";
mes "various Mini Games for";
mes "the entertainment of all";
mes "our passengers. We invite";
mes "you to try your luck and skills";
mes "in the Airship's Mini Games~";
break;
case 4:
mes "[Airship Staff]";
mes "Well, I hope you";
mes "your flight aboard";
mes "our Airships. Thank";
mes "you and have a good day.";
break;
}
close;
}
airplane_01,50,66,5 script Apple Merchant#airplane 86,{
if (checkweight(1201,1) == 0) {
mes "- Wait a minute !! -";
mes "- Currently you're carrying -";
mes "- too many items with you. -";
mes "- Please try again -";
mes "- after you loose some weight. -";
close;
}
mes "[Meltz]";
mes "Welcome to Meltz's";
mes "Shop where you can";
mes "purchase Apples or grind";
mes "them to make Apple Juice.";
next;
switch(select("Buy Apples.:Make Apple Juice.:Cancel.")) {
case 1:
mes "[Meltz]";
mes "Please enter the amount";
mes "of Apples that you wish to";
mes "buy. Each Apple is 15 zeny";
mes "and you can buy a maximum";
mes "of 500 at a time. Please enter";
mes "'0' to cancel your order.";
next;
while(1) {
input .@input,0,501;
set .@pay,.@input*15;
if (.@input == 0) {
mes "[Meltz]";
mes "Thanks for stopping";
mes "by my shop. Farewell!";
mes "Come by anytime when";
mes "you feel like having an";
mes "Apple to snack on~";
close;
}
else if (.@input < 0 && .@input > 500) {
mes "[Meltz]";
mes "You've entered a number";
mes "higher than the maximum";
mes "value of 500. Please enter";
mes "the number of Apples you";
mes "wish to purchase again.";
next;
}
else {
mes "[Meltz]";
mes "A total of ^FF0000" + .@input + "^000000 Apples";
mes "will cost you ^FF0000" + .@pay + "^000000 zeny.";
mes "Would you like to continue?";
next;
if (select("Yes:No") == 1)
break;
else {
mes "[Meltz]";
mes "Thanks for stopping";
mes "by my shop. Farewell!";
mes "Come by anytime when";
mes "you feel like having an";
mes "Apple to snack on~";
close;
}
}
}
if (Zeny < .@pay) {
mes "[Meltz]";
mes "I'm sorry, you don't have";
mes "enough money with you.";
mes "Please check your funds or";
mes "purchase less Apples.";
close;
}
else if (checkweight(512,.@input) == 0) {
mes "[Meltz]";
mes "Hmm, I don't think you've";
mes "got enough room to carry";
mes "this many Apples. You might";
mes "want to free up your inventory";
mes "space.";
close;
}
else {
set zeny,zeny-.@pay;
getitem 512,.@input; //Apple
mes "[Meltz]";
mes "Thanks for stopping by";
mes "my shop. I hope you enjoy";
mes "the flavor of these Apples~!";
close;
}
break;
case 2:
mes "[Meltz]";
mes "Okay, I'll need";
mes "^FF00003 Apples and 1 Empty Bottle^000000";
mes "to make 1 Apple Juice for you.";
mes "Would you like to proceed?";
next;
switch(select("Yes:No")) {
case 1:
if ((countitem(512) < 3) || (countitem(713) < 1)) {
mes "[Meltz]";
mes "I'm sorry, but you don't";
mes "have enough materials to";
mes "create a bottle of Apple Juice.";
mes "Remember, I need 3 Apples";
mes "and 1 Empty Bottle to do it.";
close;
}
else {
mes "[Meltz]";
mes "Thank you, please wait.";
next;
mes "^3355FF*Grind* *Grind*";
mes "*Grind* *Grind*";
mes "*Clang...!*^000000";
next;
delitem 512,3; //Apple
delitem 713,1; //Empty_Bottle
getitem 531,1; //Apple_Juice
mes "[Meltz]";
mes "There you go~";
mes "Please come again.";
close;
}
break;
case 2:
mes "[Meltz]";
mes "Thanks for stopping";
mes "by my shop. Farewell!";
mes "Come by anytime when";
mes "you feel like having an";
mes "Apple to snack on~";
close;
}
break;
case 3:
mes "[Meltz]";
mes "Thanks for stopping";
mes "by my shop. Farewell!";
mes "Come by anytime when";
mes "you feel like having an";
mes "Apple to snack on~";
break;
}
close;
}
airplane_01,32,61,4 script Nils#ein 49,{
callfunc "F_ClearGarbage"; //Clear outdated, unused variables
loopback:
mes "[Nils]";
mes "Welcome to the";
mes "^FF0000RO Typing Challenge^000000.";
mes "Would you like to play";
mes "a quick typing game?";
next;
menu "Play ^FF0000RO Typing Challenge^000000",s_Play,"Information",s_Info,"View Top Records",s_Record,"Cancel",-;
mes "[Nils]";
mes "Feel free to take on the";
mes "Ro Typing Challenge";
mes "anytime. I'll be here~";
close;
s_Play:
mes "[Nils]";
mes "Okay, we have";
mes "a new challenger!";
mes "Enter the following";
mes "text as quickly as you";
mes "can without making any";
mes "mistakes! Let's start~!";
next;
//below arrays are for simplified entering of new lines ;P
//first lines array
setarray .textstringsa$[0],
"^00FFFFthkelfkskeldmsiejdlsle^0000FFhfndkelsheidl",
"^993366hfjdkeldjsieldjs^663366hfjdjeiskdlefvbd",
"^00FFFFCoboman no chikara-yumei na",
"^993366belief love luck grimace sweat rush",
"^00FFFFcallipygian salacious lascivious",
"^663366uNflAPPaBLe LoVaBLe SeCreTs AnD",
"^00CCFFburrdingdingdilidingdingphoohudaamb",
"^FF33CCbarapaphurarlandreamduranbatuhi^990066wooi",
"^FF33CCLiGhTsPeEd RiGhT SPEed leFT TURn",
"^00CCFFI'm the King of all Weirdos! Now",
"^00CCFFBy the power of^000000",
"^00CCFF...silence. quiet benevolence...";
//second lines array
setarray .textstringsb$[0],"skemd",
"",
"chikara-dalookii na chikara da ze!",
"folktale rodimus optimus bumblebee",
"licentious prurient concupiscent",
"BoWLiNg aGaINST tHe KarMA of YoUtH",
"andoora^0000FFbambarambambamburanbamding",
"kabamturubamdingding",
"RiGhT BuRn OrIGInAL GaNgSteR SmACk",
"you know of my true power. Obey~!",
"p-po-poi-po-poi-poin-poing",
"soul mate... wonder. enigma...";
//for the few 3-liners... =X
setarray .textstringsc$[0],"",
"",
"COBO ON!",
"",
"",
"",
"",
"",
"",
"",
"GOD-POING. I NEVER LOSE!",
"cloud.";
//comparisation strings
setarray .compstring$[0],
"thkelfkskeldmsiejdlslehfndkelsheidlskemd",
"hfjdkeldjsieldjshfjdjeiskdlefvbd",
"Coboman no chikara-yumei na chikara-dalookii na chikara da ze! COBO ON!",
"belief love luck grimace sweat rush folktale rodimus optimus bumblebee",
"callipygian salacious lascivious licentious prurient concupiscent",
"uNflAPPaBLe LoVaBLe SeCreTs AnD BoWLiNg aGaINST tHe KarMA of YoUtH",
"burrdindingdilidingdingphoohudaambandoorabambarambambamburanbamding",
"barapaphurarlandreamduranbatuhiwooikabamturubamdingding",
"LiGhTsPeEd RiGhT SPEed leFT TURn RiGhT BuRn OrIGInAL GaNgSteR SmACk",
"I'm the King of all Weirdos! Now you know of my true power. Obey~!",
"By the power of p-po-poi-po-poi-poin-poing GOD-POING. I NEVER LOSE!",
"...silence. quiet benevolence... soul mate... wonder. enigma... cloud";
//lengths
setarray .lengths[0],20,32,73,73,65,66,67,55,67,66,67,69;
// initnpctimer;
// pick 2 distinct phrases and initialize related variables
set .@index1,rand(getarraysize(.textstringsa$));
set .@string1a$,.textstringsa$[.@index1];
set .@string1b$,.textstringsb$[.@index1];
set .@string1c$,.textstringsc$[.@index1];
set .@typingstring1$,.compstring$[.@index1];
while ( set(.@index2,rand(getarraysize(.textstringsa$))) == .@index1 );
set .@string2a$,.textstringsa$[.@index2];
set .@string2b$,.textstringsb$[.@index2];
set .@string2c$,.textstringsc$[.@index2];
set .@typingstring2$,.compstring$[.@index2];
set .@typingkeys,.lengths[.@index1]+.lengths[.@index2];
set .@start,gettimetick(0);
mes "[Nils]";
mes .@string1a$;
if(.@string1b$ != "")mes .@string1b$;
if(.@string1c$ != "")mes .@string1c$;
input .@comparisonvar$[1];
next;
mes "^000000[Nils]";
mes .@string2a$;
if(.@string2b$ != "")mes .@string2b$;
if(.@string2c$ != "")mes .@string2c$;
input .@comparisonvar$[2];
next;
if(.@comparisonvar$[1] != .@typingstring1$ || .@comparisonvar$[2] != .@typingstring2$) goto s_Fail;
set .@time, (gettimetick(0) - .@start) / 100; //seconds taken
if (.@time) set .@mypoints, (.@typingkeys * 100) / .@time;
mes "[Nils]";
mes "Your typing time";
mes "was ^FF0000" + .@time + " seconds^000000";
mes "and your score is";
mes "^0000FF" + .@mypoints + "^000000 points";
next;
if(.@mypoints <= $TypingRecord)goto loopback;
mes "[Nils]";
mes "Congratulations!";
mes "It's a new record.";
mes "I'll put you on the high-";
mes "score list immediately.";
set $TypingRecord,.@mypoints;
set $TypingRecord$,strcharinfo(0);
close;
s_Fail:
mes "^000000[Nils]";
mes "I'm sorry you didn't type";
mes "all characters correctly.";
mes "But remember, practice makes";
mes "perfect!";
close;
s_Info:
mes "[Nils]";
mes "The RO Typing Challenge";
mes "is a game where you enter";
mes "the given text as quickly as you";
mes "can. The name of the top player";
mes "is recorded for posterity. If you";
mes "want fame, here's your chance!";
next;
mes "[Nils]";
mes "I'd just like to let";
mes "you know that you type";
mes "all the text that you see";
mes "in the single input line that";
mes "you're given. So don't press";
mes "the enter key, just click 'OK'.";
close;
s_Record:
mes "[Nils]";
mes "^0000FF" + $TypingRecord$ + "^000000";
mes "is the current";
mes "record holder with";
mes "a record of ^0000FF" + $TypingRecord + "^000000";
mes "points. Try to beat";
mes "that record next time~";
close;
}
airplane_01,221,158,2 script Pilot#airplane_01 852,{
set .@pilot, rand(1,4);
if (.@pilot == 1) {
mes "[Pilot]";
mes "Longitude, 131 degrees east.";
mes "Latitude, 37 degrees north.";
mes "We're right on course, captain.";
} else if(.@pilot == 2) {
mes "[Pilot]";
mes "Looks like a really";
mes "cloudy day. Always hard";
mes "to navigate when the skies";
mes "aren't clear. Guess we'll";
mes "need to amp the radar.";
} else if(.@pilot == 3) {
mes "[Pilot]";
mes "The Captain is a good";
mes "man and I can't think of";
mes "a finer person to command";
mes "this ship. Still, he's pretty";
mes "tough, a real slave driver.";
next;
mes "[^ff0000Tarlock^000000]";
mes "^ff0000Hey...!^000000";
mes "^ff0000Less chit-chat^000000";
mes "^ff0000and more piloting!^000000";
next;
mes "[Pilot]";
mes "R-right away, sir!";
mes "(See what I mean?)";
} else {
mes "[Pilot]";
mes "This uniform is";
mes "really dapper, but";
mes "it's way too thick to";
mes "wear around the Airship.";
next;
mes "[Pilot]";
mes "...";
mes "......";
mes "No one ever really";
mes "comes into this room.";
mes "And the captain IS a reindeer.";
mes "I could just strip to my boxers.";
next;
emotion e_omg;
mes "[Pilot]";
mes "Oh...! Hello there!";
mes "E-e-enjoying your flight?!";
}
close;
}
airplane_01,83,61,2 script Dianne#01airplane_01 72,2,2,{
mes "[Dianne]";
mes "It's so weird!";
mes "I went to visit the";
mes "Airship Captain and";
mes "all I saw was this";
mes "weird reindeer. Oh!";
mes "Do you think that...";
close;
OnTouch:
emotion e_sob;
end;
}
airplane_01,69,63,2 script Mendel#01airplane_01 55,{
mes "[Mendel]";
mes "As I expected, the";
mes "in-flight meals are";
mes "three star quality at best.";
mes "*Harrrumph* I really should";
mes "have brought my chef so that";
mes "I could enjoy a real meal.";
close;
}
airplane_01,33,68,4 script Clarice 74,{
mes "[Clarice]";
mes "Hi, I'm Clarice~";
mes "How would you like";
mes "to wager some Apples";
mes "in a friendly game of Dice?";
next;
callfunc "applegamble","Clarice";
end;
}
airplane_01,71,31,2 script Swordsman Shimizu#01 106,{
mes "[Swordsman Shimizu]";
mes "Finally, after five";
mes "years of waiting...";
mes "I can have my revenge!";
next;
mes "[Swordsman Shimizu]";
mes "I just...";
mes "Have to make sure that";
mes "I don't keep missing my";
mes "stop. But soon, very soon,";
mes "vengeance will be mine!";
close;
}
//============================================================
//= The Izlude Airship Staff
//============================================================
izlude,201,54,3 script Airship Staff#izl 91,{
mes "[Airship Staff]";
mes "Welcome to the International Airship.";
mes "How may I help you?";
next;
if (select("Board the Airship:Cancel") == 1) {
mes "[Airship Staff]";
mes "The Airship boarding fee";
mes "is 1,200 zeny, but if you've";
mes "got a Free Ticket for Airship,";
mes "the fee will be waived. Will";
mes "you board the Airship?";
next;
if (select("Yes:No") == 1) {
if(countitem(7311) > 0) {
delitem 7311,1;
warp "airplane_01",224,64;
close;
}
if(Zeny >= 1200) {
set Zeny, Zeny - 1200;
warp "airplane_01",224,64;
close;
}
mes "[Airship Staff]";
mes "You don't have enough zeny.";
close;
}
}
mes "[Airship Staff]";
mes "Thank you and";
mes "have a nice day.";
close;
}
//============================================================
//= The Hugel Airship Staff
//============================================================
hugel,182,150,3 script Airship Staff#hu 91,{
mes "[Airship Staff]";
mes "Welcome to the International Airship.";
mes "How may I help you?";
next;
if (select("Board the Airship:Cancel") == 1) {
mes "[Airship Staff]";
mes "The Airship boarding fee";
mes "is 1,200 zeny, but if you've";
mes "got a Free Ticket for Airship,";
mes "the fee will be waived. Will";
mes "you board the Airship?";
next;
if (select("Yes:No") == 1) {
if(countitem(7311) > 0) {
delitem 7311,1;
warp "airplane",224,64;
close;
}
if(Zeny >= 1200) {
set Zeny, Zeny - 1200;
warp "airplane",224,64;
close;
}
mes "[Airship Staff]";
mes "You don't have enough zeny.";
close;
}
}
mes "[Airship Staff]";
mes "Thank you and";
mes "have a nice day.";
close;
}
//============================================================
//= The Rachel Airship Staff
//============================================================
ra_fild12,295,208,3 script Airship Staff#ra 45,1,1,{
OnTouch:
mes "T use the airship, you are";
mes "required to pay 1,200 zeny or a";
mes "Free Airship Ticket. Would you like to use the service?";
next;
if (select("Yes:No") == 1) {
if (countitem(7311) > 0) {
delitem 7311,1;
warp "airplane_01",224,64;
close;
}
if (Zeny >= 1200) {
set Zeny, Zeny - 1200;
warp "airplane_01",224,64;
close;
}
mes "You don't have enough zeny.";
close;
}
mes "Thank you and, please come again.";
close;
}
//============================================================
//= Juno Airport NPCs
//============================================================
y_airport,144,63,4 script Airport Staff#Ein 91,{
mes "[Airship Staff]";
mes "Good day!";
mes "Would you like to go";
mes "to ^FF0000Einbroch^000000,^FF0000Hugel^000000 or";
mes "^FF0000Lighthalzen^000000?";
next;
if (select("Yes.:No.") == 1) {
mes "[Airship Staff]";
mes "Thank you and";
mes "have a nice day.";
close2;
warp "yuno",57,240;
end;
}
mes "[Airship Staff]";
mes "Thank you and";
mes "have a nice day.";
close;
}
y_airport,141,63,4 script Airport Staff#Izl 91,{
mes "[Airship Staff]";
mes "Good day!";
mes "Would you like to go";
mes "to ^FF0000Izlude^000000 or ^FF0000Rachel^000000?";
next;
if (select("Yes.:No.") == 1) {
mes "[Airship Staff]";
mes "Thank you and";
mes "have a nice day.";
close2;
warp "yuno",50,240;
end;
}
mes "[Airship Staff]";
mes "Thank you and";
mes "have a nice day.";
close;
}
yuno,14,262,5 script Airship Staff#yuno01 91,{
mes "[Airship Staff]";
mes "Welcome to Juno Airport.";
mes "Please use this door to";
mes "board the Airship that will";
mes "be flying all the way to Izlude";
mes "in the Rune-Midgarts Kingdom,";
mes "and to Rachel in the Arunafeltz";
mes "Republic.";
next;
mes "[Airship Staff]";
mes "Otherwise, if Juno is";
mes "your intended destination,";
mes "please head down the stairs";
mes "and ask the Arrival Staff to lead";
mes "you to the main terminal. Thank";
mes "you, and enjoy your travels.";
close;
}
yuno,88,263,3 script Airship Staff#yuno02 91,{
mes "[Airship Staff]";
mes "Welcome to Juno Airport.";
mes "Please use this door to";
mes "board the Airship which stops";
mes "over Einbroch, Lighthalzen and";
mes "Hugel in the Schwaltzvalt Republic.";
next;
mes "[Airship Staff]";
mes "Otherwise, if Juno is";
mes "your intended destination,";
mes "please head down the stairs";
mes "and ask the Arrival Staff to lead";
mes "you to the main terminal. Thank";
mes "you, and enjoy your travels.";
close;
}
//============================================================
//= Apple Gambling Function
//============================================================
function script applegamble {
switch(select("Play Dice Game:Learn Dice Game Rules:Cancel")){
case 3:
mes "["+getarg(0)+"]";
mes "I'm up for a game of";
mes "dice whenever you feel";
mes "like it. Just talk to me if";
mes "you ever get hit with the";
mes "sudden urge to gamle, kay?";
close;
case 2:
mes "["+getarg(0)+"]";
mes "The rules for the Dice game";
mes "are pretty simple. First, you";
mes "place a bet by wagering Apples.";
mes "You can bet a maximum of 50";
mes "Apples at a time. To keep things";
mes "legal, I can only accept Apples.";
next;
mes "["+getarg(0)+"]";
mes "But hey, if all that zeny";
mes "is burning a hole in your";
mes "pocket, head over to Fruitz";
mes "and you can buy as many";
mes "Apples as you want, playah~";
next;
mes "["+getarg(0)+"]";
mes "Now, we begin with me";
mes "rolling wto 6-sided dice.";
mes "When it's your turn, you'll";
mes "roll two 6-sided dice. After";
mes "that, both of us will have the";
mes "option of rolling a third die.";
next;
mes "["+getarg(0)+"]";
mes "Now here's the important";
mes "thing. If your total is higher";
mes "than 12, you'll bust, meaning";
mes "that you lose. Otherwise, the";
mes "person with the higher total";
mes "is the winner. Got it?";
next;
mes "["+getarg(0)+"]";
mes "Now, you'll be the first";
mes "to decide whether or not";
mes "you'll roll the third die. Then,";
mes "depending on your result, I'll";
mes "roll my third die... Or maybe not.";
next;
mes "["+getarg(0)+"]";
mes "When you win, you'll";
mes "receive twice as many";
mes "Apples as you wagered.";
mes "But if we happen to tie, you";
mes "get the Apples that you bet";
mes "returned to you. Fair, right?";
close;
case 1:
break;
}
mes "["+getarg(0)+"]";
mes "Ooh, so you'll play with";
mes "me? Great! How many";
mes "Apples would you like to bet?";
mes "Remember, you can wager";
mes "up to 50 Apples. If you'd like";
mes "to cancel, please enter '0'.";
next;
L_Input:
input .@amount;
if(.@amount == 0) {
mes "["+getarg(0)+"]";
mes "Changed your mind?";
mes "I understand. Well then,";
mes "I hope we can play sometime.";
close;
}
if(.@amount > 50) set .@amount,50;
mes "["+getarg(0)+"]";
mes "So you'll be";
mes "betting ^FF0000"+.@amount+"^000000 Apples.";
mes "Is that right?";
next;
if(select("Yes:No")==2){
mes "["+getarg(0)+"]";
mes "Mm, made a mistake?";
mes "Alright, please enter the";
mes "number of Apples you";
mes "wish to place in this bet";
next;
goto L_Input;
}
if(countitem(512)<.@amount){
//more apples then in inventory
//-Improvised-
mes "["+getarg(0)+"]";
mes "Ooh...";
mes "You don't have that";
mes "many Apples with you,";
mes "now do you?";
close;
}
delitem 512,.@amount;
mes "["+getarg(0)+"]";
mes "Good!";
mes "Now we can start";
mes "this game! I'll roll first~";
next;
mes "^0000FF*Rolling and rumbling*";
set .@table1,rand(1,6);
set .@table2,rand(1,6);
set .@tablesub,.@table1+.@table2;
next;
mes "I rolled a "+.@table1+" and a "+.@table2+",";
mes "giving me a total of "+.@tablesub+".";
mes "Now it's your turn,";
mes strcharinfo(0)+".";
next;
menu "Roll Dice.",-;
mes "^0000FF*Rolling and rumbling*";
set .@player1,rand(1,6);
set .@player2,rand(1,6);
set .@playersub,.@player1+.@player2;
next;
mes "["+getarg(0)+"]";
mes strcharinfo(0)+",";
mes "you rolled a "+.@player1+" and a "+.@player2+",";
mes "giving you a total of ^FF0000"+.@playersub+"^000000.";
next;
mes "["+getarg(0)+"]";
if(.@playersub == .@tablesub) {
mes "Well, well, well.";
mes "Both of us have a total";
mes "of "+.@playersub+". Well, the ball's in";
mes "your court. Are you going";
mes "to roll your third die,";
mes strcharinfo(0)+"?";
} else if(.@playersub > .@tablesub) {
mes "Since my total is only ^0000FF"+.@tablesub+"^000000,";
mes "you have the advantage for";
mes "now with your total of ^FF0000"+.@playersub+"^000000. Do";
mes "you wanna roll one more die?";
mes "Remember, you'll bust if all three";
mes "of your dice total more than 12.";
} else if(.@tablesub > .@playersub) {
mes "Since my total is ^0000FF"+.@tablesub+"^000000,";
mes "I have the advantage for";
mes "now with your total of ^FF0000"+.@playersub+"^000000. Do";
mes "you wanna roll one more die?";
mes "Remember, you'll bust if all three";
mes "of your dice total more than 12.";
}
next;
if(select("Roll another dice.:Don't Roll.")==2){
mes "["+getarg(0)+"]";
mes "Not gonna roll, huh?";
if(.@tablesub == .@playersub) {
mes "You better hope I roll";
mes "too high and bust, or";
mes "I'll beat you for sure!";
mes "Okay, here goes nothing...";
next;
goto L_Table3;
} else if(.@tablesub < .@playersub) {
next;
mes "["+getarg(0)+"]";
mes "Alright, I see that you";
mes "don't want to risk rolling";
mes "higher than 12 and busting.";
mes "I'll go ahead and roll then.";
next;
goto L_Table3;
} else if(.@tablesub > .@playersub) {
//you have a lower sub total then table, and do not roll 3th -Improvised-
mes "["+getarg(0)+"]";
mes "Not gonna roll, huh?";
mes "Well, then I'm not";
mes "gonna roll either.";
next;
mes "["+getarg(0)+"]";
mes "That means that I";
mes "have a total of ^0000FF"+.@tablesub+"^000000";
mes "wich beats your ^FF0000"+.@playersub+"^000000.";
mes "I'm sorry, but you lose";
mes "this game, "+strcharinfo(0)+". Better";
mes "luck next time.";
}
close;
}
mes "^0000FF*Rolling and rumbling*";
set .@player3,rand(1,6);
set .@playersub,.@playersub+.@player3;
if(.@playersub > 12) {
//player bust --Improvised--
next;
mes "["+getarg(0)+"]";
mes "Oh my... You rolled a ^FF000"+.@player3+"^000000,";
mes "making your total ^FF0000"+.@playersub+"^000000.";
mes "That's more then 12, meaning you bust.";
mes "Sorry, but you lose this";
mes "game, "+strcharinfo(0)+".";
close;
}
next;
mes "["+getarg(0)+"]";
mes "Oh hey! You rolled";
if(.@playersub >= .@tablesub) {
mes "a ^FF0000"+.@player3+"^000000, giving you a total";
mes "of ^FF0000"+.@playersub+"^000000. Now, if I don't";
mes "roll, I'll lose for sure!";
mes "I'm gonna go for it...";
next;
goto L_Table3;
} else if(.@playersub < .@tablesub) {
//player's sub together with 3th die is still too low
//--Improvised--
mes "a ^FF0000"+.@player3+"^000000, giving";
mes "you a total of ^FF0000"+.@playersub+"^000000.";
mes "Wich still isn't enough";
mes "to beat my ^0000FF"+.@tablesub+"^000000.";
mes "Sorry, but you lose this";
mes "game, "+strcharinfo(0)+". Them's";
mes "the breaks, I suppose...";
close;
}
L_Table3:
mes "^0000FF*Rolling and rumbling*";
set .@table3,rand(1,6);
set .@tablesub,.@tablesub+.@table3;
next;
if(.@tablesub > 12) {
mes "["+getarg(0)+"]";
mes "Eh? I rolled a ^0000FF"+.@table3+"^000000, making";
mes "my total ^0000FF"+.@tablesub+"^000000. I hate to say";
mes "it, but I gambled and lost.";
mes "Take your winnings before";
mes "I cry, "+strcharinfo(0)+"~!";
close2;
getitem 512,.@amount*2;
end;
}
mes "["+getarg(0)+"]";
if(.@tablesub < .@playersub) {
mes "I rolled a "+.@table3+", which";
mes "gives me a total of ^0000FF"+.@tablesub+"^000000.";
mes "But... It's still not enough";
mes "to beat your ^FF0000"+.@playersub+"^000000. It looks";
mes "like I can't compete with";
mes "you, "+strcharinfo(0)+"...";
close2;
getitem 512,.@amount*2;
end;
} else if(.@tablesub > .@playersub) {
mes "I rolled a ^0000FF"+.@table3+"^000000, giving";
mes "me a total of ^0000FF"+.@tablesub+"^000000 which";
mes "beats your total of ^FF0000"+.@playersub+"^000000.";
mes "Sorry, but you lose this";
mes "game, "+strcharinfo(0)+". Them's";
mes "the breaks, I suppose...";
close;
} else if(.@tablesub == .@playersub) {
//Result = tie, --Improvised--
mes "I rolled a ^0000FF"+.@table3+"^000000, giving";
mes "me a total of ^0000FF"+.@tablesub+"^000000, which";
mes "is the same as your total.";
mes "Well, this game didn't have a";
mes "winner or loser, "+strcharinfo(0)+".";
close2;
getitem 512,.@amount;
end;
}
}