//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