소스 검색

* Renewal Izlude updates:
- Updated warp scripts and removed disabled warps.
- Implemented Renewal Hypnotist, which resets stats and skills; moved old file to Pre-Renewal path.
- Moved and added Bullet Dealer and Magazine Dealer duplicates. (bugreport:6410)
- Moved Dorian (quests_nameless) NPC to Pre-Renewal/Renewal paths and shifted Cuskoal (izlude) RE NPC.
- Corrected some coordinates and NPC facing directions.

* Updated all 3rd_trader scripts:
- Players can now purchase multiple items at once.
- Added many new Point Merchants.
- Moved Poison Herb Merchant in Morroc out of a wall (temp. fix).

* Other script updates:
- Added Eden Group Kafra (storage only).
- Added some missing announcements in Endless Tower.
- Added exit warp scripts to three 2nd job quests (Renewal only).
- Added official Morroc coordinates in Warlock job quest. (follow-up r17224)
- Minor updates to Comodo Gambling script.
- Fixed a Zeny bug in Payon town script, and changed some 'close' commands to 'end'. (bugreport:7893)
- Renamed npc/pre-re/kafras/kafras_izl.txt to .../kafras.txt.

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

Euphy 11 년 전
부모
커밋
d32e3c89ae

+ 1 - 3
doc/script_commands.txt

@@ -6117,15 +6117,13 @@ found there does stuff.
 
 Flag is a bit-mask (add up numbers to get effects you want)
  1 - warp all guild members to their save points.
- 2 - warp all non-guild members to their save points.
+ 2 - warp all non-guild members (including guildless players) to their save points.
  4 - remove all monsters which are not guardian or Emperium.
 
 Flag 7 will, therefore, mean 'wipe all mobs but guardians and the Emperium and 
 kick all characters out', which is what the official scripts do upon castle 
 surrender. Upon start of WoE, the scripts do 2 (warp all intruders out).
 
-Characters not belonging to any guild will warp out regardless of the flag setting.
-
 For examples, check the WoE scripts in the distribution.
 
 ---------------------------------------

+ 14 - 13
npc/cities/izlude.txt

@@ -4,7 +4,7 @@
 //= kobra_k88
 //= L0ne_W0lf
 //===== Current Version: ===================================== 
-//= 1.8a
+//= 1.9a
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -29,6 +29,7 @@
 //= 1.9 Fixed a small problem with Dega. (Ne default case) [L0ne_W0lf]
 //=	Re-added NPC dialog for Cebalis. The dialog differs
 //=	(even if slightly,) after the five or so lines.
+//= 1.9a A part of Kylick's dialogue is Pre-Renewal only. [Euphy]
 //============================================================
 
 // Izlude
@@ -222,9 +223,18 @@
 }
 
 -	script	::Kylick_izlude	-1,{
-	mes "[Kylick]";
-	switch(rand(2)) {
-	case 1:
+	if (!checkre(0) && rand(2)) {
+		mes "[Kylick]";
+		mes "I was thinking, even though the people of Izlude live so close to the ocean...";
+		next;
+		mes "[Kylick]";
+		mes "There are other cultures that have completely developed by living off of the sea. Of course, I'm talking about Amatsu.";
+		next;
+		mes "[Kylick]";
+		mes "I hear the cuisine there is really good! Although the idea of eating raw fish is new to me, I would love to go there, and try it just once!";
+		close;
+	} else {
+		mes "[Kylick]";
 		mes "Don't you think Binoculars";
 		mes "are really COOL?! You can";
 		mes "see all sorts of places...!";
@@ -241,15 +251,6 @@
 		mes "a pound of cure";
 		mes "after all, right?";
 		close;
-	Default:
-		mes "I was thinking, even though the people of Izlude live so close to the ocean...";
-		next;
-		mes "[Kylick]";
-		mes "There are other cultures that have completely developed by living off of the sea. Of course, I'm talking about Amatsu.";
-		next;
-		mes "[Kylick]";
-		mes "I hear the cuisine there is really good! Although the idea of eating raw fish is new to me, I would love to go there, and try it just once!";
-		close;
 	}
 }
 

+ 14 - 11
npc/cities/payon.txt

@@ -4,16 +4,16 @@
 //= Muad Dib (1.0) Darkchild (1.1) Muad Dib (1.2)
 //= Darkchild (1.3) DracoRPG (1.5) L0ne_W0lf (2.1)
 //===== Current Version: ===================================== 
-//= 2.1b
+//= 2.1c
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
 //= Payon City Npcs
 //===== Additional Comments: ================================= 
 //= Most Credits To Muad Dib, Some Stuff By Me
-//= 1.4 - Corrected a few typos
-//= 1.5 - Rescripted old NPCs + scripted new ones (from iRO Sak) [DracoRPG]
-//= 1.5b - Used Dino9021's script for the Gemstone exchanger [DracoRPG]
+//= 1.4 Corrected a few typos
+//= 1.5 Rescripted old NPCs + scripted new ones (from iRO Sak) [DracoRPG]
+//= 1.5b Used Dino9021's script for the Gemstone exchanger [DracoRPG]
 //= 1.5b1 fixed Gemstone Exchanger NPC [Lupus]
 //= 1.5b2 added adv.classes/baby classes support [Lupus]
 //= 1.6 Fixed typos [Nexon]
@@ -22,9 +22,10 @@
 //= 1.9 Fixed missing next;'s [Evera]
 //= 2.0 fixed some bugs, optimized script, added missing msg [Lupus]
 //= 2.1 Rescripted to Aegis 10.3 standards. [L0ne_W0lf]
-//=	Moved Gemstone Trader "Jade" to /merchants/gemstone.txt
-//=	Moved Fortune Teller to /other/fortune.txt
+//=     Moved Gemstone Trader "Jade" to /merchants/gemstone.txt
+//=     Moved Fortune Teller to /other/fortune.txt
 //= 2.1b Added a missing close in the Monster Scholar. [L0ne_W0lf]
+//= 2.1c Minor bug fixes. [Euphy]
 //============================================================ 
 
 // Payon
@@ -252,9 +253,9 @@ payon,210,110,1	script	Drunkard#payon	120,{
 		mes "Buy me a drink?!";
 	}
 	next;
-	switch(select("Alright, but only one drink. :No thanks, pal.:Oh my God! Hell no! ")) {
+	switch(select("Alright, but only one drink.:No thanks, pal.:Oh my God! Hell no!")) {
 	case 1:
-		set zeny,zeny-100;
+		set Zeny, (Zeny < 100)?0:(Zeny - 100);
 		mes "[Drunkard]";
 		mes "Thanks...!";
 		mes "..Brother!";
@@ -955,6 +956,7 @@ OnTouch:
 		mes "I'd better rest.";
 		mes "Please, take care";
 		mes "of yourself.";
+		close;
 
 		//This actually never happens on iRO
 		//if (.@oldman_random == 2) {
@@ -965,7 +967,7 @@ OnTouch:
 		//	mes "coming back later?";
 		//}
 	}
-	close;
+	end;
 }
 
 payon_in03,102,185,5	script	Guard#payon	708,{
@@ -975,6 +977,7 @@ payon_in03,102,185,5	script	Guard#payon	708,{
 		mes "You're not";
 		mes "allowed here!";
 		mes "Go back outside!";
+		close;
 	}
 	if (Baselevel > 30) {
 		mes "[Guard]";
@@ -982,8 +985,9 @@ payon_in03,102,185,5	script	Guard#payon	708,{
 		mes "but you're";
 		mes "not allowed here.";
 		mes "Please leave.";
+		close;
 	}
-	close;
+	end;
 }
 
 // Payon Archer Village
@@ -1072,4 +1076,3 @@ pay_arche,77,131,2	script	Archer Joe#payon	88,{
 	}
 	close;
 }
-

+ 2 - 2
npc/custom/healer.txt

@@ -48,7 +48,7 @@ einbroch,57,202,6	duplicate(Healer)	Healer#einbr	909
 geffen,115,72,6	duplicate(Healer)	Healer#gef	909
 gonryun,156,122,6	duplicate(Healer)	Healer#gon	909
 hugel,89,150,6	duplicate(Healer)	Healer#hug	909
-izlude,125,118,5	duplicate(Healer)	Healer#izl	909
+izlude,121,150,6	duplicate(Healer)	Healer#izl	909	//Pre-RE: (125,118)
 jawaii,250,139,4	duplicate(Healer)	Healer#jaw	909
 lighthalzen,152,100,6	duplicate(Healer)	Healer#lhz	909
 louyang,226,103,4	duplicate(Healer)	Healer#lou	909
@@ -75,5 +75,5 @@ dewata,195,187,4	duplicate(Healer)	Healer#dew	909
 dicastes01,201,194,4	duplicate(Healer)	Healer#dic	909
 ecl_in01,45,60,4	duplicate(Healer)	Healer#ecl	909
 malangdo,132,114,6	duplicate(Healer)	Healer#mal	909
-malaya,205,205,6	duplicate(Healer)	Healer#ma	909
+malaya,227,204,6	duplicate(Healer)	Healer#ma	909
 mora,55,152,4	duplicate(Healer)	Healer#mora	909

+ 5 - 5
npc/custom/warper.txt

@@ -140,7 +140,7 @@ T12: Restrict("RE");
 T13: Go("geffen",119,59);
 T14: Go("gonryun",160,120);
 T15: Go("hugel",96,145);
-T16: Go("izlude",128,114);
+T16: Go("izlude",128,(checkre(3)?146:114));
 T17: Go("jawaii",251,132);
 T18: Go("lighthalzen",158,92);
 T19: Go("louyang",217,100);
@@ -148,7 +148,7 @@ T20: Go("xmas",147,134);
 T21: Restrict("RE");
 	Go("malangdo",140,114);
 T22: Restrict("RE");
-	Go("malaya",212,206);
+	Go("malaya",231,200);
 T23: Go("manuk",282,138);
 T24: Go("mid_camp",210,288);
 T25: Restrict("RE");
@@ -415,7 +415,7 @@ G6: Go("schg_dun01",200,124);
 
 menu	"Bakonawa Lake",I1, "Bangungot Hospital 2F",I2, "Buwaya Cave",I3,
 	"Endless Tower",I4, "Hazy Forest",I5, "Malangdo Culvert",I6, "Nidhoggur's Nest",I7,
-	"Octopus Cave",I8, "Old Glast Heim",I9, "Orc's Memory",I10, "Sealed Shrine",I111;
+	"Octopus Cave",I8, "Old Glast Heim",I9, "Orc's Memory",I10, "Sealed Shrine",I11;
 
 I1: Restrict("RE");
 	Go("ma_scene01",172,175);
@@ -470,7 +470,7 @@ glast_01,372,308,4	duplicate(Warper)	Warper#glh	811
 gonryun,162,122,4	duplicate(Warper)	Warper#gon	811
 hugel,101,151,4	duplicate(Warper)	Warper#hug	811
 izlu2dun,110,92,4	duplicate(Warper)	Warper#izd	811
-izlude,132,120,4	duplicate(Warper)	Warper#izl	811
+izlude,134,150,4	duplicate(Warper)	Warper#izl	811	//Pre-RE: (132,120)
 jawaii,253,138,4	duplicate(Warper)	Warper#jaw	811
 lighthalzen,162,102,4	duplicate(Warper)	Warper#lhz	811
 louyang,208,103,6	duplicate(Warper)	Warper#lou	811
@@ -502,5 +502,5 @@ dewata,204,186,6	duplicate(Warper)	Warper#dew	811
 dicastes01,194,194,6	duplicate(Warper)	Warper#dic	811
 ecl_in01,51,60,4	duplicate(Warper)	Warper#ecl	811
 malangdo,134,117,6	duplicate(Warper)	Warper#mal	811
-malaya,210,205,4	duplicate(Warper)	Warper#ma	811
+malaya,231,204,4	duplicate(Warper)	Warper#ma	811
 mora,57,152,4	duplicate(Warper)	Warper#mora	811

+ 28 - 1
npc/instances/EndlessTower.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= L0ne_W0lf
 //===== Current Version: ===================================== 
-//= 2.2
+//= 2.3
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -34,6 +34,7 @@
 //= 2.0 Fixed broken else/if chaining. [Joseph]
 //= 2.1 Updated to match latest official script. [Euphy]
 //= 2.2 Instance system rewrite. [Euphy]
+//= 2.3 Added some missing announcements. [Euphy]
 //============================================================ 
 
 alberta,214,77,6	script	Captain Janssen	709,{
@@ -1201,6 +1202,15 @@ function	script	F_Tower_Warp	{
 	mapannounce instance_mapname("1@tower"), strcharinfo(0)+". You will be warped to the "+.@level$[.@i]+" Level.",bc_map,"0x00ff99";
 	warp instance_mapname(.@map$[.@i]),52,354;
 	close;
+
+OnInstanceInit:
+	initnpctimer;
+	end;
+
+OnTimer10000:
+	mapannounce instance_mapname("1@tower"), "Notice : Taming a monster does not count towards defeating them.",bc_map,"0xff0000";
+	stopnpctimer;
+	end;
 }
 
 1@tower,29,365,1	script	#1F Controller	844,{
@@ -1341,6 +1351,23 @@ OnTouch_:
 	end;
 }
 
+1@tower,71,4,0	script	#Broadcast Mode1	844,{
+	end;
+
+OnInstanceInit:
+	initnpctimer;
+	end;
+
+OnTimer15000:
+OnTimer60000:
+	mapannounce instance_mapname("1@tower"), "Notice : In any abnormal situation where you defeat a monster, you can't advance to the next level!",bc_map,"0xff0000";
+	end;
+OnTimer120000:
+	mapannounce instance_mapname("1@tower"), "Notice : In any abnormal situation where you defeat a monster, you can't advance to the next level!",bc_map,"0xff0000";
+	stopnpctimer;
+	end;
+}
+
 /*
 1@tower,71,1,0	script	#Manager Mode1	844,{
 	mes "Please enter the password.";

+ 15 - 16
npc/merchants/ammo_boxes.txt

@@ -1,7 +1,7 @@
 //===== rAthena Script =======================================
-//= Magazine Dealer Kenny
+//= Magazine Dealers
 //===== By: ==================================================
-//= rAthena dev team
+//= rAthena Dev Team
 //===== Current Version: =====================================
 //= 1.5
 //===== Compatible With: =====================================
@@ -18,10 +18,9 @@
 //= 1.5 Moved Izlude duplicate to pre-re/re paths. [Euphy]
 //============================================================
 
-alberta,118,157,3	script	Magazine Dealer Tonny::mdk	83,{
-	set .n$, compare(strnpcinfo(1),"Tonny")?"[Tonny]":"[Kenny]";
+alberta,118,157,3	script	Magazine Dealer Kenny::mdk	83,{
 	if(BaseJob == Job_Gunslinger) {
-		mes .n$;
+		mes "[Kenny]";
 		mes "Welcome to my Magazine Shop.";
 		mes "As you may know, large numbers";
 		mes "of bullets can be carried more";
@@ -38,7 +37,7 @@ alberta,118,157,3	script	Magazine Dealer Tonny::mdk	83,{
 		case 7: callfunc "Func_Casing",13202,12150; break;
 		case 8: callfunc "Func_Casing",13201,12151; break;
 		case 9:
-			mes .n$;
+			mes "[Kenny]";
 			mes "Well, if you ever find";
 			mes "that you have too many";
 			mes "bullets, come and see me.";
@@ -47,7 +46,7 @@ alberta,118,157,3	script	Magazine Dealer Tonny::mdk	83,{
 			close;
 		}
 	}
-	mes .n$;
+	mes "[Kenny]";
 	mes "Welcome to my shop.";
 	mes "Here, I provide Magazines";
 	mes "and Cartridges for Gunslingers.";
@@ -55,7 +54,7 @@ alberta,118,157,3	script	Magazine Dealer Tonny::mdk	83,{
 	mes "my services would be of any";
 	mes "use to you, adventurer.";
 	next;
-	mes .n$;
+	mes "[Kenny]";
 	mes "Eh, but if you happen to";
 	mes "know any Gunslingers, send";
 	mes "them my way. You can never";
@@ -64,18 +63,18 @@ alberta,118,157,3	script	Magazine Dealer Tonny::mdk	83,{
 }
 
 function	script	Func_Casing	{
-	mes .n$;
+	mes "[Kenny]";
 	mes "Now, you can trade";
 	mes "500 "+getitemname(getarg(0))+"s";
 	mes "and 500 zeny for 1 "+getitemname(getarg(1))+", so make sure";
 	mes "you have sufficient bullets";
 	mes "and zeny for this exchange.";
 	next;
-	mes .n$;
+	mes "[Kenny]";
 	mes "You can exchange 500 "+getitemname(getarg(0))+"s and 500 zeny";
 	mes "with 1 "+getitemname(getarg(1))+".";
 	next;
-	mes .n$;
+	mes "[Kenny]";
 	mes "Remember that I can't give";
 	mes "you more than 50 Magazines";
 	mes "at a time. Now please enter";
@@ -84,7 +83,7 @@ function	script	Func_Casing	{
 	next;
 	input .@amount;
 	if(.@amount > 50 || .@amount == 0) {
-		mes .n$;
+		mes "[Kenny]";
 		mes "Hey, I can't give you";
 		mes "that many Magazines.";
 		mes "Please try again, and";
@@ -95,7 +94,7 @@ function	script	Func_Casing	{
 	if (countitem(getarg(0)) >= (500*.@amount)) {
 		if (Zeny >= (500*.@amount)) {
 			if (checkweight(getarg(1),.@amount) == 0) {
-				mes .n$;
+				mes "[Kenny]";
 				mes "Hey, you've got a lot";
 				mes "of junk crammed in your";
 				mes "Inventory. Free up some";
@@ -104,7 +103,7 @@ function	script	Func_Casing	{
 				mes "some Magazines later, okay?";
 				close;
 			}else{
-				mes .n$;
+				mes "[Kenny]";
 				mes "Alright, here are";
 				mes "your Magazines. Thanks";
 				mes "for visiting my shop, and";
@@ -116,7 +115,7 @@ function	script	Func_Casing	{
 				close;
 			}
 		}else{
-			mes .n$;
+			mes "[Kenny]";
 			mes "Sorry, but you don't";
 			mes "have enough zeny for";
 			mes "this Magazine exchange.";
@@ -126,7 +125,7 @@ function	script	Func_Casing	{
 			close;
 		}
 	}else{
-		mes .n$;
+		mes "[Kenny]";
 		mes "Sorry, but you don't";
 		mes "have enough bullets for";
 		mes "this Magazine exchange.";

+ 1 - 1
npc/merchants/ammo_dealer.txt

@@ -1,5 +1,5 @@
 //===== rAthena Script =======================================
-//= Bullet Dealer Tony
+//= Bullet Dealers
 //===== By ===================================================
 //= Playtester, Paradox924X
 //===== Version ==============================================

+ 15 - 12
npc/other/comodo_gambling.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Reddozen, Cypress, Zefris
 //===== Current Version: =====================================
-//= 1.4
+//= 1.4a
 //===== Compatible With: =====================================
 //= Any rAthena SVN
 //===== Description: =========================================
@@ -23,10 +23,15 @@
 //= 1.2 Corrected NPC names to fall within proper restrictions. [L0ne_W0lf]
 //= 1.3 Added missing item. [Kisuka]
 //= 1.4 Updated Script to match AEGIS file. [Masao]
+//= 1.4a Minor script updates. [Euphy]
 //============================================================ 
 
 comodo,219,158,6	script	Kachua	91,{
 
+	if (checkweight(1201,1) == 0) {
+		mes "^3355FFWait a second! Right now, you're carrying too many items with you. Please come back after putting some of your things into Kafra Storage.^000000";
+		close;
+	}
 	cutin "katsua01.bmp",2;
 
 	mes "[Kachua]";
@@ -47,7 +52,7 @@ comodo,219,158,6	script	Kachua	91,{
 		cutin "katsua01.bmp",255;
 		end;
 	}
-	
+
 	if (countitem(732) == 0) {
 		cutin "katsua01.bmp",255;
 		cutin "katsua03.bmp",2;
@@ -59,7 +64,7 @@ comodo,219,158,6	script	Kachua	91,{
 		cutin "katsua03.bmp",255;
 		end;
 	}
-	
+
 	mes "[Kachua]";
 	mes "Are you sure you don't mind";
 	mes "giving this to me? Thank you";
@@ -69,7 +74,7 @@ comodo,219,158,6	script	Kachua	91,{
 	mes "collections~";
 	next;
 	
-	if (Weight >= MaxWeight/2) {
+	if (MaxWeight - Weight < 5500) {
 		cutin "katsua01.bmp",255;
 		cutin "katsua03.bmp",2;
 		mes "[Kachua]";
@@ -81,21 +86,21 @@ comodo,219,158,6	script	Kachua	91,{
 		cutin "katsua03.bmp",255;
 		end;
 	}
-	
+
 	if (countitem(732) == 0) { // anti-hack
 		logmes "Hack: Tried to bypass item check.";
 		cutin "katsua01.bmp",255;
 		close;
 	}
 	delitem 732,1;
-	
+
 	mes "[Kachua]";
 	mes "So what would";
 	mes "you like to have?";
 	next;
-	
+
 	switch (select("Weapon", "Armor", "Garment", "Helmet", "Shoes", "Shield")) {
-	
+
 	case 1: // Weapons
 			set .@gamble1,rand(1,1000);
 			if ((.@gamble1 > 920) && (.@gamble1 < 931)) {
@@ -488,9 +493,7 @@ comodo,210,154,2	script	Suspicious Guy#cmd	118,{
 
 mjolnir_02,85,362,3	script	Blacksmith Miner	726,{
 
-	if(checkweight(1201,1) == 0)
-	{
-		mes "[Kachua]";
+	if (checkweight(1201,1) == 0) {
 		mes "^3355FFWait a second! Right now, you're carrying too many items with you. Please come back after putting some of your things into Kafra Storage.^000000";
 		close;
 	}
@@ -503,7 +506,7 @@ mjolnir_02,85,362,3	script	Blacksmith Miner	726,{
 	mes "thousands of Diamonds,";
 	mes "all of them mine!";
 	mes "I'm rich!";
-	emotion 18;
+	emotion e_heh;
 	next;
 	switch(select("I want to buy some.:Congratulations.")){
 	case 1:

+ 1 - 4
npc/pre-re/cities/izlude.txt

@@ -3,14 +3,13 @@
 //===== By: ================================================== 
 //= Daegaladh
 //===== Current Version: ===================================== 
-//= 1.1
+//= 1.0
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
 //= Izlude town NPCs.
 //===== Additional Comments: ================================= 
 //= 1.0 First Version.
-//= 1.1 Added bullet NPC duplicates. [Euphy]
 //============================================================
 
 izlude,201,181,2	duplicate(Sailor_izlude)	Sailor#izlude	100
@@ -22,5 +21,3 @@ izlude,150,143,2	duplicate(Kylick_izlude)	Kylick#izlude	97
 izlude,56,126,2	duplicate(Red_izlude)	Red#izlude	85
 izlude,58,126,2	duplicate(Cebalis_izlude)	Cebalis#izlude	98
 izlude,124,178,2	duplicate(Soldier_izlude)	Soldier#izlude	105
-izlude,171,133,3	duplicate(bdt)	Bullet Dealer Tony#iz	86
-izlude,171,127,3	duplicate(mdk)	Magazine Dealer Kenny	83

+ 24 - 0
npc/pre-re/kafras/kafras.txt

@@ -0,0 +1,24 @@
+//===== rAthena Script ======================================= 
+//= Kafras (Cities/Dungeons/Fields)
+//===== By: ================================================== 
+//= Daegaladh
+//===== Current Version: ===================================== 
+//= 1.0
+//===== Compatible With: ===================================== 
+//= rAthena SVN
+//===== Description: =========================================
+//= Argument settings for callfunc "F_Kafra":
+//=  arg(0): 0 - Default Kafra message
+//=          1 - Niflhiem Kafra message
+//=          2 - Guild Kafra message
+//=  arg(1): 1 - Disable teleport menu 
+//=  arg(2): 1 - Disable info menu
+//=  arg(3): Cost of Storage service
+//=  arg(4): Cost of Rent a Pushcart service
+//===== Additional Comments: ================================= 
+//= 1.0 First version.
+//============================================================ 
+
+// Izlude
+//============================================================
+izlude,134,87,3	duplicate(kaf_izlude)	Kafra Employee	117

+ 15 - 0
npc/pre-re/merchants/ammo_boxes.txt

@@ -0,0 +1,15 @@
+//===== rAthena Script =======================================
+//= Magazine Dealers
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= Turns bullets into magazines/packs.
+//===== Additional Comments: =================================
+//= 1.0 First version, Pre-Renewal duplicates.
+//============================================================
+
+izlude,171,127,3	duplicate(mdk)	Magazine Dealer Kenny#iz	83

+ 15 - 0
npc/pre-re/merchants/ammo_dealer.txt

@@ -0,0 +1,15 @@
+//===== rAthena Script =======================================
+//= Bullet Dealers
+//===== By ===================================================
+//= Euphy
+//===== Version ==============================================
+//= 1.0
+//===== Compatible With ======================================
+//= rAthena SVN
+//===== Description ==========================================
+//= Bullet trader.
+//===== Comments =============================================
+//= 1.0 First version, Pre-Renewal duplicates.
+//============================================================
+
+izlude,171,133,3	duplicate(bdt)	Bullet Dealer Tony#iz	86

+ 0 - 0
npc/other/resetskill.txt → npc/pre-re/other/resetskill.txt


+ 17 - 0
npc/pre-re/quests/quests_nameless.txt

@@ -0,0 +1,17 @@
+//===== rAthena Script ======================================= 
+//= Nameless Island Quests
+//===== By: ================================================== 
+//= Euphy
+//===== Current Version: ===================================== 
+//= 1.0
+//===== Compatible With: ===================================== 
+//= rAthena SVN
+//===== Description: ========================================= 
+//= [Official Conversion]
+//= Contains:
+//= - Muff's Loan
+//===== Additional Comments: ================================= 
+//= 1.0 Moved Dorian to pre-re/re paths.
+//============================================================ 
+
+izlude_in,110,64,3	duplicate(Dorian_izlude)	Dorian	878,2,2

+ 5 - 1
npc/pre-re/scripts_athena.conf

@@ -34,9 +34,11 @@ npc: npc/pre-re/guides/guides_umbala.txt
 npc: npc/pre-re/guides/guides_veins.txt
 
 // ---------------- Kafras & Cool Event Corp. -------------------
-npc: npc/pre-re/kafras/kafras_izl.txt
+npc: npc/pre-re/kafras/kafras.txt
 
 // -------------------------- Merchant --------------------------
+npc: npc/pre-re/merchants/ammo_boxes.txt
+npc: npc/pre-re/merchants/ammo_dealer.txt
 npc: npc/pre-re/merchants/shops.txt
 
 // --------------------------- Others ---------------------------
@@ -51,6 +53,7 @@ npc: npc/pre-re/other/arena/arena_point.txt
 npc: npc/pre-re/other/arena/arena_room.txt
 // --------------------------------------------------------------
 npc: npc/pre-re/other/mercenary_rent.txt
+npc: npc/pre-re/other/resetskill.txt
 
 // --------------------------- Quests ---------------------------
 // - Repeatable EXP Quests (iRO) --------------------------------
@@ -84,4 +87,5 @@ npc: npc/pre-re/quests/mrsmile.txt
 npc: npc/pre-re/quests/quests_13_1.txt
 npc: npc/pre-re/quests/quests_izlude.txt
 npc: npc/pre-re/quests/quests_lighthalzen.txt
+npc: npc/pre-re/quests/quests_nameless.txt
 npc: npc/pre-re/quests/quests_veins.txt

+ 3 - 2
npc/quests/quests_nameless.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= L0ne_W0lf
 //===== Current Version: ===================================== 
-//= 2.3
+//= 2.4
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -61,6 +61,7 @@
 //=     - Z-Gang Quest
 //= 2.2a Fixed a few job constant typos. [Euphy]
 //= 2.3 Updated RE/Pre-RE EXP. [Euphy]
+//= 2.4 Moved Dorian to pre-re/re paths. [Euphy]
 //============================================================ 
 
 // Nameless Island and Cursed Monestary Access Quest
@@ -3645,7 +3646,7 @@ cmd_fild01,55,160,0	script	Heap of Earth	844,{
 	close;
 }
 
-izlude_in,110,64,3	script	Dorian	878,2,2,{
+-	script	::Dorian_izlude	-1,{
 	if (checkweight(907,200) == 0) {
 		mes "[Dorian]";
 		mes "Ugh, just like a member";

+ 4 - 10
npc/re/cities/izlude.txt

@@ -10,24 +10,18 @@
 //= Izlude town NPCs.
 //===== Additional Comments: ================================= 
 //= 1.0 First Version. Still missing many new NPCs and their dialogues. [Masao]
-//= 1.1 Added bullet NPC duplicates. [Euphy]
+//= 1.1 Updated to match the official script. [Euphy]
 //============================================================
 
 izlude,197,205,1	duplicate(Sailor_izlude)	Sailor#izlude	100
 izlude,71,92,2	duplicate(Bonne_izlude)	Bonne#izlude	90
 izlude,172,215,4	duplicate(Charfri_izlude)	Charfri#izlude	91
-izlude,127,175,4	duplicate(Cuskoal_izlude)	Cuskoal#izlude	124
+izlude,174,164,4	duplicate(Cuskoal_izlude)	Cuskoal#izlude	124
 izlude,85,103,4	duplicate(Dega_izlude)	Dega#izlude	84
 izlude,140,186,4	duplicate(Kylick_izlude)	Kylick#izlude	97
-izlude,56,156,2	duplicate(Red_izlude)	Red#izlude	85
-izlude,58,156,2	duplicate(Cebalis_izlude)	Cebalis#izlude	98
+izlude,57,159,2	duplicate(Red_izlude)	Red#izlude	85
+izlude,55,159,2	duplicate(Cebalis_izlude)	Cebalis#izlude	98
 izlude,165,156,2	duplicate(Soldier_izlude)	Soldier#izlude	105
-izlude,158,130,3	duplicate(bdt)	Bullet Dealer Tony#iz	86
-izlude,155,132,3	duplicate(mdk)	Magazine Dealer Kenny	83
-
-izlude,147,131,6	script	Blacksmith#izlude	726,{
-	end;
-}
 
 prt_fild08,350,219,4	script	Guard#izlude	105,{
 	mes "[Izlude Guard]";

+ 1 - 1
npc/re/cities/jawaii.txt

@@ -13,4 +13,4 @@
 //= 1.1 Moved "Honeymoon Helper" NPC.
 //============================================================
 
-izlude,180,224,6	duplicate(Honeymoon_Helper_Izlude)	Honeymoon Helper#Izlude	71
+izlude,180,224,3	duplicate(Honeymoon_Helper_Izlude)	Honeymoon Helper#Izlude	71

+ 4 - 5
npc/re/jobs/3-1/warlock.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Muad_Dib, Gepard & L0ne_W0lf
 //===== Current Version: ===================================== 
-//= 1.3a
+//= 1.3b
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
@@ -18,6 +18,7 @@
 //= 1.2a Fixed a typo. [Euphy]
 //= 1.3 Updated script, optimized. [Euphy]
 //= 1.3a Added temporary coordinate fix #distorted_space_1-1. [Euphy]
+//= 1.3b Added official coordinates. [Euphy]
 //============================================================
 
 -	script	#distorted_space_	-1,{
@@ -66,12 +67,10 @@ OnTouch:
 	}
 	end;
 }
-morocc,103,144,0	duplicate(#distorted_space_)	#distorted_space_1	139,1,1
+//morocc,103,144,0	duplicate(#distorted_space_)	#distorted_space_1	139,1,1
+morocc,95,132,0	duplicate(#distorted_space_)	#distorted_space_1	139,1,1
 splendide,141,284,0	duplicate(#distorted_space_)	#distorted_space_2	139,1,1
 
-// This is a temporary fix until new official coordinates are found.
-morocc,98,144,0	duplicate(#distorted_space_)	#distorted_space_1-1	139,1,1
-
 function	script	F_Warlock	{
 	mes "[Assistant]";
 	mes "Huh!!! Human!?!";

+ 13 - 1
npc/re/kafras/kafras.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Joseph
 //===== Current Version: ===================================== 
-//= 1.2
+//= 1.3
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: =========================================
@@ -21,6 +21,7 @@
 //= 1.0 Merged and cleaned up Kafras. [Euphy]
 //= 1.1 Added Dewata Kafra. [Lemongrass]
 //= 1.2 Added Port Malaya Kafras. [Euphy]
+//= 1.3 Added Eden Group Kafra. [Euphy]
 //============================================================ 
 
 // Brasilis
@@ -41,6 +42,17 @@ dewata,202,184,6	script	Kafra Employee::kaf_dewata	117,{
 	callfunc "F_KafEnd",0,1,"on Dewata Island";
 }
 
+// Eden Group
+//============================================================
+moc_para01,10,185,4	script	Kafra Employee::kaf_eden	721,{
+	cutin "kafra_07",2;
+	mes "[Kafra Employee]";
+	mes "Welcome to the";
+	mes "Kafra Corporation.";
+	mes "I only offer Storage!";
+	callfunc "F_Kafra",5,2,0,80,0;
+}
+
 // Izlude
 //============================================================
 izlude,128,148,6	duplicate(kaf_izlude)	Kafra Employee	117

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

@@ -3,20 +3,24 @@
 //===== By: ================================================== 
 //= Masao, Mercurial
 //===== Current Version: ===================================== 
-//= 1.3
+//= 1.4
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
 //= [Official Conversion]
-//= Sells some 3rd Job related items.
+//= Sells some 3rd Job related items:
+//= - Poison Herbs, Rune Stones, Rare Herbs, Points
 //===== Additional Comments: ================================= 
 //= 1.0 First Version.
 //= 1.1 Optimized Poison Herb Salesman NPC
 //= 1.2 Optimized and standardized. [Euphy]
 //= 1.3 Added Malangdo/Mora Points NPC. [Euphy]
+//= 1.4 Updated to match the official scripts. [Euphy]
 //============================================================ 
 
-job3_guil01,79,96,3	script	Poison Herb Salesman::PHS	877,{
+// Poison Herb Merchants (Guillotine Cross)
+//============================================================
+-	script	::phs	-1,{
 	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
 		mes "- Wait a minute !! -";
 		mes "- Currently you're carrying -";
@@ -25,67 +29,64 @@ job3_guil01,79,96,3	script	Poison Herb Salesman::PHS	877,{
 		mes "- after you lose some weight. -";
 		close;
 	}
-	mes "[Poison Herb Salesman]";
+	mes "[Poison Herb Merchant]";
 	mes "I am the professional";
-	mes "poison herb seller.";
-	mes "Which one do you want?";
-	mes "They cost 4,000 zeny each!";
-	set .@i, select("Nerium:Rantana:Makulata:Seratum:Scopolia:Amoena:Poison Kit")-1;
+	mes "Poison Herb merchant.";
+	mes "Each Herb costs 4,000 zeny.";
+	mes "What would you like?";
 	next;
+	set .@i, select("Nerium:Rantana:Makulata:Seratum:Scopolia:Amoena:Poison Kit:Cancel")-1;
+	mes "[Poison Herb Merchant]";
 	if (.@i < 6) {
-		mes "[Poison Herb Salesman]";
-		mes "How many do you want? You can";
-		mes "only buy a maximum of 2000 ea";
-		mes "and if you want to cancel, enter '0'.";
-		next;
-		input .@amount;
-		mes "[Poison Herb Salesman]";
-		if (.@amount == 0) {
-			mes "You've cancelled the trade.";
-			close;
-		}
-		if (.@amount > 2000) {
-			mes "Please check the maximum";
-			mes "amount and then try again.";
-			close;
-		}
-		if (Zeny < .@amount*4000) {
-			mes "Please check the money you have.";
-			mes "It doesn't seem like you have enough money.";
-			close;
-		}
-		set Zeny, Zeny-(.@amount*4000);
-		getitem 7932+.@i,.@amount;
-		mes "Thank you. See you~!";
-		close;
+		set .@item,7932+.@i;
+		set .@price,4000;
+		set .@max,2000;
+		set .@max$,"2,000";
+	} else if (.@i == 6) {
+		set .@item,7931;
+		set .@price,5000;
+		set .@max,500;
+		set .@max$,"500";
+		mes "Each Poison Kit costs 5,000 zeny.";
 	} else {
-		mes "[Poison Herb Salesman]";
-		mes "You can only buy";
-		mes "1 Poison Kit and it costs 5,000 zeny.";
-		mes "Will you buy it?";
-		next;
-		if(select("Yes, I will.:No, I won't.") == 2) {
-			mes "[Poison Herb Salesman]";
-			mes "Well, I see. See you~!";
-			close;
-		}
-		mes "[Poison Herb Salesman]";
-		if (Zeny < 5000) {
-			mes "Please check the money you have.";
-			mes "It doesn't seem like you have enough money.";
-			close;
-		}
-		set Zeny, Zeny-5000;
-		getitem 7931,1;
-		mes "[Poison Herb Salesman]";
-		mes "Thank you. See you~!";
+		mes "Well, I see. Come back again~!";
 		close;
 	}
+	mes "How many do you want?";
+	mes "You can only buy a maximum of '"+.@max+"' ea.";
+	mes "Enter '0' if you want to cancel.";
+	next;
+	input .@amount;
+	if (.@amount == 0) {
+		mes "[Poison Herb Merchant]";
+		mes "You've cancelled the trade.";
+		close;
+	}
+	if (.@amount > .@max) {
+		mes "[Poison Herb Merchant]";
+		mes "The number must be less than "+.@max$+"!";
+		close;
+	}
+	set .@total, .@amount * .@price;
+	if (Zeny < .@total) {
+		mes "[Poison Herb Merchant]";
+		mes "You don't have enough money.";
+		mes "Check how much money you have first.";
+		close;
+	}
+	set Zeny, Zeny - .@total;
+	getitem .@item, .@amount;
+	mes "[Poison Herb Merchant]";
+	mes "Thank you. Come back again~!";
+	close;
 }
-morocc,190,96,4	duplicate(PHS)	Poison Herb Salesman#moc	877
-lhz_in02,16,205,4	duplicate(PHS)	Poison Herb Salesman#lhz	877
+job3_guil01,79,96,3	duplicate(phs)	Poison Herb Merchant	877
+morocc,191,94,4	duplicate(phs)	Poison Herb Merchant#moc	877	//Official: (190,96) -> in a wall
+lhz_in02,16,205,4	duplicate(phs)	Poison Herb Merchant#lhz	877
 
-job3_rune01,90,62,3	script	Rune Salesman::runesale	853,{
+// Rune Stone Merchants (Rune Knight)
+//============================================================
+-	script	::runesale	-1,{
 	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
 		mes "- Wait a minute !! -";
 		mes "- Currently you're carrying -";
@@ -94,57 +95,67 @@ job3_rune01,90,62,3	script	Rune Salesman::runesale	853,{
 		mes "- after you lose some weight. -";
 		close;
 	}
-	mes "[Rune Salesman]";
+	mes "[Rune Merchant]";
 	mes "Hey, do you need Runes?!";
-	mes "I sell all kinds of Rune Stones!";
-	mes "What kind of Rune do you want?";
+	mes "I sell all sorts of Rune Stones!";
+	mes "What would you like?";
 	next;
 	set .@i, select("Buy high-quality Rune Stones.:Buy ordinary Rune Stones.");
-	mes "[Rune Salesman]";
+	mes "[Rune Merchant]";
 	if (.@i == 1) {
 		mes "High-quality Runes!";
 		mes "They cost 2,500 zeny each!";
-		setarray .@rune[0],12734,2500;
+		set .@item,12734; //Runstone_Quality
+		set .@price,2500;
 	} else {
 		mes "Ordinary Rune Stones?";
 		mes "They cost 1,000 zeny each!";
+		set .@item,12737; //Runstone_Ordinary
+		set .@price,1000;
 		setarray .@rune[0],12737,1000;
 	}
-	mes "Tell me how many you want to buy";
+	mes "Tell me how many you want,";
 	mes "and remember, you can only";
-	mes "buy a maximum amount of 2000 ea!";
+	mes "buy a maximum of '2000' ea.";
 	next;
 	input .@amount;
-	mes "[Rune Salesman]";
 	if (.@amount == 0) {
-		mes "You're not buying? Go away!";
+		mes "[Rune Merchant]";
+		mes "You're not buying? Please leave!";
 		close;
 	}
 	if (.@amount > 2000) {
-		mes "Please check the maximum";
-		mes "amount and then come back to me again!";
+		mes "[Rune Merchant]";
+		mes "The number must be less than 2,000!";
 		close;
 	}
-	if (Zeny < .@amount*.@rune[1]) {
-		mes "Money! Money!";
-		mes "You are short of money!";
-		mes "Check the amount of money you have!!";
+	set .@total, .@amount * .@price;
+	if (Zeny < .@total) {
+		mes "[Rune Merchant]";
+		mes "Zeny! Zeny!";
+		mes "You don't have enough money.";
+		mes "Check how much money you have first.";
 		close;
 	}
-	if (!checkweight(.@rune[0],.@amount)) {
-		mes "You're not able to carry it, so why are you trying to buy it?!";
+	if (!checkweight(.@item,.@amount)) {
+		mes "[Rune Merchant]";
+		mes "It doesn't seem like you are able to carry it all, why are you trying it?!";
 		close;
 	}
-	set Zeny, Zeny-(.@amount*.@rune[1]);
-	getitem .@rune[0],.@amount;
-	mes "You can buy more again.";
-	mes "So, see you later.";
+	set Zeny, Zeny - .@total;
+	getitem .@item, .@amount;
+	mes "[Rune Merchant]";
+	mes "Thank you.";
+	mes "Please come back again~!";
 	close;
 }
-prontera,168,228,3	duplicate(runesale)	Rune Salesman#1	853
+job3_rune01,90,62,3	duplicate(runesale)	Rune Merchant#job3	853
+prontera,168,228,3	duplicate(runesale)	Rune Merchant#prt	853
 
+// Rare Herb Merchants (Guillotine Cross)
+//============================================================
 job3_guil01,91,93,3	script	Rare Herb Collector	49,{
-	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
+	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 2000) {
 		mes "- Wait a minute !! -";
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
@@ -154,27 +165,48 @@ job3_guil01,91,93,3	script	Rare Herb Collector	49,{
 	}
 	if (Class == Job_Guillotine_Cross || Class == Job_Guillotine_Cross_T || Class == Job_Baby_Cross) {
 		mes "[Rare Poison Herb Collector]";
-		mes "I wander around the world and collect rare poison herbs. Recently, I am dealing in the herb called Izidor. If you are interested, you can buy them.";
+		mes "I wander around the world and collect rare poison herbs. Recently, I started dealing in the herb called Izidor. If you are interested, you can buy them.";
 		next;
-		set .@i, select("How can I buy them?:Exchange it with Animal Blood:Exchange it with a Bitter Herb:Exchange it with a Deadly Noxious Herb:Exchange it with a Frozen Rose:Exchange it with Ment:Exchange it with Hinalle")-1;
-		if (.@i == 0) {
+		set .@i, select("How can I buy them?:Exchange it for Animal Blood:Exchange it for a Bitter Herb:Exchange it for a Deadly Noxious Herb:Exchange it for a Frozen Rose:Exchange it for Ment:Exchange it for Hinalle")-2;
+		if (.@i == -1) {
 			mes "[Rare Poison Herb Collector]";
-			mes "You can buy any of those items for 10,000 zeny: Animal Blood, Bitter Herb, Deadly Noxious Herb, Frozen Rose, Ment or Hinalle. ";
+			mes "You can buy them for 10,000 zeny and one of these rare items, Animal Blood, Bitter Herb, Deadly Noxious Herb, Frozen Rose, Ment or an Hinalle.";
 			next;
 			mes "[Rare Poison Herb Collector]";
-			mes "Why I ask for money? That is just to pay a little respect to a collector like me. Ha ha ha...";
+			mes "Why do I ask money? That's just to pay a little respect to a collector like me. Ha ha ha...";
 			close;
 		} else {
-			setarray .@exchange[1],702,621,631,749,605,703;
+			setarray .@exchange[0],702,621,631,749,605,703;
+			set .@item, .@exchange[.@i];
+			set .@price, 10000;
+
 			mes "[Rare Poison Herb Collector]";
-			if (!countitem(.@exchange[.@i]) || Zeny < 10000) {
-				mes "Hey, try again after you've prepared all the requirements for the exchange.";
+			mes "How many do you want?";
+			mes "You can only buy a maximum of '2000' ea.";
+			mes "Enter '0' if you want to cancel.";
+			next;
+			input .@amount;
+			if (.@amount == 0) {
+				mes "[Rare Poison Herb Collector]";
+				mes "You've cancelled the trade.";
+				close;
+			}
+			if (.@amount > 2000) {
+				mes "[Rare Poison Herb Collector]";
+				mes "The number must be less than 2,000!";
+				close;
+			}
+			set .@total, .@amount * .@price;
+			if (countitem(.@item) < .@amount || Zeny < .@total) {
+				mes "[Rare Poison Herb Collector]";
+				mes "Hey, come back when you have all the requirements for the exchange.";
 				close;
 			}
-			mes "Thank you. I've received your payment.";
-			delitem .@exchange[.@i],1;
-			set Zeny, Zeny-10000;
-			getitem 709,1;
+			mes "[Rare Poison Herb Collector]";
+			mes "Good. I've received the money and the special item.";
+			delitem .@item, .@amount;
+			set Zeny, Zeny - .@total;
+			getitem 709, .@amount; //Izidor
 			close;
 		}
 	}
@@ -183,7 +215,9 @@ job3_guil01,91,93,3	script	Rare Herb Collector	49,{
 	close;
 }
 
-gef_tower,105,172,5	script	Point Salesman#Sorcerer::pss	700,{
+// Point Merchants (Sorcerer)
+//============================================================
+-	script	::pss	-1,{
 	if (checkweight(1201,1) == 0 || MaxWeight - Weight < 20000) {
 		mes "- Wait a minute !! -";
 		mes "- Currently you're carrying -";
@@ -192,11 +226,11 @@ gef_tower,105,172,5	script	Point Salesman#Sorcerer::pss	700,{
 		mes "- after you lose some weight. -";
 		close;
 	}
-	mes "[Point Salesman]";
+	mes "[Point Merchant]";
 	mes "Hello. I'm selling a catalyst called ^FF0000Points^000000 for Sorcerers. What would you like?";
 	next;
 	set .@i, select("Scarlet Points - 200z:Lime Green Points - 200z:Indigo Points - 200z:Yellow Wish Points - 200z:Cancel")-1;
-	mes "[Point Salesman]";
+	mes "[Point Merchant]";
 	if (.@i == 4) {
 		mes "You can't find the stuff you need?";
 		close;
@@ -208,7 +242,7 @@ gef_tower,105,172,5	script	Point Salesman#Sorcerer::pss	700,{
 	mes "If you want to cancel, enter 0.";
 	next;
 	input .@amount;
-	mes "[Point Salesman]";
+	mes "[Point Merchant]";
 	if (.@amount == 0) {
 		mes "You've cancelled the trade.";
 		close;
@@ -226,8 +260,18 @@ gef_tower,105,172,5	script	Point Salesman#Sorcerer::pss	700,{
 	mes "Thank you very much. See you~!";
 	close;
 }
-comodo,241,103,6	duplicate(pss)	Point Salesman#1	700
-alberta,105,52,7	duplicate(pss)	Point Salesman#2	700
-veins,202,128,6	duplicate(pss)	Point Salesman#3	700
-malangdo,215,163,6	duplicate(pss)	Point Salesman#4	700
-mora,115,118,3	duplicate(pss)	Point Salesman#5	700
+gef_tower,105,172,5	duplicate(pss)	Point Merchant#Sorcerer	700
+prt_in,131,66,0	duplicate(pss)	Point Seller#Prontera	700
+alberta,105,52,7	duplicate(pss)	Point Seller#Alberta	700
+aldebaran,133,114,5	duplicate(pss)	Point Seller#Aldebaran	700
+comodo,193,159,5	duplicate(pss)	Point Seller#Comodo	700
+geffen,129,49,5	duplicate(pss)	Point Seller#Geffen	700
+izlude,138,163,5	duplicate(pss)	Point Seller#Izlude	700	//Pre-RE: izlude (135,121)
+malangdo,214,163,5	duplicate(pss)	Point Seller#Malangdo	700
+mora,115,118,3	duplicate(pss)	Point Seller#Mora	700
+ra_in01,256,273,3	duplicate(pss)	Point Seller#Rachel	700
+veins,202,128,5	duplicate(pss)	Point Seller#Veins	700
+dicastes01,207,200,5	duplicate(pss)	Point Seller#Dicastes	700
+manuk,261,206,3	duplicate(pss)	Point Seller#Manuk	700
+splendide,207,160,5	duplicate(pss)	Point Seller#Splendide	700
+mid_camp,224,237,3	duplicate(pss)	Point Seller#Midgard	700

+ 16 - 0
npc/re/merchants/ammo_boxes.txt

@@ -0,0 +1,16 @@
+//===== rAthena Script =======================================
+//= Magazine Dealers
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= Turns bullets into magazines/packs.
+//===== Additional Comments: =================================
+//= 1.0 First version, Renewal duplicates.
+//============================================================
+
+que_ng,187,149,3	duplicate(mdk)	Magazine Dealer Kenny#ng	83
+izlude,74,104,3	duplicate(mdk)	Magazine Dealer Kenny#iz	83

+ 16 - 0
npc/re/merchants/ammo_dealer.txt

@@ -0,0 +1,16 @@
+//===== rAthena Script =======================================
+//= Bullet Dealers
+//===== By ===================================================
+//= Euphy
+//===== Version ==============================================
+//= 1.0
+//===== Compatible With ======================================
+//= rAthena SVN
+//===== Description ==========================================
+//= Bullet trader.
+//===== Comments =============================================
+//= 1.0 First version, Renewal duplicates.
+//============================================================
+
+que_ng,187,156,3	duplicate(bdt)	Bullet Dealer Tony#ng	86
+izlude,77,104,3	duplicate(bdt)	Bullet Dealer Tony#iz	86	//Official: (74,106) -> in the water

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

@@ -48,9 +48,9 @@ dicastes01,207,200,6	shop	Points Merchant#dic	66,6360:-1,6361:-1,6362:-1,6363:-1
 //=======================================================
 izlude,160,186,0	shop	Butcher#iz	54,517:-1
 izlude,124,165,4	shop	Fruit Gardener#iz	53,512:-1,513:-1,515:-1,516:-1
-izlude,128,158,6	shop	Vendor from Milk Ranch#i	90,519:-1
-izlude_in,72,98,3	shop	Pet Groomer#iz	124,537:-1,643:-1,10013:-1,10014:-1,554:-1,6113:-1,6114:-1,6115:-1
-izlude_in,57,109,0	shop	Tool Dealer#iz	47,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,645:-1,656:-1,601:-1,602:-1,1065:-1,1750:-1
+izlude,128,158,7	shop	Vendor from Milk Ranch#i	90,519:-1
+izlude_in,72,98,4	shop	Pet Groomer#iz	124,537:-1,643:-1,10013:-1,10014:-1,554:-1,6113:-1,6114:-1,6115:-1
+izlude_in,57,110,0	shop	Tool Dealer#iz	47,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,645:-1,656:-1,601:-1,602:-1,1065:-1,1750:-1
 izlude_in,72,110,3	shop	Trading Merchant#iz	900,13200:-1,13201:-1,13202:-1,13150:-1,13102:-1,13151:-1,13154:-1,13155:-1,13163:-1,13165:-1,13168:-1
 
 //=======================================================

+ 2 - 2
npc/re/other/mercenary_rent.txt

@@ -13,5 +13,5 @@
 //= 1.0 First version. [L0ne_W0lf]
 //============================================================
 
-izlude,47,169,5	duplicate(Mercenary Manager#main)	Mercenary Manager#Sword	734
-izlude,56,169,4	duplicate(MercMerchant)	Mercenary Merchant#Sword	892
+izlude,47,170,4	duplicate(Mercenary Manager#main)	Mercenary Manager#Sword	734
+izlude,55,170,4	duplicate(MercMerchant)	Mercenary Merchant#Sword	892

+ 144 - 0
npc/re/other/resetskill.txt

@@ -0,0 +1,144 @@
+//===== rAthena Script =======================================
+//= Hypnotist
+//===== By: ==================================================
+//= Euphy
+//===== Current Version: =====================================
+//= 1.0
+//===== Compatible With: =====================================
+//= rAthena SVN
+//===== Description: =========================================
+//= [Official Conversion]
+//= Stat and skill resetter for expanded first class under
+//= base level 50 and normal first class.
+//===== Additional Comments: =================================
+//= 1.0 First version, Renewal script.
+//============================================================
+
+izlude,127,175,3	script	Hypnotist#novice	124,{
+	mes "[Hypnotist]";
+	mes "Greetings, adventurer.";
+	mes "I'm a member of the Hypnotist";
+	mes "Academy sent here to Izlude";
+	mes "to provide Skill Reset services";
+	mes "to certain First Class characters for a really good price: free!";
+	next;
+	mes "[Hypnotist]";
+	mes "Although I offer unlimited";
+	mes "stat/skill resets for now, I have";
+	mes "two conditions that must be";
+	mes "fulfilled. First, you must be";
+	mes "lower than ^FF0000Base Level 50^000000.";
+	next;
+	mes "[Hypnotist]";
+	mes "Second, you must be a";
+	mes "^FF0000Swordman, Acolyte, Mage,";
+	mes "Thief, Archer, Merchant,";
+	mes "Taekwon Boy, or Taekwon Girl,";
+	mes "Gunslinger and Ninja^000000";
+	mes "Job character to qualify.";
+	mes "Now, do you have any questions?";
+	next;
+	switch(select("^FF0000Stat/Skill Reset?:Reset stats:Reset skills^000000:Cancel")) {
+	case 1:
+		mes "[Hypnotist]";
+		mes "Stat/Skill Resets allow adventuers";
+		mes "to redistribute their Skill";
+		mes "Points if they are unhappy";
+		mes "with their current skills.";
+		next;
+		mes "[Hypnotist]";
+		mes "Before proceeding with";
+		mes "a Stat/Skill Reset, you must";
+		mes "reduce all of the weight";
+		mes "of all carried items on your";
+		mes "character to 0. You can put";
+		mes "extra items in Kafra Storage.";
+		next;
+		mes "[Hypnotist]";
+		mes "Ah, it's also important";
+		mes "to remove your ^FF0000Pushcart^000000";
+		mes "if you have one equipped.";
+		mes "Otherwise, hypnosis won't";
+		mes "work, or will backfire...";
+		close;
+	case 2:
+		set .@str$,"Stat";
+	case 3:
+		if (.@str$ == "")
+			set .@str$,"Skill";
+		mes "[Hypnotist]";
+		mes "Are you sure that you";
+		mes "want to proceed with";
+		mes "my ^FF0000"+.@str$+" Reset^000000 service?";
+		next;
+		if(select("Yes:Cancel") == 1)
+			break;
+	case 4:
+		mes "[Hypnotist]";
+		mes "Thank you, and good";
+		mes "luck on your adventures.";
+		mes "Please travel in safety~";
+		close;
+	}
+	if ((Class >= Job_Swordman && Class <= Job_Thief) || Class == Job_Taekwon || Class == Job_Gunslinger || Class == Job_Ninja) {
+		if (checkcart()) {
+			mes "[Hypnotist]";
+			mes "Oh! Please remove your";
+			mes "Pushcart before proceeding";
+			mes "with the "+.@str$+" Reset service.";
+			mes "Thanks for cooperating~";
+			close;
+		}
+		if (Weight != 0) {
+			mes "[Hypnotist]";
+			mes "If you're here for my "+.@str$;
+			mes "Reset service, please";
+			mes "remember that you can't";
+			mes "reset your "+.@str$+"s until the";
+			mes "^FF0000weight of your carried items in";
+			mes "your Inventory is reduced to 0^000000.";
+			next;
+			mes "[Hypnotist]";
+			mes "Why don't you place your";
+			mes "things into the Kafra Storage";
+			mes "for now? That way, you can";
+			mes "safely keep all of your goods.";
+			close;
+		}
+		if (BaseLevel >= 50 && (Class == Job_Taekwon || Class == Job_Gunslinger || Class == Job_Ninja)) {
+			mes "[Hypnotist]";
+			mes "I'm sorry, but characters";
+			mes "with Base Levels higher";
+			mes "than 50 are ineligible for the";
+			mes .@str$+" Reset service I provide.";
+			close;
+		}
+		mes "[Hypnotist]";
+		mes "Thank you for using";
+		mes "my "+.@str$+" Redistribution";
+		mes "services. Oh, and best";
+		mes "of luck to you on your";
+		mes "travels, adventurer.";
+		if (.@str$ == "Stat")
+			resetstatus;
+		else
+			resetskill;
+		close;
+	} else {
+		mes "[Hypnotist]";
+		mes "I'm sorry, but your";
+		mes "Job Class doesn't qualify";
+		mes "for the "+.@str$+" Reset service";
+		mes "that I provide. I can only";
+		mes "offer "+.@str$+" Resets to the";
+		mes "following Jobs...";
+		next;
+		mes "[Hypnotist]";
+		mes "^FF0000Swordman, Acolyte,";
+		mes "Mage, Thief, Archer,";
+		mes "Merchant, Taekwon";
+		mes "Boy, Taekwon Girl,";
+		mes "Gunslinder and Ninja^000000.";
+		close;
+	}
+}

+ 3 - 2
npc/re/quests/quests_izlude.txt

@@ -7,9 +7,10 @@
 //===== Compatible With: ===================================== 
 //= rAthena SVN
 //===== Description: ========================================= 
-//= Edgar's Offer
+//= Contains:
+//= - Edgar's Offer
 //===== Additional Comments: ================================= 
 //= 1.0 Updated to match the new Izlude Map. [Masao]
 //============================================================
 
-izlude,179,219,4	duplicate(Edgar_izlude)	Edgar#izlude	49
+izlude,179,219,2	duplicate(Edgar_izlude)	Edgar#izlude	49

+ 8 - 6
npc/pre-re/kafras/kafras_izl.txt → npc/re/quests/quests_nameless.txt

@@ -1,15 +1,17 @@
 //===== rAthena Script ======================================= 
-//= Izlude Kafras
+//= Nameless Island Quests
 //===== By: ================================================== 
-//= Daegaladh
+//= Euphy
 //===== Current Version: ===================================== 
 //= 1.0
 //===== Compatible With: ===================================== 
 //= rAthena SVN
-//===== Description: =========================================
-//= Izlude Kafras.
+//===== Description: ========================================= 
+//= [Official Conversion]
+//= Contains:
+//= - Muff's Loan
 //===== Additional Comments: ================================= 
-//= 1.0 First version.
+//= 1.0 Moved Dorian to pre-re/re paths.
 //============================================================ 
 
-izlude,134,87,3	duplicate(kaf_izlude)	Kafra Employee	117
+izlude_in,57,92,3	duplicate(Dorian_izlude)	Dorian	878,2,2

+ 4 - 0
npc/re/scripts_athena.conf

@@ -62,6 +62,8 @@ npc: npc/re/kafras/kafras.txt
 // -------------------------- Merchant --------------------------
 npc: npc/re/merchants/3rd_trader.txt
 npc: npc/re/merchants/advanced_refiner.txt
+npc: npc/re/merchants/ammo_boxes.txt
+npc: npc/re/merchants/ammo_dealer.txt
 //npc: npc/re/merchants/blessed_refiner.txt
 npc: npc/re/merchants/card_separation.txt
 npc: npc/re/merchants/catalog.txt
@@ -80,6 +82,7 @@ npc: npc/re/merchants/shops.txt
 
 // --------------------------- Others ---------------------------
 npc: npc/re/other/mercenary_rent.txt
+npc: npc/re/other/resetskill.txt
 
 // --------------------------- Quests ---------------------------
 // - Eden Group -------------------------------------------------
@@ -115,4 +118,5 @@ npc: npc/re/quests/quests_malangdo.txt
 npc: npc/re/quests/quests_malaya.txt
 npc: npc/re/quests/quests_mora.txt
 npc: npc/re/quests/quests_morocc.txt
+npc: npc/re/quests/quests_nameless.txt
 npc: npc/re/quests/quests_veins.txt

+ 17 - 15
npc/re/warps/cities/izlude.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Athena (1.0), Nana (1.1)
 //===== Current Version: =====================================
-//= 1.6
+//= 1.7
 //===== Compatible With: =====================================
 //= Any Athena Version
 //===== Description: =========================================
@@ -13,27 +13,29 @@
 //= 1.4 Minor correction on airport warps
 //= 1.5 Updated to match the new Izlude Map. [Masao]
 //= 1.6 Added new warps. [Streusel]
+//= 1.7 Updated to match the official scripts. [Euphy]
 //============================================================
 
 //= Izlude City ==============================================
-izlude,109,182,0	warp	iz01	3,3,izlude_in,65,87
-izlude,162,125,0	warp	iz02	2,2,izlude_in,116,49
-izlude,216,162,0	warp	iz03	3,2,izlude_in,151,127
-izlude,21,98,0	warp	iz001	3,3,prt_fild08,367,212
+prt_fild08,371,212,0	warp	prtf005	3,3,izlude,24,98
+izlude,20,98,0	warp	iz001	3,3,prt_fild08,367,212
+izlude_in,116,46,0	warp	iz02-1	3,2,izlude,128,98
+izlude,110,182,0	warp	iz01	2,2,izlude_in,65,87
+izlude_in,65,84,0	warp	iz01-1	2,2,izlude,112,179
 izlude,52,172,0	warp	iz04	2,2,izlude_in,74,161
-izlude,130,257,0	warp	iz_ac01-1	2,2,iz_ac01,99,29
-izlude,125,257,0	warp	iz_ac01-2	2,2,iz_ac01,99,29
+izlude_in,74,158,0	warp	iz04-1	3,2,izlude,52,168
+izlude_in,43,169,0	warp	w219	2,3,izlude_in,63,169
+izlude_in,87,169,0	warp	iz05-1	2,3,izlude_in,111,169
 izlude_in,108,169,0	warp	iz05	2,3,izlude_in,84,169
-izlude_in,116,46,0	warp	iz02-1	3,2,izlude,157,125
-izlude_in,148,127,0	warp	iz03-1	2,5,izlude,207,162
-izlude_in,171,97,0	warp	iz06	3,2,izlude_in,172,119
-izlude_in,172,116,0	warp	iz06-1	3,2,izlude_in,172,94
+izlude_in,148,127,0	warp	iz03-1	2,5,izlude,210,161
 izlude_in,172,139,0	warp	iz07	3,2,izlude_in,172,161
 izlude_in,172,158,0	warp	iz07-1	3,2,izlude_in,172,136
-izlude_in,43,169,0	warp	w219	2,3,izlude_in,64,169
-izlude_in,65,84,0	warp	iz01-1	5,2,izlude,113,178
-izlude_in,74,158,0	warp	iz04-1	3,2,izlude,52,166
-izlude_in,87,169,0	warp	iz05-1	2,3,izlude_in,111,169
+izlude_in,172,116,0	warp	iz06-1	3,2,izlude_in,172,94
+izlude_in,171,97,0	warp	iz06	3,2,izlude_in,172,119
+
+//= Izlude Academy ===========================================
+izlude,130,257,0	warp	iz_ac01-1	2,2,iz_ac01,99,29
+izlude,125,257,0	warp	iz_ac01-2	2,2,iz_ac01,99,29
 iz_ac01,100,24,0	warp	iz_ac01	2,2,izlude,127,253
 iz_ac01,122,25,0	warp	iz_ac02	2,2,iz_ac02,104,27
 iz_ac01,78,25,0	warp	iz_ac03	2,2,iz_ac02,104,27

+ 2 - 2
npc/re/warps/fields/prontera_fild.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Nana (1.0)
 //===== Current Version: =====================================
-//= 1.3
+//= 1.3a
 //===== Compatible With: =====================================
 //= Any Athena Version
 //===== Description: =========================================
@@ -12,6 +12,7 @@
 //= 1.1 updating according to jA [Lupus]
 //= 1.2 Updated warps for episode 12.1 [L0ne_W0lf]
 //= 1.3 Updated to match the new Izlude Map. [Masao]
+//= 1.3a Moved Izlude warp to other file. [Euphy]
 //============================================================
 
 //= Prontera Fields ==========================================
@@ -65,7 +66,6 @@ prt_fild08,16,187,0	warp	prtf15-1	3,17,prt_fild07,380,186
 prt_fild08,16,239,0	warp	prtf14-1	3,15,prt_fild07,379,239
 prt_fild08,170,378,0	warp	prtf004	3,2,prontera,156,26
 prt_fild08,233,16,0	warp	prtf023	12,1,moc_fild01,238,378
-prt_fild08,371,212,0	warp	prtf005	3,3,izlude,26,98
 prt_fild08,55,21,0	warp	prtf024	4,2,moc_fild01,56,380
 prt_fild09,14,124,0	warp	prtf17	2,6,prt_fild10,336,126
 prt_fild09,14,139,0	warp	prtf17-1	2,8,prt_fild10,336,126

+ 9 - 1
npc/re/warps/other/jobquests.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= Athena (1.0)
 //===== Current Version: =====================================
-//= 2.2
+//= 2.3
 //===== Compatible With: =====================================
 //= Any Athena Version; RO Version Ep4+
 //===== Description: =========================================
@@ -11,8 +11,16 @@
 //===== Additional Comments: =================================
 //= 2.1 Added one Shadow Chaser job warp. [Euphy]
 //= 2.2 Moved common warps to base path, added warps. [Euphy]
+//= 2.3 Added exit warps (job_exit) for 2nd class quests. [Euphy]
 //============================================================
 
+//==============================================================================
+//Exit Warps
+//==============================================================================
+job_knt,89,98,0	warp	knt_out	1,1,prt_in,77,99
+job_wiz,49,154,0	warp	wiz_out	1,1,gef_tower,108,29
+job_sage,55,154,0	warp	sage_out	1,1,yuno_in03,169,171
+
 //==============================================================================
 //Arch Bishop
 //==============================================================================

+ 0 - 1
npc/scripts_athena.conf

@@ -180,7 +180,6 @@ npc: npc/other/monster_race.txt
 npc: npc/other/poring_war.txt
 npc: npc/other/powernpc.txt
 npc: npc/other/pvp.txt
-npc: npc/other/resetskill.txt
 npc: npc/other/sealstatus.txt
 // - Turbo Track Arena
 npc: npc/other/turbo_track.txt

+ 3 - 4
src/map/script.c

@@ -11094,13 +11094,12 @@ static int buildin_maprespawnguildid_sub_mob(struct block_list *bl,va_list ap)
 }
 
 /*
- * Function to kickout guildies out of a map. (Put them back into thei save point)
- * (mob are being killed)
+ * Function to kick guild members out of a map and to their save points.
  * m : mapid
  * g_id : owner guild id
  * flag & 1 : Warp out owners
- * flag & 2 : Warp out outsider
- * flag & 4 : reserved for mob
+ * flag & 2 : Warp out outsiders
+ * flag & 4 : reserved for mobs
  * */
 BUILDIN_FUNC(maprespawnguildid)
 {