// The ferry system
017-9,27,28,0|script|#FerryConfig|32767
{
end;
OnInit:
disablenpc "Hurnscald South Koga";
disablenpc "Candor Koga";
disablenpc "Nivalis Koga";
disablenpc "Hurnscald North Koga";
disablenpc "Tulimshar Koga";
set $@MainCurrentDock, 0;
set $@CandorCurrentDock, 0;
set $@DockTickCount, 0;
set $@DockLeaveCount, 1;
setarray $@MainDocks$, "Hurnscald North", "Nivalis", "Tulimshar";
setarray $@CandorDocks$, "Candor", "Hurnscald South";
donpcevent "#"+$@MainDocks$[$@MainCurrentDock]+"Dock::OnCommandArrive";
donpcevent "#"+$@CandorDocks$[$@CandorCurrentDock]+"Dock::OnCommandArrive";
set .warp_delay, 430;
if (debug >= 2) end;
initnpctimer;
goto L_k1city2;
L_NextDock:
set $@MainLastDock, $@MainCurrentDock;
set $@CandorLastDock, $@CandorCurrentDock;
set $@MainCurrentDock, $@MainCurrentDock + 1;
set $@CandorCurrentDock, $@CandorCurrentDock + 1;
if($@MainCurrentDock == getarraysize($@MainDocks$))
set $@MainCurrentDock, 0;
if($@CandorCurrentDock == getarraysize($@CandorDocks$))
set $@CandorCurrentDock, 0;
set $@DockTickCount, 0;
donpcevent "#"+$@MainDocks$[$@MainLastDock]+"Dock::OnCommandWarp";
donpcevent "#"+$@MainDocks$[$@MainCurrentDock]+"Dock::OnCommandArrive";
donpcevent "#"+$@CandorDocks$[$@CandorLastDock]+"Dock::OnCommandWarp";
donpcevent "#"+$@CandorDocks$[$@CandorCurrentDock]+"Dock::OnCommandArrive";
donpcevent "#k1sound::OnCommandDing";
donpcevent "#k2sound::OnCommandDing";
initnpctimer;
if($@MainCurrentDock == 2) goto L_k1city1;
if($@MainCurrentDock == 0) goto L_k1city2;
if($@MainCurrentDock == 1) goto L_k1city3;
end;
OnTimer5000:
if ($@DockTickCount > $@DockLeaveCount)
goto L_NextDock;
set $@DockTickCount, $@DockTickCount + 1;
initnpctimer;
end;
L_k1city1:
enablenpc "#k1city1e"; disablenpc "#k1city2e"; disablenpc "#k1city3e";
disablenpc "#k1city1d"; enablenpc "#k1city2d"; enablenpc "#k1city3d";
if($@CandorCurrentDock == 1) goto L_k2city1;
if($@CandorCurrentDock == 0) goto L_k2city2;
end;
L_k1city2:
disablenpc "#k1city1e"; enablenpc "#k1city2e"; disablenpc "#k1city3e";
enablenpc "#k1city1d"; disablenpc "#k1city2d"; enablenpc "#k1city3d";
if($@CandorCurrentDock == 1) goto L_k2city1;
if($@CandorCurrentDock == 0) goto L_k2city2;
end;
L_k1city3:
disablenpc "#k1city1e"; disablenpc "#k1city2e"; enablenpc "#k1city3e";
enablenpc "#k1city1d"; enablenpc "#k1city2d"; disablenpc "#k1city3d";
if($@CandorCurrentDock == 1) goto L_k2city1;
if($@CandorCurrentDock == 0) goto L_k2city2;
end;
L_k2city1:
enablenpc "#k2city1e"; disablenpc "#k2city2e";
disablenpc "#k2city1d"; enablenpc "#k2city2d";
end;
L_k2city2:
disablenpc "#k2city1e"; enablenpc "#k2city2e";
enablenpc "#k2city1d"; disablenpc "#k2city2d";
end;
}
function|script|FerryHelp
{
mes "\"You wait on the dock for the ship to come in. You'll be given a chance to board the boat when it comes into port.\"";
mes "\"It lingers in port to allow you some time to board in case you are running behind.\"";
mes "\"Once on the ship, it will sail to different ports and annouce where it is docking.\"";
mes "\"There are 2 Ferrys, both ferrys are free to ride.\"";
mes "\"The Main ferry travels from Argeas, Kaizei and Tonori. It docks in the major ports Hurnscald North, Nivalis and the Tulimshar Dock.\"";
mes "\"The Candor Ferry only travels betwen Candor and the Hurnscald South Dock.\"";
mes "\"Refreshments and supplies are offered aboard both ships during the voyage.\"";
mes "\"We also have some slot machines in case you get bored.\"";
return;
}
function|script|BoardFerry
{
if ($@MainCurrentDock == 0 && getmap() == "008-1") goto L_Board;
elif ($@MainCurrentDock == 1 && getmap() == "031-1") goto L_Board;
elif ($@MainCurrentDock == 2 && getmap() == "001-1") goto L_Board;
set @NextDock, $@MainCurrentDock + 1;
if(@NextDock == getarraysize($@MainDocks$)) set @NextDock, 0;
message strcharinfo(0),
"Ferry : ##3The ferry is currently at ##B"+$@MainDocks$[$@MainCurrentDock]+"##b. "
+"It will be arriving at ##B"+$@MainDocks$[@NextDock]+"##b next.";
return;
L_Board:
warp "035-2",32,29;
return;
}
function|script|BoardCandorFerry
{
if ($@CandorCurrentDock == 0 && getmap() == "029-1") goto L_Board;
elif ($@CandorCurrentDock == 1 && getmap() == "008-1") goto L_Board;
set @NextDock, $@CandorCurrentDock + 1;
if(@NextDock == getarraysize($@CandorDocks$)) set @NextDock, 0;
message strcharinfo(0),
"Ferry : ##3The ferry is currently at ##B"+$@CandorDocks$[$@CandorCurrentDock]+"##b. "
+"It will be arriving at ##B"+$@CandorDocks$[@NextDock]+"##b next.";
return;
L_Board:
warp "036-2",32,29;
goto L_Return;
L_Return:
return;
}