//edit by wii
prt_in2,158,48,5 script Poring Race 568,{
if( .access_Prace == 0 ) {
mes "[Event Employee: Poring Race]";
mes "Poring Race has ended.";
close;
}
mes "[Event Employee: Poring Race]";
mes "Do you want to participate on Poring Race?";
if( select( "Yes","No" ) -1 ) {
next;
mes "[Event Employee: Poring Race]";
mes "See you again next time!";
close;
}
if( .access_Prace == 0 ) {
next;
mes "[Event Employee: Poring Race]";
mes "...";
mes "...";
mes "Cheater!!~~";
close;
}
close2;
@prace_winner$ = "";
warp "p_track01",52,41;
end;
// OnInit:
OnClock0130:
OnClock0900:
OnClock1630:
if( gettime(3)%2 ) end;
set .access_Prace, 1;
announce "Event Employee [Poring Race]: Poring Race is about to begin. To participate kindly approach me at Event Room or use @event",0;
setnpctimer 100000,"Bidder#prace0";
startnpctimer "Bidder#prace0";
end;
OnPraceEnd:
set .access_Prace, 0;
announce "Event Employee [Poring Race]: Poring Race is over! Thank you for participating.",0;
end;
}
p_track01,58,41,3 script Bidder#prace0 877,{
function checkevent;
if( getstrlen( @prace_winner$ ) ) {
mes "[Event Employee: Poring Race Bidder]";
mes "You have choose ^00bb00"+ @prace_winner$ +"^000000";
close;
}
else if ( checkevent() || .start ) {
mes "[Event Employee: Poring Race Bidder]";
mes "There is a race in progress...";
close;
}
else if( !getvariableofnpc( .access_Prace,"Poring Race" ) ) {
mes "[Event Employee: Poring Race Bidder]";
mes "There is no race.";
close;
}
mes "[Event Employee: Poring Race Bidder]";
mes "Choose the poring you want to bet:";
mes "It will cost "+ .zeny_req +" Zeny.";
.@s = select( .menu_$ );
if( .@s == 7 ) {
next;
mes "[Event Employee: Poring Race Bidder]";
mes "Goodbye.";
close;
}
.@c$ = .monst_$[ .@s -1 ];
if ( checkevent() ) {
next;
mes "[Event Employee: Poring Race Bidder]";
mes "...";
mes "...";
mes "Cheater!!~~";
close;
}
else if( Zeny < .zeny_req ) {
next;
mes "[Event Employee: Poring Race Bidder]";
mes "You don't have enough Zeny.";
close;
}
Zeny -= .zeny_req;
@prace_winner$ = .@c$;
.prace_bidders[ .prace_bets ] = getcharid(3);
.prace_bets++;
next;
mes "[Event Employee: Poring Race Bidder]";
mes "[Event Employee: Poring Race Bidder]: I have "+ .prace_bets +" bets.";
initnpctimer;
npctalk "[Event Employee: Poring Race Bidder]: I got "+ strcharinfo(0) +" bet!";
close;
OnTimer60000:
npctalk "[Event Employee: Poring Race Bidder]: I got "+ .prace_bets +" bets. Anyone else?";
end;
OnTimer80000:
npctalk "[Event Employee: Poring Race Bidder]: The race will start soon. Last chance.";
end;
OnTimer90000:
stopnpctimer;
.start = 1;
mapannounce "p_track01","Porings, on your marks...",1,0xFFAB54;
sleep 2500;
for( .@i = 3; .@i > 0; .@i-- ) {
mapannounce "p_track01","..."+ .@i +"...",1,0xFFAB54;
sleep 1000;
}
donpcevent strnpcinfo(0) +"::OnStartRace";
sleep 1000;
mapannounce "p_track01","Gooo!!!",1,0xFFAB54;
end;
OnTimer320000:
mapwarp "p_track01","prontera",142,170;
donpcevent "Poring Race::OnPraceEnd";
.prace_winner$ = "";
.start = .prace_bets = 0;
donpcevent strnpcinfo(0) +"::OnReturnRace";
end;
OnStartRace:
callsub L_label, "OnRace";
OnStopRace:
callsub L_label, "OnStop";
OnReturnRace:
callsub L_label, "OnReturn";
L_label:
donpcevent "Metaling#prace3::"+ getarg(0);
donpcevent "Poring#prace1::"+ getarg(0);
donpcevent "Poporing#prace6::"+ getarg(0);
donpcevent "Angeling#prace2::"+ getarg(0);
donpcevent "Santa Poring#prace5::"+ getarg(0);
donpcevent "Deviling#prace4::"+ getarg(0);
if( getarg(0) == "OnStop" && .prace_winner$ != "" )
callsub L_WinRace;
end;
L_WinRace:
mapannounce "p_track01", "The winner is "+ .prace_winner$,1,0xFFAB54;
donpcevent strnpcinfo(0) +"::OnChequeo";
sleep 3000;
donpcevent strnpcinfo(0) +"::OnReturnRace";
sleep 10000;
mapwarp "p_track01","prontera",142,170;
donpcevent "Poring Race::OnPraceEnd";
.prace_winner$ = "";
.start = .prace_bets = 0;
end;
OnChequeo:
for( .@i = 0 ; .@i < getarraysize( .prace_bidders ); .@i++ ) {
if( attachrid( .prace_bidders[.@i] ) && getstrlen( @prace_winner$ ) ) {
dispbottom "The winner is "+ .prace_winner$ +" and you have bet for "+ @prace_winner$ +".";
if( @prace_winner$ == .prace_winner$ ) {
dispbottom "You have won!";
mapannounce "p_track01"," Congratulations! "+ strcharinfo(0) +" has won!",1,0xFFAB54;
getitem .item_gained, .item_num_gain;
emotion 21,1;
}
else {
dispbottom "You have lost.";
emotion 28,1;
}
@prace_winner$ = "";
}
}
deletearray .prace_bidders;
end;
OnInit:
.zeny_req = 10000000;
.item_gained = 36008;
.item_num_gain = 5;
setarray .monst_$,"Poring","Angeling","Metaling","Deviling","Santa Poring","Poporing","None";
.menu_$ = implode( .monst_$, ":" );
end;
function checkevent {
getmapxy .@mapname$, .@x1, .@y, 1, "Poring#prace1";
getmapxy .@mapname$, .@x2, .@y, 1, "Angeling#prace2";
getmapxy .@mapname$, .@x3, .@y, 1, "Metaling#prace3";
getmapxy .@mapname$, .@x4, .@y, 1, "Deviling#prace4";
getmapxy .@mapname$, .@x5, .@y, 1, "Santa Poring#prace5";
getmapxy .@mapname$, .@x6, .@y, 1, "Poporing#prace6";
.@t = ( .@x1 + .@x2 + .@x3 + .@x4 + .@x5 + .@x6 ) != 58 * 6;
return .@t;
}
}
//-----------------------------------
// Racer NPC's
//-----------------------------------
- script pori_race -1,{
OnRace:
initnpctimer;
end;
OnStop:
stopnpctimer;
end;
OnReturn:
sleep 1000;
while( strnpcinfo(1) != .monst$[ .@i ] ) .@i++;
movenpc strnpcinfo(3), 58, .walk_t[.@i];
end;
OnTimer1100:
getmapxy .@mapname$,.@x,.@y,1, strnpcinfo(3);
if( rand(100) < .prace_random )
npcwalkto .@x-1, .@y;
.@r = rand( .prace_random2 );
if ( .@x -1 == 29 ) {
while( strnpcinfo(1) != .monst$[ .@i ] ) .@i++;
set getvariableofnpc( .prace_winner$, "Bidder#prace0" ), .monst$[ .@i ];
emotion 29;
donpcevent "Bidder#prace0::OnStopRace";
end;
}
stopnpctimer;
setnpctimer .@r;
startnpctimer;
end;
OnInit:
deletearray .walk_t;
deletearray .monst$;
setarray .walk_t, 38, 36, 34, 32, 30, 28;
setarray .monst$, "Poring", "Angeling", "Metaling", "Deviling", "Santa Poring", "Poporing";
.prace_random = 70;
.prace_random2 = 600;
end;
}
p_track01,58,38,2 duplicate(pori_race) Poring#prace1 1002
p_track01,58,36,2 duplicate(pori_race) Angeling#prace2 1096
p_track01,58,34,2 duplicate(pori_race) Metaling#prace3 1613
p_track01,58,32,2 duplicate(pori_race) Deviling#prace4 1582
p_track01,58,30,2 duplicate(pori_race) Santa Poring#prace5 1062
p_track01,58,28,2 duplicate(pori_race) Poporing#prace6 1031
p_track01,78,42,0 warp p_track002 1,3,prt_in2,152,23
p_track01 mapflag nobranch
p_track01 mapflag noicewall
p_track01 mapflag nomemo
p_track01 mapflag noreturn
p_track01 mapflag noteleport
p_track01 mapflag nowarpto
p_track01 mapflag nowarp
p_track01 mapflag noskill
p_track01 mapflag pvp off
p_track01 mapflag nosave