//===== Hercules Script ======================================
//= Hugel Monster Races
//===== By: ==================================================
//= L0ne_W0lf
//===== Current Version: =====================================
//= 2.0
//===== Description: =========================================
//= [Official Conversion]
//= - Hugel Monster Races (Single and Double)
//= - Prize Medal Exchanging, and Monster Track NPCs.
//= - Contains both euRO and iRO dialog.
//===== Additional Comments: =================================
//= 1.0 First version. Please report bugs. [L0ne_W0lf]
//= 1.1 Corrected a minor typo. [L0ne_W0lf]
//= 1.2 Replaced effect numerics with constants. [L0ne_W0lf]
//= 1.3 Ei'felle now gives Exercise. (Bugreport:4092) [L0ne_W0lf]
//= 1.4 Fixed call to a non-existant event. [L0ne_W0lf]
//= 1.5 Updated Dialog. [L0ne_W0lf]
//= 1.6 Updated experience rewards. [L0ne_W0lf]
//= 1.7 Optimization, -4000 lines (more can still be done). [Euphy]
//= 1.8 Optimized.
//= Fixed Medal Distributor (Dual Race) disappears accordingly. [Joseph]
//= 1.9 Updated RE/Pre-RE EXP. [Euphy]
//= 2.0 Added GM management NPC. [Euphy]
//============================================================
// Monster Race - Single Monster Race
//============================================================
hugel,51,61,0 script #race_timer1-1 -1,{
OnInit:
OnEnable:
enablenpc "#race_timer1-1";
$@mon_time_1_1 = 2;
initnpctimer;
end;
OnDisable:
disablenpc "#race_timer1-1";
stopnpctimer;
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;
donpcevent "#race_timer1-1::OnDisable";
stopnpctimer;
end;
}
p_track01,58,0,0 script Race Progress Timer -1,{
OnEnable:
enablenpc "Race Progress Timer";
initnpctimer;
for (.@i = 1; .@i <= 6; ++.@i)
enablenpc "starting#"+.@i;
.@c = 1;
while (.@c <= 6) {
setd ".@line_"+.@c,rand(1,70);
if (getd(".@line_"+.@c) <= 10) {
setd "$@mr_1_luk"+.@c,getd(".@line_"+.@c);
enablenpc "Luk"+.@c+"#5";
enablenpc "Luk"+.@c+"#6";
setd "$@mr_1_tire"+.@c,rand(50,60);
enablenpc "Tire"+.@c+"#1";
} else if (getd(".@line_"+.@c) <= 30) {
setd "$@mr_1_luk"+.@c,getd(".@line_"+.@c);
enablenpc "Luk"+.@c+"#5";
set getd(".@tired"+.@c),rand(40,60);
setd "$@mr_1_tire"+.@c,getd(".@tired"+.@c);
enablenpc "Tire"+.@c+"#1";
if (getd(".@tired"+.@c) >= 50) enablenpc "Tire"+.@c+"#2";
} else if (getd(".@line_"+.@c) <= 40) {
setd "$@mr_1_luk"+.@c,getd(".@line_"+.@c);
enablenpc "Luk"+.@c+"#1";
set getd(".@tired"+.@c),rand(30,50);
setd "$@mr_1_tire"+.@c,getd(".@tired"+.@c);
enablenpc "Tire"+.@c+"#1";
enablenpc "Tire"+.@c+"#2";
if (getd(".@tired"+.@c) < 40) enablenpc "Tire"+.@c+"#3";
} else if (getd(".@line_"+.@c) <= 50) {
setd "$@mr_1_luk"+.@c,getd(".@line_"+.@c);
enablenpc "Luk"+.@c+"#1";
enablenpc "Luk"+.@c+"#2";
set getd(".@tired"+.@c),rand(20,40);
setd "$@mr_1_tire"+.@c,getd(".@tired"+.@c);
for (.@i = 1; .@i <= 3; ++.@i)
enablenpc "Tire"+.@c+"#"+.@i;
if (getd(".@tired"+.@c) < 30) enablenpc "Tire"+.@c+"#4";
} else if (getd(".@line_"+.@c)) <= 60 {
setd "$@mr_1_luk"+.@c,getd(".@line_"+.@c);
for (.@i = 1; .@i <= 3; ++.@i)
enablenpc "Luk"+.@c+"#"+.@i;
set getd(".@tired"+.@c),rand(10,30);
setd "$@mr_1_tire"+.@c,getd(".@tired"+.@c);
for (.@i = 1; .@i <= 4; ++.@i)
enablenpc "Tire"+.@c+"#"+.@i;
if (getd(".@tired"+.@c) < 20) enablenpc "Tire"+.@c+"#5";
} else if (getd(".@line_"+.@c) <= 70) {
setd "$@mr_1_luk"+.@c,getd(".@line_"+.@c);
for (.@i = 1; .@i <= 4; ++.@i)
enablenpc "Luk"+.@c+"#"+.@i;
set getd(".@tired"+.@c),rand(0,20);
setd "$@mr_1_tire"+.@c,getd(".@tired"+.@c);
for (.@i = 1; .@i <= 5; ++.@i)
enablenpc "Tire"+.@c+"#"+.@i;
if (getd(".@tired"+.@c) < 10) enablenpc "Tire"+.@c+"#6";
}
++.@c;
}
end;
OnDisable:
disablenpc "Race Progress Timer";
stopnpctimer;
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";
$@mon_time_1_1 = 0;
$@monster_race = 0;
disablenpc "Ticket Helper#single";
for (.@i = 1; .@i <= 6; ++.@i)
donpcevent "Runner No. "+.@i+"::OnEnable";
stopnpctimer;
end;
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(908,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;
}
for (.@i = 1; .@i <= 6; ++.@i)
.@m$ += "Monster "+.@i+":";
.@m = select ("Monster Status:"+.@m$) - 1;
if (!.@m) {
for (.@i = 1; .@i <= 6; ++.@i)
mes "Monster "+.@i+" [^CC6600Luck^000000: " + getd("$@mr_1_luk"+.@i) + "] [^EE0000HP^000000: " + getd("$@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 7514,1; //Monster_Ticket
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 -1,{
function WN;
OnEnable:
emotion e_gasp;
enablenpc strnpcinfo(0);
getmapxy(.@m$,.@x,.@y,1);
setarray .@mob[1], 1725,1726,1727,1728,1730,1729;
monster "p_track01",58,.@y,"The "+WN(1)+" Racer",.@mob[WN(0)],1,strnpcinfo(0)+"::OnMyMobDead";
end;
OnDisable:
disablenpc strnpcinfo(0);
killmonster "p_track01",strnpcinfo(0)+"::OnMyMobDead";
end;
OnTouchNPC:
initnpctimer;
.@n = WN(0);
$@monster_race = .@n;
for (.@i = 1; .@i <= 6; ++.@i) {
if (.@n == .@i) continue;
donpcevent "Runner No. "+.@i+"::OnDisable";
}
end;
OnTimer1000:
mapannounce "p_track01","We have a winner...!",bc_map,"0x33FF66";
end;
OnTimer2000:
mapannounce "p_track01","Monster "+WN(0)+" is the winner of this race!",bc_map,"0x33FF66";
end;
OnTimer6000:
mapannounce "p_track01","If you wagered on Monster "+WN(0)+" in this race, talk to the Medal Distributor to receive your prize!",bc_map,"0x33FF66";
end;
OnTimer8000:
mapannounce "p_track01","Please remember that we can distribute Prize Medals for only 5 minutes after each race.",bc_map,"0x33FF66";
end;
OnTimer9000:
donpcevent "Medal Distributor#single::OnEnable";
donpcevent strnpcinfo(0)+"::OnDisable";
killmonster "p_track01",strnpcinfo(0)+"::OnMyMobDead";
stopnpctimer;
end;
function WN {
.@n = charat(strnpcinfo(0),getstrlen(strnpcinfo(0))-1);
if (!getarg(0)) return .@n;
return ((.@n <= 3)?((.@n == 1)?"1st":((.@n == 2)?"2nd":"3rd")):.@n+"th");
}
OnInit:
if (compare(strnpcinfo(0),"main")) end;
disablenpc strnpcinfo(0);
end;
}
p_track01,30,38,0 duplicate(Runner#main) Runner No. 1 -1,1,0
p_track01,30,36,0 duplicate(Runner#main) Runner No. 2 -1,1,0
p_track01,30,34,0 duplicate(Runner#main) Runner No. 3 -1,1,0
p_track01,30,32,0 duplicate(Runner#main) Runner No. 4 -1,1,0
p_track01,30,30,0 duplicate(Runner#main) Runner No. 5 -1,1,0
p_track01,30,28,0 duplicate(Runner#main) Runner No. 6 -1,1,0
p_track01,67,45,5 script Medal Distributor#single 4_F_RACING,{
if (!checkweight(908,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;
}
.@insa = rand(1,1000);
if (countitem(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(0)) {
mes "[Medal Distributor]";
mes "Ah, "+strcharinfo(0)+".";
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; //,0,1000;
if (!.@input) {
mes "[Medal Distributor]";
mes "Oh? You don't want";
mes "to exchange your";
mes "winning ticket?";
close;
} else 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 7514,1; //Monster_Ticket
monster_race_1 = 0;
getitem 7515,4; //Marvelous_Medal
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:
emotion e_gasp;
enablenpc "Medal Distributor#single";
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) {
donpcevent "starting#"+.@i+"::OnDisable";
setd "$@mr_1_luk"+.@i,0;
setd "$@mr_1_tire"+.@i,0;
}
.@c = 1;
while (.@c <= 6) {
for (.@i = 1; .@i <= 6; ++.@i) {
disablenpc "Tire"+.@c+"#"+.@i;
disablenpc "Luk"+.@c+"#"+.@i;
}
++.@c;
}
end;
OnTimer300000:
donpcevent "#race_timer1-1::OnEnable";
$@mon_time_1_1 = 2;
$@monster_race = 0;
mapwarp "p_track01","hugel",63,73;
end;
OnTimer306000:
donpcevent "Race Progress Timer::OnEnable";
end;
OnTimer342000:
disablenpc "Medal Distributor#single";
stopnpctimer;
end;
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(7514)) {
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 7514,1; //Monster_Ticket
}
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(908,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(7514)) {
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 7514,1; //Monster_Ticket
next;
if ($@mon_time_1_1 == 1) {
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 == 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;
}
} else {
if ($@mon_time_1_1 == 1) {
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;
} else 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 -1,{
OnDisable:
for(.@i = 1; .@i<7; ++.@i)
enablenpc "Luk1#"+.@i;
for(.@i = 1; .@i<7; ++.@i)
enablenpc "Tire1#"+.@i;
setd "$@mr_1_luk"+strnpcinfo(2),0;
setd "$@mr_1_tire"+strnpcinfo(2),0;
end;
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(0);
end;
}
- script Luk_1 -1,{
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(0);
end;
}
- script Luk_2 -1,{
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(0);
end;
}
- script Tire_1 -1,{
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(0);
end;
}
p_track01,56,38,0 duplicate(starting_1) starting#1 -1,0,0
p_track01,56,36,0 duplicate(starting_1) starting#2 -1,0,0
p_track01,56,34,0 duplicate(starting_1) starting#3 -1,0,0
p_track01,56,32,0 duplicate(starting_1) starting#4 -1,0,0
p_track01,56,30,0 duplicate(starting_1) starting#5 -1,0,0
p_track01,56,28,0 duplicate(starting_1) starting#6 -1,0,0
p_track01,33,38,0 duplicate(Luk_1) Luk1#1 -1,0,0
p_track01,37,38,0 duplicate(Luk_1) Luk1#2 -1,0,0
p_track01,53,38,0 duplicate(Luk_1) Luk1#3 -1,0,0
p_track01,45,38,0 duplicate(Luk_1) Luk1#4 -1,0,0
p_track01,33,36,0 duplicate(Luk_1) Luk2#1 -1,0,0
p_track01,37,36,0 duplicate(Luk_1) Luk2#2 -1,0,0
p_track01,53,36,0 duplicate(Luk_1) Luk2#3 -1,0,0
p_track01,45,36,0 duplicate(Luk_1) Luk2#4 -1,0,0
p_track01,33,34,0 duplicate(Luk_1) Luk3#1 -1,0,0
p_track01,37,34,0 duplicate(Luk_1) Luk3#2 -1,0,0
p_track01,53,34,0 duplicate(Luk_1) Luk3#3 -1,0,0
p_track01,45,34,0 duplicate(Luk_1) Luk3#4 -1,0,0
p_track01,33,32,0 duplicate(Luk_1) Luk4#1 -1,0,0
p_track01,37,32,0 duplicate(Luk_1) Luk4#2 -1,0,0
p_track01,53,32,0 duplicate(Luk_1) Luk4#3 -1,0,0
p_track01,45,32,0 duplicate(Luk_1) Luk4#4 -1,0,0
p_track01,33,30,0 duplicate(Luk_1) Luk5#1 -1,0,0
p_track01,37,30,0 duplicate(Luk_1) Luk5#2 -1,0,0
p_track01,53,30,0 duplicate(Luk_1) Luk5#3 -1,0,0
p_track01,45,30,0 duplicate(Luk_1) Luk5#4 -1,0,0
p_track01,33,28,0 duplicate(Luk_1) Luk6#1 -1,0,0
p_track01,37,28,0 duplicate(Luk_1) Luk6#2 -1,0,0
p_track01,53,28,0 duplicate(Luk_1) Luk6#3 -1,0,0
p_track01,45,28,0 duplicate(Luk_1) Luk6#4 -1,0,0
p_track01,49,38,0 duplicate(Luk_2) Luk1#5 -1,0,0
p_track01,41,38,0 duplicate(Luk_2) Luk1#6 -1,0,0
p_track01,49,36,0 duplicate(Luk_2) Luk2#5 -1,0,0
p_track01,41,36,0 duplicate(Luk_2) Luk2#6 -1,0,0
p_track01,49,34,0 duplicate(Luk_2) Luk3#5 -1,0,0
p_track01,41,34,0 duplicate(Luk_2) Luk3#6 -1,0,0
p_track01,49,32,0 duplicate(Luk_2) Luk4#5 -1,0,0
p_track01,41,32,0 duplicate(Luk_2) Luk4#6 -1,0,0
p_track01,49,30,0 duplicate(Luk_2) Luk5#5 -1,0,0
p_track01,41,30,0 duplicate(Luk_2) Luk5#6 -1,0,0
p_track01,49,28,0 duplicate(Luk_2) Luk6#5 -1,0,0
p_track01,41,28,0 duplicate(Luk_2) Luk6#6 -1,0,0
p_track01,43,38,0 duplicate(Tire_1) Tire1#1 -1,0,0
p_track01,39,38,0 duplicate(Tire_1) Tire1#2 -1,0,0
p_track01,35,38,0 duplicate(Tire_1) Tire1#3 -1,0,0
p_track01,55,38,0 duplicate(Tire_1) Tire1#4 -1,0,0
p_track01,51,38,0 duplicate(Tire_1) Tire1#5 -1,0,0
p_track01,47,38,0 duplicate(Tire_1) Tire1#6 -1,0,0
p_track01,43,36,0 duplicate(Tire_1) Tire2#1 -1,0,0
p_track01,39,36,0 duplicate(Tire_1) Tire2#2 -1,0,0
p_track01,35,36,0 duplicate(Tire_1) Tire2#3 -1,0,0
p_track01,55,36,0 duplicate(Tire_1) Tire2#4 -1,0,0
p_track01,51,36,0 duplicate(Tire_1) Tire2#5 -1,0,0
p_track01,47,36,0 duplicate(Tire_1) Tire2#6 -1,0,0
p_track01,43,34,0 duplicate(Tire_1) Tire3#1 -1,0,0
p_track01,39,34,0 duplicate(Tire_1) Tire3#2 -1,0,0
p_track01,35,34,0 duplicate(Tire_1) Tire3#3 -1,0,0
p_track01,55,34,0 duplicate(Tire_1) Tire3#4 -1,0,0
p_track01,51,34,0 duplicate(Tire_1) Tire3#5 -1,0,0
p_track01,47,34,0 duplicate(Tire_1) Tire3#6 -1,0,0
p_track01,43,32,0 duplicate(Tire_1) Tire4#1 -1,0,0
p_track01,39,32,0 duplicate(Tire_1) Tire4#2 -1,0,0
p_track01,35,32,0 duplicate(Tire_1) Tire4#3 -1,0,0
p_track01,55,32,0 duplicate(Tire_1) Tire4#4 -1,0,0
p_track01,51,32,0 duplicate(Tire_1) Tire4#5 -1,0,0
p_track01,47,32,0 duplicate(Tire_1) Tire4#6 -1,0,0
p_track01,43,30,0 duplicate(Tire_1) Tire5#1 -1,0,0
p_track01,39,30,0 duplicate(Tire_1) Tire5#2 -1,0,0
p_track01,35,30,0 duplicate(Tire_1) Tire5#3 -1,0,0
p_track01,55,30,0 duplicate(Tire_1) Tire5#4 -1,0,0
p_track01,51,30,0 duplicate(Tire_1) Tire5#5 -1,0,0
p_track01,47,30,0 duplicate(Tire_1) Tire5#6 -1,0,0
p_track01,43,28,0 duplicate(Tire_1) Tire6#1 -1,0,0
p_track01,39,28,0 duplicate(Tire_1) Tire6#2 -1,0,0
p_track01,35,28,0 duplicate(Tire_1) Tire6#3 -1,0,0
p_track01,55,28,0 duplicate(Tire_1) Tire6#4 -1,0,0
p_track01,51,28,0 duplicate(Tire_1) Tire6#5 -1,0,0
p_track01,47,28,0 duplicate(Tire_1) Tire6#6 -1,0,0
// Monster Race - Dual Monster Race
//============================================================
hugel,47,56,0 script #race_timer2-1 -1,{
OnEnable:
enablenpc "#race_timer2-1";
$@mon_time_2_1 = 2;
initnpctimer;
end;
OnDisable:
disablenpc "#race_timer2-1";
stopnpctimer;
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";
enablenpc "Ticket Helper#2";
donpcevent "TrapGlobal#race02::OnEnable";
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;
donpcevent "#race_timer2-1::OnDisable";
stopnpctimer;
end;
OnInit:
enablenpc "#race_timer2-1";
$@mon_time_2_1 = 2;
initnpctimer;
end;
}
p_track02,42,23,0 script #race_timer2-2 -1,{
OnEnable:
enablenpc "#race_timer2-2";
$@mon_time_2_2 = 0;
initnpctimer;
end;
OnDisable:
disablenpc "#race_timer2-2";
stopnpctimer;
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;
$@mon_race_2_1 = 0;
$@mon_race_2_2 = 0;
disablenpc "Ticket Helper#2";
donpcevent "#poring1::OnEnable";
donpcevent "#lunatic1::OnEnable";
donpcevent "#savagebebe1::OnEnable";
donpcevent "#desertwolf1::OnEnable";
donpcevent "#deviruchi1::OnEnable";
donpcevent "#baphomet1::OnEnable";
stopnpctimer;
end;
OnInit:
disablenpc "#race_timer2-2";
$@mon_time_2_2 = 0;
end;
}
p_track02,80,43,0 script #race_timer2-3 -1,{
OnInit:
disablenpc "#race_timer2-3";
end;
OnEnable:
enablenpc "#race_timer2-3";
initnpctimer;
end;
OnDisable:
disablenpc "#race_timer2-3";
stopnpctimer;
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";
$@mon_race_2_1 = 0;
$@mon_race_2_2 = 0;
donpcevent "#race_timer2-3::OnDisable";
stopnpctimer;
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(909,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(7514)) {
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 7514,1; //Monster_Ticket
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_1 || !$@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(908,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: " + getd("$@mon_r02_Luk"+.@i) + "] [^EE0000HP^000000: " + getd("$@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 (1) {
.@m$ = "";
for (.@i = 1; .@i <= 6; ++.@i)
.@m$ += ((.@i != .@m1)?"Monster "+.@i:"")+":";
.@m = select (.@m$);
switch (.@m) {
case 1: setarray .@w$, "a friendly","Poring type monster"; break;
case 2: setarray .@w$, "an adorable","Lunatic type monster"; break;
case 3: setarray .@w$, "a darling","Savage Babe monster"; break;
case 4: setarray .@w$, "a gentle baby","Desert Wolf monster"; break;
case 5: setarray .@w$, "a small, yet","demonic, Deviruchi"; break;
case 6: setarray .@w$, "a naughty","Baphomet Jr. monster"; break;
}
mes "[Ticket Helper]";
mes "You've chosen";
mes "^0000FFMonster "+.@m+"^000000, "+.@w$[0];
mes .@w$[1]+".";
mes "Are you sure you want";
mes "to choose this monster?";
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;
}
next;
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;
} else {
if (!$@mon_time_2_2) {
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 7514,1; //Monster_Ticket
close;
} else {
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;
}
}
}
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(7514)) {
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(909,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(7514)) {
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 7514,1; //Monster_Ticket
monster_race_2_1 = 7;
monster_race_2_2 = 7;
getitem 7515,15; //Marvelous_Medal
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(7514)) {
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 7514,1; //Monster_Ticket
}
monster_race_2_1 = 0;
monster_race_2_2 = 0;
close2;
warp "hugel",63,73;
end;
}
- script mob1#main -1,{
function MN;
OnEnable:
enablenpc strnpcinfo(0);
setarray .@n[1], 1725,1726,1727,1728,1730,1729;
getmapxy(.@m$,.@x,.@y,1);
.@i = MN;
monster "p_track02",58,.@y,"Monster "+.@i,.@n[.@i],1,strnpcinfo(0)+"::OnMyMobDead";
end;
OnDisable:
killmonster "p_track02",strnpcinfo(0)+"::OnMyMobDead";
disablenpc strnpcinfo(0);
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 = 1;
donpcevent strnpcinfo(0)+"::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 = 1;
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;
function MN {
setarray .@n$[1], "poring","lunatic","savagebebe","desertwolf","deviruchi","baphomet";
for (.@i = 1; .@i <= getarraysize(.@n$); ++.@i) {
if (compare(strnpcinfo(0),.@n$[.@i]))
break;
}
return .@i;
}
OnInit:
if (compare(strnpcinfo(0),"main")) end;
disablenpc strnpcinfo(0);
end;
}
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 -1,{
OnEnable:
enablenpc "TrapGlobal#race02";
for (.@i = 1; .@i <= 6; ++.@i)
enablenpc "starting#race02_"+.@i;
.@c = 1;
while (.@c <= 6) {
setd ".@line_"+.@c,rand(1,70);
if (getd(".@line_"+.@c) <= 10) {
setd "$@mon_r02_luk"+.@c,getd(".@line_"+.@c);
enablenpc "Luk#race02_"+.@c+"_5";
enablenpc "Luk#race02_"+.@c+"_6";
setd ".@tired_"+.@c,rand(50,60);
setd "$@mon_r02_tire"+.@c,getd(".@tired_"+.@c);
enablenpc "Tire#race02_"+.@c+"_1";
} else if (getd(".@line_"+.@c) <= 30) {
setd "$@mon_r02_luk"+.@c,getd(".@line_"+.@c);
enablenpc "Luk#race02_"+.@c+"_5";
setd ".@tired_"+.@c,rand(40,60);
setd "$@mon_r02_tire"+.@c,getd(".@tired_"+.@c);
enablenpc "Tire#race02_"+.@c+"_1";
if (getd(".@tired_"+.@c) < 50) enablenpc "Tire#race02_"+.@c+"_2";
} else if (getd(".@line_"+.@c) <= 40) {
setd "$@mon_r02_luk"+.@c,getd(".@line_"+.@c);
enablenpc "Luk#race02_"+.@c+"_1";
setd ".@tired_"+.@c,rand(30,50);
setd "$@mon_r02_tire"+.@c,getd(".@tired_"+.@c);
enablenpc "Tire#race02_"+.@c+"_1";
enablenpc "Tire#race02_"+.@c+"_2";
if (getd(".@tired_"+.@c) < 40) enablenpc "Tire#race02_"+.@c+"_3";
} else if (getd(".@line_"+.@c) <= 50) {
setd "$@mon_r02_luk"+.@c,getd(".@line_"+.@c);
enablenpc "Luk#race02_"+.@c+"_1";
enablenpc "Luk#race02_"+.@c+"_2";
setd ".@tired_"+.@c,rand(20,40);
setd "$@mon_r02_tire"+.@c,getd(".@tired_"+.@c);
for (.@i = 1; .@i <= 3; ++.@i)
enablenpc "Tire#race02_"+.@c+"_"+.@i;
if (getd(".@tired_"+.@c) < 30) enablenpc "Tire#race02_"+.@c+"_4";
} else if (getd(".@line_"+.@c) <= 60) {
setd "$@mon_r02_luk"+.@c,getd(".@line_"+.@c);
for (.@i = 1; .@i <= 3; ++.@i)
enablenpc "Luk#race02_"+.@c+"_"+.@i;
setd ".@tired_"+.@c,rand(10,30);
setd "$@mon_r02_tire"+.@c,getd(".@tired_"+.@c);
for (.@i = 1; .@i <= 4; ++.@i)
enablenpc "Tire#race02_"+.@c+"_"+.@i;
if (getd(".@tired_"+.@c) < 20) enablenpc "Tire#race02_"+.@c+"_5";
} else if (getd(".@line_"+.@c) <= 70) {
setd "$@mon_r02_luk"+.@c,getd(".@line_"+.@c);
for (.@i = 1; .@i <= 4; ++.@i)
enablenpc "Luk#race02_"+.@c+"_"+.@i;
setd ".@tired_"+.@c,rand(0,20);
setd "$@mon_r02_tire"+.@c,getd(".@tired_"+.@c);
for (.@i = 1; .@i <= 5; ++.@i)
enablenpc "Tire#race02_"+.@c+"_"+.@i;
if (getd(".@tired_"+.@c) < 10) enablenpc "Tire#race02_"+.@c+"_6";
}
++.@c;
}
end;
OnDisable:
disablenpc "TrapGlobal#race02";
for (.@i = 1; .@i <= 6; ++.@i)
donpcevent "starting#race02_"+.@i+"::OnDisable";
end;
OnInit:
for (.@i = 1; .@i <= 6; ++.@i) {
setd "$@mon_r02_luk"+.@i,0;
setd "$@mon_r02_tire"+.@i,0;
}
end;
}
- script starting_2 -1,{
OnDisable:
disablenpc strnpcinfo(0);
for(.@i = 1; .@i<7; ++.@i)
disablenpc "Luk#"+strnpcinfo(2)+"_"+.@i;
for(.@i = 1; .@i<7; ++.@i)
disablenpc "Tire#"+strnpcinfo(2)+"_"+.@i;
end;
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(0);
end;
}
p_track02,56,38,0 duplicate(starting_2) starting#race02_1 -1,0,0
p_track02,56,36,0 duplicate(starting_2) starting#race02_2 -1,0,0
p_track02,56,34,0 duplicate(starting_2) starting#race02_3 -1,0,0
p_track02,56,32,0 duplicate(starting_2) starting#race02_4 -1,0,0
p_track02,56,30,0 duplicate(starting_2) starting#race02_5 -1,0,0
p_track02,56,28,0 duplicate(starting_2) starting#race02_6 -1,0,0
p_track02,33,38,0 duplicate(Luk_1) Luk#race02_1_1 -1,0,0
p_track02,37,38,0 duplicate(Luk_1) Luk#race02_1_2 -1,0,0
p_track02,53,38,0 duplicate(Luk_1) Luk#race02_1_3 -1,0,0
p_track02,45,38,0 duplicate(Luk_1) Luk#race02_1_4 -1,0,0
p_track02,33,36,0 duplicate(Luk_1) Luk#race02_2_1 -1,0,0
p_track02,37,36,0 duplicate(Luk_1) Luk#race02_2_2 -1,0,0
p_track02,53,36,0 duplicate(Luk_1) Luk#race02_2_3 -1,0,0
p_track02,45,36,0 duplicate(Luk_1) Luk#race02_2_4 -1,0,0
p_track02,33,34,0 duplicate(Luk_1) Luk#race02_3_1 -1,0,0
p_track02,37,34,0 duplicate(Luk_1) Luk#race02_3_2 -1,0,0
p_track02,53,34,0 duplicate(Luk_1) Luk#race02_3_3 -1,0,0
p_track02,45,34,0 duplicate(Luk_1) Luk#race02_3_4 -1,0,0
p_track02,33,32,0 duplicate(Luk_1) Luk#race02_4_1 -1,0,0
p_track02,37,32,0 duplicate(Luk_1) Luk#race02_4_2 -1,0,0
p_track02,53,32,0 duplicate(Luk_1) Luk#race02_4_3 -1,0,0
p_track02,45,32,0 duplicate(Luk_1) Luk#race02_4_4 -1,0,0
p_track02,33,30,0 duplicate(Luk_1) Luk#race02_5_1 -1,0,0
p_track02,37,30,0 duplicate(Luk_1) Luk#race02_5_2 -1,0,0
p_track02,53,30,0 duplicate(Luk_1) Luk#race02_5_3 -1,0,0
p_track02,45,30,0 duplicate(Luk_1) Luk#race02_5_4 -1,0,0
p_track02,33,28,0 duplicate(Luk_1) Luk#race02_6_1 -1,0,0
p_track02,37,28,0 duplicate(Luk_1) Luk#race02_6_2 -1,0,0
p_track02,53,28,0 duplicate(Luk_1) Luk#race02_6_3 -1,0,0
p_track02,45,28,0 duplicate(Luk_1) Luk#race02_6_4 -1,0,0
p_track02,49,38,0 duplicate(Luk_2) Luk#race02_1_5 -1,0,0
p_track02,41,38,0 duplicate(Luk_2) Luk#race02_1_6 -1,0,0
p_track02,49,36,0 duplicate(Luk_2) Luk#race02_2_5 -1,0,0
p_track02,41,36,0 duplicate(Luk_2) Luk#race02_2_6 -1,0,0
p_track02,49,34,0 duplicate(Luk_2) Luk#race02_3_5 -1,0,0
p_track02,41,34,0 duplicate(Luk_2) Luk#race02_3_6 -1,0,0
p_track02,49,32,0 duplicate(Luk_2) Luk#race02_4_5 -1,0,0
p_track02,41,32,0 duplicate(Luk_2) Luk#race02_4_6 -1,0,0
p_track02,49,30,0 duplicate(Luk_2) Luk#race02_5_5 -1,0,0
p_track02,41,30,0 duplicate(Luk_2) Luk#race02_5_6 -1,0,0
p_track02,49,28,0 duplicate(Luk_2) Luk#race02_6_5 -1,0,0
p_track02,41,28,0 duplicate(Luk_2) Luk#race02_6_6 -1,0,0
p_track02,43,38,0 duplicate(Tire_1) Tire#race02_1_1 -1,0,0
p_track02,39,38,0 duplicate(Tire_1) Tire#race02_1_2 -1,0,0
p_track02,35,38,0 duplicate(Tire_1) Tire#race02_1_3 -1,0,0
p_track02,55,38,0 duplicate(Tire_1) Tire#race02_1_4 -1,0,0
p_track02,51,38,0 duplicate(Tire_1) Tire#race02_1_5 -1,0,0
p_track02,47,38,0 duplicate(Tire_1) Tire#race02_1_6 -1,0,0
p_track02,43,36,0 duplicate(Tire_1) Tire#race02_2_1 -1,0,0
p_track02,39,36,0 duplicate(Tire_1) Tire#race02_2_2 -1,0,0
p_track02,35,36,0 duplicate(Tire_1) Tire#race02_2_3 -1,0,0
p_track02,55,36,0 duplicate(Tire_1) Tire#race02_2_4 -1,0,0
p_track02,51,36,0 duplicate(Tire_1) Tire#race02_2_5 -1,0,0
p_track02,47,36,0 duplicate(Tire_1) Tire#race02_2_6 -1,0,0
p_track02,43,34,0 duplicate(Tire_1) Tire#race02_3_1 -1,0,0
p_track02,39,34,0 duplicate(Tire_1) Tire#race02_3_2 -1,0,0
p_track02,35,34,0 duplicate(Tire_1) Tire#race02_3_3 -1,0,0
p_track02,55,34,0 duplicate(Tire_1) Tire#race02_3_4 -1,0,0
p_track02,51,34,0 duplicate(Tire_1) Tire#race02_3_5 -1,0,0
p_track02,47,34,0 duplicate(Tire_1) Tire#race02_3_6 -1,0,0
p_track02,43,32,0 duplicate(Tire_1) Tire#race02_4_1 -1,0,0
p_track02,39,32,0 duplicate(Tire_1) Tire#race02_4_2 -1,0,0
p_track02,35,32,0 duplicate(Tire_1) Tire#race02_4_3 -1,0,0
p_track02,55,32,0 duplicate(Tire_1) Tire#race02_4_4 -1,0,0
p_track02,51,32,0 duplicate(Tire_1) Tire#race02_4_5 -1,0,0
p_track02,47,32,0 duplicate(Tire_1) Tire#race02_4_6 -1,0,0
p_track02,43,30,0 duplicate(Tire_1) Tire#race02_5_1 -1,0,0
p_track02,39,30,0 duplicate(Tire_1) Tire#race02_5_2 -1,0,0
p_track02,35,30,0 duplicate(Tire_1) Tire#race02_5_3 -1,0,0
p_track02,55,30,0 duplicate(Tire_1) Tire#race02_5_4 -1,0,0
p_track02,51,30,0 duplicate(Tire_1) Tire#race02_5_5 -1,0,0
p_track02,47,30,0 duplicate(Tire_1) Tire#race02_5_6 -1,0,0
p_track02,43,28,0 duplicate(Tire_1) Tire#race02_6_1 -1,0,0
p_track02,39,28,0 duplicate(Tire_1) Tire#race02_6_2 -1,0,0
p_track02,35,28,0 duplicate(Tire_1) Tire#race02_6_3 -1,0,0
p_track02,55,28,0 duplicate(Tire_1) Tire#race02_6_4 -1,0,0
p_track02,51,28,0 duplicate(Tire_1) Tire#race02_6_5 -1,0,0
p_track02,47,28,0 duplicate(Tire_1) Tire#race02_6_6 -1,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(7515)) {
mes "["+ strcharinfo(0) +"]";
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(7515)) {
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(1201,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,2319;
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,2345; end;
case 2: callsub S_BonusReward,1000,2351; end;
case 3: callsub S_BonusReward,1000,2349; end;
case 4: callsub S_BonusReward,1000,2347; 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(7515)) {
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 .@m$, "Dagger","One Handed Sword","Two Handed Sword","Axe","Mace","Bow","Staff","Book","Spear","Katar","Knuckle","Whip","Musical Instrument";
.@m = select (implode(.@m$,":")) - 1;
mes "[Ei'felle]";
mes "So you'd like to have a";
mes .@m$[.@m]+"? Please choose";
mes "which Level 4 Weapon";
mes "that you want me to create.";
next;
switch (.@m) {
case 0:
setarray .@mw$, "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 .@mw, 13002,1237,13001,1225,1231,1224,1230,1236,1229,1235,1233,1232,1234,1227,1241,1242,1228,1223;
break;
case 1:
setarray .@mw$, "Nagan:Immaterial Sword:Mysteltainn:Byeollungum:Star Dust Blade:Caesar's Sword:Ice Falchion:Excalibur:Edge:Cutlus:Solar Sword:Tirfing:Fireblend";
setarray .@mw, 1130,1141,1138,1140,1148,1134,1131,1137,1132,1135,1136,1139,1133;
break;
case 2:
setarray .@mw$, "Dragon Slayer:Masamune:Muramasa:Schweizersabel:Executioner:Zweihander:Katzbalger";
setarray .@mw, 1166,1165,1164,1167,1169,1168,1170;
break;
case 3:
setarray .@mw$, "Great Axe:Guillotine:Light Epsilon:Bloody Axe:Sabbath:Slaughter:Cleaver:Tomahawk";
setarray .@mw, 1364,1369,1366,1363,1365,1367,1305,1368;
break;
case 4:
setarray .@mw$, "Golden Mace:Grand Cross:Long Mace:Spike:Slash:Quadrille";
setarray .@mw, 1524,1528,1525,1523,1526,1527;
break;
case 5:
setarray .@mw$, "Roguemaster's Bow:Dragon Wing:Rudra's Bow:Ballista";
setarray .@mw, 1719,1724,1720,1722;
break;
case 6:
setarray .@mw$, "Wing Staff:Wizardry Staff";
setarray .@mw, 1616,1473;
case 7:
setarray .@mw$, "Legacy of Dragon:Book of the Apocalypse:Girl's Diary:Hardcover Book";
setarray .@mw, 1559,1557,1558,1561;
break;
case 8:
setarray .@mw$, "Gae Bolg:Gelerdria:Gungnir:Skewer:Longinus's Spear:Brionac:Bill Guisarme:Zephyrus:Crescent Scythe:Tjungkuletti:Hellfire";
setarray .@mw, 1474,1414,1413,1415,1469,1470,1467,1468,1466,1416,1471;
break;
case 9:
setarray .@mw$, "Infiltrator:Bloody Roar:Unholy Touch";
setarray .@mw, 1261,1265,1263;
break;
case 10:
setarray .@mw$, "Hatii Claw:Berserk:Kaiser Knuckle";
setarray .@mw, 1815,1814,1813;
break;
case 11:
setarray .@mw$, "Lariat:Rapture Rose:Blade Whip:Chemeti:Queen's Whip";
setarray .@mw, 1962,1963,1969,1964,1970;
break;
case 12:
setarray .@mw$, "Oriental Lute:Electric Guitar";
setarray .@mw, 1918,1913;
break;
}
.@j = select (.@mw$+":Cancel") - 1;
explode(.@mw$,.@mw$,":");
if (.@j == getarraysize(.@mw$)) close;
callsub S_BonusReward,1500,.@mw[.@j];
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 7515,1; //Marvelous_Medal
if (checkre(3)) {
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 7515,1; //Marvelous_Medal
if (checkre(3)) {
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(0) +"]";
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(7515);
delitem 7515,.@medals; //Marvelous_Medal
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(1) {
input .@input;
if (!.@input) {
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;
} else if (.@input < 1 || .@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;
} else break;
}
if (countitem(7515) < .@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;
} else {
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 7515,.@input; //Marvelous_Medal
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]";
if (getarg(1) == 2319) {
mes "Do you really want";
mes "this "+getitemname(getarg(1))+"?";
mes "You may want to forego this";
mes "reward in favor of getting";
mes "something better later...";
} else if ((getarg(1) == 2345) || (getarg(1) == 2347) || (getarg(1) == 2349) || (getarg(1) == 2351)) {
mes "Are you sure that you want";
mes "to accept this set of slotted";
if (getarg(1) == 2345) mes "Fire property Armor? If you do,";
else if (getarg(1) == 2351) mes "Earth property Armor? If you do,";
else if (getarg(1) == 2349) mes "Wind property Armor? If you do,";
else if (getarg(1) == 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(getarg(1))+"? 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(0) +"]";
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(getarg(1),13)) { //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 (getarg(1) == 2319) {
mes "Here you are, I trust that";
mes "this "+getitemname(getarg(1))+" 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 ((getarg(1) == 2345) || (getarg(1) == 2347) || (getarg(1) == 2349) || (getarg(1) == 2351)) {
mes "Great choice! I'm sure";
if (getarg(1) == 2345) mes "that this set of slotted Fire";
else if (getarg(1) == 2351) mes "that this set of slotted Earth";
else if (getarg(1) == 2349) mes "that this set of slotted Wind";
else if (getarg(1) == 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 getarg(1),1;
close;
}
hugel,71,83,4 script Wayne 4_M_HUMERCHANT,{
if (!checkweight(1201,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(909,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;
} else {
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;
for (.@i = 0; .@i < getarraysize(.@pm); ++.@i)
.@m$ += .@pm[.@i] + " Prize medal:";
.@m = select (.@m$) - 1;
switch (.@m) {
case 0:
setarray .@mr$, "2 Hinale Leaflets:2 Aloe Leaflets:1 Mastela Fruit:5 Witch Starsands:4 Condensed Red Potions";
setarray .@mr, 520,2,521,2,522,1,1061,5,545,4;
break;
case 1:
setarray .@mr$, "1 Royal Jelly:6 Holy Waters";
setarray .@mr, 526,1,523,6;
break;
case 2:
setarray .@mr$, "1 Cookie Bag:1 First Aid Kit";
setarray .@mr, 12130,1,12110,1;
break;
case 3:
.@mr$ = "1 Gift Box";
setarray .@mr, 644,1;
break;
case 4:
.@mr$ = "1 Old Blue Box";
setarray .@mr, 603,1;
break;
case 5:
.@mr$ = "1 Taming Gift Set";
setarray .@mr, 12105,1;
break;
case 6:
.@mr$ = "1 Old Purple Box";
setarray .@mr, 617,1;
break;
case 7:
.@mr$ = "1 Poring Box";
setarray .@mr, 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(.@mr)<3)?" Well, we have only 1 set, but...":"");
next;
.@m2 = select (.@mr$) - 1;
if (countitem(7515) < .@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 7515,.@pm[.@m];
getitem .@mr[.@m2*2],.@mr[((.@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(0) +"]";
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(0) +"]";
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;
} else if (.@i == -1) {
mes "[Monster Race Manager]";
mes "Incorrect password.";
close;
} else if (.@i == 0) {
close;
} else {
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;
}
}
}