Browse Source

* Updated Magic Gear rental script and added many new locations.
* Split Geneticist Manuals shop (Renewal only) from main Alchemist shop script, and updated dialogue.
* Moved Izlude Bulletin Board and Signs to Pre-Renewal path.
* Updated Warlock book quest NPC name, and fixed a bug for Baby classes.
* Fixed unittalk displaying messages twice for players. (bugreport:7903)

Signed-off-by: Euphy <euphy@rathena.org>

Euphy 11 years ago
parent
commit
0fba5cb4a1

+ 4 - 4
doc/script_commands.txt

@@ -7214,7 +7214,7 @@ The command returns 0 upon success, and these values upon failure:
 
 
 ---------------------------------------
 ---------------------------------------
 
 
-*instance_npcname("<npc name>"{,<instance id>});
+*instance_npcname("<npc name>"{,<instance id>})
 
 
 Returns the unique name of the instanced script. If no ID is specified,
 Returns the unique name of the instanced script. If no ID is specified,
 the instance the script is attached to is used. If the script is not attached to
 the instance the script is attached to is used. If the script is not attached to
@@ -7223,7 +7223,7 @@ that fails, the script will come to a halt.
 
 
 ---------------------------------------
 ---------------------------------------
 
 
-*instance_mapname("<map name>"{,<instance id>});
+*instance_mapname("<map name>"{,<instance id>})
 
 
 Returns the unique name of the instanced map. If no instance ID is specified,
 Returns the unique name of the instanced map. If no instance ID is specified,
 the instance the script is attached to is used. If the script is not attached to
 the instance the script is attached to is used. If the script is not attached to
@@ -7232,7 +7232,7 @@ that fails, the command returns an empty string instead.
 
 
 ---------------------------------------
 ---------------------------------------
 
 
-*instance_id();
+*instance_id()
 
 
 Returns the unique instance id of the attached script. If the script is not
 Returns the unique instance id of the attached script. If the script is not
 attached to an instance, the instance of the currently attached player's party is
 attached to an instance, the instance of the currently attached player's party is
@@ -7250,7 +7250,7 @@ come to a halt.
 
 
 ---------------------------------------
 ---------------------------------------
 
 
-*instance_check_party(<party id>{,<amount>{,<min>{,<max>}}});
+*instance_check_party(<party id>{,<amount>{,<min>{,<max>}}})
 
 
 This function checks if a party meets certain requirements, returning 1 if all
 This function checks if a party meets certain requirements, returning 1 if all
 conditions are met and 0 otherwise. It will only check online characters.
 conditions are met and 0 otherwise. It will only check online characters.

+ 5 - 114
npc/merchants/alchemist.txt

@@ -1,134 +1,25 @@
 //===== rAthena Script ======================================= 
 //===== rAthena Script ======================================= 
 //= Alchemist Shop
 //= Alchemist Shop
 //===== By: ================================================== 
 //===== By: ================================================== 
-//= rAthena Team
+//= rAthena Dev Team
 //===== Current Version: ===================================== 
 //===== Current Version: ===================================== 
-//= 1.7
+//= 1.8
 //===== Compatible With: ===================================== 
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //= rAthena SVN
 //===== Description: ========================================= 
 //===== Description: ========================================= 
-//= Selling Alchemist Materials and Manuals
+//= Merchants for Alchemist Materials and Manuals.
 //===== Additional Comments: ================================= 
 //===== Additional Comments: ================================= 
 //= 1.1 fixed Medicine Bowl issue, thanx 2 MasterOfMuppets
 //= 1.1 fixed Medicine Bowl issue, thanx 2 MasterOfMuppets
 //= 1.2 Reddozen's fixes of typos. added optional Elemental
 //= 1.2 Reddozen's fixes of typos. added optional Elemental
-//= Potion Guide. [Lupus]
+//=     Potion Guide. [Lupus]
 //= 1.3 Deleted Elemental Potions Guide due to original quest [Lupus]
 //= 1.3 Deleted Elemental Potions Guide due to original quest [Lupus]
 //= 1.4 Alchemists can now purchase 2000 Medicine Bowls at once. [SinSloth]
 //= 1.4 Alchemists can now purchase 2000 Medicine Bowls at once. [SinSloth]
 //= 1.5 Updated to Aegis 10.3 Standards. [L0ne_W0lf]
 //= 1.5 Updated to Aegis 10.3 Standards. [L0ne_W0lf]
 //= 1.6 Corrected canceling purchase. [L0ne_W0lf]
 //= 1.6 Corrected canceling purchase. [L0ne_W0lf]
 //= 1.7 Updated to match AEGIS script. [Masao]
 //= 1.7 Updated to match AEGIS script. [Masao]
+//= 1.8 Moved Craft Book Merchant to Renewal path. [Euphy]
 //============================================================ 
 //============================================================ 
 
 
-alde_alche,31,186,3	script	Craft Book Salesman#alde	883,{
-
-	mes "[Craft Book Salesman]";
-	mes "Welcome.";
-	mes "I'm here to sell";
-	mes "^0000FFspecial craft books^000000 for Geneticists.";
-	next;
-	mes "[Craft Book Salesman]";
-	mes "Geneticists have some skills";
-	mes "that require craft books to activate.";
-	next;
-	mes "[Craft Book Salesman]";
-	mes "The more craft books you have,";
-	mes "the more skills you can use.";
-	next;
-	mes "[Craft Book Salesman]";
-	mes "Please understand that";
-	mes "I specialize in the sale of these special books and";
-	mes "I ^FF0000don't sell other items^000000.";
-	next;
-	mes "[Craft Book Salesman]";
-	mes "Okay then, here's the list of available craft books.";
-	next;
-	switch(select("[Apple Bomb Craft Book] 100,000 zeny:[Pineapple Bomb Craft Book] 100,000 zeny:[Coconut Bomb Craft Book] 100,000 zeny:[Melon Bomb Craft Book] 100,000 zeny:[Banana Bomb Craft Book] 100,000 zeny:[Plant Gene Cultivation Method] 100,000 zeny:[Superior Potion Craft Manual] 100,000 zeny:[Mix Cooking Book] 100,000 zeny:[Health Improvement Research Book] 100,000 zeny:[Vigor Drink Recipe] 100,000 zeny:Close")){
-	case 1:
-		callsub S_SellManual,6279,100000;
-		break;
-	case 2:
-		callsub S_SellManual,6280,100000;
-		break;
-	case 3:
-		callsub S_SellManual,6281,100000;
-		break;
-	case 4:
-		callsub S_SellManual,6282,100000;
-		break;
-	case 5:
-		callsub S_SellManual,6283,100000;
-		break;
-	case 6:
-		callsub S_SellManual,6284,100000;
-		break;
-	case 7:
-		callsub S_SellManual,6285,100000;
-		break;
-	case 8:
-		callsub S_SellManual,11022,100000;
-		break;
-	case 9:
-		callsub S_SellManual,11023,100000;
-		break;
-	case 10:
-		callsub S_SellManual,11024,100000;
-		break;
-	case 11:
-		mes "[Craft Book Salesman]";
-		mes "Thank you for your patronage.";
-		mes "Please come again.";
-		close;
-	}
-
-S_SellManual:
-	mes "[Craft Book Salesman]";
-	mes ""+getitemname(getarg(0))+"?";
-	mes "That'll be "+getarg(1)+" zeny ea.";
-	mes "How many of these books would you like to purchase?";
-	next;
-	input .@amount;
-	if (.@amount == 0) {
-		mes "[Craft Book Salesman]";
-		mes "Would you like to see some different books?";
-		close;
-	}
-	if (.@amount < 1 || .@amount > 99 ){
-		mes "[Craft Book Salesman]";
-		mes "You cannot purchase more than 100 at a time.";
-		close;
-	}
-	mes "[Craft Book Salesman]";
-	mes "You've entered "+.@amount+"x "+getitemname(getarg(0))+".";
-	mes "That'll be "+getarg(1) * .@amount+" Zeny.";
-	mes "Would you like to continue?";
-	next;
-	if (select("Yes:No") == 1) {
-		if (Zeny < getarg(1) * .@amount) {
-			mes "[Craft Book Salesman]";
-			mes "You don't";
-			mes "have enough zeny.";
-			mes "Check how much zeny";
-			mes "you have first.";
-			close;
-		}
-		if (checkweight(getarg(0),.@amount) == 0){
-			mes "[Craft Book Salesman]";
-			mes "It doesn't seem like you can carry everything.";
-			mes "Please check the space in your inventory.";
-			close;
-		}
-		mes "[Craft Book Salesman]";
-		mes "Thank you for your patronage.";
-		set Zeny,Zeny - getarg(1) * .@amount;
-		getitem getarg(0),.@amount;
-		close;
-	}
-	mes "[Craft Book Salesman]";
-	mes "Please take your time";
-	mes "before you make your decision.";
-	close;
-}
-
 alde_alche,24,188,3	script	Guild Dealer	740,{
 alde_alche,24,188,3	script	Guild Dealer	740,{
 	if (checkweight(1201,1) == 0) {
 	if (checkweight(1201,1) == 0) {
 		mes "- Wait a minute! -";
 		mes "- Wait a minute! -";

+ 7 - 22
npc/other/bulletin_boards.txt

@@ -3,12 +3,12 @@
 //===== By: ==================================================
 //===== By: ==================================================
 //= MasterOfMuppets
 //= MasterOfMuppets
 //===== Current Version: =====================================
 //===== Current Version: =====================================
-//= 1.8
+//= 1.9
 //===== Compatible With: =====================================
 //===== Compatible With: =====================================
 //= Any Athena Version
 //= Any Athena Version
 //===== Additional Comments: =================================
 //===== Additional Comments: =================================
 //= 1.0 Added Alberta, Prontera, Izlude, Payon, Byalan Island,
 //= 1.0 Added Alberta, Prontera, Izlude, Payon, Byalan Island,
-//= 	Archer Village, Payon Cave and Coal Mine
+//=     Archer Village, Payon Cave and Coal Mine
 //= 1.1 Geffen, Orc Dungeon
 //= 1.1 Geffen, Orc Dungeon
 //= 1.2 Added 5 more Boards [MasterOfMuppets]
 //= 1.2 Added 5 more Boards [MasterOfMuppets]
 //= 1.3 Fixed spelling mistakes. [Nexon]
 //= 1.3 Fixed spelling mistakes. [Nexon]
@@ -18,8 +18,9 @@
 //= 1.5a Fixed a small screw up with the color codes in the Glastheim BB [MasterOfMuppets]
 //= 1.5a Fixed a small screw up with the color codes in the Glastheim BB [MasterOfMuppets]
 //= 1.5b Fixed another small screw up with the color codes in the Glastheim BB [Kayla]
 //= 1.5b Fixed another small screw up with the color codes in the Glastheim BB [Kayla]
 //= 1.6 Removed Duplicates [Silent]
 //= 1.6 Removed Duplicates [Silent]
-//= 1.7 Updated MOrroc NPCs to reflect episode 12.1 changes. [L0ne_W0lf]
+//= 1.7 Updated Morroc NPCs to reflect episode 12.1 changes. [L0ne_W0lf]
 //= 1.8 Updated Payon Cave Bulletion Board Locations. [Masao]
 //= 1.8 Updated Payon Cave Bulletion Board Locations. [Masao]
+//= 1.9 Moved Izlude NPC to Pre-RE path. [Euphy]
 //============================================================
 //============================================================
 
 
 alberta,111,59,5	script	Bulletin Board#1	837,{
 alberta,111,59,5	script	Bulletin Board#1	837,{
@@ -93,23 +94,7 @@ izlu2dun,104,92,5	script	Bulletin Board#4	837,{
 	mes "With a few exceptions, most of the monsters in this dungeon are of the Water attribute. Therefore, a Wind attribute weapon will help you greatly";
 	mes "With a few exceptions, most of the monsters in this dungeon are of the Water attribute. Therefore, a Wind attribute weapon will help you greatly";
 	close;
 	close;
 }
 }
-	
-izlude,131,116,4	script	Bulletin Board#5	837,{
-	mes "[Izlude: The Satellite City]";
-	mes "Welcome to Izlude, the satellite of Prontera. Izlude was built to support Prontera's defense and to accommodate its burgeoning population";
-	next;
-	mes "[Izlude: The Satellite City]";
-	mes "Points of interest include the Swordsman Association building which allows adventurers to change their job to Swordsman, and the Battle Area that is North of Izlude.";
-	next;
-	mes "[Izlude: The Satellite City]";
-	mes "At the docks, you may take a ship and travel to ^123972Alberta^000000 or ^2F0400Byalan Island^000000.";
-	next;
-	mes "[Izlude: The Satellite City]";
-	mes "From Izlude, ^6D6FE0Prontera^000000 is located to the Northwest, and ^1F3A11Payon^000000 is located to the South.";
-	mes "Enjoy your travels in the Rune-Midgarts Kingdom.";
-	close;
-}
-	
+
 payon,178,108,5	script	Bulletin Board#06	837,{
 payon,178,108,5	script	Bulletin Board#06	837,{
 	mes "[Payon: The Mountain City]";
 	mes "[Payon: The Mountain City]";
 	mes "Welcome to Payon, the mountain city. Payon has recently been renovated, so we hope you enjoy the clean, nice streets and buildings.";
 	mes "Welcome to Payon, the mountain city. Payon has recently been renovated, so we hope you enjoy the clean, nice streets and buildings.";
@@ -131,7 +116,7 @@ payon,178,108,5	script	Bulletin Board#06	837,{
 	mes "Enjoy your travels."; 
 	mes "Enjoy your travels."; 
 	close;
 	close;
 }
 }
-	
+
 pay_arche,79,31,5	script	Bulletin Board#07	837,{
 pay_arche,79,31,5	script	Bulletin Board#07	837,{
 	mes "[Archer Village]"; 
 	mes "[Archer Village]"; 
 	mes "Welcome to the Payon Archer Village where Novices can change their jobs to Archer.";
 	mes "Welcome to the Payon Archer Village where Novices can change their jobs to Archer.";
@@ -153,7 +138,7 @@ pay_arche,39,134,5	script	Bulletin Board#08	837,{
 	mes "In the fifth level, there is a pretty, yet dreadful boss monster known as ^6B1312Moonlight^000000 that spawns at certain times. Approach with extreme caution.";
 	mes "In the fifth level, there is a pretty, yet dreadful boss monster known as ^6B1312Moonlight^000000 that spawns at certain times. Approach with extreme caution.";
 	close;
 	close;
 }
 }
-	
+
 prontera,148,49,5	script	Bulletin Board#09	837,{
 prontera,148,49,5	script	Bulletin Board#09	837,{
 	mes "[Prontera: Capital of the]";
 	mes "[Prontera: Capital of the]";
 	mes "[Rune-Midgards Kingdom]";
 	mes "[Rune-Midgards Kingdom]";

+ 2 - 15
npc/other/msg_boards.txt

@@ -4,7 +4,7 @@
 //= kobra_k88
 //= kobra_k88
 //= L0ne_W0lf
 //= L0ne_W0lf
 //===== Current Version: ===================================== 
 //===== Current Version: ===================================== 
-//= 1.6
+//= 1.7
 //===== Compatible With: ===================================== 
 //===== Compatible With: ===================================== 
 //= [Official Conversion]
 //= [Official Conversion]
 //= rAthena 7.15 +
 //= rAthena 7.15 +
@@ -24,6 +24,7 @@
 //= 1.5 Removed a duplicate related to the Sign Quest. [SinSloth]
 //= 1.5 Removed a duplicate related to the Sign Quest. [SinSloth]
 //= 1.5 Corrected NPC names to fall within proper restrictions. [L0ne_W0lf]
 //= 1.5 Corrected NPC names to fall within proper restrictions. [L0ne_W0lf]
 //= 1.6 Commented out conflicting npcs. (bugreport:4093) [L0ne_W0lf]
 //= 1.6 Commented out conflicting npcs. (bugreport:4093) [L0ne_W0lf]
+//= 1.7 Moved Izlude NPCs to Pre-RE path. [Euphy]
 //============================================================
 //============================================================
 
 
 // Prontera
 // Prontera
@@ -237,20 +238,6 @@ aldebaran,217,222,1	script	Sign#Alde5	111,{
 	close;
 	close;
 }
 }
 
 
-// Izlude
-//============================================================
-izlude,54,139,1	script	Sign#Iz1	111,{
-	mes "^993300- The Sign Reads -^000000";
-	mes "Welcome to the Swordsman Academy.";
-	close;
-}
-
-izlude,144,148,1	script	Sign#Iz2	111,{
-	mes "^993300- The Sign Reads -^000000";
-	mes "Welcome.";
-	close;
-}
-
 // Alberta
 // Alberta
 //============================================================
 //============================================================
 alberta,35,241,1	script	Billboard#Alb1	111,{
 alberta,35,241,1	script	Billboard#Alb1	111,{

+ 27 - 0
npc/pre-re/other/bulletin_boards.txt

@@ -0,0 +1,27 @@
+//===== rAthena Script =======================================
+//= Official scripts for beginners from iRO
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= Any Athena Version
+//===== Additional Comments: =================================
+//= 1.0 Moved Izlude NPCs to Pre-RE path.
+//============================================================
+
+izlude,131,116,4	script	Bulletin Board#5	837,{
+	mes "[Izlude: The Satellite City]";
+	mes "Welcome to Izlude, the satellite of Prontera. Izlude was built to support Prontera's defense and to accommodate its burgeoning population";
+	next;
+	mes "[Izlude: The Satellite City]";
+	mes "Points of interest include the Swordsman Association building which allows adventurers to change their job to Swordsman, and the Battle Area that is North of Izlude.";
+	next;
+	mes "[Izlude: The Satellite City]";
+	mes "At the docks, you may take a ship and travel to ^123972Alberta^000000 or ^2F0400Byalan Island^000000.";
+	next;
+	mes "[Izlude: The Satellite City]";
+	mes "From Izlude, ^6D6FE0Prontera^000000 is located to the Northwest, and ^1F3A11Payon^000000 is located to the South.";
+	mes "Enjoy your travels in the Rune-Midgarts Kingdom.";
+	close;
+}

+ 29 - 0
npc/pre-re/other/msg_boards.txt

@@ -0,0 +1,29 @@
+//===== rAthena Script ======================================= 
+//= Misc. Message Boards
+//===== By: ================================================== 
+//= Euphy
+//===== Current Version: ===================================== 
+//= 1.0
+//===== Compatible With: ===================================== 
+//= [Official Conversion]
+//= rAthena 7.15 +
+//===== Description: ========================================= 
+//= Misc. Message Boards for:
+//=  - Izlude
+//===== Additional Comments: ================================= 
+//= 1.0 Moved Izlude NPCs to Pre-RE path.
+//============================================================
+
+// Izlude
+//============================================================
+izlude,54,139,1	script	Sign#Iz1	111,{
+	mes "^993300- The Sign Reads -^000000";
+	mes "Welcome to the Swordsman Academy.";
+	close;
+}
+
+izlude,144,148,1	script	Sign#Iz2	111,{
+	mes "^993300- The Sign Reads -^000000";
+	mes "Welcome.";
+	close;
+}

+ 2 - 0
npc/pre-re/scripts_athena.conf

@@ -52,7 +52,9 @@ npc: npc/pre-re/other/arena/arena_party.txt
 npc: npc/pre-re/other/arena/arena_point.txt
 npc: npc/pre-re/other/arena/arena_point.txt
 npc: npc/pre-re/other/arena/arena_room.txt
 npc: npc/pre-re/other/arena/arena_room.txt
 // --------------------------------------------------------------
 // --------------------------------------------------------------
+npc: npc/pre-re/other/bulletin_boards.txt
 npc: npc/pre-re/other/mercenary_rent.txt
 npc: npc/pre-re/other/mercenary_rent.txt
+npc: npc/pre-re/other/msg_boards.txt
 npc: npc/pre-re/other/resetskill.txt
 npc: npc/pre-re/other/resetskill.txt
 
 
 // --------------------------- Quests ---------------------------
 // --------------------------- Quests ---------------------------

+ 1 - 1
npc/re/instances/OldGlastHeim.txt

@@ -233,7 +233,7 @@ OnEnable:
 		select("The Ymir's Heart. Himmelmez...");
 		select("The Ymir's Heart. Himmelmez...");
 		mes "["+strcharinfo(0)+"]";
 		mes "["+strcharinfo(0)+"]";
 		mes "Himmelmez, the Valkyrie of the dead is looking to get a piece of the Ymir's heart hidden in the castle!";
 		mes "Himmelmez, the Valkyrie of the dead is looking to get a piece of the Ymir's heart hidden in the castle!";
-		unittalk getcharid(3),"Himmelmez, the Valkyrie of the dead is looking to get a piece of the Ymir's heart hidden in the castle";
+		unittalk getcharid(3),"Himmelmez, the Valkyrie of the dead is looking to get a piece of the Ymir's heart hidden in the castle!";
 		next;
 		next;
 		mes "[Heinrich]";
 		mes "[Heinrich]";
 		mes "Haha. That's a nice joke. Now tell me what brings you here.";
 		mes "Haha. That's a nice joke. Now tell me what brings you here.";

+ 3 - 3
npc/re/merchants/3rd_trader.txt

@@ -21,7 +21,7 @@
 // Poison Herb Merchants (Guillotine Cross)
 // Poison Herb Merchants (Guillotine Cross)
 //============================================================
 //============================================================
 -	script	::phs	-1,{
 -	script	::phs	-1,{
-	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
+	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
 		mes "- Wait a minute !! -";
 		mes "- Wait a minute !! -";
 		mes "- Currently you're carrying -";
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- too many items with you. -";
@@ -87,7 +87,7 @@ lhz_in02,16,205,4	duplicate(phs)	Poison Herb Merchant#lhz	877
 // Rune Stone Merchants (Rune Knight)
 // Rune Stone Merchants (Rune Knight)
 //============================================================
 //============================================================
 -	script	::runesale	-1,{
 -	script	::runesale	-1,{
-	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
+	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
 		mes "- Wait a minute !! -";
 		mes "- Wait a minute !! -";
 		mes "- Currently you're carrying -";
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- too many items with you. -";
@@ -218,7 +218,7 @@ job3_guil01,91,93,3	script	Rare Herb Collector	49,{
 // Point Merchants (Sorcerer)
 // Point Merchants (Sorcerer)
 //============================================================
 //============================================================
 -	script	::pss	-1,{
 -	script	::pss	-1,{
-	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
+	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
 		mes "- Wait a minute !! -";
 		mes "- Wait a minute !! -";
 		mes "- Currently you're carrying -";
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- too many items with you. -";

+ 118 - 0
npc/re/merchants/alchemist.txt

@@ -0,0 +1,118 @@
+//===== rAthena Script ======================================= 
+//= Alchemist Shop
+//===== By: ================================================== 
+//= rAthena Dev Team
+//===== Current Version: ===================================== 
+//= 1.0
+//===== Compatible With: ===================================== 
+//= rAthena SVN
+//===== Description: ========================================= 
+//= Merchants for Alchemist Materials and Manuals.
+//===== Additional Comments: ================================= 
+//= 1.0 Split Geneticist shop from main file. [Euphy]
+//=     Updated dialogue to match the official script.
+//============================================================ 
+
+alde_alche,31,186,3	script	Craft Book Merchant#alde	883,{
+	mes "[Craft Book Merchant]";
+	mes "Welcome.";
+	mes "I'm here to sell";
+	mes "^0000FFspecial craft books^000000 for Geneticists.";
+	next;
+	mes "[Craft Book Merchant]";
+	mes "Geneticists have some skills";
+	mes "that require craft books to activate.";
+	next;
+	mes "[Craft Book Merchant]";
+	mes "The more craft books you have,";
+	mes "the more skills you can use.";
+	next;
+	mes "[Craft Book Merchant]";
+	mes "Please understand that";
+	mes "I specialize in the sale of these special books and";
+	mes "I ^FF0000don't sell other items^000000.";
+	next;
+	mes "[Craft Book Merchant]";
+	mes "Would you like to take a look at my craft books?";
+	next;
+	if(select("Sure.:No.") == 2) {
+		mes "[Craft Book Merchant]";
+		mes "Thank you for visiting my shop.";
+		mes "Please be safe on your travels.";
+		close;
+	}
+	if (checkweight(1201,1) == 0) {
+		mes "[Craft Book Merchant]";
+		mes "I'm sorry, but your inventory is almost full.";
+		mes "Please empty your inventory first.";
+		close;
+	}
+	if (MaxWeight - Weight < 2500) {
+		mes "[Craft Book Merchant]";
+		mes "Please empty your inventory first.";
+		close;
+	}
+	mes "[Craft Book Merchant]";
+	mes "Okay then, here's the list of available craft books.";
+	next;
+	switch(select("[Apple Bomb Craft Book] 100,000 zeny:[Pineapple Bomb Craft Book] 100,000 zeny:[Coconut Bomb Craft Book] 100,000 zeny:[Melon Bomb Craft Book] 100,000 zeny:[Banana Bomb Craft Book] 100,000 zeny:[Plant Gene Cultivation Method] 100,000 zeny:[Superior Potion Craft Manual] 100,000 zeny:[Mix Cooking Book] 100,000 zeny:[Health Improvement Research Book] 100,000 zeny:[Vigor Drink Recipe] 100,000 zeny:Close")){
+	case 1: set .@item,6279; break;
+	case 2: set .@item,6280; break;
+	case 3: set .@item,6281; break;
+	case 4: set .@item,6282; break;
+	case 5: set .@item,6283; break;
+	case 6: set .@item,6284; break;
+	case 7: set .@item,6285; break;
+	case 8: set .@item,11022; break;
+	case 9: set .@item,11023; break;
+	case 10: set .@item,11024; break;
+	case 11:
+		mes "[Craft Book Merchant]";
+		mes "Thank you for your patronage.";
+		mes "Please come again.";
+		close;
+	}
+	mes "[Craft Book Merchant]";
+	mes "^0000FF["+getitemname(.@item)+"] costs";
+	mes "100,000 zeny.";
+	mes "How many would you like to purchase?";
+	next;
+	input .@amount;
+	if (.@amount == 0) {
+		mes "[Craft Book Merchant]";
+		mes "Would you like to see some different books?";
+		close;
+	}
+	if (.@amount < 1 || .@amount > 99 ){
+		mes "[Craft Book Merchant]";
+		mes "You cannot purchase more than 100 at a time.";
+		close;
+	}
+	mes "[Craft Book Merchant]";
+	mes "You've entered "+.@amount+"x ^0000FF["+getitemname(.@item)+"]^000000 to be purchased.";
+	mes "Would you like to continue?";
+	next;
+	if (select("Yes:No") == 1) {
+		set .@total, .@amount * 100000;
+		if (Zeny < .@total) {
+			mes "[Craft Book Merchant]";
+			mes "I'm sorry, but you don't have enough money.";
+			close;
+		}
+		if (checkweight(.@item,.@amount) == 0){
+			mes "[Craft Book Merchant]";
+			mes "It doesn't seem like you can carry everything.";
+			mes "Please check the space in your inventory.";
+			close;
+		}
+		mes "[Craft Book Merchant]";
+		mes "Thank you for your patronage.";
+		set Zeny,Zeny - .@total;
+		getitem .@item,.@amount;
+		close;
+	}
+	mes "[Craft Book Merchant]";
+	mes "Please take your time";
+	mes "before you make your decision.";
+	close;
+}

+ 37 - 12
npc/re/merchants/renters.txt

@@ -10,9 +10,10 @@
 //= Renewal-specific breeder NPCs.
 //= Renewal-specific breeder NPCs.
 //===== Additional Comments: ================================= 
 //===== Additional Comments: ================================= 
 //= 2.1 Moved some renters to a separate renewal file. [Daegaladh]
 //= 2.1 Moved some renters to a separate renewal file. [Daegaladh]
+//= 2.2 Updated to match the official scripts. [Euphy]
 //============================================================ 
 //============================================================ 
 
 
-// Dragon Breeder on the Rune Knight job change map, couldn't find NPC on iRO.
+// Dragon Breeder
 //============================================================
 //============================================================
 job3_rune01,88,62,5	script	Dragon Breeder	105,{
 job3_rune01,88,62,5	script	Dragon Breeder	105,{
 	mes "[Dragon Breeder]";
 	mes "[Dragon Breeder]";
@@ -148,21 +149,35 @@ prontera,125,208,5	script	Peco Peco Remover	105,{
 
 
 // Magic Gear Renter
 // Magic Gear Renter
 //============================================================
 //============================================================
-prontera,163,178,3	script	Magic Gear Master	105,{
+-	script	::mgm	-1,{
 	mes "[Magic Gear Master]";
 	mes "[Magic Gear Master]";
 	if (Class == Job_Mechanic || Class == Job_Mechanic_T || Class == Job_Baby_Mechanic) {
 	if (Class == Job_Mechanic || Class == Job_Mechanic_T || Class == Job_Baby_Mechanic) {
-		mes "Welcome. Would you like to rent a Magic Gear?";
+		mes "Welcome, Mechanic.";
+		mes "Would you like to rent a Pushcart or";
+		mes "ride a Magic Gear?";
 		next;
 		next;
-		switch(select("Yes:No")) {
+		switch(select("Rent a Pushcart:Ride a Magic Gear:Cancel")) {
 		case 1:
 		case 1:
-			if (!getskilllv("NC_MADOLICENCE")) {
+			if (checkcart()) {
+				mes "[Magic Gear Master]";
+				mes "I'm sorry, but you already";
+				mes "have a Pushcart.";
+				close;
+			}
+			setcart;
+			mes "[Magic Gear Master]";
+			mes "There you go!";
+			close;
+		case 2:
+			if (checkmadogear()) {
 				mes "[Magic Gear Master]";
 				mes "[Magic Gear Master]";
-				mes "Please learn how to use a Magic Gear first.";
+				mes "I'm sorry, but you're already";
+				mes "riding a Magic Gear.";
 				close;
 				close;
 			}
 			}
-			else if (checkmadogear()) {
+			else if (!getskilllv("NC_MADOLICENCE")) {
 				mes "[Magic Gear Master]";
 				mes "[Magic Gear Master]";
-				mes "You already have a Magic Gear.";
+				mes "Please learn the skill to get the Magic Gear License first.";
 				close;
 				close;
 			}
 			}
 			else if(ismounting()) {
 			else if(ismounting()) {
@@ -171,14 +186,24 @@ prontera,163,178,3	script	Magic Gear Master	105,{
 				close;
 				close;
 			}
 			}
 			setmadogear;
 			setmadogear;
-			close;
-		case 2:
 			mes "[Magic Gear Master]";
 			mes "[Magic Gear Master]";
-			mes "I see. Then have a great day.";
+			mes "Have fun, and please come again!";
+			close;
+		case 3:
 			close;
 			close;
 		}
 		}
 	}
 	}
 	mes "How may I help you?";
 	mes "How may I help you?";
 	mes "Magic Gears are only available for Mechanics.";
 	mes "Magic Gears are only available for Mechanics.";
 	close;
 	close;
-}
+}
+prontera,163,178,3	duplicate(mgm)	Magic Gear Master#prt	105
+geffen,103,55,5	duplicate(mgm)	Magic Gear Master#gef	105
+payon,166,106,5	duplicate(mgm)	Magic Gear Master#pay	105
+aldebaran,133,112,5	duplicate(mgm)	Magic Gear Master#alde	105
+yuno,167,187,3	duplicate(mgm)	Magic Gear Master#yuno	105
+rachel,106,134,5	duplicate(mgm)	Magic Gear Master#ra	105
+dicastes01,187,207,3	duplicate(mgm)	Magic Gear Master#dic	105
+manuk,273,212,5	duplicate(mgm)	Magic Gear Master#man	105
+splendide,180,174,5	duplicate(mgm)	Magic Gear Master#spl	105
+mid_camp,242,243,3	duplicate(mgm)	Magic Gear Master#mid	105

+ 79 - 81
npc/re/quests/magic_books.txt

@@ -4,7 +4,7 @@
 //= Masao
 //= Masao
 //= Credits to Muad_Dib for the translation.
 //= Credits to Muad_Dib for the translation.
 //===== Current Version: ===================================== 
 //===== Current Version: ===================================== 
-//= 1.1
+//= 1.1a
 //===== Compatible With: ===================================== 
 //===== Compatible With: ===================================== 
 //= rAthena
 //= rAthena
 //===== Description: ========================================= 
 //===== Description: ========================================= 
@@ -13,9 +13,10 @@
 //===== Additional Comments: ================================= 
 //===== Additional Comments: ================================= 
 //= 1.0 First Version. [Masao]
 //= 1.0 First Version. [Masao]
 //= 1.1 Optimized. [Euphy]
 //= 1.1 Optimized. [Euphy]
+//= 1.1a Updated NPC name to "Master Velofos". [Euphy]
 //============================================================ 
 //============================================================ 
 
 
-geffen_in,176,105,4	script	Magic Book Master Velof	64,{
+geffen_in,176,105,4	script	Master Velofos	64,{
 	if (checkweight(1201,1) == 0) {
 	if (checkweight(1201,1) == 0) {
 		mes "You're carrying too many items. Please make some room in your bag first.";
 		mes "You're carrying too many items. Please make some room in your bag first.";
 		close;
 		close;
@@ -25,249 +26,246 @@ geffen_in,176,105,4	script	Magic Book Master Velof	64,{
 		close;
 		close;
 	}
 	}
 	if ((Upper == 2) && (Class != Job_Baby_Warlock)) {
 	if ((Upper == 2) && (Class != Job_Baby_Warlock)) {
-		mes "[Magic Book Master Velof]";
+		mes "[Master Velofos]";
 		mes "What are you, a baby?";
 		mes "What are you, a baby?";
 		mes "I'm not here to babysit. Get lost!";
 		mes "I'm not here to babysit. Get lost!";
 		close;
 		close;
 	}
 	}
 	if ((Class != Job_Warlock) && (Class != Job_Warlock_T) && (Class != Job_Baby_Warlock)) {
 	if ((Class != Job_Warlock) && (Class != Job_Warlock_T) && (Class != Job_Baby_Warlock)) {
-		mes "[Magic Book Master Velof]";
+		mes "[Master Velofos]";
 		mes "Ha ha, are you also seeking new knowledge?";
 		mes "Ha ha, are you also seeking new knowledge?";
 		next;
 		next;
-		mes "[Magic Book Master Velof]";
+		mes "[Master Velofos]";
 		mes "I'm sorry, but my knowledge doesn't concern you.";
 		mes "I'm sorry, but my knowledge doesn't concern you.";
 		close;
 		close;
 	}
 	}
 	if (getskilllv(2230) < 1) {
 	if (getskilllv(2230) < 1) {
-		mes "[Magic Book Master Velof]";
-		mes "Well you've met all the qualifications except one: you need the Release spell.";
+		mes "[Master Velofos]";
+		mes "Well, you've met all the qualifications except one: you need the Release spell.";
 		next;
 		next;
-		mes "[Magic Book Master Velof]";
+		mes "[Master Velofos]";
 		mes "Learn the spell first. I've got so many things to tell you.";
 		mes "Learn the spell first. I've got so many things to tell you.";
 		close;
 		close;
 	}
 	}
 	if ((getskilllv(2230) > 0) && (Class == Job_Warlock) || (Class == Job_Warlock_T) || (Class == Job_Baby_Warlock)) {
 	if ((getskilllv(2230) > 0) && (Class == Job_Warlock) || (Class == Job_Warlock_T) || (Class == Job_Baby_Warlock)) {
-		mes "[Magic Book Master Velof]";
+		mes "[Master Velofos]";
 		mes "Welcome, my friend.";
 		mes "Welcome, my friend.";
 		mes "Congratulations on entering a brand new world of magic.";
 		mes "Congratulations on entering a brand new world of magic.";
 		next;
 		next;
-		mes "[Magic Book Master Velof]";
+		mes "[Master Velofos]";
 		mes "We magic practitioners are always thirsty for new knowledge and power.";
 		mes "We magic practitioners are always thirsty for new knowledge and power.";
 		next;
 		next;
-		mes "[Magic Book Master Velof]";
+		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 "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;
 		next;
-		mes "[Magic Book Master Velof]";
+		mes "[Master Velofos]";
 		mes "By the way, what brings you to me today?";
 		mes "By the way, what brings you to me today?";
 		next;
 		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("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:
 		case 1:
-			mes "[Magic Book Master Velof]";
+			mes "[Master Velofos]";
 			mes "Hah! You're silly.";
 			mes "Hah! You're silly.";
 			close;
 			close;
 		case 2:
 		case 2:
-			mes "[Magic Book Master Velof]";
+			mes "[Master Velofos]";
 			mes "Reading Spell Book literally means 'read a spell book.' Do you know how to use Magic Books?";
 			mes "Reading Spell Book literally means 'read a spell book.' Do you know how to use Magic Books?";
 			next;
 			next;
 			switch (select("Yes, I do.:No, I don't.")) {
 			switch (select("Yes, I do.:No, I don't.")) {
 			case 1:
 			case 1:
-				mes "[Magic Book Master Velof]";
+				mes "[Master Velofos]";
 				mes "Well then, you don't need an additional lecture.";
 				mes "Well then, you don't need an additional lecture.";
 				close;
 				close;
 			case 2:
 			case 2:
-				mes "[Magic Book Master Velof]";
+				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.";
 				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;
 				next;
-				mes "[Magic Book Master Velof]";
+				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.";
 				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;
 				next;
-				mes "[Magic Book Master Velof]";
+				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.";
 				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;
 				next;
-				mes "[Magic Book Master Velof]";
+				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.";
 				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;
 				next;
-				mes "[Magic Book Master Velof]";
+				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.";
 				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;
 				next;
 				select("What's the difference?");
 				select("What's the difference?");
-				mes "[Magic Book Master Velof]";
+				mes "[Master Velofos]";
 				mes "Why do you have to write your existing spells in Magic Books, you asked?";
 				mes "Why do you have to write your existing spells in Magic Books, you asked?";
 				next;
 				next;
-				mes "[Magic Book Master Velof]";
+				mes "[Master Velofos]";
 				mes "That's a good question. It's related to Magic Binding.";
 				mes "That's a good question. It's related to Magic Binding.";
 				next;
 				next;
-				mes "[Magic Book Master Velof]";
+				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.";
 				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;
 				next;
-				mes "[Magic Book Master Velof]";
+				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.";
 				mes "Since you've learned Release, you're capable of using Magic Binding as well. Well, let's talk about that later.";
 				next;
 				next;
-				mes "[Magic Book Master Velof]";
+				mes "[Master Velofos]";
 				mes "You know how to hold an existing spell, and then cast it at a desired timing via Release.";
 				mes "You know how to hold an existing spell, and then cast it at a desired timing via Release.";
 				next;
 				next;
-				mes "[Magic Book Master Velof]";
+				mes "[Master Velofos]";
 				mes "Carrying the globes of the four elements is also related to Magic Binding.";
 				mes "Carrying the globes of the four elements is also related to Magic Binding.";
 				next;
 				next;
-				mes "[Magic Book Master Velof]";
+				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.";
 				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;
 				next;
-				mes "[Magic Book Master Velof]";
+				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 "We Humans use torches to keep fire, fans to blow wind, and bowls to hold water. We also use clay to make earthenware.";
 				next;
 				next;
-				mes "[Magic Book Master Velof]";
+				mes "[Master Velofos]";
 				mes "Those activities may differ from magic, but both are the same in the sense of employing the four elements.";
 				mes "Those activities may differ from magic, but both are the same in the sense of employing the four elements.";
 				next;
 				next;
-				mes "[Magic Book Master Velof]";
+				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 "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;
 				next;
-				mes "[Magic Book Master Velof]";
-				mes "When you fail to bind such powerful magic spells or fail to control them,";
+				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;
 				next;
-				mes "[Magic Book Master Velof]";
-				mes "you can receive irreparable damage to your mind and body.";
-				next;
-				mes "[Magic Book Master Velof]";
+				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 "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;
 				next;
-				mes "[Magic Book Master Velof]";
+				mes "[Master Velofos]";
 				mes "There's one downside though: Magic Books cannot be used for spells that you haven't learned.";
 				mes "There's one downside though: Magic Books cannot be used for spells that you haven't learned.";
 				next;
 				next;
-				mes "[Magic Book Master Velof]";
+				mes "[Master Velofos]";
 				mes "As I said earlier, spells in Magic Books tend to go back to what they are.";
 				mes "As I said earlier, spells in Magic Books tend to go back to what they are.";
 				next;
 				next;
-				mes "[Magic Book Master Velof]";
+				mes "[Master Velofos]";
 				mes "That said, as a Circler, you cannot change or create spells in Magic Books.";
 				mes "That said, as a Circler, you cannot change or create spells in Magic Books.";
 				next;
 				next;
-				mes "[Magic Book Master Velof]";
+				mes "[Master Velofos]";
 				mes "Even if you create one, its power will be beyond your capacity.";
 				mes "Even if you create one, its power will be beyond your capacity.";
 				next;
 				next;
-				mes "[Magic Book Master Velof]";
+				mes "[Master Velofos]";
 				mes "In order to use the Reading Spell Book, you must learn the Freezing Spell to bind magic.";
 				mes "In order to use the Reading Spell Book, you must learn the Freezing Spell to bind magic.";
 				close;
 				close;
 			}
 			}
 		case 3:
 		case 3:
-			mes "[Magic Book Master Velof]";
+			mes "[Master Velofos]";
 			mes "The Freezing Spell is used for Magic Binding. It helps you to insert a magic spell to a circle.";
 			mes "The Freezing Spell is used for Magic Binding. It helps you to insert a magic spell to a circle.";
 			next;
 			next;
-			mes "[Magic Book Master Velof]";
+			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 "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;
 			next;
-			mes "[Magic Book Master Velof]";
+			mes "[Master Velofos]";
 			mes "Of course, binding a spell continuously consumes your mana, but it consumes less mana than conventional magic spells.";
 			mes "Of course, binding a spell continuously consumes your mana, but it consumes less mana than conventional magic spells.";
 			next;
 			next;
-			mes "[Magic Book Master Velof]";
+			mes "[Master Velofos]";
 			mes "Magic Binding becomes more difficult when you use more powerful magic spells.";
 			mes "Magic Binding becomes more difficult when you use more powerful magic spells.";
 			next;
 			next;
-			mes "[Magic Book Master Velof]";
+			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 "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;
 			next;
-			mes "[Magic Book Master Velof]";
+			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.";
 			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;
 			close;
 		case 4:
 		case 4:
-			mes "[Magic Book Master Velof]";
+			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?";
 			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;
 			next;
 			switch (select("Sure thing.:Where can I find advanced books?")) {
 			switch (select("Sure thing.:Where can I find advanced books?")) {
 			case 1:
 			case 1:
-				mes "[Magic Book Master Velof]";
+				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 "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;
 				next;
-				mes "[Magic Book Master Velof]";
+				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!";
 				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;
 				if (wm_book < 1) set wm_book, 1;
 				close;
 				close;
 			case 2:
 			case 2:
-				mes "[Magic Book Master Velof]";
+				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.";
 				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;
 				next;
-				mes "[Magic Book Master Velof]";
+				mes "[Master Velofos]";
 				mes "You could find one if you try hard, but I don't have any with me.";
 				mes "You could find one if you try hard, but I don't have any with me.";
 				next;
 				next;
-				mes "[Magic Book Master Velof]";
+				mes "[Master Velofos]";
 				mes "If our management releases the restriction, you'll be the first one to know. Don't worry.";
 				mes "If our management releases the restriction, you'll be the first one to know. Don't worry.";
 				close;
 				close;
 			}
 			}
 		case 5:
 		case 5:
-			mes "[Magic Book Master Velof]";
+			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 "Nothing will happen when you try to bind magic without using Magic Binding because you have nothing to hold magic.";
 			next;
 			next;
-			mes "[Magic Book Master Velof]";
+			mes "[Master Velofos]";
 			mes "It's like water that needs a bowl to stay in place.";
 			mes "It's like water that needs a bowl to stay in place.";
 			next;
 			next;
-			mes "[Magic Book Master Velof]";
+			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 "The problem is when you try to forcefully cast a spell that you haven't learned. It'll definately backfire on you.";
 			next;
 			next;
-			mes "[Magic Book Master Velof]";
+			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 "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;
 			next;
-			mes "[Magic Book Master Velof]";
+			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.";
 			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;
 			close;
 		case 6:
 		case 6:
 			if ((BaseLevel > 139) && (getskilllv(2217) > 0) || (getskilllv(2213) > 0)) {
 			if ((BaseLevel > 139) && (getskilllv(2217) > 0) || (getskilllv(2213) > 0)) {
 				if(mac_book < 1){
 				if(mac_book < 1){
-					mes "[Magic Book Master Velof]";
+					mes "[Master Velofos]";
 					mes "I'm sorry, but could you ask someone else? I'm kind of busy right now.";
 					mes "I'm sorry, but could you ask someone else? I'm kind of busy right now.";
 					close;
 					close;
 				}
 				}
 				if (mac_book == 1) {
 				if (mac_book == 1) {
-					mes "[Magic Book Master Velof]";
+					mes "[Master Velofos]";
 					mes "Huh, are you looking for the Ultimate Magic Book? Who sent you?";
 					mes "Huh, are you looking for the Ultimate Magic Book? Who sent you?";
 					next;
 					next;
 					select("Ms. Lea.");
 					select("Ms. Lea.");
-					mes "[Magic Book Master Velof]";
+					mes "[Master Velofos]";
 					mes "I'm sorry, but there's not much information left about the Ultimate Magic Book.";
 					mes "I'm sorry, but there's not much information left about the Ultimate Magic Book.";
 					next;
 					next;
-					mes "[Magic Book Master Velof]";
+					mes "[Master Velofos]";
 					mes "A few scholars in the Midgard Continent once tried to collect ancient Magic Books and reproduce that book, but...";
 					mes "A few scholars in the Midgard Continent once tried to collect ancient Magic Books and reproduce that book, but...";
 					next;
 					next;
 					select("But what?");
 					select("But what?");
-					mes "[Magic Book Master Velof]";
+					mes "[Master Velofos]";
 					mes "Oh yes, perhaps he might know something.";
 					mes "Oh yes, perhaps he might know something.";
 					next;
 					next;
 					select("Yes, I knew this was coming!");
 					select("Yes, I knew this was coming!");
-					mes "[Magic Book Master Velof]";
+					mes "[Master Velofos]";
 					mes "My brother is just like you. He's very interested in recreating the Ultimate Magic Book.";
 					mes "My brother is just like you. He's very interested in recreating the Ultimate Magic Book.";
 					next;
 					next;
-					mes "[Magic Book Master Velof]";
+					mes "[Master Velofos]";
 					mes "His name is Galfos.";
 					mes "His name is Galfos.";
 					mes "He's been taking a great interest in the ancient Magic Books.";
 					mes "He's been taking a great interest in the ancient Magic Books.";
 					next;
 					next;
-					mes "[Magic Book Master Velof]";
+					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...";
 					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;
 					next;
-					mes "[Magic Book Master Velof]";
+					mes "[Master Velofos]";
 					mes "If he's discovered anything useful, maybe it can helpful to you.";
 					mes "If he's discovered anything useful, maybe it can helpful to you.";
 					next;
 					next;
 					select("Where's Galfos now?");
 					select("Where's Galfos now?");
-					mes "[Magic Book Master Velof]";
+					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.";
 					mes "I've heard that he's near the Expedition Camp beyond the Dimensional Rift to seek information about the ancient Magic Books.";
 					next;
 					next;
-					mes "[Magic Book Master Velof]";
+					mes "[Master Velofos]";
 					mes "If you want to see him, you should prepare for a long journey.";
 					mes "If you want to see him, you should prepare for a long journey.";
 					set mac_book,2;
 					set mac_book,2;
 					close;
 					close;
 				}
 				}
 				if (mac_book > 1) {
 				if (mac_book > 1) {
-					mes "[Magic Book Master Velof]";
+					mes "[Master Velofos]";
 					mes "Galfos is near the Expedition Camp beyond the Dimensional Rift.";
 					mes "Galfos is near the Expedition Camp beyond the Dimensional Rift.";
 					next;
 					next;
-					mes "[Magic Book Master Velof]";
+					mes "[Master Velofos]";
 					mes "If you want to see him, you should prepare for a long journey.";
 					mes "If you want to see him, you should prepare for a long journey.";
 					close;
 					close;
 				}
 				}
 			}
 			}
-			mes "[Magic Book Master Velof]";
+			mes "[Master Velofos]";
 			mes "Ha ha, I'm sorry, but you should focus on strengthening your body rather than creating Magic Books.";
 			mes "Ha ha, I'm sorry, but you should focus on strengthening your body rather than creating Magic Books.";
 			close;
 			close;
 		}
 		}
 	}
 	}
-	mes "[Magic Book Master Velof]";
+	mes "[Master Velofos]";
 	mes "Ha ha, are you also seeking new knowledge?";
 	mes "Ha ha, are you also seeking new knowledge?";
 	next;
 	next;
-	mes "[Magic Book Master Velof]";
+	mes "[Master Velofos]";
 	mes "I'm sorry, but my knowledge doesn't concern you.";
 	mes "I'm sorry, but my knowledge doesn't concern you.";
 	close;
 	close;
 }
 }
@@ -281,14 +279,14 @@ geffen_in,175,112,4	script	Lea	123,{
 		mes "You're overweight with items. Please lose some item weight first.";
 		mes "You're overweight with items. Please lose some item weight first.";
 		close;
 		close;
 	}
 	}
-	if ((wm_book > 0) && (Class == Job_Warlock) || (Class == Job_Warlock_T) || (Class == Job_Baby_Warlock)) {
+	if (wm_book > 0 && (Class == Job_Warlock || Class == Job_Warlock_T || Class == Job_Baby_Warlock)) {
 		mes "[Lea]";
 		mes "[Lea]";
 		mes "You can only read books here. If you'd like to borrow any books, please receive an approval from 1 manager and 1 High Mage.";
 		mes "You can only read books here. If you'd like to borrow any books, please receive an approval from 1 manager and 1 High Mage.";
 		next;
 		next;
 		mes "[Lea]";
 		mes "[Lea]";
 		mes "How may I help you?";
 		mes "How may I help you?";
 		next;
 		next;
-		select("Master Velof asked me to bring his Magic Book.");
+		select("Master Velofos asked me to bring his Magic Book.");
 		mes "[Lea]";
 		mes "[Lea]";
 		mes "Are you borrowing a book?";
 		mes "Are you borrowing a book?";
 		next;
 		next;
@@ -480,7 +478,7 @@ geffen_in,175,112,4	script	Lea	123,{
 				mes "Frankly, I've never even seen the Ultimate Magic Book.";
 				mes "Frankly, I've never even seen the Ultimate Magic Book.";
 				next;
 				next;
 				mes "[Lea]";
 				mes "[Lea]";
-				mes "You should ask Master Velof if you want to know more about that book.";
+				mes "You should ask Master Velofos if you want to know more about that book.";
 				next;
 				next;
 				mes "[Lea]";
 				mes "[Lea]";
 				mes "I'm sorry that I can't help you more than that.";
 				mes "I'm sorry that I can't help you more than that.";
@@ -489,7 +487,7 @@ geffen_in,175,112,4	script	Lea	123,{
 			}
 			}
 			if ((BaseLevel > 139) && (mac_book > 0) && ((getskilllv(2217) > 0) || (getskilllv(2213) > 0))) {
 			if ((BaseLevel > 139) && (mac_book > 0) && ((getskilllv(2217) > 0) || (getskilllv(2213) > 0))) {
 				mes "[Lea]";
 				mes "[Lea]";
-				mes "You should ask Master Velof for some information about that book.";
+				mes "You should ask Master Velofos for some information about that book.";
 				close;
 				close;
 			}
 			}
 			mes "[Lea]";
 			mes "[Lea]";
@@ -517,7 +515,7 @@ mid_camp,255,244,4	script	Galfos	735,{
 		mes "You're overweight with items. Please lose some item weight first.";
 		mes "You're overweight with items. Please lose some item weight first.";
 		close;
 		close;
 	}
 	}
-	if (Upper == 2) {
+	if ((Upper == 2) && (Class != Job_Baby_Warlock)) {
 		mes "[Galfos]";
 		mes "[Galfos]";
 		mes "What are you, a baby?";
 		mes "What are you, a baby?";
 		mes "I'm not here to babysit. Get lost!";
 		mes "I'm not here to babysit. Get lost!";
@@ -533,7 +531,7 @@ mid_camp,255,244,4	script	Galfos	735,{
 		mes "Ah, I'll get myself in trouble if I stay here any longer. Maybe I'm already in...";
 		mes "Ah, I'll get myself in trouble if I stay here any longer. Maybe I'm already in...";
 		close;
 		close;
 	}
 	}
-	if ((BaseLevel < 140) || (getskilllv(2217) < 1) && (getskilllv(2213) < 1)) {
+	if (BaseLevel < 140 || (getskilllv(2217) < 1 && getskilllv(2213) < 1)) {
 		mes "[Galfos]";
 		mes "[Galfos]";
 		mes "I'm sorry, but I don't talk to people that aren't even ready for this.";
 		mes "I'm sorry, but I don't talk to people that aren't even ready for this.";
 		close;
 		close;
@@ -554,7 +552,7 @@ mid_camp,255,244,4	script	Galfos	735,{
 		next;
 		next;
 		select("You're Velof's brother, right?");
 		select("You're Velof's brother, right?");
 		mes "[Galfos]";
 		mes "[Galfos]";
-		mes "Yes, I'm Galfos, and Velof is my brother.";
+		mes "Yes, I'm Galfos, and Velofos is my brother.";
 		next;
 		next;
 		mes "[Galfos]";
 		mes "[Galfos]";
 		mes "Wait a minute,";
 		mes "Wait a minute,";

+ 1 - 1
npc/re/quests/quests_malaya.txt

@@ -17,7 +17,7 @@
 //=     quests [DeadlySilence]
 //=     quests [DeadlySilence]
 //============================================================
 //============================================================
 
 
-// Cautious Village and subsequent :: malaya_hi
+// Cautious Village and subsequent quests :: malaya_hi
 //============================================================
 //============================================================
 malaya,266,76,3	script	Rodel the Guard#malaya	570,4,4,{
 malaya,266,76,3	script	Rodel the Guard#malaya	570,4,4,{
 	if (MaxWeight - Weight < 1000 || checkweight(1201,1) == 0) {
 	if (MaxWeight - Weight < 1000 || checkweight(1201,1) == 0) {

+ 1 - 0
npc/re/scripts_athena.conf

@@ -62,6 +62,7 @@ npc: npc/re/kafras/kafras.txt
 // -------------------------- Merchant --------------------------
 // -------------------------- Merchant --------------------------
 npc: npc/re/merchants/3rd_trader.txt
 npc: npc/re/merchants/3rd_trader.txt
 npc: npc/re/merchants/advanced_refiner.txt
 npc: npc/re/merchants/advanced_refiner.txt
+npc: npc/re/merchants/alchemist.txt
 npc: npc/re/merchants/ammo_boxes.txt
 npc: npc/re/merchants/ammo_boxes.txt
 npc: npc/re/merchants/ammo_dealer.txt
 npc: npc/re/merchants/ammo_dealer.txt
 //npc: npc/re/merchants/blessed_refiner.txt
 //npc: npc/re/merchants/blessed_refiner.txt

+ 0 - 2
src/map/script.c

@@ -15596,8 +15596,6 @@ BUILDIN_FUNC(unittalk)
 		StringBuf_Init(&sbuf);
 		StringBuf_Init(&sbuf);
 		StringBuf_Printf(&sbuf, "%s : %s", status_get_name(bl), message);
 		StringBuf_Printf(&sbuf, "%s : %s", status_get_name(bl), message);
 		clif_disp_overhead(bl, StringBuf_Value(&sbuf));
 		clif_disp_overhead(bl, StringBuf_Value(&sbuf));
-		if( bl->type == BL_PC )
-			clif_displaymessage(((TBL_PC*)bl)->fd, StringBuf_Value(&sbuf));
 		StringBuf_Destroy(&sbuf);
 		StringBuf_Destroy(&sbuf);
 	}
 	}