From 9c09b5aa848716f478b55624a7fb1bd1bc5fba82 Mon Sep 17 00:00:00 2001 From: j-tkay Date: Tue, 11 Dec 2012 18:38:42 +0000 Subject: - Fixed bugreport:6993, invalid item id in mercenary script. (other/mercenary_rent.txt) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@17016 54d463be-8e91-2dee-dedb-b68131a5f0ec --- npc/other/mercenary_rent.txt | 919 ++++++++++--------------------------------- 1 file changed, 212 insertions(+), 707 deletions(-) (limited to 'npc/other/mercenary_rent.txt') diff --git a/npc/other/mercenary_rent.txt b/npc/other/mercenary_rent.txt index 9f3d8273d..19b9079de 100644 --- a/npc/other/mercenary_rent.txt +++ b/npc/other/mercenary_rent.txt @@ -3,11 +3,11 @@ //===== By: ================================================== //= L0ne_W0lf //===== Current Version: ===================================== -//= 1.3 +//= 1.4 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= -//= [Aegis Conversion] +//= [Official Conversion] //= Sells Lancer, Sword, and Archer mercenaries, //= along with related mercenary items. //===== Additional Comments: ================================= @@ -15,642 +15,201 @@ //= 1.1 Optimization. [Zephyrus] //= 1.2 Removed redundent input. [L0ne_W0lf] //= 1.3 Duplicates now spawned from floating NPCs. [L0ne_W0lf] +//= 1.4 Optimized and fixed wrong item id. [Joseph] //============================================================ -prontera,41,337,5 script Mercenary Manager#Spear 105,{ - set .@faith_lancer, mercenary_get_faith(SPEAR_MERC_GUILD); +- script Mercenary Manager#main -1,{ + setarray .@name$, "Spear", "Sword", "Bow"; + setarray .@faith$, "SPEAR_MERC_GUILD", "SWORD_MERC_GUILD", "ARCH_MERC_GUILD"; + setarray .@item, 12182, 12172, 12162; + set .@faith_lancer, mercenary_get_faith(getd(.@faith$[.@type])); + set .@npc$, strnpcinfo(2); + for (set .@size, getarraysize(.@name$); .@i < .@size; set .@i, .@i + 1) + if (.@npc$ == .@name$[.@i]) set .@type, .@i; mes "[Mercenary Manager]"; mes "Welcome to the"; - mes "Spear Mercenary Guild."; + 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 "Spear Mercenary?"; - mes "Which Grade were you"; - mes "interested in hiring?"; - next; - set .@Grade, select("1st Grade Spear Mercenary:2nd Grade Spear Mercenary:3rd Grade Spear Mercenary:4th Grade Spear Mercenary:5th Grade Spear Mercenary:6th Grade Spear Mercenary:7th Grade Spear Mercenary:8th Grade Spear Mercenary:9th Grade Spear Mercenary"); - set .@BaseLevel, 5 + (.@Grade * 10); - if( .@BaseLevel > 90 ) - set .@BaseLevel, 90; - - set .@ZenyCost, 7 * .@Grade; - - if( .@Grade == 7 ) - set .@FaithCost, 50; - else if( .@Grade == 8 ) - set .@FaithCost, 100; - else if( .@Grade == 9 ) - set .@FaithCost, 300; - else - set .@FaithCost, 0; - - mes "[Mercenary Manager]"; - if( .@Grade == 1 ) - mes "So you want to hire a 1st"; - else if( .@Grade == 2 ) - mes "So you want to hire a 2nd"; - else if( .@Grade == 3 ) - mes "So you want to hire a 3rd"; - else - mes "So you want to hire a " + .@Grade + "th"; - - mes "Grade Spear 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_lancer < .@FaithCost ) - { - mes "[Mercenary Manager]"; - mes "Oh... Your Loyalty rating"; - mes "with the Spear 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."; - set Zeny, Zeny - (.@ZenyCost * 1000); - getitem 12172 + .@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_lancer < 500 ) - { + switch(select("Hire Mercenary:Mercenary Info:Nothing:10th Grade Mercenaries")) { + case 1: 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 "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 (set .@i, 1; .@i <= 9; set .@i, .@i + 1) + set .@menu$, .@menu$ + .@i + .@suffix$[((.@i <= 3)? .@i : 0)] + " Grade " + .@npc$ + " Mercenary:"; + set .@Grade, select(.@menu$); + set .@BaseLevel, 5 + (.@Grade * 10); + set .@BaseLevel, (.@val > 90)? 90 : .@BaseLevel; + set .@ZenyCost, 7 * .@Grade; + setarray .@FaithCost[7], 50,100,300; + set .@FaithCost, .@FaithCost[.@Grade]; 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 SPEAR_MERC_GUILD,-400; - getitem 12182,1; - } - close; - } -} - -- script ::Mercenary_Manager_Sword -1,{ - set .@faith_sword, mercenary_get_faith(SWORD_MERC_GUILD); - mes "[Mercenary Manager]"; - mes "Welcome to the"; - mes "Sword Mercenary Guild."; - mes "Did you have any questions?"; - next; - switch( select("Hire Mercenary:Mercenary Info:Nothing:10th Grade Mercenaries") ) - { - case 1: - mes "[Mercenary Manager]"; - mes "You want to hire a"; - mes "Sword Mercenary?"; - mes "Which Grade were you"; - mes "interested in hiring?"; - next; - set .@Grade, select("1st Grade Sword Mercenary:2nd Grade Sword Mercenary:3rd Grade Sword Mercenary:4th Grade Sword Mercenary:5th Grade Sword Mercenary:6th Grade Sword Mercenary:7th Grade Sword Mercenary:8th Grade Sword Mercenary:9th Grade Sword Mercenary"); - set .@BaseLevel, 5 + (.@Grade * 10); - if( .@BaseLevel > 90 ) - set .@BaseLevel, 90; - - set .@ZenyCost, 7 * .@Grade; - - if( .@Grade == 7 ) - set .@FaithCost, 50; - else if( .@Grade == 8 ) - set .@FaithCost, 100; - else if( .@Grade == 9 ) - set .@FaithCost, 300; - else - set .@FaithCost, 0; - - mes "[Mercenary Manager]"; - if( .@Grade == 1 ) - mes "So you want to hire a 1st"; - else if( .@Grade == 2 ) - mes "So you want to hire a 2nd"; - else if( .@Grade == 3 ) - mes "So you want to hire a 3rd"; - else - mes "So you want to hire a " + .@Grade + "th"; - - mes "Grade Sword 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_sword < .@FaithCost ) - { - mes "[Mercenary Manager]"; - mes "Oh... Your Loyalty rating"; - mes "with the Sword 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."; - set Zeny, Zeny - (.@ZenyCost * 1000); - getitem 12162 + .@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_sword < 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 SWORD_MERC_GUILD,-400; - getitem 12172,1; - } - close; - } -} - -pay_arche,99,167,4 script Mercenary Manager#Bow 732,{ - set .@faith_archer, mercenary_get_faith(ARCH_MERC_GUILD); - mes "[Mercenary Manager]"; - mes "Welcome to the"; - mes "Bow Mercenary Guild."; - mes "How can I be of service?"; - next; - switch( select("Hire Mercenary:Mercenary Info:Nothing:10th Grade Mercenaries") ) - { - case 1: - mes "[Mercenary Manager]"; - mes "You want to hire"; - mes "a Bow Mercenary?"; - mes "Which Grade were you"; - mes "interested in hiring?"; - next; - - set .@Grade, select("1st Grade Bow Mercenary:2nd Grade Bow Mercenary:3rd Grade Bow Mercenary:4th Grade Bow Mercenary:5th Grade Bow Mercenary:6th Grade Bow Mercenary:7th Grade Bow Mercenary:8th Grade Bow Mercenary:9th Grade Bow Mercenary"); - set .@BaseLevel, 5 + (.@Grade * 10); - if( .@BaseLevel > 90 ) - set .@BaseLevel, 90; - - set .@ZenyCost, 7 * .@Grade; - - if( .@Grade == 7 ) - set .@FaithCost, 50; - else if( .@Grade == 8 ) - set .@FaithCost, 100; - else if( .@Grade == 9 ) - set .@FaithCost, 300; - else - set .@FaithCost, 0; - - mes "[Mercenary Manager]"; - if( .@Grade == 1 ) - mes "So you want to hire a 1st"; - else if( .@Grade == 2 ) - mes "So you want to hire a 2nd"; - else if( .@Grade == 3 ) - mes "So you want to hire a 3rd"; - else - mes "So you want to hire a " + .@Grade + "th"; - - mes "Grade Bow 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 "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_lancer < .@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."; + set Zeny, Zeny - (.@ZenyCost * 1000); + getitem .@item[.@type] - 10 + .@Grade, 1; + } + close; + case 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_archer < .@FaithCost ) - { + 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 "I'm sorry, but your"; - mes "Loyalty rating is too"; - mes "low to hire this Bow"; - mes "Mercenary. Come back"; - mes "again when you have"; - mes "" + .@FaithCost + " or more Loyalty."; - } - else if( BaseLevel < .@BaseLevel ) - { + 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 "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 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 "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 "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 "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."; - set Zeny, Zeny - (.@ZenyCost * 1000); - getitem 12152 + .@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 "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 "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_archer < 500 ) - { + 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 "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 "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 "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 "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 "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 ARCH_MERC_GUILD,-400; - getitem 12162,1; - } - close; + 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_lancer < 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 105 +pay_arche,99,167,4 duplicate(Mercenary Manager#main) Mercenary Manager#Bow 732 // Mercenary Merchant NPCs //============================================================ @@ -662,72 +221,38 @@ pay_arche,99,167,4 script Mercenary Manager#Bow 732,{ mes "in particular that"; mes "you're looking for?"; next; - switch(select("Mercenary Red Potion:Mercenary Blue Potion:Mercenary Concentration Potion:Mercenary Awakening Potion:Mercenary Berserk Potion")) { - case 1: - mes "[Mercenary Goods Merchant]"; - mes "Mercenary Red Potions"; - mes "each cost 1,750 zeny."; - mes "How many would you like?"; - next; - callfunc "F_PurchaseMercItem",12184,1750; - case 2: - mes "[Mercenary Goods Merchant]"; - mes "Mercenary Blue Potions"; - mes "each cost 3,500 zeny."; - mes "How many would you like?"; - next; - callfunc "F_PurchaseMercItem",12185,3000; - case 3: - mes "[Mercenary Goods Merchant]"; - mes "Mercenary Concentration"; - mes "Potions each cost 560 zeny."; - mes "How many would you like?"; - next; - callfunc "F_PurchaseMercItem",12241,560; - case 4: - mes "[Mercenary Goods Merchant]"; - mes "Mercenary Awakening"; - mes "Potions each cost 1,050 zeny."; - mes "How many would you like?"; - next; - callfunc "F_PurchaseMercItem",12242,1050; - case 5: - mes "[Mercenary Goods Merchant]"; - mes "Mercenary Beserk Potions"; - mes "each cost 2,100 zeny."; - mes "How many would you like?"; - next; - callfunc "F_PurchaseMercItem",12243,2100; - } - close; -} - -prontera,30,337,4 duplicate(MercMerchant) Mercenary Merchant#Spear 700 -pay_arche,102,167,5 duplicate(MercMerchant) Mercenary Merchant#Bow 879 - -// Function for selling items. -//============================================================ -function script F_PurchaseMercItem { + setarray .@item, 12184, 12185, 12241, 12242, 12243; + setarray .@cost, 1750, 3000, 560, 1050, 2100; + for (set .@size, getarraysize(.@item); .@i < .@size; set .@i, .@i + 1) + set .@menu$, .@menu$ + getitemname(.@item[.@i]) + ":"; + set .@m, select(.@menu$)-1; + set .@str$, .@cost[.@m] + ""; + set .@len, getstrlen(.@str$); + set .@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 ) - { + if (!.@input) { 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; } - else if( .@input < 0 || .@input > 10000 ) - { + else if (.@input < 0 || .@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; } - else if( set(.@total_po, .@input * getarg(1)) > Zeny ) - { + else if (set(.@total_po, .@input * .@cost[.@m]) > Zeny) { mes "[Mercenary Goods Merchant]"; mes "I'm sorry, but you don't"; mes "have enough zeny for this"; @@ -735,9 +260,9 @@ function script F_PurchaseMercItem { mes "be here when you're ready"; mes "to purchase something"; mes "for your Mercenaries."; + close; } - else if( checkweight(getarg(0), .@input) == 0 ) - { + else if (!checkweight(.@item[.@m], .@input)) { mes "[Mercenary Goods Merchant]"; mes "If I gave you that many"; mes "potions, you wouldn't be"; @@ -745,41 +270,21 @@ function script F_PurchaseMercItem { mes "Please come back after"; mes "you free up some space"; mes "in your Inventory."; + close; } - else - { - mes "[Mercenary Goods Merchant]"; - if( .@input == 1 ) - { - mes "Here's your Mercenary"; - switch( getarg(0) ) - { - case 12148: mes "Red Potion. Thank you, and"; break; - case 12149: mes "Blue Potion. Thank you, and"; break; - case 12241: mes "Concentration Potion."; break; - case 12242: mes "Awakening Potion."; break; - case 12243: mes "Berserk Potion. Thank"; break; - } - mes "please come again when"; - mes "you need more potions"; - mes "for your Mercenaries."; - } - else - { - mes "Here you are, this is exactly"; - switch( getarg(0) ) - { - case 12148: mes "" + .@input + " Mercenary Red Potions."; mes "Thank you, and please come"; break; - case 12149: mes "" + .@input + " Mercenary Blue Potions."; mes "Thank you, and please come"; break; - case 12241: mes "" + .@input + " Mercenary Concentration"; mes "Potions. Thank you, and please"; break; - case 12242: mes "" + .@input + " Mercenary Awakening"; mes "Potions. Thank you, and please"; break; - case 12243: mes "" + .@input + " Mercenary Berserk Potions."; mes "Thank you, and please come"; break; - } - mes "again when you need more"; - mes "potions for your Mercenaries."; - } - set Zeny, Zeny - .@total_po; - getitem getarg(0), .@input; + 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."; + set Zeny, Zeny - .@total_po; + getitem .@item[.@m], .@input; close; } +prontera,30,337,4 duplicate(MercMerchant) Mercenary Merchant#Spear 700 +pay_arche,102,167,5 duplicate(MercMerchant) Mercenary Merchant#Bow 879 -- cgit v1.2.3-60-g2f50