//===== rAthena Script =======================================//= Poring Ball//===== Template By: =========================================//= Saruka//===== Revised By: ==========================================//= Mysterious//===== Current Version: =====================================//= 1.2//===== Compatible With: =====================================//= rAthena SVN //===== Description: =========================================//= Football game made for Ragnarok Online, with a poring//= as a ball.//= The red team is on the east of the field//= The blue team is on the west of the field//===== Additional Comments: =================================//= v1.0 - First release [Saruka]//= v1.1 - Just fixed credits [Mysterious]//= v1.2 - Revised a little bit [Mysterious]//===== Prerequisites: =======================================//= The Football Field: ball2//= Red and Blue palettes: 78 & 79//= red palette : $paletteRed//= blue palette : $paletteBlue//============================================================quiz_02,349,390,4 script Organizer#orga_ball 869,{//cutin "lhz_diguts02",2;set @palette, getlook(7);if($@state_match ==1)goto OnConfirmation;if($@state_match >=2)goto OnMatchinplay;Showgamerules:mes"[ ^BF0073Organizer^000000 ]";mes"Poring Ball is quite a simple game.";mes"You have to send the poring into your adversary's goal.";mes"The team that makes the most goals will win the match.";next;mes"[ ^BF0073Organizer^000000 ]";mes"However, before going onto the field, 2 teams must be made.";mes"All the members of one team have to be in the same group.";mes"Then a person of each group will go subscribe to one of the assistants.";mes"When 2 teams are subscribed, you will have to give them your confirmation.";mes"Once the teams are confirmed, all the players must come see me to be sent to the trainers.";mes"The trainers will send you on the field, the match will not wait for you so hurry!";next;mes"[ ^BF0073Organizer^000000 ]";mes"If no teams subscribe, room will be made for new teams.";goto OnClose;// OnSubscriptionteam called by the assistants during the subscription of each teamOnSubscriptionteam:// if the 2 teams are subscribedif(($@redteamID!=0)&&($@blueteamID!=0)&&(getpartyname($@redteamID)!="null")&&(getpartyname($@blueteamID)!="null")){announce"Organizer : The 2 teams are ready : "+getpartyname($@blueteamID)+" and "+getpartyname($@redteamID)+".",bc_yellow|bc_map;announce"Organizer : You have 1 minute so that a member of each team can come confirm the subscription.",bc_yellow|bc_map;if($@state_match!=1){set $@state_match, 1;stopnpctimer;initnpctimer;}}end;OnConfirmation:if((getcharid(1)!=$@redteamID)&&(getcharid(1)!=$@blueteamID)){// if the player isn't in one of the teams send him back to the game rules.goto Showgamerules;}if(getcharid(1)==$@redteamID){// Confirm if the player is part of the Red Teammes"[ ^BF0073Organizer^000000 ]";mes"Thank you for confirming with the Red Team.";if($@redconfirmation==1)goto OnClose; // if we have already confirmed, no need to go further.set $@redconfirmation, 1;close2;}// elseif(getcharid(1)==$@blueteamID){// Confirm if player is part of the Blue Teammes"[ ^BF0073Organizer^000000 ]";mes"Thank you for confirming with the Blue Team.";if($@blueconfirmation==1)goto OnClose; // if we have already confirmed, no need to go further.set $@blueconfirmation, 1;close2;}// verify that the groups haven't been sortedif((getpartyname($@redteamID)=="null") || (getpartyname($@blueteamID)=="null")){announce"Organizer : The teams are not valid anymore, the match has been cancelled.",bc_yellow|bc_map;stopnpctimer;callsub OnMatchcancellation;goto OnClose;end;}if(($@state_match!=2)&&($@blueconfirmation==1)&&($@redconfirmation==1)){stopnpctimer;announce"Organizer : The match will begin soon! ALL the players must contact me to be transferred on to the field.",bc_yellow|bc_map;set $@state_match, 2;donpcevent"TimerInitMatch::OnStart";}cutin"",255;end;OnTimer60000:announce"Organizer : The delay of the confirmation has passed, the match is cancelled...",bc_npc|bc_map;callsub OnMatchcancellation;end;OnMatchcancellation:set $@state_match, 0;set $@blueteamID, 0;set $@redteamID, 0;set $@redconfirmation, 0;set $@blueconfirmation, 0;set $@isballonfield, 0;set $@teampossessingballID, 0;return;OnMatchinplay:if(getcharid(1)==$@redteamID){// if the player is from the red teammes"[ ^BF0073Organizer^000000 ]";mes"Ready to play?";switch(select("I want to go on the field.","I want to cancel the match.")){case1:// Test actual paletteif(@palette != $paletteRed){if(@palette != $paletteBlue){// The player isn't wearing a suit, you need to save his suit at the lockers, to give it back afterset savePalette, @palette;}setlook7, $paletteRed;}savepoint"quiz_02",335,345;percentheal100,100;warp"quiz_02",335,345;goto OnClose;case2:cutin"",255;cutin"lhz_diguts07",2;set $@redconfirmation,2;announce"Organizer : "+strcharinfo(0)+" of the Red Team asks for a match cancellation.",bc_npc|bc_map;}}elseif(getcharid(1)==$@blueteamID){// if the player is from the blue teammes"[ ^BF0073Organizer^000000 ]";mes"Ready to play?";switch(select("- Go to field","- Cancel the Match")){case1:// Test actual paletteif(@palette != $paletteBlue){if(@palette != $paletteRed){// The player isn't wearing a suit, you need to save his suit at the lockers, to give it back afterset savePalette, @palette;}setlook7, $paletteBlue;}savepoint"quiz_02",364,345;percentheal100,100;warp"quiz_02",364,345;goto OnClose;case2:cutin"",255;cutin"lhz_diguts07",2;set $@blueconfirmation,2;announce"Organizer : "+strcharinfo(0)+" of the Blue Team asks for a match cancellation.",bc_npc|bc_map;}}else{// if the player isn't in one of the teams send him back to the game rules.goto Showgamerules;}if(($@blueconfirmation==2)&&($@redconfirmation==2)){announce"Organizer : Match has been cancelled.",bc_npc|bc_map;callsub OnMatchcancellation;donpcevent"TimerMatchcancellation::OnMatchcancellation";end;}goto OnClose;// At the start of map server :OnInit:set $paletteRed, 79;set $paletteBlue, 78;// Warp all the players from map ball2 near the Organizer.callsub OnMatchcancellation;end;OnClose:close2;cutin"",255;end;}quiz_02,363,365,4 script Red Assistant#coach_R 911,{// If a match is in playif($@state_match >=2){mes"[Red Assistant]";mes"The subscriptions are currently unavailable because a match is in progress. Don't hesitate to try again in a few minutes!";close;}// Does the player belong to a group?if(getcharid(1)==0){mes"[Red Assistant]";mes"The subscriptions are for groups, and you're not in a group. Come back with your friends!";close;}// Isn't the group of the player subscribed as the blue team?if(getcharid(1)==$@blueteamID){mes"[Red Assistant]";mes"Hey! A player from the opposing team! Get ready to face off one of the best teams!";mes"The formidable Red Team!";close;}// If a team is already subscribed, and that team still existsif(($@redteamID!=0)&&(getpartyname($@redteamID)!="null")){// if the player belongs to that team that's already subscribedif($@redteamID==getcharid(1)){mes"[Red Assistant]";mes"Do you wish to unsubscribe your team?";next;if(select("Yes, we want to stop the match.","No, we're staying.")==2)close;// if the player wishes to unsubscribe their teamannounce"Team "+getpartyname($@redteamID)+" has disbanded. There is no more Red Team!",bc_yellow|bc_map;set $@redteamID, 0;close;}mes"[Red Assistant]";mes"A team is already subscribed! It's Team "+getpartyname($@redteamID)+".";close;}// if there are no teams subscribed and that the subscriptions are openmes"[Red Assistant]";mes"Do you wish to subscribe your team?";next;if(select("Yes, we want to subscribe.","No.")==2)close;// Team subscriptionif($@redteamID==0 || (getpartyname($@redteamID)=="null")){set $@redteamID, getcharid(1);mes"[Red Assistant]";mes"Your team is now subscribed, good luck!";announce""+getpartyname($@redteamID)+" Team has subscribed as the Red Team!",bc_yellow|bc_map;close2;doevent"Organizer#orga_ball::OnSubscriptionteam";}else{mes"[Red Assistant]";mes"I'm sorry! Another team has subscribed before you...";close2;}end;}quiz_02,336,365,4 script Blue Assistant#coach_B 912,{// If a match is in playif($@state_match >=2){mes"[Blue Assistant]";mes"The subscriptions are currently unavailable because a match is in progress. Don't hesitate to try again in a few minutes!";close;}// Does the player belong to a group?if(getcharid(1)==0){mes"[Blue Assistant]";mes"The subscriptions are for groups, and you're not in a group. Come back with your friends!";close;}// Isn't the group of the player subscribed as the red team?if(getcharid(1)==$@redteamID){mes"[Blue Assistant]";mes"Hey! A player from the opposing team! Get ready to face off one of the best teams!";mes"The formidable Blue Team!";close;}// If a team is already subscribed, and that team still existsif(($@blueteamID!=0)&&(getpartyname($@blueteamID)!="null")){// if the player belongs to that team that's already subscribedif($@blueteamID==getcharid(1)){mes"[Blue Assistant]";mes"Do you wish to unsubscribe your team?";next;if(select("Yes, we want to stop the match.","No, we're staying.")==2)close;// if the player wishes to unsubscribe their teamannounce"Team "+getpartyname($@blueteamID)+" has disbanded. There is no more Blue Team!",bc_yellow|bc_map;set $@blueteamID, 0;close;}mes"[Blue Assistant]";mes"A team is already subscribed! It's Team "+getpartyname($@blueteamID)+".";close;}// if there are no teams subscribed and that the subscriptions are openmes"[Blue Assistant]";mes"Do you wish to subscribe your team?";next;if(select("Yes, we want to subscribe.","No.")==2)close;// Team subscriptionif($@blueteamID==0 || (getpartyname($@blueteamID)=="null")){set $@blueteamID, getcharid(1);mes"[Blue Assistant]";mes"Your team is now subscribed, good luck!";announce""+getpartyname($@blueteamID)+" Team has subscribed as the Blue Team!",bc_yellow|bc_map;close2;doevent"Organizer#orga_ball::OnSubscriptionteam";}else{mes"[Blue Assistant]";mes"I'm sorry! Another team has subscribed before you...";close2;}end;}quiz_02,326,336,4 script Red Coach#coach_R 911,{mes"[Red Coach]";if(getcharid(1)!=$@redteamID){mes"It looks like you got nothing to do here...";close2;goto OnLeave;}mes"Hello, I am the Coach of the Red Team!";next;percentheal100,20;switch(select("Go on the field","Leave","Cancel")){case1:// If the match begins, warp immediately,if($@state_match==2)goto OnReadyformatch;// otherwise, determine waiting time before being rewarped on the fieldset @waiting_time, 5000;if($@state_match==3){mes"[Red Coach]";mes"You will be sent on the field in "+(@waiting_time/1000)+" seconds, be ready!";close2;addtimer @waiting_time, "Red Coach#coach_R::OnReadyformatch";}break;case2:goto OnLeave;break;case3:break;}close;OnLeave:warp"quiz_02",350,374;close;// Warp on the fieldOnReadyformatch:set @poringBallAura, 0;warp"ball2",66,56;end;}quiz_02,373,336,4 script Blue Coach#coach_B 912,{mes"[Blue Coach]";if(getcharid(1)!=$@blueteamID){mes"It looks like you got nothing to do here...";close2;goto OnLeave;}mes"Hello, I am the coach of the Blue Team!";next;percentheal100,20;switch(select("Go on the field","Leave","Cancel")){case1:// If the match begins, warp immediately,if($@state_match==2)goto OnReadyformatch;// otherwise, determine waiting time before being rewarped on the field elseif($@state_match==3){set @waiting_time, 5000;mes"[Blue Coach]";mes"You will be sent on the field in "+(@waiting_time/1000)+" seconds, be ready!";close2;addtimer @waiting_time, "Blue Coach#coach_B::OnReadyformatch";}break;case2:goto OnLeave;break;case3:break;}close;OnLeave:warp"quiz_02",350,374;close;// Warp on the fieldOnReadyformatch:set @poringBallAura, 0;warp"ball2",54,56;close;}ball2,0,0,0 script TimerInitMatch -1,{OnStart:// countdown before the match beginsset $@teampossessingballID, 0;set $@score_blue_match, 0;set $@score_red_match, 0;stopnpctimer; // normally pointless, but seeing the consequences of a npc timer, we won't take a chance.initnpctimer;announce"Match will begin in 30 seconds.",bc_npc|bc_map;//doevent "Ball::OnReturntomiddle";end;OnTimer5000:announce"Match will begin in 25 seconds.",bc_npc|bc_map;end;OnTimer10000:announce"Match will begin in 20 seconds.",bc_npc|bc_map;end;OnTimer15000:announce"Match will begin in 15 seconds.",bc_npc|bc_map;end;OnTimer20000:announce"Match will begin in 10 seconds.",bc_npc|bc_map;end;OnTimer25000:announce"Match will begin in 5 seconds.",bc_npc|bc_map;end;OnTimer30000:announce"The match has begun!",bc_npc|bc_map;stopnpctimer;donpcevent"TimerMatch::OnStartMatch";pvpon"ball2";end;}ball2,0,0,0 script TimerMatch -1,{OnStartMatch:stopnpctimer; // normally pointless, but seeing the consequences of a npc timer, we won't take a chance.initnpctimer;set $@state_match,3;end;OnTimer180000:mapannounce"ball2", "Halftime! Score is currently "+$@score_blue_match+" (Blue) / "+$@score_red_match+" (Red)",bc_map;end;OnTimer360000:mapannounce"ball2", "The match is over! Scores end with "+$@score_blue_match+" (Blue) / "+$@score_red_match+" (Red)",bc_map;set $@state_match,4;pvpoff"ball2";end;OnTimer362000:if($@score_blue_match<$@score_red_match)mapannounce"ball2", "Congratulations to the Red Team!!",bc_map;elseif($@score_blue_match>$@score_red_match)mapannounce"ball2", "Congratulations to the Blue Team!!",bc_map;elsemapannounce"ball2", "It's a tie!!",bc_map;donpcevent"Ball::OnReturntomiddle";end;OnTimer420000:mapwarp"ball2","quiz_02",350,374;set $@state_match,0;set $@blueteamID, 0;set $@redteamID, 0;set $@redconfirmation, 0;set $@blueconfirmation, 0;set $@teampossessingballID, 0;end;}ball2,0,0,0 script TimerMatchcancellation -1,{OnMatchcancellation:set $@state_match, 4;mapannounce"ball2", "Score is currently "+$@score_blue_match+" (Blue) / "+$@score_red_match+" (Red)",bc_map;mapannounce"ball2", "The match has been cancelled to a team or coach's request!",bc_map;donpcevent"Ball::OnReturntomiddle";stopnpctimer;initnpctimer;end;OnTimer4000:stopnpctimer;mapwarp"ball2","quiz_02",350,374;set $@state_match,0;end;}ball2,60,56,4 script Ball 1002,{// Kicking the ball allows it to move from many squares,// however its location is determined square by square.// The ball draws its course by moving forward from a square every 150 ms.// Every time it lands on a square it makes some tests to determine if a goal has been made,// if it came out of the field, etc.// If that is the case it returns to its place on its own (middle of the field, corners, etc.)if($@state_match!=3){// If there are no matches in progress ( hasn't started yet, just finished, etc.)npctalk"No match! Don't touch!";end;}if($@destinationType>0){end;}// If the player isn't in one of the 2 subscribed teams :if((getcharid(1)==0) || ((getcharid(1)!= $@redteamID)&&(getcharid(1)!= $@blueteamID))){npctalk"A trespasser!! Get out "+strcharinfo(0)+" !";warp"quiz_02",350,374;end;}set $@Activeplayers$, strcharinfo(0);set $@ActiveteamID, getcharid(1);// Player and ball coordinates at the time of the shotgetmapxy $@mapname$,$@mapxNPC,$@mapyNPC,1;getmapxy $@mapname$,$@mapxPC,$@mapyPC,0;// verification of the player's distance / ball : the player must be 1 square from the ball.if(distance($@mapxNPC,$@mapyNPC,$@mapxPC,$@mapyPC)>2){dispbottom"You cannot shoot the Poring Ball at distance.";end;}// Watch out for the position of the stopnpctimer, some tests must be made beforehand (has the player really hit the ball?)stopnpctimer;specialeffect26;specialeffect44;npcspeed98;// Research of the distance the ball will travel// (still for now)set $@distance,4;// Research of the position of the ball Xif($@mapxPC<$@mapxNPC)set $@movementX, 1;elseif($@mapxPC>$@mapxNPC)set $@movementX, -1;elseset $@movementX, 0;// Research of the position of the ball Yif($@mapyPC<$@mapyNPC)set $@movementY, 1;elseif($@mapyPC>$@mapyNPC)set $@movementY, -1;elseset $@movementY, 0;// If the ball is already out of the field, it cannot be moved further away from the fieldif($@isballonfield==1){if((23>=$@mapyNPC+$@movementY)||($@mapyNPC+$@movementY>=89)||(12>=$@mapxNPC+$@movementX)||($@mapxNPC+$@movementX>=108))end;}// Check if the ball is in a team's possession (for example after the ball's been kicked out of the field by a team,// only the other team has the right to give the first hit to the ball)if($@teampossessingballID !=0)&&($@ActiveteamID != $@teampossessingballID){dispbottom"The other team gets the Poring.";end;}elseset $@teampossessingballID, 0;// start of the ball's movementset $@mapxNPC, $@mapxNPC+$@movementX;set $@mapyNPC, $@mapyNPC+$@movementY;npcwalkto $@mapxNPC,$@mapyNPC;//npctalk "npcwalkto A "+$@mapxNPC+" "+$@mapyNPC;goto Whereistheball;end;OnTimer150:stopnpctimer;getmapxy $@mapname$,$@mapxNPC,$@mapyNPC,1;//npctalk "getmapxy "+$@mapxNPC+" "+$@mapyNPC;// Research of the direction if the ball already has oneif($@destinationType>0){switch($@destinationType){case0:break;case1:// Go to the middle of the fieldset $@destinationX, 60;set $@destinationY, 56;break;case2:// Go to the North West cornerset $@destinationX, 15;set $@destinationY, 86;break;case3:// Go to the North East cornerset $@destinationX, 105;set $@destinationY, 86;break;case4:// Go to the South West cornerset $@destinationX, 15;set $@destinationY, 26;break;case5:// Go to the South East cornerset $@destinationX, 105;set $@destinationY, 26;break;case6:// Go to the West Goalset $@destinationX, 19;set $@destinationY, 56;break;case7:// Go to the East Goalset $@destinationX, 101;set $@destinationY, 56;break;}// Research of the movement X of the ball to get closer to destinationif($@destinationX<$@mapxNPC)set $@movementX, -1;elseif($@destinationX>$@mapxNPC)set $@movementX, 1;elseset $@movementX, 0;// Research of the movement Y of the ball to get closer to destinationif($@destinationY<$@mapyNPC)set $@movementY, -1;elseif($@destinationY>$@mapyNPC)set $@movementY, 1;elseset $@movementY, 0;// Movement of the ballnpcwalkto $@mapxNPC+$@movementX,$@mapyNPC+$@movementY;getmapxy $@mapname$,$@mapxNPC,$@mapyNPC,1;// if the ball still hasn't reached its destination, restart the timerif(($@mapxNPC==$@destinationX)&&($@mapyNPC==$@destinationY))set $@destinationType,0;else{stopnpctimer;initnpctimer;}end;}// save the coordinates " before movement " (to delete the players from the minimaps)//set $@mapxNPCold, $@mapxNPC;//set $@mapyNPCold, $@mapyNPC;// If the ball doesn't have a precise destination, it continues its previous movementset $@mapxNPC, $@mapxNPC+$@movementX;set $@mapyNPC, $@mapyNPC+$@movementY;npcwalkto $@mapxNPC,$@mapyNPC;//npctalk "npcwalkto B "+$@mapxNPC+" "+$@mapyNPC;// Update the movement of the Poring on the minimap// for every player on the map// affects rid with a thing like : getcharid(3)//attachrid($@thingmabob_rid);// delete old save point// draw new save pointgoto Whereistheball;end;OnReturntomiddle:set $@destinationType, 1;stopnpctimer;initnpctimer;end;Whereistheball:// Note :// the command "getmapxy $@mapname$,$@mapxNPC,$@mapyNPC,1;" previously used here// wasn't allowing enough time for the ball to move, and often gave its coordinated to the movement// so instead I update the coordinates of the ball manually when it is being moved. This means that we work with// the " supposed " coordinates of the ball.// If the supposed coordinates ever didn't fit with the real coordinates, there would be a need to think// a way to give the ball the time to move, before doing the getmapxy.//If the ball was out, test if it came back on the fieldif($@isballonfield==1){if(((23<$@mapyNPC)&&($@mapyNPC<89))&&((12<$@mapxNPC)&&($@mapxNPC<108))){mapannounce"ball2", "The Poring is back on the field.",bc_blue;set $@isballonfield,0;}}else{if($@mapxNPC>=108){// T h e b a l l i s o n t h e e a s t s i d e// Check if we are in the right-side goalif((53<=$@mapyNPC)&&($@mapyNPC<=59)){mapannounce"ball2", " "+$@Activeplayers$+" has scored a goal for the Blue Team!",bc_blue;npctalk"Goal! I'll return to the middle of the field.";set $@score_blue_match, $@score_blue_match+1;set $@destinationType, 1;set $@teampossessingballID, $@redteamID;stopnpctimer;initnpctimer;end;}// if we are not in the goal,mapannounce"ball2", " "+$@Activeplayers$+" has sent the Poring Ball out of the field!",0xFF0000;//set isballonfield,1;if($@ActiveteamID==$@redteamID){// If the ball gets kicked by a player from the defending team, send the ball in the right corner :if($@mapyNPC<=56){npctalk"Out of the field! I am going to the corner.";set $@destinationType, 5; // Destination South East}else{npctalk"Out of the field! I am going to the corner.";set $@destinationType, 3; // Destination North West}// It's the blue team (attackers) that now possess the ball:set $@teampossessingballID, $@blueteamID;}elseif($@ActiveteamID==$@blueteamID){// If the ball gets kicked by a player from the attacking team, send the ball in front of the goalnpctalk"Out of the field! I am going in front of the Red Team's goal.";set $@destinationType, 7; // Destination East Goal// It's the red team (defenders) that now possess the ball:set $@teampossessingballID, $@redteamID;}elseend;stopnpctimer;initnpctimer;end;}elseif($@mapxNPC<=12){// T h e b a l l i s o n t h e w e s t s i d e// Check if we are in the left-side goalif((53<=$@mapyNPC)&&($@mapyNPC<=59)){mapannounce"ball2", " "+$@Activeplayers$+" has scored a goal for the Red Team!",bc_blue;npctalk"Goal! I'll return in the middle of the field.";set $@score_red_match, $@score_red_match+1;set $@destinationType, 1; // Destination middle of the fieldset $@teampossessingballID, $@blueteamID;stopnpctimer;initnpctimer;end;}mapannounce"ball2", " "+$@Activeplayers$+" has sent the Poring Ball out of the field!",0xFF0000;//set isballonfield,1;if($@ActiveteamID==$@blueteamID){// If the ball gets kicked by a player from the defending team, send the ball in the right corner:if($@mapyNPC<=56){npctalk"Out of the field! I am going to the corner.";set $@destinationType, 4; // Destination South East}else{npctalk"Out of the field! I am going to the corner.";set $@destinationType, 2; // Destination North West}// It's the red team (attackers) that now possess the ball:set $@teampossessingballID, $@redteamID;}elseif($@ActiveteamID==$@redteamID){// If the ball gets kicked by a player from the attacking team, send the ball in front of the goalnpctalk"Out of the field! I am going in front of the Blue Team's goal.";set $@destinationType, 6; // Destination West Goal// It's the blue team (defenders) that now possess the ball:set $@teampossessingballID, $@blueteamID;}elseend;stopnpctimer;initnpctimer;end;}elseif(($@mapyNPC>=89)||($@mapyNPC<=23)){// T h e b a l l i s o n ( e i t h e r N o r t h o r S o u t h s i d e )mapannounce"ball2", " "+$@Activeplayers$+" has sent the Poring Ball out of the field!",0xFF0000;set $@isballonfield,1;if($@ActiveteamID==$@redteamID){set $@teampossessingballID, $@blueteamID;npctalk"Poring for the Blue Team.";}elseif($@ActiveteamID==$@blueteamID){set $@teampossessingballID, $@redteamID;npctalk"Poring for the Red team.";}end;}}// Preparation for the next movementset $@distance,$@distance-1;if($@distance>0){stopnpctimer;initnpctimer;}end;}// *******************************************************************// Others NPCs// *******************************************************************ball2,108,52,2 script Red Flag#fred1 722,{end;}ball2,108,60,2 script Red Flag#fred2 722,{end;}ball2,12,52,6 script Blue Flag#fblue1 722,{end;}ball2,12,60,6 script Blue Flag#fblue2 722,{end;}ball2,60,17,8 script Field Assistant 913,{mes"[Field Assistant]";mes"Hi, what do you want?";next;if(getgmlevel()>79){switch(select("Leave","Cancel","Cancel the match","Give a point to the Red Team","Give a point to the Blue Team","Put the ball back in the middle")){case1:goto OnLeave;break;case2:break;case3:if($@state_match ==3){set $@blueteamID, 0;set $@redteamID, 0;set $@redconfirmation, 0;set $@blueconfirmation, 0;set $@state_match, 0;set $@isballonfield, 0;set $@teampossessingballID, 0;donpcevent"TimerMatchcancellation::OnMatchcancellation";}elsemes"No match is in progress.";break;case4:if($@state_match ==3){mapannounce"ball2", " "+strcharinfo(0)+" has added a point for the Red Team!",bc_blue;set $@score_match_rouge, $@score_match_rouge+1;}elsemes"No match is in progress.";break; case5:if($@state_match ==3){mapannounce"ball2", " "+strcharinfo(0)+" has added a point for the Blue Team!",bc_blue;set $@score_blue_match, $@score_blue_match+1;}elsemes"No match is in progress.";break;case6:mes"To be continued."; break; }}else{switch(select("Leave","Cancel")){case1:goto OnLeave;break;case2:break;}}close;OnLeave:warp"quiz_02",350,374;close;}// map football fieldball2 mapflag noicewall//ball2 mapflag pvpball2 mapflag pvp_noguildball2 mapflag nomemoball2 mapflag noteleportball2 mapflag nowarpball2 mapflag nosave SavePointball2 mapflag nopenaltyball2 mapflag nobranchball2 mapflag noexp// map for team constitutionquiz_02 mapflag noskillquiz_02 mapflag nomemoquiz_02 mapflag nobranchquiz_02 mapflag nopenaltyquiz_02 mapflag noexp