johnlol

Auto_Event2

May 2nd, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VeriLog 64.47 KB | None | 0 0
  1. //===== EinherjarRO Scripts ==================================
  2. //= Auto Event
  3. //===== By: ==================================================
  4. //= Stolao
  5. //===== Current Version: =====================================
  6. //= 2.5A
  7. //===== Compatible With: =====================================
  8. //= rAthena SVN
  9. //===== Description: =========================================
  10. //= Auto Event
  11. //===== Comments: ============================================
  12. //= [Stolao]
  13. //  db/import/instance_db.txt
  14. //  30,Emp Breaker,900,300,sword_1-1,215,206
  15. //
  16. //  src/map/chat.h
  17. //  #define MAX_CHAT_USERS 20
  18. //      Increase as needed for your server size
  19. //
  20. //===== To Do: ===============================================
  21. //= Make Rewards Editable in game
  22. //= Add A Vote4Event(ingame) Feature
  23. //= Add Events; Invasion, X-O Event, MVP Arena,
  24. //= Dead Branch, Wiki, Jumper, Fast Type, Safetywall
  25. //= Add Other Requested Events
  26. //= Fix Manually Removing Events Overflow Error (not game breaking)
  27. //===== Additional Comments: =================================
  28. //= 2.38 Added No_Trade flag to bomring and poring events
  29. //= 2.39 Added Find th Baphomet
  30. //= 2.3A Added Grab the Candy!
  31. //= 2.3B Added Monsters Counting (requires the server to be compiled with regular expressions library enabled)
  32. //= 2.3C Combined OnPCLogout Events
  33. //= 2.3D Added Disgusie Event
  34. //= 2.3E Replaced 'strnpcinfo()' type 0 and 1 with type 3
  35. //= 2.3F Removed dependencey on regular expressions library for Disguise and Coutning
  36. //= 2.40 Fixed Poring Event setting mapflags non-dynamic map
  37. //= 2.41 Added Fabre Event
  38. //= 2.42 Fixed Emp Event Failing to annouce not enough players
  39. //= 2.43 Fixed Zombie Failing to start due to negative index
  40. //= 2.44 Added Devil Square
  41. //= 2.45 Certain mapflags no loger removed on events end
  42. //= 2.46 Warp Players to Save instead of Prontera
  43. //= 2.47 Made default time for emp event ~23 Days
  44. //= 2.48 Added a player death check to zombie event
  45. //= 2.49 Fixed a loop issue in PVP
  46. //= 2.4A Players warp to prontera instead of save, apperenetly map warp doesnt support "Save"
  47. //= 2.4B Fixed Lucky Pick
  48. //= 2.4C Fixed a missing "" in maze event
  49. //= 2.4D Added a check so Mushroom Event will always have at least 1 mushroom
  50. //= 2.4E Fixed incorrect map index for Mushroom and Bapho events
  51. //= 2.4F Fixed incorrect event index for Mushroom and Bapho events
  52. //= 2.50 Added a Gm diplay count for mob counting event if Testmode is enabled
  53. //= 2.51 Removed map warp from counting event
  54. //= 2.52 Counting event now properly removes mobs at events end
  55. //= 2.53 Removed SQL dependency from Fabre event
  56. //= 2.54 Added Warp out for disgusie event
  57. //= 2.55 Disabled Countdown timer in disguse event
  58. //= 2.56 Fixed incorrect Rules check
  59. //= 2.57 Added a Gm diplay mob name for disguise event for gm 99
  60. //= 2.58 Fixed incorrect mapindex for disguise event
  61. //= 2.59 Devil Square now rewards all players once last chest is killed
  62. //= 2.5A Fabre event now propery kills monsters at end
  63. //===== Contact Ifo: =========================================
  64. //= [Stolao]
  65. //= Email: Taingram11@gmail.com
  66. //============================================================
  67.  
  68. prontera,164,171,4  script  Event Information   835,{
  69.  
  70.     function Func_Countdown;
  71.     function Func_Add_Time;
  72.     function Func_Prizes;
  73.     freeloop(1);
  74.  
  75. //==================================
  76.         //-- Special Checks
  77. //==================================
  78.  
  79.     if($@CurrentEvent == -14){
  80.         if(getgmlevel() >= .GMAccess && .TestMode)
  81.             dispbottom .MobCount[.@Target]+"";
  82.         input .@i;
  83.         if(.@i == .MobCount[.@Target])
  84.             doevent strnpcinfo(3)+"::OnRight";
  85.         else    doevent strnpcinfo(3)+"::OnSpam";
  86.         end;
  87.     }
  88.  
  89. //==================================
  90. OnMenu:     //-- Click Menus
  91. //==================================
  92.  
  93.     mes "[ Event Information ]";
  94.     if($@CurrentEvent > 0)
  95.         mes "Current Event: ",.ColorName$[$@CurrentEvent]," ";
  96.     .@Time = gettime(4) * 24 + gettime(3);
  97.     for(.@i = .@Time + ((gettime(2)>.StartTime?1:0)); .@i < .@Time + 168; .@i++){
  98.         if($EVENT_CONTROL[.@i%168]){
  99.             mes "Next Event:",.ColorName$[ $EVENT_CONTROL[ (.@i % 168) ] ] +" ~ "+ .Days$[ .@i % 168 / 24 ] +" - "+ Func_Add_Time( (.@i % 168) % 24);
  100.             .@e += 1;
  101.             break;
  102.         }
  103.     }
  104.     if(!.@e) mes "Auto Events Disabled.";
  105.     switch(select((($@CurrentEvent > 0)?" ~ Join event...:":":")+
  106.             ((.@e)?" ~ Check schedule...:":":")+
  107.             ((getgmlevel() < .GMAccess)?":":" ~ Manage events...:")+
  108.             (($@EventRanking & 1)?" ~ Monthly Ranking:":":")+
  109.             (($@EventRanking & 2)?" ~ Lifetime Ranking:":":")+
  110.             ": ~ ^777777Cancel^000000")) {
  111.         case 2:
  112.             for(.@i = 0; .@i < 168; .@i++){
  113.                 if( !( ( .@i ) % 24 )){
  114.                     next;
  115.                     mes "[ "+ .Days$[.@i / 24] +" Event Schedule ]";
  116.                 }
  117.                 if($EVENT_CONTROL[.@i])
  118.                     mes .ColorName$[$EVENT_CONTROL[.@i]] +" ~ "+ Func_Add_Time(.@i % 24);
  119.             }  
  120.             close;
  121.         case 4:
  122.             query_sql("SELECT char_id, CAST(`value` AS SIGNED) FROM `char_reg_num` WHERE `key` = 'MWonEvents' ORDER BY CAST(`value` AS SIGNED) DESC LIMIT 10",.@cid,.@value);
  123.         case 5:
  124.             if(!.@cid)
  125.                 query_sql("SELECT char_id, CAST(`value` AS SIGNED) FROM `char_reg_num` WHERE `key` = 'WonEvents' ORDER BY CAST(`value` AS SIGNED) DESC LIMIT 10",.@cid,.@value);
  126.             for(.@x = 0; .@x < getarraysize(.@cid); .@x++) {
  127.                 query_sql("SELECT `name` FROM `char` WHERE char_id = "+.@cid[.@x]+";",.@j$);
  128.                 .@name$[.@x] = .@j$;
  129.             }
  130.             next;
  131.             mes "~ ^990000"+((.@m)?"Monthly ":"") +"Event Ladder^000000 ~";
  132.             if (!getarraysize(.@cid))
  133.                 mes "The rankings are empty.";
  134.             else {
  135.                 for(.@i = 0; .@i < getarraysize(.@cid); .@i++)
  136.                     mes "#"+(.@i+1)+" ^0000FF"+.@name$[.@i]+"^000000 "+.@value[.@i];
  137.             }
  138.             close;
  139.         case 3:
  140.         while(1){
  141.             switch(select(" ~ Add an event...: ~ Delete an event...: ~ End current event: ~ Randomize event list: ~ Add event type: ~ Remove event type: ~ Reset queue:~ ^777777Go back^000000")) {
  142.                 case 3: next;
  143.                     goto OnEndEvent;
  144.                 case 4: next;
  145.                     goto OnRandomize;
  146.                 case 5: next;
  147.                     goto OnAddType;
  148.                 case 6: next;
  149.                     goto OnRemoveType;
  150.                 case 7: next;
  151.                     goto OnClear;
  152.                 case 8: next;
  153.                     goto OnMenu;
  154.                 case 1:
  155.                     next;
  156.                     mes "[ Add Event ]";
  157.                     mes "Pick a Day.";
  158.                     .@Day = select(" ~ "+implode(.Days$,": ~ ")) - 1;
  159.                     next;
  160.                     mes "[ Add Event ]";
  161.                     mes "Pick a Time for ^0055FF"+.Days$[.@D / 24]+".";
  162.                     .@menu$ = "";
  163.                     .@e = 0;
  164.                     for(.@i = .@Day * 24; .@i < .@Day * 24 + 24; .@i++){
  165.                         if(!$EVENT_CONTROL[.@i]){
  166.                             .@menu$ = .@menu$ +" ~ "+ Func_Add_Time( .@i % 24 ) +":";
  167.                             .@e += 1;
  168.                         } else  .@menu$ = .@menu$ + ":";
  169.                     }
  170.                     if(!.@e){
  171.                         mes "No Events Times Remaining for "+ .Days$[ .@Day ] +".";
  172.                         close;
  173.                     }
  174.                     .@D = select(.@menu$) + .@Day * 24 - 1;
  175.                     next;
  176.                     mes "[ Add Event ]";
  177.                     mes "Select a event for ^0055FF"+ .Days$[.@D / 24] +" ~ "+ Func_Add_Time(.@D % 24) +"^000000.";
  178.                     next;
  179.                     .@Event = select(implode(.ColorName$,": ~ ")) - 1;
  180.                     mes "Are you sure you want to add "+ .ColorName$[.@Event] +",";
  181.                     mes "for ^0055FF"+ .Days$[.@D / 24] +" ~ "+ Func_Add_Time(.@D % 24) +"^000000?";
  182.                     next;
  183.                     .@A = (select(" ~ ^0000CCAdd event...^000000: ~ ^777777Cancel^000000"));
  184.                     mes "[ Add Event ]";
  185.                     if(.@A == 2)
  186.                         mes "Cancelled.";
  187.                     else {
  188.                         $EVENT_CONTROL[.@D] = .@Event;
  189.                         mes "Event Added.";
  190.                     }
  191.                     break;
  192.                 case 2:
  193.                     next;
  194.                     mes "[ Remove Event ]";
  195.                     mes "Which Event?";
  196.                     .@menu$ = "";
  197.                     for(.@i = .@e = 0; .@i < 168; .@i++){
  198.                         if($EVENT_CONTROL[.@i]){
  199.                             .@menu$ = .@menu$ + .Days$[ .@i / 24 ] +" - "+ Func_Add_Time( .@i % 24 ) +" ~ "+ .ColorName$[ $EVENT_CONTROL[ .@i ] ]+":";
  200.                             .@e += 1;
  201.                         } else  .@menu$ = .@menu$ + ":";
  202.                     }
  203.                     if(!.@e){
  204.                         mes "No Events Setup.";
  205.                         close;
  206.                     }
  207.                     .@D = select(.@menu$) - 1;
  208.                     next;
  209.                     mes "[ Remove Event ]";
  210.                     mes "Are you sure you want to add the "+ .ColorName$[.@D] +",";
  211.                     mes "for ^0055FF"+ .Days$[.@D % 168 / 24] +" ~ "+ Func_Add_Time(.@D % 168 / 24) +"^000000?";
  212.                     .@A = (select(" ~ ^FF0000Remove event...^000000: ~ ^777777Cancel^000000"));
  213.                     if(.@A == 2){
  214.                         mes "Cancelled.";
  215.                     } else {
  216.                         $EVENT_CONTROL[.@D] = 0;
  217.                         mes "Event Removed.";
  218.                     }
  219.                     break;
  220.             }
  221.         }
  222.         case 6: close;
  223.         case 1:
  224.             next;
  225.             break;
  226.     }
  227.  
  228. //==================================
  229. OnJoinEvent:    //-- Join Event
  230. //==================================
  231.  
  232.     if($@CurrentEvent < 1)
  233.         mes "[ Event Management ]","Sorry no event is running.";
  234.     else {
  235.         mes "[ "+ .EventName$[$@CurrentEvent] +" ]","Want to join the "+ .ColorName$[$@CurrentEvent] +"?";
  236.         if($@CurrentEvent == 2)
  237.             mes "[ "+ .EventName$[$@CurrentEvent] +" ]","Must be a Novice Level 10/10 or lower.";
  238.         if($@CurrentEvent == 5 || $@CurrentEvent == 6 || $@CurrentEvent == 7)
  239.             mes "[ "+ .EventName$[$@CurrentEvent] +" ]","Will have any Carts or Pets Removed.";
  240.         if(select("Yes:No") == 2)
  241.             mes "[ "+ .EventName$[$@CurrentEvent] +" ]","Ok come back later.",bc_self|bc_blue;
  242.         else if((Baselevel > 10 || JobLevel > 10 || Class != Job_Novice ) && $@CurrentEvent == 2)
  243.             mes "[ "+ .EventName$[$@CurrentEvent] +" ]","Sorry you must be a Novice Level 10/10 or lower.";
  244.         else if($@CurrentEvent < 1)
  245.             mes "[ Event Management ]","Sorry event closed before you hit yes.";
  246.         else {
  247.             if($@CurrentEvent == 5 || $@CurrentEvent == 6 || $@CurrentEvent == 7 || $@CurrentEvent == 13){
  248.                 setmadogear 0;
  249.                 setdragon 0;
  250.                 if (checkwug())
  251.                     setoption Option_Wugrider,0;
  252.                 if(ismounting())
  253.                     setmounting;
  254.                 setriding 0;
  255.                 setfalcon 0;
  256.                 setcart 0;
  257.                 callfunc("dispell");
  258.             } else if($@CurrentEvent == 2)
  259.                 callfunc("dispell");
  260.             if($@CurrentEvent == 13){
  261.                 .register_aid[ .register_count ] = getcharid(3);
  262.                 .register_count++;
  263.                 delitem .candy_id, countitem( .candy_id );
  264.             }
  265.             fabre = 0;
  266.             warp .EnterMap$[$@CurrentEvent],.EnterX[$@CurrentEvent],.EnterY[$@CurrentEvent];
  267.         }
  268.     }
  269.     close;
  270.  
  271. //==================================
  272. OnRandomize:    //-- Randomize Event
  273. //==================================
  274.  
  275.     mes "[ Randomize Event ]";
  276.     mes "Chance of no event?";
  277.     input(.@j,0,100);
  278.     freeloop(1);
  279.     for(.@i = 0; .@i < 168; .@i++){
  280.         if(rand(100) < .@j){
  281.             $EVENT_CONTROL[.@i] = 0;
  282.             continue;
  283.         }
  284.         $EVENT_CONTROL[.@i] = rand(getarraysize(.EventName$));
  285.         if($EVENT_CONTROL[.@i] == .@lastevent)
  286.             $EVENT_CONTROL[.@i] = rand(getarraysize(.EventName$));
  287.         .@lastevent = $EVENT_CONTROL[.@i];
  288.     }
  289.     freeloop(0);
  290.     next;
  291.     mes "[ Randomize Event ]";
  292.     mes "Events set.";
  293.     close;
  294.  
  295. //==================================
  296. OnClear:    //-- Clear Event
  297. //==================================
  298.  
  299.     mes "[ Clear Event Queue ]";
  300.     mes "Wipe the event Queue?";
  301.     if(select("No:Yes")== 1)
  302.         close;
  303.     freeloop(1);
  304.     for(.@i = 0; .@i < 168; .@i++)
  305.         $EVENT_CONTROL[.@i] = 0;
  306.     freeloop(0);
  307.     next;
  308.     mes "[ Clear Event Queue ]";
  309.     mes "Events Cleared.";
  310.     close;
  311.  
  312. //==================================
  313. OnRemoveType:   //-- Remove Event Type
  314. //==================================
  315.  
  316.     mes "[ Remove Event Type ]";
  317.     Mes "Which Event Would you Like to remove?";
  318.     .@select = select(implode(.ColorName$,": ~ ")) - 1;
  319.     next;
  320.     mes "[ Remove Event Type ]";
  321.     mes "Are you sure you want to remove all "+.ColorName$[.@select]+"?";
  322.     if(select("No:Yes")== 1)
  323.         close;
  324.     freeloop(1);
  325.     for(.@i = 0; .@i < 168; .@i++){
  326.         if($EVENT_CONTROL[.@i] == .@select){
  327.             $EVENT_CONTROL[.@i] = 0;
  328.             continue;
  329.         }
  330.     }
  331.     freeloop(0);
  332.     next;
  333.     mes "[ Remove Event Type ]";
  334.     mes "All "+.ColorName$[.@select]+" Events Removed.";
  335.     close;
  336.  
  337. //==================================
  338. OnAddType:  //-- Add Event Type
  339. //==================================
  340.  
  341.     mes "[ Add Event Type ]";
  342.     Mes "Which Event Would you Like to add?";
  343.     .@select = select(implode(.ColorName$,": ~ ")) - 1;
  344.     next;
  345.     mes "[ Add Event Type ]";
  346.     mes "What chance would you like "+.ColorName$[.@select]+" to appear?";
  347.     input(.@j,0,100);
  348.     next;
  349.     mes "[ Add Event Type ]";
  350.     mes "Would you like "+.ColorName$[.@select]+" to overwrite other events?";
  351.     .@Over = select("No:Yes") - 1;
  352.     next;
  353.     mes "[ Add Event Type ]";
  354.     mes "Are you sure you want to add "+.ColorName$[.@select]+" at a "+.@j+"% chance"+((.@Over)?" overwriting other events":"")+"?";
  355.     if(select("No:Yes")== 1)
  356.         close;
  357.     freeloop(1);
  358.     for(.@i = 0; .@i < 168; .@i++){
  359.         if(rand(100) > .@j || (!.@Over && $EVENT_CONTROL[.@i]))
  360.             continue;
  361.         else $EVENT_CONTROL[.@i] = .@select;
  362.     }
  363.     freeloop(0);
  364.     next;
  365.     mes "[ Add Event Type ]";
  366.     mes .ColorName$[.@select]+" Added.";
  367.     close;
  368.  
  369. //==================================
  370. OnEndEvent: //-- End Event
  371. //==================================
  372.  
  373.     if($@CurrentEvent == 0){
  374.         mes "[ Event Management ]","Sorry no event is running.";
  375.         close;
  376.     }
  377.     if($@CurrentEvent < 0)
  378.         $@CurrentEvent *= -1;
  379.     switch($@CurrentEvent){
  380.         default:
  381.             mapwarp .EnterMap$[$@CurrentEvent],"prontera",155,172;
  382.         case 1: case 8: case 7:
  383.             break;
  384.         case 11:
  385.             killmonster .Map$[11],strnpcinfo(3)+"::OnShroomKilled";
  386.             break;
  387.         case 14:
  388.             killmonster .Map$[14],strnpcinfo(3)+"::OnKilled";
  389.             break;
  390.     }
  391.     Announce "Sorry a GM has stopped the "+ .EventName$[$@CurrentEvent] +".",bc_all|bc_blue;
  392.     $@CurrentEvent = 0;
  393.     delwaitingroom;
  394.     end;
  395.  
  396. //==================================
  397. OnRunEvent: //-- GM Run
  398. //==================================
  399.  
  400.     if($@CurrentEvent)
  401.         mes "[ Event Management ]","Sorry an event is already running";
  402.     else if(agitcheck() || agitcheck2())
  403.         mes "[ Event Management ]","Sorry cannot run event during woe";
  404.     else {
  405.         mes "[ Event Management ]","Pick an Event.";
  406.         .@i = select(implode(.ColorName$,": ~ ") +":Bug Test") - 1;
  407.     }
  408.     switch(.@i){
  409.         case 0:                         break;
  410.         case 1: donpcevent strnpcinfo(3)+"::OnEmpStart";    break;
  411.         case 2: donpcevent strnpcinfo(3)+"::OnZombieStart"; break;
  412.         case 3: donpcevent strnpcinfo(3)+"::OnDiceStart";   break;
  413.         case 4: donpcevent strnpcinfo(3)+"::OnPvPStart";    break;
  414.         case 5: donpcevent strnpcinfo(3)+"::OnMazeStart";   break;
  415.         case 6: donpcevent strnpcinfo(3)+"::OnPoringStart"; break;
  416.         case 7: donpcevent "Cluckers::OnEventStart";        break;
  417.         case 8: donpcevent strnpcinfo(3)+"::OnLuckyStart";  break;
  418.         case 9: donpcevent strnpcinfo(3)+"::OnBombStart";   break;
  419.         case 10: donpcevent strnpcinfo(3)+"::OnHuntStart";  break;
  420.         case 11: donpcevent strnpcinfo(3)+"::OnShroomStart";    break;
  421.         case 12: donpcevent strnpcinfo(3)+"::OnBaphoStart"; break;
  422.         case 13: donpcevent strnpcinfo(3)+"::OnCandyStart"; break;
  423.         case 14: donpcevent strnpcinfo(3)+"::OnCountStart"; break;
  424.         case 15: donpcevent strnpcinfo(3)+"::OnDisguiseStart";  break;
  425.         case 16: donpcevent strnpcinfo(3)+"::OnFabreStart"; break;
  426.         case 17: donpcevent strnpcinfo(3)+"::OnDevilStart"; break;
  427.  
  428.  
  429.         default: Func_Prizes(getcharid(0),"Bug Test");      break;
  430.     }
  431.     close;
  432.  
  433. //==================================
  434.         //-- Functions
  435. //==================================
  436.  
  437. function Func_Add_Time {
  438.     return ( ( (getarg(0) < 10)?"0":"" ) + getarg(0) + "." + ( (.StartTime < 10)?"0":"" ) + .StartTime );
  439. }
  440.  
  441. function Func_Countdown {
  442.     for(.@i = 5; .@i > 0; .@i--){
  443.         announce .EventName$[$@CurrentEvent]+" will begin in "+ callfunc("F_InsertPlural",.@i,"minute") +"!",bc_all|bc_blue;
  444.         Announce "Please type @joinevent to join",bc_all|bc_blue;
  445.         if(.TestMode)
  446.             sleep 6000;
  447.         else    sleep 60000;
  448.     }
  449.     Announce .EventName$[$@CurrentEvent] +" Has Begun!",bc_all|bc_blue;
  450.     return;
  451. }
  452.  
  453. function Func_Prizes {
  454.     announce "Congrats "+strcharinfo(0,getarg(0))+", a winner in the "+getarg(1)+" Event.",bc_all|bc_blue;
  455.     WonEvents++;
  456.     MWonEvents++;
  457.     if($@Mail){
  458.         mail getarg(0), "no-reply", getarg(1), "Congratulations!% You have won in the "+getarg(1)+" % % %[ Your reward is attached. ]", $@RewardZeny, $@RewardID, $@RewardQNT;
  459.         query_sql("UPDATE `mail` SET message = REPLACE(message,'%',CHAR(13)) WHERE send_name = 'no-reply'");
  460.     } else {
  461.         getitem $@RewardID,$@RewardQNT;
  462.         zeny += $@RewardZeny;
  463.     }
  464.     return;
  465. }
  466.  
  467. //==================================
  468. OnMinute00: //- Start Events
  469. //==================================
  470.  
  471.     if(gettime(DT_DAYOFMONTH) == 1 && gettime(DT_HOUR) == 0)
  472.         query_sql("DELETE FROM `char_reg_num` WHERE `key` = 'MWonEvents'");
  473.     if(agitcheck() || agitcheck2() || $@CurrentEvent) end;
  474.     sleep .StartTime * 60000 + 1000;
  475.     .@Time = gettime(4) * 24 + gettime(3);
  476.     switch($EVENT_CONTROL[.@Time]){
  477.         default:                        break;
  478.         case 1: donpcevent strnpcinfo(3)+"::OnEmpStart";    break;
  479.         case 2: donpcevent strnpcinfo(3)+"::OnZombieStart"; break;
  480.         case 3: donpcevent strnpcinfo(3)+"::OnDiceStart";   break;
  481.         case 4: donpcevent strnpcinfo(3)+"::OnPvPStart";    break;
  482.         case 5: donpcevent strnpcinfo(3)+"::OnMazeStart";   break;
  483.         case 6: donpcevent strnpcinfo(3)+"::OnPoringStart"; break;
  484.         case 7: donpcevent "Cluckers::OnEventStart";        break;
  485.         case 8: donpcevent strnpcinfo(3)+"::OnLuckyStart";  break;
  486.         case 9: donpcevent strnpcinfo(3)+"::OnBombStart";   break;
  487.         case 10: donpcevent strnpcinfo(3)+"::OnHuntStart";  break;
  488.         case 11: donpcevent strnpcinfo(3)+"::OnShroomStart";    break;
  489.         case 12: donpcevent strnpcinfo(3)+"::OnBaphoStart"; break;
  490.         case 13: donpcevent strnpcinfo(3)+"::OnCandyStart"; break;
  491.         case 14: donpcevent strnpcinfo(3)+"::OnCountStart"; break;
  492.         case 15: donpcevent strnpcinfo(3)+"::OnDisguiseStart";  break;
  493.         case 16: donpcevent strnpcinfo(3)+"::OnFabreStart"; break;
  494.         case 17: donpcevent strnpcinfo(3)+"::OnDevilStart"; break;
  495.     }
  496.     end;
  497.  
  498. //==================================
  499. OnEmpStart: //-- Emperium Event
  500. //==================================
  501.  
  502.     $@CurrentEvent = 1;
  503.     waitingroom "Emperium Event",99;
  504.     Func_Countdown;
  505.     $@CurrentEvent = -1;
  506.     $@BestTime = 2000000000;
  507.     $@BestCid = 0;
  508.     getwaitingroomusers strnpcinfo(3);
  509.     if(.@waitingroom_usercount >= .MinPlayers[1]){
  510.         freeloop(1);
  511.         for(.@i = 0; .@i < .@waitingroom_usercount; .@i++){
  512.             attachrid(.@waitingroom_users[.@i]);
  513.             callfunc("dispell");
  514.             if(instance_id())
  515.                 instance_destroy;
  516.             instance_create("Emp Breaker",IM_CHAR);
  517.             instance_enter("Emp Breaker");
  518.         }
  519.         freeloop(0);
  520.         delwaitingroom;
  521.         sleep 905000;   // 15 mins should be enough?
  522.     } else {
  523.         delwaitingroom;
  524.         announce .EventName$[1]+" Stopped! Not Enough Players Joined the "+.EventName$[1]+"!",bc_blue|bc_area|bc_npc;
  525.     }
  526.     if($@BestCid && $@CurrentEvent == -1)
  527.         Func_Prizes($@BestCid,.EventName$[1]);
  528.     $@CurrentEvent = 0;
  529.     end;
  530.  
  531. //==================================
  532. OnZombieStart:  //-- Zombie Event
  533. //==================================
  534.  
  535.     mapwarp .EnterMap$[2],"prontera",155,172;
  536.     $@CurrentEvent = 2;
  537.     Func_Countdown;
  538.     $@CurrentEvent = -2;
  539.     if(getmapusers(.EnterMap$[2]) < .MinPlayers[2]){
  540.         mapannounce .EnterMap$[2],.EventName$[2]+" Stopped! Not Enough Players Joined the "+.EventName$[2]+"!",bc_blue;
  541.         mapwarp .EnterMap$[2],"prontera",155,172;
  542.     } else {
  543.         mapannounce .EnterMap$[2],"Rules are simple, don't die before the end of round 10!",bc_blue;
  544.         sleep 25000;
  545.         for(.@wave = 1; .@wave < 11; .@wave++){
  546.             if(.@wave < 10)
  547.                 mapannounce .EnterMap$[2],"Wave "+.@wave+"!",bc_blue;
  548.             else    mapannounce .EnterMap$[2],"FINAL WAVE!",bc_blue;
  549.             sleep 1000;
  550.             for(.@i = 5; .@i > 0; .@i--){
  551.                 mapannounce .EnterMap$[2],""+.@i+"...",bc_blue;
  552.                 sleep 1000;
  553.             }
  554.             mapannounce .EnterMap$[2],"Begin Wave!",bc_blue;
  555.             for(.@i = 0; (.@i < getarraysize(.Zombies)); .@i += 2)
  556.                 monster .EnterMap$[2],0,0,"--ja--",.Zombies[.@i], .@wave * .Zombies[.@i+1],strnpcinfo(3)+"::OnKillZombie";
  557.             if(!getmapusers(.EnterMap$[2])){
  558.                 .@wave += 255;
  559.             } else {
  560.                 mapannounce .EnterMap$[2],"There "+((getmapusers(.EnterMap$[2])>1)?"are":"is")+" "+callfunc("F_InsertPlural",getmapusers(.EnterMap$[2]),"player")+" left",bc_blue;
  561.                 sleep 55000;
  562.             }
  563.         }
  564.         killmonsterall .EnterMap$[2];
  565.         if(getmapusers(.EnterMap$[2])){
  566.             addrid(5,0,.EnterMap$[2]);
  567.             if(HP > 0 && strcharinfo(3) == .EnterMap$[2])
  568.                 Func_Prizes(getcharid(0),.EventName$[2]);
  569.         }
  570.     }
  571.     $@CurrentEvent = 0;
  572.     mapwarp .EnterMap$[2],"prontera",155,172;
  573.     end;
  574.  
  575. OnKillZombie:
  576.     dispbottom "Don't do that",0xCC0000;
  577.     sc_start SC_DECREASEAGI,30000,10;
  578.     percentheal -20,-100;
  579.     heal -5,0;
  580.     end;
  581.  
  582. //==================================
  583. OnDiceStart:    //-- Dice Event
  584. //==================================
  585.  
  586.     mapwarp .EnterMap$[3],"prontera",155,172;
  587.     $@CurrentEvent = 3;
  588.     Func_Countdown;
  589.     $@CurrentEvent = -3;
  590.     if(getmapusers(.EnterMap$[3]) < .MinPlayers[3]){
  591.         mapannounce .EnterMap$[3],"Event Stopped! Not Enough Players Joined the "+.EventName$[3]+"!",bc_blue;
  592.         mapwarp .EnterMap$[3],"prontera",155,172;
  593.         $@CurrentEvent = 0;
  594.         end;
  595.     } else {
  596.         mapannounce .EnterMap$[3],"Ok the rules of "+.EventName$[3]+" are as follows",bc_blue;
  597.         sleep 5000;
  598.         mapannounce .EnterMap$[3],"Each player picks a box 1, 2, 3 or 4",bc_blue;
  599.         sleep 5000;
  600.         mapannounce .EnterMap$[3],"There will be a count down from 10 to 0",bc_blue;
  601.         sleep 5000;
  602.         mapannounce .EnterMap$[3],"at 0 a four sided die will be rolled",bc_blue;
  603.         sleep 5000;
  604.         mapannounce .EnterMap$[3],"Anyone in the box of the number rolled will be warped to town",bc_blue;
  605.         sleep 5000;
  606.         mapannounce .EnterMap$[3],"as well as anyone on the stairs or outside the box",bc_blue;
  607.         sleep 5000;
  608.         mapannounce .EnterMap$[3],"the number of players remaining will be announced",bc_blue;
  609.         sleep 5000;
  610.         mapannounce .EnterMap$[3],"this prosses will repeat till only one player remains",bc_blue;
  611.         sleep 5000;
  612.         mapannounce .EnterMap$[3],"take a few moments to fnd a box",bc_blue;
  613.         sleep 15000;
  614.         mapannounce .EnterMap$[3],"we will now begin, please find a box",bc_blue;
  615.         sleep 5000;
  616.         for(.@1234 = 0; .@1234 < 100; .@1234++){
  617.             for(.@i = 10; .@i > 0; .@i--){
  618.                 mapannounce .EnterMap$[3],.@i+"...",bc_blue;
  619.                 sleep 1000;
  620.             }
  621.             .@i = rand(1,4);
  622.             mapannounce .EnterMap$[3],"0... Good Bye Box "+.@i,bc_blue;
  623.             switch(.@i){
  624.                 case 1: areawarp .EnterMap$[3],183,81,191,59,"prontera",155,172;    break;
  625.                 case 2: areawarp .EnterMap$[3],195,81,203,59,"prontera",155,172;    break;
  626.                 case 3: areawarp .EnterMap$[3],207,81,215,59,"prontera",155,172;    break;
  627.                 case 4: areawarp .EnterMap$[3],219,81,227,59,"prontera",155,172;    break;
  628.             }
  629.             areawarp .EnterMap$[3],182,94,228,88,"prontera",155,172;    //Upper Area
  630.             areawarp .EnterMap$[3],185,87,188,82,"prontera",155,172;    //Stairs 1
  631.             areawarp .EnterMap$[3],197,87,200,82,"prontera",155,172;    //Stairs 2
  632.             areawarp .EnterMap$[3],209,87,212,82,"prontera",155,172;    //Stairs 3
  633.             areawarp .EnterMap$[3],221,87,224,82,"prontera",155,172;    //Stairs 4
  634.             if(getmapusers(.EnterMap$[3]) <= 1){
  635.                 .@1234 += 100;
  636.             } else {
  637.                 mapannounce .EnterMap$[3],"There are "+getmapusers(.EnterMap$[3])+" Players Remaining.",bc_blue;
  638.                 mapannounce .EnterMap$[3],"Take a few moments if you want to change boxes.",bc_blue;
  639.                 sleep 20000;
  640.             }
  641.         }
  642.         if(getmapusers(.EnterMap$[3])){
  643.             addrid(5,0,.EnterMap$[3]);
  644.             if(HP > 0 && strcharinfo(3) == .EnterMap$[3])
  645.                 Func_Prizes(getcharid(0),.EventName$[3]);
  646.         }
  647.         $@CurrentEvent = 0;
  648.         mapwarp .EnterMap$[3],"prontera",155,172;
  649.         end;
  650.     }
  651.  
  652. //==================================
  653. OnPvPStart: //-- PvP Event
  654. //==================================
  655.  
  656.     mapwarp .EnterMap$[4],"prontera",155,172;
  657.     pvpoff .EnterMap$[4];
  658.     $@CurrentEvent = 4;
  659.     Func_Countdown;
  660.     $@CurrentEvent = -4;
  661.     .@count = getmapusers(.EnterMap$[4]);
  662.     if(.@count < .MinPlayers[4]){
  663.         mapannounce .EnterMap$[4],"Event Stopped! Not Enough Players Joined the "+.EventName$[4]+"!",bc_blue;
  664.     } else {
  665.         mapannounce .EnterMap$[4],"The Rules of "+.EventName$[4]+" are as follows",bc_blue;
  666.         sleep 5000;
  667.         mapannounce .EnterMap$[4],"This is a Free for all Last man Standing",bc_blue;
  668.         sleep 5000;
  669.         mapannounce .EnterMap$[4],"There is a 20 min time limit in place if there is no clear winner within 20 mins the Event ends",bc_blue;
  670.         sleep 5000;
  671.         mapannounce .EnterMap$[4],"Everyone has 1 Life so Res, Ygg Leafs and Kazail don't work",bc_blue;
  672.         sleep 5000;
  673.         mapannounce .EnterMap$[4],"Spread out PVP will begin in 10...",bc_blue;
  674.         sleep 1000;
  675.         for(.@i = 9; .@i > 0; .@i--){
  676.             mapannounce .EnterMap$[4],.@i+"...",bc_blue;
  677.             sleep 1000;
  678.         }
  679.         pvpon .EnterMap$[4];
  680.         mapannounce .EnterMap$[4],"Begin",bc_blue;
  681.         sleep 5000;
  682.         freeloop(1);
  683.         for(.@i = 1; .@i <= 360; .@i++){
  684.             .@count[.@i] = getmapusers(.EnterMap$[4]);
  685.             if(.@count[.@i] != .@count[.@i - 1]){
  686.                 if(.@count[.@i] < 2){
  687.                     .@i += 10000;
  688.                 } else  mapannounce .EnterMap$[4],"There are "+getmapusers(.EnterMap$[4])+" Players Remaining",bc_blue;
  689.             }  
  690.             sleep 5000;
  691.         }
  692.         freeloop(0);   
  693.         if(getmapusers(.EnterMap$[4]) == 1){
  694.             addrid(5,0,.EnterMap$[4]);
  695.             if(HP > 0 && strcharinfo(3) == .EnterMap$[4])
  696.                 Func_Prizes(getcharid(0),.EventName$[4]);
  697.         } else  mapannounce .EnterMap$[4],"Time Is up",bc_blue;
  698.     }
  699.     pvpoff .EnterMap$[4];
  700.     $@CurrentEvent = 0;
  701.     mapwarp .EnterMap$[4],"prontera",155,172;
  702.     end;
  703.  
  704. //==================================
  705. OnMazeStart:    //-- Maze Event
  706. //==================================
  707.  
  708.     mapwarp .EnterMap$[5],"prontera",155,172;
  709.     enablenpc "mazeroadblock";
  710.     disablenpc "Event_Agent#Maze";
  711.     $@CurrentEvent = 5;
  712.     for ( .@i = 0; .@i < getarraysize( .bombflag ); .@i++ )
  713.         setmapflag .EnterMap$[5], .bombflag[.@i];
  714.     Func_Countdown;
  715.     $@CurrentEvent = -5;
  716.     sleep 9000;
  717.     if(getmapusers(.EnterMap$[5]) < .MinPlayers[5])
  718.         mapannounce .EnterMap$[5],"Event Stopped! Not Enough Players Joined the "+.EventName$[5]+"!",bc_blue;
  719.     else {
  720.         mapannounce .EnterMap$[5],"Rules are simple first to get to end of maze wins, so begin~",bc_blue;
  721.         disablenpc "mazeroadblock";
  722.         enablenpc "Event_Agent#Maze";
  723.         for(.@maze = 40; .@maze > 0; .@maze--){
  724.             if(getmapusers(.EnterMap$[5])<1) .@maze = 0;
  725.             mapannounce .EnterMap$[5],"There are "+(.@maze)+" Minuets Remaining",bc_blue;
  726.             sleep 60000;
  727.         }
  728.         mapannounce .EnterMap$[5],"Time Is up",bc_blue;
  729.     }
  730.     for ( .@i = 6; .@i < getarraysize( .bombflag ); .@i++ )
  731.         removemapflag .EnterMap$[5], .bombflag[.@i];
  732.     disablenpc "Event_Agent#Maze";
  733.     sleep 5000;
  734.     mapwarp .EnterMap$[5],"prontera",155,172;
  735.     $@CurrentEvent = 0;
  736.     end;
  737.  
  738. //==================================
  739. OnPoringStart:  //-- Poring Event
  740. //==================================
  741.  
  742.     mapwarp .EnterMap$[6],"prontera",155,172;
  743.     $@CurrentEvent = 6;
  744.     pvpoff .EnterMap$[6];
  745.     for ( .@i = 0; .@i < getarraysize( .bombflag ); .@i++ )
  746.         setmapflag .EnterMap$[6], .bombflag[.@i];
  747.     Func_Countdown;
  748.     $@CurrentEvent = -6;
  749.     if(getmapusers(.EnterMap$[6]) < .MinPlayers[6]){
  750.         mapannounce .EnterMap$[6],"Event Stopped! Not Enough Players Joined the "+.EventName$[6]+"!",bc_blue;
  751.     } else {
  752.         mapannounce .EnterMap$[6],"Rules are simple",bc_blue;
  753.         sleep 3000;
  754.         mapannounce .EnterMap$[6],"Kill the 'Poring' with the correct name, and get a warped to town with a prize.",bc_blue;
  755.         sleep 4000;
  756.         mapannounce .EnterMap$[6],"Kill the wrong one and get warped to town with nothing.",bc_blue;
  757.         sleep 4000;
  758.         mapannounce .EnterMap$[6],"There are 2 right poring and a 30 min timer.",bc_blue;
  759.         sleep 4000;
  760.         mapannounce .EnterMap$[6],"Event will now Begin~",bc_blue;
  761.         for(.@i = 0; .@i < getarraysize(.Poring$); .@i++)
  762.             monster .EnterMap$[6],0,0,.Poring$[.@i],1725,5,strnpcinfo(3)+"::OnKillWrong";
  763.         monster .EnterMap$[6],0,0,"--ja--",1725,.PoringSpawn,strnpcinfo(3)+"::OnKillRight";
  764.         .PoringSpawn = 2;
  765.         for(.@poring = 30; .@poring > 0; .@poring--){
  766.             if(getmapusers(.EnterMap$[6]) < 1) .@poring = 0;
  767.             mapannounce .EnterMap$[6],callfunc("F_InsertPlural",.@poring,"Minute")+" Remaining.",bc_blue;
  768.             sleep 60000;
  769.         }
  770.     }
  771.     if(!.PoringLeft){
  772.         mapannounce .EnterMap$[6],"Time Is up",bc_blue;
  773.         killmonsterall .EnterMap$[6];
  774.         for ( .@i = 6; .@i < getarraysize( .bombflag ); .@i++ )
  775.             removemapflag .EnterMap$[6], .bombflag[.@i];
  776.         $@CurrentEvent = 0;
  777.         sleep 5000;
  778.         mapwarp .EnterMap$[6],"prontera",155,172;
  779.     }
  780.     end;
  781.  
  782. OnKillWrong:
  783.     monster .EnterMap$[6],0,0,.Poring$[rand(1,getarraysize($@Mobs))],1725,1,strnpcinfo(3)+"::OnKillWrong";
  784.     warp "prontera",155,172;
  785.     end;
  786.  
  787. OnKillRight:
  788.     Func_Prizes(getcharid(0),.EventName$[6]);
  789.     warp "prontera",155,172;
  790.     .PoringLeft--;
  791.     if(!.PoringLeft){
  792.         mapannounce .EnterMap$[6],"Time Is up",bc_blue;
  793.         killmonsterall .EnterMap$[6];
  794.         for ( .@i = 6; .@i < getarraysize( .bombflag ); .@i++ )
  795.             removemapflag .EnterMap$[6], .bombflag[.@i];
  796.         $@CurrentEvent = 0;
  797.         sleep 5000;
  798.         mapwarp .EnterMap$[6],"prontera",155,172;
  799.     }
  800.     end;
  801.  
  802. //==================================
  803. OnLuckyStart:   //-- Lucky Event
  804. //==================================
  805.  
  806.     $@CurrentEvent = 8;
  807.     .luckywinner = 0;
  808.     waitingroom "Lucky Event",99;
  809.     Func_Countdown;
  810.     getwaitingroomusers strnpcinfo(3);
  811.     .luckywinner = .@waitingroom_users[rand(.@waitingroom_usercount)];
  812.     $@CurrentEvent = -8;
  813.     if(.@waitingroom_usercount >= .MinPlayers[8]){
  814.         attachrid(.luckywinner);
  815.         Func_Prizes(getcharid(0),.EventName$[8]);
  816.     } else  announce .EventName$[8]+" Stopped! Not Enough Players Joined the "+.EventName$[8]+"!",bc_blue|bc_area|bc_npc;
  817.     delwaitingroom;
  818.     $@CurrentEvent = 0;
  819.     .luckywinner = 0;
  820.     end;
  821.  
  822. //==================================
  823. OnBombStart:    //-- Bombring Event
  824. //==================================
  825.  
  826.     mapwarp .EnterMap$[9],"prontera",155,172;
  827.     $@CurrentEvent = 9;
  828.     Func_Countdown;
  829.     $@CurrentEvent = -9;
  830.     .@totalplayers = getmapusers(.EnterMap$[9]);
  831.     if(.@totalplayers < .MinPlayers[9]){
  832.         mapannounce .EnterMap$[9],"Event Stopped! Not Enough Players Joined the "+.EventName$[9]+"!",bc_blue;
  833.         mapwarp .EnterMap$[9],"prontera",155,172;
  834.     } else {
  835.         for ( .@i = 0; .@i < getarraysize( .bombflag ); .@i++ )
  836.             setmapflag .EnterMap$[9], .bombflag[.@i];
  837.         mapannounce .EnterMap$[9],"Okay listen up, this is how it works.",bc_blue;
  838.         sleep 2000;
  839.         mapannounce .EnterMap$[9],"Bombrings will run rampant in this area.",bc_blue;
  840.         sleep 2000;
  841.         mapannounce .EnterMap$[9],"and all of them will go booooooom!",bc_blue;
  842.         sleep 2000;
  843.         mapannounce .EnterMap$[9],"all you have to do is avoid them and stay alive :P",bc_blue;
  844.         sleep 2000;
  845.         mapannounce .EnterMap$[9],"This will run for 30 seconds for 5 total rounds.",bc_blue;
  846.         sleep 2000;
  847.         mapannounce .EnterMap$[9],"Sooooooooooo, ready or not here they come!!!",bc_blue;
  848.         sleep 10000;
  849.         for(.@wave = 1; .@wave <= .Bombwaves; .@wave++){
  850.             if(.@wave < .Bombwaves){
  851.                 mapannounce .EnterMap$[9],"Wave "+.@wave+"!",bc_blue;
  852.             } else  mapannounce .EnterMap$[9],"FIANL WAVE!",bc_blue;
  853.             if (.@wave * .@totalplayers < 60)
  854.                 areamonster .EnterMap$[9],48,334,71,357,"Run for you life!",1904,.@wave * .@totalplayers;
  855.             else    areamonster .EnterMap$[9],48,334,71,357,"Run for you life!",1904,60;
  856.             if(!getmapusers(.EnterMap$[9]))
  857.                 .@wave += 5;
  858.             else    sleep 1500 * .Bombwaves / .@wave;
  859.         }
  860.         sleep 10000;
  861.         if(getmapusers(.EnterMap$[9])){
  862.             addrid(5,0,.EnterMap$[9]);
  863.             if(HP > 0 && strcharinfo(3) == .EnterMap$[9])
  864.                 Func_Prizes(getcharid(0),.EventName$[9]);
  865.         }
  866.         for ( .@i = 6; .@i < getarraysize( .bombflag ); .@i++ )
  867.             removemapflag .EnterMap$[9], .bombflag[.@i];
  868.     }
  869.     $@CurrentEvent = 0;
  870.     mapwarp .EnterMap$[9],"prontera",155,172;
  871.     end;
  872.  
  873. //==================================
  874. OnHuntStart:    //-- Man Hunt Event
  875. //==================================
  876.  
  877.     mapwarp .EnterMap$[10],"prontera",155,172;
  878.     $@CurrentEvent = 10;
  879.     Func_Countdown;
  880.     $@CurrentEvent = -10;
  881.     if(getmapusers(.EnterMap$[10]) < .MinPlayers[10]){
  882.         mapannounce .EnterMap$[10],"Event Stopped! Not Enough Players Joined the "+.EventName$[10]+"!",bc_blue;
  883.     } else {
  884.         mapannounce .EnterMap$[10],"The goal is this event is to kill the target within 60 seconds.",bc_blue;
  885.         sleep 5000;
  886.         mapannounce .EnterMap$[10],"The one who managed to kill the target will gain a prize",bc_blue;
  887.         sleep 5000;
  888.         mapannounce .EnterMap$[10],"But if the target surivived, the target will gain the prize",bc_blue;
  889.         sleep 5000;
  890.         mapannounce .EnterMap$[10],"Man-Hunt Event start!",bc_blue;
  891.         for(.@round = 1; .@round <= 10; .@round++){
  892.             if(getmapusers(.EnterMap$[10]) < 3){
  893.                 mapannounce .EnterMap$[10],"Sorry there are no longer enough players for another round",bc_blue;
  894.             } else {
  895.                 if(.@round < 10)
  896.                 mapannounce .EnterMap$[10],"Next Round will begin in 10 seconds!",bc_blue;
  897.                 deletearray .@AID[0],getarraysize(.@AID);
  898.                 addrid(5,0,.EnterMap$[10]);
  899.                 .@AID[getarraysize(.@AID)] = getcharid(3);
  900.                 $@Target = rand(getarraysize(.@AID));
  901.                 sleep 10000;
  902.                 mapannounce .EnterMap$[10],"[Round "+.@round+"] Our target is "+rid2name($@Target)+"!",bc_blue;
  903.                 charcommand "killable "+rid2name($@Target);
  904.                 charcommand "size "+rid2name($@Target)+" 2";
  905.                 sleep 60000;
  906.                 if($@Target != -1){
  907.                     if(attachrid($@Target) && strcharinfo(3) == .EnterMap$[10])
  908.                         Func_Prizes(getcharid(0),.EventName$[10]);
  909.                 }
  910.                 charcommand "alive "+rid2name($@Target);
  911.                 charcommand "killable "+rid2name($@Target);
  912.                 charcommand "size "+rid2name($@Target)+" 0";
  913.             }
  914.         }
  915.     }
  916.     sleep 5000;
  917.     mapwarp .EnterMap$[10],"prontera",155,172;
  918.     $@CurrentEvent = 0;
  919.     end;
  920.  
  921. //==================================
  922. OnShroomStart:  //-- Mushroom Event
  923. //==================================
  924.  
  925.     .Map$ = .ShroomMaps$[rand(getarraysize(.ShroomMaps$))];
  926.     killmonster .Map$,strnpcinfo(3)+"::OnShroomKilled";
  927.     $@CurrentEvent = 11;
  928.     .EnterMap$[$@CurrentEvent] = .Map$;
  929.     Func_Countdown;
  930.     $@CurrentEvent = -11;
  931.     .@Spawn = .Spawn = max(1,rand(getusers(1) / 10));
  932.     if(1 > .Spawn) .@Spawn = .Spawn = 1;
  933.     monster .Map$,0,0,"Please don't kill me!",1084,.Spawn,strnpcinfo(3)+"::OnShroomKilled";
  934.     announce "Find the Mushroom : Total of "+.Spawn+" Mushrooms have been spawned in "+.Map$+"!",bc_blue;
  935.     sleep 60000 * 45;
  936.     if(.Spawn == .@Spawn) Announce .EventName$[11]+" Has Ended with No Winner!",bc_blue;
  937.     killmonster .Map$,strnpcinfo(3)+"::OnShroomKilled";
  938.     $@CurrentEvent = 0;
  939.     end;
  940.  
  941. OnShroomKilled:
  942.     if($@CurrentEvent == -11){
  943.         .Spawn--;
  944.         Func_Prizes(getcharid(0),.EventName$[11]);
  945.         if (.Spawn)
  946.             announce "[ "+strcharinfo(0)+" ] has killed a Mushroom. There are now "+.Spawn+" Mushroom(s) left.",bc_map|bc_blue;
  947.         else {
  948.             announce .EventName$[11]+" has ended. All the Mushrooms have been killed.",bc_blue;
  949.             $@CurrentEvent = 0;
  950.         }
  951.     }
  952.     end;
  953.  
  954. //==================================
  955. OnBaphoStart:   //-- Find the Baphomet
  956. //==================================
  957.  
  958.     .Map$ = .BaphoMaps$[rand(getarraysize(.BaphoMaps$))];
  959.     killmonster .Map$,strnpcinfo(3)+"::OnBaphoKilled";
  960.     $@CurrentEvent = 12;
  961.     .EnterMap$[$@CurrentEvent] = .Map$;
  962.     Func_Countdown;
  963.     $@CurrentEvent = -12;
  964.     .@Spawn = .Spawn = max(1,rand(getusers(1) / 10));
  965.     monster .Map$,0,0,"Please don't kill me!",1039,.Spawn,strnpcinfo(3)+"::OnBaphoKilled";
  966.     announce "Find the Baphomet: Total of "+.Spawn+" Baphomets have been spawned in "+.Map$+"!",bc_blue;
  967.     sleep 60000 * 45;
  968.     if(.Spawn == .@Spawn) Announce .EventName$[12]+" Has Ended with No Winner!",bc_blue;
  969.     killmonster .Map$,strnpcinfo(3)+"::OnBaphoKilled";
  970.     $@CurrentEvent = 0;
  971.     end;
  972.  
  973. OnBaphoKilled:
  974.     if($@CurrentEvent == -12){
  975.         .Spawn--;
  976.         Func_Prizes(getcharid(0),.EventName$[12]);
  977.         if (.Spawn)
  978.             announce "[ "+strcharinfo(0)+" ] has killed a Baphomet. There are now "+.Spawn+" Baphomet(s) left.",bc_map|bc_blue;
  979.         else {
  980.             announce .EventName$[-$@CurrentEvent]+" has ended. All the Baphomets have been killed.",bc_blue;
  981.             $@CurrentEvent = 0;
  982.         }
  983.     }
  984.     end;
  985.  
  986. //==================================
  987. OnCandyStart:   //-- Grab the Candy
  988. //==================================
  989.  
  990.     mapwarp .EnterMap$[13],"prontera",155,172;
  991.     $@CurrentEvent = 13;
  992.     Func_Countdown;
  993.     $@CurrentEvent = -13;
  994.     if(getmapusers(.EnterMap$[13]) < .MinPlayers[13]){
  995.         mapannounce .EnterMap$[13],"Event Stopped! Not Enough Players Joined the "+.EventName$[13]+"!",bc_blue;
  996.     } else {
  997.         sleep 3000;
  998.         mapannounce .EnterMap$[13],"The goal is this event is to pick up as many "+getitemname(.candy_id)+".",bc_blue;
  999.         sleep 1000;
  1000.         for ( .@i = 5; .@i >= 0; .@i-- ) {
  1001.             mapannounce .EnterMap$[13], "["+ .@i +"]", 0;
  1002.             sleep 1000;
  1003.         }
  1004.         .@drop_candy_amount = .register_count * 12; // drop the amount of candies equal to no. of participants x 12
  1005.         freeloop 1;
  1006.         while ( .@i < .@drop_candy_amount ) {
  1007.             while ( checkcell( .EnterMap$[13], .@x = rand(450), .@y = rand(450), cell_chknopass ) );
  1008.             makeitem .candy_id, 1, .EnterMap$[13], .@x, .@y;
  1009.             .@i++;
  1010.         }
  1011.         freeloop 0;
  1012.         sleep 60000;
  1013.         for ( .@i = 0; .@i < .register_count; .@i++ ) {
  1014.             if ( attachrid( .register_aid[.@i] ) ) {
  1015.                 .@amount = countitem( .candy_id );
  1016.                 if ( .@amount >= .@highest ) {
  1017.                     setd ".@count"+ .@amount +"["+ getarraysize( getd( ".@count"+ .@amount ) ) +"]", getcharid(3);
  1018.                     .@highest = .@amount;
  1019.                 }
  1020.                 delitem .candy_id, countitem( .candy_id );
  1021.             }
  1022.         }
  1023.         cleanmap .EnterMap$[13];
  1024.         if ( .@size = getarraysize( getd( ".@count"+ .@highest ) ) ) {
  1025.             for ( .@i = 0; .@i < .@size; .@i++ ) {
  1026.                 attachrid getd( ".@count"+ .@highest +"["+ .@i +"]" );
  1027.                 Func_Prizes(getcharid(0),.EventName$[13]);
  1028.             }
  1029.             mapannounce .EnterMap$[13], "Event end, there are "+ .@size +" player having most "+ getitemname( .candy_id ) +" ! "+ .@name$, 0;
  1030.         } else  mapannounce .EnterMap$[13], "Event end, nobody is a winner ... too bad", 0;
  1031.     }
  1032.     sleep 5000;
  1033.     mapwarp .EnterMap$[13],"prontera",155,172;
  1034.     deletearray .register_aid;
  1035.     .register_count = 0;
  1036.     $@CurrentEvent = 0;
  1037.     end;
  1038.  
  1039. //==================================
  1040. OnCountStart:   //-- Monsters Counting
  1041. //==================================
  1042.  
  1043.     killmonster .EnterMap$[14],strnpcinfo(3)+"::OnKilled";
  1044.     $@CurrentEvent = 14;
  1045.     Func_Countdown;
  1046.     .Round = .CountRound;
  1047.  
  1048. OnStartGame:
  1049.     deletearray .MobCount[0],getarraysize( .MobCount );
  1050.     for( .@x = .CountXY[0]; .@x <= .CountXY[2]; .@x++ ){
  1051.         for( .@y = .CountXY[1]; .@y <= .CountXY[3]; .@y++ ){
  1052.             .@Summon = rand( getarraysize( .CountMonster ) );
  1053.             monster .EnterMap$[14],.@x,.@y,"Count Me",.CountMonster[.@Summon],1,strnpcinfo(3)+"::OnKilled";
  1054.             .GID = $@mobid;
  1055.             setunitdata .GID,UMOB_DMGIMMUNE,1;
  1056.             .MobCount[.@Summon] = .MobCount[.@Summon] + 1;
  1057.             sleep 1;
  1058.         }
  1059.     }
  1060.     .@Target = rand( getarraysize( .CountMonster ) );
  1061.     deletepset 1;
  1062.     defpattern 1, "([^:]+): (\\|\\d{2})?"+.MobCount[.@Target]+ ".$", "OnRight";
  1063.     defpattern 1,"([^:]+):.*.*", "OnSpam";
  1064.     activatepset 1;
  1065.     delwaitingroom;
  1066.     waitingroom getmonsterinfo( .CountMonster[.@Target],0 ),0;
  1067.     npctalk "Count for the Targeted Monster's Amount to Win the Game.";
  1068.     $@CurrentEvent = -14;
  1069.     end;
  1070.  
  1071. OnSpammed:
  1072.     @Spam = 0;
  1073.     end;
  1074.  
  1075. OnSpam:
  1076.     if( getgmlevel() > 90 ) end;
  1077.     @Spam++;
  1078.     if( @Spam >= .Spam ){   // 3 Continuos Answer will trigger...
  1079.         @SpamDelay = gettimetick(2) + .Spam;
  1080.         dispbottom "SPAM Detected, your answer within next "+.Spam+" Seconds will be Ignored.";
  1081.     }
  1082.     deltimer strnpcinfo(3)+"::OnSpammed";
  1083.     addtimer ( .Spam * 1000 ),strnpcinfo(3)+"::OnSpammed";
  1084.     end;
  1085.  
  1086. OnRight:
  1087.     @Spam = 0;
  1088.     deltimer strnpcinfo(3)+"::OnSpammed";
  1089.     if( $@CurrentEvent != -14 ){
  1090.         message strcharinfo(0),"Sorry, there is no Event right now.";
  1091.     } else if( @SpamDelay > gettimetick(2) ){
  1092.         message strcharinfo(0),"SPAM Protection : Remain "+( @SpamDelay - gettimetick(2) )+" seconds.";
  1093.     } else if( getcharid(0) == .Winner[0] && gettimetick(2) < .Winner[1] ){
  1094.         message strcharinfo(0),"Sorry, Winner Time Penalty : Remain "+( .Winner[1] - gettimetick(2) )+" seconds.";
  1095.     } else {
  1096.         delwaitingroom;
  1097.         $@CurrentEvent = 14;
  1098.         .Round--;
  1099.         .Winner[0] = getcharid(0);
  1100.         .Winner[1] = gettimetick(2) + .Delay;
  1101.         deletepset 1;
  1102.         Func_Prizes(getcharid(0),.EventName$[14]);
  1103.         killmonster .EnterMap$[14],strnpcinfo(3)+"::OnKilled";
  1104.         if( .Round )
  1105.             donpcevent strnpcinfo(3)+"::OnStartGame";
  1106.         else    $@CurrentEvent = 0;
  1107.  
  1108.     }
  1109.     end;
  1110.  
  1111. OnKilled:
  1112.     end;
  1113.  
  1114. //==================================
  1115. OnDisguiseStart: //-- Disguise
  1116. //==================================
  1117.  
  1118.     mapwarp .EnterMap$[15],"prontera",155,172;
  1119.     $@CurrentEvent = 15;
  1120.     Func_Countdown;
  1121.     $@CurrentEvent = -15;
  1122.     .Round = .DisguiseRound;
  1123.     sleep 9000;
  1124.     if(getmapusers(.EnterMap$[15]) < .MinPlayers[15])
  1125.         mapannounce .EnterMap$[15],"Event Stopped! Not Enough Players Joined the "+.EventName$[15]+"!",bc_blue;
  1126.     else {
  1127.         enablenpc "Disguise Event";
  1128.         sleep 100;
  1129.         donpcevent "Disguise Event::OnStart";
  1130.         for(.@dis = 30; .@dis > 0; .@dis--){
  1131.             if(!getmapusers(.EnterMap$[15]))
  1132.                 .@dis = 0;
  1133.             // mapannounce .EnterMap$[15],"There are "+(.@dis)+" Minuets Remaining",bc_blue;
  1134.             sleep 60000;
  1135.         }
  1136.         mapannounce .EnterMap$[15],"Time Is up",bc_blue;
  1137.     }
  1138.     disablenpc "Disguise Event";
  1139.     sleep 5000;
  1140.     mapwarp .EnterMap$[15],"prontera",155,172;
  1141.     $@CurrentEvent = 0;
  1142.     end;
  1143.  
  1144. //==================================
  1145. OnFabreStart:   //-- Fabre Event
  1146. //==================================
  1147.  
  1148.     killmonsterall .EnterMap$[16];
  1149.     query_sql("DELETE FROM `char_reg_num` WHERE `key` = 'fabre'");
  1150.     mapwarp .EnterMap$[16],"prontera",155,172;
  1151.     $@CurrentEvent = 16;
  1152.     pvpoff .EnterMap$[16];
  1153.     for ( .@i = 0; .@i < getarraysize( .bombflag ); .@i++ )
  1154.         setmapflag .EnterMap$[16], .bombflag[.@i];
  1155.     Func_Countdown;
  1156.     $@CurrentEvent = -16;
  1157.     if(getmapusers(.EnterMap$[16]) < .MinPlayers[16]){
  1158.         mapannounce .EnterMap$[16],"Event Stopped! Not Enough Players Joined the "+.EventName$[16]+"!",bc_blue;
  1159.         for ( .@i = 6; .@i < getarraysize( .bombflag ); .@i++ )
  1160.             removemapflag .EnterMap$[16], .bombflag[.@i];
  1161.         $@CurrentEvent = 0;
  1162.     } else {
  1163.         mapannounce .EnterMap$[16],"Rules are simple",bc_blue;
  1164.         sleep 5000;
  1165.         mapannounce .EnterMap$[16],"Kill the monsters to recive points.",bc_blue;
  1166.         sleep 5000;
  1167.         mapannounce .EnterMap$[16],"Player with the most points at the end wins.",bc_blue;
  1168.         sleep 5000;
  1169.         mapannounce .EnterMap$[16],"Event will now Begin~",bc_blue;
  1170.         monster .EnterMap$[16],0,0,"1 Point",1007,60,strnpcinfo(3)+"::OnKill_1";
  1171.         monster .EnterMap$[16],0,0,"10 Point",1008,30,strnpcinfo(3)+"::OnKill_2";
  1172.         monster .EnterMap$[16],0,0,"-20 Point",1002,50,strnpcinfo(3)+"::OnKill_3";
  1173.         for(.@fabre = 5; .@fabre > 0; .@fabre--){
  1174.             if(getmapusers(.EnterMap$[16]) < 1) .@poring = 0;
  1175.             mapannounce .EnterMap$[16],callfunc("F_InsertPlural",.@fabre,"Minute")+" Remaining.",bc_blue;
  1176.             sleep 60000;
  1177.         }
  1178.         killmonsterall .EnterMap$[16];
  1179.         for ( .@i = 6; .@i < getarraysize( .bombflag ); .@i++ )
  1180.             removemapflag .EnterMap$[16], .bombflag[.@i];
  1181.         $@CurrentEvent = 0;
  1182.         query_sql("SELECT `char_reg_num`.`value`,`char`.`name`,`char`.`char_id` FROM `char` INNER JOIN `char_reg_num` ON `char_reg_num`.`char_id`=`char`.`char_id` WHERE `char_reg_num`.`key`='fabre' ORDER BY `char_reg_num`.`value` DESC LIMIT 50",.@value,.@name$,.@cid);
  1183.         .@size = getarraysize( .@cid );
  1184.         for ( .@i = 0; .@i < .@size; .@i++ ){
  1185.             if(.@value == .@value[.@i])
  1186.                 Func_Prizes(.@cid[.@i],.EventName$[16]);
  1187.             else    break;
  1188.         }
  1189.         mapannounce .EnterMap$[16],.EventName$[16]+" ended with a total  of "+(.@i+1)+" winners.",bc_all;
  1190.     }
  1191.     sleep 5000;
  1192.     mapwarp .EnterMap$[16],"prontera",155,172;
  1193.     end;
  1194.        
  1195. OnKill_1:
  1196.     monster .EnterMap$[16],0,0,"1 Point",1007,1,strnpcinfo(3)+"::OnKill_1";
  1197.     fabre += 1;
  1198.     end;
  1199.        
  1200. OnKill_2:
  1201.     monster .EnterMap$[16],0,0,"10 Points",1008,1,strnpcinfo(3)+"::OnKill_2";
  1202.     fabre += 10;
  1203.     end;
  1204.        
  1205. OnKill_3:
  1206.     monster .EnterMap$[16],0,0,"-20 Points",1002,1,strnpcinfo(3)+"::OnKill_3";
  1207.     fabre -= 20;
  1208.     end;
  1209.  
  1210. //==================================
  1211. OnDevilStart:   //-- Devil Square
  1212. //==================================
  1213.  
  1214.     mapwarp .EnterMap$[17],"prontera",155,172;
  1215.     for ( .@i = 0; .@i < getarraysize( .devilflag ); .@i++ )
  1216.         setmapflag .EnterMap$[17], .devilflag[.@i];
  1217.     $@CurrentEvent = 17;
  1218.     Func_Countdown;
  1219.     $@CurrentEvent = -17;
  1220.     $MVPdefeat = 0;
  1221.     killmonsterall .EnterMap$[17];
  1222.     sleep 9000;
  1223.     if(getmapusers(.EnterMap$[17]) < .MinPlayers[17])
  1224.         mapannounce .EnterMap$[17],"Event Stopped! Not Enough Players Joined the "+.EventName$[17]+"!",bc_blue;
  1225.     else {
  1226.         mapannounce .EnterMap$[17],"[Devil Square]: You will encounter 3 waves of monsters. The monsters will grow stronger with each wave.",bc_blue;
  1227.         mapannounce .EnterMap$[17],"[Devil Square]: If you defeat all the enemies, you will be given the opportunity to open 10 Treasure Chests with items, equipment, and rare cards inside!",bc_blue;
  1228.         mapannounce .EnterMap$[17],"[Devil Square]: Event has started!",bc_blue;
  1229.         .round = 1;
  1230.         .mob =  0;
  1231.         set .monsterset, query_sql("SELECT id, iname, hp FROM `mob_db` where LV <= 70 and LV >= 60 and hp < 99999999 and MEXP = 0 and not iName='Treasure Chest' ORDER BY RAND() LIMIT 100", .monsterid, .monstername$, .monsterhp);
  1232.         for (.@x = 0; .@x < getmapusers(.EnterMap$[17]); .@x++){
  1233.             .monstercount = 3;
  1234.             for (.@y = 0; .@y < .monstercount; .@y++) {
  1235.                 .monster = rand(0,.monsterset-1);
  1236.                 monster .EnterMap$[17],0,0,"[Devil Square]: "+.monstername$[.monster],.monsterid[.monster],.monstercount,strnpcinfo(3)+"::OnDevilDead";  
  1237.                 .mob += .monstercount;
  1238.             }
  1239.         }
  1240.         for(.devil = 50; .devil > 0; .devil--){
  1241.             if(getmapusers(.EnterMap$[17]) < 1)
  1242.                 .devil = 0;
  1243.             mapannounce .EnterMap$[17],"There are "+(.devil)+" Minuets Remaining",bc_blue;
  1244.             sleep 60000;
  1245.         }
  1246.         mapannounce .EnterMap$[17],"Time Is up",bc_blue;
  1247.     }
  1248.     .round = .mob = $@CurrentEvent = 0;
  1249.     killmonsterall .EnterMap$[17];
  1250.     for ( .@i = 6; .@i < getarraysize( .devilflag ); .@i++ )
  1251.         removemapflag .EnterMap$[17], .devilflag[.@i];
  1252.     sleep 5000;
  1253.     mapwarp .EnterMap$[17],"prontera",155,172;
  1254.     end;
  1255.  
  1256. OnDevilDead:
  1257.     if(.round > 3){
  1258.         $MVPDefeat += 5;
  1259.         if (rand(1,.2 + $MVPDefeat) == 1) {
  1260.             mapannounce .EnterMap$[17],"[Devil Square]: It's not over yet! Another MVP Has entered the realm!!", bc_map;
  1261.             set.mob, 0;
  1262.             if (getmapusers(.EnterMap$[17]) <= 5)
  1263.                 set .monsterset, query_sql("SELECT id, iname FROM `mob_db` where LV <= 99 and LV >= 1 and MEXP>1", .monsterid, .monstername$);
  1264.             else    set .monsterset, query_sql("SELECT id, iname FROM `mob_db` where LV <= 99 and LV >= 85 and MEXP>1", .monsterid, .monstername$);
  1265.             .monstercount = 1;
  1266.             .monster = rand(0,.monsterset-1);
  1267.             monster .EnterMap$[17],0,0,"[Devil Square]: "+.monstername$[.monster],.monsterid[.monster],1,strnpcinfo(3)+"::OnDevilDead";
  1268.         } else {
  1269.             mapannounce .EnterMap$[17],"The Devil Square has been eradicated!", bc_map;
  1270.             mapannounce .EnterMap$[17],"Treasure chests have appeared across the map!", bc_map;
  1271.             .round++;
  1272.             set .monsterset, query_sql("SELECT id FROM `mob_db`  where iName='Treasure Chest';", .monsterid);
  1273.             for(.@x = 0; .@x < getmapusers(.EnterMap$[17]); .@x++){
  1274.                 monster .EnterMap$[17],0,0,"[Devil Square]: "+.monstername$[.monster],.monsterid[.monster],1,strnpcinfo(3)+"::OnTreasureDead";   
  1275.                 .mob++;
  1276.             }
  1277.         }
  1278.         end;
  1279.     } else {
  1280.         .mob--;
  1281.         if ( .mob <= 10 && .mob >= 1)
  1282.             announce "Devil Square : "+ .mob +" monsters remaining in round "+.round+".", bc_map;
  1283.         else if ( .mob <= 0 ) {
  1284.             if(.round == 3){
  1285.                 mapannounce .EnterMap$[17],"[Devil Square]: Watchout!! An MVP Has entered the realm!!", bc_map;
  1286.                 set.mob, 0;
  1287.                 if (getmapusers(.EnterMap$[17]) <= 5)
  1288.                     set .monsterset, query_sql("SELECT id, iname FROM `mob_db` where LV <= 99 and LV >= 1 and MEXP>1", .monsterid, .monstername$);
  1289.                 else    set .monsterset, query_sql("SELECT id, iname FROM `mob_db` where LV <= 99 and LV >= 85 and MEXP>1", .monsterid, .monstername$);
  1290.                 .monstercount = 1;
  1291.                 .monster = rand(0,.monsterset-1);
  1292.                 monster .EnterMap$[17],0,0,"[Devil Square]: "+.monstername$[.monster],.monsterid[.monster],1,strnpcinfo(3)+"::OnDevilDead";
  1293.                 .round++;
  1294.             } else {
  1295.                 mapannounce .EnterMap$[17],"[Devil Square]: Entering round "+(.round + 1)+" in 30 seconds", bc_map;
  1296.                 sleep 20000;
  1297.                 mapannounce .EnterMap$[17],"[Devil Square]: Entering round "+(.round + 1)+" in 10 seconds.", bc_map;
  1298.                 sleep 5000;
  1299.                 mapannounce .EnterMap$[17],"[Devil Square]: Entering round "+(.round + 1)+" in 5 seconds.", bc_map;
  1300.                 sleep 5000;        
  1301.                 .round++;
  1302.                 .mob = 0;
  1303.                 .@lvmin = 65 + .round * 5;
  1304.                 .@lvmax = .@lvmin + 5;
  1305.                 set .monsterset, query_sql("SELECT id, iname, hp FROM `mob_db` where LV <= "+.@lvmax+" and LV >= "+.@lvmin+" and hp < 99999999 and MEXP = 0 and not iName='Treasure Chest' ORDER BY RAND() LIMIT 100", .monsterid, .monstername$, .monsterhp);
  1306.                 for(.@x = 0; .@x < getmapusers(.EnterMap$[17]); .@x++){
  1307.                     .monstercount = 3;
  1308.                     for(.@y = 0; .@y < .monstercount; .@y++) {
  1309.                         .monster = rand(0,.monsterset-1);
  1310.                         monster .EnterMap$[17],0,0,"[Devil Square]: "+.monstername$[.monster],.monsterid[.monster],.monstercount,strnpcinfo(3)+"::OnDevilDead";  
  1311.                         .mob += .monstercount;
  1312.                     }
  1313.                 }
  1314.             }
  1315.         }
  1316.     }
  1317.     end;
  1318.  
  1319. OnTreasureDead:
  1320.     .mob--;
  1321.     if (.mob < 1){
  1322.         .round = .mob = .devil = 0;
  1323.         addrid(5,0,.EnterMap$[17]);
  1324.         Func_Prizes(getcharid(0),.EventName$[17]);
  1325.         sleep2 10000;
  1326.         warp "prontera",155,172;
  1327.     }
  1328.     end;
  1329.  
  1330. //==================================
  1331. OnPCLogOutEvent:    //-- On Logout
  1332. //==================================
  1333.  
  1334.     if($@CurrentEvent == -10 && getcharid(3) == $@Target){
  1335.         mapannounce .EnterMap$[10],"The target has logged out of this game. This round will be nulled.",bc_blue;
  1336.         $@Target = -1;
  1337.     } else if($@CurrentEvent == -13 || $@CurrentEvent == 13){
  1338.         for(.@i = 0; .@i < .register_count; .@i++)
  1339.             if(getcharid(3) == .register_aid[.@i])
  1340.                 deletearray .register_aid[.@i], 1;
  1341.     }
  1342.     end;
  1343.  
  1344. //==================================
  1345. OnPCDieEvent:   //-- On player death
  1346. //==================================
  1347.  
  1348.     if(($@CurrentEvent == -4 && strcharinfo(3) == .EnterMap$[4]) || ($@CurrentEvent == -2 && strcharinfo(3) == .EnterMap$[2]))
  1349.         warp "prontera",155,172;
  1350.     if($@CurrentEvent == -10 && getcharid(3) == $@Target ){
  1351.         Func_Prizes(killerrid,.EventName$[10]);
  1352.         $@Target = -1;
  1353.     }
  1354.     end;
  1355.  
  1356. //==================================
  1357. OnInit:     //-- Config
  1358. //==================================
  1359.  
  1360. // -------------------
  1361. //  Rewards
  1362. // -------------------
  1363.  
  1364.     // Recive rewards via
  1365.     // [0] = Direct to inv
  1366.     // [1] = Mail / RoDex
  1367.     $@Mail = 1;
  1368.  
  1369.     // Does not support multiple item rewards
  1370.     // Rewards are Mailed to winners
  1371.     // Ro Dex Supports 5 Items
  1372.     // Old Mail & Direct DO NOT support multiple items
  1373.     setarray $@RewardID ,33001,0,0,0,0;
  1374.     setarray $@RewardQNT    ,    1,0,0,0,0;
  1375.     $@RewardZeny = 10000;
  1376.  
  1377.     // Not Adding Card / Random Bonus Support Yet, bug me if you really want it.
  1378.  
  1379. // -------------------
  1380. //  Ranking
  1381. // -------------------
  1382.  
  1383.     // Enable Event Ranking
  1384.     // Bitwise
  1385.     // [1] = Liftime
  1386.     // [2] = Mothly
  1387.     // [3] = Both
  1388.     $@EventRanking = 3;
  1389.  
  1390. // -------------------
  1391. //  At Commands
  1392. // -------------------
  1393.  
  1394.     // Run Event Command to manually run event
  1395.     bindatcmd("runevent",strnpcinfo(3)+"::OnRunEvent",60,99);
  1396.  
  1397.     // End Event Command to manually end event
  1398.     bindatcmd("stopevent",strnpcinfo(3)+"::OnEndEvent",60,99);
  1399.  
  1400.     // Randomize Event Command to randomize event scedule
  1401.     bindatcmd("randevent",strnpcinfo(3)+"::OnRandomize",60,99);
  1402.  
  1403.     // Clear Event Command to wipe event scedule
  1404.     bindatcmd("wipeevent",strnpcinfo(3)+"::OnClear",60,99);
  1405.  
  1406.     // Remove Event Command to wipe event scedule
  1407.     bindatcmd("removeevent",strnpcinfo(3)+"::OnRemoveType",60,99);
  1408.  
  1409.     // Add Event Command to wipe event scedule
  1410.     bindatcmd("addevent",strnpcinfo(3)+"::OnRemoveType",60,99);
  1411.  
  1412.     // Join Event Command
  1413.     bindatcmd("joinevent",strnpcinfo(3)+"::OnJoinEvent",0,99);
  1414.  
  1415. // -------------------
  1416. //  Event Data
  1417. // -------------------
  1418.  
  1419.     // Gm Level to access GM Menus
  1420.     .GMAccess = 99;
  1421.  
  1422.     // How Many Mins after the hour till event starts
  1423.     // Don't forget 5 mins for Func_Countdown
  1424.     .StartTime = 25;
  1425.  
  1426.     // Event Names
  1427.     setarray .EventName$[1],
  1428.         "Emperium Event","Zombie Survival","Dice Event","PvP Event","Maze Event",
  1429.         "Find The Poring","Cluckers","Lucky Pick","Bombring Event","Manhunt",
  1430.         "Find The Mushroom","Find The Baphomet","Grab the Candy!","Monsters Counting","Disguise Event",
  1431.         "Fabre Event","Devil Square";
  1432.  
  1433.     // Colored Event Names
  1434.     setarray .ColorName$[1],
  1435.         "^00CCCC"+.EventName$[1]+"^000000", "^CC00CC"+.EventName$[2]+"^000000", "^00CC00"+.EventName$[3]+"^000000", "^CC0000"+.EventName$[4]+"^000000", "^00CC00"+.EventName$[5]+"^000000",
  1436.         "^00CCCC"+.EventName$[6]+"^000000", "^00CC00"+.EventName$[7]+"^000000", "^00CC00"+.EventName$[8]+"^000000", "^CC00CC"+.EventName$[9]+"^000000", "^CC0000"+.EventName$[10]+"^000000",
  1437.         "^00CCCC"+.EventName$[11]+"^000000",    "^00CCCC"+.EventName$[12]+"^000000",    "^00CC00"+.EventName$[13]+"^000000",    "^00CC00"+.EventName$[14]+"^000000",    "^00CC00"+.EventName$[15]+"^000000",
  1438.         "^00CCCC"+.EventName$[16]+"^000000",    "^CC00CC"+.EventName$[17]+"^000000";
  1439.  
  1440.     // Min Players
  1441.     //  Cluckers, Mushroom & Monter Counting don't check
  1442.     setarray .MinPlayers[1],
  1443.         2,1,2,3,2,
  1444.         1,0,3,1,99,
  1445.         0,0,2,0,3,
  1446.         3,3;
  1447.  
  1448.     // @JoinEvent warp points
  1449.     setarray .EnterMap$[1],
  1450.         "prontera","1@zombie","quiz_01","guild_vs2","maze",
  1451.         "guild_vs2","prontera","prontera","quiz_02","guild_vs2",//"pvp_n_1-5" needs a fix
  1452.         "prontera","prontera","guild_vs2","prontera","guild_vs2",
  1453.         "guild_vs2","guild_vs2";
  1454.  
  1455.     setarray .EnterX[1],
  1456.         161,  0,205,  0,371,
  1457.           0,155,161, 59,  0,
  1458.           0,  0,  0,156,  0,
  1459.           0, 50;
  1460.  
  1461.     setarray .EnterY[1],
  1462.         168,  0, 92,  0,143,
  1463.           0,227,168,345,  0,
  1464.           0,  0,  0,164,  0,
  1465.           0, 50;
  1466.  
  1467.     // Zombies Spawned per Wave
  1468.     // MobID1,Quantity1{,MobID2,Quantity2{,{....}}
  1469.     //  Quantity is multiplied by number of waves
  1470.     //  so 10 will become 100 in last wave
  1471.     //  and mobs are not killed between
  1472.     //  so 10 will have 550 spawned in last wave
  1473.     setarray .Zombies,1394,10,1423,5,1298,1;
  1474.  
  1475.     // Fake Poring Names
  1476.     setarray .Poring$,"Porjng","P0ring","Porlng","Porimg","Porinq",
  1477.                 "Poporing","This One","Right","Kill Me","Poning",
  1478.                 "qoring","Pooring","Pouring","Polling","~Poring~",
  1479.                 "Winner","Prize","Porirg","Paring","Notice Me Senpai",
  1480.                 "Pickle","Puring","Ponirg","Poning","P o r i n g";
  1481.  
  1482.     // Number of poring to Spawn in Find the poring Event
  1483.     .PoringSpawn = 2;
  1484.  
  1485.     // Poring and Bombring and Grab the Candy Mapflags
  1486.     setarray .bombflag,mf_nosave,mf_nowarp,mf_nowarpto,mf_nomemo,mf_noteleport,mf_noreturn,mf_nobranch,mf_nomobloot,mf_nomvploot,mf_noskill,mf_noitemconsumption,mf_nodrop,mf_notrade,mf_nopenalty;
  1487.  
  1488.  
  1489.     // Devil Square Mapflags
  1490.     setarray .devilflag,mf_nosave,mf_nowarp,mf_nowarpto,mf_nomemo,mf_noteleport,mf_noreturn,mf_notrade,mf_nopenalty;
  1491.  
  1492.     // Mushroom Event Possible Maps
  1493.     setarray .ShroomMaps$,"izlude","geffen","morocc","prontera";
  1494.  
  1495.     // Baphomet Event Possible Maps
  1496.     setarray .BaphoMaps$,"splendide","hugel","yuno","comodo","xmas","aldebaran","izlude","payon","geffen","morocc","prontera";
  1497.  
  1498.     // Number of waves in Bombporing Event
  1499.     .Bombwaves = 5;
  1500.  
  1501.     // Item ID used in the Grab the Candy! event
  1502.     // Best to use a custom ID
  1503.     .candy_id = 529;
  1504.  
  1505.     // Monster Counting
  1506.     setarray .CountMonster,1084,1085;
  1507.  
  1508.     // Number of rounds for Monster Counting
  1509.     .CountRound = 1;
  1510.    
  1511.     // Monster Coutning Mob Spawn area
  1512.     setarray .CountXY,152,160,159,167;
  1513.  
  1514.     // Winners Answer Delay for Monster Counting
  1515.     set .Delay,10;
  1516.  
  1517.     // Spam Prevention for Monster Counting
  1518.     set .Spam,3;
  1519.  
  1520.     // Test mode, Shortens Coutdown timer to 30 seconds for faster testing
  1521.     // [0] = Off
  1522.     // [1] = On
  1523.     .TestMode = 0;
  1524.    
  1525. // -------------------
  1526. //  Don't Touch Ever
  1527. // -------------------
  1528.    
  1529.     disablenpc "Disguise Event";
  1530.     $@CurrentEvent = 0;
  1531.     if( .StartTime > 59 ) .StartTime = 59;
  1532.     if( .StartTime < 0 ) .StartTime = 0;
  1533.     setarray .Days$[0],"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday";
  1534.     end;
  1535. }
  1536.  
  1537. //==================================
  1538. //-- Emperium Event Extras
  1539. //==================================
  1540.  
  1541. sword_1-1,216,208,4 script  Emp_Break   -1,{
  1542. OnBreak:
  1543.     stopnpctimer;
  1544.     .@Time = getnpctimer(0);
  1545.     .@m = .@Time / 60000;
  1546.     .@s = (.@Time - .@m * 60000) / 1000;
  1547.     .@ms = .@Time % 1000;
  1548.     if(.@Time < BestTime || !BestTime)
  1549.         BestTime = .@Time;
  1550.     if(.@Time < $@BestTime){
  1551.         $@BestTime = .@Time;
  1552.         $@BestCid = getcharid(0);
  1553.         announce "[Emperium Event]: "+strcharinfo(0)+" now holds the top time of "+((.@m)?callfunc("F_InsertPlural",.@i,"minute")+" ":"")+""+((.@s)?.@s+""+((.@ms)?"."+.@ms:"")+" seconds":"")+".",bc_all|bc_blue;
  1554.     }
  1555.     mapannounce .Map$,"You have a "+((.@Time == BestTime)?"new personal best ":"")+"time of "+((.@m)?callfunc("F_InsertPlural",.@i,"minute")+" ":"")+""+((.@s)?.@s+""+((.@ms)?"."+.@ms:"")+" seconds":"")+".",bc_area|bc_blue;
  1556.     sleep2 2500;
  1557.     instance_destroy;
  1558.     end;
  1559.  
  1560. OnInstanceInit:
  1561.     initnpctimer;
  1562.     stopnpctimer;
  1563.     setnpctimer 0,strnpcinfo(3);
  1564.     .Map$ = strnpcinfo(4);
  1565.     monster .Map$,223,206,"Emperium",1288,1,strnpcinfo(3)+"::OnBreak";
  1566.     .GID = $@mobid;
  1567.     setunitdata .GID,UMOB_DMGIMMUNE,1;
  1568.     sleep 2000;
  1569.     mapannounce .Map$,"[Emperium Event]: Goal is simple, kill the Emperium as fast as you can~",bc_map|bc_blue;
  1570.     sleep 1000;
  1571.     mapannounce .Map$,"[Emperium Event]: Once Countdown is done have at it.",bc_map|bc_blue;
  1572.     sleep 2000;
  1573.     mapannounce .Map$,"5",bc_map|bc_blue;
  1574.     sleep 1000;
  1575.     mapannounce .Map$,"4",bc_map|bc_blue;
  1576.     sleep 1000;
  1577.     mapannounce .Map$,"3",bc_map|bc_blue;
  1578.     sleep 1000;
  1579.     mapannounce .Map$,"2",bc_map|bc_blue;
  1580.     sleep 1000;
  1581.     mapannounce .Map$,"1",bc_map|bc_blue;
  1582.     sleep 1000;
  1583.     mapannounce .Map$,"Go~",bc_map|bc_blue;
  1584.     startnpctimer strnpcinfo(3);
  1585.     setunitdata .GID,UMOB_DMGIMMUNE,0;
  1586.     end;
  1587. }
  1588.  
  1589. //==================================
  1590. //-- Maze Event Extras
  1591. //==================================
  1592.  
  1593. maze,358,148,0  warp    mazeroadblock   2,2,maze,371,149
  1594.  
  1595. maze,369,162,4  script  Event_Agent#Maze    405,4,4,{
  1596.     mes "[Event Agent]";
  1597.     mes "Walk up to me to claim prize~";
  1598.     close;
  1599.  
  1600. OnTouch_:
  1601.     if($@CurrentEvent == -5){
  1602.         $@CurrentEvent = 0;
  1603.         announce "Congrats "+strcharinfo(0)+", a winner in the Maze Event.",bc_all|bc_blue;
  1604.         WonEvents++;
  1605.         MWonEvents++;
  1606.         if($@Mail){
  1607.             mail getcharid(0), "no-reply", "Maze Event", "Congratulations!% You have won in the Maze Event % % %[ Your reward is attached. ]", $@RewardZeny, $@RewardID, $@RewardQNT;
  1608.             query_sql("UPDATE `mail` SET message = REPLACE(message,'%',CHAR(13)) WHERE send_name = 'no-reply'");
  1609.         } else {
  1610.             getitem $@RewardID,$@RewardQNT;
  1611.             zeny += $@RewardZeny;
  1612.         }
  1613.         mapwarp "maze","prontera",155,172;
  1614.     }
  1615.     warp "prontera",155,172;
  1616.     end;
  1617. }
  1618.  
  1619. //==================================
  1620. //-- Cluckers Event
  1621. //==================================
  1622.  
  1623. prontera,155,227,4  script  Cluckers    800,{
  1624.     if ($@CurrentEvent == -7) {
  1625.         specialeffect2 EF_HIT3;
  1626.         switch(rand(16)) {
  1627.             case 0: npctalk "CLUUUUUUCK!!!"; unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; emotion e_omg; break;
  1628.             case 1: npctalk "Cluuuuuck!~"; break;
  1629.             case 2: unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; break;
  1630.             case 3: sc_start SC_Freeze,10000,0; break;
  1631.             case 4: npctalk "CLUUUUUUUUUCK!!!"; unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; emotion e_omg; break;
  1632.             case 5: sc_start SC_Sleep,10000,0; break;
  1633.             case 6: sc_start SC_Stone,10000,0; emotion e_gg; break;
  1634.             case 7: npctalk "CLUUUUUUCK!!!"; unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; emotion e_omg; break;
  1635.             case 8: npctalk "Cluck! CLUUUCK!!"; unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; emotion e_omg; break;
  1636.             case 9: sc_start SC_Stun,10000,0; break;
  1637.             case 10: sc_start SC_Sleep,10000,0; emotion e_gg; break;
  1638.             case 11: npctalk "Cluck! Cluck!"; break;
  1639.             case 12: sc_start SC_Stun,10000,0; break;
  1640.             case 13: unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1; break;
  1641.             default:
  1642.                 if (!rand(7)) {
  1643.                     npctalk "WOOF!...........";
  1644.                     specialeffect2 EF_SPHERE;
  1645.                     announce "Congrats "+strcharinfo(0)+", a winner in the Cluckers Event.",bc_all|bc_blue;
  1646.                     WonEvents++;
  1647.                     MWonEvents++;
  1648.                     if($@Mail){
  1649.                         mail getcharid(0), "no-reply", "Cluckers Event", "Congratulations!% You have won in the Cluckers Event % % %[ Your reward is attached. ]", $@RewardZeny, $@RewardID, $@RewardQNT;
  1650.                         query_sql("UPDATE `mail` SET message = REPLACE(message,'%',CHAR(13)) WHERE send_name = 'no-reply'");
  1651.                     } else {
  1652.                         getitem $@RewardID,$@RewardQNT;
  1653.                         zeny += $@RewardZeny;
  1654.                     }
  1655.                     $@CurrentEvent = 0;
  1656.                 } else {
  1657.                     npctalk "Cluck! CLUUUCK!!";
  1658.                     unitkill getcharid(3); skilleffect "NPC_SELFDESTRUCTION",1;
  1659.                     npcwalkto rand(152,159),rand(234,241);
  1660.                 }
  1661.                 break;
  1662.         }
  1663.         end;
  1664.     }
  1665.     mes "Cluck cluck! Cluuuuuck?";
  1666.     mes "Cluck....";
  1667.     close;
  1668.  
  1669. OnTimer15000:
  1670.     npcwalkto 70+rand(17),135+rand(16);
  1671.     setnpctimer 0;
  1672.     end;
  1673.  
  1674. OnInit:
  1675.     npcspeed 75;
  1676.     npcwalkto rand(152,159),rand(234,241);
  1677.     initnpctimer;
  1678.     end;
  1679.  
  1680. OnEventStart:
  1681.     $@CurrentEvent = 7;
  1682.     for(.@i = 5; .@i > 0; .@i--){
  1683.         Announce "Cluckers Event Will begin in "+callfunc("F_InsertPlural",.@i,"minute")+"!",bc_blue;
  1684.         Announce "Please type @joinevent to join",bc_blue;
  1685.         sleep 60000;
  1686.     }
  1687.     Announce "Cluckers Event Has Begun!",bc_blue;
  1688.     $@CurrentEvent = -7;
  1689.     sleep 60000 * 45;
  1690.     if($@CurrentEvent == -7){
  1691.         $@CurrentEvent = 0;
  1692.         Announce "Cluckers Event Has Ended with No Winner!",bc_blue|bc_area|bc_npc;
  1693.     }
  1694.     end;
  1695. }
  1696.  
  1697. guild_vs2,50,50,4   script  Disguise Event  795,{
  1698.     if($@CurrentEvent == -15){
  1699.         if(getgmlevel() == 99)
  1700.             dispbottom $MonsterName$+"";
  1701.         input .@input$;
  1702.         if(.@input$ == $MonsterName$)
  1703.             doevent strnpcinfo(3)+"::OnCorrect";
  1704.     }
  1705.     end;
  1706.  
  1707. OnStart:
  1708.     .EventON = .Wait = 1;
  1709.     setnpctimer 0;
  1710.     initnpctimer;
  1711.     end;
  1712.  
  1713. OnTimer10000:
  1714.     if (.Change) end;
  1715.     .Wait = 0;
  1716.  
  1717. OnDisguise:
  1718.     if (.MVPRule) {
  1719.         .Winner = 0;
  1720.         .Monster = rand(getarraysize(.MVP));
  1721.         $MonsterName$ = getmonsterinfo(.MVP[.Monster],0);
  1722.     } else {
  1723.         .Winner = 0;
  1724.         .Monster = 1000+rand(1000,1995);
  1725.         if (compare(","+.BlackList$+"," , ","+.Monster+",") || .Monster == .LastMonster)
  1726.             goto OnDisguise;
  1727.         .LastMonster = .Monster;
  1728.         $MonsterName$ = getmonsterinfo(.Monster,0);
  1729.     }
  1730.     deletepset 1;
  1731.     defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "OnCorrect";
  1732.     activatepset 1;
  1733.     if (.MVPRule)
  1734.         setnpcdisplay "Disguise Event",.MVP[.Monster];
  1735.     else    setnpcdisplay "Disguise Event",.Monster;
  1736.     .Change = 1;
  1737.     setnpctimer 0;
  1738.     end;
  1739.  
  1740. OnTimer30000:
  1741.     .Change = 0;
  1742.     setnpcdisplay "Disguise Event",795;
  1743.     npctalk "Disguise Event : You took too long to guess what I was. Please wait 10 seconds while I disguise again.";
  1744.     specialeffect EF_DETECT2;
  1745.     set $MonsterName$,"";
  1746.     deletepset 1;
  1747.     stopnpctimer;
  1748.     setnpctimer 0;
  1749.     initnpctimer;
  1750.     end;
  1751.  
  1752. OnCorrect:
  1753.     if (.Winner) {
  1754.         dispbottom "Someone has already won this round.";
  1755.         end;
  1756.     }
  1757.     set .Winner,1;
  1758.     set .RoundCount,.RoundCount+1;
  1759.     deletepset 1;
  1760.     activatepset 1;
  1761.     specialeffect2 EF_SPHERE;
  1762.     announce "Congrats "+strcharinfo(0)+", a winner in the Disguise Event.",bc_all|bc_blue;
  1763.     WonEvents++;
  1764.     MWonEvents++;
  1765.     if($@Mail){
  1766.         mail getcharid(0), "no-reply", "Disguise Event", "Congratulations!% You have won in the Disguise Event % % %[ Your reward is attached. ]", $@RewardZeny, $@RewardID, $@RewardQNT;
  1767.         query_sql("UPDATE `mail` SET message = REPLACE(message,'%',CHAR(13)) WHERE send_name = 'no-reply'");
  1768.     } else {
  1769.         getitem $@RewardID,$@RewardQNT;
  1770.         zeny += $@RewardZeny;
  1771.     }
  1772.     if (.RoundCount >= .Rounds) {
  1773.         setnpcdisplay "Disguise Event",795;
  1774.         .RoundCount = .Change = .EventON = 0;
  1775.         setnpctimer 0;
  1776.         stopnpctimer;
  1777.         npctalk "Disguise Event : Thank you all for playing. That was the last round of the Disguise Event. Come play again later.";
  1778.         mapwarp "guild_vs2","prontera",155,172;
  1779.         end;
  1780.     }
  1781.     setnpcdisplay "Disguise Event",795;
  1782.     .Change = 0;
  1783.     setnpctimer 0;
  1784.     end;
  1785.  
  1786. OnInit:
  1787.     // Npc Name
  1788.     .n$ = "[^0000FFDisguise NPC^000000]";
  1789.  
  1790.     // Disguise Event MVP Ruleset
  1791.     // Toggle 1/0
  1792.     // [0] Normal monsters, except blacklist
  1793.     // [1] MVPs from list
  1794.     .MVPRule = 1;
  1795.  
  1796.     // Number of rounds for Disguise Event
  1797.     .DisguiseRound = 5;
  1798.  
  1799.     // MVP List
  1800.     setarray .MVP[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,
  1801.             1389,1399,1418,1492,1502,1511,1583,1623,1630,1646,1647,1648,1649,1650,1651,1658,1685,1688,
  1802.             1708,1719,1734,1751,1768,1779,1785,1802,1832,1871,1874,1885,1917,1980,2022,2068,2087,2131,
  1803.             2156,2165;
  1804.  
  1805.     // Blacklist
  1806.     set .BlackList$, "1003,1006,1017,1021,1022,1027,1043,1075,1136,1137,1168," +
  1807.         "1171,1172,1173,1181,1187,1210,1217,1218,1222,1223,1224,1225,1226,1227,1228," +
  1808.         "1233,1284,1407,1411,1414,1495,1501,1900,1996,2000,2001,2002,2003,2004," +
  1809.         "2005,2006,2007,2011,2012,2025,2028,2029,2030,2031,2032,2033,2034,2035," +
  1810.         "2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049," +
  1811.         "2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063," +
  1812.         "2064,2065,2066,2067,2075,2076,2077,2078,2079,2080,2081,2083,2084,2085," +
  1813.         "2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099," +
  1814.         "2100,2101,2012,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113," +
  1815.         "2114,2115,2116,2117,2118,2119,2120,2121,2123,2124,2125,1496,";
  1816. }
  1817.  
  1818. //==================================
  1819. //-- Event Shops
  1820. //==================================
  1821.  
  1822. prontera,164,175,3  itemshop    Event Headgear Shop 877,33001,5381:50,5391:50,5462:50,5463:75,5596:75,5214:100,5380:100,5210:100,5226:100,5227:100,5228:100,5229:100,5230:100,5231:100,5232:100,5233:100,5234:100,5235:100,5236:100,5237:100,5283:100,5288:100,5293:100,5313:100,5314:100,5315:100,5324:100,5372:100,5376:100,5377:100,5378:100,5503:100,5505:100,5529:100,5286:125,5263:125,5098:125,5382:125,5238:175,5239:175,5240:175,5241:175,5242:175,5374:500
  1823. prontera,164,173,3  itemshop    Event Rental Shop   877,33001,36502:7,35504:10,35505:10,35503:20
  1824. prontera,164,169,3  itemshop    Event Shop  877,33001,12209:1,12211:2,604:3,7621:3,12299:5,12212:5,12311:5,12221:7,608:10,607:15,12208:15,14592:15,12210:15,12214:20,7776:20,35501:25,35502:25
  1825. prontera,164,167,3  itemshop    Event Food Shop 877,33001,12041:10,12042:20,12043:30,12044:40,12045:50,12046:10,12047:20,12048:30,12049:40,12050:50,12051:10,12052:20,12053:30,12054:40,12055:50,12056:10,12057:20,12058:30,12059:40,12060:50,12061:10,12062:20,12063:30,12064:40,12065:50,12066:10,12067:20,12068:30,12069:40,12070:50
Add Comment
Please, Sign In to add comment