Browse Source

Official Random Coordinates for Savepoint (#1756)

* Added parameters for `savepoint are range for `x` and `y` for random savepoint coordinates.
* Added documentation for new savepoint params. Credits to @aleos89
* Updated savepoint on script to follow official behaviour (random save in 3x3). All credits to @Atemo
Cydh Ramdh 8 years ago
parent
commit
2896d894d1

+ 7 - 2
doc/script_commands.txt

@@ -3968,15 +3968,20 @@ normally translate to random coordinates.
 
 
 ---------------------------------------
 ---------------------------------------
 
 
-*savepoint "<map name>",<x>,<y>{,<char_id>};
-*save "<map name>",<x>,<y>{,<char_id>};
+*savepoint "<map name>",<x>,<y>{,{<range x>,<range y>,}<char_id>};
+*save "<map name>",<x>,<y>{,{<range x>,<range y>,}<char_id>};
 
 
 These commands save where the invoking character will return to upon clicking
 These commands save where the invoking character will return to upon clicking
 "Return to Save Point", after death and in some other cases. The two versions are 
 "Return to Save Point", after death and in some other cases. The two versions are 
 equivalent. They ignore any and all mapflags, and can make a character respawn where
 equivalent. They ignore any and all mapflags, and can make a character respawn where
 no teleportation is otherwise possible.
 no teleportation is otherwise possible.
 
 
+The <range x> and <range y> optional values allow for a randomization with the
+player's save point. The values will randomly add or subtract from the given <x>
+and <y> coordinates.
+
     savepoint "place",350,75;
     savepoint "place",350,75;
+	savepoint "place",350,75,2,2; // Randomly save the character between 348,73 and 352,77
 
 
 ---------------------------------------
 ---------------------------------------
 
 

+ 1 - 1
npc/cities/einbroch.txt

@@ -817,7 +817,7 @@ ein_in01,206,224,3	script	Hotel Employee#ein	855,{
 			mes "Thank you, and please";
 			mes "Thank you, and please";
 			mes "come again.";
 			mes "come again.";
 			close2;
 			close2;
-			savepoint "ein_in01",200,224;
+			savepoint "ein_in01",200,224,1,1;
 			end;
 			end;
 		case 2:
 		case 2:
 			if (Zeny > 4999) {
 			if (Zeny > 4999) {

+ 7 - 7
npc/jobs/2-1/assassin.txt

@@ -99,7 +99,7 @@ in_moc_16,19,33,1	script	Guildsman#asn	55,{
 		set ASSIN_Q,0;
 		set ASSIN_Q,0;
 		set ASSIN_Q2,0;
 		set ASSIN_Q2,0;
 		set ASSIN_Q3,0;
 		set ASSIN_Q3,0;
-		savepoint "in_moc_16",18,14;
+		savepoint "in_moc_16",18,14,1,1;
 		warp "in_moc_16",18,14;
 		warp "in_moc_16",18,14;
 		end;
 		end;
 	}
 	}
@@ -1460,7 +1460,7 @@ OnTouch_:
 	else
 	else
 		set ASSIN_Q,4;
 		set ASSIN_Q,4;
 	warp "in_moc_16",87,102;
 	warp "in_moc_16",87,102;
-	savepoint "in_moc_16",16,13;
+	savepoint "in_moc_16",16,13,1,1;
 	end;
 	end;
 
 
 OnEnable:
 OnEnable:
@@ -1528,7 +1528,7 @@ OnTouch_:
 			set ASSIN_Q2,0;
 			set ASSIN_Q2,0;
 			set ASSIN_Q3,0;
 			set ASSIN_Q3,0;
 			changequest 8004,8000;
 			changequest 8004,8000;
-			savepoint "in_moc_16",18,14;
+			savepoint "in_moc_16",18,14,1,1;
 			warp "in_moc_16",18,14;
 			warp "in_moc_16",18,14;
 			donpcevent "Standby Room#ASNTEST::OnStart";
 			donpcevent "Standby Room#ASNTEST::OnStart";
 			end;
 			end;
@@ -1610,7 +1610,7 @@ OnTouch_:
 	}
 	}
 	else {
 	else {
 		mapannounce "in_moc_16",strcharinfo(0)+" has entered 'Guildmaster's room.'",bc_map;
 		mapannounce "in_moc_16",strcharinfo(0)+" has entered 'Guildmaster's room.'",bc_map;
-		savepoint "in_moc_16",181,183;
+		savepoint "in_moc_16",181,183,1,1;
 		donpcevent "Guildmaster#ASN1::OnCast";
 		donpcevent "Guildmaster#ASN1::OnCast";
 		warp "in_moc_16",167,113;
 		warp "in_moc_16",167,113;
 		end;
 		end;
@@ -1619,7 +1619,7 @@ OnTouch_:
 
 
 in_moc_16,167,110,0	script	Guildmaster#ASN1	-1,3,1,{
 in_moc_16,167,110,0	script	Guildmaster#ASN1	-1,3,1,{
 OnTouch_:
 OnTouch_:
-	savepoint "in_moc_16",167,110;
+	savepoint "in_moc_16",167,110,1,1;
 	mes "[Guildmaster]";
 	mes "[Guildmaster]";
 	mes "Welcome. ";
 	mes "Welcome. ";
 	mes "This place is called the 'Guildmaster's room,' the deepest place in the Assassin guild.";
 	mes "This place is called the 'Guildmaster's room,' the deepest place in the Assassin guild.";
@@ -1641,7 +1641,7 @@ OnCast:
 in_moc_16,149,80,4	script	Guildmaster#ASN2	106,1,1,{
 in_moc_16,149,80,4	script	Guildmaster#ASN2	106,1,1,{
 	end;
 	end;
 OnTouch_:
 OnTouch_:
-	savepoint "morocc",100,100;
+	savepoint "morocc",100,100,1,1;
 	if (ASSIN_Q == 7 && BaseJob == Job_Thief) {
 	if (ASSIN_Q == 7 && BaseJob == Job_Thief) {
 		set ASSIN_Q,8;
 		set ASSIN_Q,8;
 		mes "[Guildmaster]";
 		mes "[Guildmaster]";
@@ -2128,7 +2128,7 @@ OnTouch_:
 		next;
 		next;
 		mes "[Guildmaster]";
 		mes "[Guildmaster]";
 		mes "You, " + strcharinfo(0) + ", have chosen to live as an Assassin. May you learn our ways and be an honorable example to others.";
 		mes "You, " + strcharinfo(0) + ", have chosen to live as an Assassin. May you learn our ways and be an honorable example to others.";
-		savepoint "morocc",100,100;
+		savepoint "morocc",100,100,1,1;
 		getitem 1008,1; //Frozen_Heart
 		getitem 1008,1; //Frozen_Heart
 		changequest 8006,8007;
 		changequest 8006,8007;
 		next;
 		next;

+ 6 - 6
npc/jobs/2-1/hunter.txt

@@ -743,7 +743,7 @@ payon_in03,131,7,3	script	Hunter#htnGM	59,{
 		mes "Wow, you came back in one piece!";
 		mes "Wow, you came back in one piece!";
 		mes "I mean, good job. I'll give you the item which proves that you have passed the test.";
 		mes "I mean, good job. I'll give you the item which proves that you have passed the test.";
 		set HNTR_Q,17;
 		set HNTR_Q,17;
-		savepoint "payon",104,99;
+		savepoint "payon",104,99,1,1;
 		getitem 1007,1; //Penetration
 		getitem 1007,1; //Penetration
 		changequest 4012,4013;
 		changequest 4012,4013;
 		next;
 		next;
@@ -935,7 +935,7 @@ payon_in02,21,31,1	script	Hunter#htnGM2	59,{
 		mes "Wow. You're back in one piece!";
 		mes "Wow. You're back in one piece!";
 		mes "I mean, good job. Well then, I'll give you the item which serves as proof that you passed the test.";
 		mes "I mean, good job. Well then, I'll give you the item which serves as proof that you passed the test.";
 		set HNTR_Q,17;
 		set HNTR_Q,17;
-		savepoint "payon",104,99;
+		savepoint "payon",104,99,1,1;
 		getitem 1007,1; //Penetration
 		getitem 1007,1; //Penetration
 		next;
 		next;
 		mes "[Hunter Guildmaster]";
 		mes "[Hunter Guildmaster]";
@@ -985,7 +985,7 @@ OnTouch_:
 		next;
 		next;
 		mes "[Guide]";
 		mes "[Guide]";
 		mes "We will provide the arrows, so just make sure that you bring a bow. Well, then. Please enter when you are ready.";
 		mes "We will provide the arrows, so just make sure that you bring a bow. Well, then. Please enter when you are ready.";
-		savepoint "job_hunte",176,22;
+		savepoint "job_hunte",176,22,1,1;
 		close;
 		close;
 	}
 	}
 	else if (HNTR_Q > 12 && HNTR_Q < 16) {
 	else if (HNTR_Q > 12 && HNTR_Q < 16) {
@@ -1011,7 +1011,7 @@ OnTouch_:
 			// donpcevent "Waiting Room#hnt::OnStart";
 			// donpcevent "Waiting Room#hnt::OnStart";
 			close2;
 			close2;
 			set HNTR_Q,13;
 			set HNTR_Q,13;
-			savepoint "payon",104,99;
+			savepoint "payon",104,99,1,1;
 			warp "payon_in02",21,27;
 			warp "payon_in02",21,27;
 		}
 		}
 	}
 	}
@@ -1019,7 +1019,7 @@ OnTouch_:
 		mes "[Guide]";
 		mes "[Guide]";
 		mes "You shouldn't be here. How about finding the required job change item first?";
 		mes "You shouldn't be here. How about finding the required job change item first?";
 		close2;
 		close2;
-		savepoint "payon",104,99;
+		savepoint "payon",104,99,1,1;
 		warp "payon_in02",21,27;
 		warp "payon_in02",21,27;
 	}
 	}
 	end;
 	end;
@@ -1258,7 +1258,7 @@ OnTouch_:
 	donpcevent "Waiting Room#hnt::OnStart";
 	donpcevent "Waiting Room#hnt::OnStart";
 	set HNTR_Q,16;
 	set HNTR_Q,16;
 	changequest 4011,4012;
 	changequest 4011,4012;
-	savepoint "payon",104,99;
+	savepoint "payon",104,99,1,1;
 	if (rand(2))
 	if (rand(2))
 		warp "payon_in02",21,27;
 		warp "payon_in02",21,27;
 	else
 	else

+ 3 - 3
npc/jobs/2-1/priest.txt

@@ -1737,7 +1737,7 @@ function	script	F_FatherRub	{
 			mes "[Father Rubalkabara]";
 			mes "[Father Rubalkabara]";
 			mes "Well then, please head to your next destination for your pilgrimage. Be safe in your travels.";
 			mes "Well then, please head to your next destination for your pilgrimage. Be safe in your travels.";
 			close2;
 			close2;
-			savepoint "prt_fild03",361,255;
+			savepoint "prt_fild03",361,255,1,1;
 			set PRIEST_Q,2;
 			set PRIEST_Q,2;
 			end;
 			end;
 		}
 		}
@@ -1785,7 +1785,7 @@ function	script	F_MotherMart	{
 			mes "God for safety";
 			mes "God for safety";
 			mes "on your journey.";
 			mes "on your journey.";
 			close2;
 			close2;
-			savepoint "moc_fild07",35,355;
+			savepoint "moc_fild07",35,355,1,1;
 			set PRIEST_Q,3;
 			set PRIEST_Q,3;
 			end;
 			end;
 		}
 		}
@@ -1845,7 +1845,7 @@ function	script	F_FatherYos	{
 			mes "your trials is now";
 			mes "your trials is now";
 			mes "completed.";
 			mes "completed.";
 			close2;
 			close2;
-			savepoint "prt_fild00",206,230;
+			savepoint "prt_fild00",206,230,1,1;
 			set PRIEST_Q,4;
 			set PRIEST_Q,4;
 			end;
 			end;
 		}
 		}

+ 3 - 3
npc/jobs/2-1/wizard.txt

@@ -837,7 +837,7 @@ gef_tower,102,24,2	script	Gloomy Wizard	735,{
 			mes "Just consider yourself a glass cannon...because the monsters are going to break you into pieces. Hahahahahahahahaha~";
 			mes "Just consider yourself a glass cannon...because the monsters are going to break you into pieces. Hahahahahahahahaha~";
 			next;
 			next;
 			set WIZ_Q,6;
 			set WIZ_Q,6;
-			savepoint "geffen",120,107;
+			savepoint "geffen",120,107,1,1;
 			mes "[Raulel]";
 			mes "[Raulel]";
 			mes "Then, as you wish. I'll send you there right now.";
 			mes "Then, as you wish. I'll send you there right now.";
 			mes "Oh, if you see a white light at the end of a tunnel, that means your pathetic cause you failed! Hahahahahah~";
 			mes "Oh, if you see a white light at the end of a tunnel, that means your pathetic cause you failed! Hahahahahah~";
@@ -871,7 +871,7 @@ gef_tower,102,24,2	script	Gloomy Wizard	735,{
 		next;
 		next;
 		if (select("Continue testing.:I want to go back because I have butterflies in my stomach.") == 1) {
 		if (select("Continue testing.:I want to go back because I have butterflies in my stomach.") == 1) {
 			set WIZ_Q,6;
 			set WIZ_Q,6;
-			savepoint "geffen",120,107;
+			savepoint "geffen",120,107,1,1;
 			mes "[Raulel]";
 			mes "[Raulel]";
 			mes "You are indeed, very determined. Ok! Hahahahahaha~";
 			mes "You are indeed, very determined. Ok! Hahahahahaha~";
 			mes "*Cough* *cough* As you wish, we shall begin the final test!";
 			mes "*Cough* *cough* As you wish, we shall begin the final test!";
@@ -911,7 +911,7 @@ gef_tower,102,24,2	script	Gloomy Wizard	735,{
 			mes "*Cough* Cough* Do you want to take the test again? Or did you bring the ^3355FFWorn Out Scroll^000000?";
 			mes "*Cough* Cough* Do you want to take the test again? Or did you bring the ^3355FFWorn Out Scroll^000000?";
 			next;
 			next;
 			if (select("Continue the test.:Worn Out Scroll...") == 1) {
 			if (select("Continue the test.:Worn Out Scroll...") == 1) {
-				savepoint "geffen",120,107;
+				savepoint "geffen",120,107,1,1;
 				mes "[Raulel]";
 				mes "[Raulel]";
 				mes "Hahaha~ Ok, at least you have some spirit.";
 				mes "Hahaha~ Ok, at least you have some spirit.";
 				mes "I'll send you in again, try dying once more will yah? Hahahahahahahahaha~";
 				mes "I'll send you in again, try dying once more will yah? Hahahahahahahahaha~";

+ 1 - 1
npc/jobs/valkyrie.txt

@@ -391,7 +391,7 @@ S_WarpChar:
 	mes "[Teleporter]";
 	mes "[Teleporter]";
 	mes "Have a nice trip.";
 	mes "Have a nice trip.";
 	close2;
 	close2;
-	savepoint getarg(0),getarg(1),getarg(2);
+	savepoint getarg(0),getarg(1),getarg(2),1,1;
 	warp getarg(0),getarg(1),getarg(2);
 	warp getarg(0),getarg(1),getarg(2);
 	end;
 	end;
 }
 }

+ 1 - 1
npc/kafras/cool_event_corp.txt

@@ -39,7 +39,7 @@ function	script	F_CoolEventCorp	{
 		mes getarg(1)+".";
 		mes getarg(1)+".";
 		mes "Thank you for using the";
 		mes "Thank you for using the";
 		mes "Cool Event Corp. service~";
 		mes "Cool Event Corp. service~";
-		savepoint getarg(2),getarg(3),getarg(4);
+		savepoint getarg(2),getarg(3),getarg(4),1,1;
 		close2;
 		close2;
 		break;
 		break;
 	case 2:
 	case 2:

+ 42 - 42
npc/kafras/kafras.txt

@@ -43,7 +43,7 @@ aldeba_in,96,181,4	script	Kafra Service	113,{
 		mes "of the Kafra Corporation";
 		mes "of the Kafra Corporation";
 		mes "Headquarters. Thank you.";
 		mes "Headquarters. Thank you.";
 		next;
 		next;
-		savepoint "aldeba_in",96,179;
+		savepoint "aldeba_in",96,179,1,1;
 		mes "[Kafra Leilah]";
 		mes "[Kafra Leilah]";
 		mes "Please make use of";
 		mes "Please make use of";
 		mes "the Kafra Services that are";
 		mes "the Kafra Services that are";
@@ -121,7 +121,7 @@ aldebaran,143,119,4	script	Kafra Employee::kaf_aldebaran	113,{
 	mes "you with convenient services.";
 	mes "you with convenient services.";
 	mes "How may I be of assistance?";
 	mes "How may I be of assistance?";
 	callfunc "F_Kafra",5,0,1,20,600;
 	callfunc "F_Kafra",5,0,1,20,600;
-	savepoint "aldebaran",143,109;
+	savepoint "aldebaran",143,109,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Al De Baran";
 	callfunc "F_KafEnd",0,1,"in the city of Al De Baran";
 }
 }
 
 
@@ -136,7 +136,7 @@ geffen,120,62,0	script	Kafra Employee::kaf_geffen	115,{
 	mes "are always on your side.";
 	mes "are always on your side.";
 	mes "So how can I help you?";
 	mes "So how can I help you?";
 	callfunc "F_Kafra",5,0,0,30,750;
 	callfunc "F_Kafra",5,0,0,30,750;
-	savepoint "geffen",119,40;
+	savepoint "geffen",119,40,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Geffen";
 	callfunc "F_KafEnd",0,1,"in the city of Geffen";
 }
 }
 
 
@@ -151,7 +151,7 @@ geffen,203,123,2	script	Kafra Employee::geffen2	114,{
 	mes "with its excellent service. So";
 	mes "with its excellent service. So";
 	mes "what can I do for you today?";
 	mes "what can I do for you today?";
 	callfunc "F_Kafra",5,0,0,30,750;
 	callfunc "F_Kafra",5,0,0,30,750;
-	savepoint "geffen",200,124;
+	savepoint "geffen",200,124,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Geffen";
 	callfunc "F_KafEnd",0,1,"in the city of Geffen";
 }
 }
 
 
@@ -166,7 +166,7 @@ morocc,156,97,4	script	Kafra Employee::kaf_morocc	113,{
 	mes "you with convenient services.";
 	mes "you with convenient services.";
 	mes "How may I be of assistance?";
 	mes "How may I be of assistance?";
 	callfunc "F_Kafra",5,0,0,60,930;
 	callfunc "F_Kafra",5,0,0,60,930;
-	savepoint "morocc",156,46;
+	savepoint "morocc",156,46,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Morroc";
 	callfunc "F_KafEnd",0,1,"in the city of Morroc";
 }
 }
 
 
@@ -181,7 +181,7 @@ morocc,160,258,4	script	Kafra::kaf_morocc2	114,{
 	mes "with its excellent service. So";
 	mes "with its excellent service. So";
 	mes "what can I do for you today?";
 	mes "what can I do for you today?";
 	callfunc "F_Kafra",5,0,0,60,930;
 	callfunc "F_Kafra",5,0,0,60,930;
-	savepoint "morocc",157,272;
+	savepoint "morocc",157,272,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Morroc";
 	callfunc "F_KafEnd",0,1,"in the city of Morroc";
 }
 }
 
 
@@ -196,7 +196,7 @@ payon,181,104,4	script	Kafra Employee::kaf_payon	113,{
 	mes "you with convenient services.";
 	mes "you with convenient services.";
 	mes "How may I be of assistance?";
 	mes "How may I be of assistance?";
 	callfunc "F_Kafra",5,0,1,60,930;
 	callfunc "F_Kafra",5,0,1,60,930;
-	savepoint "payon",160,58;
+	savepoint "payon",160,58,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Payon";
 	callfunc "F_KafEnd",0,1,"in the city of Payon";
 }
 }
 
 
@@ -210,7 +210,7 @@ payon,175,226,4	script	Kafra Employee::kaf_payon2	116,{
 	mes "always on your side.";
 	mes "always on your side.";
 	mes "How may I assist you?";
 	mes "How may I assist you?";
 	callfunc "F_Kafra",5,0,1,60,930;
 	callfunc "F_Kafra",5,0,1,60,930;
-	savepoint "payon",257,242;
+	savepoint "payon",257,242,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Payon";
 	callfunc "F_KafEnd",0,1,"in the city of Payon";
 }
 }
 
 
@@ -224,7 +224,7 @@ pay_arche,55,123,0	script	Kafra Employee::kaf_payon3	4_F_KAFRA1,{
 	mes "are always on your side.";
 	mes "are always on your side.";
 	mes "How may I assist you?";
 	mes "How may I assist you?";
 	callfunc "F_Kafra",5,5,1,90,1200;
 	callfunc "F_Kafra",5,5,1,90,1200;
-	savepoint "pay_arche",49,144;
+	savepoint "pay_arche",49,144,1,1;
 	callfunc "F_KafEnd",0,1,"at the Payon Dungeon";
 	callfunc "F_KafEnd",0,1,"at the Payon Dungeon";
 }
 }
 
 
@@ -241,7 +241,7 @@ prontera,152,326,3	script	Kafra Employee::kaf_prontera	112,{
 	mes "you. So how can I be";
 	mes "you. So how can I be";
 	mes "of service today?";
 	mes "of service today?";
 	callfunc "F_Kafra",5,0,0,40,800;
 	callfunc "F_Kafra",5,0,0,40,800;
-	savepoint "prontera",157,327;
+	savepoint "prontera",157,327,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Prontera";
 	callfunc "F_KafEnd",0,1,"in the city of Prontera";
 }
 }
 
 
@@ -254,7 +254,7 @@ prontera,151,29,0	script	Kafra Employee::kaf_prontera2	115,{
 	mes "are always on your side.";
 	mes "are always on your side.";
 	mes "So how can I help you?";
 	mes "So how can I help you?";
 	callfunc "F_Kafra",5,0,0,40,800;
 	callfunc "F_Kafra",5,0,0,40,800;
-	savepoint "prontera",150,33;
+	savepoint "prontera",150,33,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Prontera";
 	callfunc "F_KafEnd",0,1,"in the city of Prontera";
 }
 }
 
 
@@ -267,7 +267,7 @@ prontera,29,207,6	script	Kafra Employee::kaf_prontera3	113,{
 	mes "you with convenient services.";
 	mes "you with convenient services.";
 	mes "How may I be of assistance?";
 	mes "How may I be of assistance?";
 	callfunc "F_Kafra",5,0,0,40,800;
 	callfunc "F_Kafra",5,0,0,40,800;
-	savepoint "prontera",33,208;
+	savepoint "prontera",33,208,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Prontera";
 	callfunc "F_KafEnd",0,1,"in the city of Prontera";
 }
 }
 
 
@@ -282,7 +282,7 @@ prontera,282,200,2	script	Kafra Employee::kaf_prontera4	114,{
 	mes "with its excellent service. So";
 	mes "with its excellent service. So";
 	mes "what can I do for you today?";
 	mes "what can I do for you today?";
 	callfunc "F_Kafra",5,0,0,40,800;
 	callfunc "F_Kafra",5,0,0,40,800;
-	savepoint "prontera",281,203;
+	savepoint "prontera",281,203,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Prontera";
 	callfunc "F_KafEnd",0,1,"in the city of Prontera";
 }
 }
 
 
@@ -296,7 +296,7 @@ prontera,146,89,6	script	Kafra Employee::kaf_prontera5	117,{
 	mes "are always on your side.";
 	mes "are always on your side.";
 	mes "How may I assist you?";
 	mes "How may I assist you?";
 	callfunc "F_Kafra",5,0,0,40,800;
 	callfunc "F_Kafra",5,0,0,40,800;
-	savepoint "prontera",116,73;
+	savepoint "prontera",116,73,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Prontera";
 	callfunc "F_KafEnd",0,1,"in the city of Prontera";
 }
 }
 
 
@@ -311,7 +311,7 @@ yuno,152,187,4	script	Kafra Employee::kaf_yuno	860,{
 	mes "you with convenient services.";
 	mes "you with convenient services.";
 	mes "How may I be of assistance?";
 	mes "How may I be of assistance?";
 	callfunc "F_Kafra",5,0,0,40,800;
 	callfunc "F_Kafra",5,0,0,40,800;
-	savepoint "yuno",158,125;
+	savepoint "yuno",158,125,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Juno";
 	callfunc "F_KafEnd",0,1,"in the city of Juno";
 }
 }
 
 
@@ -324,7 +324,7 @@ yuno,327,108,4	script	Kafra Employee::kaf_yuno2	860,{
 	mes "you with convenient services.";
 	mes "you with convenient services.";
 	mes "How may I be of assistance?";
 	mes "How may I be of assistance?";
 	callfunc "F_Kafra",5,0,0,40,800;
 	callfunc "F_Kafra",5,0,0,40,800;
-	savepoint "yuno",328,101;
+	savepoint "yuno",328,101,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Juno";
 	callfunc "F_KafEnd",0,1,"in the city of Juno";
 }
 }
 
 
@@ -337,7 +337,7 @@ yuno,277,221,4	script	Kafra Employee::kaf_yuno3	861,{
 	mes "you with convenient services.";
 	mes "you with convenient services.";
 	mes "How may I be of assistance?";
 	mes "How may I be of assistance?";
 	callfunc "F_Kafra",5,0,0,40,800;
 	callfunc "F_Kafra",5,0,0,40,800;
-	savepoint "yuno",274,229;
+	savepoint "yuno",274,229,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Juno";
 	callfunc "F_KafEnd",0,1,"in the city of Juno";
 }
 }
 
 
@@ -353,7 +353,7 @@ alberta,28,229,0	script	Kafra Employee::kaf_alberta	116,{
 	mes "always ready to serve you.";
 	mes "always ready to serve you.";
 	mes "How can I help you today?";
 	mes "How can I help you today?";
 	callfunc "F_Kafra",5,0,0,50,850;
 	callfunc "F_Kafra",5,0,0,50,850;
-	savepoint "alberta",31,231;
+	savepoint "alberta",31,231,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Alberta";
 	callfunc "F_KafEnd",0,1,"in the city of Alberta";
 }
 }
 
 
@@ -368,7 +368,7 @@ alberta,113,60,6	script	Kafra Employee::kaf_alberta2	112,{
 	mes "you. So how can I be";
 	mes "you. So how can I be";
 	mes "of service today?";
 	mes "of service today?";
 	callfunc "F_Kafra",5,0,0,50,850;
 	callfunc "F_Kafra",5,0,0,50,850;
-	savepoint "alberta",117,57;
+	savepoint "alberta",117,57,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Alberta";
 	callfunc "F_KafEnd",0,1,"in the city of Alberta";
 }
 }
 
 
@@ -384,7 +384,7 @@ comodo,195,150,4	script	Kafra Employee::kaf_comodo	721,{
 	mes "service is always";
 	mes "service is always";
 	mes "on your side~";
 	mes "on your side~";
 	callfunc "F_Kafra",5,0,1,80,1000;
 	callfunc "F_Kafra",5,0,1,80,1000;
-	savepoint "comodo",204,143;
+	savepoint "comodo",204,143,1,1;
 	callfunc "F_KafEnd",0,1,"in the town of Comodo";
 	callfunc "F_KafEnd",0,1,"in the town of Comodo";
 }
 }
 
 
@@ -398,7 +398,7 @@ cmd_fild07,136,134,4	script	Kafra Employee::kaf_cmd_fild07	721,{
 	mes "service is always";
 	mes "service is always";
 	mes "on your side~";
 	mes "on your side~";
 	callfunc "F_Kafra",5,0,1,80,1000;
 	callfunc "F_Kafra",5,0,1,80,1000;
-	savepoint "cmd_fild07",127,134;
+	savepoint "cmd_fild07",127,134,1,1;
 	callfunc "F_KafEnd",0,1,"in Pyros Lighthouse";
 	callfunc "F_KafEnd",0,1,"in Pyros Lighthouse";
 }
 }
 
 
@@ -415,9 +415,9 @@ cmd_fild07,136,134,4	script	Kafra Employee::kaf_cmd_fild07	721,{
 	mes "How may I assist you?";
 	mes "How may I assist you?";
 	callfunc "F_Kafra",5,0,1,40,820;
 	callfunc "F_Kafra",5,0,1,40,820;
 	if (checkre(0))
 	if (checkre(0))
-		savepoint strnpcinfo(4),129,97;
+		savepoint strnpcinfo(4),129,97,1,1;
 	else
 	else
-		savepoint "izlude",94,103;
+		savepoint "izlude",94,103,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Izlude";
 	callfunc "F_KafEnd",0,1,"in the city of Izlude";
 }
 }
 
 
@@ -426,7 +426,7 @@ cmd_fild07,136,134,4	script	Kafra Employee::kaf_cmd_fild07	721,{
 moscovia,223,191,3	script	Kafra Employee::kaf_mosk	114,{
 moscovia,223,191,3	script	Kafra Employee::kaf_mosk	114,{
 	cutin "kafra_04",2;
 	cutin "kafra_04",2;
 	callfunc "F_Kafra",0,3,0,80,700;
 	callfunc "F_Kafra",0,3,0,80,700;
-	savepoint "moscovia",221,194;;
+	savepoint "moscovia",221,194,1,1;;
 	callfunc "F_KafEnd",0,3,"in the city of Moscovia";
 	callfunc "F_KafEnd",0,3,"in the city of Moscovia";
 }
 }
 
 
@@ -441,7 +441,7 @@ amatsu,102,149,4	script	Kafra Employee::kaf_amatsu	116,{
 	mes "always ready to serve you.";
 	mes "always ready to serve you.";
 	mes "How can I help you today?";
 	mes "How can I help you today?";
 	callfunc "F_Kafra",5,3,1,50,700;
 	callfunc "F_Kafra",5,3,1,50,700;
-	savepoint "amatsu",116,94;
+	savepoint "amatsu",116,94,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Amatsu";
 	callfunc "F_KafEnd",0,1,"in the city of Amatsu";
 }
 }
 
 
@@ -456,7 +456,7 @@ ayothaya,212,169,5	script	Kafra Employee::kaf_ayothaya	116,{
 	mes "always ready to serve you.";
 	mes "always ready to serve you.";
 	mes "How can I help you today?";
 	mes "How can I help you today?";
 	callfunc "F_Kafra",5,3,1,50,700;
 	callfunc "F_Kafra",5,3,1,50,700;
-	savepoint "ayothaya",149,69;
+	savepoint "ayothaya",149,69,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Ayotaya";
 	callfunc "F_KafEnd",0,1,"in the city of Ayotaya";
 }
 }
 
 
@@ -470,7 +470,7 @@ einbech,181,132,5	script	Kafra Employee#ein3::kaf_einbech	860,{
 	mes "are always on your side.";
 	mes "are always on your side.";
 	mes "So how can I help you?";
 	mes "So how can I help you?";
 	callfunc "F_Kafra",5,4,1,40,850;
 	callfunc "F_Kafra",5,4,1,40,850;
-	savepoint "einbech",182,124;
+	savepoint "einbech",182,124,1,1;
 	callfunc "F_KafEnd",0,1,"in the town of Einbech";
 	callfunc "F_KafEnd",0,1,"in the town of Einbech";
 }
 }
 
 
@@ -485,7 +485,7 @@ einbroch,242,205,5	script	Kafra Employee#ein2::kaf_einbroch	860,{
 	mes "always ready to serve you.";
 	mes "always ready to serve you.";
 	mes "How can I help you today?";
 	mes "How can I help you today?";
 	callfunc "F_Kafra",5,4,1,50,800;
 	callfunc "F_Kafra",5,4,1,50,800;
-	savepoint "einbroch",238,198;
+	savepoint "einbroch",238,198,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Einbroch";
 	callfunc "F_KafEnd",0,1,"in the city of Einbroch";
 }
 }
 
 
@@ -498,7 +498,7 @@ einbroch,59,203,6	script	Kafra Employee#ein1::kaf_einbroch2	861,{
 	mes "are always on your side.";
 	mes "are always on your side.";
 	mes "How may I assist you?";
 	mes "How may I assist you?";
 	callfunc "F_Kafra",5,4,1,50,800;
 	callfunc "F_Kafra",5,4,1,50,800;
-	savepoint "einbroch",240,197;
+	savepoint "einbroch",240,197,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Einbroch";
 	callfunc "F_KafEnd",0,1,"in the city of Einbroch";
 }
 }
 
 
@@ -513,7 +513,7 @@ gonryun,159,122,4	script	Kafra Employee::kaf_gonryun	116,{
 	mes "always ready to serve you.";
 	mes "always ready to serve you.";
 	mes "How can I help you today?";
 	mes "How can I help you today?";
 	callfunc "F_Kafra",5,3,1,50,700;
 	callfunc "F_Kafra",5,3,1,50,700;
-	savepoint "gonryun",160,62;
+	savepoint "gonryun",160,62,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Kunlun";
 	callfunc "F_KafEnd",0,1,"in the city of Kunlun";
 }
 }
 
 
@@ -528,7 +528,7 @@ lighthalzen,164,100,4	script	Kafra Employee::kaf_lighthalzen	860,{
 	mes "are always on your side.";
 	mes "are always on your side.";
 	mes "How may I assist you?";
 	mes "How may I assist you?";
 	callfunc "F_Kafra",5,4,1,40,800;
 	callfunc "F_Kafra",5,4,1,40,800;
-	savepoint "lighthalzen",158,94;
+	savepoint "lighthalzen",158,94,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Lighthalzen";
 	callfunc "F_KafEnd",0,1,"in the city of Lighthalzen";
 }
 }
 
 
@@ -540,7 +540,7 @@ lighthalzen,191,320,4	script	Kafra Employee::kaf_lighthalzen2	861,{
 	mes "are always on your side.";
 	mes "are always on your side.";
 	mes "So how can I help you?";
 	mes "So how can I help you?";
 	callfunc "F_Kafra",5,4,1,40,800;
 	callfunc "F_Kafra",5,4,1,40,800;
-	savepoint "lighthalzen",194,313;
+	savepoint "lighthalzen",194,313,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Lighthalzen";
 	callfunc "F_KafEnd",0,1,"in the city of Lighthalzen";
 }
 }
 
 
@@ -552,7 +552,7 @@ lhz_in02,237,284,4	script	Kafra Employee::kaf_lhz_in02	861,{
 	mes "are always on your side.";
 	mes "are always on your side.";
 	mes "So how can I help you?";
 	mes "So how can I help you?";
 	callfunc "F_Kafra",5,4,1,40,800;
 	callfunc "F_Kafra",5,4,1,40,800;
-	savepoint "lhz_in02",278,215;
+	savepoint "lhz_in02",278,215,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Lighthalzen";
 	callfunc "F_KafEnd",0,1,"in the city of Lighthalzen";
 }
 }
 
 
@@ -567,7 +567,7 @@ louyang,210,104,5	script	Kafra Employee::kaf_louyang	4_F_KAFRA2,{
 	mes "always ready to serve you.";
 	mes "always ready to serve you.";
 	mes "How can I help you today?";
 	mes "How can I help you today?";
 	callfunc "F_Kafra",5,3,1,50,700;
 	callfunc "F_Kafra",5,3,1,50,700;
-	savepoint "louyang",217,92;
+	savepoint "louyang",217,92,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Louyang";
 	callfunc "F_KafEnd",0,1,"in the city of Louyang";
 }
 }
 
 
@@ -583,7 +583,7 @@ umbala,87,160,4	script	Kafra Employee::kaf_umbala	721,{
 	mes "service is always";
 	mes "service is always";
 	mes "on your side~";
 	mes "on your side~";
 	callfunc "F_Kafra",5,0,1,80,0;
 	callfunc "F_Kafra",5,0,1,80,0;
-	savepoint "umbala",126,131;
+	savepoint "umbala",126,131,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Umbala";
 	callfunc "F_KafEnd",0,1,"in the city of Umbala";
 }
 }
 
 
@@ -591,7 +591,7 @@ umbala,87,160,4	script	Kafra Employee::kaf_umbala	721,{
 //============================================================
 //============================================================
 niflheim,202,180,3	script	Kafra Employee::kaf_niflheim	791,{
 niflheim,202,180,3	script	Kafra Employee::kaf_niflheim	791,{
 	callfunc "F_Kafra",1,2,1,150,0;
 	callfunc "F_Kafra",1,2,1,150,0;
-	savepoint "niflheim",192,182;
+	savepoint "niflheim",192,182,1,1;
 	callfunc "F_KafEnd",1,1,"in the city of Niflheim";
 	callfunc "F_KafEnd",1,1,"in the city of Niflheim";
 }
 }
 
 
@@ -612,7 +612,7 @@ izlu2dun,106,58,8	script	Kafra Employee::kaf_izlu2dun	4_F_KAFRA2,{
 	mes "always ready to serve you.";
 	mes "always ready to serve you.";
 	mes "How can I help you today?";
 	mes "How can I help you today?";
 	callfunc "F_Kafra",5,2,1,120,1200;
 	callfunc "F_Kafra",5,2,1,120,1200;
-	savepoint "izlu2dun",87,170;
+	savepoint "izlu2dun",87,170,1,1;
 	callfunc "F_KafEnd",0,1,"at Byalan Island";
 	callfunc "F_KafEnd",0,1,"at Byalan Island";
 }
 }
 
 
@@ -627,7 +627,7 @@ prt_fild05,290,224,3	script	Kafra Employee::prt_fild05	114,{
 	mes "with its excellent service. So";
 	mes "with its excellent service. So";
 	mes "what can I do for you today?";
 	mes "what can I do for you today?";
 	callfunc "F_Kafra",5,1,1,40,0;
 	callfunc "F_Kafra",5,1,1,40,0;
-	savepoint "prt_fild05",274,243;
+	savepoint "prt_fild05",274,243,1,1;
 	callfunc "F_KafEnd",0,1, "at the Prontera Culverts";
 	callfunc "F_KafEnd",0,1, "at the Prontera Culverts";
 }
 }
 
 
@@ -641,7 +641,7 @@ mjolnir_02,83,362,4	script	Kafra Employee::kaf_mjolnir_02	116,{
 	mes "always ready to serve you.";
 	mes "always ready to serve you.";
 	mes "How can I help you today?";
 	mes "How can I help you today?";
 	callfunc "F_Kafra",5,6,1,100,0;
 	callfunc "F_Kafra",5,6,1,100,0;
-	savepoint "mjolnir_02",98,352;
+	savepoint "mjolnir_02",98,352,1,1;
 	callfunc "F_KafEnd",0,1,"at Mjolnir Dead Pit";
 	callfunc "F_KafEnd",0,1,"at Mjolnir Dead Pit";
 }
 }
 
 
@@ -656,7 +656,7 @@ moc_ruins,59,157,5	script	Kafra Employee::moc_ruins	114,{
 	mes "with its excellent service. So";
 	mes "with its excellent service. So";
 	mes "what can I do for you today?";
 	mes "what can I do for you today?";
 	callfunc "F_Kafra",5,2,1,90,1200;
 	callfunc "F_Kafra",5,2,1,90,1200;
-	savepoint "moc_ruins",41,141;
+	savepoint "moc_ruins",41,141,1,1;
 	callfunc "F_KafEnd",0,1," at the Pyramids";
 	callfunc "F_KafEnd",0,1," at the Pyramids";
 }
 }
 
 
@@ -670,7 +670,7 @@ gef_fild10,73,340,5	script	Kafra Employee::kaf_gef_fild10	116,{
 	mes "always ready to serve you.";
 	mes "always ready to serve you.";
 	mes "How can I help you today?";
 	mes "How can I help you today?";
 	callfunc "F_Kafra",5,6,1,130,0;
 	callfunc "F_Kafra",5,6,1,130,0;
-	savepoint "gef_fild10",54,326;
+	savepoint "gef_fild10",54,326,1,1;
 	callfunc "F_KafEnd",0,1,"at the Orc Dungeon";
 	callfunc "F_KafEnd",0,1,"at the Orc Dungeon";
 }
 }
 
 
@@ -684,6 +684,6 @@ alb2trea,59,69,5	script	Kafra Employee::kaf_alb2trea	117,{
 	mes "are always on your side.";
 	mes "are always on your side.";
 	mes "How may I assist you?";
 	mes "How may I assist you?";
 	callfunc "F_Kafra",5,2,1,50,0;
 	callfunc "F_Kafra",5,2,1,50,0;
-	savepoint "alb2trea",92,64;
+	savepoint "alb2trea",92,64,1,1;
 	callfunc "F_KafEnd",0,1,0,"at Sunken Ship";
 	callfunc "F_KafEnd",0,1,0,"at Sunken Ship";
 }
 }

+ 3 - 3
npc/merchants/inn.txt

@@ -124,7 +124,7 @@ lhz_in02,230,284,4	script	Hotel Employee#01	86,{
 	next;
 	next;
 	switch(select("Save Point:Rest - 5,000 zeny:Cancel")) {
 	switch(select("Save Point:Rest - 5,000 zeny:Cancel")) {
 	case 1:
 	case 1:
-		savepoint "lhz_in02",209,275;
+		savepoint "lhz_in02",209,275,1,1;
 		mes "[Hotel Employee]";
 		mes "[Hotel Employee]";
 		mes "Thank you, your";
 		mes "Thank you, your";
 		mes "Respawn Point has";
 		mes "Respawn Point has";
@@ -179,7 +179,7 @@ ve_in,157,219,5	script	Inn Master#Receptionist	709,{
 		mes "Your Respawn Point";
 		mes "Your Respawn Point";
 		mes "has been saved in Veins.";
 		mes "has been saved in Veins.";
 		mes "Enjoy your stay in town~";
 		mes "Enjoy your stay in town~";
-		savepoint "ve_in",157,209;
+		savepoint "ve_in",157,209,1,1;
 		close;
 		close;
 	case 2:
 	case 2:
 		mes "[Inn Master]";
 		mes "[Inn Master]";
@@ -219,7 +219,7 @@ function	script	F_InnMaid	{
 		mes "has been saved.";
 		mes "has been saved.";
 		mes "Thank you,";
 		mes "Thank you,";
 		mes "please come again.";
 		mes "please come again.";
-		savepoint getarg(2),getarg(3),getarg(4);
+		savepoint getarg(2),getarg(3),getarg(4),1,1;
 		close;
 		close;
 	case 2:
 	case 2:
 		mes .@npc_name$;
 		mes .@npc_name$;

+ 2 - 2
npc/other/poring_war.txt

@@ -292,7 +292,7 @@ poring_w01,96,97,3	script	Sweet Devi#wop	738,{
 		mes "I'll send you back to your savepoint.";
 		mes "I'll send you back to your savepoint.";
 		close2;
 		close2;
 		if (WoP_SaveMap$ != "") {
 		if (WoP_SaveMap$ != "") {
-			savepoint WoP_SaveMap$,WoP_SaveMap_X,WoP_SaveMap_Y;
+			savepoint WoP_SaveMap$,WoP_SaveMap_X,WoP_SaveMap_Y,1,1;
 			set WoP_SaveMap$,"";
 			set WoP_SaveMap$,"";
 			set WoP_SaveMap_X,0;
 			set WoP_SaveMap_X,0;
 			set WoP_SaveMap_Y,0;
 			set WoP_SaveMap_Y,0;
@@ -305,7 +305,7 @@ OnPCLogoutEvent:
 	getmapxy .@map$,.@x,.@y,UNITTYPE_PC;
 	getmapxy .@map$,.@x,.@y,UNITTYPE_PC;
 	if (.@map$ == "poring_w02") {
 	if (.@map$ == "poring_w02") {
 		if (WoP_SaveMap$ != "") {
 		if (WoP_SaveMap$ != "") {
-			savepoint WoP_SaveMap$,WoP_SaveMap_X,WoP_SaveMap_Y;
+			savepoint WoP_SaveMap$,WoP_SaveMap_X,WoP_SaveMap_Y,1,1;
 			set WoP_SaveMap$,"";
 			set WoP_SaveMap$,"";
 			set WoP_SaveMap_X,0;
 			set WoP_SaveMap_X,0;
 			set WoP_SaveMap_Y,0;
 			set WoP_SaveMap_Y,0;

+ 5 - 5
npc/other/pvp.txt

@@ -148,11 +148,11 @@
 		mes "Position successfully saved...";
 		mes "Position successfully saved...";
 		mes "Thank you very much!";
 		mes "Thank you very much!";
 		mes "We will see you again soon.";
 		mes "We will see you again soon.";
-		if(strnpcinfo(4) == "morocc_in") { savepoint "morocc_in",141,139; }
-		if(strnpcinfo(4) == "alberta_in") { savepoint "alberta_in",22,148; }
-		if(strnpcinfo(4) == "prt_in") { savepoint "prt_in",54,137; }
-		if(strnpcinfo(4) == "geffen_in") { savepoint "geffen_in",70,59; }
-		if(strnpcinfo(4) == "payon_in01") { savepoint "payon_in01",142,46; }
+		if(strnpcinfo(4) == "morocc_in") { savepoint "morocc_in",141,139,1,1; }
+		if(strnpcinfo(4) == "alberta_in") { savepoint "alberta_in",22,148,1,1; }
+		if(strnpcinfo(4) == "prt_in") { savepoint "prt_in",54,137,1,1; }
+		if(strnpcinfo(4) == "geffen_in") { savepoint "geffen_in",70,59,1,1; }
+		if(strnpcinfo(4) == "payon_in01") { savepoint "payon_in01",142,46,1,1; }
 		break;
 		break;
 	case 5:
 	case 5:
 		mes "[PVP Narrator]";
 		mes "[PVP Narrator]";

+ 1 - 1
npc/other/turbo_track.txt

@@ -3654,7 +3654,7 @@ turbo_room,130,92,3	script	Kafra Staff#tt	115,{
 	callfunc "F_Kafra",5,8,1,40,0;
 	callfunc "F_Kafra",5,8,1,40,0;
 
 
 	M_Save:
 	M_Save:
-		savepoint "aldebaran",168,112;
+		savepoint "aldebaran",168,112,1,1;
 		callfunc "F_KafEnd",0,1,"in Al De Baran";
 		callfunc "F_KafEnd",0,1,"in Al De Baran";
 
 
 }
 }

+ 3 - 3
npc/pre-re/jobs/1-1/acolyte.txt

@@ -279,7 +279,7 @@ prt_fild03,365,255,2	script	Ascetic#aco	89,{
 				mes "[Father Rubalkabara]";
 				mes "[Father Rubalkabara]";
 				mes "Farewell.";
 				mes "Farewell.";
 				close2;
 				close2;
-				savepoint "prt_fild03",361,255;
+				savepoint "prt_fild03",361,255,1,1;
 				set job_acolyte_q,6;
 				set job_acolyte_q,6;
 				end;
 				end;
 			}
 			}
@@ -347,7 +347,7 @@ moc_fild07,41,355,4	script	Ascetic#2aco	95,{
 				mes "[Mother Mathilda]";
 				mes "[Mother Mathilda]";
 				mes "Please return to the Prontera Sanctuary and speak to the Priest in charge.";
 				mes "Please return to the Prontera Sanctuary and speak to the Priest in charge.";
 				close2;
 				close2;
-				savepoint "moc_fild07",35,355;
+				savepoint "moc_fild07",35,355,1,1;
 				set job_acolyte_q,7;
 				set job_acolyte_q,7;
 				end;
 				end;
 			}
 			}
@@ -424,7 +424,7 @@ prt_fild00,208,218,6	script	Ascetic#3aco	98,{
 				mes "[Father Yosuke]";
 				mes "[Father Yosuke]";
 				mes "Now go back to the Santuary and finish becoming an Acolyte, kid.";
 				mes "Now go back to the Santuary and finish becoming an Acolyte, kid.";
 				close2;
 				close2;
-				savepoint "prt_fild00",206,230;
+				savepoint "prt_fild00",206,230,1,1;
 				set job_acolyte_q,8;
 				set job_acolyte_q,8;
 				end;
 				end;
 			}
 			}

+ 2 - 2
npc/pre-re/jobs/1-1/swordman.txt

@@ -110,7 +110,7 @@ izlude_in,74,172,4	script	Swordman#swd_1	119,{
 			mes "So you wish to become a proud Swordman? By all means, please sign up!";
 			mes "So you wish to become a proud Swordman? By all means, please sign up!";
 			next;
 			next;
 			if (select("Sign up.:Cancel.") == 1) {
 			if (select("Sign up.:Cancel.") == 1) {
-				savepoint "izlude_in",65,165;
+				savepoint "izlude_in",65,165,1,1;
 				set job_sword_q,1;
 				set job_sword_q,1;
 				setquest 1014;
 				setquest 1014;
 				mes "[Swordman]";
 				mes "[Swordman]";
@@ -229,7 +229,7 @@ izlude_in,62,170,6	script	Swordman#swd_2	85,{
 		close;
 		close;
 	}
 	}
 	else {
 	else {
-		savepoint "izlude_in",65,165;
+		savepoint "izlude_in",65,165,1,1;
 		warp "izlude_in",39,170;
 		warp "izlude_in",39,170;
 		end;
 		end;
 	}
 	}

+ 33 - 33
npc/pre-re/jobs/novice/novice.txt

@@ -134,27 +134,27 @@ new_1-2,100,29,4	script	Receptionist#nv1	86,{
 			set nov_3_merchant,0;
 			set nov_3_merchant,0;
 			switch(rand(6)) {
 			switch(rand(6)) {
 			case 0:
 			case 0:
-				savepoint "prontera",273,354;
+				savepoint "prontera",273,354,1,1;
 				warp "prontera",273,354;
 				warp "prontera",273,354;
 				break;
 				break;
 			case 1:
 			case 1:
-				savepoint "morocc",160,94;
+				savepoint "morocc",160,94,1,1;
 				warp "morocc",160,94;
 				warp "morocc",160,94;
 				break;
 				break;
 			case 2:
 			case 2:
-				savepoint "geffen",120,100;
+				savepoint "geffen",120,100,1,1;
 				warp "geffen",120,100;
 				warp "geffen",120,100;
 				break;
 				break;
 			case 3:
 			case 3:
-				savepoint "payon",70,100;
+				savepoint "payon",70,100,1,1;
 				warp "payon",70,100;
 				warp "payon",70,100;
 				break;
 				break;
 			case 4:
 			case 4:
-				savepoint "alberta",116,57;
+				savepoint "alberta",116,57,1,1;
 				warp "alberta",116,57;
 				warp "alberta",116,57;
 				break;
 				break;
 			case 5:
 			case 5:
-				savepoint "izlude",94,103;
+				savepoint "izlude",94,103,1,1;
 				warp "izlude",94,103;
 				warp "izlude",94,103;
 			}
 			}
 			end;
 			end;
@@ -1367,7 +1367,7 @@ new_1-2,118,108,3	script	Kafra Employee#nv1	117,{
 			set nov_3_magician,0;
 			set nov_3_magician,0;
 			set nov_3_acolyte,0;
 			set nov_3_acolyte,0;
 			set nov_3_merchant,0;
 			set nov_3_merchant,0;
-			savepoint .@mapn$,.@saveX,.@saveY;
+			savepoint .@mapn$,.@saveX,.@saveY,1,1;
 			warp .@mapn$,.@warpX,.@warpY;
 			warp .@mapn$,.@warpX,.@warpY;
 			end;
 			end;
 		}
 		}
@@ -1430,7 +1430,7 @@ new_1-2,118,108,3	script	Kafra Employee#nv1	117,{
 			set nov_3_magician,0;
 			set nov_3_magician,0;
 			set nov_3_acolyte,0;
 			set nov_3_acolyte,0;
 			set nov_3_merchant,0;
 			set nov_3_merchant,0;
-			savepoint .@mapn$,.@saveX,.@saveY;
+			savepoint .@mapn$,.@saveX,.@saveY,1,1;
 			warp .@mapn$,.@warpX,.@warpY;
 			warp .@mapn$,.@warpX,.@warpY;
 			end;
 			end;
 		}
 		}
@@ -2539,7 +2539,7 @@ new_1-2,38,182,3	script	Entrance Guard#nv	92,{
 			getitem 611,2; //Spectacles
 			getitem 611,2; //Spectacles
 			getitem 569,300; //Novice_Potion
 			getitem 569,300; //Novice_Potion
 			close2;
 			close2;
-			savepoint "new_1-2",23,188;
+			savepoint "new_1-2",23,188,1,1;
 			warp "new_1-3",96,21;
 			warp "new_1-3",96,21;
 			end;
 			end;
 		case 2:
 		case 2:
@@ -3372,7 +3372,7 @@ new_1-4,100,29,1	script	Hanson#nv	46,{
 					set nov_3_magician,0;
 					set nov_3_magician,0;
 					set nov_3_acolyte,0;
 					set nov_3_acolyte,0;
 					set nov_3_merchant,0;
 					set nov_3_merchant,0;
-					savepoint "izlude",93,104;
+					savepoint "izlude",93,104,1,1;
 					warp "izlude_in",74,167;
 					warp "izlude_in",74,167;
 					end;
 					end;
 				case 2:
 				case 2:
@@ -3444,7 +3444,7 @@ new_1-4,100,29,1	script	Hanson#nv	46,{
 					set nov_3_magician,0;
 					set nov_3_magician,0;
 					set nov_3_acolyte,0;
 					set nov_3_acolyte,0;
 					set nov_3_merchant,0;
 					set nov_3_merchant,0;
-					savepoint "geffen",119,37;
+					savepoint "geffen",119,37,1,1;
 					warp "geffen_in",163,98;
 					warp "geffen_in",163,98;
 					end;
 					end;
 				case 2:
 				case 2:
@@ -3515,7 +3515,7 @@ new_1-4,100,29,1	script	Hanson#nv	46,{
 					set nov_3_magician,0;
 					set nov_3_magician,0;
 					set nov_3_acolyte,0;
 					set nov_3_acolyte,0;
 					set nov_3_merchant,0;
 					set nov_3_merchant,0;
-					savepoint "alberta",30,232;
+					savepoint "alberta",30,232,1,1;
 					warp "alberta_in",62,44;
 					warp "alberta_in",62,44;
 					end;
 					end;
 				case 2:
 				case 2:
@@ -3583,7 +3583,7 @@ new_1-4,100,29,1	script	Hanson#nv	46,{
 					mes "^A62A2A" + strcharinfo(0) + "^000000";
 					mes "^A62A2A" + strcharinfo(0) + "^000000";
 					mes "and farewell.";
 					mes "and farewell.";
 					close2;
 					close2;
-					savepoint "morocc",150,99;
+					savepoint "morocc",150,99,1,1;
 					warp "moc_ruins",155,44;
 					warp "moc_ruins",155,44;
 					end;
 					end;
 				case 2:
 				case 2:
@@ -3652,7 +3652,7 @@ new_1-4,100,29,1	script	Hanson#nv	46,{
 					set nov_3_magician,0;
 					set nov_3_magician,0;
 					set nov_3_acolyte,0;
 					set nov_3_acolyte,0;
 					set nov_3_merchant,0;
 					set nov_3_merchant,0;
-					savepoint "payon",70,100;
+					savepoint "payon",70,100,1,1;
 					warp "payon_in02",64,65;
 					warp "payon_in02",64,65;
 					end;
 					end;
 				case 2:
 				case 2:
@@ -3724,7 +3724,7 @@ new_1-4,100,29,1	script	Hanson#nv	46,{
 					set nov_3_magician,0;
 					set nov_3_magician,0;
 					set nov_3_acolyte,0;
 					set nov_3_acolyte,0;
 					set nov_3_merchant,0;
 					set nov_3_merchant,0;
-					savepoint "prontera",117,72;
+					savepoint "prontera",117,72,1,1;
 					warp "prt_church",172,19;
 					warp "prt_church",172,19;
 					end;
 					end;
 				case 2:
 				case 2:
@@ -3761,27 +3761,27 @@ new_1-4,100,29,1	script	Hanson#nv	46,{
 			set nov_3_merchant,0;
 			set nov_3_merchant,0;
 			set .@startmap,rand(1,6);
 			set .@startmap,rand(1,6);
 			if ((.@startmap > 0) && (.@startmap < 2)) {
 			if ((.@startmap > 0) && (.@startmap < 2)) {
-				savepoint "prontera",117,72;
+				savepoint "prontera",117,72,1,1;
 				warp "prt_fild08",170,371;
 				warp "prt_fild08",170,371;
 			}
 			}
 			else if ((.@startmap > 1) && (.@startmap < 3)) {
 			else if ((.@startmap > 1) && (.@startmap < 3)) {
-				savepoint "geffen",119,37;
+				savepoint "geffen",119,37,1,1;
 				warp "gef_fild07",327,188;
 				warp "gef_fild07",327,188;
 			}
 			}
 			else if ((.@startmap > 2) && (.@startmap < 4)) {
 			else if ((.@startmap > 2) && (.@startmap < 4)) {
-				savepoint "alberta",30,232;
+				savepoint "alberta",30,232,1,1;
 				warp "pay_fild03",388,70;
 				warp "pay_fild03",388,70;
 			}
 			}
 			else if ((.@startmap > 3) && (.@startmap < 5)) {
 			else if ((.@startmap > 3) && (.@startmap < 5)) {
-				savepoint "morocc",150,99;
+				savepoint "morocc",150,99,1,1;
 				warp "moc_fild07",198,39;
 				warp "moc_fild07",198,39;
 			}
 			}
 			else if ((.@startmap > 4) && (.@startmap < 6)) {
 			else if ((.@startmap > 4) && (.@startmap < 6)) {
-				savepoint "payon",256,242;
+				savepoint "payon",256,242,1,1;
 				warp "pay_fild01",334,354;
 				warp "pay_fild01",334,354;
 			}
 			}
 			else if ((.@startmap > 5) && (.@startmap < 7)) {
 			else if ((.@startmap > 5) && (.@startmap < 7)) {
-				savepoint "izlude",93,104;
+				savepoint "izlude",93,104,1,1;
 				warp "prt_fild08",357,212;
 				warp "prt_fild08",357,212;
 			}
 			}
 			end;
 			end;
@@ -3812,27 +3812,27 @@ new_1-4,100,29,1	script	Hanson#nv	46,{
 		set nov_3_merchant,0;
 		set nov_3_merchant,0;
 		set .@startmap,rand(1,6);
 		set .@startmap,rand(1,6);
 		if ((.@startmap > 0) && (.@startmap < 2)) {
 		if ((.@startmap > 0) && (.@startmap < 2)) {
-			savepoint "prontera",117,72;
+			savepoint "prontera",117,72,1,1;
 			warp "prt_fild08",170,371;
 			warp "prt_fild08",170,371;
 		}
 		}
 		else if ((.@startmap > 1) && (.@startmap < 3)) {
 		else if ((.@startmap > 1) && (.@startmap < 3)) {
-			savepoint "geffen",119,37;
+			savepoint "geffen",119,37,1,1;
 			warp "gef_fild07",327,188;
 			warp "gef_fild07",327,188;
 		}
 		}
 		else if ((.@startmap > 2) && (.@startmap < 4)) {
 		else if ((.@startmap > 2) && (.@startmap < 4)) {
-			savepoint "alberta",30,232;
+			savepoint "alberta",30,232,1,1;
 			warp "pay_fild03",388,70;
 			warp "pay_fild03",388,70;
 		}
 		}
 		else if ((.@startmap > 3) && (.@startmap < 5)) {
 		else if ((.@startmap > 3) && (.@startmap < 5)) {
-			savepoint "morocc",150,99;
+			savepoint "morocc",150,99,1,1;
 			warp "moc_fild07",198,39;
 			warp "moc_fild07",198,39;
 		}
 		}
 		else if ((.@startmap > 4) && (.@startmap < 6)) {
 		else if ((.@startmap > 4) && (.@startmap < 6)) {
-			savepoint "payon",70,100;
+			savepoint "payon",70,100,1,1;
 			warp "pay_fild01",334,354;
 			warp "pay_fild01",334,354;
 		}
 		}
 		else if ((.@startmap > 5) && (.@startmap < 7)) {
 		else if ((.@startmap > 5) && (.@startmap < 7)) {
-			savepoint "izlude",93,104;
+			savepoint "izlude",93,104,1,1;
 			warp "prt_fild08",357,212;
 			warp "prt_fild08",357,212;
 		}
 		}
 		end;
 		end;
@@ -3959,27 +3959,27 @@ S_UserJobchoice:
 	set nov_3_acolyte,0;
 	set nov_3_acolyte,0;
 	set nov_3_merchant,0;
 	set nov_3_merchant,0;
 	if(@menu == 1) {
 	if(@menu == 1) {
-		savepoint "izlude",93,104;
+		savepoint "izlude",93,104,1,1;
 		warp "izlude_in",74,167;
 		warp "izlude_in",74,167;
 	}
 	}
 	else if (@menu == 2) {
 	else if (@menu == 2) {
-		savepoint "geffen",119,37;
+		savepoint "geffen",119,37,1,1;
 		warp "geffen_in",163,98;
 		warp "geffen_in",163,98;
 	}
 	}
 	else if (@menu == 3) {
 	else if (@menu == 3) {
-		savepoint "alberta",30,232;
+		savepoint "alberta",30,232,1,1;
 		warp "alberta_in",62,44;
 		warp "alberta_in",62,44;
 	}
 	}
 	else if (@menu == 4) {
 	else if (@menu == 4) {
-		savepoint "morocc",150,99;
+		savepoint "morocc",150,99,1,1;
 		warp "moc_ruins",155,44;
 		warp "moc_ruins",155,44;
 	}
 	}
 	else if (@menu == 5) {
 	else if (@menu == 5) {
-		savepoint "payon",70,100;
+		savepoint "payon",70,100,1,1;
 		warp "payon_in02",64,65;
 		warp "payon_in02",64,65;
 	}
 	}
 	else {
 	else {
-		savepoint "prontera",117,72;
+		savepoint "prontera",117,72,1,1;
 		warp "prt_church",172,19;
 		warp "prt_church",172,19;
 	}
 	}
 	return;
 	return;

+ 1 - 1
npc/quests/first_class/tu_acolyte.txt

@@ -325,7 +325,7 @@ prt_monk,230,106,3	script	Asthe#tu	1_F_PRIEST,{
 			tu_acolyte01 = 4;
 			tu_acolyte01 = 4;
 			getitem 1504,1; //Mace
 			getitem 1504,1; //Mace
 			getitem 602,1; //Wing_Of_Butterfly
 			getitem 602,1; //Wing_Of_Butterfly
-			savepoint "prt_monk",30,250;
+			savepoint "prt_monk",30,250,1,1;
 		}
 		}
 		else {
 		else {
 			mes "[Asthe]";
 			mes "[Asthe]";

+ 1 - 1
npc/quests/first_class/tu_thief01.txt

@@ -338,7 +338,7 @@ moc_ruins,66,164,4	script	Thief Trainer#T	4_M_02,{
 			mes "10 ^ff0000Feather of Birds^000000.";
 			mes "10 ^ff0000Feather of Birds^000000.";
 			mes "You can go ahead and kill Pickies to get those. It really shouldn't be that hard. Oh, and use this Wing thingee to come back.";
 			mes "You can go ahead and kill Pickies to get those. It really shouldn't be that hard. Oh, and use this Wing thingee to come back.";
 			tu_thief01 = 5;
 			tu_thief01 = 5;
-			savepoint "moc_ruins",80,164;
+			savepoint "moc_ruins",80,164,1,1;
 			getitem 602,1; //Wing_Of_Butterfly
 			getitem 602,1; //Wing_Of_Butterfly
 			getexp 100,50;
 			getexp 100,50;
 			specialeffect2 EF_HIT5;
 			specialeffect2 EF_HIT5;

+ 5 - 5
npc/quests/quests_13_1.txt

@@ -7611,7 +7611,7 @@ function Catwarp;
 		next;
 		next;
 		switch(select("Save your location:Cancel")) {
 		switch(select("Save your location:Cancel")) {
 		case 1:
 		case 1:
-			savepoint "mid_camp",56,139;
+			savepoint "mid_camp",56,139,1,1;
 			mes "[Cat Hand Agent]";
 			mes "[Cat Hand Agent]";
 			mes "Thank you.";
 			mes "Thank you.";
 			mes "Your location has been saved.";
 			mes "Your location has been saved.";
@@ -7630,7 +7630,7 @@ function Catwarp;
 		next;
 		next;
 		switch(select("Save your location:Cancel")) {
 		switch(select("Save your location:Cancel")) {
 		case 1:
 		case 1:
-			savepoint "mid_camp",56,139;
+			savepoint "mid_camp",56,139,1,1;
 			mes "[Cat Hand Agent]";
 			mes "[Cat Hand Agent]";
 			mes "Thank you.";
 			mes "Thank you.";
 			mes "Your location has been saved.";
 			mes "Your location has been saved.";
@@ -7649,7 +7649,7 @@ function Catwarp;
 		next;
 		next;
 		switch(select("Save your location:Use Storage:Cancel")) {
 		switch(select("Save your location:Use Storage:Cancel")) {
 		case 1:
 		case 1:
-			savepoint "mid_camp",56,139;
+			savepoint "mid_camp",56,139,1,1;
 			mes "[Cat Hand Agent]";
 			mes "[Cat Hand Agent]";
 			mes "Thank you.";
 			mes "Thank you.";
 			mes "Your location has been saved.";
 			mes "Your location has been saved.";
@@ -7696,7 +7696,7 @@ function Catwarp;
 		next;
 		next;
 		switch(select("Save your location:Use Storage:Use Cat Warp (Midgard):Cancel")) {
 		switch(select("Save your location:Use Storage:Use Cat Warp (Midgard):Cancel")) {
 		case 1:
 		case 1:
-			savepoint "mid_camp",56,139;
+			savepoint "mid_camp",56,139,1,1;
 			mes "[Cat Hand Agent]";
 			mes "[Cat Hand Agent]";
 			mes "Thank you.";
 			mes "Thank you.";
 			mes "Your location has been saved.";
 			mes "Your location has been saved.";
@@ -7818,7 +7818,7 @@ function Catwarp;
 		next;
 		next;
 		switch(select("Save your location:Use Storage:Use Cat Warp (Midgard):Use Cat Warp (Jottunheim):Cancel")) {
 		switch(select("Save your location:Use Storage:Use Cat Warp (Midgard):Use Cat Warp (Jottunheim):Cancel")) {
 		case 1:
 		case 1:
-			savepoint "mid_camp",56,139;
+			savepoint "mid_camp",56,139,1,1;
 			mes "[Cat Hand Agent]";
 			mes "[Cat Hand Agent]";
 			mes "Thank you.";
 			mes "Thank you.";
 			mes "Your location has been saved.";
 			mes "Your location has been saved.";

+ 8 - 8
npc/quests/quests_13_2.txt

@@ -72,8 +72,8 @@ spl_fild02,25,211,4	script	Cat Hand Agent#spl	421,{
 		next;
 		next;
 		switch(select("Save your location:Cancel")) {
 		switch(select("Save your location:Cancel")) {
 		case 1:
 		case 1:
-			if (strnpcinfo(2) == "spl") savepoint "spl_fild02",32,225;
-			else savepoint "man_fild02",129,61;
+			if (strnpcinfo(2) == "spl") savepoint "spl_fild02",32,225,1,1;
+			else savepoint "man_fild02",129,61,1,1;
 			mes "[Cat Hand Agent]";
 			mes "[Cat Hand Agent]";
 			mes "Thank you.";
 			mes "Thank you.";
 			mes "Your location has been saved.";
 			mes "Your location has been saved.";
@@ -92,8 +92,8 @@ spl_fild02,25,211,4	script	Cat Hand Agent#spl	421,{
 		next;
 		next;
 		switch(select("Save your location:Use Storage:Cancel")) {
 		switch(select("Save your location:Use Storage:Cancel")) {
 		case 1:
 		case 1:
-			if (strnpcinfo(2) == "spl") savepoint "spl_fild02",32,225;
-			else savepoint "man_fild02",129,61;
+			if (strnpcinfo(2) == "spl") savepoint "spl_fild02",32,225,1,1;
+			else savepoint "man_fild02",129,61,1,1;
 			mes "[Cat Hand Agent]";
 			mes "[Cat Hand Agent]";
 			mes "Thank you.";
 			mes "Thank you.";
 			mes "Your location has been saved.";
 			mes "Your location has been saved.";
@@ -139,8 +139,8 @@ spl_fild02,25,211,4	script	Cat Hand Agent#spl	421,{
 		next;
 		next;
 		switch(select("Save your location:Use Storage:Use Cat Warp (Midgard):Cancel")) {
 		switch(select("Save your location:Use Storage:Use Cat Warp (Midgard):Cancel")) {
 		case 1:
 		case 1:
-			if (strnpcinfo(2) == "spl") savepoint "spl_fild02",32,225;
-			else savepoint "man_fild02",129,61;
+			if (strnpcinfo(2) == "spl") savepoint "spl_fild02",32,225,1,1;
+			else savepoint "man_fild02",129,61,1,1;
 			mes "[Cat Hand Agent]";
 			mes "[Cat Hand Agent]";
 			mes "Thank you.";
 			mes "Thank you.";
 			mes "Your location has been saved.";
 			mes "Your location has been saved.";
@@ -260,8 +260,8 @@ spl_fild02,25,211,4	script	Cat Hand Agent#spl	421,{
 		next;
 		next;
 		switch(select("Save your location:Use Storage:Use Cat Warp (Midgard):Use Cat Warp (Jottunheim):Cancel")) {
 		switch(select("Save your location:Use Storage:Use Cat Warp (Midgard):Use Cat Warp (Jottunheim):Cancel")) {
 		case 1:
 		case 1:
-			if (strnpcinfo(2) == "spl") savepoint "spl_fild02",32,225;
-			else savepoint "man_fild02",129,61;
+			if (strnpcinfo(2) == "spl") savepoint "spl_fild02",32,225,1,1;
+			else savepoint "man_fild02",129,61,1,1;
 			mes "[Cat Hand Agent]";
 			mes "[Cat Hand Agent]";
 			mes "Thank you.";
 			mes "Thank you.";
 			mes "Your location has been saved.";
 			mes "Your location has been saved.";

+ 1 - 1
npc/quests/quests_moscovia.txt

@@ -3366,7 +3366,7 @@ mosk_in,135,191,5	script	Landlord#mos	4_F_RUSWOMAN3,{
 		mes "[Landlord]";
 		mes "[Landlord]";
 		mes "Your respawn point has been saved.";
 		mes "Your respawn point has been saved.";
 		mes "Hope we can see you again next time hoho.";
 		mes "Hope we can see you again next time hoho.";
-		savepoint "mosk_in",142,189;
+		savepoint "mosk_in",142,189,1,1;
 		close;
 		close;
 	case 2:
 	case 2:
 		if (Zeny > 4999) {
 		if (Zeny > 4999) {

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

@@ -33,7 +33,7 @@ ecl_in02,164,56,3	script	Receptionist#Laphine	835,{
 	case 1:
 	case 1:
 		mes "[Receptionist}";
 		mes "[Receptionist}";
 		mes "Clinic has been set as your save point. Be careful though~";
 		mes "Clinic has been set as your save point. Be careful though~";
-		savepoint "ecl_in02",162,50;
+		savepoint "ecl_in02",162,50,1,1;
 		close;
 		close;
 	case 2:
 	case 2:
 		mes "[Receptionist}";
 		mes "[Receptionist}";

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

@@ -94,7 +94,7 @@ function	script	F_IzludeChannel	{
 	set .@i, select(getarg(0)+":Never mind");
 	set .@i, select(getarg(0)+":Never mind");
 	if (.@i < 6) {
 	if (.@i < 6) {
 		setarray .@maps$[1],"izlude","izlude_a","izlude_b","izlude_c","izlude_d";
 		setarray .@maps$[1],"izlude","izlude_a","izlude_b","izlude_c","izlude_d";
-		savepoint .@maps$[.@i],128,98;
+		savepoint .@maps$[.@i],128,98,1,1;
 		warp .@maps$[.@i],128,98;
 		warp .@maps$[.@i],128,98;
 		end;
 		end;
 	}
 	}

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

@@ -320,7 +320,7 @@ malangdo,147,117,3	script	Innkeeper#malang	554,{
 	case 2:
 	case 2:
 		mes "[Innkeeper]";
 		mes "[Innkeeper]";
 		mes "Location saved. We should keep company, haha~";
 		mes "Location saved. We should keep company, haha~";
-		savepoint "malangdo",142,118;
+		savepoint "malangdo",142,118,1,1;
 		close;
 		close;
 	case 3:
 	case 3:
 		mes "[Innkeeper]";
 		mes "[Innkeeper]";

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

@@ -115,7 +115,7 @@ ma_in01,30,94,4	script	Inn Keeper#ma	583,{
 	case 1:
 	case 1:
 		mes "[Inn Keeper]";
 		mes "[Inn Keeper]";
 		mes "Successfully stored. See you next time.";
 		mes "Successfully stored. See you next time.";
-		savepoint "ma_in01",43,98;
+		savepoint "ma_in01",43,98,1,1;
 		close;
 		close;
 	case 2:
 	case 2:
 		if (Zeny < 5000) {
 		if (Zeny < 5000) {

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

@@ -1105,7 +1105,7 @@ mora,43,127,3	script	Innkeeper#mora_inn	522,{
 		mes "[Innkeeper]";
 		mes "[Innkeeper]";
 		mes "You know, haste makes waste. Tsk tsk.";
 		mes "You know, haste makes waste. Tsk tsk.";
 		mes "Well, the game's been saved.";
 		mes "Well, the game's been saved.";
-		savepoint "mora",56,143;
+		savepoint "mora",56,143,1,1;
 		close;
 		close;
 	case 2:
 	case 2:
 		mes "[Innkeeper]";
 		mes "[Innkeeper]";

+ 3 - 3
npc/re/jobs/1-1/acolyte.txt

@@ -142,7 +142,7 @@ prt_fild03,365,255,2	script	Ascetic#aco	89,{
 				mes "[Father Rubalkabara]";
 				mes "[Father Rubalkabara]";
 				mes "Farewell.";
 				mes "Farewell.";
 				close2;
 				close2;
-				savepoint "prt_fild03",361,255;
+				savepoint "prt_fild03",361,255,1,1;
 				set job_acolyte_q,6;
 				set job_acolyte_q,6;
 				end;
 				end;
 			}
 			}
@@ -210,7 +210,7 @@ moc_fild07,41,355,4	script	Ascetic#2aco	95,{
 				mes "[Mother Mathilda]";
 				mes "[Mother Mathilda]";
 				mes "Please return to the Prontera Sanctuary and speak to the Priest in charge.";
 				mes "Please return to the Prontera Sanctuary and speak to the Priest in charge.";
 				close2;
 				close2;
-				savepoint "moc_fild07",35,355;
+				savepoint "moc_fild07",35,355,1,1;
 				set job_acolyte_q,7;
 				set job_acolyte_q,7;
 				end;
 				end;
 			}
 			}
@@ -287,7 +287,7 @@ prt_fild00,208,218,6	script	Ascetic#3aco	98,{
 				mes "[Father Yosuke]";
 				mes "[Father Yosuke]";
 				mes "Now go back to the Santuary and finish becoming an Acolyte, kid.";
 				mes "Now go back to the Santuary and finish becoming an Acolyte, kid.";
 				close2;
 				close2;
-				savepoint "prt_fild00",206,230;
+				savepoint "prt_fild00",206,230,1,1;
 				set job_acolyte_q,8;
 				set job_acolyte_q,8;
 				end;
 				end;
 			}
 			}

+ 4 - 4
npc/re/jobs/novice/academy.txt

@@ -2054,7 +2054,7 @@ iz_ac01,59,43,3	script	Therapist#ac	4_M_6THPRIN1,{
 		mes "[Therapist]";
 		mes "[Therapist]";
 		mes "I see...";
 		mes "I see...";
 		mes "For emergency situations, in case you've fainted and want to be brought back here, I will save your current location.";
 		mes "For emergency situations, in case you've fainted and want to be brought back here, I will save your current location.";
-		savepoint "iz_ac01", 45, 46;
+		savepoint "iz_ac01",45,46,1,1;
 		close;
 		close;
 	}
 	}
 
 
@@ -5146,7 +5146,7 @@ iz_ac01,95,46,5	script	Kafra Guide Trainer#ac	4_F_KAFRA1,{
 					next;
 					next;
 					mes "[Kafra Guide Trainer]";
 					mes "[Kafra Guide Trainer]";
 					mes "It's already done. Easy huh?";
 					mes "It's already done. Easy huh?";
-					savepoint "izlude", 128, 98;
+					savepoint "izlude",128,98,1,1;
 					next;
 					next;
 					mes "[Kafra Guide Trainer]";
 					mes "[Kafra Guide Trainer]";
 					mes "Now, when you use a ^006400Butterfly Wing^000000, it will send you to the last saved location.";
 					mes "Now, when you use a ^006400Butterfly Wing^000000, it will send you to the last saved location.";
@@ -9325,7 +9325,7 @@ iz_ac02,148,110,3	script	Mage Chuck#ac	4_M_JOB_WIZARD,{
 									cutin "", 255;
 									cutin "", 255;
 									next;
 									next;
 									setquest 9264;
 									setquest 9264;
-									savepoint "geffen", 120, 38;
+									savepoint "geffen",120,38,1,1;
 									warp "gef_fild07", 88, 205;
 									warp "gef_fild07", 88, 205;
 									end;
 									end;
 								}
 								}
@@ -14126,7 +14126,7 @@ new_1-1,53,114,3	script	Training Instructor#1a	4_F_03,{
 	} else if (strnpcinfo(4) == "new_5-1" || strnpcinfo(4) == "new_5-2" || strnpcinfo(4) == "new_5-3" || strnpcinfo(4) == "new_5-4") {
 	} else if (strnpcinfo(4) == "new_5-1" || strnpcinfo(4) == "new_5-2" || strnpcinfo(4) == "new_5-3" || strnpcinfo(4) == "new_5-4") {
 		.@warp$ = "iz_int04";
 		.@warp$ = "iz_int04";
 	}
 	}
-	savepoint .@warp$, 98, 88;
+	savepoint .@warp$,98,88,1,1;
 	warp .@warp$, 98, 88;
 	warp .@warp$, 98, 88;
 	end;
 	end;
 }
 }

+ 49 - 49
npc/re/jobs/novice/novice.txt

@@ -151,7 +151,7 @@ new_5-1,53,114,3	duplicate(NvSprakkiA)	Sprakki#nv5a	90
 			mes "^4d4dff- You received a quest 'Novice Training Ground -1' from Sprakki.";
 			mes "^4d4dff- You received a quest 'Novice Training Ground -1' from Sprakki.";
 			mes "Please check the Quest Info Window. -^000000";
 			mes "Please check the Quest Info Window. -^000000";
 			close2;
 			close2;
-			savepoint strnpcinfo(4),100,100;
+			savepoint strnpcinfo(4),100,100,1,1;
 			warp strnpcinfo(4),100,100;
 			warp strnpcinfo(4),100,100;
 			end;
 			end;
 		case 2:
 		case 2:
@@ -175,27 +175,27 @@ new_5-1,53,114,3	duplicate(NvSprakkiA)	Sprakki#nv5a	90
 			close2;
 			close2;
 			switch(.@select) {
 			switch(.@select) {
 			case 1:
 			case 1:
-				savepoint "prontera",273,354;
+				savepoint "prontera",273,354,1,1;
 				warp "prontera",273,354;
 				warp "prontera",273,354;
 				break;
 				break;
 			case 2:
 			case 2:
-				savepoint "morocc",160,94;
+				savepoint "morocc",160,94,1,1;
 				warp "morocc",160,94;
 				warp "morocc",160,94;
 				break;
 				break;
 			case 3:
 			case 3:
-				savepoint "geffen",120,100;
+				savepoint "geffen",120,100,1,1;
 				warp "geffen",120,100;
 				warp "geffen",120,100;
 				break;
 				break;
 			case 4:
 			case 4:
-				savepoint "payon",70,100;
+				savepoint "payon",70,100,1,1;
 				warp "payon",70,100;
 				warp "payon",70,100;
 				break;
 				break;
 			case 5:
 			case 5:
-				savepoint "alberta",116,57;
+				savepoint "alberta",116,57,1,1;
 				warp "alberta",116,57;
 				warp "alberta",116,57;
 				break;
 				break;
 			case 6: // Old coordinates: (94,103)
 			case 6: // Old coordinates: (94,103)
-				savepoint "izlude",128,98;
+				savepoint "izlude",128,98,1,1;
 				warp "izlude",128,98;
 				warp "izlude",128,98;
 				break;
 				break;
 			}
 			}
@@ -206,7 +206,7 @@ new_5-1,53,114,3	duplicate(NvSprakkiA)	Sprakki#nv5a	90
 		mes "These are the Novice Training Grounds.";
 		mes "These are the Novice Training Grounds.";
 		mes "I will guide you to the Novice Training Center.";
 		mes "I will guide you to the Novice Training Center.";
 		close2;
 		close2;
-		savepoint strnpcinfo(4),100,100;
+		savepoint strnpcinfo(4),100,100,1,1;
 		warp strnpcinfo(4),100,100;
 		warp strnpcinfo(4),100,100;
 		end;
 		end;
 	}
 	}
@@ -736,7 +736,7 @@ new_5-2,115,120,3	duplicate(NvJinha)	Jinha#nv5	59
 		mes "I will send you to the Real Combat Training Field.";
 		mes "I will send you to the Real Combat Training Field.";
 		close2;
 		close2;
 		set .@map$, "new_"+charat(strnpcinfo(4),4)+"-3";
 		set .@map$, "new_"+charat(strnpcinfo(4),4)+"-3";
-		savepoint .@map$,96,21;
+		savepoint .@map$,96,21,1,1;
 		warp .@map$,96,21;
 		warp .@map$,96,21;
 		end;
 		end;
 	} else {
 	} else {
@@ -754,7 +754,7 @@ new_5-2,115,120,3	duplicate(NvJinha)	Jinha#nv5	59
 			mes "I will send you to the Real Combat Training Field.";
 			mes "I will send you to the Real Combat Training Field.";
 			close2;
 			close2;
 			set .@map$, "new_"+charat(strnpcinfo(4),4)+"-3";
 			set .@map$, "new_"+charat(strnpcinfo(4),4)+"-3";
-			savepoint .@map$,96,21;
+			savepoint .@map$,96,21,1,1;
 			warp .@map$,96,21;
 			warp .@map$,96,21;
 			end;
 			end;
 		}
 		}
@@ -846,7 +846,7 @@ new_5-2,33,172,4	duplicate(NvChocolat)	Chocolat#nv5	96
 				mes "May Freya bless you upon your journey.";
 				mes "May Freya bless you upon your journey.";
 				callfunc "F_NvErase";
 				callfunc "F_NvErase";
 				close2;
 				close2;
-				savepoint "prontera",117,72;
+				savepoint "prontera",117,72,1,1;
 				warp "prontera",150,50;
 				warp "prontera",150,50;
 				end;
 				end;
 			case 2:
 			case 2:
@@ -856,7 +856,7 @@ new_5-2,33,172,4	duplicate(NvChocolat)	Chocolat#nv5	96
 				mes "Do not lose the dream in your heart right now.";
 				mes "Do not lose the dream in your heart right now.";
 				callfunc "F_NvErase";
 				callfunc "F_NvErase";
 				close2;
 				close2;
-				savepoint "morocc",150,99;
+				savepoint "morocc",150,99,1,1;
 				warp "morocc",155,110;
 				warp "morocc",155,110;
 				end;
 				end;
 			case 3:
 			case 3:
@@ -866,7 +866,7 @@ new_5-2,33,172,4	duplicate(NvChocolat)	Chocolat#nv5	96
 				mes "Let Freya bless you.";
 				mes "Let Freya bless you.";
 				callfunc "F_NvErase";
 				callfunc "F_NvErase";
 				close2;
 				close2;
-				savepoint "payon",70,100;
+				savepoint "payon",70,100,1,1;
 				warp "payon",166,67;
 				warp "payon",166,67;
 				end;
 				end;
 			case 4:
 			case 4:
@@ -876,7 +876,7 @@ new_5-2,33,172,4	duplicate(NvChocolat)	Chocolat#nv5	96
 				mes "If you want to experience other civilizations, you have to visit Alberta first.";
 				mes "If you want to experience other civilizations, you have to visit Alberta first.";
 				callfunc "F_NvErase";
 				callfunc "F_NvErase";
 				close2;
 				close2;
-				savepoint "alberta",30,232;
+				savepoint "alberta",30,232,1,1;
 				warp "alberta",114,58;
 				warp "alberta",114,58;
 				end;
 				end;
 			case 5:
 			case 5:
@@ -887,7 +887,7 @@ new_5-2,33,172,4	duplicate(NvChocolat)	Chocolat#nv5	96
 				mes "May Goddess Freya bless you!.";
 				mes "May Goddess Freya bless you!.";
 				callfunc "F_NvErase";
 				callfunc "F_NvErase";
 				close2;
 				close2;
-				savepoint "geffen",119,37;
+				savepoint "geffen",119,37,1,1;
 				warp "geffen",122,65;
 				warp "geffen",122,65;
 				end;
 				end;
 			}
 			}
@@ -1175,7 +1175,7 @@ new_5-2,36,176,4	duplicate(NvGuide)	Guide#nv5	105
 		set job_novice_q,13;
 		set job_novice_q,13;
 		setquest 7122;
 		setquest 7122;
 		getitem 569,100; //Novice_Potion
 		getitem 569,100; //Novice_Potion
-		savepoint strnpcinfo(4),96,21;
+		savepoint strnpcinfo(4),96,21,1,1;
 		next;
 		next;
 		mes "^4d4dff- You've received a quest from Instructor Brade.";
 		mes "^4d4dff- You've received a quest from Instructor Brade.";
 		mes "Please check the quest information window. -^000000";
 		mes "Please check the quest information window. -^000000";
@@ -1260,7 +1260,7 @@ new_5-2,36,176,4	duplicate(NvGuide)	Guide#nv5	105
 				mes "Take care and god bless you on your journey.";
 				mes "Take care and god bless you on your journey.";
 				callfunc "F_NvErase";
 				callfunc "F_NvErase";
 				close2;
 				close2;
-				savepoint "prontera",117,72;
+				savepoint "prontera",117,72,1,1;
 				warp "prontera",150,50;
 				warp "prontera",150,50;
 				end;
 				end;
 			case 2:
 			case 2:
@@ -1270,7 +1270,7 @@ new_5-2,36,176,4	duplicate(NvGuide)	Guide#nv5	105
 				mes "Take care.";
 				mes "Take care.";
 				callfunc "F_NvErase";
 				callfunc "F_NvErase";
 				close2;
 				close2;
-				savepoint "morocc",150,99;
+				savepoint "morocc",150,99,1,1;
 				warp "morocc",155,110;
 				warp "morocc",155,110;
 				end;
 				end;
 			case 3:
 			case 3:
@@ -1279,7 +1279,7 @@ new_5-2,36,176,4	duplicate(NvGuide)	Guide#nv5	105
 				mes "God bless you.";
 				mes "God bless you.";
 				callfunc "F_NvErase";
 				callfunc "F_NvErase";
 				close2;
 				close2;
-				savepoint "payon",70,100;
+				savepoint "payon",70,100,1,1;
 				warp "payon",166,67;
 				warp "payon",166,67;
 				end;
 				end;
 			case 4:
 			case 4:
@@ -1290,7 +1290,7 @@ new_5-2,36,176,4	duplicate(NvGuide)	Guide#nv5	105
 				mes "Well then, god bless you on your soul.";
 				mes "Well then, god bless you on your soul.";
 				callfunc "F_NvErase";
 				callfunc "F_NvErase";
 				close2;
 				close2;
-				savepoint "alberta",30,232;
+				savepoint "alberta",30,232,1,1;
 				warp "alberta",114,58;
 				warp "alberta",114,58;
 				end;
 				end;
 			case 5:
 			case 5:
@@ -1301,7 +1301,7 @@ new_5-2,36,176,4	duplicate(NvGuide)	Guide#nv5	105
 				mes "May Goddess Freya bless you.";
 				mes "May Goddess Freya bless you.";
 				callfunc "F_NvErase";
 				callfunc "F_NvErase";
 				close2;
 				close2;
-				savepoint "geffen",119,37;
+				savepoint "geffen",119,37,1,1;
 				warp "geffen",122,65;
 				warp "geffen",122,65;
 				end;
 				end;
 			case 6:
 			case 6:
@@ -1411,7 +1411,7 @@ new_5-3,96,30,4	duplicate(NvBradeB)	Brade#nv5b	733
 			mes "Then I'll end your training process and send you to the Swordman Guild.";
 			mes "Then I'll end your training process and send you to the Swordman Guild.";
 			callfunc "F_NvErase",1;
 			callfunc "F_NvErase",1;
 			close2;
 			close2;
-			savepoint "izlude",128,98; // Old coordinates: (95,104)
+			savepoint "izlude",128,98,1,1; // Old coordinates: (95,104)
 			warp "izlude_in",74,167;
 			warp "izlude_in",74,167;
 			end;
 			end;
 		}
 		}
@@ -1552,7 +1552,7 @@ new_5-3,97,41,3	duplicate(NvSwordman)	Swordman Guide#nv5	728
 			mes "Then I will completely end the Training Process and send you to Prontera's Sanctuary.";
 			mes "Then I will completely end the Training Process and send you to Prontera's Sanctuary.";
 			callfunc "F_NvErase",1;
 			callfunc "F_NvErase",1;
 			close2;
 			close2;
-			savepoint "prontera",117,72;
+			savepoint "prontera",117,72,1,1;
 			warp "prt_church",172,19;
 			warp "prt_church",172,19;
 			end;
 			end;
 		}
 		}
@@ -1645,7 +1645,7 @@ new_5-3,101,41,3	duplicate(NvAcolyte)	Acolyte Guide#nv5	95
 			mes "Welcome. Then your Novice training is totally complete and you will be sent to the Thief Guild immediately.";
 			mes "Welcome. Then your Novice training is totally complete and you will be sent to the Thief Guild immediately.";
 			callfunc "F_NvErase",1;
 			callfunc "F_NvErase",1;
 			close2;
 			close2;
-			savepoint "morocc",150,99;
+			savepoint "morocc",150,99,1,1;
 			warp "moc_prydb1",99,185;
 			warp "moc_prydb1",99,185;
 			end;
 			end;
 		}
 		}
@@ -1783,7 +1783,7 @@ new_5-3,105,41,3	duplicate(NvThief)	Thief Guide#nv5	118
 			mes "Then I will end the Training Process and send you to the Merchant Guild's union immediately.";
 			mes "Then I will end the Training Process and send you to the Merchant Guild's union immediately.";
 			callfunc "F_NvErase",1;
 			callfunc "F_NvErase",1;
 			close2;
 			close2;
-			savepoint "alberta",30,232;
+			savepoint "alberta",30,232,1,1;
 			warp "alberta_in",62,44;
 			warp "alberta_in",62,44;
 			end;
 			end;
 		}
 		}
@@ -1942,7 +1942,7 @@ new_5-3,109,41,3	duplicate(NvMerchant)	Merchant Guide#nv5	97
 			mes "Then I will completely end the Training Process and send you to the Archer Guild.";
 			mes "Then I will completely end the Training Process and send you to the Archer Guild.";
 			callfunc "F_NvErase",1;
 			callfunc "F_NvErase",1;
 			close2;
 			close2;
-			savepoint "payon",256,242;
+			savepoint "payon",256,242,1,1;
 			warp "payon_in02",64,65;
 			warp "payon_in02",64,65;
 			end;
 			end;
 		}
 		}
@@ -2045,7 +2045,7 @@ new_5-3,113,41,3	duplicate(NvArcher)	Archer Guide#nv5	727
 			mes "Then I will end the Training Process and send you to the Mage Guild union in Geffen right away.";
 			mes "Then I will end the Training Process and send you to the Mage Guild union in Geffen right away.";
 			callfunc "F_NvErase",1;
 			callfunc "F_NvErase",1;
 			close2;
 			close2;
-			savepoint "geffen",119,37;
+			savepoint "geffen",119,37,1,1;
 			warp "geffen_in",163,98;
 			warp "geffen_in",163,98;
 			end;
 			end;
 		}
 		}
@@ -2268,7 +2268,7 @@ new_5-3,121,41,3	duplicate(NvBruce)	Bruce#nv5	57
 S_Warp:
 S_Warp:
 	close2;
 	close2;
 	callfunc "F_NvErase",1;
 	callfunc "F_NvErase",1;
-	savepoint getarg(0),getarg(1),getarg(2);
+	savepoint getarg(0),getarg(1),getarg(2),1,1;
 	warp getarg(0),getarg(3),getarg(4);
 	warp getarg(0),getarg(3),getarg(4);
 	end;
 	end;
 	
 	
@@ -2435,7 +2435,7 @@ new_5-1,144,107,2	duplicate(NvGuardB)	Guard#nv5b	105
 	mes "Well, I will let you out of here.";
 	mes "Well, I will let you out of here.";
 	mes "Go find the instructor, Brade.";
 	mes "Go find the instructor, Brade.";
 	close2;
 	close2;
-	savepoint strnpcinfo(4),100,100;
+	savepoint strnpcinfo(4),100,100,1,1;
 	warp strnpcinfo(4),100,100;
 	warp strnpcinfo(4),100,100;
 	end;
 	end;
 }
 }
@@ -2496,7 +2496,7 @@ function	script	F_NvErase	{
 				mes "The town you will be sent to is called Izlude which is a satellite of Prontera. The Swordman Association is located in the West of town. Please remember this.";
 				mes "The town you will be sent to is called Izlude which is a satellite of Prontera. The Swordman Association is located in the West of town. Please remember this.";
 				next;
 				next;
 				callsub L_Supplies;
 				callsub L_Supplies;
-				savepoint "izlude",128,98; // Old coordinates: (95,104)
+				savepoint "izlude",128,98,1,1; // Old coordinates: (95,104)
 				warp "izlude_in",74,167;
 				warp "izlude_in",74,167;
 				end;
 				end;
 			case 2:
 			case 2:
@@ -2510,7 +2510,7 @@ function	script	F_NvErase	{
 				mes "The Prontera Sanctuary is located to the North-East in Prontera. Please remember this.";
 				mes "The Prontera Sanctuary is located to the North-East in Prontera. Please remember this.";
 				next;
 				next;
 				callsub L_Supplies;
 				callsub L_Supplies;
-				savepoint "prontera",117,72;
+				savepoint "prontera",117,72,1,1;
 				warp "prt_church",172,19;
 				warp "prt_church",172,19;
 				end;
 				end;
 			case 3:
 			case 3:
@@ -2524,7 +2524,7 @@ function	script	F_NvErase	{
 				mes "The Thief guild is in the underground 1st floor of a pyramid which is North-West of town. Please remember this.";
 				mes "The Thief guild is in the underground 1st floor of a pyramid which is North-West of town. Please remember this.";
 				next;
 				next;
 				callsub L_Supplies;
 				callsub L_Supplies;
-				savepoint "morocc",150,99;
+				savepoint "morocc",150,99,1,1;
 				warp "moc_ruins",155,44;
 				warp "moc_ruins",155,44;
 				end;
 				end;
 			case 4:
 			case 4:
@@ -2535,7 +2535,7 @@ function	script	F_NvErase	{
 				mes "the town of Alberta.";
 				mes "the town of Alberta.";
 				next;
 				next;
 				callsub L_Supplies;
 				callsub L_Supplies;
-				savepoint "alberta",30,232;
+				savepoint "alberta",30,232,1,1;
 				warp "alberta_in",62,44;
 				warp "alberta_in",62,44;
 				end;
 				end;
 			case 5:
 			case 5:
@@ -2549,7 +2549,7 @@ function	script	F_NvErase	{
 				mes "The Archer Guild is located to the North-West in Payon. Please remember this.";
 				mes "The Archer Guild is located to the North-West in Payon. Please remember this.";
 				next;
 				next;
 				callsub L_Supplies;
 				callsub L_Supplies;
-				savepoint "payon",256,242;
+				savepoint "payon",256,242,1,1;
 				warp "payon_in02",64,65;
 				warp "payon_in02",64,65;
 				end;
 				end;
 			case 6:
 			case 6:
@@ -2563,7 +2563,7 @@ function	script	F_NvErase	{
 				mes "The Mage Academy is located in the North-West in town. Please remember this.";
 				mes "The Mage Academy is located in the North-West in town. Please remember this.";
 				next;
 				next;
 				callsub L_Supplies;
 				callsub L_Supplies;
-				savepoint "geffen",119,37;
+				savepoint "geffen",119,37,1,1;
 				warp "geffen_in",163,98;
 				warp "geffen_in",163,98;
 				end;
 				end;
 			}
 			}
@@ -2624,31 +2624,31 @@ L_Warp:
 	case 1:
 	case 1:
 		mes "I will send you to Prontera, the Capital City.";
 		mes "I will send you to Prontera, the Capital City.";
 		close2;
 		close2;
-		savepoint "prontera",117,72;
+		savepoint "prontera",117,72,1,1;
 		warp "prontera",150,50;
 		warp "prontera",150,50;
 		end;
 		end;
 	case 2:
 	case 2:
 		mes "I will send you to Geffen, the City of Magic.";
 		mes "I will send you to Geffen, the City of Magic.";
 		close2;
 		close2;
-		savepoint "geffen",119,37;
+		savepoint "geffen",119,37,1,1;
 		warp "geffen",122,65;
 		warp "geffen",122,65;
 		end;
 		end;
 	case 3:
 	case 3:
 		mes "I will send you to Morroc, the Desert Town.";
 		mes "I will send you to Morroc, the Desert Town.";
 		close2;
 		close2;
-		savepoint "morocc",150,99;
+		savepoint "morocc",150,99,1,1;
 		warp "morocc",155,110;
 		warp "morocc",155,110;
 		end;
 		end;
 	case 4:
 	case 4:
 		mes "I will send you to Payon, the Mountain Village.";
 		mes "I will send you to Payon, the Mountain Village.";
 		close2;
 		close2;
-		savepoint "payon",70,100;
+		savepoint "payon",70,100,1,1;
 		warp "payon",166,67;
 		warp "payon",166,67;
 		end;
 		end;
 	case 5:
 	case 5:
 		mes "I will send you to Alberta, the Port City.";
 		mes "I will send you to Alberta, the Port City.";
 		close2;
 		close2;
-		savepoint "alberta",30,232;
+		savepoint "alberta",30,232,1,1;
 		warp "alberta",114,58;
 		warp "alberta",114,58;
 		end;
 		end;
 	case 6:
 	case 6:
@@ -3319,7 +3319,7 @@ new_5-4,100,29,1	duplicate(NvHanson)	Final Tester#nv5	46
 		mes .@str$;
 		mes .@str$;
 		mes "Good bye.";
 		mes "Good bye.";
 		close2;
 		close2;
-		savepoint "izlude",128,98; // Old coordinates: (95,104)
+		savepoint "izlude",128,98,1,1; // Old coordinates: (95,104)
 		warp "izlude_in",74,167;
 		warp "izlude_in",74,167;
 		end;
 		end;
 	case 2:
 	case 2:
@@ -3329,7 +3329,7 @@ new_5-4,100,29,1	duplicate(NvHanson)	Final Tester#nv5	46
 		mes .@str$;
 		mes .@str$;
 		mes "Good bye.";
 		mes "Good bye.";
 		close2;
 		close2;
-		savepoint "geffen",119,37;
+		savepoint "geffen",119,37,1,1;
 		warp "geffen_in",163,98;
 		warp "geffen_in",163,98;
 		end;
 		end;
 	case 3:
 	case 3:
@@ -3339,7 +3339,7 @@ new_5-4,100,29,1	duplicate(NvHanson)	Final Tester#nv5	46
 		mes .@str$;
 		mes .@str$;
 		mes "Good bye.";
 		mes "Good bye.";
 		close2;
 		close2;
-		savepoint "payon",256,242;
+		savepoint "payon",256,242,1,1;
 		warp "payon_in02",64,65;
 		warp "payon_in02",64,65;
 		end;
 		end;
 	case 4:
 	case 4:
@@ -3349,7 +3349,7 @@ new_5-4,100,29,1	duplicate(NvHanson)	Final Tester#nv5	46
 		mes .@str$;
 		mes .@str$;
 		mes "Good bye.";
 		mes "Good bye.";
 		close2;
 		close2;
-		savepoint "alberta",30,232;
+		savepoint "alberta",30,232,1,1;
 		warp "alberta_in",62,44;
 		warp "alberta_in",62,44;
 		end;
 		end;
 	case 5:
 	case 5:
@@ -3359,7 +3359,7 @@ new_5-4,100,29,1	duplicate(NvHanson)	Final Tester#nv5	46
 		mes .@str$;
 		mes .@str$;
 		mes "Good bye.";
 		mes "Good bye.";
 		close2;
 		close2;
-		savepoint "morocc",150,99;
+		savepoint "morocc",150,99,1,1;
 		warp "moc_prydb1",99,185;
 		warp "moc_prydb1",99,185;
 		end;
 		end;
 	case 6:
 	case 6:
@@ -3369,7 +3369,7 @@ new_5-4,100,29,1	duplicate(NvHanson)	Final Tester#nv5	46
 		mes .@str$;
 		mes .@str$;
 		mes "Good bye.";
 		mes "Good bye.";
 		close2;
 		close2;
-		savepoint "prontera",117,72;
+		savepoint "prontera",117,72,1,1;
 		warp "prt_church",172,19;
 		warp "prt_church",172,19;
 		end;
 		end;
 	case 7:
 	case 7:
@@ -3379,7 +3379,7 @@ new_5-4,100,29,1	duplicate(NvHanson)	Final Tester#nv5	46
 		mes .@str$;
 		mes .@str$;
 		mes "Good bye.";
 		mes "Good bye.";
 		close2;
 		close2;
-		savepoint "payon",164,58;
+		savepoint "payon",164,58,1,1;
 		warp "payon",163,141;
 		warp "payon",163,141;
 		end;
 		end;
 	case 8:
 	case 8:
@@ -3390,7 +3390,7 @@ new_5-4,100,29,1	duplicate(NvHanson)	Final Tester#nv5	46
 		mes .@str$;
 		mes .@str$;
 		mes "Good bye.";
 		mes "Good bye.";
 		close2;
 		close2;
-		savepoint "izlude",128,98; // Old coordinates: (95,104)
+		savepoint "izlude",128,98,1,1; // Old coordinates: (95,104)
 		warp "izlude",128,67;
 		warp "izlude",128,67;
 		end;
 		end;
 	case 9:
 	case 9:
@@ -3402,7 +3402,7 @@ new_5-4,100,29,1	duplicate(NvHanson)	Final Tester#nv5	46
 		mes .@str$;
 		mes .@str$;
 		mes "Good bye.";
 		mes "Good bye.";
 		close2;
 		close2;
-		savepoint "alberta",117,56;
+		savepoint "alberta",117,56,1,1;
 		warp "alberta",171,132;
 		warp "alberta",171,132;
 		end;
 		end;
 	default:
 	default:

+ 5 - 5
npc/re/kafras/kafras.txt

@@ -32,7 +32,7 @@
 brasilis,197,221,4	script	Kafra Employee::kaf_bra	117,{
 brasilis,197,221,4	script	Kafra Employee::kaf_bra	117,{
 	cutin "kafra_01",2;
 	cutin "kafra_01",2;
 	callfunc "F_Kafra",0,3,0,80,700;
 	callfunc "F_Kafra",0,3,0,80,700;
-	savepoint "brasilis",195,259;
+	savepoint "brasilis",195,259,1,1;
 	callfunc "F_KafEnd",0,1,"in the city of Brasilis";
 	callfunc "F_KafEnd",0,1,"in the city of Brasilis";
 }
 }
 
 
@@ -41,7 +41,7 @@ brasilis,197,221,4	script	Kafra Employee::kaf_bra	117,{
 dewata,202,184,6	script	Kafra Employee::kaf_dewata	117,{
 dewata,202,184,6	script	Kafra Employee::kaf_dewata	117,{
 	cutin "kafra_01",2;
 	cutin "kafra_01",2;
 	callfunc "F_Kafra",0,10,1,40,700;
 	callfunc "F_Kafra",0,10,1,40,700;
-	savepoint "dewata",206,174;
+	savepoint "dewata",206,174,1,1;
 	callfunc "F_KafEnd",0,1,"on Dewata Island";
 	callfunc "F_KafEnd",0,1,"on Dewata Island";
 }
 }
 
 
@@ -50,7 +50,7 @@ dewata,202,184,6	script	Kafra Employee::kaf_dewata	117,{
 glast_01,200,275,5	script	Kafra Employee::kaf_glast	115,{
 glast_01,200,275,5	script	Kafra Employee::kaf_glast	115,{
 	cutin "kafra_03",2;
 	cutin "kafra_03",2;
 	callfunc "F_Kafra",0,3,2,500,700;
 	callfunc "F_Kafra",0,3,2,500,700;
-	savepoint "glast_01",200,272;
+	savepoint "glast_01",200,272,1,1;
 	callfunc "F_KafEnd",0,1,"in Glast Heim";
 	callfunc "F_KafEnd",0,1,"in Glast Heim";
 }
 }
 
 
@@ -77,13 +77,13 @@ izlude_d,128,148,6	duplicate(kaf_izlude)	Kafra Employee#iz_d	117
 //============================================================
 //============================================================
 malaya,71,79,4	script	Kafra Employee::kaf_malaya1	581,{
 malaya,71,79,4	script	Kafra Employee::kaf_malaya1	581,{
 	callfunc "F_Kafra",0,3,2,500,700;
 	callfunc "F_Kafra",0,3,2,500,700;
-	savepoint "malaya",44,56;
+	savepoint "malaya",44,56,1,1;
 	callfunc "F_KafEnd",0,1,"in Port Malaya";
 	callfunc "F_KafEnd",0,1,"in Port Malaya";
 }
 }
 
 
 malaya,234,204,4	script	Kafra Employee::kaf_malaya2	581,{
 malaya,234,204,4	script	Kafra Employee::kaf_malaya2	581,{
 	callfunc "F_Kafra",0,3,2,500,700;
 	callfunc "F_Kafra",0,3,2,500,700;
-	savepoint "malaya",281,212;
+	savepoint "malaya",281,212,1,1;
 	callfunc "F_KafEnd",0,1,"in Port Malaya";
 	callfunc "F_KafEnd",0,1,"in Port Malaya";
 }
 }
 
 

+ 1 - 1
npc/re/merchants/inn.txt

@@ -32,7 +32,7 @@ bra_in01,27,24,3	script	Hotel Keeper#bra1	478,{
 		case 2:
 		case 2:
 			mes "[Hotel Keeper]";
 			mes "[Hotel Keeper]";
 			mes "Your respawn has been saved here at the hotel. I hope that you enjoy your stay here in Brasilis.";
 			mes "Your respawn has been saved here at the hotel. I hope that you enjoy your stay here in Brasilis.";
-			savepoint "bra_in01",144,69;
+			savepoint "bra_in01",144,69,1,1;
 			close;
 			close;
 		}
 		}
 	case 2:
 	case 2:

+ 1 - 1
npc/re/warps/cities/izlude.txt

@@ -66,7 +66,7 @@ iz_int,96,73,0	script	iz_int_iz	WARPNPC,2,2,{
 	end;
 	end;
 
 
 OnTouch:
 OnTouch:
-	savepoint "izlude", 128, 98;
+	savepoint "izlude",128,98,1,1;
 	warp "izlude"+strnpcinfo(2)+"", 195, 209;
 	warp "izlude"+strnpcinfo(2)+"", 195, 209;
 	end;
 	end;
 }
 }

+ 36 - 12
src/map/script.c

@@ -9489,25 +9489,49 @@ BUILDIN_FUNC(setmadogear)
 
 
 /// Sets the save point of the player.
 /// Sets the save point of the player.
 ///
 ///
-/// save "<map name>",<x>,<y>{,<char_id>}
-/// savepoint "<map name>",<x>,<y>{,<char_id>}
+/// save "<map name>",<x>,<y>{,{<range x>,<range y>,}<char_id>}
+/// savepoint "<map name>",<x>,<y>{,{<range x>,<range y>,}<char_id>}
 BUILDIN_FUNC(savepoint)
 BUILDIN_FUNC(savepoint)
 {
 {
-	int x;
-	int y;
-	short map_idx;
+	int x, y, m, cid_pos = 5;
+	unsigned short map_idx;
 	const char* str;
 	const char* str;
 	TBL_PC* sd;
 	TBL_PC* sd;
 
 
-	if (!script_charid2sd(5,sd))
+	if (script_lastdata(st) > 5)
+		cid_pos = 7;
+
+	if (!script_charid2sd(cid_pos,sd))
 		return SCRIPT_CMD_FAILURE;// no player attached, report source
 		return SCRIPT_CMD_FAILURE;// no player attached, report source
 
 
 	str = script_getstr(st, 2);
 	str = script_getstr(st, 2);
-	x   = script_getnum(st,3);
-	y   = script_getnum(st,4);
+
 	map_idx = mapindex_name2id(str);
 	map_idx = mapindex_name2id(str);
-	if( map_idx )
-		pc_setsavepoint(sd, map_idx, x, y);
+	if( !map_idx )
+		return SCRIPT_CMD_FAILURE;
+
+	x = script_getnum(st,3);
+	y = script_getnum(st,4);
+	m = map_mapindex2mapid(map_idx);
+
+	if (cid_pos == 7) {
+		int dx = script_getnum(st,5), dy = script_getnum(st,6),
+			x1 = x + dx, y1 = y + dy,
+			x0 = x - dx, y0 = y - dy;
+		uint8 n = 10;
+		do {
+			x = x0 + rnd()%(x1-x0+1);
+			y = y0 + rnd()%(y1-y0+1);
+		} while (m != -1 && (--n) > 0 && !map_getcell(m, x, y, CELL_CHKPASS));
+	}
+
+	// Check for valid coordinates if map in local map-server
+	if (m != -1 && !map_getcell(m, x, y, CELL_CHKPASS)) {
+		ShowError("buildin_savepoint: Invalid coordinates %d,%d at map %s.\n", x, y, str);
+		return SCRIPT_CMD_FAILURE;
+	}
+
+	pc_setsavepoint(sd, map_idx, x, y);
 
 
 	return SCRIPT_CMD_SUCCESS;
 	return SCRIPT_CMD_SUCCESS;
 }
 }
@@ -22256,8 +22280,8 @@ struct script_function buildin_func[] = {
 	BUILDIN_DEF(checkwug,"?"),
 	BUILDIN_DEF(checkwug,"?"),
 	BUILDIN_DEF(checkmadogear,"?"),
 	BUILDIN_DEF(checkmadogear,"?"),
 	BUILDIN_DEF(setmadogear,"??"),
 	BUILDIN_DEF(setmadogear,"??"),
-	BUILDIN_DEF2(savepoint,"save","sii?"),
-	BUILDIN_DEF(savepoint,"sii?"),
+	BUILDIN_DEF2(savepoint,"save","sii???"),
+	BUILDIN_DEF(savepoint,"sii???"),
 	BUILDIN_DEF(gettimetick,"i"),
 	BUILDIN_DEF(gettimetick,"i"),
 	BUILDIN_DEF(gettime,"i"),
 	BUILDIN_DEF(gettime,"i"),
 	BUILDIN_DEF(gettimestr,"si"),
 	BUILDIN_DEF(gettimestr,"si"),