diff --git a/npc/other/mercenary_rent.txt b/npc/other/mercenary_rent.txt index 07bc8547fb..d20dfdb233 100644 --- a/npc/other/mercenary_rent.txt +++ b/npc/other/mercenary_rent.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= L0ne_W0lf //===== Current Version: ===================================== -//= 1.4 +//= 1.5 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= @@ -16,6 +16,8 @@ //= 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] +//= 1.5 Added Mercenary Guild Switch & fixed a bug +//= in izlude duplicate. [Capuche] //============================================================ - script Mercenary Manager#main -1,{ @@ -23,24 +25,24 @@ setarray .@faith$, "SPEAR_MERC_GUILD", "SWORD_MERC_GUILD", "ARCH_MERC_GUILD"; setarray .@item, 12182, 12172, 12162; set .@npc$, strnpcinfo(2); - for (set .@size, getarraysize(.@name$); .@i < .@size; set .@i, .@i + 1) - if (.@npc$ == .@name$[.@i]) set .@type, .@i; + for (set .@size, getarraysize(.@name$); .@type < .@size; set .@type, .@type + 1) + if( compare( .@npc$,.@name$[.@type] ) ) break; set .@faith_merc, mercenary_get_faith(getd(.@faith$[.@type])); mes "[Mercenary Manager]"; mes "Welcome to the"; - mes .@npc$ + " Mercenary Guild."; + mes .@name$[.@type] + " 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 .@name$[.@type] + " Mercenary?"; mes "Which Grade were you"; mes "interested in hiring?"; next; for (set .@i, 1; .@i <= 9; set .@i, .@i + 1) - set .@menu$, .@menu$ + callfunc("F_GetNumSuffix",.@i) + " Grade " + .@npc$ + " Mercenary:"; + set .@menu$, .@menu$ + callfunc("F_GetNumSuffix",.@i) + " Grade " + .@name$[.@type] + " Mercenary:"; set .@Grade, select(.@menu$); set .@BaseLevel, 5 + (.@Grade * 10); set .@BaseLevel, (.@val > 90)? 90 : .@BaseLevel; @@ -49,7 +51,7 @@ set .@FaithCost, .@FaithCost[.@Grade]; mes "[Mercenary Manager]"; mes "So you want to hire a " + callfunc("F_GetNumSuffix",.@Grade); - mes "Grade " + .@npc$ + " Mercenary?"; + mes "Grade " + .@name$[.@type] + " Mercenary?"; mes "You need to have attained"; mes "Base Level " + .@BaseLevel + " or higher, and"; mes "must pay the " + .@ZenyCost + ",000 zeny fee."; @@ -66,7 +68,7 @@ else if(.@FaithCost && .@faith_merc < .@FaithCost) { mes "[Mercenary Manager]"; mes "Oh... Your Loyalty rating"; - mes "with the " + .@npc$ + " Mercenary"; + mes "with the " + .@name$[.@type] + " Mercenary"; mes "Guild isn't high enough to"; mes "hire this Mercenary. Please"; mes "come back after you earn"; @@ -207,8 +209,8 @@ 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 +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 //============================================================ @@ -285,5 +287,41 @@ pay_arche,99,167,4 duplicate(Mercenary Manager#main) Mercenary Manager#Bow 732 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 +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 + +// Mercenary Switch NPCs +//============================================================ +- script Mercenary_Switch -1,{ + + setarray .@name$, "Spear","Sword","Bow"; + set .@npc$, strnpcinfo(2); + for (set .@size, getarraysize(.@name$); .@type < .@size; set .@type, .@type + 1) + if (.@npc$ == .@name$[.@type]) break; + + mes "[Checker]"; + mes "Please input a password."; + next; + if( input( .@check,0,10000 ) != 0 || .@check != 1854 ) { + mes "Wrong number"; + close; + } + mes "[Checker]"; + mes "Please select."; + next; + switch( select( "Turn off Mercenary NPC","Turn on Mercenary NPC" ) ) { + case 1: + mes "NPCs are turned off."; + disablenpc "Mercenary Manager#" + .@name$[.@type]; + disablenpc "Mercenary Merchant#" + .@name$[.@type]; + close; + case 2: + mes "NPCs are turned on."; + enablenpc "Mercenary Manager#" + .@name$[.@type]; + enablenpc "Mercenary Merchant#" + .@name$[.@type]; + close; + } +} +prontera,299,379,5 duplicate(Mercenary_Switch) Mercenary Switch#Spear 8W_SOLDIER +pay_arche,170,185,5 duplicate(Mercenary_Switch) Mercenary Switch#Bow 4_F_CAPEGIRL +izlude,245,250,4 duplicate(Mercenary_Switch) Mercenary Switch#Sword 4_F_HUWOMAN diff --git a/npc/re/other/mercenary_rent.txt b/npc/re/other/mercenary_rent.txt index ab7139c51e..9339b20f20 100644 --- a/npc/re/other/mercenary_rent.txt +++ b/npc/re/other/mercenary_rent.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= Daegaladh //===== Current Version: ===================================== -//= 1.0 +//= 1.2 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= @@ -12,16 +12,17 @@ //===== Additional Comments: ================================= //= 1.0 First version. [L0ne_W0lf] //= 1.1 Added Izlude duplicates. [Euphy] +//= 1.2 Change the hidden name to fix a bug. [Capuche] //============================================================ -izlude,47,170,4 duplicate(Mercenary Manager#main) Mercenary Manager#Sword 734 -izlude_a,47,170,4 duplicate(Mercenary Manager#main) Mercenary Manager#Swo_a 734 -izlude_b,47,170,4 duplicate(Mercenary Manager#main) Mercenary Manager#Swo_b 734 -izlude_c,47,170,4 duplicate(Mercenary Manager#main) Mercenary Manager#Swo_c 734 -izlude_d,47,170,4 duplicate(Mercenary Manager#main) Mercenary Manager#Swo_d 734 +izlude,47,170,4 duplicate(Mercenary Manager#main) Mercenary Manager#Sword 4_M_JOB_KNIGHT2 +izlude_a,47,170,4 duplicate(Mercenary Manager#main) Mercenary Manager#Sword1 4_M_JOB_KNIGHT2 +izlude_b,47,170,4 duplicate(Mercenary Manager#main) Mercenary Manager#Sword2 4_M_JOB_KNIGHT2 +izlude_c,47,170,4 duplicate(Mercenary Manager#main) Mercenary Manager#Sword3 4_M_JOB_KNIGHT2 +izlude_d,47,170,4 duplicate(Mercenary Manager#main) Mercenary Manager#Sword4 4_M_JOB_KNIGHT2 -izlude,55,170,4 duplicate(MercMerchant) Mercenary Merchant#Sword 892 -izlude_a,55,170,4 duplicate(MercMerchant) Mercenary Merchant#Swo_a 892 -izlude_b,55,170,4 duplicate(MercMerchant) Mercenary Merchant#Swo_b 892 -izlude_c,55,170,4 duplicate(MercMerchant) Mercenary Merchant#Swo_c 892 -izlude_d,55,170,4 duplicate(MercMerchant) Mercenary Merchant#Swo_d 892 +izlude,55,170,4 duplicate(MercMerchant) Mercenary Merchant#Sword 4_F_HUGRANMA +izlude_a,55,170,4 duplicate(MercMerchant) Mercenary Merchant#Swo_a 4_F_HUGRANMA +izlude_b,55,170,4 duplicate(MercMerchant) Mercenary Merchant#Swo_b 4_F_HUGRANMA +izlude_c,55,170,4 duplicate(MercMerchant) Mercenary Merchant#Swo_c 4_F_HUGRANMA +izlude_d,55,170,4 duplicate(MercMerchant) Mercenary Merchant#Swo_d 4_F_HUGRANMA diff --git a/npc/re/quests/cupet.txt b/npc/re/quests/cupet.txt index ffda766b5c..ce3a499ac4 100644 --- a/npc/re/quests/cupet.txt +++ b/npc/re/quests/cupet.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= Z3R0 //===== Current Version: ===================================== -//= 1.0 +//= 1.1 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= @@ -11,10 +11,11 @@ //= Exchanges Hunted Items for Tames //===== Additional Comments: ================================= //= 1.0 First / Optimized Version +//= 1.1 Little clean-up & added a delitem. [Capuche] //============================================================ // 1st NPC -- script CPM1 750,{ +- script CPM1 -1,{ set .@npc$, "[Cute Pet Manager]"; @@ -45,7 +46,7 @@ } // 2nd NPC -- script CPM2 750,{ +- script CPM2 -1,{ set .@npc$, "[Cute Pet Manager]"; @@ -53,7 +54,6 @@ setarray .@tame_amount[0],2,2,2,2,2,2,2,2,2,2,2,2; setarray .@hunt_id[0],938,935,925,7033,945,942,931,901,1094,1021,936,1035; setarray .@hunt_amount[0],500,600,500,300,500,500,500,500,500,500,500,500; - setarray .@hunt_item_count[0],1,1,1,1,1,1,1,1,1; setarray .@mob_id[0],1031,1042,1019,1077,1056,1057,1023,1026,1188,1110,1029; set .@tame_gets, 2; @@ -77,7 +77,7 @@ } // 3rd NPC -- script CPM3 750,{ +- script CPM3 -1,{ set .@npc$, "[Cute Pet Manager]"; @@ -115,7 +115,7 @@ function script cute_pet_manager { // getarg(2) -> .@hunt_id Array // getarg(3) -> .@hunt_amount Array // getarg(4) -> .@mob_id Array - // getarg(5) -> Attempt Variable + // getarg(5) -> Attempt Variable // getarg(6) -> .@tame_gets Variable // getarg(7) -> .@hunt_id2 Array // getarg(8) -> .@hunt_amount2 Array @@ -135,6 +135,7 @@ function script cute_pet_manager { mes "that you can tame with the item."; next; + mes "[Cute Pet Manager]"; mes "Also I will explain what materials"; mes "you need to bring in order to"; mes "get the taming item."; @@ -160,9 +161,9 @@ function script cute_pet_manager { next; // Create Menu System - for (set .@a, 0; .@a < getarraysize(getarg(0)); set .@a, .@a + 1) { + set .@size, getarraysize(getarg(0)); + for (set .@a, 0; .@a < .@size; set .@a, .@a + 1) set .@menu$, .@menu$ + (.@menu$ == "" ? "" : ":") + getitemname(getelementofarray(getarg(0), .@a)); - } // Query Player Choice set .@choice, select(.@menu$) - 1; @@ -175,34 +176,34 @@ function script cute_pet_manager { set .@mob_id, getelementofarray(getarg(4), .@choice); set .@hunt_id2, getelementofarray(getarg(7), .@choice); set .@hunt_amount2, getelementofarray(getarg(8), .@choice); - - dispbottom "Tame ID: " + .@tame_id; - dispbottom "Tame Amount: " + .@tame_amount; - dispbottom "Hunt ID: " + .@hunt_id; - dispbottom "Hunt Name: " + getitemname(.@hunt_id); - dispbottom "Hunt Amount: " + .@hunt_amount; - dispbottom "Mob ID: " + .@mob_id; - dispbottom "Hunt ID2: " + .@hunt_id2; - dispbottom "Hunt Amount2: " + .@hunt_amount2; - - if (.@hunt_id2) { set .@hunt2_count, countitem(.@hunt_id2); } - if (countitem(.@hunt_id) >= .@hunt_amount && countitem(6083) > 0 && .@hunt2_count >= .@hunt_amount2) { + // dispbottom "Tame ID: " + .@tame_id; + // dispbottom "Tame Amount: " + .@tame_amount; + // dispbottom "Hunt ID: " + .@hunt_id; + // dispbottom "Hunt Name: " + getitemname(.@hunt_id); + // dispbottom "Hunt Amount: " + .@hunt_amount; + // dispbottom "Mob ID: " + .@mob_id; + if (.@hunt_id2) { + // dispbottom "Hunt ID2: " + .@hunt_id2; + // dispbottom "Hunt Amount2: " + .@hunt_amount2; + set .@hunt2_count, countitem(.@hunt_id2); + } + if (countitem(.@hunt_id) >= .@hunt_amount && countitem(6083) > 0 && .@hunt2_count >= .@hunt_amount2) { mes "[Cute Pet Manager]"; mes "Ah, you have gathered all items"; mes "with your friends. You can now"; mes "exchange for an " + getitemname(.@tame_id) + "."; mes "Do you want to exchange with me?"; next; - if (select("Exchange:Don't Exchange") == 2) { mes "[Cute Pet Manager]"; mes "You don't? You will come back again."; close; } - delitem .@hunt_id, .@hunt_amount; delitem 6083, 1; + if (.@hunt_id2) + delitem .@hunt_id2, .@hunt_amount2; set getarg(5), getarg(5) + 1; getitem .@tame_id, .@tame_amount; @@ -217,7 +218,7 @@ function script cute_pet_manager { mes "^FF0000" + strmobinfo(1,.@mob_id) + "^000000 monsters."; next; mes "[Cute Pet Manager]"; - mes "Bring ^FF0000" + .@hunt_amount + " " + getitemname(.@hunt_id) + "^000000s " + (.@hunt_id2 ? ", ^FF0000" + .@hunt_amount2 + " " + getitemname(.@hunt_id2) : "") + " ^000000 and ^FF00001 Dolly Capsule^000000"; + mes "Bring ^FF0000" + .@hunt_amount + " " + getitemname(.@hunt_id) + "^000000" + (.@hunt_id2 ? ", ^FF0000" + .@hunt_amount2 + " " + getitemname(.@hunt_id2) : "") + " ^000000 and ^FF00001 Dolly Capsule^000000"; mes "then you can exchange them"; mes "for an " + getitemname(.@tame_id) + "."; close; @@ -225,18 +226,18 @@ function script cute_pet_manager { } // NPC Duplicates -prontera,67,212,5 duplicate(CPM1) Cute Pet Manager#1 750 -prontera,242,92,3 duplicate(CPM2) Cute Pet Manager#2 750 -prontera,179,92,3 duplicate(CPM3) Cute Pet Manager#3 750 +prontera,67,212,5 duplicate(CPM1) Cute Pet Manager#1 4_M_ALCHE_C +prontera,242,92,3 duplicate(CPM2) Cute Pet Manager#2 4_M_ALCHE_C +prontera,179,92,3 duplicate(CPM3) Cute Pet Manager#3 4_M_ALCHE_C -geffen,180,125,5 duplicate(CPM1) Cute Pet Manager#4 750 -geffen,152,66,3 duplicate(CPM2) Cute Pet Manager#5 750 -geffen,197,95,3 duplicate(CPM3) Cute Pet Manager#6 750 +geffen,180,125,5 duplicate(CPM1) Cute Pet Manager#4 4_M_ALCHE_C +geffen,152,66,3 duplicate(CPM2) Cute Pet Manager#5 4_M_ALCHE_C +geffen,197,95,3 duplicate(CPM3) Cute Pet Manager#6 4_M_ALCHE_C -morocc,115,83,5 duplicate(CPM1) Cute Pet Manager#7 750 -morocc,218,130,3 duplicate(CPM2) Cute Pet Manager#8 750 -morocc,236,225,3 duplicate(CPM3) Cute Pet Manager#9 750 +morocc,115,83,5 duplicate(CPM1) Cute Pet Manager#7 4_M_ALCHE_C +morocc,218,130,3 duplicate(CPM2) Cute Pet Manager#8 4_M_ALCHE_C +morocc,236,225,3 duplicate(CPM3) Cute Pet Manager#9 4_M_ALCHE_C -payon,109,278,5 duplicate(CPM1) Cute Pet Manager#10 750 -payon,157,124,3 duplicate(CPM2) Cute Pet Manager#11 750 -payon,85,237,3 duplicate(CPM3) Cute Pet Manager#12 750 +payon,109,278,5 duplicate(CPM1) Cute Pet Manager#10 4_M_ALCHE_C +payon,157,124,3 duplicate(CPM2) Cute Pet Manager#11 4_M_ALCHE_C +payon,85,237,3 duplicate(CPM3) Cute Pet Manager#12 4_M_ALCHE_C diff --git a/npc/re/quests/magic_books.txt b/npc/re/quests/magic_books.txt index 57901b44d3..ea05b64759 100644 --- a/npc/re/quests/magic_books.txt +++ b/npc/re/quests/magic_books.txt @@ -13,11 +13,13 @@ //= 1.0 First Version. [Masao] //= 1.1 Optimized. [Euphy] //= 1.1a Updated NPC name to "Master Velofos". [Euphy] +//= 1.1b Fixed the rand part in "Mysterious Documents" to match +//= Aegis & fixed a bracket issue. [Capuche] //============================================================ // Main Quest :: war_book //============================================================ -geffen_in,176,105,4 script Master Velofos 64,{ +geffen_in,176,105,4 script Master Velofos 1_M_WIZARD,{ if (checkweight(1201,1) == 0) { mes "You're carrying too many items. Please make some room in your bag first."; close; @@ -48,230 +50,222 @@ geffen_in,176,105,4 script Master Velofos 64,{ mes "Learn the spell first. I've got so many things to tell you."; close; } - if ((getskilllv(2230) > 0) && (Class == Job_Warlock) || (Class == Job_Warlock_T) || (Class == Job_Baby_Warlock)) { + mes "[Master Velofos]"; + mes "Welcome, my friend."; + mes "Congratulations on entering a brand new world of magic."; + next; + mes "[Master Velofos]"; + mes "We magic practitioners are always thirsty for new knowledge and power."; + next; + mes "[Master Velofos]"; + mes "We endure great hardship and pain to achieve what we want. When we finally do, the sense of accomplishment defies description. That's why both you and I have chosen the way of magic."; + next; + mes "[Master Velofos]"; + mes "By the way, what brings you to me today?"; + next; + switch (select("Nothing.:Do you know the Reading Spell Book?:What's the Freezing Spell?:Can I have a Magic Book?:Can I use the Reading Spell Book without the Freezing Spell?:About the Ultimate Magic Book")) { + case 1: mes "[Master Velofos]"; - mes "Welcome, my friend."; - mes "Congratulations on entering a brand new world of magic."; - next; + mes "Hah! You're silly."; + close; + case 2: mes "[Master Velofos]"; - mes "We magic practitioners are always thirsty for new knowledge and power."; + mes "Reading Spell Book literally means 'read a spell book.' Do you know how to use Magic Books?"; next; - mes "[Master Velofos]"; - mes "We endure great hardship and pain to achieve what we want. When we finally do, the sense of accomplishment defies description. That's why both you and I have chosen the way of magic."; - next; - mes "[Master Velofos]"; - mes "By the way, what brings you to me today?"; - next; - switch (select("Nothing.:Do you know the Reading Spell Book?:What's the Freezing Spell?:Can I have a Magic Book?:Can I use the Reading Spell Book without the Freezing Spell?:About the Ultimate Magic Book")) { + switch (select("Yes, I do.:No, I don't.")) { case 1: mes "[Master Velofos]"; - mes "Hah! You're silly."; + mes "Well then, you don't need an additional lecture."; close; case 2: mes "[Master Velofos]"; - mes "Reading Spell Book literally means 'read a spell book.' Do you know how to use Magic Books?"; - next; - switch (select("Yes, I do.:No, I don't.")) { - case 1: - mes "[Master Velofos]"; - mes "Well then, you don't need an additional lecture."; - close; - case 2: - mes "[Master Velofos]"; - mes "Magic Books are an advanced type of magic scroll. While spells on scrolls disappear after one use, the ones in Magic Books can be cast multiple times."; - next; - mes "[Master Velofos]"; - mes "Let's compare a spell on a scroll to a wire. When the wire is used to open a door or do something else, it's bent and crushed, losing its original shape. A spell from a Magic Book is more like a shape memory alloy."; - next; - mes "[Master Velofos]"; - mes "Huh, don't you now what shape memory alloy is? Eh, just remember this: a wire made from shape memory alloy restores its shape over time."; - next; - mes "[Master Velofos]"; - mes "Like the alloy, a spell on a Magic Book remains after a use, although reusing the spell has a downtime for its restoration."; - next; - mes "[Master Velofos]"; - mes "...Oh, I didn't mean to talk for too long. Anyways, you can use Magic Books to cast spells that you've learned. Its concept is different from normal spells."; - next; - select("What's the difference?"); - mes "[Master Velofos]"; - mes "Why do you have to write your existing spells in Magic Books, you asked?"; - next; - mes "[Master Velofos]"; - mes "That's a good question. It's related to Magic Binding."; - next; - mes "[Master Velofos]"; - mes "You already learned Release, which allows you to hold the energy of the four different elements before the actual casting. Magic Binding is similar to Release."; - next; - mes "[Master Velofos]"; - mes "Since you've learned Release, you're capable of using Magic Binding as well. Well, let's talk about that later."; - next; - mes "[Master Velofos]"; - mes "You know how to hold an existing spell, and then cast it at a desired timing via Release."; - next; - mes "[Master Velofos]"; - mes "Carrying the globes of the four elements is also related to Magic Binding."; - next; - mes "[Master Velofos]"; - mes "As you know, the four elements are Fire, Water, Wind, and Earth. Being able to employ them freely is the essential principle of magic."; - next; - mes "[Master Velofos]"; - mes "We Humans use torches to keep fire, fans to blow wind, and bowls to hold water. We also use clay to make earthenware."; - next; - mes "[Master Velofos]"; - mes "Those activities may differ from magic, but both are the same in the sense of employing the four elements."; - next; - mes "[Master Velofos]"; - mes "When you use complex magic spells to summon a storm, drop lightning, or burn an area, that consumes a lot of your energy, both physically and mentally."; - next; - mes "[Master Velofos]"; - mes "When you fail to bind such powerful magic spells or fail to control them, you can receive irreparable damage to your mind and body."; - next; - mes "[Master Velofos]"; - mes "That's why we use Magic Books to reduce that burden. It helps summon pre-cast spells while you're focusing on binding their magic power."; - next; - mes "[Master Velofos]"; - mes "There's one downside though: Magic Books cannot be used for spells that you haven't learned."; - next; - mes "[Master Velofos]"; - mes "As I said earlier, spells in Magic Books tend to go back to what they are."; - next; - mes "[Master Velofos]"; - mes "That said, as a Circler, you cannot change or create spells in Magic Books."; - next; - mes "[Master Velofos]"; - mes "Even if you create one, its power will be beyond your capacity."; - next; - mes "[Master Velofos]"; - mes "In order to use the Reading Spell Book, you must learn the Freezing Spell to bind magic."; - close; - } - case 3: - mes "[Master Velofos]"; - mes "The Freezing Spell is used for Magic Binding. It helps you to insert a magic spell to a circle."; + mes "Magic Books are an advanced type of magic scroll. While spells on scrolls disappear after one use, the ones in Magic Books can be cast multiple times."; next; mes "[Master Velofos]"; - mes "Circles of magic work organically with each other. When you use the Freezing Spell to bind a spell, the spell won't activate until you cast the release spell."; + mes "Let's compare a spell on a scroll to a wire. When the wire is used to open a door or do something else, it's bent and crushed, losing its original shape. A spell from a Magic Book is more like a shape memory alloy."; next; mes "[Master Velofos]"; - mes "Of course, binding a spell continuously consumes your mana, but it consumes less mana than conventional magic spells."; + mes "Huh, don't you now what shape memory alloy is? Eh, just remember this: a wire made from shape memory alloy restores its shape over time."; next; mes "[Master Velofos]"; - mes "Magic Binding becomes more difficult when you use more powerful magic spells."; + mes "Like the alloy, a spell on a Magic Book remains after a use, although reusing the spell has a downtime for its restoration."; next; mes "[Master Velofos]"; - mes "For weak spells, you can bind two to three of them with your circle. For more powerful spells, maybe one or two is possible."; + mes "...Oh, I didn't mean to talk for too long. Anyways, you can use Magic Books to cast spells that you've learned. Its concept is different from normal spells."; + next; + select("What's the difference?"); + mes "[Master Velofos]"; + mes "Why do you have to write your existing spells in Magic Books, you asked?"; next; mes "[Master Velofos]"; - mes "That all depends on your ability to control your spells. You'll have to try and experience Magic Binding after you first learn it to really understand."; - close; - case 4: - mes "[Master Velofos]"; - mes "I'm sorry, but I only have Magic Books for beginners, but they're obviously not suitable for you. Do you still want one?"; - next; - switch (select("Sure thing.:Where can I find advanced books?")) { - case 1: - mes "[Master Velofos]"; - mes "Please go talk to [Lea] in the Archive. Tell her that you need one of the Magic Books that I've stored in there."; - next; - mes "[Master Velofos]"; - mes "For your information, she won't give it to you without anything in return. Expect her to ask you for something!"; - if (wm_book < 1) set wm_book, 1; - close; - case 2: - mes "[Master Velofos]"; - mes "I'm sorry, but our management has recently decided to limit the availability of Magic Books for Multi Circlers. It's because their numbers are increasing more quickly than we expected."; - next; - mes "[Master Velofos]"; - mes "You could find one if you try hard, but I don't have any with me."; - next; - mes "[Master Velofos]"; - mes "If our management releases the restriction, you'll be the first one to know. Don't worry."; - close; - } - case 5: - mes "[Master Velofos]"; - mes "Nothing will happen when you try to bind magic without using Magic Binding because you have nothing to hold magic."; + mes "That's a good question. It's related to Magic Binding."; next; mes "[Master Velofos]"; - mes "It's like water that needs a bowl to stay in place."; + mes "You already learned Release, which allows you to hold the energy of the four different elements before the actual casting. Magic Binding is similar to Release."; next; mes "[Master Velofos]"; - mes "The problem is when you try to forcefully cast a spell that you haven't learned. It'll definately backfire on you."; + mes "Since you've learned Release, you're capable of using Magic Binding as well. Well, let's talk about that later."; next; mes "[Master Velofos]"; - mes "Of course, the damage won't be severe: you'll fall asleep or be thrown into confusion. This is all because there's a conflict between your Magic Book and the force of Magic Binding when you're trying to summon and hold a unlearned spell."; + mes "You know how to hold an existing spell, and then cast it at a desired timing via Release."; next; mes "[Master Velofos]"; - mes "Don't try it out just to see what happens for yourself! Falling asleep while casting a spell? There's nothing more humiliating than that to magic practitioners like us."; - close; - case 6: - if ((BaseLevel > 139) && (getskilllv(2217) > 0) || (getskilllv(2213) > 0)) { - if (mac_book < 1) { - mes "[Master Velofos]"; - mes "I'm sorry, but could you ask someone else? I'm kind of busy right now."; - close; - } - if (mac_book == 1) { - mes "[Master Velofos]"; - mes "Huh, are you looking for the Ultimate Magic Book? Who sent you?"; - next; - select("Ms. Lea."); - mes "[Master Velofos]"; - mes "I'm sorry, but there's not much information left about the Ultimate Magic Book."; - next; - mes "[Master Velofos]"; - mes "A few scholars in the Midgard Continent once tried to collect ancient Magic Books and reproduce that book, but..."; - next; - select("But what?"); - mes "[Master Velofos]"; - mes "Oh yes, perhaps he might know something."; - next; - select("Yes, I knew this was coming!"); - mes "[Master Velofos]"; - mes "My brother is just like you. He's very interested in recreating the Ultimate Magic Book."; - next; - mes "[Master Velofos]"; - mes "His name is Galfos."; - mes "He's been taking a great interest in the ancient Magic Books."; - next; - mes "[Master Velofos]"; - mes "I didn't support him or give him any advice for his research since I thought he'd give on it pretty quickly, but..."; - next; - mes "[Master Velofos]"; - mes "If he's discovered anything useful, maybe it can helpful to you."; - next; - select("Where's Galfos now?"); - mes "[Master Velofos]"; - mes "I've heard that he's near the Expedition Camp beyond the Dimensional Rift to seek information about the ancient Magic Books."; - next; - mes "[Master Velofos]"; - mes "If you want to see him, you should prepare for a long journey."; - set mac_book,2; - close; - } - if (mac_book > 1) { - mes "[Master Velofos]"; - mes "Galfos is near the Expedition Camp beyond the Dimensional Rift."; - next; - mes "[Master Velofos]"; - mes "If you want to see him, you should prepare for a long journey."; - close; - } - } + mes "Carrying the globes of the four elements is also related to Magic Binding."; + next; mes "[Master Velofos]"; - mes "Ha ha, I'm sorry, but you should focus on strengthening your body rather than creating Magic Books."; + mes "As you know, the four elements are Fire, Water, Wind, and Earth. Being able to employ them freely is the essential principle of magic."; + next; + mes "[Master Velofos]"; + mes "We Humans use torches to keep fire, fans to blow wind, and bowls to hold water. We also use clay to make earthenware."; + next; + mes "[Master Velofos]"; + mes "Those activities may differ from magic, but both are the same in the sense of employing the four elements."; + next; + mes "[Master Velofos]"; + mes "When you use complex magic spells to summon a storm, drop lightning, or burn an area, that consumes a lot of your energy, both physically and mentally."; + next; + mes "[Master Velofos]"; + mes "When you fail to bind such powerful magic spells or fail to control them, you can receive irreparable damage to your mind and body."; + next; + mes "[Master Velofos]"; + mes "That's why we use Magic Books to reduce that burden. It helps summon pre-cast spells while you're focusing on binding their magic power."; + next; + mes "[Master Velofos]"; + mes "There's one downside though: Magic Books cannot be used for spells that you haven't learned."; + next; + mes "[Master Velofos]"; + mes "As I said earlier, spells in Magic Books tend to go back to what they are."; + next; + mes "[Master Velofos]"; + mes "That said, as a Circler, you cannot change or create spells in Magic Books."; + next; + mes "[Master Velofos]"; + mes "Even if you create one, its power will be beyond your capacity."; + next; + mes "[Master Velofos]"; + mes "In order to use the Reading Spell Book, you must learn the Freezing Spell to bind magic."; close; } + case 3: + mes "[Master Velofos]"; + mes "The Freezing Spell is used for Magic Binding. It helps you to insert a magic spell to a circle."; + next; + mes "[Master Velofos]"; + mes "Circles of magic work organically with each other. When you use the Freezing Spell to bind a spell, the spell won't activate until you cast the release spell."; + next; + mes "[Master Velofos]"; + mes "Of course, binding a spell continuously consumes your mana, but it consumes less mana than conventional magic spells."; + next; + mes "[Master Velofos]"; + mes "Magic Binding becomes more difficult when you use more powerful magic spells."; + next; + mes "[Master Velofos]"; + mes "For weak spells, you can bind two to three of them with your circle. For more powerful spells, maybe one or two is possible."; + next; + mes "[Master Velofos]"; + mes "That all depends on your ability to control your spells. You'll have to try and experience Magic Binding after you first learn it to really understand."; + close; + case 4: + mes "[Master Velofos]"; + mes "I'm sorry, but I only have Magic Books for beginners, but they're obviously not suitable for you. Do you still want one?"; + next; + switch (select("Sure thing.:Where can I find advanced books?")) { + case 1: + mes "[Master Velofos]"; + mes "Please go talk to [Lea] in the Archive. Tell her that you need one of the Magic Books that I've stored in there."; + next; + mes "[Master Velofos]"; + mes "For your information, she won't give it to you without anything in return. Expect her to ask you for something!"; + if (wm_book < 1) set wm_book, 1; + close; + case 2: + mes "[Master Velofos]"; + mes "I'm sorry, but our management has recently decided to limit the availability of Magic Books for Multi Circlers. It's because their numbers are increasing more quickly than we expected."; + next; + mes "[Master Velofos]"; + mes "You could find one if you try hard, but I don't have any with me."; + next; + mes "[Master Velofos]"; + mes "If our management releases the restriction, you'll be the first one to know. Don't worry."; + close; + } + case 5: + mes "[Master Velofos]"; + mes "Nothing will happen when you try to bind magic without using Magic Binding because you have nothing to hold magic."; + next; + mes "[Master Velofos]"; + mes "It's like water that needs a bowl to stay in place."; + next; + mes "[Master Velofos]"; + mes "The problem is when you try to forcefully cast a spell that you haven't learned. It'll definately backfire on you."; + next; + mes "[Master Velofos]"; + mes "Of course, the damage won't be severe: you'll fall asleep or be thrown into confusion. This is all because there's a conflict between your Magic Book and the force of Magic Binding when you're trying to summon and hold a unlearned spell."; + next; + mes "[Master Velofos]"; + mes "Don't try it out just to see what happens for yourself! Falling asleep while casting a spell? There's nothing more humiliating than that to magic practitioners like us."; + close; + case 6: + if ((BaseLevel > 139) && (getskilllv(2217) > 0 || getskilllv(2213) > 0)) { + if (mac_book < 1) { + mes "[Master Velofos]"; + mes "I'm sorry, but could you ask someone else? I'm kind of busy right now."; + close; + } + if (mac_book == 1) { + mes "[Master Velofos]"; + mes "Huh, are you looking for the Ultimate Magic Book? Who sent you?"; + next; + select("Ms. Lea."); + mes "[Master Velofos]"; + mes "I'm sorry, but there's not much information left about the Ultimate Magic Book."; + next; + mes "[Master Velofos]"; + mes "A few scholars in the Midgard Continent once tried to collect ancient Magic Books and reproduce that book, but..."; + next; + select("But what?"); + mes "[Master Velofos]"; + mes "Oh yes, perhaps he might know something."; + next; + select("Yes, I knew this was coming!"); + mes "[Master Velofos]"; + mes "My brother is just like you. He's very interested in recreating the Ultimate Magic Book."; + next; + mes "[Master Velofos]"; + mes "His name is Galfos."; + mes "He's been taking a great interest in the ancient Magic Books."; + next; + mes "[Master Velofos]"; + mes "I didn't support him or give him any advice for his research since I thought he'd give on it pretty quickly, but..."; + next; + mes "[Master Velofos]"; + mes "If he's discovered anything useful, maybe it can helpful to you."; + next; + select("Where's Galfos now?"); + mes "[Master Velofos]"; + mes "I've heard that he's near the Expedition Camp beyond the Dimensional Rift to seek information about the ancient Magic Books."; + next; + mes "[Master Velofos]"; + mes "If you want to see him, you should prepare for a long journey."; + set mac_book,2; + close; + } + if (mac_book > 1) { + mes "[Master Velofos]"; + mes "Galfos is near the Expedition Camp beyond the Dimensional Rift."; + next; + mes "[Master Velofos]"; + mes "If you want to see him, you should prepare for a long journey."; + close; + } + } + mes "[Master Velofos]"; + mes "Ha ha, I'm sorry, but you should focus on strengthening your body rather than creating Magic Books."; + close; } - mes "[Master Velofos]"; - mes "Ha ha, are you also seeking new knowledge?"; - next; - mes "[Master Velofos]"; - mes "I'm sorry, but my knowledge doesn't concern you."; - close; } -geffen_in,175,112,4 script Lea 123,{ +geffen_in,175,112,4 script Lea 2_F_MAGICMASTER,{ if (checkweight(1201,1) == 0) { mes "You're carrying too many items. Please make some room in your bag first."; close; @@ -507,7 +501,7 @@ geffen_in,175,112,4 script Lea 123,{ close; } -mid_camp,255,244,4 script Galfos 735,{ +mid_camp,255,244,4 script Galfos 4_M_JOB_WIZARD,{ if (checkweight(1201,1) == 0) { mes "You're carrying too many items. Please make some room in your bag first."; close; @@ -670,7 +664,7 @@ mid_camp,255,244,4 script Galfos 735,{ close; } -dic_in01,25,190,0 script Mysterious Documents 844,{ +dic_in01,25,190,0 script Mysterious Documents CLEAR_NPC,{ if (isequipped(2782) < 1) { mes "I better not forget to equip my ring."; close; @@ -704,7 +698,8 @@ dic_in01,25,190,0 script Mysterious Documents 844,{ close; } if (mac_book == 4) { - if (rand(1,10) == 1) { + set .@r, rand(1,10); + if (.@r == 1) { if (getskilllv(2213) > 0) { if (checkquest(12218) == 1) { mes "You already own this document."; @@ -722,7 +717,7 @@ dic_in01,25,190,0 script Mysterious Documents 844,{ mes "Nothing in this document looks useful."; close; } - if (rand(1,10) == 2) { + if (.@r == 2) { if (getskilllv(2217) > 0) { if (checkquest(12219) == 1) { mes "You already own this document."; @@ -740,7 +735,7 @@ dic_in01,25,190,0 script Mysterious Documents 844,{ mes "Nothing in this document looks useful."; close; } - if (rand(1,10) == 3) { + if (.@r == 3) { if (getskilllv(2217) > 0) { if (checkquest(12220) == 1) { mes "You already own this document."; @@ -757,7 +752,7 @@ dic_in01,25,190,0 script Mysterious Documents 844,{ mes "Nothing in this document looks useful."; close; } - if (rand(1,10) == 4) { + if (.@r == 4) { if (getskilllv(2217) > 0) { if (checkquest(12221) == 1) { mes "You already own this document."; @@ -775,7 +770,7 @@ dic_in01,25,190,0 script Mysterious Documents 844,{ mes "Nothing in this document looks useful."; close; } - if (rand(1,10) == 5) { + if (.@r == 5) { if (getskilllv(2217) > 0) { if (checkquest(12222) == 1) { mes "You already own this document."; @@ -793,7 +788,7 @@ dic_in01,25,190,0 script Mysterious Documents 844,{ mes "Nothing in this document looks useful."; close; } - if (rand(1,10) == 10) { + if (.@r == 10) { mes "You suddenly feel sick, and this nausea won't go away easily. You should try finding the documents you need later."; setquest 12165; close; @@ -833,8 +828,8 @@ function script Magic_Book_Essence { mes "Someone already used this area."; close; } -thor_v02,163,104,0 script Powerful Lava Energy#33 844,{ callfunc "Magic_Book_Essence",12218,7097,40,"Lava"; end; } -thor_v01,185,91,0 script Powerful Flame Energy#33 844,{ callfunc "Magic_Book_Essence",12219,7098,10,"Flame"; end; } -ice_dun03,137,148,0 script Powerful Glacier Energy 844,{ callfunc "Magic_Book_Essence",12220,7561,10,"Glacier"; end; } -ein_dun02,181,124,0 script Powerful Fossil Energy 844,{ callfunc "Magic_Book_Essence",12221,7312,10,"Fossil"; end; } -gon_dun02,252,198,0 script Powerful Storm Energy#33 844,{ callfunc "Magic_Book_Essence",12222,7266,10,"Storm"; end; } +thor_v02,163,104,0 script Powerful Lava Energy#33 CLEAR_NPC,{ callfunc "Magic_Book_Essence",12218,7097,40,"Lava"; end; } +thor_v01,185,91,0 script Powerful Flame Energy#33 CLEAR_NPC,{ callfunc "Magic_Book_Essence",12219,7098,10,"Flame"; end; } +ice_dun03,137,148,0 script Powerful Glacier Energy CLEAR_NPC,{ callfunc "Magic_Book_Essence",12220,7561,10,"Glacier"; end; } +ein_dun02,181,124,0 script Powerful Fossil Energy CLEAR_NPC,{ callfunc "Magic_Book_Essence",12221,7312,10,"Fossil"; end; } +gon_dun02,252,198,0 script Powerful Storm Energy#33 CLEAR_NPC,{ callfunc "Magic_Book_Essence",12222,7266,10,"Storm"; end; } diff --git a/npc/re/quests/ninja_quests.txt b/npc/re/quests/ninja_quests.txt index eccd8b09ac..efa335658e 100644 --- a/npc/re/quests/ninja_quests.txt +++ b/npc/re/quests/ninja_quests.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= Euphy //===== Current Version: ===================================== -//= 1.0 +//= 1.1 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= @@ -11,11 +11,12 @@ //= Quests for Kagerou/Oboro weapons and armor. //===== Additional Comments: ================================= //= 1.0 First version. [Euphy] +//= 1.1 Little clean-up. [Capuche] //============================================================ // Armor and Weapon NPCs :: kaboro_gearmix //============================================================ -que_ng,21,72,6 script Master Armor Craftsman 934,{ +que_ng,21,72,6 script Master Armor Craftsman 4_M_RASWORD,{ mes "[Gyo]"; mes "How would you define victory?"; mes "To fell the enemy..."; @@ -102,56 +103,27 @@ que_ng,21,72,6 script Master Armor Craftsman 934,{ close; L_Select: - switch(select("Check Ingredients.:Check Stats.:Combine.:Quit.")) { - case 1: - callsub L_Ingredients, getarg(0); - switch(select("Check Stats.:Combine.:Quit.")) { - case 1: - callsub L_Stats, getarg(0); - switch(select("Combine.:Quit.")) { - case 1: - callsub L_Combine; - return; - case 2: - break; - } - break; - case 2: - callsub L_Combine; - return; - case 3: - break; - } - break; - case 2: - callsub L_Stats, getarg(0); - switch(select("Check Ingredients.:Combine.:Quit.")) { + .@string1$ = "Check Ingredients."; + .@string2$ = "Check Stats."; + while(1) { + switch(select(.@string1$,.@string2$,"Combine.","Quit.")) { case 1: + .@string1$ = ""; callsub L_Ingredients, getarg(0); - switch(select("Combine.:Quit.")) { - case 1: - callsub L_Combine; - return; - case 2: - break; - } break; case 2: + .@string2$ = ""; + callsub L_Stats, getarg(0); + break; + case 3: callsub L_Combine; return; - case 3: - break; + case 4: + mes "[Gyo]"; + mes "Looks like you need more time to decide."; + close; } - break; - case 3: - callsub L_Combine; - return; - case 4: - break; } - mes "[Gyo]"; - mes "Looks like you need more time to decide."; - close; L_Ingredients: mes "[Gyo]"; @@ -227,7 +199,7 @@ L_Combine: end; } -que_ng,23,70,3 script Master Weapon Craftsman 939,{ +que_ng,23,70,3 script Master Weapon Craftsman 4_DST_SOLDIER,{ mes "[Ki]"; mes "To attack is the best means of defense."; mes "A powerful weapon ill make you truly complete."; @@ -300,56 +272,27 @@ que_ng,23,70,3 script Master Weapon Craftsman 939,{ close; L_Select: - switch(select("Check Ingredients.:Check Stats.:Combine.:Quit.")) { - case 1: - callsub L_Ingredients, getarg(0); - switch(select("Check Stats.:Combine.:Quit.")) { - case 1: - callsub L_Stats, getarg(0); - switch(select("Combine.:Quit.")) { - case 1: - callsub L_Combine; - return; - case 2: - break; - } - break; - case 2: - callsub L_Combine; - return; - case 3: - break; - } - break; - case 2: - callsub L_Stats, getarg(0); - switch(select("Check Ingredients.:Combine.:Quit.")) { + .@string1$ = "Check Ingredients."; + .@string2$ = "Check Stats."; + while(1) { + switch(select(.@string1$,.@string2$,"Combine.","Quit.")) { case 1: + .@string1$ = ""; callsub L_Ingredients, getarg(0); - switch(select("Combine.:Quit.")) { - case 1: - callsub L_Combine; - return; - case 2: - break; - } break; case 2: + .@string2$ = ""; + callsub L_Stats, getarg(0); + break; + case 3: callsub L_Combine; return; - case 3: - break; + case 4: + mes "[Ki]"; + mes "Think carefully~~"; + close; } - break; - case 3: - callsub L_Combine; - return; - case 4: - break; } - mes "[Ki]"; - mes "Think carefully~~"; - close; L_Ingredients: mes "[Ki]";