Parcourir la source

- Added mercenary guild switch npc from aegis
- Fixed a bug to rent a mercenary in izlude duplicate (it gave a wrong mercenary)
- added a missing delitem in cupet.txt (forgot to delete the 2nd item)
- change the rand part in Mysterious Documents npc in magic_books.txt to match aegis
- little clean up in quests/ninja_quests.txt
- replace the npc id to the constant in theses files

Signed-off-by: Capuche <capucrath@gmail.com>

Capuche il y a 11 ans
Parent
commit
bdab851129

+ 50 - 12
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

+ 12 - 11
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

+ 36 - 35
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

+ 187 - 192
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 "Hah! You're silly.";
+		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.";
+		next;
 		mes "[Master Velofos]";
-		mes "Welcome, my friend.";
-		mes "Congratulations on entering a brand new world of magic.";
+		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 "We magic practitioners are always thirsty for new knowledge and power.";
+		mes "Of course, binding a spell continuously consumes your mana, but it consumes less mana than conventional magic spells.";
 		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.";
+		mes "Magic Binding becomes more difficult when you use more powerful magic spells.";
 		next;
 		mes "[Master Velofos]";
-		mes "By the way, what brings you to me today?";
+		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;
-		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")) {
+		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 "Hah! You're silly.";
+			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 "Reading Spell Book literally means 'read a spell book.' Do you know how to use Magic Books?";
+			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;
-			switch (select("Yes, I do.:No, I don't.")) {
-			case 1:
+			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 "Well then, you don't need an additional lecture.";
+				mes "I'm sorry, but could you ask someone else? I'm kind of busy right now.";
 				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;
+			}
+			if (mac_book == 1) {
 				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.";
+				mes "Huh, are you looking for the Ultimate Magic Book? Who sent you?";
 				next;
+				select("Ms. Lea.");
 				mes "[Master Velofos]";
-				mes "Those activities may differ from magic, but both are the same in the sense of employing the four elements.";
+				mes "I'm sorry, but there's not much information left about the Ultimate Magic Book.";
 				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.";
+				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 "When you fail to bind such powerful magic spells or fail to control them, you can receive irreparable damage to your mind and body.";
+				mes "Oh yes, perhaps he might know something.";
 				next;
+				select("Yes, I knew this was coming!");
 				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.";
+				mes "My brother is just like you. He's very interested in recreating the Ultimate Magic Book.";
 				next;
 				mes "[Master Velofos]";
-				mes "There's one downside though: Magic Books cannot be used for spells that you haven't learned.";
+				mes "His name is Galfos.";
+				mes "He's been taking a great interest in the ancient Magic Books.";
 				next;
 				mes "[Master Velofos]";
-				mes "As I said earlier, spells in Magic Books tend to go back to what they are.";
+				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 "That said, as a Circler, you cannot change or create spells in Magic Books.";
+				mes "If he's discovered anything useful, maybe it can helpful to you.";
 				next;
+				select("Where's Galfos now?");
 				mes "[Master Velofos]";
-				mes "Even if you create one, its power will be beyond your capacity.";
+				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 "In order to use the Reading Spell Book, you must learn the Freezing Spell to bind magic.";
+				mes "If you want to see him, you should prepare for a long journey.";
+				set mac_book,2;
 				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:
+			if (mac_book > 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.";
+				mes "Galfos is near the Expedition Camp beyond the Dimensional Rift.";
 				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.";
+				mes "If you want to see him, you should prepare for a long journey.";
 				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, 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; }

+ 30 - 87
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]";