//================= Hercules Script =======================================
//= _ _ _
//= | | | | | |
//= | |_| | ___ _ __ ___ _ _| | ___ ___
//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
//= | | | | __/ | | (__| |_| | | __/\__ \
//= \_| |_/\___|_| \___|\__,_|_|\___||___/
//================= License ===============================================
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
//= Copyright (C) 2012-2015 Hercules Dev Team
//= Copyright (C) Dastgir
//= Copyright (C) rAthena Dev Team
//= Copyright (C) Lemongrass
//= Copyright (C) Euphy
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
//= the Free Software Foundation, either version 3 of the License, or
//= (at your option) any later version.
//=
//= This program is distributed in the hope that it will be useful,
//= but WITHOUT ANY WARRANTY; without even the implied warranty of
//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//= GNU General Public License for more details.
//=
//= You should have received a copy of the GNU General Public License
//= along with this program. If not, see .
//=========================================================================
//= Coin Merchants
//================= Description ===========================================
//= Renewal coin redemption NPCs.
//================= Current Version =======================================
//= 1.2a
//=========================================================================
//== Malangdo ==============================================
malangdo,220,167,5 script Coin Exchanger CX-1 2_VENDING_MACHINE1,{
if (checkweight(Knife,1) == 0) {
mes "You have too many kinds of objects. Let's try to continue after reducing those objects.";
close;
}
if (MaxWeight - Weight < 10000) {
mes "Can't continue because you have too many heavy objects. Let's try to continue after reducing the weight.";
close;
}
mes "[Coin Exchanger CX-1]";
mes "Welcome to CX-1. If you have coins, you can exchange them to high or low grade coins.";
next;
setarray .@coins[1],
6417, //Silvervine
6418, //Agrade_Coin
6419, //Bgrade_Coin
6420, //Cgrade_Coin
6421, //Dgrade_Coin
6422; //Egrade_Coin
.@menu$ = "Stop:";
for(.@i = 1; .@i<=6; ++.@i) {
if (countitem(.@coins[.@i]))
.@menu$ += getitemname(.@coins[.@i])+":";
else
.@menu$ += "^aaaaaa"+getitemname(.@coins[.@i])+" (None)^000000:";
}
.@i = select(.@menu$);
switch(.@i) {
case 1:
mes "[Coin Exchanger CX-1]";
mes "Thank you for coming.";
close;
default:
.@coin = .@coins[.@i-1];
.@coin_select = .@i-1;
break;
}
if (countitem(.@coin) == 0) {
mes "[Coin Exchanger CX-1]";
mes "You chose a coin that you don't have.";
mes "Thank you for coming.";
close;
}
mes "[Coin Exchanger CX-1]";
mes "----Rate of exchange----";
mes "Higher exchange - 30 to 10";
mes "Lower exchange - 10 to 30";
mes "------------------------";
mes "^ff3333When you exchange, we charge a fee according to the current market price.^000000";
next;
setarray .@exchange_name$[0],"higher","lower";
setarray .@exchange_rate[0],30,10;
setarray .@exchange_loss[0],rand(1,4),rand(1,2); // Amount deducted per exchange.
setarray .@exchange_id[0],.@coins[.@coin_select-1],.@coins[.@coin_select+1];
if (.@exchange_id[0] == .@coins[1]) .@exchange_id[0] = 0; // Cannot exchange for Silvervine.
.@menu$ = "Stop:";
for(.@i = 0; .@i<2; ++.@i) {
if (.@exchange_id[.@i] == 0)
.@menu$ += "^ff3333Unavailable exchange to "+.@exchange_name$[.@i]+" coin^000000:";
else if (countitem(.@coin) < .@exchange_rate[.@i])
.@menu$ += "^aaaaaaExchange to "+.@exchange_name$[.@i]+" coin (null)^000000:";
else
.@menu$ += "Exchange to "+.@exchange_name$[.@i]+" coin - "+getitemname(.@coin)+" ("+.@exchange_rate[.@i]+" needed):";
}
.@i = select(.@menu$)-2;
if (.@i == -1) {
mes "[Coin Exchanger CX-1]";
mes "Thank you for coming.";
close;
}
if (.@exchange_id[.@i] == 0) {
mes "[Coin Exchanger CX-1]";
mes "This coin is not available to exchange to "+.@exchange_name$[.@i]+" coin.";
mes "Thank you for coming.";
close;
}
if (countitem(.@coin) < .@exchange_rate[.@i]) {
mes "[Coin Exchanger CX-1]";
mes "You don't have enough coins to exchange to "+.@exchange_name$[.@i]+" coin.";
mes "Thank you for coming.";
close;
}
.@exchange_total = .@exchange_rate[(!.@i)] - .@exchange_loss[(!.@i)];
delitem .@coin, .@exchange_rate[.@i];
getitem .@exchange_id[.@i], .@exchange_total;
mes "[Coin Exchanger CX-1]";
mes "^003399"+.@exchange_rate[.@i]+"^000000 unit(s) of ^003399 "+getitemname(.@coin)+"^000000 taken.";
mes "I exchanged them for ^003399"+.@exchange_name$[.@i]+" coins^000000, after deducting ^003399"+.@exchange_loss[(!.@i)]+"^000000 unit(s), ^003399"+.@exchange_total+"^000000 unit(s) remaining.";
close;
}
malangdo,218,165,5 script Special Vending Machine 2_DROP_MACHINE,{
if (checkweight(Knife,1) == 0) {
mes "You have too many kinds of objects. Let's try to continue after reducing those objects.";
close;
}
if (MaxWeight - Weight < 10000) {
mes "Can't continue because you have too many heavy objects. Let's try to continue after reducing the weight.";
close;
}
mes "[Special Vending Machine]";
mes "Welcome to CX-82. You have a Silvervine Fruit, so you can purchase the Malangdo Specialty that has special ability.";
next;
callsub L_AddItem, //DisplayName,ItemID,Cost
"Seagod's Protection [23 hours]",16740,4,
"Seagod's Protection [7 days]",16763,12,
"Seagod's Protection [15 days]",16764,24,
"Octopus Hunting Stick [23 hours]",16765,2,
"Octopus Hunting Stick [3 days]",16766,5,
"Octopus Hunting Stick [7 days]",16767,10,
"Premium Lubricant",6441,56,
"Ordinary Lubricant",6440,36,
"Sillit Pong",6443,192;
L_AddItem:
.@menu$ = "Explanation:";
for(.@i = 0; .@i= .@coin_amount[.@i])
.@menu$ += "Exchange "+(.@coin_amount[.@i]/10)+" Mora Coin:";
else
.@menu$ += "^aaaaaaExchange "+(.@coin_amount[.@i]/10)+" Mora Coin (Not Enough)^000000:";
}
.@i = select(.@menu$+"Quit")-1;
if (.@i == getarraysize(.@coin_amount)) {
mes "[Merchant K]";
mes "Let's exchange some other time.";
close;
}
if (countitem(Cgrade_Coin) < .@coin_amount[.@i]) {
mes "[Merchant K]";
mes "You need ^ff0000"+.@coin_amount[.@i]+"^000000 C Grade Coin to perform the exchange. But you don't seem to have enough now.";
close;
}
delitem Cgrade_Coin,.@coin_amount[.@i];
getitem Mora_Coin,.@coin_amount[.@i]/10;
mes "[Merchant K]";
mes "C Grade Coin ^003399"+.@coin_amount[.@i]+"^000000 well received."; //FIXME: Dialogue.
mes "Exchanged to ^003399"+(.@coin_amount[.@i]/10)+"^000000 Mora Coin.";
next;
mes "[Merchant K]";
mes "Would you like to continue?";
next;
}
}
malangdo,233,180,3 script Dark MachineTX100 2_VENDING_MACHINE1,{
if (checkweight(Knife,1) == 0) {
mes "It seems you have too much in your inventory. Let's try again after getting rid of some of your belongings.";
close;
}
if (MaxWeight - Weight < 1000) {
mes "Your inventory is too heavy now. Please come back after getting rid of some of your belongings.";
close;
}
mes "[Dark Machine TX100]";
mes "Thank you for visiting TX100. You can exchange coins into higher or lower level coins.";
next;
mes "[Dark Machine TX100]";
mes "For a lower level coin exchange you can do 500 as a 1 time maximum, and for higher level coin exchange you can do 99 as a 1 time maximum.";
next;
setarray .@coins[1],
6417, //Silvervine
6418, //Agrade_Coin
6419, //Bgrade_Coin
6420, //Cgrade_Coin
6421, //Dgrade_Coin
6422; //Egrade_Coin
.@menu$ = "Quit:";
for(.@i = 1; .@i<=6; ++.@i) {
if (countitem(.@coins[.@i]))
.@menu$ += getitemname(.@coins[.@i])+" (have "+countitem(.@coins[.@i])+"):";
else
.@menu$ += "^aaaaaa"+getitemname(.@coins[.@i])+" (None)^000000:";
}
.@i = select(.@menu$)-1;
if (.@i == 0) {
mes "[Dark Machine TX100]";
mes "Thank you for coming.";
close;
}
.@coin = .@coins[.@i];
setarray .@exchange_name$[0],"higher","lower";
setarray .@exchange_id[0],.@coins[.@i-1],.@coins[.@i+1];
if (.@exchange_id[0] == .@coins[1]) .@exchange_id[0] = 0; // Cannot exchange for Silvervine.
if (.@i > getarraysize(.@coins)) {
mes "[Dark Machine TX100]";
mes "You've chosen abnormal menu.";
mes "Aborting process. Thank you for coming.";
close;
}
if (countitem(.@coin) == 0) {
mes "[Dark Machine TX100]";
mes "You chose a coin that you don't have.";
mes "Aborting process. Thank you for coming.";
close;
}
mes "[Dark Machine TX100]";
mes "----Exchange Rate----";
mes "Higher Coin - 3 to 1";
mes "Lower Coin - 1 to 3";
mes "---------------------";
mes "^ff3333We take a small vendor fee from your exchanged coins.^000000";
next;
.@menu$ = "Quit:";
if (.@exchange_id[0] == 0)
.@menu$ += "^ff3333Cannot exchange to higher level coin^000000:";
else {
if (countitem(.@coin) >= 99)
.@menu$ += "Exchange 99 "+getitemname(.@coin)+" into higher level coin:";
else
.@menu$ += "^aaaaaaExchange to higher level coin (Not enough)^000000:";
}
if (.@exchange_id[1] == 0)
.@menu$ += "^ff3333Cannot exchange to lower level coin^000000:";
else {
if (countitem(.@coin) > 500)
.@menu$ += "Exchange 500 "+getitemname(.@coin)+" into lower level coin:";
else if (countitem(.@coin))
.@menu$ += "Exchange "+countitem(.@coin)+" "+getitemname(.@coin)+" into lower level coin:";
else
.@menu$ += "^aaaaaaExchange to lower level coin (Not enough)^000000:";
}
.@i = select(.@menu$)-2;
if (.@i == -1) {
mes "[Dark Machine TX100]";
mes "Thank you for coming.";
close;
}
if (.@exchange_id[.@i] == 0) {
mes "[Dark Machine TX100]";
mes "This coin cannot be exchanged to a "+.@exchange_name$[.@i]+" level coin.";
mes "Aborting process. Thank you for coming.";
close;
}
if ((.@i == 0 && countitem(.@coin) < 100) || (.@i == 1 && countitem(.@coin) == 0)) {
mes "[Dark Machine TX100]";
mes "You have not enough coins for a "+.@exchange_name$[.@i]+" level coin exchange.";
mes "Aborting process. Thank you for coming.";
close;
}
if (countitem(.@exchange_id[.@i]) > 28000) {
mes "[Dark Machine TX100]";
mes "You have too many "+.@exchange_name$[.@i]+" level coins already. Please come back with less coins.";
close;
}
switch(.@i) {
case 0:
.@payment_amount = 99;
.@reward_amount = .@payment_amount/3;
.@coin_text$ = "High";
break;
case 1:
.@payment_amount = (((countitem(.@coin) > 500))?500:countitem(.@coin));
.@reward_amount = .@payment_amount*3;
.@coin_text$ = "Low";
break;
}
.@fee = rand(1,3);
delitem .@coin, .@payment_amount;
getitem .@exchange_id[.@i], .@reward_amount - .@fee;
mes "[Dark Machine TX100]";
mes "Received ^003399"+getitemname(.@coin)+"^000000 for ^003399"+.@payment_amount+"^000000 unit(s).";
mes "We have excanged your coin to ^003399"+(.@reward_amount-.@fee)+"^000000 unit(s) of ^003399"+.@coin_text$+" Level Coin^000000, deducted ^003399"+.@fee+"^000000 unit(s) as exchanging fee.";
close;
}
malangdo,175,145,4 script Can Agency Guard 4_CAT_MERMASTER,{
if (checkweight(Knife,1) == 0) {
mes "You seem to have too many items. Give it a try after sorting out the item kinds.";
close;
}
if (MaxWeight - Weight < 1000) {
mes "You're not likely to be able to go on due to the heavy items you've got. Give it a try after lightening the weight.";
close;
}
mes "[Can Agency Guard]";
mes "Hey, you there... Have you seen any ^0000ffMalangdo Cat Can^000000s around here?";
next;
switch(select("Why are you asking?", "Oh, you mean these?")) {
case 1:
mes "[Can Agency Guard]";
mes "Umm.";
mes "We at the Can Agency recently got some suspicious intelligence about them...";
next;
mes "[Can Agency Guard]";
mes "There were faulty products in bulk on the can production line for Malangdo specialty. These products, to be discarded, seem to have fallen into a retail dealer's hands.";
next;
mes "[Can Agency Guard]";
mes "Actually they were hard to distinguish from normal products. But it obviously says ^0000ffMalangdo Cat Can^000000 outside.";
next;
mes "[Can Agency Guard]";
mes "As faulty products are moving around on the market, we've been collecting them as is our duty. Have you ever seen anyone who has things like what I'm describing?";
next;
mes "[Can Agency Guard]";
mes "If you find anyone selling these products, please come and tell me.";
close;
case 2:
if (countitem(12633) == 0) {
mes "[Can Agency Guard]";
mes "Umm? I cannot see the ^0000ffMalangdo Cat Can^000000 from you. Don't forget to bring it to me if you've found out...";
close;
}
break;
}
mes "[Can Agency Guard]";
mes "The Malangdo Cat Can is a faulty product. Let me exchange it to 3 E Grade Coins. How about that?";
next;
switch(select("I won't exchange", "^0000ff1^000000 Can -> ^0000ff3^000000 E Grade Coin", "^0000ff10^000000 Can -> ^0000ff30^000000 E Grade Coin", "^0000ff100^000000 Can -> ^0000ff300^000000 E Grade Coin", "Exchange all I've got")) {
case 1:
mes "[Can Agency Guard]";
mes "Umm, I'm not here forever, so come to me if you'd like to exchange while I still am.";
close;
case 2:
.@check = 1;
.@count = 1;
break;
case 3:
.@check = 10;
.@count = 10;
break;
case 4:
.@check = 100;
.@count = 100;
break;
case 5:
.@check = 1;
.@count = countitem(12633);
break;
}
if (countitem(12633) < .@check) {
if (.@check == 1) {
mes "[Can Agency Guard]";
mes "Umm? I cannot see the ^0000ffMalangdo Cat Can^000000 from you. Don't forget to bring it to me if you've found out...";
close;
} else {
mes "[Can Agency Guard]";
mes "Umm? I don't think you have enough to exchange... Come to me again when the amount is exactly decided.";
close;
}
}
delitem 12633,.@count;
getitem Egrade_Coin,.@count*3;
mes "[Can Agency Guard]";
mes "Exchanged "+.@count+" Malangdo Cat Can to "+(.@count*3)+" E Class Coin. Check it out.";
close;
}
function script F_mal_coin {
//- Initial dialogue and checks -
// -- callfunc "F_mal_coin",0,"[]",;
if (getarg(0) == 0) {
if (getarg(2) != 2 && BaseLevel < 50) {
mes getarg(1);
mes "Ahaaa~";
mes "If you want to buy this stuff,";
mes "you can talk to me";
mes "when you grow up a little more.";
mes "This stuff is too expensive";
mes "for a child~";
close;
}
mes getarg(1);
mes "Nice to meet you~~";
mes "I am! YES~~ That's right!";
mes "I'm selling special stuff";
mes "which you can see only here on Meow Meow Island!";
next;
mes getarg(1);
mes "How about it? What are you waiting for?";
mes "Why don't you take a look at";
mes "what kinds of stuff I have?";
next;
switch(getarg(2)) {
case 1:
mes "[Wandering Merchant]";
mes "Oh~";
mes "These are rental items, so make sure you know if you have the ^0000FF1 hour^000000 or ^0000FF7 day^000000 version.";
next;
break;
case 2:
break;
case 3:
mes "[Roving Merchant]";
mes "Just for your information,";
mes "Sow Bug, Starfish, Dried Squid, and Flying Fish are the items which you can use for 1 hour.";
next;
break;
}
mes getarg(1);
mes "Well then, do you want to take a look at what I have now?";
next;
switch(select("Yes", "No")) {
case 1:
if (checkweight(Knife,1) == 0) {
mes getarg(1);
mes "It seems that there are too many items in your inventory.";
mes "Please make space and come back again~";
close;
}
if (MaxWeight - Weight < 2500) {
mes getarg(1);
mes "It seems that you're overweight.";
mes "Please reduce your weight and come back again~";
close;
}
mes getarg(1);
mes "Well, take a good look at them~~~";
next;
return;
case 2:
mes getarg(1);
mes "Well, then. I'll see you next time.";
mes "Goodbye.";
close;
}
}
//- Exchange function -
// -- callfunc "F_mal_coin",1,"[]","",- ,,,
if (getarg(0) == 1) {
mes getarg(1);
mes "The price of ^0000FF["+getarg(2)+"]^000000 is";
if (getarg(4) && getarg(5)) { // Type 1: Egrade_Coin or Malang_Sp_Can
mes getarg(4)+" E Grade Coin or "+getarg(5)+" Malangdo Canned Specialties.";
.@type = 1;
.@menu$ = "Yes.:No, I'll purchase with cans.:I don't want to purchase any.";
} else if (getarg(5)) { // Type 2: Malang_Sp_Can only
mes getarg(5)+" Malangdo Canned Specialties.";
.@type = 2;
.@menu$ = "Yes.::No.";
} else { // Type 3: Silvervine only
mes getarg(6)+" Silvervine Fruit.";
.@type = 3;
.@menu$ = "Yes.::I don't want to purchase any.";
}
next;
mes getarg(1);
if (.@type == 1) {
mes "Would you like to purchase";
mes "^0000FF["+getarg(2)+"]^000000 with E Grade Coins?";
} else {
mes "Would you like to";
mes "purchase ^0000FF["+getarg(2)+"]^000000?";
}
next;
switch(select(.@menu$)) {
case 2:
.@type = 2;
case 1:
switch(.@type) {
case 1:
.@item = 6422; //Egrade_Coin
.@amount = getarg(4);
.@str$ = "coins";
break;
case 2:
.@item = 12636; //Malang_Sp_Can
.@amount = getarg(5);
.@str$ = "cans";
break;
case 3:
.@item = 6417; //Silvervine
.@amount = getarg(6);
.@str$ = "Silvervine Fruit";
break;
}
if (countitem(.@item) < .@amount) {
mes getarg(1);
mes "I'm sorry, you need more "+.@str$+".";
close;
}
if (MaxWeight - Weight < getiteminfo(getarg(3), ITEMINFO_WEIGHT)) {
mes getarg(1);
mes "Sorry, you've purchased too many.";
mes "You need to make more space in your inventory. Please come back later.";
close;
}
mes getarg(1);
mes "Thank you.";
delitem .@item,.@amount;
getitem getarg(3),1;
return;
case 3:
mes getarg(1);
mes "Always be careful";
mes "when you purchase items.";
close;
}
}
}
malangdo,162,146,5 script Wandering Merchant#mal 4_M_MERCAT1,{
callfunc "F_mal_coin",0,"[Wandering Merchant]",1;
setarray .@items[1],
16743,16747,16741,16745,16749,16751, // 1 hour items.
16742,16744,16746,16748,16752,16750; // 7 day items.
setarray .@names$[1],
"Spearfish","Tuna","Hairtail","Saurel","Malang Snow Crab","Brindle Eel",
"Hairtail (7Days)","Spearfish (7Days)","Saurel (7Days)","Tuna (7Days)","Brindle Eel (7Days)","Malang Snow Crab (7Days)";
while(1) {
.@i = select(
"[Spearfish(1hr)] 8 E-Coins/50 Cans",
"[Tuna(1hr)] 8 E-Coins/50 Cans",
"[Hairtail(1hr)] 8 E-Coins/50 Cans",
"[Saurel(1hr)] 8 E-Coins/50 Can",
"[Malang Snow Crab(1hr)] 8 E-Coins/50 Can",
"[Brindle Eel(1hr)] 8 E-Coins/50 Can",
"[Hairtail(7Days)] 10 Silvervine Fruit",
"[Spearfish(7Days)] 10 Silvervine Fruit",
"[Saurel(7Days)] 10 Silvervine Fruit",
"[Tuna(7Days)] 10 Silvervine Fruit",
"[Brindle Eel(7Days)] 10 Silvervine Fruit",
"[Malang Snow Crab(7Days)] 10 Silvervine Fruit",
"End purchasing."
);
if (.@i == 13) {
mes "[Wandering Merchant]";
mes "Well, then. I'll see you next time.";
mes "Goodbye.";
close;
}
mes "[Wandering Merchant]";
mes "Are you interested in ^0000FF["+.@names$[.@i]+"]^000000?";
switch(.@i) {
case 1: //Spearfish_Box1
case 8: //Spearfish_Box2
mes "This is... a fish that moves according to the season, very tasty!";
mes "But this is only a food that I'm talking about, yummy~";
next;
mes "[Wandering Merchant]";
mes "Of course, this is ^DC143CTwo-Handed Spear^000000.";
mes "It gives a high chance of";
mes "causing the Bleeding status";
mes "when you're using Pierce or Clashing Spiral~";
next;
mes "[Wandering Merchant]";
mes "More details are...";
mes "Increase 100% of Clashing Spiral ATK and 50% of Inspiration ATK,";
mes "additional ATK + 30 when Base Lv. is over 100.";
mes "Base ATK is 220.";
next;
break;
case 2: //Tuna_Box1
case 10: //Tuna_Box2
mes "This is a very popular fish";
mes "which is used in various dishes.";
mes "Swordman, Merchant, and Acolyte classes can use it";
mes "as a ^DC143CMace^000000.";
next;
mes "[Wandering Merchant]";
mes "It gives a high chance of executing the Stun or Auto-Spell Bash";
mes "when using close-range physical attacks.";
mes "Base ATK is 180.";
next;
mes "[Wandering Merchant]";
mes "More details are...";
mes "additional ATK + 20 when Base Lv. is over 100,";
mes "freeze self with low rate.";
next;
break;
case 3: //Hairtail_Box1
case 7: //Hairtail_Box2
mes "This fish looks like a long belt.";
next;
mes "[Wandering Merchant]";
mes "This is a ^DC143CTwo-Handed Sword^000000";
mes "which most swordmen can use.";
mes "It increases 50% of critical damage when attacking and CRI + 20.";
mes "Base ATK is 220.";
next;
mes "[Wandering Merchant]";
mes "More details are...";
mes "additional ATK + 50 when Base Lv. is over 100.";
next;
break;
case 4: //Saurel_Box1
case 9: //Saurel_Box2
mes "This is a ^DC143CDagger^000000 which gives MATK + 100";
mes "and ATK + 30 for 7sec at a certain rate with physical attacks.";
next;
mes "[Wandering Merchant]";
mes "More details are...";
mes "gives MATK + 20 for 7sec at a certain rate with magical attacks";
mes "and additional MATK + 10, ATK + 10 when Base Lv. is over 100.";
mes "Base ATK is 160.";
next;
break;
case 5: //Malang_Crab_Box1
case 12: //Malang_Crab_Box2
mes "This is a ^DC143CBow^000000 which increases LUK + 3 and 50% of critical damage,";
mes "and increases 20% of long rage phyical ATK when Base Lv. is over 100.";
mes "Base ATK is 120.";
next;
mes "[Wandering Merchant]";
mes "More details are...";
mes "can be used by Archer, Thief, and Rogue classes.";
next;
break;
case 6: //Brindle_Eel_Box1
case 11: //Brindle_Eel_Box2
mes "This is a ^DC143CBow^000000.";
mes "Because it has elastic force,";
mes "we started to use it as a Bow.";
mes "Base ATK is 180.";
next;
mes "[Wandering Merchant]";
mes "More details are...";
mes "AGI + 3, and ASPD + 2 for 5sec at a certain rate with long range physical attacks.";
mes "Also gives additional 20% of long range physical ATK when Base Lv. is over 100.";
mes "Hunter, Bard, and Dancer classes can use it.";
next;
break;
}
if (.@i < 7)
setarray .@price[0],8,50,0; // 1 hour items cost 8 Egrade_Coin or 50 Malang_Sp_Can.
else
setarray .@price[0],0,0,10; // 7 day items cost 10 Silvervine.
callfunc "F_mal_coin",1,"[Wandering Merchant]",.@names$[.@i],.@items[.@i],.@price[0],.@price[1],.@price[2];
next;
}
}
malangdo,173,145,4 script Stinky Merchant 4_M_MERCAT2,{
callfunc "F_mal_coin",0,"[Stinky Merchant]",2;
setarray .@items[1],2873,16015;
setarray .@names$[1],"Cat Hand Glove","Cat Club";
while(1) {
.@i = select(
"[Cat Hand Glove] 32 E-Coins/200 Cans",
"[Cat Club] 32 E-Coins/200 Cans",
"End purchasing."
);
if (.@i == 3) {
mes "[Stinky Merchant]";
mes "Well, then. I'll see you next time.";
mes "Goodbye.";
close;
}
mes "[Stinky Merchant]";
mes "Are you interested in ^0000FF["+.@names$[.@i]+"]^000000?";
switch(.@i) {
case 1: //Cat_Hand_Glove
mes "This is a glove which can give happiness";
mes "just by wearing it.";
next;
mes "[Stinky Merchant]";
mes "This is an ^DC143CAccessory^000000";
mes "and its defense is 5.";
mes "It also gives";
mes "VIT + 1, AGI + 1, DEX + 1, LUK + 1.";
next;
mes "[Stinky Merchant]";
mes "More details are...";
mes "SLOT : 1 / Refine : Unable / Destruction : Unable";
next;
break;
case 2: //Cat_Club
mes "It looks like it wouldn't hurt, don't you think so?";
mes "But I'm telling you, it can hurt someone.";
next;
mes "[Stinky Merchant]";
mes "This is a ^DC143CMace^000000 that increases 15% of damage to the animal type of monster.";
mes "Base ATK is 88.";
mes "The other details are";
mes "Weapon Lv : 1 / SLOT : 3 / Refine : Able / Destruction : Unable";
next;
break;
}
callfunc "F_mal_coin",1,"[Stinky Merchant]",.@names$[.@i],.@items[.@i],32,200,0;
next;
}
}
malangdo,150,135,5 script Roving Merchant 4_M_MERCAT1,{
callfunc "F_mal_coin",0,"[Roving Merchant]",3;
setarray .@items[1],12639,12637,12638,12640;
setarray .@names$[1],"Flying Fish","Sow Bug","Dried Squid","Starfish";
while(1) {
.@i = select(
"[Flying Fish] 200 Cans",
"[Sow Bug] 200 Cans",
"[Dried Squid] 200 Cans",
"[Starfish] 200 Cans",
"End purchasing."
);
if (.@i == 5) {
mes "[Roving Merchant]";
mes "Well, then. I'll see you next time.";
mes "Goodbye.";
close;
}
mes "[Roving Merchant]";
mes "Are you interested in ^0000FF["+.@names$[.@i]+"]^000000?";
switch(.@i) {
case 1: //Flying_Fish_Box
mes "This is the one that flies";
mes "with a big pectoral.";
next;
mes "[Roving Merchant]";
mes "This is a ^DC143CThrowing Weapon^000000.";
mes "Of course, it can give fatal wounds to the enemy";
mes "at a certain rate when attacking.";
next;
mes "[Roving Merchant]";
mes "Its property is neutral and ATK is 50.";
next;
break;
case 2: //Gong_Bug_Pocket
mes "In that case, I'll explain for you.";
mes "This is a ^DC143CBullet^000000 which stuns the enemy at a certain rate when attacking.";
next;
mes "[Roving Merchant]";
mes "I feel somthing bad";
mes "is moving in my pocket but...";
mes "it is neutral property and its ATK is 50.";
next;
break;
case 3: //Dried_Squid_Box
mes "I'll explain about this item.";
mes "This is a ^DC143CThrowing Weapon^000000 which causes darkness at a certain rate.";
mes "It's neutral property and its ATK is 50.";
next;
mes "[Roving Merchant]";
mes "It is compressed";
mes "and put into a very small box,";
mes "so be careful when you open it.";
next;
break;
case 4: //Starfish_Box
mes "I'll explain about this item.";
mes "This is a ^DC143CThrowing Weapon^000000 which stuns the enemy at a certain rate.";
next;
mes "[Roving Merchant]";
mes "It is perfectly organized and packed";
mes "so you can't even see inside.";
mes "It is neutral property and its ATK is 110.";
next;
break;
}
mes "[Roving Merchant]";
mes "For your information,";
mes "one box contains";
mes "200 units.";
next;
callfunc "F_mal_coin",1,"[Roving Merchant]",.@names$[.@i],.@items[.@i],0,200,0;
next;
}
}
//== Eclage ================================================
ecl_in01,66,95,3 script Armor Merchant Naphara#e 4_F_FAIRYKID,{
if (!checkweight(Axe,3)) {
mes "- Stop Here!! -";
mes "- You have too many items. -";
mes "- You cannot carry any more items. -";
mes "- Lighten your load and -";
mes "- try again. -";
close;
}
mes "[Armor Merchant]";
mes "Hello, this is Naphara's store, a place of high class goods.";
mes "What would you need?";
next;
.@choice = select("Str Glove", "Int Glove", "Agi Glove", "Vit Glove", "Dex Glove", "Luk Glove");
.@choice -= 1;
mes "[Armor Merchant]";
mes "^3131FF" + .name$[.@choice] + " For ^000000,";
mes "^3131FFMHP + 100, MSP + 20^000000";
mes "^3131FF" + .descript$[.@choice] + "^000000";
mes "^3131FF" + .descript2$[.@choice] + "^000000";
mes "^3131FFRequired Level: 100^000000";
mes "^3131FFSlot:0^000000";
mes "^3131FFWeight:10^000000";
mes "are the characteristic options.";
next;
mes "[Armor Merchant]";
mes "It costs 10 Splendide Coins.";
mes "Would you like to buy it?";
next;
if (select("Buy it.", "Don't buy it.")==1) {
if (countitem(Splendide_Coin) < 10) {
mes "[Armor Merchant]";
mes "It seems like you don't have enough coins.";
close;
}
delitem Splendide_Coin,10; //Splendide_Coin
getitem (.@choice+2917),1;
mes "[Armor Merchant]";
mes "Great, it's yours. Thank you.";
}
close;
OnInit:
setarray .name$[0],"Str Glove","Int Glove","Agi Glove","Vit Glove","Dex Glove","Luk Glove";
setarray .descript$[0],"ATK+1 increases for every STR+10",
"MATK+1 increases for every INT+10",
"FLEE+1 increases for every AGI+10",
"MHP+50 for every VIT+10",
"HIT+1 increases for every DEX+10",
"CRI+1 increases for every LUK+10";
setarray .descript2$[0],"ATK +1% added above STR 110",
"MATK +1% added above INT 110",
"Complete Flee +1 added above AGI 110",
"MHP+1 added above VIT 110",
"Ranged attack power +1% added above DEX 110",
"Critical damage +1% added above LUK 110";
end;
}
ecl_in01,64,97,5 script Slot Expert Nattuer#ecl 4_F_FAIRYKID,{
disable_items;
mes "[Slot Expert]";
mes "I am Slot Expert Nattuer.";
mes "If you bring me an item from my little brother Naphara along with 5 Splendide Coins, I will open up one Slot for you.";
next;
if (select("Activate a Slot.", "Forget it.")==2){
close;
}
mes "[Slot Expert]";
mes "Slot activation is an extremely difficult procedure that can fail even with heightened care and the use of a magnifying lens.";
next;
mes "[Slot Expert]";
mes "Of course, if your heart were as big as that flower-filled land, you wouldn't mind. Right? Should I go for it?";
next;
if (select("Continue.", "Forget it.")==2) {
close;
}
mes "[Slot Expert]";
mes "Which item would you like to activate with a Slot?";
next;
.@choice = select("Str Glove", "Int Glove", "Ag Glove", "Vit Glove", "Dex Glove", "Luk Glove");
.@choice += 2916;
mes "[Slot Expert]";
mes "Let's confirm for the last time. Is the one you want " + getitemname(.@choice) + "?";
next;
if (select("Yes", "No")==2) {
mes "[Slot Expert]";
mes "Why don't you talk to me when you know for sure.";
close;
}
if (countitem(.@choice) < 1) {
mes "[Slot Expert]";
mes "You don't have that item. Why don't you talk to me when you know for sure.";
close;
}
if (countitem(Splendide_Coin) < 5) {
mes "[Slot Expert]";
mes "You don't have enough coins. Why don't you talk to me when you know for sure.";
close;
}
progressbar "0xFFFF00",3;
mes "[Slot Expert]";
delitem Splendide_Coin,5; //Splendide_Coin
.@luckyday = rand(1,100);
if ( (.@luckyday%20) > 0){
emotion e_dots;
delitem .@choice,1;
mes "Shoot, I'm sorry. It failed.";
mes "But I'm sure it will work next time. I have a feeling.";
close;
}
emotion e_no1;
delitem .@choice,1;
getitem (.@choice+6),1;
mes "My eyes feel like they're gonna pop out.";
mes "Nonetheless, congratulations. Slot activation was successful.";
close;
}
ecl_in01,33,98,5 script Herb Merchant Plafina#e 4_M_FAIRYKID2,{
if (checkweight(Axe,1)==0) {
mes "- Stop Here!! -";
mes "- You have too many items. -";
mes "- You cannot carry any more items. -";
mes "- Lighten your load and -";
mes "- try again. -";
close;
}
mes "[Herb Merchant]";
mes "Welcome, this is Plafina's Herb Store where only the freshest herbs are provided~!";
next;
.@item = select("Snow Flip", "Peony Mommy", "Slapping Herb", "Yggdrasil Dust", "End conversation")-1;
if (.@item==4){
mes "[Herb Merchant]";
mes "Come back anytime.";
close;
}
mes "[Herb Merchant]";
switch (.@item){
case 0:
mes "Snow Flip has special effects on ^3131FFBurning, Bleeding, Deep Sleep, Sleep^000000.";
break;
case 1:
mes "Peony Mamy has special effects on ^3131FFFrost, Frozen, Freezing^000000";
break;
case 2:
mes "Slapping Herb has special effects on ^3131FFStun, Fear, Chaos, Hallucination^000000";
break;
case 3:
mes "Yggdrasil Dust has special effects on ^3131FFBlind, Curse, Decrease Agility, Reverse Orcish^000000.";
break;
}
mes "Requires 5 seconds between uses.";
mes "It costs "+ .cost[.@item] +" Splendide Coins for each.";
next;
.@buy = select("Buy 1.", "Buy 10.", "Don't buy.");
if (.@buy==3){
close;
}
if (.@buy==2){
.@buy = 10;
}
mes "[Herb Merchant]";
mes "Would you like to buy "+ .@buy +" "+ getitemname(.items[.@item]) +"?";
next;
if (select("Buy.", "Don't buy.")==2){
close;
}
if (countitem(Splendide_Coin) < (.cost[.@item]*.@buy) ) {
mes "[Herb Merchant]";
mes "You don't have enough coins.";
close;
}
mes "[Herb Merchant]";
mes "Thank you for your business.";
delitem Splendide_Coin,.cost[.@item]*.@buy; //Splendide_Coin
getitem .items[.@item],.@buy;
close;
OnInit:
setarray .items[0],Snow_Flip,Peony_Mommy,Slapping_Herb,Yggdrasil_Dust;
setarray .cost[0],5,5,1,1; //Splendide Coins
end;
}
ecl_in01,67,39,4 script Replication Expert Paltu 4_M_FAIRYKID4,{
if (checkweight(Axe,3)==0) {
mes "You have too many items to continue.";
close;
}
emotion e_lv;
mes "[Paltu]";
mes "Woohoo- Greetings. What are you looking for? Lots of goods here.";
next;
switch (select("No thanks.", "Replication?", "I know you got lots up your sleeve!")) {
case 1:
emotion e_an;
mes "[Paltu]";
mes "Really? Hmm?";
close;
case 2:
mes "[Paltu]";
mes "One can say that there's no one better in Eclage than I at utilizing magic resistance.";
next;
mes "[Paltu]";
mes "I'll give you a good price whatever it is. Just trust me.";
next;
select("Could you do something for me?");
emotion e_no1;
mes "[Paltu]";
mes "Hey, I like your attitude.";
next;
mes "[Paltu]";
mes "Ah- you know the hat you're wearing?";
next;
emotion e_what;
mes "[Paltu]";
mes "Don't you have any of those hats lying around in storage that are solid but too ugly to wear? You do, right?";
next;
select(".........");
emotion e_dots,1;
emotion e_heh;
mes "[Paltu]";
mes "See! I knew it. I knew it from the first minute.";
next;
mes "[Paltu]";
mes "If you bring me ^ff0000 50 Splendide Coins and the ingredients^000000, I'll make you a new hat in the same shape but worn as a ^ff0000Costume^000000.";
next;
mes "[Paltu]";
mes "Hmm, what was it...?";
mes "I think you adventurers call them ^0571B0Costumes^000000? right?";
next;
select("Yes~ What do you need?");
mes "[Paltu]";
mes "I need 1 ^0571B0hat to replicate^000000 and";
mes "I need ^E1281E 4 Crystal Mirrors^000000 for magic resistance, ^E1281E 1 Fairy Magic Powder^000000 as the catalyst, and ^E1281E Emerald, Ruby, Sapphire, Topaz, and Zircon, 10 of each^000000, to be used for amplifying the magic power.";
next;
emotion e_no;
mes "[Paltu]";
mes "There's quite a lot of ingredients, right? Well, I can't do anything about that. Dealing with magic power is not a joke.";
next;
select("Which hats can be replicated?");
mes "[Paltu]";
mes "Oh! You're pretty sharp!";
mes "Almost forgot the most important thing.";
next;
mes "[Paltu]";
mes "Hats that I can replicate are:";
mes "^0571B0Frog Hat, Romantic Flower, Magestic Goat, Blush, Valkyrie Helm, Deviruchi Hat, Assassin Mask, Elven Ears, Hahoe Mask, and Boys Cap^000000 a total of 10 types.";
next;
mes "[Paltu]";
mes "What do you think? I'll make it happen as long as I have the ingredients and the compensation.";
next;
if (select("I'll do it later.", "Show me what you got!") == 1) {
emotion e_dots;
mes "[Paltu]";
mes "What? Are you kidding me? Please tell me you are!";
close;
}
break;
}
disable_items;
emotion e_lv2;
mes "[Paltu]";
mes "Oh wow.";
mes "You made the right call. I thought I was going to starve to death because the Laphines have no interest in pretty hats.";
next;
mes "[Paltu]";
mes "I'll make it a great deal for you. You really should know I'm giving you a good deal here.";
next;
mes "[Paltu]";
mes "Is there something you had in mind? Why don't you take a look?";
next;
setarray .@items[0],Frog_Cap,
Centimental_Flower,
Magestic_Goat,
Blush,
Valkyrie_Helm,
Deviruchi_Cap,
Assassin_Mask_,
Elven_Ears,
Hahoe_Mask,
Boys_Cap;
setarray .@costumes[0], C_Frog_Cap,
C_Centimental_Flower,
C_Magestic_Goat,
C_Blush,
C_Valkyrie_Helm,
C_Deviruchi_Cap,
C_Assassin_Mask_,
C_Elven_Ears,
C_Hahoe_Mask,
C_Boys_Cap;
if ((countitem(Splendide_Coin) >= 50) && (countitem(Crystal_Mirror) >= 4) && countitem(Angel_Magic_Power) && (countitem(Azure_Jewel) >= 10) && (countitem(Cardinal_Jewel) >= 10) && (countitem(Blue_Jewel) >= 10) && (countitem(Golden_Jewel) >= 10) && (countitem(Bluish_Green_Jewel) >= 10))
.@item_check =1;
for(.@i = 0; .@i