//================= Hercules Script =======================================
//= _ _ _
//= | | | | | |
//= | |_| | ___ _ __ ___ _ _| | ___ ___
//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
//= | | | | __/ | | (__| |_| | | __/\__ \
//= \_| |_/\___|_| \___|\__,_|_|\___||___/
//================= License ===============================================
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
//= Copyright (C) 2012-2020 Hercules Dev Team
//= Copyright (C) Joseph
//= Copyright (C) Zephyrus
//= Copyright (C) L0ne_W0lf
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
//= the Free Software Foundation, either version 3 of the License, or
//= (at your option) any later version.
//=
//= This program is distributed in the hope that it will be useful,
//= but WITHOUT ANY WARRANTY; without even the implied warranty of
//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//= GNU General Public License for more details.
//=
//= You should have received a copy of the GNU General Public License
//= along with this program. If not, see <http://www.gnu.org/licenses/>.
//=========================================================================
//= Mercenary related NPCs
//================= Description ===========================================
//= Sells Lancer, Sword, and Archer mercenaries,
//= along with related mercenary items.
//================= Current Version =======================================
//= 1.4
//=========================================================================
- script Mercenary Manager#main FAKE_NPC,{
setarray .@name$, "Spear", "Sword", "Bow";
setarray .@faith$, "SPEAR_MERC_GUILD", "SWORD_MERC_GUILD", "ARCH_MERC_GUILD";
setarray .@item, 12182, 12172, 12162;
.@npc$ = strnpcinfo(NPC_NAME_HIDDEN);
.@size = getarraysize(.@name$);
for (.@i = 0; .@i < .@size; ++.@i)
if (.@npc$ == .@name$[.@i]) .@type = .@i;
.@faith_merc = mercenary_get_faith(getd(.@faith$[.@type]));
mes "[Mercenary Manager]";
mes "Welcome to the";
mes .@npc$ + " Mercenary Guild.";
mes "What can I do for you?";
next;
switch(select("Hire Mercenary", "Mercenary Info", "Nothing", "10th Grade Mercenaries")) {
case 1:
mes "[Mercenary Manager]";
mes "You want to hire a";
mes .@npc$ + " Mercenary?";
mes "Which Grade were you";
mes "interested in hiring?";
next;
setarray .@suffix$, "th","st","nd","rd";
for (.@i = 1; .@i <= 9; ++.@i)
.@menu$ += .@i + .@suffix$[((.@i <= 3)? .@i : 0)] + " Grade " + .@npc$ + " Mercenary:";
.@Grade = select(.@menu$);
.@BaseLevel = 5 + (.@Grade * 10);
.@BaseLevel = (.@val > 90)? 90 : .@BaseLevel;
.@ZenyCost = 7 * .@Grade;
setarray .@FaithCost[7], 50,100,300;
.@FaithCost = .@FaithCost[.@Grade];
mes "[Mercenary Manager]";
mes "So you want to hire a " + .@Grade + .@suffix$[((.@Grade <= 3)? .@i : 0)];
mes "Grade " + .@npc$ + " Mercenary?";
mes "You need to have attained";
mes "Base Level " + .@BaseLevel + " or higher, and";
mes "must pay the " + .@ZenyCost + ",000 zeny fee.";
next;
if(select("Yes", "No") == 2) {
mes "[Mercenary Manager]";
mes "Oh, really? Well, now";
mes "might not be a good time";
mes "for you to consider hiring";
mes "a Mercenary, but please feel";
mes "free to come back if your";
mes "needs change. Thank you~";
}
else if(.@FaithCost && .@faith_merc < .@FaithCost) {
mes "[Mercenary Manager]";
mes "Oh... Your Loyalty rating";
mes "with the " + .@npc$ + " Mercenary";
mes "Guild isn't high enough to";
mes "hire this Mercenary. Please";
mes "come back after you earn";
mes "" + .@FaithCost + " or more Loyalty with us.";
}
else if (BaseLevel < .@BaseLevel) {
mes "[Mercenary Manager]";
mes "I'm sorry, but your Base";
mes "Level isn't high enough";
mes "to hire this Mercenary.";
mes "Please come back to me";
mes "once you reach Base Level " + .@BaseLevel + ".";
}
else if (Zeny < .@ZenyCost * 1000) {
mes "[Mercenary Manager]";
mes "I'm sorry, but you";
mes "don't have enough zeny";
mes "to hire this Mercenary.";
mes "The hiring fee is " + .@ZenyCost + ",000 zeny.";
}
else {
mes "[Mercenary Manager]";
mes "Great! Our Mercenaries";
mes "are sincere and devoted";
mes "to protecting their clients.";
mes "Summoned Mercenaries will";
mes "offer their support to you for";
mes "30 minutes. Take care now.";
Zeny -= (.@ZenyCost * 1000);
getitem .@item[.@type] - 10 + .@Grade, 1;
}
close;
case 2:
mes "[Mercenary Manager]";
mes "Mercenaries are soldiers";
mes "that will fight at your side";
mes "on the battlefield, but there";
mes "are a few terms and conditions";
mes "you must fulfill to hire them.";
next;
mes "[Mercenary Manager]";
mes "You must fulfill a level";
mes "requirement and pay a zeny";
mes "fee to hire a Mercenary.";
mes "Higher grade Mercenaries";
mes "will also require that you";
mes "build a Loyalty rating with us.";
next;
mes "[Mercenary Manager]";
mes "Mercenary contracts can't be";
mes "transferred to other people,";
mes "and we only allow a 5 Base Level difference between the Mercenary";
mes "and client so you can't hire one much stronger than you.";
next;
mes "[Mercenary Manager]";
mes "Well, you can figure out the";
mes "details when you actually form";
mes "a contract with one of our";
mes "Mercenaries, and receive";
mes "the Summon Scroll that will";
mes "call a Mercenary to your side.";
next;
mes "[Mercenary Manager]";
mes "You can't give this scroll";
mes "to anyone else, and the";
mes "Mercenary will only remain";
mes "with you for 30 minutes after";
mes "you summon him. Don't forget";
mes "about the time limit, okay?";
close;
case 3:
mes "[Mercenary Manager]";
mes "No? You didn't need any";
mes "help? Well, feel free to";
mes "ask me if you have any";
mes "questions about Mercenaries.";
close;
case 4:
mes "[Mercenary Manager]";
mes "10th Grade Mercenaries are";
mes "the best we have to offer,";
mes "and we use different criteria";
mes "for our clients to hire them.";
mes "There's no zeny fee, but you";
mes "must have 500 Loyalty.";
next;
mes "[Mercenary Manager]";
mes "Once you make a contract";
mes "with a 10th Grade Mercenary,";
mes "your Loyalty rating will be";
mes "decreased by 400. In other";
mes "words, you pay 400 Loyalty";
mes "to hire a 10th Grade Mercenary.";
next;
mes "[Mercenary Manager]";
mes "You must also be at";
mes "Base Level 90 or higher to";
mes "hire a 10th Grade Mercenary.";
mes "Are you still interested in";
mes "forming this contract?";
next;
if (select("Yes", "No") == 2) {
mes "[Mercenary Manager]";
mes "I understand... It takes";
mes "hard work and sacrifice to";
mes "even reach the point where";
mes "you can hire a 10th Grade";
mes "Mercenary. Have you considered";
mes "hiring a lower grade Mercenary?";
}
else if (.@faith_merc < 500) {
mes "[Mercenary Manager]";
mes "I'm sorry, but your";
mes "Loyalty rating is too";
mes "low to hire a 10th Grade";
mes "Mercenary. You must have";
mes "500 or more Loyalty to";
mes "form a contract with one.";
}
else if (BaseLevel < 90) {
mes "[Mercenary Manager]";
mes "I'm sorry, but you must";
mes "be at Base Level 90 or";
mes "higher to form a contract";
mes "with a 10th Grade Mercenary.";
}
else {
mes "[Mercenary Manager]";
mes "Congratulations! It looks";
mes "like you're planning in taking";
mes "on some very dangerous work";
mes "since you're hiring a 10th";
mes "Grade Mercenary. I wish you";
mes "the best of luck with him.";
mercenary_set_faith getd(.@faith$[.@type]),-400;
getitem .@item[.@type],1;
}
close;
}
}
prontera,41,337,5 duplicate(Mercenary Manager#main) Mercenary Manager#Spear 8W_SOLDIER
pay_arche,99,167,4 duplicate(Mercenary Manager#main) Mercenary Manager#Bow 4_M_JOB_HUNTER
//== Mercenary Merchant NPCs ===============================
- script Mercenary Merchant#dummy::MercMerchant FAKE_NPC,{
mes "[Mercenary Goods Merchant]";
mes "Hello, I sell goods";
mes "that Mercenaries can";
mes "use. Is there anything";
mes "in particular that";
mes "you're looking for?";
next;
setarray .@item, 12184, 12185, 12241, 12242, 12243;
setarray .@cost, 1750, 3000, 560, 1050, 2100;
.@size = getarraysize(.@item);
for (.@i = 0; .@i < .@size; ++.@i)
.@menu$ += getitemname(.@item[.@i]) + ":";
.@m = select(.@menu$)-1;
.@str$ = .@cost[.@m] + "";
.@len = getstrlen(.@str$);
.@str_cost$ = (.@len <= 3)? .@str$ : insertchar(.@str$,",",.@len-3);
mes "[Mercenary Goods Merchant]";
mes getitemname(.@item[.@m]);
mes "each cost " + .@str_cost$ + " zeny.";
mes "How many would you like?";
next;
input(.@input);
if (.@input <= 0) {
mes "[Mercenary Goods Merchant]";
mes "You changed your mind?";
mes "Alright, feel free to come";
mes "back to me whenever you want";
mes "to buy any Mercenary Potions.";
close;
}
if (.@input > 10000) {
mes "[Mercenary Goods Merchant]";
mes "I'm sorry, but you";
mes "can only buy up to";
mes "10,000 of these potions";
mes "at a time. Please enter";
mes "a number from 1 to 10,000.";
close;
}
.@total_po = .@input * .@cost[.@m];
if (.@total_po > Zeny) {
mes "[Mercenary Goods Merchant]";
mes "I'm sorry, but you don't";
mes "have enough zeny for this";
mes "many potions. Well, I'll be";
mes "be here when you're ready";
mes "to purchase something";
mes "for your Mercenaries.";
close;
}
if (!checkweight(.@item[.@m], .@input)) {
mes "[Mercenary Goods Merchant]";
mes "If I gave you that many";
mes "potions, you wouldn't be";
mes "able to carry them with you.";
mes "Please come back after";
mes "you free up some space";
mes "in your Inventory.";
close;
}
mes "[Mercenary Goods Merchant]";
if (.@input == 1)
mes "Here's your " + getitemname(.@item[.@m]) + ".";
else {
mes "Here you are, this is exactly";
mes .@input + " " + getitemname(.@item[.@m]) + "s.";
}
mes "Thank you, and please come";
mes "again when you need more";
mes "potions for your Mercenaries.";
Zeny -= .@total_po;
getitem .@item[.@m], .@input;
close;
}
prontera,30,337,4 duplicate(MercMerchant) Mercenary Merchant#Spear 8_F_GIRL
pay_arche,102,167,5 duplicate(MercMerchant) Mercenary Merchant#Bow 4_F_CAPEGIRL