//===== eAthena Script =======================================
//= The Airship System Script
//===== By: ==================================================
//= eAthena Dev Team
//===== Current Version: =====================================
//= 1.1
//===== 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]
//============================================================
//============================================================
//= 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.",1,0xBA55D3;
end;
OnTimer15000:
mapannounce "airplane","We are heading to Hugel.",1,0xBA55D3;
end;
OnTimer30000:
mapannounce "airplane","We will arrive in Hugel shortly.",1,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.",1,0xBA55D3;
end;
OnTimer55000:
mapannounce "airplane","Currently, we are in Hugel. The Airship will leave shortly.",1,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.",1,0x00FF00;
end;
OnTimer80000:
mapannounce "airplane","We are heading to Einbroch.",1,0x00FF00;
end;
OnTimer95000:
mapannounce "airplane","We will arrive in Einbroch shortly.",1,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.",1,0x00FF00;
end;
OnTimer120000:
mapannounce "airplane","Currently, we are in Einbroch. The Airship will take off shortly.",1,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.",1,0xFF8600;
end;
OnTimer145000:
mapannounce "airplane","We are heading to Lighthalzen.",1,0xFF8600;
end;
OnTimer160000:
mapannounce "airplane","We will arrive in Lighthalzen shortly.",1,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.",1,0xFF8600;
end;
OnTimer185000:
mapannounce "airplane","Currently, we are in Lighthalzen. The Airship will leave shortly.",1,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.",1,0x70DBDB;
end;
OnTimer210000:
mapannounce "airplane","We are heading to Juno.",1,0x70DBDB;
end;
OnTimer225000:
mapannounce "airplane","We will arrive in Juno shortly.",1,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.",1,0x70DBDB;
end;
OnTimer250000:
mapannounce "airplane","Currently, we are in Juno. The Airship will leave shortly.",1,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,59,3 script Airship Staff::AirshipInfo 67,{
mes "[Airship Staff]";
mes "Welcome";
mes "to the Airship.";
mes "How may I help you?";
next;
menu "Using the Airship",s_Use,"Captain's Cabin",s_Capt,"Facilities",s_Faci,"Cancel",-;
mes "[Airship Staff]";
mes "Well, I hope you like";
mes "your flight aboard";
mes "our Airships. Thank";
mes "you and have a good day.";
close;
s_Use:
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 "on route and you'll get";
mes "another chance to arrive";
mes "to your intended destination.";
close;
s_Capt:
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.";
close;
s_Faci:
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~";
close;
}
airplane,50,66,4 script Meltz::AirshipApples 86,{
mes "[Meltz]";
mes "Welcome to Meltz's";
mes "Shop where you can";
mes "purchase Apples or grind";
mes "them to make Apple Juice.";
next;
menu "Buy Apples",s_Buy,"Make Apple Juice",s_Juice,"Cancel.",-;
s_Cancel:
mes "[Meltz]";
mes "Thanks for stopping";
mes "by my shop. Farewell!";
mes "Come back anytime when";
mes "you feel like having an";
mes "Apple to snack on~";
close;
s_Buy:
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;
input @tempapple;
if(!@tempapple)goto s_Cancel;
if(@tempapple > 0 && @tempapple < 501)goto s_AppleBuy;
if(@tempapple < 0)close;
mes "[Meltz]";
mes "The maximum amount of apples";
mes "you can buy at the same time";
mes "is 500. " + @tempapple + " is clearly";
mes "over 500.";
close;
s_AppleBuy:
mes "[Meltz]";
mes "A total of ^FF0000" + @tempapple + "^000000 Apples.";
mes "will cost you ^FF0000" + @tempapple * 15 + "^000000 zeny.";
mes "Would you like to continue?";
next;
menu "Yes",-,"No",s_Cancel;
if(zeny < (@tempapple * 15))goto s_NEnoughZeny;
mes "[Meltz]";
mes "Thanks for stopping by";
mes "my shop. I hope you enjoy";
mes "the flavor of these Apples~!";
getitem 512,@tempapple;
set zeny,zeny - (@tempapple * 15);
close;
s_NEnoughZeny:
mes "[Meltz]";
mes "I'm sorry buy you don't";
mes "seem to have enough zeny.";
mes "Come back anytime when";
mes "you feel like having an";
mes "Apple to snack on~";
close;
s_Juice:
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;
menu "Yes",-,"No",s_Cancel;
if(countitem(512) < 3 || !countitem(713))goto s_Material;
mes "[Meltz]";
mes "Thank you,";
mes "please wait";
mes "just a moment.";
next;
mes "*Grind grind*";
mes "*Grind grind*";
mes "*Clang...!*";
next;
mes "[Meltz]";
mes "There you go~";
mes "I hope you enjoy!";
mes "Please feel free to";
mes "stop by for your Apple";
mes "and Apple Juice needs";
mes "at anytime, adventurer~";
delitem 512,3;
delitem 713,1;
getitem 531,1;
close;
s_Material:
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;
}
airplane,80,71,4 script Zerta 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 714,{
mes "[Maelin]";
mes "Um, this Airship is";
mes "to Lutie, isn't it? I've";
mes "been waiting so long,";
mes "but I haven't heard any";
mes "broadcast about Lutie.";
close;
}
airplane,72,34,2 script Aanos 702,{
mes "[Aanos]";
mes "Oh wooow~";
mes "The sky looks";
mes "so different and";
mes "pretty from up there!";
close;
}
airplane,32,61,4 script Nils::TypingContest 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 @index,rand(1,getarraysize($@textstringsa$))-1;
set @string1a$,$@textstringsa$[@index];
set @string1b$,$@textstringsb$[@index];
set @string1c$,$@textstringsc$[@index];
set @typingstring1$,$@compstring$[@index];
set @index2,rand(1,getarraysize($@textstringsa$))-1;
while (@index2 == @index) {
set @index2,rand(1,getarraysize($@textstringsa$))-1;
}
set @string2a$,$@textstringsa$[@index2];
set @string2b$,$@textstringsb$[@index2];
set @string2c$,$@textstringsc$[@index2];
set @typingstring2$,$@compstring$[@index2];
set @typingkeys,$@lengths[@index]+$@lengths[@index2];
set @start,gettime(3)*60*60+gettime(2)*60+gettime(1);
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,(gettime(3)*60*60+gettime(2)*60+gettime(1))-@start; //seconds taken
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,6 script Pilot#air-0::Pilot 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.";
close;
} else if(@aa == 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.";
close;
} else if(@aa == 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?)";
close;
}
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 "Pilot#airplane_01" ET_HUK
mes "[Pilot]";
mes "Oh...! Hello there!";
mes "E-e-enjoying your flight?!";
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 "Quest_Izl";
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.",1,0x00FF00;
end;
OnTimer15000:
set $@mobinv, $@mobinv+1;
set $@mobrand, rand(1,3);
if($@mobinv >= 9 && $@mobrand == 3) {
stopnpctimer;
enablenpc "Quest_Izl";
donpcevent "Quest_Izl::OnInvasion";
}
mapannounce "airplane_01","We are heading to Izlude.",1,0x00FF00;
end;
OnTimer30000:
mapannounce "airplane_01","We will arrive in Izlude shortly.",1,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.",1,0x00FF00;
end;
OnTimer55000:
mapannounce "airplane_01","Currently, we are in Izlude. The Airship will leave shortly.",1,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.",1,0x70DBDB;
end;
OnTimer80000:
mapannounce "airplane_01","We are heading to Juno.",1,0x70DBDB;
end;
OnTimer95000:
mapannounce "airplane_01","We will arrive in Juno shortly.",1,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.",1,0x70DBDB;
end;
OnTimer120000:
mapannounce "airplane_01","Currently, we are in Juno. The Airship will take off shortly.",1,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.",1,0xFF8600;
end;
OnTimer145000:
mapannounce "airplane_01","We are heading to Rachel.",1,0xFF8600;
end;
OnTimer160000:
mapannounce "airplane_01","We will arrive in Rachel shortly.",1,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.",1,0xFF8600;
end;
OnTimer185000:
mapannounce "airplane_01","Currently, we are in Rachel. The Airship will leave shortly.",1,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.",1,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,59,3 duplicate(AirshipInfo) Airship Staff#info 67
airplane_01,50,66,4 duplicate(AirshipApples) Meltz 86
airplane_01,32,61,4 duplicate(TypingContest) Nils 49
airplane_01,221,158,6 duplicate(Pilot) Pilot#air-1 852
airplane_01,83,61,2 script Dianne 72,{
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 28, "Dianne";
end;
}
airplane_01,69,63,2 script Old Man#06 55,{
mes "[Mendel]";
mes "As I expected, the";
mes "in-flight meals are";
mes "three star quality at best.";
mes "^111111*Harrrumph*^000000 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,6 script Swordman Shimizu 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_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 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,3 script Airship Staff#yuno01::Airship Staff 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.";
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,5 duplicate(Airship Staff) Airship Staff#yuno02 91
//============================================================
//= 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;
}
}