//================= Hercules Script ======================================= //= _ _ _ //= | | | | | | //= | |_| | ___ _ __ ___ _ _| | ___ ___ //= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| //= | | | | __/ | | (__| |_| | | __/\__ \ //= \_| |_/\___|_| \___|\__,_|_|\___||___/ //================= License =============================================== //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= //= Copyright (C) 2012-2015 Hercules Dev Team //= Copyright (C) Capuche //= Copyright (C) Joseph //= Copyright (C) Euphy //= Copyright (C) L0ne_W0lf //= //= Hercules is free software: you can redistribute it and/or modify //= it under the terms of the GNU General Public License as published by //= the Free Software Foundation, either version 3 of the License, or //= (at your option) any later version. //= //= This program is distributed in the hope that it will be useful, //= but WITHOUT ANY WARRANTY; without even the implied warranty of //= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //= GNU General Public License for more details. //= //= You should have received a copy of the GNU General Public License //= along with this program. If not, see . //========================================================================= //= Hugel Monster Races //================= Description =========================================== //= - Hugel Monster Races (Single and Double) //= - Prize Medal Exchanging, and Monster Track NPCs. //= - Contains both euRO and iRO dialog. //================= Current Version ======================================= //= 2.1 //========================================================================= //== Monster Race - Single Monster Race ==================== hugel,51,61,0 script #race_timer1-1 FAKE_NPC,{ OnEnable: enablenpc "#race_timer1-1"; OnInit: $@mon_time_1_1 = 2; initnpctimer; end; OnTimer10000: mapannounce "hugel","The Single Monster Race will soon begin. We hope to see many of you participate!",bc_map,"0x87ceeb"; end; OnTimer30000: mapannounce "hugel","The Single Monster Race Arena has just opened.",bc_map,"0x87ceeb"; $@mon_time_1_1 = 1; donpcevent "Race Progress Timer::OnEnable"; end; OnTimer90000: mapannounce "hugel","The Single Monster Race arena is now open. Participants should enter the Arena as soon as they can.",bc_map,"0x87ceeb"; end; OnTimer210000: mapannounce "hugel","The entrance to the Single Monster Race Arena will close shortly. Participants, please enter the arena now.",bc_map,"0x87ceeb"; end; OnTimer270000: mapannounce "hugel","The Single Monster Race Arena's entrance will soon close.",bc_map,"0x87ceeb"; end; OnTimer272000: mapannounce "hugel","Participants, please enter the Arena before the doors close.",bc_map,"0x87ceeb"; end; OnTimer330000: mapannounce "hugel","The race is now starting. If you missed your chance to enter this race, please try again next time~!",bc_map,"0x87ceeb"; $@mon_time_1_1 = 0; disablenpc "#race_timer1-1"; stopnpctimer; end; } p_track01,58,0,0 script Race Progress Timer FAKE_NPC,{ OnEnable: initnpctimer; enablenpc "Race Progress Timer"; for (.@c = 1; .@c <= 6; ++.@c) { .@line = rand(1,70); enablenpc "starting#"+.@c; enablenpc "Tire"+.@c+"#1"; if (.@line <= 10) { .@tired = rand(50,60); enablenpc "Luk"+.@c+"#5"; enablenpc "Luk"+.@c+"#6"; } else if (.@line <= 30) { .@tired = rand(40,60); enablenpc "Luk"+.@c+"#5"; if (.@tired >= 50) enablenpc "Tire"+.@c+"#2"; } else if (.@line <= 40) { .@tired = rand(30,50); enablenpc "Luk"+.@c+"#1"; enablenpc "Tire"+.@c+"#2"; if (.@tired < 40) enablenpc "Tire"+.@c+"#3"; } else if (.@line <= 50) { .@tired = rand(20,40); enablenpc "Luk"+.@c+"#1"; enablenpc "Luk"+.@c+"#2"; enablenpc "Tire"+.@c+"#2"; enablenpc "Tire"+.@c+"#3"; if (.@tired < 30) enablenpc "Tire"+.@c+"#4"; } else if (.@line <= 60) { .@tired = rand(10,30); for (.@i = 1; .@i <= 3; ++.@i) enablenpc "Luk"+.@c+"#"+.@i; for (.@i = 2; .@i <= 4; ++.@i) enablenpc "Tire"+.@c+"#"+.@i; if (.@tired < 20) enablenpc "Tire"+.@c+"#5"; } else if (.@line <= 70) { .@tired = rand(0,20); for (.@i = 1; .@i <= 4; ++.@i) enablenpc "Luk"+.@c+"#"+.@i; for (.@i = 2; .@i <= 5; ++.@i) enablenpc "Tire"+.@c+"#"+.@i; if (.@tired < 10) enablenpc "Tire"+.@c+"#6"; } $@mr_1_luk[.@c] = .@line; $@mr_1_tire[.@c] = .@tired; } end; OnTimer1000: enablenpc "Ticket Helper#single"; end; OnTimer7000: mapannounce "p_track01","Welcome to the Monster Race Arena.",bc_map,"0xffb6c1"; end; OnTimer10000: mapannounce "p_track01","Feel free to inquire at the help desk whenever you have questions.",bc_map,"0xffb6c1"; end; OnTimer120000: mapannounce "p_track01","The Single Monster Race will start in 3 minutes.",bc_map,"0xffb6c1"; end; OnTimer123000: mapannounce "p_track01","Please ask a Ticket Helper if you wish to wager on the race.",bc_map,"0xffb6c1"; end; OnTimer240000: mapannounce "p_track01","The Single Monster Race will start shortly.",bc_map,"0xffb6c1"; end; OnTimer243000: mapannounce "p_track01","Please ask a Ticket Helper if you wish to wager on the race.",bc_map,"0xffb6c1"; end; OnTimer300000: mapannounce "p_track01","The Monster Race has already begun. Good luck to all the participants.",bc_map,"0xffb6c1"; $@monster_race = 0; disablenpc "Ticket Helper#single"; for (.@i = 1; .@i <= 6; ++.@i) donpcevent "Runner No. "+.@i+"#"+ .@i +"::OnEnable"; stopnpctimer; end; OnDisable: OnInit: disablenpc "Race Progress Timer"; end; } p_track01,73,22,1 script Ticket Helper#single 4_M_HUMAN_02,{ mes "[Ticket Helper]"; mes "Welcome to the"; mes "Monster Race Arena."; mes "If you'd like to participate"; mes "in the ^3131FFSingle Monster Race^000000,"; mes "then please select 1 out of"; mes "the 6 monsters from the list."; next; if (!checkweight(Spawn,200)) { mes "[Ticket Helper]"; mes "Wait, wait..."; mes "I can't give you"; mes "anything right now."; mes "You're carrying way"; mes "too many things..."; close; } .@m = select ("Monster Status", "Monster 1", "Monster 2", "Monster 3", "Monster 4", "Monster 5", "Monster 6") - 1; if (.@m == 0) { for (.@i = 1; .@i <= 6; ++.@i) mes "Monster "+.@i+" [^CC6600Luck^000000: " + $@mr_1_luk[.@i] + "] [^EE0000HP^000000: " + $@mr_1_tire[.@i] + "]"; close; } else { if ($@mon_time_1_1 == 1) { if (monster_race_1) { mes "[Ticket Helper]"; mes "You have selected"; mes "Monster ^FF0000"+ monster_race_1 +"^000000 for the"; mes "Single Monster Race."; mes "The start of the race"; mes "will be announced soon,"; mes "so please wait. Thank you."; close; } mes "[Ticket Helper]"; mes "You've chosen Monster "+.@m+"?"; mes "Alright then, please wait"; mes "until the start of the race is"; mes "announced. If the monster you"; mes "picked wins, then please use this ticket to redeem your prize."; getitem Monster_Ticket,1; monster_race_1 = .@m; close; } mes "[Ticket Helper]"; mes "I'm sorry, but a Monster"; mes "Race is now in progress."; mes "If you'd like to participate, then please wait for the next race."; close; } OnInit: disablenpc "Ticket Helper#single"; end; } - script Runner_main FAKE_NPC,{ function F_Num; function F_Ord; end; OnEnable: emotion e_gasp; enablenpc strnpcinfo(NPC_NAME); getmapxy(.@m$, .@x, .@y, UNITTYPE_NPC); setarray .@mob[1], R_PORING,R_LUNATIC,R_SAVAGE_BABE,R_DESERT_WOLF_B,R_DEVIRUCHI,R_BAPHOMET_; monster "p_track01",58,.@y,"The "+ F_Ord() +" Racer", .@mob[F_Num()],1,strnpcinfo(NPC_NAME)+"::OnMyMobDead"; end; OnDisable: disablenpc strnpcinfo(NPC_NAME); killmonster "p_track01",strnpcinfo(NPC_NAME)+"::OnMyMobDead"; end; OnTouchNPC: .@n = F_Num(); $@monster_race = .@n; for (.@i = 1; .@i <= 6; ++.@i) { if (.@n == .@i) continue; donpcevent "Runner No. "+.@i+"#"+.@i+"::OnDisable"; } sleep 1000; mapannounce "p_track01","We have a winner...!",bc_map,"0x33FF66"; sleep 1000; mapannounce "p_track01","Monster "+.@n+" is the winner of this race!",bc_map,"0x33FF66"; sleep 4000; mapannounce "p_track01","If you wagered on Monster "+.@n+" in this race, talk to the Medal Distributor to receive your prize!",bc_map,"0x33FF66"; sleep 2000; mapannounce "p_track01","Please remember that we can distribute Prize Medals for only 5 minutes after each race.",bc_map,"0x33FF66"; sleep 1000; donpcevent "Medal Distributor#single::OnEnable"; donpcevent strnpcinfo(NPC_NAME)+"::OnDisable"; killmonster "p_track01",strnpcinfo(NPC_NAME)+"::OnMyMobDead"; end; function F_Num { return atoi(strnpcinfo(NPC_NAME_HIDDEN)); } function F_Ord { .@n = F_Num(); if (.@n == 1) return "1st"; if (.@n == 2) return "2nd"; if (.@n == 3) return "3rd"; return .@n + "th"; } OnInit: if (strnpcinfo(NPC_NAME_HIDDEN) != "" ) disablenpc strnpcinfo(NPC_NAME); end; } p_track01,30,38,0 duplicate(Runner_main) Runner No. 1#1 FAKE_NPC,1,0 p_track01,30,36,0 duplicate(Runner_main) Runner No. 2#2 FAKE_NPC,1,0 p_track01,30,34,0 duplicate(Runner_main) Runner No. 3#3 FAKE_NPC,1,0 p_track01,30,32,0 duplicate(Runner_main) Runner No. 4#4 FAKE_NPC,1,0 p_track01,30,30,0 duplicate(Runner_main) Runner No. 5#5 FAKE_NPC,1,0 p_track01,30,28,0 duplicate(Runner_main) Runner No. 6#6 FAKE_NPC,1,0 p_track01,67,45,5 script Medal Distributor#single 4_F_RACING,{ if (!checkweight(Spawn,200)) { mes "[Medal Distributor]"; mes "I'm sorry, but I can't"; mes "reward you with any medals"; mes "until you make more space"; mes "available in your Inventory."; close; } if (countitem(Monster_Ticket)) { // 7514 mes "[Medal Distributor]"; mes "Hello there~"; mes "If you've wagered on the"; mes "winning monster in a recent"; mes "race, then you can exchange"; mes "your game ticket here for"; mes "some Prize Medals."; next; mes "[Medal Distributor]"; mes "Please remember that you can"; mes "only exchange winning Game"; mes "Tickets for Prize Medals right"; mes "after the race finishes. Prize"; mes "Medals may be given to Wayne"; mes "in Hugel in exchange for items."; next; if ($@monster_race) { if (monster_race_1 == $@monster_race) { mes "[Medal Distributor]"; mes "Oh, congratulations, you"; mes "have a winning ticket for"; mes "a Single Monster Race! So "; mes "would you like to exchange your"; mes "Racing Ticket for Prize Medals?"; next; if (select("Yes, please.", "No, thanks.") == 2) { mes "[Medal Distributor]"; mes "Um, are you sure? You "; mes "can only exchange a winning"; mes "Racing Ticket for Prize Medals"; mes "for a short time after the race. If you made a mistake, you"; mes "should ask me again quickly."; close; } mes "[Medal Distributor]"; mes "Let me see your ticket..."; mes "Oh! Congratulations, you"; mes "won! May I have your name?"; next; input(.@input$); if (.@input$ == strcharinfo(PC_NAME)) { .@insa = rand(1,1000); mes "[Medal Distributor]"; mes "Ah, "+strcharinfo(PC_NAME)+"."; mes "You can exchange this"; mes "ticket for a Prize Medal by"; mes "entering your ticket exchange"; mes "number now. Your ticket"; mes "exchange number is ^FF0000" + .@insa + "^000000."; next; input(.@input); if (.@input == 0) { mes "[Medal Distributor]"; mes "Oh? You don't want"; mes "to exchange your"; mes "winning ticket?"; close; } if (.@input == .@insa) { mes "[Medal Distributor]"; mes "Thank you! You entered"; mes "the correct number..."; mes "Everything seems to"; mes "be in order. Alright!"; next; mes "[Medal Distributor]"; mes "Now please accept your"; mes "Prize Medals! You can"; mes "exchange these with"; mes "Wayne in Hugel for some"; mes "interesting items. Thank you~"; delitem Monster_Ticket,1; monster_race_1 = 0; getitem Marvelous_Medal,4; close; } mes "[Medal Distributor]"; mes "I'm sorry, but it seems"; mes "that you entered the"; mes "incorrect ticket number."; mes "Would you mind coming"; mes "back again in a while?"; close; } mes "[Medal Distributor]"; mes "What's this...?"; mes "I think there's a problem..."; mes "Did you enter your name"; mes "incorrectly? Please check"; mes "your name, and then try again."; close; } mes "[Medal Distributor]"; mes "You may not have wagered"; mes "on the winning monster in"; mes "the last race, but I hope that"; mes "you get lucky next time~"; close; } } mes "[Medal Distributor]"; mes "Hello there~"; mes "If you've wagered on the"; mes "winning monster in a recent"; mes "race, then you can exchange"; mes "your game ticket here for"; mes "some Prize Medals."; next; mes "[Medal Distributor]"; mes "Please remember that you can"; mes "only exchange winning Game"; mes "Tickets for Prize Medals right"; mes "after the race finishes. Prize"; mes "Medals may be given to Wayne"; mes "in Hugel in exchange for items."; close; OnEnable: enablenpc "Medal Distributor#single"; emotion e_gasp; initnpctimer; end; OnTimer1000: mapannounce "p_track01","The Monster Race is finished! Congratulations to all the winners!",bc_map,"0xFFFF00"; end; OnTimer4000: mapannounce "p_track01","Please give your Racing Ticket to the Medal Distributor if you bet on the winning monster.",bc_map,"0xFFFF00"; end; OnTimer7000: mapannounce "p_track01","You have 5 minutes to exchange a winning ticket for Prize Medals from the Medal Distributor.",bc_map,"0xFFFF00"; end; OnTimer10000: mapannounce "p_track01","All tickets become void after this 5 minute period, so winners should claim their prize now.",bc_map,"0xFFFF00"; end; OnTimer13000: mapannounce "p_track01","Please leave the Race Arena before this 5 minute period elapses. Thank you.",bc_map,"0xFFFF00"; end; OnTimer240000: mapannounce "p_track01","Attention. We will being preparing for the next race shortly...",bc_map,"0xFFFF00"; end; OnTimer243000: mapannounce "p_track01","We will close the Racing Arena in 1 minute to prepare for the next race.",bc_map,"0xFFFF00"; end; OnTimer246000: mapannounce "p_track01","Participants in the last race should leave the arena as soon as possible.",bc_map,"0xFFFF00"; end; OnTimer249000: mapannounce "p_track01","Thank you for your cooperation.",bc_map,"0xFFFF00"; end; OnTimer252000: mapannounce "p_track01","We hope that you enjoyed the Monster Race arena. Come back again soon~",bc_map,"0xFFFF00"; for (.@i = 1; .@i <= 6; ++.@i) { for (.@j = 2; .@j <= 6; ++.@j) { disablenpc "Tire"+.@j+"#"+.@i; disablenpc "Luk"+.@j+"#"+.@i; } enablenpc "Luk1#"+.@i; enablenpc "Tire1#"+.@i; $@mr_1_luk[.@i] = 0; $@mr_1_tire[.@i] = 0; } end; OnTimer300000: donpcevent "#race_timer1-1::OnEnable"; $@monster_race = 0; mapwarp "p_track01","hugel",63,73; end; OnTimer342000: stopnpctimer; OnInit: disablenpc "Medal Distributor#single"; end; } p_track01,76,36,1 script Exit Guide#single 4_M_NFMAN,{ mes "[Exit Guide]"; mes "If you have a winning Racing"; mes "Ticket, please make sure that"; mes "you redeem it for Prize Medals"; mes "now. All Racing Tickets become"; mes "void once the next race begins."; next; mes "[Exit Guide]"; mes "If you wish to leave"; mes "the arena, then I can guide"; mes "you outside. Would you like"; mes "to leave the arena right now?"; next; if (select("Yes", "No") == 2) { mes "[Exit Guide]"; mes "Alright, then."; mes "Just let me know"; mes "whenever you're"; mes "ready to leave."; close; } if (!countitem(Monster_Ticket)) { mes "[Exit Guide]"; mes "Thank you for"; mes "your patronage, and"; mes "I hope that you come"; mes "visit us again soon~"; } else { mes "[Exit Guide]"; mes "In accordance with our"; mes "policies, I must take your"; mes "Racing Ticket before you leave."; mes "Thank you for your patronage,"; mes "and I hope you enjoy your time"; mes "here in the Monster Race Arena."; delitem Monster_Ticket,1; } monster_race_1 = 0; close2; warp "hugel",63,73; end; } hugel,58,72,6 script Eckar Ellebird#single 4_M_NFMAN,{ mes "[Eckar Ellebird]"; mes "Welcome to the biggest"; mes "attraction in Hugel, the"; mes "Monster Race Arena."; mes "How may I help you today?"; next; if (select("Monster Race Info", "Enter Monster Race") == 1) { mes "[Eckar Ellebird]"; mes "Monster Races originated from"; mes "simple children's games in which"; mes "Cute Pets would race against each other. This grew into an adult"; mes "pastime that is so popular, we've built a racing arena in Hugel."; next; mes "[Eckar Ellebird]"; mes "Our Monster Race Arena hosts"; mes "two types of monster races. First, we have the Single Monster Race,"; mes "in which those that wagered on the 1st place monster are rewarded."; next; mes "[Eckar Ellebird]"; mes "Then, we have the Dual Monster"; mes "Race in which the house odds and rewards are greater than in Single"; mes "Monster Races: you must wager on 2 monsters, and they must place in"; mes "1st and 2nd for you to win."; next; mes "[Eckar Ellebird]"; mes "Although a small entrance"; mes "fee is required, we only use"; mes "the money to give rewards to"; mes "participants and maintain this"; mes "arena. Therefore, we're not"; mes "profiting from this enterprise."; next; mes "[Eckar Ellebird]"; mes "Also, we prohibit others"; mes "from making personal bets"; mes "and wagers, using items and"; mes "zeny, based on the outcomes"; mes "of these races. That kind of"; mes "gambling is illegal here..."; next; mes "[Eckar Ellebird]"; mes "Once you enter the Race Arena, you will receive a Racing Ticket."; mes "Keep in mind that winning Racing Tickets can only be exchanged for"; mes "Prize Medals during a 5 minute window after the end of the race."; next; } mes "[Eckar Ellebird]"; mes "The entrance fee for all races"; mes "in the Monster Race Arena is"; mes "2,000 zeny. If you'd like to wager on a Dual Monster Race, then"; mes "please ask my brother Erenes,"; mes "and he will help you."; next; mes "[Eckar Ellebird]"; mes "Otherwise, I'll help get you"; mes "started if you're interested"; mes "in a Single Monster Race."; mes "Would you like wager on"; mes "a Single Monster Race?"; next; if (select("Yes, please.", "No, thanks.") == 2) { mes "[Eckar Ellebird]"; mes "Very well. I hope that"; mes "you enjoy your time here"; mes "in the Monster Race Arena~"; close; } if (!checkweight(Spawn,700)) { mes "[Eckar Ellebird]"; mes "Oh, wow. You're carrying"; mes "an awful lot of stuff... Yeah,"; mes "you better put some of it away"; mes "in Kafra Storage or something."; close; } if (Zeny < 2000) { mes "[Eckar Ellebird]"; mes "I'm sorry, but you"; mes "don't have enough"; mes "money to pay the"; mes "2,000 zeny entrance fee. "; close; } if (countitem(Monster_Ticket)) { mes "[Eckar Ellebird]"; mes "Hm? What are you doing"; mes "with an expired Racing Ticket?"; mes "Well, I better get rid of it for you before it can get mixed up"; mes "with your new Racing Ticket."; delitem Monster_Ticket,1; next; if ($@mon_time_1_1 == 1) { if (Zeny < 2000) { mes "[Eckar Ellebird]"; mes "I'm sorry, but you"; mes "don't have enough"; mes "money to pay the"; mes "2,000 zeny entrance fee. "; close; } mes "[Eckar Ellebird]"; mes "Alright, I think you"; mes "should be all set. I hope"; mes "that you enjoy the race~"; mes "Let me guide you inside"; mes "the Monster Race Arena now."; Zeny -= 2000; monster_race_1 = 0; close2; warp "p_track01",75,41; end; } } else if ($@mon_time_1_1 == 1) { if (Zeny < 2000) { mes "[Eckar Ellebird]"; mes "I'm sorry, but you"; mes "don't have enough"; mes "money to pay the"; mes "2,000 zeny entrance fee. "; close; } mes "[Eckar Ellebird]"; mes "Thanks, I hope that"; mes "you enjoy this race."; mes "Let me guide you now"; mes "to the Monster Race Arena."; Zeny -= 2000; monster_race_1 = 0; close2; warp "p_track01",75,41; end; } if ($@mon_time_1_1 == 2) { mes "[Eckar Ellebird]"; mes "We're still finishing our"; mes "preparations for the next"; mes "Single Monster Race, so"; mes "we ask that you please"; mes "wait a little while longer..."; close; } if (!$@monster_race) { mes "[Eckar Ellebird]"; mes "Right now, a Monster Race"; mes "is in progress. It's too late to place a wager, but if you'd like"; mes "to watch, the fee is 500 zeny"; mes "for spectators. Would you like to enter the Monster Race Arena?"; next; if (select("Enter", "Cancel") == 2) { mes "[Eckar Ellebird]"; mes "Alright, then. If you'd like"; mes "to wager on a monster"; mes "race, please wait for the"; mes "current race to finish. I hope"; mes "that you enjoy your time here"; mes "in the Monster Race Arena~"; close; } if (Zeny > 499) { mes "[Eckar Ellebird]"; mes "Thank you~"; mes "I hope you enjoy"; mes "watching this race!"; Zeny -= 500; monster_race_1 = 0; close2; warp "p_track01",75,41; end; } mes "[Eckar Ellebird]"; mes "I'm sorry, but you don't"; mes "have enough money to pay"; mes "the 500 zeny spectator fee."; close; } mes "[Eckar Ellebird]"; mes "I'm sorry, but a monster"; mes "race has just ended, so we're"; mes "having the 5 minute period in"; mes "which the winners can claim"; mes "their Prize Medals. The gate"; mes "will open soon, so please wait."; close; OnEnable: enablenpc "Eckar Ellebird#single"; end; OnDisable: disablenpc "Eckar Ellebird#single"; end; } p_track01,39,49,3 script Game Guide#single 4_F_RACING,{ mes "[Game Guide]"; mes "Welcome to the"; mes "Monster Race Arena."; mes "How can I help you?"; next; switch(select("Monster Race Info", "Wager Info", "Ticket Redemption Info")) { case 1: mes "[Game Guide]"; mes "Monster Races originated from"; mes "simple children's games in which"; mes "Cute Pets would race against each other. This grew into an adult"; mes "pastime that is so popular, we've built a racing arena in Hugel."; next; mes "[Game Guide]"; mes "Our Monster Race Arena hosts"; mes "two types of monster races. First, we have the Single Monster Race,"; mes "in which those that wagered on the 1st place monster are rewarded."; next; mes "[Game Guide]"; mes "Then, we have the Dual Monster"; mes "Race in which the house odds and rewards are greater than in Single"; mes "Monster Races: you must wager on 2 monsters, and they must place in"; mes "1st and 2nd for you to win."; next; mes "[Game Guide]"; mes "Although a small entrance"; mes "fee is required, we only use"; mes "the money to give rewards to"; mes "participants and maintain this"; mes "arena. Therefore, we're not"; mes "profiting from this enterprise."; next; mes "[Game Guide]"; mes "Also, we prohibit others"; mes "from making personal bets"; mes "and wagers, using items and"; mes "zeny, based on the outcomes"; mes "of these races. That kind of"; mes "gambling is illegal here..."; next; mes "[Game Guide]"; mes "Once you enter the Race Arena, you will receive a Racing Ticket."; mes "Keep in mind that winning Racing Tickets can only be exchanged for"; mes "Prize Medals during a 5 minute window after the end of the race."; next; break; case 2: mes "[Game Guide]"; mes "Before placing a wager, you"; mes "must get a free Racing Ticket"; mes "from the Ticket Helper. There,"; mes "I've marked the Ticket Helper"; mes "on your Mini-Map, so you can"; mes "find him pretty easily."; viewpoint 1,73,22,1,0xFF3355; next; break; case 3: mes "[Game Guide]"; mes "If you wagered on the winner"; mes "of a Single Monster Race, or"; mes "on the 1st or 2nd place winners"; mes "in a Dual Monster Race, then"; mes "you can exchange your Racing"; mes "Ticket for Prize Medals."; next; mes "[Game Guide]"; mes "However, you must exchange"; mes "your Racing Ticket with the"; mes "Medal Distributor within the"; mes "5 minute window after the end"; mes "of the race. ^FF0000Your ticket becomes^FFFFFF ^FF0000 void after these 5 minutes.^000000"; next; mes "[Game Guide]"; mes "When this 5 minute window"; mes "elapses, you will be teleported outside, and we will immediately"; mes "begin preparing for the next race. Make sure that you remember this"; mes "information when you wager."; next; mes "[Game Guide]"; mes "If you haven't received"; mes "your free Racing Ticket,"; mes "then please visit the Ticket"; mes "Helper. There, I've just marked"; mes "his location on your Mini-Map."; viewpoint 1,67,45,2,0xCE6300; next; break; } mes "[Game Guide]"; mes "Thank you, and"; mes "I hope you enjoy"; mes "your time here in the"; mes "Monster Racing Arena."; close; } - script starting_1 FAKE_NPC,{ OnTouchNPC: .@start = rand(1,100); if (.@start < 11) .@speed = 60; else if (.@start < 21) .@speed = 70; else if (.@start < 31) .@speed = 80; else if (.@start < 41) .@speed = 90; else if (.@start < 51) .@speed = 100; else if (.@start < 61) .@speed = 110; else if (.@start < 71) .@speed = 120; else if (.@start < 81) .@speed = 130; else if (.@start < 91) .@speed = 140; else .@speed = 150; sc_start SC_WALKSPEED,5000,.@speed; end; OnInit: disablenpc strnpcinfo(NPC_NAME); end; } - script Luk_1 FAKE_NPC,{ OnTouchNPC: .@start = rand(1,100); if (.@start < 61) .@speed = 110; else if (.@start < 71) .@speed = 120; else if (.@start < 81) .@speed = 130; else if (.@start < 91) .@speed = 140; else .@speed = 150; sc_start SC_WALKSPEED,10000,.@speed; end; OnInit: disablenpc strnpcinfo(NPC_NAME); end; } - script Luk_2 FAKE_NPC,{ OnTouchNPC: .@start = rand(1,100); if (.@start < 61) .@time = 1000; else if (.@start < 71) .@time = 2000; else if (.@start < 81) .@time = 3000; else if (.@start < 91) .@time = 4000; if (.@time) sc_start SC_STUN,.@time,0; end; OnInit: disablenpc strnpcinfo(NPC_NAME); end; } - script Tire_1 FAKE_NPC,{ OnTouchNPC: .@start = rand(1,100); if (.@start < 61) .@time = 1000; else if (.@start < 71) .@time = 2000; else if (.@start < 81) .@time = 3000; else if (.@start < 91) .@time = 4000; if (.@time) sc_start SC_SLEEP,.@time,0; end; OnInit: disablenpc strnpcinfo(NPC_NAME); end; } p_track01,56,38,0 duplicate(starting_1) starting#1 FAKE_NPC,0,0 p_track01,56,36,0 duplicate(starting_1) starting#2 FAKE_NPC,0,0 p_track01,56,34,0 duplicate(starting_1) starting#3 FAKE_NPC,0,0 p_track01,56,32,0 duplicate(starting_1) starting#4 FAKE_NPC,0,0 p_track01,56,30,0 duplicate(starting_1) starting#5 FAKE_NPC,0,0 p_track01,56,28,0 duplicate(starting_1) starting#6 FAKE_NPC,0,0 p_track01,33,38,0 duplicate(Luk_1) Luk1#1 FAKE_NPC,0,0 p_track01,37,38,0 duplicate(Luk_1) Luk1#2 FAKE_NPC,0,0 p_track01,53,38,0 duplicate(Luk_1) Luk1#3 FAKE_NPC,0,0 p_track01,45,38,0 duplicate(Luk_1) Luk1#4 FAKE_NPC,0,0 p_track01,33,36,0 duplicate(Luk_1) Luk2#1 FAKE_NPC,0,0 p_track01,37,36,0 duplicate(Luk_1) Luk2#2 FAKE_NPC,0,0 p_track01,53,36,0 duplicate(Luk_1) Luk2#3 FAKE_NPC,0,0 p_track01,45,36,0 duplicate(Luk_1) Luk2#4 FAKE_NPC,0,0 p_track01,33,34,0 duplicate(Luk_1) Luk3#1 FAKE_NPC,0,0 p_track01,37,34,0 duplicate(Luk_1) Luk3#2 FAKE_NPC,0,0 p_track01,53,34,0 duplicate(Luk_1) Luk3#3 FAKE_NPC,0,0 p_track01,45,34,0 duplicate(Luk_1) Luk3#4 FAKE_NPC,0,0 p_track01,33,32,0 duplicate(Luk_1) Luk4#1 FAKE_NPC,0,0 p_track01,37,32,0 duplicate(Luk_1) Luk4#2 FAKE_NPC,0,0 p_track01,53,32,0 duplicate(Luk_1) Luk4#3 FAKE_NPC,0,0 p_track01,45,32,0 duplicate(Luk_1) Luk4#4 FAKE_NPC,0,0 p_track01,33,30,0 duplicate(Luk_1) Luk5#1 FAKE_NPC,0,0 p_track01,37,30,0 duplicate(Luk_1) Luk5#2 FAKE_NPC,0,0 p_track01,53,30,0 duplicate(Luk_1) Luk5#3 FAKE_NPC,0,0 p_track01,45,30,0 duplicate(Luk_1) Luk5#4 FAKE_NPC,0,0 p_track01,33,28,0 duplicate(Luk_1) Luk6#1 FAKE_NPC,0,0 p_track01,37,28,0 duplicate(Luk_1) Luk6#2 FAKE_NPC,0,0 p_track01,53,28,0 duplicate(Luk_1) Luk6#3 FAKE_NPC,0,0 p_track01,45,28,0 duplicate(Luk_1) Luk6#4 FAKE_NPC,0,0 p_track01,49,38,0 duplicate(Luk_2) Luk1#5 FAKE_NPC,0,0 p_track01,41,38,0 duplicate(Luk_2) Luk1#6 FAKE_NPC,0,0 p_track01,49,36,0 duplicate(Luk_2) Luk2#5 FAKE_NPC,0,0 p_track01,41,36,0 duplicate(Luk_2) Luk2#6 FAKE_NPC,0,0 p_track01,49,34,0 duplicate(Luk_2) Luk3#5 FAKE_NPC,0,0 p_track01,41,34,0 duplicate(Luk_2) Luk3#6 FAKE_NPC,0,0 p_track01,49,32,0 duplicate(Luk_2) Luk4#5 FAKE_NPC,0,0 p_track01,41,32,0 duplicate(Luk_2) Luk4#6 FAKE_NPC,0,0 p_track01,49,30,0 duplicate(Luk_2) Luk5#5 FAKE_NPC,0,0 p_track01,41,30,0 duplicate(Luk_2) Luk5#6 FAKE_NPC,0,0 p_track01,49,28,0 duplicate(Luk_2) Luk6#5 FAKE_NPC,0,0 p_track01,41,28,0 duplicate(Luk_2) Luk6#6 FAKE_NPC,0,0 p_track01,43,38,0 duplicate(Tire_1) Tire1#1 FAKE_NPC,0,0 p_track01,39,38,0 duplicate(Tire_1) Tire1#2 FAKE_NPC,0,0 p_track01,35,38,0 duplicate(Tire_1) Tire1#3 FAKE_NPC,0,0 p_track01,55,38,0 duplicate(Tire_1) Tire1#4 FAKE_NPC,0,0 p_track01,51,38,0 duplicate(Tire_1) Tire1#5 FAKE_NPC,0,0 p_track01,47,38,0 duplicate(Tire_1) Tire1#6 FAKE_NPC,0,0 p_track01,43,36,0 duplicate(Tire_1) Tire2#1 FAKE_NPC,0,0 p_track01,39,36,0 duplicate(Tire_1) Tire2#2 FAKE_NPC,0,0 p_track01,35,36,0 duplicate(Tire_1) Tire2#3 FAKE_NPC,0,0 p_track01,55,36,0 duplicate(Tire_1) Tire2#4 FAKE_NPC,0,0 p_track01,51,36,0 duplicate(Tire_1) Tire2#5 FAKE_NPC,0,0 p_track01,47,36,0 duplicate(Tire_1) Tire2#6 FAKE_NPC,0,0 p_track01,43,34,0 duplicate(Tire_1) Tire3#1 FAKE_NPC,0,0 p_track01,39,34,0 duplicate(Tire_1) Tire3#2 FAKE_NPC,0,0 p_track01,35,34,0 duplicate(Tire_1) Tire3#3 FAKE_NPC,0,0 p_track01,55,34,0 duplicate(Tire_1) Tire3#4 FAKE_NPC,0,0 p_track01,51,34,0 duplicate(Tire_1) Tire3#5 FAKE_NPC,0,0 p_track01,47,34,0 duplicate(Tire_1) Tire3#6 FAKE_NPC,0,0 p_track01,43,32,0 duplicate(Tire_1) Tire4#1 FAKE_NPC,0,0 p_track01,39,32,0 duplicate(Tire_1) Tire4#2 FAKE_NPC,0,0 p_track01,35,32,0 duplicate(Tire_1) Tire4#3 FAKE_NPC,0,0 p_track01,55,32,0 duplicate(Tire_1) Tire4#4 FAKE_NPC,0,0 p_track01,51,32,0 duplicate(Tire_1) Tire4#5 FAKE_NPC,0,0 p_track01,47,32,0 duplicate(Tire_1) Tire4#6 FAKE_NPC,0,0 p_track01,43,30,0 duplicate(Tire_1) Tire5#1 FAKE_NPC,0,0 p_track01,39,30,0 duplicate(Tire_1) Tire5#2 FAKE_NPC,0,0 p_track01,35,30,0 duplicate(Tire_1) Tire5#3 FAKE_NPC,0,0 p_track01,55,30,0 duplicate(Tire_1) Tire5#4 FAKE_NPC,0,0 p_track01,51,30,0 duplicate(Tire_1) Tire5#5 FAKE_NPC,0,0 p_track01,47,30,0 duplicate(Tire_1) Tire5#6 FAKE_NPC,0,0 p_track01,43,28,0 duplicate(Tire_1) Tire6#1 FAKE_NPC,0,0 p_track01,39,28,0 duplicate(Tire_1) Tire6#2 FAKE_NPC,0,0 p_track01,35,28,0 duplicate(Tire_1) Tire6#3 FAKE_NPC,0,0 p_track01,55,28,0 duplicate(Tire_1) Tire6#4 FAKE_NPC,0,0 p_track01,51,28,0 duplicate(Tire_1) Tire6#5 FAKE_NPC,0,0 p_track01,47,28,0 duplicate(Tire_1) Tire6#6 FAKE_NPC,0,0 //== Monster Race - Dual Monster Race ====================== hugel,47,56,0 script #race_timer2-1 FAKE_NPC,{ OnEnable: enablenpc "#race_timer2-1"; OnInit: $@mon_time_2_1 = 2; initnpctimer; end; OnTimer10000: mapannounce "hugel","The Dual Monster Race will soon begin. We hope to see many of you participate!",bc_map,"0xffb6c1"; end; OnTimer30000: mapannounce "hugel","The Dual Monster Race Arena has just opened.",bc_map,"0xffb6c1"; $@mon_time_2_1 = 1; donpcevent "#race_timer2-2::OnEnable"; donpcevent "TrapGlobal#race02::OnEnable"; enablenpc "Ticket Helper#2"; end; OnTimer90000: mapannounce "hugel","The Dual Monster Race arena is now open. Participants should enter the Arena as soon as they can.",bc_map,"0xffb6c1"; end; OnTimer210000: mapannounce "hugel","The entrance to the Dual Monster Race Arena will close shortly. Participants, please enter the arena now.",bc_map,"0xffb6c1"; end; OnTimer270000: mapannounce "hugel","The Dual Monster Race Arena's entrance will soon close.",bc_map,"0xffb6c1"; end; OnTimer272000: mapannounce "hugel","Participants, please enter the Arena before the doors close.",bc_map,"0xffb6c1"; end; OnTimer330000: mapannounce "hugel","The race is now starting. If you missed your chance to enter this race, please try again next time~!",bc_map,"0xffb6c1"; $@mon_time_2_1 = 0; disablenpc "#race_timer2-1"; stopnpctimer; end; } p_track02,42,23,0 script #race_timer2-2 FAKE_NPC,{ OnEnable: enablenpc "#race_timer2-2"; $@mon_time_2_2 = 0; initnpctimer; end; OnTimer5000: mapannounce "p_track02","Welcome to the Monster Race Arena.",bc_map,"0x87ceeb"; end; OnTimer7000: mapannounce "p_track02","Feel free to inquire at the help desk whenever you have questions.",bc_map,"0x87ceeb"; end; OnTimer120000: mapannounce "p_track02","The Dual Monster Race will start in 3 minutes.",bc_map,"0x87ceeb"; end; OnTimer122000: mapannounce "p_track02","Please ask a Ticket Helper if you wish to wager on the race.",bc_map,"0x87ceeb"; end; OnTimer240000: mapannounce "p_track02","The Dual Monster Race will start shortly.",bc_map,"0x87ceeb"; end; OnTimer242000: mapannounce "p_track02","Please ask a Ticket Helper if you wish to wager on the race.",bc_map,"0x87ceeb"; end; OnTimer300000: mapannounce "p_track02","The Monster Race is starting now. Good luck, everybody!",bc_map,"0x87ceeb"; $@mon_time_2_2 = 1; disablenpc "Ticket Helper#2"; donpcevent "#poring1::OnEnable"; donpcevent "#lunatic1::OnEnable"; donpcevent "#savagebebe1::OnEnable"; donpcevent "#desertwolf1::OnEnable"; donpcevent "#deviruchi1::OnEnable"; donpcevent "#baphomet1::OnEnable"; stopnpctimer; disablenpc "#race_timer2-2"; end; OnInit: disablenpc "#race_timer2-2"; $@mon_time_2_2 = 0; end; } p_track02,80,43,0 script #race_timer2-3 FAKE_NPC,{ OnEnable: enablenpc "#race_timer2-3"; initnpctimer; end; OnTimer3000: mapannounce "p_track02","The Monster Race is finished! Congratulations to all the winners!",bc_map,"0xFFFF00"; end; OnTimer6000: mapannounce "p_track02","Please give your Racing Ticket to the Medal Distributor if you bet on the winning monster.",bc_map,"0xFFFF00"; end; OnTimer9000: mapannounce "p_track02","You have 5 minutes to exchange a winning ticket for Prize Medals from the Medal Distributor.",bc_map,"0xFFFF00"; end; OnTimer12000: mapannounce "p_track02","All tickets become void after this 5 minute period, so winners should claim their prize now.",bc_map,"0xFFFF00"; end; OnTimer15000: mapannounce "p_track02","Please leave the Race Arena before this 5 minute period elapses. Thank you.",bc_map,"0xFFFF00"; end; OnTimer240000: mapannounce "p_track02","Attention. We will being preparing for the next race shortly...",bc_map,"0xFFFF00"; end; OnTimer243000: mapannounce "p_track02","We will close the Racing Arena in 1 minute to prepare for the next race.",bc_map,"0xFFFF00"; end; OnTimer246000: mapannounce "p_track02","Participants in the last race should leave the arena as soon as possible.",bc_map,"0xFFFF00"; end; OnTimer249000: mapannounce "p_track02","Thank you for your cooperation.",bc_map,"0xFFFF00"; end; OnTimer252000: mapannounce "p_track02","We hope that you enjoyed the Monster Race arena. Come back again soon~",bc_map,"0xFFFF00"; end; OnTimer300000: mapwarp "p_track02","hugel",63,73; disablenpc "Medal Distributor#medal"; donpcevent "#race_timer2-1::OnEnable"; stopnpctimer; OnInit: $@mon_race_2_1 = 0; $@mon_race_2_2 = 0; disablenpc "#race_timer2-3"; end; } hugel,62,69,1 script Eckar Erenes#double 4_M_NFMAN,{ mes "[Eckar Erenes]"; mes "Welcome to the"; mes "Monster Race Arena,"; mes "the pride and joy of"; mes "the village of Hugel!"; mes "How may I help you?"; next; if (select("Monster Race Info", "Enter Monster Race") == 1) { mes "[Eckar Erenes]"; mes "Monster Races originated from"; mes "simple children's games in which"; mes "Cute Pets would race against each other. This grew into an adult"; mes "pastime that is so popular, we've built a racing arena in Hugel."; next; mes "[Eckar Erenes]"; mes "Our Monster Race Arena hosts"; mes "two types of monster races. First, we have the Single Monster Race,"; mes "in which those that wagered on the 1st place monster are rewarded."; next; mes "[Eckar Erenes]"; mes "Then, we have the Dual Monster"; mes "Race in which the house odds and rewards are greater than in Single"; mes "Monster Races: you must wager on 2 monsters, and they must place in"; mes "1st and 2nd for you to win."; next; mes "[Eckar Erenes]"; mes "Although a small entrance"; mes "fee is required, we only use"; mes "the money to give rewards to"; mes "participants and maintain this"; mes "arena. Therefore, we're not"; mes "profiting from this enterprise."; next; mes "[Eckar Erenes]"; mes "Also, we prohibit others"; mes "from making personal bets"; mes "and wagers, using items and"; mes "zeny, based on the outcomes"; mes "of these races. That kind of"; mes "gambling is illegal here..."; next; mes "[Eckar Erenes]"; mes "Once you enter the Race Arena, you will receive a Racing Ticket."; mes "Keep in mind that winning Racing Tickets can only be exchanged for"; mes "Prize Medals during a 5 minute window after the end of the race."; next; } mes "[Eckar Erenes]"; mes "The entrance fee for all races"; mes "in the Monster Race Arena is"; mes "2,000 zeny. If you'd like to wager on a Single Monster Race,"; mes "then please ask my brother"; mes "Ellebird to help you."; next; mes "[Eckar Erenes]"; mes "Otherwise, I'll help get you"; mes "started if you're interested"; mes "in a Dual Monster Race."; mes "Would you like to wager"; mes "on a Dual Monster Race?"; next; if (select("Yes, please.", "No, thanks.") == 2) { mes "[Eckar Erenes]"; mes "Very well. I hope that"; mes "you enjoy your time here"; mes "in the Monster Race Arena~"; close; } if (!checkweight(Jellopy,700)) { mes "[Eckar Erenes]"; mes "Hmm... You're toting"; mes "too many things with you"; mes "right now. You better put"; mes "some of your stuff away in"; mes "Kafra Storage before you can"; mes "wager on any monster races..."; close; } if (Zeny < 2000) { mes "[Eckar Erenes]"; mes "I'm sorry, but you"; mes "don't have enough"; mes "money to pay the"; mes "2,000 zeny entrance fee. "; close; } if (countitem(Monster_Ticket)) { mes "[Eckar Erenes]"; mes "Hm? What are you doing"; mes "with an expired Racing Ticket?"; mes "Well, I better get rid of it for you before it can get mixed up"; mes "with your new Racing Ticket."; delitem Monster_Ticket,1; next; if ($@mon_time_2_1 == 1) { mes "[Eckar Erenes]"; mes "Alright, I think you"; mes "should be all set. I hope"; mes "that you enjoy the race~"; mes "Let me guide you inside"; mes "the Monster Race Arena now."; Zeny -= 2000; monster_race_2_1 = 0; monster_race_2_2 = 0; close2; warp "p_track02",75,41; end; } else if ($@mon_time_2_1 == 2) { mes "[Eckar Erenes]"; mes "We're still finishing our"; mes "preparations for the next"; mes "Double Monster Race, so"; mes "we ask that you please"; mes "wait a little while longer..."; close; } } else { if ($@mon_time_2_1 == 1) { mes "[Eckar Erenes]"; mes "Thanks, I hope that"; mes "you enjoy this race."; mes "Let me guide you now"; mes "to the Monster Race Arena."; Zeny -= 2000; monster_race_2_1 = 0; monster_race_2_2 = 0; close2; warp "p_track02",75,41; end; } else if ($@mon_time_2_1 == 2) { mes "[Eckar Erenes]"; mes "We're still finishing our"; mes "preparations for the next"; mes "Double Monster Race, so"; mes "we ask that you please"; mes "wait a little while longer..."; close; } } if (!$@mon_time_2_2) { mes "[Eckar Erenes]"; mes "Right now, a Monster Race"; mes "is in progress. It's too late to place a wager, but if you'd like"; mes "to watch, the fee is 500 zeny"; mes "for spectators. Would you like to enter the Monster Race Arena?"; next; if (select("Enter", "Cancel") == 2) { mes "[Eckar Erenes]"; mes "Alright, then. If you'd like"; mes "to wager on a monster"; mes "race, please wait for the"; mes "current race to finish. I hope"; mes "that you enjoy your time here"; mes "in the Monster Race Arena~"; close; } if (Zeny > 499) { mes "[Eckar Erenes]"; mes "Thank you~"; mes "I hope you enjoy"; mes "watching this race!"; Zeny -= 500; monster_race_2_1 = 0; monster_race_2_2 = 0; close2; warp "p_track02",75,41; end; } mes "[Eckar Erenes]"; mes "I'm sorry, but you don't"; mes "have enough money to pay"; mes "the 500 zeny spectator fee."; close; } mes "[Eckar Erenes]"; mes "I'm sorry, but a monster"; mes "race has just ended, so we're"; mes "having the 5 minute period in"; mes "which the winners can claim"; mes "their Prize Medals. The gate"; mes "will open soon, so please wait."; close; OnEnable: enablenpc "Eckar Erenes#double"; end; OnDisable: disablenpc "Eckar Erenes#double"; end; } p_track02,73,22,1 script Ticket Helper#2 4_M_HUMAN_02,{ if (!checkweight(Spawn,200)) { mes "[Ticket Helper]"; mes "Welcome to the"; mes "Monster Race Arena."; mes "If you'd like to participate"; mes "in the ^3131FFDouble Monster Race^000000,"; mes "then please select 1 out of"; mes "the 6 monsters from the list."; next; mes "[Ticket Helper]"; mes "Wait, wait..."; mes "I can't give you"; mes "anything right now."; mes "You're carrying way"; mes "too many things..."; close; } if (!monster_race_2_1 && !monster_race_2_2) { mes "[Ticket Helper]"; mes "Hello there!"; mes "Interested in wagering on"; mes "the Dual Monster Race?"; mes "I'm here to help you if you've"; mes "got any questions, or if you"; mes "want to place your wager."; next; switch(select("Check Monster Status", "Wager on Race", "Monster Race?", "Cancel")) { case 1: for (.@i = 1; .@i <= 6; ++.@i) mes "Monster "+.@i+" [^CC6600Luck^000000: " + $@mon_r02_luk[.@i] + "] [^EE0000HP^000000: " + $@mon_r02_tire[.@i] + "]"; close; case 2: mes "[Ticket Helper]"; mes "Alright, please choose which"; mes "two monsters that you think"; mes "will win 1st and 2nd place."; mes "If both your monsters come"; mes "in 1st and 2nd, in any order,"; mes "you'll win the wager."; next; mes "[Ticket Helper]"; mes "Now, please tell me"; mes "your first choice for one"; mes "of the monsters that"; mes "will win this race."; next; while (true) { .@list$ = ""; for (.@i = 1; .@i <= 6; ++.@i) .@list$ += (.@i != .@m1 ? "Monster " + .@i:"") + ":"; .@m = select (.@list$); switch (.@m) { case 1: setarray .@string$, "a friendly","Poring type monster"; break; case 2: setarray .@string$, "an adorable","Lunatic type monster"; break; case 3: setarray .@string$, "a darling","Savage Babe monster"; break; case 4: setarray .@string$, "a gentle baby","Desert Wolf monster"; break; case 5: setarray .@string$, "a small, yet","demonic, Deviruchi"; break; case 6: setarray .@string$, "a naughty","Baphomet Jr. monster"; break; } mes "[Ticket Helper]"; mes "You've chosen"; mes "^0000FFMonster "+.@m+"^000000, "+.@string$[0]; mes .@string$[1]+"."; mes "Are you sure you want"; mes "to choose this monster?"; next; if (select("Yes", "No") == 2) { mes "[Ticket Helper]"; mes "You have canceled"; mes "your wager. Okay,"; mes "I understand. Perhaps"; mes "you'd feel more comfortable"; mes "checking the monsters first?"; close; } if (!.@m1) { mes "[Ticket Helper]"; mes "Now, please make"; mes "your second choice"; mes "for the monster that"; mes "you think will place"; mes "1st or 2nd in this race."; next; .@m1 = .@m; continue; } if ($@mon_time_2_2 != 0) { mes "[Ticket Helper]"; mes "I'm very sorry, but a"; mes "monster race is underway."; mes "Please wait, and then place"; mes "your wager for the next race."; close; } mes "[Ticket Helper]"; mes "You've wagered on"; mes "^0000FFMonster "+.@m1+"^000000 and ^0000FFMonster "+.@m+"^000000"; mes "to win this race. Good luck!"; mes "I really hope that the odds"; mes "work out in your favor~"; emotion e_kis; monster_race_2_1 = .@m1; monster_race_2_2 = .@m; getitem Monster_Ticket,1; close; } case 3: mes "[Ticket Helper]"; mes "Monster Races originated from"; mes "simple children's games in which"; mes "Cute Pets would race against each other. This grew into an adult"; mes "pastime that is so popular, we've built a racing arena in Hugel."; next; mes "[Ticket Helper]"; mes "Our Monster Race Arena hosts"; mes "two types of monster races. First, we have the Single Monster Race,"; mes "in which those that wagered on the 1st place monster are rewarded."; next; mes "[Eclar Ellbird]"; mes "Then, we have the Dual Monster"; mes "Race in which those that wagered on the 1st and 2nd place monsters"; mes "are equally rewarded. The house"; mes "odds and wager rewards are greater in Dual Races than Single Races."; next; mes "[Ticket Helper]"; mes "Although a small entrance"; mes "fee is required, we only use"; mes "the money to give rewards to"; mes "participants and maintain this"; mes "arena. Therefore, we're not"; mes "profiting from this enterprise."; next; mes "[Ticket Helper]"; mes "Also, we prohibit others"; mes "from making personal bets"; mes "and wagers, using items and"; mes "zeny, based on the outcomes"; mes "of these races. That kind of"; mes "gambling is illegal here..."; next; mes "[Ticket Helper]"; mes "Once you enter the Race Arena, you will receive a Racing Ticket."; mes "Keep in mind that winning Racing Tickets can only be exchanged for"; mes "Prize Medals during a 5 minute window after the end of the race."; next; mes "[Ticket Helper]"; mes "You're already here"; mes "inside the Monster Race"; mes "Arena, so you may as well"; mes "try placing a wager. It's"; mes "more fun than you'd think~"; close; case 4: mes "[Ticket Helper]"; mes "You have canceled"; mes "your wager. Okay,"; mes "I understand. Perhaps"; mes "you'd feel more comfortable"; mes "checking the monsters first?"; close; } } else { if (countitem(Monster_Ticket)) { mes "[Ticket Helper]"; mes "You've wagered on"; mes "^0000FFMonster " + monster_race_2_1 + "^000000 and ^0000FFMonster " + monster_race_2_2 + "^000000"; mes "for this Dual Monster Race."; next; } mes "[Ticket Helper]"; mes "The start of the race will be"; mes "announced through a broadcast."; mes "You can refer to your Mini-Map"; mes "to track the monsters' race"; mes "positions. Thank you, and"; mes "have a good time!"; viewpoint 1,43,35,0,0xFF0000; close; } OnInit: disablenpc "Ticket Helper#2"; end; } p_track02,39,49,3 script Game Guide#double 4_F_RACING,{ mes "[Game Guide]"; mes "Welcome to the"; mes "Monster Race Arena."; mes "How can I help you?"; next; switch(select("Monster Race Info", "Wager Info", "Ticket Redemption Info")) { case 1: mes "[Game Guide]"; mes "Monster Races originated from"; mes "simple children's games in which"; mes "Cute Pets would race against each other. This grew into an adult"; mes "pastime that is so popular, we've built a racing arena in Hugel."; next; mes "[Game Guide]"; mes "Our Monster Race Arena hosts"; mes "two types of monster races. First, we have the Single Monster Race,"; mes "in which those that wagered on the 1st place monster are rewarded."; next; mes "[Game Guide]"; mes "Then, we have the Dual Monster"; mes "Race in which the house odds and rewards are greater than in Single"; mes "Monster Races: you must wager on 2 monsters, and they must place in"; mes "1st and 2nd for you to win."; next; mes "[Game Guide]"; mes "Although a small entrance"; mes "fee is required, we only use"; mes "the money to give rewards to"; mes "participants and maintain this"; mes "arena. Therefore, we're not"; mes "profiting from this enterprise."; next; mes "[Game Guide]"; mes "Also, we prohibit others"; mes "from making personal bets"; mes "and wagers, using items and"; mes "zeny, based on the outcomes"; mes "of these races. That kind of"; mes "gambling is illegal here..."; next; mes "[Game Guide]"; mes "Once you enter the Race Arena, you will receive a Racing Ticket."; mes "Keep in mind that winning Racing Tickets can only be exchanged for"; mes "Prize Medals during a 5 minute window after the end of the race."; next; break; case 2: mes "[Game Guide]"; mes "Before placing a wager, you"; mes "must get a free Racing Ticket"; mes "from the Ticket Helper. There,"; mes "I've marked the Ticket Helper"; mes "on your Mini-Map, so you can"; mes "find him pretty easily."; viewpoint 1,73,22,1,0xFF3355; next; break; case 3: mes "[Game Guide]"; mes "If you wagered on the winner"; mes "of a Single Monster Race, or"; mes "on the 1st or 2nd place winners"; mes "in a Dual Monster Race, then"; mes "you can exchange your Racing"; mes "Ticket for Prize Medals."; next; mes "[Game Guide]"; mes "However, you must exchange"; mes "your Racing Ticket with the"; mes "Medal Distributor within the"; mes "5 minute window after the end"; mes "of the race. ^FF0000Your ticket becomes^FFFFFF ^FF0000 void after these 5 minutes.^000000"; next; mes "[Game Guide]"; mes "When this 5 minute window"; mes "elapses, you will be teleported outside, and we will immediately"; mes "begin preparing for the next race. Make sure that you remember this"; mes "information when you wager."; next; mes "[Game Guide]"; mes "If you haven't received"; mes "your free Racing Ticket,"; mes "then please visit the Ticket"; mes "Helper. There, I've just marked"; mes "his location on your Mini-Map."; viewpoint 1,67,45,2,0xCE6300; next; break; } mes "[Game Guide]"; mes "Thank you, and"; mes "I hope you enjoy"; mes "your time here in the"; mes "Monster Racing Arena."; close; } p_track02,67,45,5 script Medal Distributor#medal 4_F_RACING,{ if (!checkweight(Jellopy,20)) { mes "[Medal Distributor]"; mes "I'm sorry, but I can't"; mes "reward you with any medals"; mes "until you make more space"; mes "available in your Inventory."; close; } mes "[Medal Distributor]"; mes "Hello there~"; mes "If you've wagered on the"; mes "winning monster in a recent"; mes "race, then you can exchange"; mes "your game ticket here for"; mes "some Prize Medals."; next; if (!countitem(Monster_Ticket)) { mes "[Medal Distributor]"; mes "Please remember that you can"; mes "only exchange winning Game"; mes "Tickets for Prize Medals right"; mes "after the race finishes. Prize"; mes "Medals may be given to Wayne"; mes "in Hugel in exchange for items."; close; } mes "[Medal Distributor]"; mes "Please remember that you can"; mes "only exchange winning Game"; mes "Tickets for Prize Medals right"; mes "after the race finishes. Prize"; mes "Medals may be given to Wayne"; mes "in Hugel in exchange for items."; next; if (monster_race_2_1 == $@mon_race_2_1 && monster_race_2_2 == $@mon_race_2_2) { mes "[Medal Distributor]"; mes "Congratulations! It's really"; mes "difficult to guess the winners"; mes "of a Dual Monster Race, so you"; mes "must be really lucky! Would you"; mes "like to exchange your winning"; mes "Racing Ticket for Prize Medals?"; next; if (select("Yes, please.", "No, thanks.") == 1) { mes "[Medal Distributor]"; mes "Okay, everything looks good,"; mes "so here's your Prize Medals~"; mes "If you want to trade these"; mes "medals for items, please"; mes "visit Wayne in Hugel. We hope"; mes "you enjoyed the Monster Race~"; delitem Monster_Ticket,1; monster_race_2_1 = 7; monster_race_2_2 = 7; getitem Marvelous_Medal,15; close; } mes "[Medal Distributor]"; mes "Um, are you sure? You "; mes "can only exchange a winning"; mes "Racing Ticket for Prize Medals"; mes "for a short time after the race. If you made a mistake, you"; mes "should ask me again quickly."; close; } else if (!monster_race_2_1 && !monster_race_2_2) { mes "[Medal Distributor]"; mes "Well, better luck next time..."; mes "Although you can't always"; mes "be lucky, it's always fun to"; mes "wager on the monster races!"; close; } else if (monster_race_2_1 == 7 && monster_race_2_2 == 7) { mes "[Medal Distributor]"; mes "Thanks for visiting the"; mes "Monster Race Arena, and"; mes "I hope you enjoy your time"; mes "here. I'll see you next time~"; close; } else if (monster_race_2_1 != $@mon_race_2_1 || monster_race_2_2 != $@mon_race_2_2) { mes "[Medal Distributor]"; mes "You may not have wagered"; mes "on the winning monster in"; mes "the last race, but I hope that"; mes "you get lucky next time~"; close; } OnInit: disablenpc "Medal Distributor#medal"; end; } p_track02,76,38,1 script Exit Guide#double 4_M_NFMAN,{ mes "[Exit Guide]"; mes "If you have a winning Racing"; mes "Ticket, please make sure that"; mes "you redeem it for Prize Medals"; mes "now. All Racing Tickets become"; mes "void once the next race begins."; next; mes "[Exit Guide]"; mes "If you wish to leave"; mes "the arena, then I can guide"; mes "you outside. Would you like"; mes "to leave the arena right now?"; next; if (select("Yes", "No") == 2) { mes "[Exit Guide]"; mes "Alright, then."; mes "Just let me know"; mes "whenever you're"; mes "ready to leave."; close; } if (!countitem(Monster_Ticket)) { mes "[Exit Guide]"; mes "Thank you for"; mes "your patronage, and"; mes "I hope that you come"; mes "visit us again soon~"; } else { mes "[Exit Guide]"; mes "In accordance with our"; mes "policies, I must take your"; mes "Racing Ticket before you leave."; mes "Thank you for your patronage,"; mes "and I hope you enjoy your time"; mes "here in the Monster Race Arena."; delitem Monster_Ticket,1; } monster_race_2_1 = 0; monster_race_2_2 = 0; close2; warp "hugel",63,73; end; } - script mob1#main FAKE_NPC,{ function MN; OnEnable: enablenpc strnpcinfo(NPC_NAME); setarray .@mob[1], R_PORING,R_LUNATIC,R_SAVAGE_BABE,R_DESERT_WOLF_B,R_DEVIRUCHI,R_BAPHOMET_; getmapxy(.@m$, .@x, .@y, UNITTYPE_NPC); .@num = MN(); monster "p_track02",58,.@y,"Monster "+.@num,.@mob[.@num],1,strnpcinfo(NPC_NAME)+"::OnMyMobDead"; end; OnTouchNPC: .@i = MN(); if (!$@mon_race_2_1) { emotion e_lv; specialeffect EF_MVP; mapannounce "p_track02","Monster "+.@i+" has reached the Finish Line!",bc_map,"0x66FFCC"; $@mon_race_2_1 = .@i; donpcevent strnpcinfo(NPC_NAME)+"::OnDisable"; } else { emotion e_lv; specialeffect EF_MVP; mapannounce "p_track02","The race is over! Monster "+.@i+" has reached the Finish Line!",bc_map,"0x66FFCC"; $@mon_race_2_2 = .@i; donpcevent "#poring1::OnDisable"; donpcevent "#lunatic1::OnDisable"; donpcevent "#savagebebe1::OnDisable"; donpcevent "#desertwolf1::OnDisable"; donpcevent "#deviruchi1::OnDisable"; donpcevent "#baphomet1::OnDisable"; donpcevent "TrapGlobal#race02::OnDisable"; enablenpc "Medal Distributor#medal"; donpcevent "#race_timer2-3::OnEnable"; } end; OnMyMobDead: end; OnDisable: killmonster "p_track02",strnpcinfo(NPC_NAME)+"::OnMyMobDead"; disablenpc strnpcinfo(NPC_NAME); end; OnInit: if (strnpcinfo(NPC_NAME_HIDDEN) != "main") disablenpc strnpcinfo(NPC_NAME); end; function MN { setarray .@n$[1], "poring","lunatic","savagebebe","desertwolf","deviruchi","baphomet"; for (.@i = 1; .@i <= getarraysize(.@n$); ++.@i) { if (compare(strnpcinfo(NPC_NAME),.@n$[.@i])) break; } return .@i; } } p_track02,30,38,0 duplicate(mob1#main) #poring1 HIDDEN_WARP_NPC,0,0 p_track02,30,36,0 duplicate(mob1#main) #lunatic1 HIDDEN_WARP_NPC,0,0 p_track02,30,34,0 duplicate(mob1#main) #savagebebe1 HIDDEN_WARP_NPC,0,0 p_track02,30,32,0 duplicate(mob1#main) #desertwolf1 HIDDEN_WARP_NPC,0,0 p_track02,30,30,0 duplicate(mob1#main) #deviruchi1 HIDDEN_WARP_NPC,0,0 p_track02,30,28,0 duplicate(mob1#main) #baphomet1 HIDDEN_WARP_NPC,0,0 p_track02,19,48,0 script TrapGlobal#race02 FAKE_NPC,{ OnEnable: enablenpc "TrapGlobal#race02"; for (.@c = 1; .@c <= 6; ++.@c) { .@line = rand(1,70); enablenpc "starting#race02_"+.@c; enablenpc "Tire#race02_"+.@c+"_1"; if (.@line <= 10) { .@tired = rand(50,60); enablenpc "Luk#race02_"+.@c+"_5"; enablenpc "Luk#race02_"+.@c+"_6"; } else if (.@line <= 30) { .@tired = rand(40,60); enablenpc "Luk#race02_"+.@c+"_5"; if (.@tired < 50) enablenpc "Tire#race02_"+.@c+"_2"; } else if (.@line <= 40) { .@tired = rand(30,50); enablenpc "Luk#race02_"+.@c+"_1"; enablenpc "Tire#race02_"+.@c+"_2"; if (.@tired < 40) enablenpc "Tire#race02_"+.@c+"_3"; } else if (.@line <= 50) { .@tired = rand(20,40); enablenpc "Luk#race02_"+.@c+"_1"; enablenpc "Luk#race02_"+.@c+"_2"; enablenpc "Tire#race02_"+.@c+"_2"; enablenpc "Tire#race02_"+.@c+"_3"; if (.@tired < 30) enablenpc "Tire#race02_"+.@c+"_4"; } else if (.@line <= 60) { .@tired = rand(10,30); for (.@i = 1; .@i <= 3; ++.@i) enablenpc "Luk#race02_"+.@c+"_"+.@i; for (.@i = 2; .@i <= 4; ++.@i) enablenpc "Tire#race02_"+.@c+"_"+.@i; if (.@tired < 20) enablenpc "Tire#race02_"+.@c+"_5"; } else if (.@line <= 70) { .@tired = rand(0,20); for (.@i = 1; .@i <= 4; ++.@i) enablenpc "Luk#race02_"+.@c+"_"+.@i; for (.@i = 2; .@i <= 5; ++.@i) enablenpc "Tire#race02_"+.@c+"_"+.@i; if (.@tired < 10) enablenpc "Tire#race02_"+.@c+"_6"; } $@mon_r02_luk[.@c] = .@line; $@mon_r02_tire[.@c] = .@tired; } end; OnDisable: disablenpc "TrapGlobal#race02"; for (.@i = 1; .@i <= 6; ++.@i) donpcevent "starting#race02_"+.@i+"::OnDisable"; end; OnInit: for (.@i = 1; .@i <= 6; ++.@i) { $@mon_r02_luk[.@i] = 0; $@mon_r02_tire[.@i] = 0; } end; } - script starting_2 FAKE_NPC,{ OnTouchNPC: .@start = rand(1,100); if (.@start < 11) .@speed = 60; else if (.@start < 21) .@speed = 70; else if (.@start < 31) .@speed = 80; else if (.@start < 41) .@speed = 90; else if (.@start < 51) .@speed = 100; else if (.@start < 61) .@speed = 110; else if (.@start < 71) .@speed = 120; else if (.@start < 81) .@speed = 130; else if (.@start < 91) .@speed = 140; else .@speed = 150; sc_start SC_WALKSPEED,5000,.@speed; end; OnDisable: for(.@i = 1; .@i < 7; ++.@i) { disablenpc "Luk#"+strnpcinfo(NPC_NAME_HIDDEN)+"_"+.@i; disablenpc "Tire#"+strnpcinfo(NPC_NAME_HIDDEN)+"_"+.@i; } disablenpc strnpcinfo(NPC_NAME); end; OnInit: disablenpc strnpcinfo(NPC_NAME); end; } p_track02,56,38,0 duplicate(starting_2) starting#race02_1 FAKE_NPC,0,0 p_track02,56,36,0 duplicate(starting_2) starting#race02_2 FAKE_NPC,0,0 p_track02,56,34,0 duplicate(starting_2) starting#race02_3 FAKE_NPC,0,0 p_track02,56,32,0 duplicate(starting_2) starting#race02_4 FAKE_NPC,0,0 p_track02,56,30,0 duplicate(starting_2) starting#race02_5 FAKE_NPC,0,0 p_track02,56,28,0 duplicate(starting_2) starting#race02_6 FAKE_NPC,0,0 p_track02,33,38,0 duplicate(Luk_1) Luk#race02_1_1 FAKE_NPC,0,0 p_track02,37,38,0 duplicate(Luk_1) Luk#race02_1_2 FAKE_NPC,0,0 p_track02,53,38,0 duplicate(Luk_1) Luk#race02_1_3 FAKE_NPC,0,0 p_track02,45,38,0 duplicate(Luk_1) Luk#race02_1_4 FAKE_NPC,0,0 p_track02,33,36,0 duplicate(Luk_1) Luk#race02_2_1 FAKE_NPC,0,0 p_track02,37,36,0 duplicate(Luk_1) Luk#race02_2_2 FAKE_NPC,0,0 p_track02,53,36,0 duplicate(Luk_1) Luk#race02_2_3 FAKE_NPC,0,0 p_track02,45,36,0 duplicate(Luk_1) Luk#race02_2_4 FAKE_NPC,0,0 p_track02,33,34,0 duplicate(Luk_1) Luk#race02_3_1 FAKE_NPC,0,0 p_track02,37,34,0 duplicate(Luk_1) Luk#race02_3_2 FAKE_NPC,0,0 p_track02,53,34,0 duplicate(Luk_1) Luk#race02_3_3 FAKE_NPC,0,0 p_track02,45,34,0 duplicate(Luk_1) Luk#race02_3_4 FAKE_NPC,0,0 p_track02,33,32,0 duplicate(Luk_1) Luk#race02_4_1 FAKE_NPC,0,0 p_track02,37,32,0 duplicate(Luk_1) Luk#race02_4_2 FAKE_NPC,0,0 p_track02,53,32,0 duplicate(Luk_1) Luk#race02_4_3 FAKE_NPC,0,0 p_track02,45,32,0 duplicate(Luk_1) Luk#race02_4_4 FAKE_NPC,0,0 p_track02,33,30,0 duplicate(Luk_1) Luk#race02_5_1 FAKE_NPC,0,0 p_track02,37,30,0 duplicate(Luk_1) Luk#race02_5_2 FAKE_NPC,0,0 p_track02,53,30,0 duplicate(Luk_1) Luk#race02_5_3 FAKE_NPC,0,0 p_track02,45,30,0 duplicate(Luk_1) Luk#race02_5_4 FAKE_NPC,0,0 p_track02,33,28,0 duplicate(Luk_1) Luk#race02_6_1 FAKE_NPC,0,0 p_track02,37,28,0 duplicate(Luk_1) Luk#race02_6_2 FAKE_NPC,0,0 p_track02,53,28,0 duplicate(Luk_1) Luk#race02_6_3 FAKE_NPC,0,0 p_track02,45,28,0 duplicate(Luk_1) Luk#race02_6_4 FAKE_NPC,0,0 p_track02,49,38,0 duplicate(Luk_2) Luk#race02_1_5 FAKE_NPC,0,0 p_track02,41,38,0 duplicate(Luk_2) Luk#race02_1_6 FAKE_NPC,0,0 p_track02,49,36,0 duplicate(Luk_2) Luk#race02_2_5 FAKE_NPC,0,0 p_track02,41,36,0 duplicate(Luk_2) Luk#race02_2_6 FAKE_NPC,0,0 p_track02,49,34,0 duplicate(Luk_2) Luk#race02_3_5 FAKE_NPC,0,0 p_track02,41,34,0 duplicate(Luk_2) Luk#race02_3_6 FAKE_NPC,0,0 p_track02,49,32,0 duplicate(Luk_2) Luk#race02_4_5 FAKE_NPC,0,0 p_track02,41,32,0 duplicate(Luk_2) Luk#race02_4_6 FAKE_NPC,0,0 p_track02,49,30,0 duplicate(Luk_2) Luk#race02_5_5 FAKE_NPC,0,0 p_track02,41,30,0 duplicate(Luk_2) Luk#race02_5_6 FAKE_NPC,0,0 p_track02,49,28,0 duplicate(Luk_2) Luk#race02_6_5 FAKE_NPC,0,0 p_track02,41,28,0 duplicate(Luk_2) Luk#race02_6_6 FAKE_NPC,0,0 p_track02,43,38,0 duplicate(Tire_1) Tire#race02_1_1 FAKE_NPC,0,0 p_track02,39,38,0 duplicate(Tire_1) Tire#race02_1_2 FAKE_NPC,0,0 p_track02,35,38,0 duplicate(Tire_1) Tire#race02_1_3 FAKE_NPC,0,0 p_track02,55,38,0 duplicate(Tire_1) Tire#race02_1_4 FAKE_NPC,0,0 p_track02,51,38,0 duplicate(Tire_1) Tire#race02_1_5 FAKE_NPC,0,0 p_track02,47,38,0 duplicate(Tire_1) Tire#race02_1_6 FAKE_NPC,0,0 p_track02,43,36,0 duplicate(Tire_1) Tire#race02_2_1 FAKE_NPC,0,0 p_track02,39,36,0 duplicate(Tire_1) Tire#race02_2_2 FAKE_NPC,0,0 p_track02,35,36,0 duplicate(Tire_1) Tire#race02_2_3 FAKE_NPC,0,0 p_track02,55,36,0 duplicate(Tire_1) Tire#race02_2_4 FAKE_NPC,0,0 p_track02,51,36,0 duplicate(Tire_1) Tire#race02_2_5 FAKE_NPC,0,0 p_track02,47,36,0 duplicate(Tire_1) Tire#race02_2_6 FAKE_NPC,0,0 p_track02,43,34,0 duplicate(Tire_1) Tire#race02_3_1 FAKE_NPC,0,0 p_track02,39,34,0 duplicate(Tire_1) Tire#race02_3_2 FAKE_NPC,0,0 p_track02,35,34,0 duplicate(Tire_1) Tire#race02_3_3 FAKE_NPC,0,0 p_track02,55,34,0 duplicate(Tire_1) Tire#race02_3_4 FAKE_NPC,0,0 p_track02,51,34,0 duplicate(Tire_1) Tire#race02_3_5 FAKE_NPC,0,0 p_track02,47,34,0 duplicate(Tire_1) Tire#race02_3_6 FAKE_NPC,0,0 p_track02,43,32,0 duplicate(Tire_1) Tire#race02_4_1 FAKE_NPC,0,0 p_track02,39,32,0 duplicate(Tire_1) Tire#race02_4_2 FAKE_NPC,0,0 p_track02,35,32,0 duplicate(Tire_1) Tire#race02_4_3 FAKE_NPC,0,0 p_track02,55,32,0 duplicate(Tire_1) Tire#race02_4_4 FAKE_NPC,0,0 p_track02,51,32,0 duplicate(Tire_1) Tire#race02_4_5 FAKE_NPC,0,0 p_track02,47,32,0 duplicate(Tire_1) Tire#race02_4_6 FAKE_NPC,0,0 p_track02,43,30,0 duplicate(Tire_1) Tire#race02_5_1 FAKE_NPC,0,0 p_track02,39,30,0 duplicate(Tire_1) Tire#race02_5_2 FAKE_NPC,0,0 p_track02,35,30,0 duplicate(Tire_1) Tire#race02_5_3 FAKE_NPC,0,0 p_track02,55,30,0 duplicate(Tire_1) Tire#race02_5_4 FAKE_NPC,0,0 p_track02,51,30,0 duplicate(Tire_1) Tire#race02_5_5 FAKE_NPC,0,0 p_track02,47,30,0 duplicate(Tire_1) Tire#race02_5_6 FAKE_NPC,0,0 p_track02,43,28,0 duplicate(Tire_1) Tire#race02_6_1 FAKE_NPC,0,0 p_track02,39,28,0 duplicate(Tire_1) Tire#race02_6_2 FAKE_NPC,0,0 p_track02,35,28,0 duplicate(Tire_1) Tire#race02_6_3 FAKE_NPC,0,0 p_track02,55,28,0 duplicate(Tire_1) Tire#race02_6_4 FAKE_NPC,0,0 p_track02,51,28,0 duplicate(Tire_1) Tire#race02_6_5 FAKE_NPC,0,0 p_track02,47,28,0 duplicate(Tire_1) Tire#race02_6_6 FAKE_NPC,0,0 //== NPCs for Redeeming Prize Medals (Einbroch and Hugel) == ein_in01,85,208,5 script Ei'felle#repay01 4_M_EINMAN2,{ if (!ein_medal01) { mes "[Ei'felle]"; mes "Curses! We need to deliver"; mes "what our customers ordered,"; mes "but we've been making nothing"; mes "but shipshod products! If we"; mes "only had that metal, we could"; mes "pump up our product quality!"; next; select("What metal are you talking about?"); mes "[Ei'felle]"; mes "There's a small village"; mes "at the outskirts of the"; mes "Schwaltzvalt Republic that"; mes "gives these special medals"; mes "that are made of this metal"; mes "which we desperately need..."; next; mes "[Ei'felle]"; mes "We've sent one of our best"; mes "guildsmen to get some of those"; mes "medals for us, but he hasn't"; mes "reported back to us quite yet."; mes "I'm getting pretty anxious..."; next; mes "[Ei'felle]"; mes "I mean, we need a whole"; mes "lot of that metal to fill out"; mes "our orders and finish our"; mes "manufacturing research,"; mes "but so far, none of us have"; mes "been able to get any medals..."; next; if (countitem(Marvelous_Medal)) { mes "["+ strcharinfo(PC_NAME) +"]"; mes "Oh! Are you talking"; mes "about the medals that"; mes "they give as rewards in"; mes "the Monster Race Arena?"; mes "I have some of those."; next; mes "[Ei'felle]"; mes "Huh? Show them to me..."; mes "Yes! That's exactly what"; mes "we need! Would you please"; mes "donate your medals so that we"; mes "can finally make some quality"; mes "products for our customers?"; next; callsub S_Reward; end; } mes "[Ei'felle]"; mes "If you happen to obtain any"; mes "medals from the Monster"; mes "Race Arena in Hugel, then"; mes "please bring some of them"; mes "to me. I'll be sure to repay"; mes "you for your kindness..."; close; } else if (ein_medal01 < 500) { mes "[Ei'felle]"; mes "Oh, how have you been?"; mes "Thank you so much for"; mes "donating so many medals,"; mes "they've been helpful in my"; mes "research. Still, I need more"; mes "and more of them everyday..."; next; if (countitem(Marvelous_Medal)) { mes "[Ei'felle]"; mes "The other Blacksmith"; mes "Guildsmen are doing their"; mes "best to collect Prize Medals"; mes "in Hugel, but they keep failing"; mes "to win them! If you have any"; mes "medals, then may I have some?"; next; callsub S_Reward; end; } mes "[Ei'felle]"; mes "If you happen to obtain any"; mes "medals from the Monster"; mes "Race Arena in Hugel, then"; mes "please bring some of them"; mes "to me. I'll be sure to repay"; mes "you for your kindness..."; close; } if (!checkweight(Knife,1)) { mes "[Ei'felle]"; mes "Goodness, you're carrying"; mes "so many things with you!"; mes "You'd better put some of"; mes "it away in Kafra Storage"; mes "before you're overwhelmed"; mes "by the bulk of your items!"; close; } if (ein_medal01 > 499 && ein_medal01 < 1500) { if (ein_medal01 < 1000) { mes "[Ei'felle]"; mes "Ah, welcome back! I've finally"; mes "made a breakthrough in my"; mes "metal research! Look, I've"; mes "developed this Glittering"; mes "Jacket! It's lightweight and"; mes "very durable, you see?"; next; mes "[Ei'felle]"; mes "I wouldn't be able to have"; mes "completed this without your"; mes "help. Now, would you like to"; mes "receive this Glittering Jacket"; mes "as my way of repaying you?"; next; if (select("Accept", "Wait for Further Development") == 1) { callsub S_BonusReward,500,Glittering_Clothes; end; } mes "[Ei'felle]"; mes "Ah, I see. You'd rather wait"; mes "until we develop something"; mes "more to your liking. In that"; mes "case, would you please donate"; mes "more medals to my research?"; mes "We're always low on them..."; next; } else if (ein_medal01 < 1500) { mes "[Ei'felle]"; mes "Oh, you're back!"; mes "Thanks to all the medals"; mes "that you've donated, I'm now"; mes "able to manufacture a set"; mes "of slotted armor imbued"; mes "with a property of your choice."; next; mes "[Ei'felle]"; mes "If you'd like, I can repay you"; mes "now by creating a set of slotted elemental armor for you, or we"; mes "can wait for you to donate more"; mes "medals until I can develop"; mes "something else for you."; next; switch(select("Accept Armor", "Can I have something else?", "Wait for Further Development")) { case 1: mes "[Ei'felle]"; mes "I can manufacture one set of"; mes "slotted Armor imbued with the"; mes "Fire, Earth, Wind, or Water"; mes "property. Which property would"; mes "you like your armor to have?"; next; switch(select("Fire Property", "Earth Property", "Wind Property", "Water Property")) { case 1: callsub S_BonusReward,1000,Flame_Sprits_Armor_; end; case 2: callsub S_BonusReward,1000,Earth_Sprits_Armor_; end; case 3: callsub S_BonusReward,1000,Wind_Sprits_Armor_; end; case 4: callsub S_BonusReward,1000,Water_Sprits_Armor_; end; } case 2: mes "[Ei'felle]"; mes "Something else...?"; mes "Oh, you must mean"; mes "the Glittering Jacket that"; mes "I developed earlier. After"; mes "all, I have any other items"; mes "to offer you for now..."; next; callsub S_BonusReward,500,2319; end; case 3: mes "[Ei'felle]"; mes "Ah, I see. You'd rather wait"; mes "until we develop something"; mes "more to your liking. In that"; mes "case, would you please donate"; mes "more medals to my research?"; mes "We're always low on them..."; next; break; } } if (countitem(Marvelous_Medal)) { mes "[Ei'felle]"; mes "The other Blacksmith"; mes "Guildsmen are doing their"; mes "best to collect Prize Medals"; mes "in Hugel, but they keep failing"; mes "to win them! If you have any"; mes "medals, then may I have some?"; next; callsub S_Reward; end; } mes "[Ei'felle]"; mes "If you happen to obtain any"; mes "medals from the Monster"; mes "Race Arena in Hugel, then"; mes "please bring some of them"; mes "to me. I'll be sure to repay"; mes "you for your kindness..."; close; } else if (ein_medal01 > 1499) { mes "[Ei'felle]"; mes "Ah, you're back! I've"; mes "extracted all the metal"; mes "from the medals you've"; mes "given me, and I think I have"; mes "enough to create a Level 4"; mes "Weapon. Isn't that incredible?"; next; mes "[Ei'felle]"; mes "If you like, I can create"; mes "one of these weapons for you"; mes "as my way of repaying you for"; mes "your help. What do you think?"; next; if (select("Yes, I want a Level 4 Weapon.", "Can I have something else?") == 2) { mes "[Ei'felle]"; mes "Something else?"; mes "Oh, alright then, would"; mes "you like to have a Glittering"; mes "Jacket, or a set of slotted"; mes "elemental Armor? Please go"; mes "ahead and make your choice~"; next; switch (select("Glittering Jacket", "Fire Property Armor", "Earth Property Armor", "Wind Property Armor", "Water Property Armor", "Cancel")) { case 1: callsub S_BonusReward,500,2319; end; case 2: callsub S_BonusReward,1000,2345; end; case 3: callsub S_BonusReward,1000,2351; end; case 4: callsub S_BonusReward,1000,2349; end; case 5: callsub S_BonusReward,1000,2347; end; case 6: close; } } setarray .@type$, "Dagger","One Handed Sword","Two Handed Sword","Axe","Mace","Bow","Staff","Book","Spear","Katar","Knuckle","Whip","Musical Instrument"; .@m = select(implode(.@type$,":")) - 1; mes "[Ei'felle]"; mes "So you'd like to have a"; mes .@type$[.@m]+"? Please choose"; mes "which Level 4 Weapon"; mes "that you want me to create."; next; switch (.@m) { case 0: .@weapon$ = "Ginnungagap:Grimtooth:Dragon Killer:Mail Breaker:Bazerald:Sword Breaker:Ice Pick:Sucsamad:Kitchen Knife:Azoth:Exorciser:Assassin Dagger:Moonlight Dagger:Weeder Knife:Cursed Dagger:Dagger of Counter:Combat Knife:Fortune Sword"; setarray .@weapon_id, 13002,1237,13001,1225,1231,1224,1230,1236,1229,1235,1233,1232,1234,1227,1241,1242,1228,1223; break; case 1: .@weapon$ = "Nagan:Immaterial Sword:Mysteltainn:Byeollungum:Star Dust Blade:Caesar's Sword:Ice Falchion:Excalibur:Edge:Cutlus:Solar Sword:Tirfing:Fireblend"; setarray .@weapon_id, 1130,1141,1138,1140,1148,1134,1131,1137,1132,1135,1136,1139,1133; break; case 2: .@weapon$ = "Dragon Slayer:Masamune:Muramasa:Schweizersabel:Executioner:Zweihander:Katzbalger"; setarray .@weapon_id, 1166,1165,1164,1167,1169,1168,1170; break; case 3: .@weapon$ = "Great Axe:Guillotine:Light Epsilon:Bloody Axe:Sabbath:Slaughter:Cleaver:Tomahawk"; setarray .@weapon_id, 1364,1369,1366,1363,1365,1367,1305,1368; break; case 4: .@weapon$ = "Golden Mace:Grand Cross:Long Mace:Spike:Slash:Quadrille"; setarray .@weapon_id, 1524,1528,1525,1523,1526,1527; break; case 5: .@weapon$ = "Roguemaster's Bow:Dragon Wing:Rudra's Bow:Ballista"; setarray .@weapon_id, 1719,1724,1720,1722; break; case 6: .@weapon$ = "Wing Staff:Wizardry Staff"; setarray .@weapon_id, 1616,1473; case 7: .@weapon$ = "Legacy of Dragon:Book of the Apocalypse:Girl's Diary:Hardcover Book"; setarray .@weapon_id, 1559,1557,1558,1561; break; case 8: .@weapon$ = "Gae Bolg:Gelerdria:Gungnir:Skewer:Longinus's Spear:Brionac:Bill Guisarme:Zephyrus:Crescent Scythe:Tjungkuletti:Hellfire"; setarray .@weapon_id, 1474,1414,1413,1415,1469,1470,1467,1468,1466,1416,1471; break; case 9: .@weapon$ = "Infiltrator:Bloody Roar:Unholy Touch"; setarray .@weapon_id, 1261,1265,1263; break; case 10: .@weapon$ = "Hatii Claw:Berserk:Kaiser Knuckle"; setarray .@weapon_id, 1815,1814,1813; break; case 11: .@weapon$ = "Lariat:Rapture Rose:Blade Whip:Chemeti:Queen's Whip"; setarray .@weapon_id, 1962,1963,1969,1964,1970; break; case 12: .@weapon$ = "Oriental Lute:Electric Guitar"; setarray .@weapon_id, 1918,1913; break; } .@choice = select (.@weapon$+":Cancel") - 1; if (.@choice == getarraysize(.@weapon_id)) close; callsub S_BonusReward,1500,.@weapon_id[.@choice]; end; } S_Reward: if (select("Sure", "No") == 2) { mes "[Ei'felle]"; mes "Oh, alright..."; mes "Still, I really need"; mes "those medals, so if you"; mes "change your mind, please"; mes "come back as soon as you can."; emotion e_sob; close; } mes "[Ei'felle]"; mes "Oh, thank you so much!"; mes "I can use the metal in those"; mes "medals to produce some high"; mes "quality products. Now, how"; mes "shall I repay you for giving me"; mes "some of your Prize Medals?"; next; switch(select("Base Experience", "Job Experience", "No, I'm just glad to help.", "How's your research progressing?")) { case 1: mes "[Ei'felle]"; mes "You just want to improve"; mes "yourself, huh? Well, I dunno"; mes "if you want to get stronger,"; mes "smarter, or faster, but I can"; mes "coach you on some visualization if you like. Now, relax with me~"; mes "physical development."; next; mes "[Ei'felle]"; mes "Focus... and believe."; mes "Believe that you are"; mes "becoming what you want"; mes "to be! B-believe... with"; mes "all of your freakin' heart!"; emotion e_omg,1; emotion e_omg; next; mes "[Ei'felle]"; mes "*Phew* How's that?"; mes "Now do you see the"; mes "power of hope?"; delitem Marvelous_Medal,1; if (RENEWAL_EXP) { if (BaseLevel < 21) getexp 110,0; else if ((BaseLevel > 20) && (BaseLevel < 31)) getexp 280,0; else if ((BaseLevel > 30) && (BaseLevel < 41)) getexp 1000,0; else if ((BaseLevel > 40) && (BaseLevel < 51)) getexp 1200,0; else if ((BaseLevel > 50) && (BaseLevel < 61)) getexp 1500,0; else if ((BaseLevel > 60) && (BaseLevel < 71)) getexp 2800,0; else if ((BaseLevel > 70) && (BaseLevel < 81)) getexp 4500,0; else getexp 8500,0; /* iRO EXP Table: if (BaseLevel < 21) getexp 200,0; else if ((BaseLevel > 20) && (BaseLevel < 31)) getexp 300,0; else if ((BaseLevel > 30) && (BaseLevel < 41)) getexp 1000,0; else if ((BaseLevel > 40) && (BaseLevel < 51)) getexp 1800,0; else if ((BaseLevel > 50) && (BaseLevel < 61)) getexp 2500,0; else if ((BaseLevel > 60) && (BaseLevel < 71)) getexp 4700,0; else if ((BaseLevel > 70) && (BaseLevel < 81)) getexp 5500,0; else if ((BaseLevel > 80) && (BaseLevel < 96)) getexp 7000,0; else if ((BaseLevel > 95) && (BaseLevel < 111)) getexp 8800,0; else if ((BaseLevel > 110) && (BaseLevel < 126)) getexp 10900,0; else if ((BaseLevel > 125) && (BaseLevel < 141)) getexp 13300,0; else getexp 16000,0; */ } else { if (BaseLevel < 21) getexp 150,0; else if ((BaseLevel > 20) && (BaseLevel < 31)) getexp 300,0; else if ((BaseLevel > 30) && (BaseLevel < 41)) getexp 2000,0; else if ((BaseLevel > 40) && (BaseLevel < 51)) getexp 8000,0; else if ((BaseLevel > 50) && (BaseLevel < 61)) getexp 25000,0; else if ((BaseLevel > 60) && (BaseLevel < 71)) getexp 47000,0; else if ((BaseLevel > 70) && (BaseLevel < 81)) getexp 55000,0; else getexp 65000,0; } close; case 2: mes "[Ei'felle]"; mes "You want to become more"; mes "competent in your job? Um..."; mes "Alright, we can do that. Just"; mes "meditate with me, and we'll go"; mes "do some imagery work together."; mes "I'm real good at this you know."; next; mes "[Ei'felle]"; mes "J-just... visualize"; mes "yourself... being..."; mes "t-totally... awesome!"; mes "You've gotta see it, and"; mes "you've gotta feel it in your"; mes "freakin' heart and mind!"; emotion e_omg,1; emotion e_omg; next; mes "[Ei'felle]"; mes "Yeap, it doesn't matter"; mes "if it's real or imagined..."; mes "Your mind will work on"; mes "whatever you feed it."; mes "Placebos and psychosomatic symptoms-- it all ties together."; delitem Marvelous_Medal,1; if (RENEWAL_EXP) { if (Class == Job_Novice) { getexp 0,15; } else if (Class == Job_Novice_High) { getexp 0,25; } else if ((Class >= Job_Swordman && Class <= Job_Thief) || Class == Job_Taekwon) { if (JobLevel < 11) getexp 0,25; else if ((JobLevel > 10) && (JobLevel < 21)) getexp 0,200; else if ((JobLevel > 20) && (JobLevel < 31)) getexp 0,300; else if ((JobLevel > 30) && (JobLevel < 41)) getexp 0,950; else getexp 0,1800; } else if ((Class >= Job_Knight && Class <= Job_Crusader2) || (Class >= Job_Swordman_High && Class <= Job_Thief_High)) { if (JobLevel < 11) getexp 0,40; else if ((JobLevel > 10) && (JobLevel < 21)) getexp 0,300; else if ((JobLevel > 20) && (JobLevel < 31)) getexp 0,550; else if ((JobLevel > 30) && (JobLevel < 41)) getexp 0,1080; else getexp 0,2150; } else { if (JobLevel < 11) getexp 0,55; else if ((JobLevel > 10) && (JobLevel < 21)) getexp 0,330; else if ((JobLevel > 20) && (JobLevel < 31)) getexp 0,600; else if ((JobLevel > 30) && (JobLevel < 41)) getexp 0,1200; else if ((JobLevel > 40) && (JobLevel < 51)) getexp 0,1750; else getexp 0,2950; } /* iRO JEXP Table: if (BaseLevel < 21) getexp 0,150; else if ((BaseLevel > 20) && (BaseLevel < 31)) getexp 0,200; else if ((BaseLevel > 30) && (BaseLevel < 41)) getexp 0,750; else if ((BaseLevel > 40) && (BaseLevel < 51)) getexp 0,1800; else if ((BaseLevel > 50) && (BaseLevel < 61)) getexp 0,2500; else if ((BaseLevel > 60) && (BaseLevel < 71)) getexp 0,3525; else if ((BaseLevel > 70) && (BaseLevel < 81)) getexp 0,4125; else if ((BaseLevel > 80) && (BaseLevel < 96)) getexp 0,5250; else if ((BaseLevel > 95) && (BaseLevel < 111)) getexp 0,6600; else if ((BaseLevel > 110) && (BaseLevel < 126)) getexp 0,8175; else if ((BaseLevel > 125) && (BaseLevel < 141)) getexp 0,9975; else getexp 0,12000; */ } else { if (Class == Job_Novice) { getexp 0,30; } else if ((Class >= Job_Swordman && Class <= Job_Thief) || Class == Job_Taekwon) { if (JobLevel < 11) getexp 0,50; else if ((JobLevel > 10) && (JobLevel < 21)) getexp 0,250; else if ((JobLevel > 20) && (JobLevel < 31)) getexp 0,1500; else if ((JobLevel > 30) && (JobLevel < 41)) getexp 0,7000; else getexp 0,20000; } else if (Class >= Job_Knight && Class <= Job_Crusader2) { if (JobLevel < 11) getexp 0,80; else if ((JobLevel > 10) && (JobLevel < 21)) getexp 0,2000; else if ((JobLevel > 20) && (JobLevel < 31)) getexp 0,10000; else if ((JobLevel > 30) && (JobLevel < 41)) getexp 0,25000; else getexp 0,38000; } else if (Class == Job_Novice_High) { getexp 0,40; } else if (Class >= Job_Swordman_High && Class <= Job_Thief_High) { if (JobLevel < 11) getexp 0,65; else if ((JobLevel > 10) && (JobLevel < 21)) getexp 0,300; else if ((JobLevel > 20) && (JobLevel < 31)) getexp 0,2500; else if ((JobLevel > 30) && (JobLevel < 41)) getexp 0,10000; else getexp 0,25000; } else if (Class >= Job_Lord_Knight && Class <= Job_Paladin_2) { if (JobLevel < 11) getexp 0,150; else if ((JobLevel > 10) && (JobLevel < 21)) getexp 0,2200; else if ((JobLevel > 20) && (JobLevel < 31)) getexp 0,13000; else if ((JobLevel > 30) && (JobLevel < 41)) getexp 0,27000; else if ((JobLevel > 40) && (JobLevel < 51)) getexp 0,38000; else getexp 0,40000; } else { if (JobLevel < 11) getexp 0,50; else if ((JobLevel > 10) && (JobLevel < 21)) getexp 0,250; else if ((JobLevel > 20) && (JobLevel < 31)) getexp 0,1500; else if ((JobLevel > 30) && (JobLevel < 41)) getexp 0,7000; else if ((JobLevel > 40) && (JobLevel < 51)) getexp 0,20000; else if ((JobLevel > 50) && (JobLevel < 61)) getexp 0,30000; else getexp 0,38000; } } close; case 3: mes "[Ei'felle]"; mes "What th--?! You sure"; mes "you don't want anything?"; mes "Hm, well, I think it's kind"; mes "of bad karma if I don't give"; mes "you anything in return, so..."; mes "Think of something. Quick."; next; mes "["+ strcharinfo(PC_NAME) +"]"; mes "Er, just use the medals"; mes "to further your manufacturing"; mes "research, and then you can"; mes "pay me back if your develop"; mes "something new. It's, um, like"; mes "an investment in your work!"; next; mes "[Ei'felle]"; mes "Yeah... Yeah."; mes "Okay, I see where"; mes "you're coming from."; mes "That's pretty smart."; mes "Okay, I'll repay you when"; mes "we develop something new!"; next; mes "[Ei'felle]"; mes "Anyway, I need as many"; mes "medals as I can get as"; mes "soon as I can. How many"; mes "medals do you think you"; mes "can give me right now?"; next; switch(select("Take them all.", "How about this much?", "No, I changed my mind.")) { case 1: mes "[Ei'felle]"; mes "Th-thank you!"; mes "Thank you so much!"; mes "Your help will greatly"; mes "advance my research,"; mes "and I promise to repay"; mes "you as soon as I can!"; .@medals = countitem(Marvelous_Medal); delitem Marvelous_Medal,.@medals; ein_medal01 += .@medals; close; case 2: mes "[Ei'felle]"; mes "Alright, please enter the"; mes "number of medals that"; mes "you're willing to give me."; mes "Please don't enter any"; mes "number greater than 100."; next; while (true) { input(.@input); if (.@input <= 0) { mes "[Ei'felle]"; mes "Aw, so you've decided"; mes "to cancel? Well, it's your"; mes "choice, but I'm still so"; mes "disappointed. Please come"; mes "back if you change your mind..."; close; } if (.@input > 100) { mes "[Ei'felle]"; mes "Remember, you can only"; mes "enter a number from 1 to 100."; mes "If you want to give me more"; mes "medals, then perhaps you"; mes "should just give them all to me~"; next; continue; } break; } if (countitem(Marvelous_Medal) < .@input) { mes "[Ei'felle]"; mes "I'm sorry, but I don't"; mes "think you have that many"; mes "medals with you. Make sure"; mes "that you offer me an amount of"; mes "medals that you actually have."; emotion e_heh; close; } mes "[Ei'felle]"; mes "Th-thank you!"; mes "Thank you so much!"; mes "Your help will greatly"; mes "advance my research,"; mes "and I promise to repay"; mes "you as soon as I can!"; delitem Marvelous_Medal,.@input; ein_medal01 += .@input; close; case 3: mes "[Ei'felle]"; mes "Oh, alright..."; mes "Still, I really need"; mes "those medals, so if you"; mes "change your mind, please"; mes "come back as soon as you can."; close; } case 4: mes "[Ei'felle]"; mes "Well, I've been able to"; mes "create a Glittering Jacket"; mes "using the medals that you've"; mes "brought to me. But I just know"; mes "I can make something better"; mes "if you'd bring me more!"; next; mes "[Ei'felle]"; mes "As of now, I have the metal"; mes "from ^FF0000"+ ein_medal01 +"^000000 Prizes Medals that"; mes "you've donated to me. The more"; mes "that you bring, the closer I can get to making a new breakthrough!"; close; } S_BonusReward: mes "[Ei'felle]"; .@arg1 = getarg(1); if (.@arg1 == 2319) { mes "Do you really want"; mes "this "+getitemname(.@arg1)+"?"; mes "You may want to forego this"; mes "reward in favor of getting"; mes "something better later..."; } else if (.@arg1 == 2345 || .@arg1 == 2347 || .@arg1 == 2349 || .@arg1 == 2351) { mes "Are you sure that you want"; mes "to accept this set of slotted"; if (.@arg1 == 2345) mes "Fire property Armor? If you do,"; else if (.@arg1 == 2351) mes "Earth property Armor? If you do,"; else if (.@arg1 == 2349) mes "Wind property Armor? If you do,"; else if (.@arg1 == 2347) mes "Water property Armor? If you do,"; mes "I'll need more medals from you"; mes "to make further advancements"; mes "in my manufacturing research."; } else { mes "So you wish to have a"; mes getitemname(.@arg1)+"? If you choose"; mes "to have this Level 4 Weapon,"; mes "I'll need to melt many of the"; mes "medals that you've donated"; mes "to me. Shall we proceed?"; } next; if (select("Decline", "Accept") == 1) { mes "["+ strcharinfo(PC_NAME) +"]"; mes "W-wait, I changed my"; mes "mind. Would it be fine"; mes "if I asked you to give"; mes "me a reward later?"; next; mes "[Ei'felle]"; if (!getiteminfo(.@arg1, ITEMINFO_WLV)) { // use item level to determine if the item is armor (no weapon level) mes "Of course, of course."; mes "Remember, if you donate"; mes "more medals to me, then"; mes "I'll be able to create items"; mes "of higher quality for you~"; } else { mes "I don't think I can develop"; mes "anything better than these Level 4 Weapons, but after making"; mes "such a big investment, you should decide on what you want carefully."; } close; } mes "[Ei'felle]"; if (.@arg1 == 2319) { mes "Here you are, I trust that"; mes "this "+getitemname(.@arg1)+" will"; mes "serve you well. Thank you"; mes "for your help, and I hope that"; mes "you'll continue to donate your"; mes "medals for my metal research~"; } else if (.@arg1 == 2345 || .@arg1 == 2347 || .@arg1 == 2349 || .@arg1 == 2351) { mes "Great choice! I'm sure"; if (.@arg1 == 2345) mes "that this set of slotted Fire"; else if (.@arg1 == 2351) mes "that this set of slotted Earth"; else if (.@arg1 == 2349) mes "that this set of slotted Wind"; else if (.@arg1 == 2347) mes "that this set of slotted Water"; mes "property Armor will serve you"; mes "well. Thank you for your help,"; mes "and if you get more medals,"; mes "please donate them to me~"; } else { mes "Once again, I'd like to"; mes "thank you for providing"; mes "me with all of those medals."; mes "I imagine it must have been"; mes "difficult. In any case, I would"; mes "appreciate your continued help~"; } ein_medal01 -= getarg(0); getitem .@arg1,1; close; } hugel,71,83,4 script Wayne 4_M_HUMERCHANT,{ if (!checkweight(Knife,1)) { mes "[Wayne]"; mes "Hold on a second..."; mes "If you want to exchange"; mes "your Prize Medals for items,"; mes "you'd better free up more space"; mes "in your Inventory first. Why don't you use your Kafra Storage?"; close; } mes "[Wayne]"; mes "Hello, there! Ever wonder"; mes "what you could do with all"; mes "the Prize Medals you can win"; mes "in Monster Race Arena? You"; mes "can donate them in Einbroch"; mes "to the Blacksmith Guild..."; next; mes "[Wayne]"; mes "...Or you can exchange them"; mes "for items, right here and right"; mes "now, with me. As always, the"; mes "choice is really up to you."; next; if (select("Prize Medal Exchange", "Cancel") == 2) { mes "[Wayne]"; mes "Well, just keep in mind"; mes "that you can always come"; mes "to me to trade in your Prize"; mes "Medals for consumable items."; mes "That guy in Einbroch? Not sure"; mes "what he'd give you for them..."; next; mes "[Wayne]"; mes "All I know is that he"; mes "needs a whole lot of medals"; mes "for the work that he's doing."; mes "Still, I hear that he just may"; mes "make your donations worth"; mes "all your effort, you know?"; close; } if (!checkweight(Jellopy,550)) { mes "[Wayne]"; mes "Hold on a second..."; mes "If you want to exchange"; mes "your Prize Medals for items,"; mes "you'd better free up more space"; mes "in your Inventory first. Why don't you use your Kafra Storage?"; close; } mes "[Wayne]"; mes "Now, how many Prize Medals"; mes "would you like to exchange?"; mes "It doesn't take a genius to"; mes "figure out that you can get"; mes "more valuable items by trading"; mes "more Prize Medals at a time."; next; setarray .@pm, 1,3,7,8,16,25,42,59; .@list$ = ""; for (.@i = 0; .@i < getarraysize(.@pm); ++.@i) .@list$ += .@pm[.@i] + " Prize medal:"; .@m = select(.@list$) - 1; switch (.@m) { case 0: .@items$ = "2 Hinale Leaflets:2 Aloe Leaflets:1 Mastela Fruit:5 Witch Starsands:4 Condensed Red Potions"; setarray .@item_array, 520,2,521,2,522,1,1061,5,545,4; break; case 1: .@items$ = "1 Royal Jelly:6 Holy Waters"; setarray .@item_array, 526,1,523,6; break; case 2: .@items$ = "1 Cookie Bag:1 First Aid Kit"; setarray .@item_array, 12130,1,12110,1; break; case 3: .@items$ = "1 Gift Box"; setarray .@item_array, 644,1; break; case 4: .@items$ = "1 Old Blue Box"; setarray .@item_array, 603,1; break; case 5: .@items$ = "1 Taming Gift Set"; setarray .@item_array, 12105,1; break; case 6: .@items$ = "1 Old Purple Box"; setarray .@item_array, 617,1; break; case 7: .@items$ = "1 Poring Box"; setarray .@item_array, 12109,1; break; } mes "[Wayne]"; mes "Now, please choose"; mes "which of the following item"; mes "sets that you'd like to receive"; mes "in exchange for "+.@pm[.@m]+" Prize Medal."+((getarraysize(.@item_array)<3)?" Well, we have only 1 set, but...":""); next; .@m2 = select(.@items$) - 1; if (countitem(Marvelous_Medal) < .@pm[.@m]) { mes "[Wayne]"; mes "Hey, you don't have"; mes "enough Prize Medals with"; mes "you. Go and get some more"; mes "if you want to exchange"; mes "them with me for anything."; close; } mes "[Wayne]"; mes "There you go~"; mes "Thanks for using my"; mes "service, and I hope that"; mes "you come visit me again"; mes "soon. Enjoy the monster"; mes "races, fair adventurer~"; delitem Marvelous_Medal,.@pm[.@m]; getitem .@item_array[.@m2*2], .@item_array[.@m2*2+1]; close; } //== Monster Race Affiliated NPCs ========================== airplane,246,47,1 script Eocatt#decoy01 4_M_OILMAN,{ mes "[Eocatt]"; mes "There's an old, humble"; mes "village on the outskirts of"; mes "the Schwaltzvalt Republic."; mes "It was just a tiny blip on the"; mes "map until they opened up"; mes "their Monster Race Arena!"; next; mes "[Eocatt]"; mes "If you win wagers on the"; mes "monster race games, you'll"; mes "be rewarded with these Prize"; mes "Medals that are made of some"; mes "really rare metal. I hear this metal's in demand in Einbroch..."; next; mes "[Eocatt]"; mes "Right, right..."; mes "I remember now, the"; mes "town was named Hugel."; mes "I'm sure there's other fun"; mes "things to do there, but I'm sure that the Race Arena is a must!"; close; } hugel,85,93,5 script Mudie#dummy01 4_M_LGTGRAND,{ mes "[Mudie]"; mes "The Monster Races"; mes "are probably the biggest"; mes "attraction here in Hugel."; mes "We don't have much else"; mes "going on here, I'm afraid."; next; mes "[Mudie]"; mes "If you want to go visit"; mes "the Monster Race Arena,"; mes "just head towards the"; mes "7 'o clock direction on"; mes "your Mini-Map, and look for"; mes "the hill surrounded by a fence."; next; mes "[Mudie]"; mes "You should find the arena"; mes "somewhere around that area."; mes "Anyway, if you want to wager"; mes "or just watch the races, just"; mes "ask one of the Eckar brothers. I hope you enjoy our little town~"; close; } p_track02,32,45,5 script Eccentric Scholar#double 4_M_SAGE_C,{ mes "[Eccentric Scholar]"; mes "Let's see now..."; mes "Monster 1's average speed"; mes "and luck, as affected by"; mes "wind resistance, fatigue..."; mes "What's the approximate"; mes "probability of winning...?"; next; mes "[Eccentric Scholar]"; mes "Crunch it into my"; mes "algorithm... Carry the two..."; mes "Wait, how many significant"; mes "figures should I be using?"; mes "Ah, right, 7, to account for x,"; mes "a value representing--"; next; mes "["+ strcharinfo(PC_NAME) +"]"; mes "Excuse me, but"; mes "what are you doing?"; next; mes "[Eccentric Scholar]"; mes "S-silence!"; mes "I must complete"; mes "my calculations!"; mes "Now, where was I...?"; specialeffect EF_CLAYMORE; emotion e_an; close; } p_track02,69,31,1 script Blacksmith Guildsman#dou 4_F_JOB_BLACKSMITH,{ if (!$@mon_time_2_2) { mes "[Blacksmith Guildsman]"; mes "How many times must"; mes "I wager on these races?!"; mes "I haven't won even once!"; mes "Oh, I must have the worst"; mes "luck in wagering history!"; emotion e_sob; next; mes "[Blacksmith Guildsman]"; mes "I've been assigned by my"; mes "guild to bring back some"; mes "Prize Medals to Einbroch..."; mes "They're apparently made"; mes "with some rare metal, but..."; mes "It's too hard for me to win~!"; emotion e_swt2; close; } mes "[Blacksmith Guildsman]"; mes "Run! Go go go!"; mes "I need to win some"; mes "medals! Otherwise, I'll"; mes "be too ashamed to return"; mes "home to Einbroch! F-faster!"; emotion e_korea; close; } p_track02,53,45,3 script Valiant Knight#double 4_M_JOB_KNIGHT1,{ mes "[Valiant Knight]"; mes "Hey, have you been"; mes "wagering on the races?"; mes "If you've got a hot tip, then"; mes "would you share it with me?"; mes "I've won some wagers... But"; mes "I really wanna win more!"; next; mes "[Valiant Knight]"; mes "Hah hah! It's like I tell"; mes "those Blacksmiths! If they"; mes "don't wanna lose all the time,"; mes "then they should just bet on the same monster. Me? I always"; mes "bet on the black Deviruchi~"; next; mes "[Valiant Knight]"; mes "You too...!"; mes "Always bet"; mes "on Deviruchi!"; emotion e_no1; close; } p_track01,27,47,5 script Drunkard#single 4_M_YURI,{ mes "[Familiar Drunkard]"; mes "Grrr...! ^333333*Hiccup*^000000"; mes "I just gotta win this"; mes "next game! I hafta do it!"; mes "Hey, you! Which number is"; mes "your lucky number? Huh?"; next; mes "["+ strcharinfo(PC_NAME) +"]"; mes "I, er..."; next; mes "[Familiar Drunkard]"; mes "C'mon, I need your"; mes "lucky number cuz I ran"; mes "out of mine! Tell me!"; mes "Tell me! ^333333*Hiccup~*^000000"; close; } p_track01,69,31,1 script Blacksmith Guildsman#sin 1_M_PAY_ELDER,{ mes "[Blacksmith Guildsman]"; mes "How can this be so hard?"; mes "Why can't I win at least"; mes "one of these races? Argh!"; mes "I can't go back until I get"; mes "at least one Prize Medal!"; next; mes "[Blacksmith Guildsman]"; mes "Yeah, I've been assigned"; mes "by the Einbroch Factory to"; mes "get some Prize Medals since"; mes "they're made of this rare medal. But it looks like they picked"; mes "the wrong guy for this job..."; next; mes "[Blacksmith Guildsman]"; mes "I mean, I've been here"; mes "forever and I haven't won"; mes "anything yet! Hey, do me"; mes "a favor and give any extra"; mes "Prize Medals you might have"; mes "to the Einbroch Factory, okay?"; close; } p_track01,45,42,3 script Absent Minded Man#single 4_M_SITDOWN,{ mes "[Absent Minded Man]"; mes "Say, are you here to bet"; mes "on the monster races? I've"; mes "come all the way here, just"; mes "because some strange man"; mes "asked me to win medals. It's"; mes "the only reason I'm in Hugel..."; next; mes "[Absent Minded Man]"; mes "But I've made more than"; mes "100 wagers, and haven't won"; mes "any of them! I mean, if I bet"; mes "on the same monster 6 times,"; mes "I should win at least once,"; mes "right? What's going on?!"; close; } hugel,5,5,3 script Monster Race Manager 4_M_LGTGUARD,{ callfunc "F_GM_NPC"; mes "[Monster Race Manager]"; mes "I can activate and"; mes "deactivate the Arena"; mes "Entry NPCs for the Single"; mes "and Dual Monster Races."; next; .@select = select("Single Race Entry - ON", "Dual Race Entry - ON", "Single Race Entry - OFF", "Dual Race Entry - OFF"); mes "[Monster Race Manager]"; mes "Please enter"; mes "the password."; next; .@i = callfunc("F_GM_NPC",1854,0,0,2000); if (.@i == -2) { mes "[Monster Race Manager]"; mes "Error."; close; } if (.@i == -1) { mes "[Monster Race Manager]"; mes "Incorrect password."; close; } if (.@i == 0) { close; } mes "[Monster Race Manager]"; switch(.@select) { case 1: mes "The Single Monster"; mes "Race Entry NPC is ON."; donpcevent "Eckar Ellebird#single::OnEnable"; close; case 2: mes "The Dual Monster"; mes "Race Entry NPC is ON."; donpcevent "Eckar Erenes#double::OnEnable"; close; case 3: mes "The Single Monster"; mes "Race Entry NPC is OFF."; donpcevent "Eckar Ellebird#single::OnDisable"; close; case 4: mes "The Dual Monster"; mes "Race Entry NPC is OFF."; donpcevent "Eckar Erenes#double::OnDisable"; close; } close; }