Ver código fonte

- Modified yet again SC_SILENCE after iRO tests from Entwined on IRC. Silence now ONLY blocks skills from being used, it will not stop on-going casts.
- Updated status_cast_cancel to also include silence (so the cast bar is cancelled if you are silenced during it)


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8098 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 19 anos atrás
pai
commit
4a27d643ce

+ 2 - 0
npc/Changelog.txt

@@ -35,6 +35,8 @@ Playtester
 Date		Added
 ======
 08/03
+	* Updated the Kafra Express files to the July 28 release as requested on
+	  the forums. [Skotlex]
 	* Fixed the DTS warper zeny bug [Evera]
 08/02
 	* Re-enabled the Culvert Save [Evera]

+ 80 - 76
npc/custom/eAAC_Scripts/kafraExpress/kafras.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Skotlex 
 //===== Current Version: ===================================== 
-//= 1.9
+//= 2.2
 //===== Compatible With: ===================================== 
 //= Any eAthena Version with function support; RO Episode 8+ (LightHalzen)
 //===== Description: ========================================= 
@@ -18,275 +18,279 @@
 //callfunc "F_KafraExpress","NPC Name","Image File", type, "Save Map", Save X, Save Y;
 
 //Town Kafras
-alberta.gat,113,53,7	script	Kafra Express	116,{
+alberta.gat,113,60,5	script	Kafra Express::Alberta	116,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"alberta.gat",116,57;
 }
 
-aldebaran.gat,133,124,5	script	Kafra Express	115,{
+aldebaran.gat,133,124,5	script	Kafra Express::AlDeBaran	115,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_03",2,"aldebaran.gat",139,131;
 }
 
-amatsu.gat,201,80,8	script	Kafra Express	114,{
+amatsu.gat,201,80,8	script	Kafra Express::Amatsu	114,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_04",0,"amatsu.gat",197,81;
 }
 
-ayothaya.gat,195,160,8	script	Kafra Express	112,{
+ayothaya.gat,195,160,8	script	Kafra Express::Ayothaya	112,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_06",0,"ayothaya.gat",194,173;
 }
 
-comodo.gat,190,153,5	script	Kafra Express	721,{
+comodo.gat,190,153,5	script	Kafra Express::Comodo	721,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"comodo.gat",189,166;
 }
 
-geffen.gat,121,62,8	script	Kafra Express	113,{
+geffen.gat,121,62,8	script	Kafra Express::Geffen	113,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_05",0,"geffen.gat",119,56;
 }
 
-gonryun.gat,169,188,2	script	Kafra Express	117,{
+gonryun.gat,169,188,2	script	Kafra Express::GonRyun	117,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_01",2,"gonryun.gat",168,199;
 }
 
-einbech.gat,182,124,3	script	Kafra Express	117,{
-	callfunc "F_KafraExpress","Kafra Express","kafra_01",0,"einbech.gat",182,133;
+einbech.gat,143,243,3	script	Kafra Express::Einbech	860,{
+	callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"einbech.gat",157,250;
 }
 
-einbroch.gat,58,207,4	script	Kafra Express	115,{
-	callfunc "F_KafraExpress","Kafra Express","kafra_03",0,"einbroch.gat",64,184;
+einbroch.gat,58,207,4	script	Kafra Express::Einbroch	860,{
+	callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"einbroch.gat",64,184;
 }
 
-izlude.gat,136,94,2	script	Kafra Express	115,{
+hugel.gat,101,117,1	script	Kafra Express::Hugel	115,{
+	callfunc "F_KafraExpress","Kafra Express","kafra_03",0,"hugel.gat",102,109;
+}
+
+izlude.gat,136,94,2	script	Kafra Express::Izlude	115,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_03",0,"izlude.gat",147,99;
 }
 
-jawaii.gat,208,217,7	script	Kafra Express	721,{
+jawaii.gat,208,217,7	script	Kafra Express::Jawaii	721,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"jawaii.gat",213,209;
 }
 
-lighthalzen.gat,165,106,3	script	Kafra Express	114,{
-	callfunc "F_KafraExpress","Kafra Express","kafra_04",0,"lighthalzen.gat",152,106;
+lighthalzen.gat,165,106,3	script	Kafra Express::Lighthalzen	861,{
+	callfunc "F_KafraExpress","Kafra Express","kafra_09",0,"lighthalzen.gat",152,106;
 }
 
-louyang.gat,220,123,3	script	Kafra Express	117,{
+louyang.gat,220,123,3	script	Kafra Express::LouYang	117,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_01",0,"louyang.gat",221,128;
 }
 
-xmas.gat,148,126,4	script	Kafra Express	112,{
+xmas.gat,148,126,4	script	Kafra Express::Lutie	112,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_06",0,"xmas.gat",149,117;
 }
 
-morocc.gat,156,97,3	script	Kafra Express	721,{
+morocc.gat,156,97,3	script	Kafra Express::Morocc	721,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"morocc.gat",156,91;
 }
 
-niflheim.gat,196,192,3	script	Kafra Express	791,{
+niflheim.gat,196,192,3	script	Kafra Express::Niflheim	791,{
 	callfunc "F_KafraExpress","Kafra Express","",3,"niflheim.gat",194,185;
 }
 
-payon.gat,152,181,5	script	Kafra Express	114,{
+payon.gat,152,181,5	script	Kafra Express::Payon	114,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_04",0,"payon.gat",162,182;
 }
 
-prontera.gat,157,187,4	script	Kafra Express	116,{
+prontera.gat,147,177,7	script	Kafra Express::Prontera	116,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"prontera.gat",156,195;
 }
 
-umbala.gat,89,159,4	script	Kafra Express	112,{
-	callfunc "F_KafraExpress","Kafra Express","kafra_06",0,"umbala.gat",91,159;
+umbala.gat,89,159,4	script	Kafra Express::Umbala	860,{
+	callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"umbala.gat",91,159;
 }
 
-yuno.gat,159,87,5	script	Kafra Express	113,{
-	callfunc "F_KafraExpress","Kafra Express","kafra_05",0,"yuno.gat",159,52;
+yuno.gat,159,87,5	script	Kafra Express::Yuno	861,{
+	callfunc "F_KafraExpress","Kafra Express","kafra_09",0,"yuno.gat",159,52;
 }
 
 //Dungeon Kafras
 //Abyss Lake
-hu_fild05.gat,170,305,7	script	Kafra Express	721,{
-	callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"hu_fild05.gat",160,302;
+hu_fild05.gat,170,305,7	script	Kafra Express::D_Abyss	861,{
+	callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"hu_fild05.gat",160,302;
 }
 
 //Amatsu D
-ama_in02.gat,115,184,6	script	Kafra Express	117,{
+ama_in02.gat,115,184,6	script	Kafra Express::D_Amatsu	117,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"ama_in02.gat",118,184;
 }
 
 //AntHell North
-moc_fild04.gat,231,332,5	script	Kafra Express	114,{
-	callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"moc_fild04.gat",232,322;
+moc_fild04.gat,208,323,1	script	Kafra Express::D_Anthell1	114,{
+	callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"moc_fild04.gat",207,332;
 }
 
 //AntHell South
-moc_fild15.gat,251,243,3	script	Kafra Express	114,{
+moc_fild15.gat,251,243,3	script	Kafra Express::D_Anthell2	114,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"moc_fild15.gat",246,251;
 }
 
 //Ayothaya Dungeon
-ayo_fild02.gat,289,144,3	script	Kafra Express	116,{
+ayo_fild02.gat,289,144,3	script	Kafra Express::D_Ayothaya	116,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"ayo_fild02.gat",289,155;
 }
 
 //Byalan Island
-izlu2dun.gat,101,82,7	script	Kafra Express	112,{
+izlu2dun.gat,101,82,7	script	Kafra Express::D_Byalan	112,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"izlu2dun.gat",112,84;
 }
 
 //Comodo East Cave
-cmd_fild01.gat,33,321,4	script	Kafra Express	721,{
+cmd_fild01.gat,33,321,4	script	Kafra Express::D_ComodoE	721,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"cmd_fild01.gat",34,325;
 }
 
 //Comodo West Cave
-comodo.gat,31,218,4	script	Kafra Express	721,{
+comodo.gat,31,218,4	script	Kafra Express::D_ComodoW	721,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"comodo.gat",32,209;
 }
 
 //Comodo North Cave
-comodo.gat,182,347,2	script	Kafra Express	721,{
+comodo.gat,182,347,2	script	Kafra Express::D_ComodoN	721,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"comodo.gat",180,352;
 }
 
 //Coal Mines
-mjolnir_02.gat,85,365,4	script	Kafra Express	114,{
-	callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"mjolnir_02.gat",89,358;
+mjolnir_02.gat,83,364,4	script	Kafra Express::D_Coal	861,{
+	callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"mjolnir_02.gat",89,358;
 }
 
 //Culvert
-prt_fild05.gat,275,219,5	script	Kafra Express	112,{
+prt_fild05.gat,275,219,5	script	Kafra Express::D_Culvert	112,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"prt_fild05.gat",274,208;
 }
 
-//Einbroch Station
-einbech.gat,182,124,3	script	Kafra Express	117,{
-	callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"einbech.gat",182,133;
-}
-
 //Gefenia
-gefenia01.gat,56,171,6	script	Kafra Express	116,{
-	callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"gefenia01.gat",59,169;
+gefenia01.gat,56,171,6	script	Kafra Express::D_Gefenia1	861,{
+	callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"gefenia01.gat",59,169;
 }
 
 //Geffen Dungeon
-gef_tower.gat,156,33,3	script	Kafra Express	113,{
+gef_tower.gat,156,33,3	script	Kafra Express::D_Geffen	113,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"gef_tower.gat",147,35;
 }
 
 //GH: Church
-glast_01.gat,193,136,5	script	Kafra Express	791,{
+glast_01.gat,193,136,5	script	Kafra Express::D_GHChurch	791,{
 	callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",206,136;
 }
 
 //GH: Castle
-glast_01.gat,200,350,4	script	Kafra Express	791,{
+glast_01.gat,200,350,4	script	Kafra Express::D_GHCastle	791,{
 	callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",200,347;
 }
 
 //GH: Staircase
-glast_01.gat,58,103,7	script	Kafra Express	791,{
+glast_01.gat,58,103,7	script	Kafra Express::D_GHStair	791,{
 	callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",62,107;
 }
 
 //GH: Chivalry
-glast_01.gat,62,198,6	script	Kafra Express	791,{
+glast_01.gat,62,198,6	script	Kafra Express::D_GHChivalry	791,{
 	callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",69,193;
 }
 
-//LightHalzen Rekkenber
-lighthalzen.gat,69,57,7	script	Kafra Express	113,{
-	callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"lighthalzen.gat",78,57;
+//LightHalzen Rekkenber (Sewer Entrance)
+lighthalzen.gat,311,293,17	script	Kafra Express::D_Lhz	860,{
+	callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"lighthalzen.gat",301,286;
 }
 
+//LightHalzen Rekkenber (Rekkenber Entrance)(
+//lighthalzen.gat,69,57,7	script	Kafra Express::D_Lhz	860,{
+//	callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"lighthalzen.gat",78,57;
+//}
+
 //Juperos
-jupe_cave.gat,45,55,5	script	Kafra Express	115,{
-	callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"jupe_cave.gat",45,48;
+jupe_cave.gat,45,55,5	script	Kafra Express::D_Juperos	860,{
+	callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"jupe_cave.gat",45,48;
 }
 
 //Laberynth
-prt_fild01.gat,143,365,3	script	Kafra Express	112,{
+prt_fild01.gat,143,365,3	script	Kafra Express::D_Maze	112,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"prt_fild01.gat",136,361;
 }
 
 //LouYang D
-louyang.gat,35,276,6	script	Kafra Express	117,{
+louyang.gat,35,276,6	script	Kafra Express::D_Louyang	117,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"louyang.gat",41,267;
 }
 
 //Magma D
-yuno_fild03.gat,34,143,5	script	Kafra Express	115,{
+yuno_fild03.gat,34,143,5	script	Kafra Express::D_Magma	115,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"yuno_fild03.gat",35,135;
 }
 
 //Orc D North
-in_orcs01.gat,24,165,5	script	Kafra Express	116,{
+in_orcs01.gat,24,165,5	script	Kafra Express::D_OrcsN	116,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"in_orcs01.gat",34,165;
 }
 
 //Orc D South
-in_orcs01.gat,103,99,5	script	Kafra Express	116,{
+in_orcs01.gat,103,99,5	script	Kafra Express::D_OrcsS	116,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"in_orcs01.gat",112,99;
 }
 
 //Payon D 
-pay_arche.gat,38,138,6	script	Kafra Express	112,{
+pay_arche.gat,38,138,6	script	Kafra Express::D_Payon	112,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"pay_arche.gat",41,133;
 }
 
 //Pyramids D 
-moc_ruins.gat,60,166,5	script	Kafra Express	115,{
+moc_ruins.gat,60,166,5	script	Kafra Express::D_Pyramid	115,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"moc_ruins.gat",62,162;
 }
 
 //Sphinx D
-moc_fild19.gat,106,97,8	script	Kafra Express	115,{
+moc_fild19.gat,106,97,8	script	Kafra Express::D_Sphinx	115,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"moc_fild19.gat",107,100;
 }
 
 //Sunken Ship
-alb2trea.gat,75,101,5	script	Kafra Express	114,{
+alb2trea.gat,75,101,5	script	Kafra Express::D_Sunken	114,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"alb2trea.gat",87,103;
 }
 
 //Thanatos Tower
-tha_t01.gat,155,33,4	script	Kafra Express	113,{
-	callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tha_t01.gat",144,33;
+tha_scene01.gat,139,194,0	script	Kafra Express::D_Thanatos	113,{
+	callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tha_scene01.gat",132,220;
 }
 
 //Toy Factory
-xmas.gat,138,307,6	script	Kafra Express	116,{
+xmas.gat,138,307,6	script	Kafra Express::D_Toy	116,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"xmas.gat",144,306;
 }
 
 //Turtle Cave Entrance
-tur_dun01.gat,147,237,6	script	Kafra Express	113,{
+tur_dun01.gat,147,237,6	script	Kafra Express::D_TCave	113,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tur_dun01.gat",155,234;
 }
 
 //Turtle Island Entrance
-tur_dun01.gat,148,54,6	script	Kafra Express	113,{
+tur_dun01.gat,148,54,6	script	Kafra Express::D_TIsland	113,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tur_dun01.gat",153,47;
 }
 
 //Umbala D
-umbala.gat,120,284,3	script	Kafra Express	117,{
+umbala.gat,120,284,3	script	Kafra Express::D_Umbala	117,{
 	callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"umbala.gat",113,282;
 }
 
 //Guild War Kafras: Disabled by Default!
 
 //Al De Baran Guild Grounds
-//alde_gld.gat,156,165,3	script	Kafra Express	116,{
+//alde_gld.gat,156,165,3	script	Kafra Express::G_AlDeBaran	116,{
 //	callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"alde_gld.gat",156,157;
 //}
 
 //Geffen Guild Grounds
-//gef_fild13.gat,237,182,6	script	Kafra Express	113,{
+//gef_fild13.gat,237,182,6	script	Kafra Express::G_Geffen	113,{
 //	callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"gef_fild13.gat",231,181;
 //}
 
 //Payon Guild Grounds
-//pay_gld.gat,243,172,6	script	Kafra Express	117,{
+//pay_gld.gat,243,172,6	script	Kafra Express::G_Payon	117,{
 //	callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"pay_gld.gat",243,178;
 //}
 
 //Prontera Guild Grounds
-//prt_gld.gat,127,163,5	script	Kafra Express	115,{
+//prt_gld.gat,127,163,5	script	Kafra Express::G_Prontera	115,{
 //	callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"prt_gld.gat",129,170;
 //}

+ 26 - 17
npc/custom/eAAC_Scripts/kafraExpress/ke_jobswap.txt

@@ -3,9 +3,9 @@
 //===== By: ==================================================
 //= Skotlex
 //===== Current Version: =====================================
-//= 3.1
+//= 3.4
 //===== Compatible With: =====================================
-//= eAthena SVN R3424+
+//= eAthena SVN R7896+
 //===== Description: =========================================
 //= Part of the Kafra Express Script Package.
 //= Enables job changing among classes of the same 'type'
@@ -183,55 +183,55 @@ function SF_switch {
 				switch (@kmenu)
 				{
 				case 2:	//ALCHEMIST
-					if (SF_swapJob(callfunc("GF_getJobId", Job_Alchem, Upper),@cost,@preserve) == 0)
+					if (SF_swapJob(callfunc("GF_getJobId", Job_Alchem, Upper),@cost,@preserve))
 						return 0;
 					break;
 				case 3:	//ASSASSIN
-					if (SF_swapJob(callfunc("GF_getJobId", Job_Assassin, Upper),@cost,@preserve) == 0)
+					if (SF_swapJob(callfunc("GF_getJobId", Job_Assassin, Upper),@cost,@preserve))
 						return 0;
 					break;
 				case 4:	//BARD
-					if (SF_swapJob(callfunc("GF_getJobId", Job_Bard, Upper),@cost,@preserve) == 0)
+					if (SF_swapJob(callfunc("GF_getJobId", Job_Bard, Upper),@cost,@preserve))
 						return 0;
 					break;
 				case 5:	//BLACKSMITH
-					if (SF_swapJob(callfunc("GF_getJobId", Job_Blacksmith, Upper),@cost,@preserve) == 0)
+					if (SF_swapJob(callfunc("GF_getJobId", Job_Blacksmith, Upper),@cost,@preserve))
 						return 0;
 					break;
 				case 6:	//CRUSADER
-					if (SF_swapJob(callfunc("GF_getJobId", Job_Crusader, Upper),@cost,@preserve) == 0)
+					if (SF_swapJob(callfunc("GF_getJobId", Job_Crusader, Upper),@cost,@preserve))
 						return 0;
 					break;
 				case 7:	//DANCER
-					if (SF_swapJob(callfunc("GF_getJobId", Job_Dancer, Upper),@cost,@preserve) == 0)
+					if (SF_swapJob(callfunc("GF_getJobId", Job_Dancer, Upper),@cost,@preserve))
 						return 0;
 					break;
 				case 8:	//HUNTER
-					if (SF_swapJob(callfunc("GF_getJobId", Job_Hunter, Upper),@cost,@preserve) == 0)
+					if (SF_swapJob(callfunc("GF_getJobId", Job_Hunter, Upper),@cost,@preserve))
 						return 0;
 					break;
 				case 9:	//KNIGHT
-					if (SF_swapJob(callfunc("GF_getJobId", Job_Knight, Upper),@cost,@preserve) == 0)
+					if (SF_swapJob(callfunc("GF_getJobId", Job_Knight, Upper),@cost,@preserve))
 						return 0;
 					break;
 				case 10:	//MONK
-					if (SF_swapJob(callfunc("GF_getJobId", Job_Monk, Upper),@cost,@preserve) == 0)
+					if (SF_swapJob(callfunc("GF_getJobId", Job_Monk, Upper),@cost,@preserve))
 						return 0;
 					break;
 				case 11:	//PRIEST
-					if (SF_swapJob(callfunc("GF_getJobId", Job_Priest, Upper),@cost,@preserve) == 0)
+					if (SF_swapJob(callfunc("GF_getJobId", Job_Priest, Upper),@cost,@preserve))
 						return 0;
 					break;
 				case 12:	//ROGUE
-					if (SF_swapJob(callfunc("GF_getJobId", Job_Rogue, Upper),@cost,@preserve) == 0)
+					if (SF_swapJob(callfunc("GF_getJobId", Job_Rogue, Upper),@cost,@preserve))
 						return 0;
 					break;
 				case 13:	//SAGE
-					if (SF_swapJob(callfunc("GF_getJobId", Job_Sage, Upper),@cost,@preserve) == 0)
+					if (SF_swapJob(callfunc("GF_getJobId", Job_Sage, Upper),@cost,@preserve))
 						return 0;
 					break;
 				case 14:	//WIZARD
-					if (SF_swapJob(callfunc("GF_getJobId", Job_Wizard, Upper),@cost,@preserve) == 0)
+					if (SF_swapJob(callfunc("GF_getJobId", Job_Wizard, Upper),@cost,@preserve))
 						return 0;
 					break;
 				}
@@ -296,8 +296,16 @@ function SF_swapJob {
 	}
 
 	set @basic, getSkilllv(1);
+	set @preserve, skillpointcount() -JobLevel -@basic +@newjoblv;	//Preserve holds the final amount of SkillPoints you should have.
+
+	if (@preserve < 0) {
+		callfunc "F_keIntro", e_gasp, "You need "+(-@preserve)+" more skill points to change class!";
+		return 0;
+	}
+
 	set @thisJoblevel, JobLevel;
 	resetSkill;
+
 	//Set previous job as needed.
 	if ($@kejs_revertPolicy) {
 		set kej_prev_job, Class;
@@ -311,10 +319,10 @@ function SF_swapJob {
 		setlook 7,0;
 	jobchange @newjobId, 0;
 	skill 1,@basic,0;
-	set SkillPoint, SkillPoint-@thisJoblevel+1-@basic;
-
 	set JobLevel, @newjoblv;
+	set SkillPoint, @preserve;
 	setoption(0);
+	sc_end -1;
 	callfunc "F_keCharge",getarg(2),$@kejs_swapDiscount,1;
 	
 	emotion e_ok;	
@@ -366,6 +374,7 @@ function SF_revertJob {
 	set kej_prev_joblv, @thisJobLv;
 	set kej_prev_skills, @skill;
 	setoption(0);
+	sc_end -1;
 
 	if ($@kejs_announce)
 		announce strcharinfo(0)+" has changed from "+callfunc ("GF_getJobName",@thisJobId)+" to "+@newjob$+"...",16;

+ 381 - 128
npc/custom/eAAC_Scripts/kafraExpress/ke_warp_dungeon.txt

@@ -3,14 +3,44 @@
 //===== By: ================================================== 
 //= Skotlex 
 //===== Current Version: ===================================== 
-//= 3.1
+//= 3.5
 //===== Compatible With: ===================================== 
-//= eAthena SVN R3424+, RO Episode 8+ (LightHalzen)
+//= eAthena SVN R3424+, RO Episode 8+ (Hugel)
 //===== Description: ========================================= 
 //= Part of the Kafra Express Script Package.
 //= Offers warping to dungeons. 
 //===== Additional Comments: ================================= 
 //= See config.txt for configuration.
+//= Flag values used for dungeons:
+//= 0x00000001 Abyss Lake
+//= 0x00000002 Amatsu
+//= 0x00000004 AntHell
+//= 0x00000008 Ayothaya
+//= 0x00000010 Byalan
+//= 0x00000020 Comodo
+//= 0x00000040 Clock tower
+//= 0x00000080 Coal Mines
+//= 0x00000100 Culvert
+//= 0x00000200 Einbech
+//= 0x00000400 Gefenia
+//= 0x00000800 Geffen
+//= 0x00001000 GlastHeim
+//= 0x00002000 Gon Ryun
+//= 0x00004000 Hidden Temple
+//= 0x00008000 Juperos
+//= 0x00010000 Lighthalzen
+//= 0x00020000 Lou Yang
+//= 0x00040000 Magma Caves
+//= 0x00080000 Orcs
+//= 0x00100000 Payon
+//= 0x00200000 Pyramid
+//= 0x00400000 Sphinx
+//= 0x00800000 Sunken Ship
+//= 0x01000000 Thanatos
+//= 0x02000000 Toy Factory
+//= 0x04000000 Turtle Island
+//= 0x08000000 Umbala
+
 //============================================================ 
 
 -	script	keInit_warpDungeon	{
@@ -49,7 +79,8 @@ function SF_thanatosTower;
 function SF_toyFactory;
 function SF_turtleIsland;
 function SF_umbala;
-
+	//Store player map, will be needed in any of the submenus.
+	set @map$, getarg(0);
 	do {
 		set @discount,callfunc("F_keCost",100,$@kewd_discount);
 		if ($@kewd_showOnline) {
@@ -252,25 +283,25 @@ function SF_umbala;
 	} while (@kmenu > 1);
 	return;
 
-//Subfunction SF_check(flag1, flag2, cost, floor-count, player-map, dungeon-map#, map#1, map#2, ...)
-//If kewd_travel is set, both flags need to be one to be able to work there.
+//Subfunction SF_check(flag, cost, floor-count, player-map, dungeon-map#, map#1, map#2, ...)
+//If kewd_travel is set, the flag needs to match to be to warp there.
 //Floor count is the amount of levels the dungeon needs a price for,
 //dungeon-map# is the number of maps passed that need to be checked against
 //the player's map to see if they are warping from within the entrance.
 
 function SF_check {
-	if ($@kewd_travel && getarg(0) == 0 && getarg(1) == 0) {
+	if ($@kewd_travel && !((kewd_travel|#kewd_travel)&getarg(0))) {
 		callfunc "F_keIntro", e_sry, "Sorry, but we can only warp you to dungeons you have saved in before.";
 		return 0;
 	}
-	set @cost, getarg(2);
+	set @cost, getarg(1);
 	set @discount,100;
-	set @map$, getarg(4);
-	set @mapI, getarg(5);
+	set @map$, getarg(3);
+	set @mapI, getarg(4);
 
 	while (@mapI > 0)
 	{
-		if (@map$ == getarg(5+@mapI)) {
+		if (@map$ == getarg(4+@mapI)) {
 			set @discount,100-$@kewd_entryDiscount;
 			break;
 		}
@@ -288,7 +319,7 @@ function SF_check {
 	if ($@kewd_deep == 0)
 		return 1;
 
-	switch (getarg(3)) {
+	switch (getarg(2)) {
 	case 9:
 		set @cost9, @cost +8*@inc; 
 	case 8:
@@ -310,7 +341,7 @@ function SF_check {
 }
 
 function SF_abyssLake {
-	if (!(SF_check(kewd_abyss, #kewd_abyss, $@kewd_abyssLake, 3, getarg(0), 1, "hu_fild05.gat")))
+	if (!(SF_check(0x1, $@kewd_abyssLake, 3, @map$, 1, "hu_fild05.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -343,7 +374,7 @@ function SF_abyssLake {
 }
 
 function SF_amatsu {
-	if (!(SF_check(kewd_amatsu, #kewd_amatsu, $@kewd_amatsu, 3, getarg(0), 1, "ama_in02.gat")))
+	if (!(SF_check(0x2, $@kewd_amatsu, 3, @map$, 1, "ama_in02.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -376,7 +407,7 @@ function SF_amatsu {
 }
 
 function SF_antHell {
-	if (!(SF_check(kewd_antHell, #kewd_antHell, $@kewd_antHell, 1, getarg(0), 2, "moc_fild04.gat","moc_fild15.gat")))
+	if (!(SF_check(0x4, $@kewd_antHell, 1, @map$, 2, "moc_fild04.gat","moc_fild15.gat")))
 		return;
 	if ($@kewd_showOnline) {
 		set @submenu, select(
@@ -393,7 +424,7 @@ function SF_antHell {
 	}
 	switch (@submenu) {
 	case 2:
-		callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"moc_fild04.gat",232,322;
+		callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"moc_fild04.gat",201,327;
 		break;
 	case 3:
 		callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"moc_fild15.gat",246,251;
@@ -402,7 +433,7 @@ function SF_antHell {
 }
 
 function SF_ayothaya {
-	if (!(SF_check(kewd_ayothaya, #kewd_ayothaya, $@kewd_ayothaya, 2, getarg(0), 1, "ayo_fild02.gat")))
+	if (!(SF_check(0x8, $@kewd_ayothaya, 2, @map$, 1, "ayo_fild02.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -430,7 +461,7 @@ function SF_ayothaya {
 }
 
 function SF_byalan {
-	if (!(SF_check(kewd_byalan, #kewd_byalan, $@kewd_byalan, 5, getarg(0), 1, "izlu2dun.gat")))
+	if (!(SF_check(0x10, $@kewd_byalan, 5, @map$, 1, "izlu2dun.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -473,7 +504,7 @@ function SF_byalan {
 }
 
 function SF_comodo {
-	if (!(SF_check(kewd_comodo, #kewd_comodo, $@kewd_comodo, 1, getarg(0), 2, "comodo.gat","cmd_fild01.gat")))
+	if (!(SF_check(0x20, $@kewd_comodo, 1, @map$, 2, "comodo.gat","cmd_fild01.gat")))
 		return;
 
 	if ($@kewd_showOnline) {
@@ -505,7 +536,7 @@ function SF_comodo {
 }
 
 function SF_clockTower {
-	if (!(SF_check(kewd_clockTower, #kewd_clockTower, $@kewd_clockTower, 5, getarg(0), 1, "aldebaran.gat")))
+	if (!(SF_check(0x40, $@kewd_clockTower, 5, @map$, 1, "aldebaran.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -563,7 +594,7 @@ function SF_clockTower {
 }
 
 function SF_coalMine {
-	if (!(SF_check(kewd_coalMines, #kewd_coalMines, $@kewd_coalMines, 3, getarg(0), 1, "mjolnir_02.gat")))
+	if (!(SF_check(0x80, $@kewd_coalMines, 3, @map$, 1, "mjolnir_02.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -596,7 +627,7 @@ function SF_coalMine {
 }
 
 function SF_culvert {
-	if (!(SF_check(kewd_culvert, #kewd_culvert, $@kewd_culvert, 4, getarg(0), 1, "prt_fild05.gat")))
+	if (!(SF_check(0x100, $@kewd_culvert, 4, @map$, 1, "prt_fild05.gat")))
 		return;
 	if ($@kewd_deep == 0) {
 		set @submenu, 2;
@@ -634,7 +665,7 @@ function SF_culvert {
 }
 
 function SF_einbech {
-	if (!(SF_check(kewd_einbech, #kewd_einbech, $@kewd_einbech, 2, getarg(0), 1, "einbech.gat")))
+	if (!(SF_check(0x200, $@kewd_einbech, 2, @map$, 1, "einbech.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -662,7 +693,7 @@ function SF_einbech {
 }
 
 function SF_geffen {
-	if (!(SF_check(kewd_geffen, #kewd_geffen, $@kewd_geffen, 4, getarg(0), 1, "gef_tower.gat")))
+	if (!(SF_check(0x800, $@kewd_geffen, 3, @map$, 1, "gef_tower.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -671,16 +702,16 @@ function SF_geffen {
 			"- Cancel warp to Geffen Dungeon",
 			"- Entrance ("+@cost+"z/"+getmapusers("gef_dun00.gat")+" "+$@ked_users$+")",
 			"- Level 2 ("+@cost2+"z/"+getmapusers("gef_dun01.gat")+" "+$@ked_users$+")",
-			"- Level 3 ("+@cost3+"z/"+getmapusers("gef_dun02.gat")+" "+$@ked_users$+")",
-			"- Level 4 ("+@cost4+"z/"+getmapusers("gef_dun03.gat")+" "+$@ked_users$+")"
+			"- Level 3 ("+@cost3+"z/"+getmapusers("gef_dun02.gat")+" "+$@ked_users$+")"
+//			"- Level 4 ("+@cost4+"z/"+getmapusers("gef_dun03.gat")+" "+$@ked_users$+")"
 		);
 	} else {
 		set @submenu, select(
 			"- Cancel warp to Geffen Dungeon",
 			"- Entrance ("+@cost+"z)",
 			"- Level 2 ("+@cost2+"z)",
-			"- Level 3 ("+@cost3+"z)",
-			"- Level 4 ("+@cost4+"z)"
+			"- Level 3 ("+@cost3+"z)"
+//			"- Level 4 ("+@cost4+"z)"
 		);
 	}
 	switch (@submenu) {
@@ -700,7 +731,7 @@ function SF_geffen {
 }
 
 function SF_gefenia {
-	if (!(SF_check(kewd_gefenia, #kewd_gefenia, $@kewd_gefenia, 2, getarg(0), 4, "gefenia01.gat","gefenia02.gat","gefenia03.gat","gefenia04.gat")))
+	if (!(SF_check(0x400, $@kewd_gefenia, 2, @map$, 4, "gefenia01.gat","gefenia02.gat","gefenia03.gat","gefenia04.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -738,7 +769,7 @@ function SF_gefenia {
 }
 
 function SF_glastHeim {
-	if (!(SF_check(kewd_glastHeim, #kewd_glastHeim, $@kewd_glastHeim, 7, getarg(0), 1, "glast_01.gat")))
+	if (!(SF_check(0x1000, $@kewd_glastHeim, 7, @map$, 1, "glast_01.gat")))
 		return;
 	if ($@kewd_deep == 0) {
 		if ($@kewd_showOnline) {
@@ -844,7 +875,7 @@ function SF_glastHeim {
 }
 
 function SF_gonRyun {
-	if (!(SF_check(kewd_gonRyun, #kewd_gonRyun, $@kewd_gonRyun, 3, getarg(0), 1, "gonryun.gat")))
+	if (!(SF_check(0x2000, $@kewd_gonRyun, 3, @map$, 1, "gonryun.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -877,7 +908,7 @@ function SF_gonRyun {
 }
 
 function SF_hiddenTemple {
-	if (!(SF_check(kewd_hiddenTemple, #kewd_hiddenTemple, $@kewd_hiddenTemple, 3, getarg(0), 1, "prt_fild01.gat")))
+	if (!(SF_check(0x4000, $@kewd_hiddenTemple, 3, @map$, 1, "prt_fild01.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -910,7 +941,7 @@ function SF_hiddenTemple {
 }
 
 function SF_juperos {
-	if (!(SF_check(kewd_juperos, #kewd_juperos, $@kewd_juperos, 3, getarg(0), 1, "jupe_cave.gat")))
+	if (!(SF_check(0x8000, $@kewd_juperos, 3, @map$, 1, "jupe_cave.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -923,7 +954,7 @@ function SF_juperos {
 		);	
 	} else {
 		set @submenu, select(
-			"- Cancel warp to the Laberynth Forest",
+			"- Cancel warp to Juperos",
 			"- Entrance ("+@cost+"z)",
 			"- Level 2 ("+@cost2+"z)",
 			"- Core ("+@cost3+"z)"
@@ -943,7 +974,7 @@ function SF_juperos {
 }
 
 function SF_lightHalzen {
-	if (!(SF_check(kewd_lightHalzen, #kewd_lightHalzen, $@kewd_lightHalzen, 3, getarg(0), 1, "lighthalzen.gat")))
+	if (!(SF_check(0x10000, $@kewd_lightHalzen, 3, @map$, 1, "lighthalzen.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -964,7 +995,9 @@ function SF_lightHalzen {
 	}
 	switch (@submenu) {	
 	case 2:
-		callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"lighthalzen.gat",74,72;
+//This is the Rekkenber building entrance, which officially is only a dungeon exit.
+//		callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"lighthalzen.gat",74,72;
+		callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"lighthalzen.gat",303,302;
 		break;
 	case 3:
 		callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"lhz_dun02.gat",154,18;
@@ -976,7 +1009,7 @@ function SF_lightHalzen {
 }
 
 function SF_louYang {
-	if (!(SF_check(kewd_louYang, #kewd_louYang, $@kewd_louYang, 3, getarg(0), 1, "louyang.gat")))
+	if (!(SF_check(0x20000, $@kewd_louYang, 3, @map$, 1, "louyang.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -1009,7 +1042,7 @@ function SF_louYang {
 }
 
 function SF_magma {
-	if (!(SF_check(kewd_magma, #kewd_magma, $@kewd_magma, 2, getarg(0), 1, "yuno_fild03.gat")))
+	if (!(SF_check(0x40000, $@kewd_magma, 2, @map$, 1, "yuno_fild03.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -1037,7 +1070,7 @@ function SF_magma {
 }
 
 function SF_orcs {
-	if (!(SF_check(kewd_orc, #kewd_orc, $@kewd_orc, 2, getarg(0), 1, "gef_fild10.gat")))
+	if (!(SF_check(0x80000, $@kewd_orc, 2, @map$, 1, "gef_fild10.gat")))
 		return;
 	if ($@kewd_showOnline) {
 		set @submenu, select(
@@ -1063,7 +1096,7 @@ function SF_orcs {
 }
 
 function SF_payon {
-	if (!(SF_check(kewd_payon, #kewd_payon, $@kewd_payon, 5, getarg(0), 1, "pay_arche.gat")))
+	if (!(SF_check(0x100000, $@kewd_payon, 5, @map$, 1, "pay_arche.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -1106,7 +1139,7 @@ function SF_payon {
 }
 
 function SF_pyramid {
-	if (!(SF_check(kewd_pyramid, #kewd_pyramid, $@kewd_pyramid, 4, getarg(0),1, "moc_ruins.gat")))
+	if (!(SF_check(0x200000, $@kewd_pyramid, 4, @map$,1, "moc_ruins.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -1154,7 +1187,7 @@ function SF_pyramid {
 }
 
 function SF_sphinx {
-	if (!(SF_check(kewd_sphinx, #kewd_sphinx, $@kewd_sphinx, 5, getarg(0), 1, "moc_fild19.gat")))
+	if (!(SF_check(0x400000, $@kewd_sphinx, 5, @map$, 1, "moc_fild19.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -1198,7 +1231,7 @@ function SF_sphinx {
 }
 
 function SF_sunkenShip {
-	if (!(SF_check(kewd_sunkenShip, #kewd_sunkenShip, $@kewd_sunkenShip, 2, getarg(0), 1, "alb2trea.gat")))
+	if (!(SF_check(0x800000, $@kewd_sunkenShip, 2, @map$, 1, "alb2trea.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -1227,7 +1260,7 @@ function SF_sunkenShip {
 }
 
 function SF_thanatosTower {
-	if (!(SF_check(kewd_thanatosTower, #kewd_thanatosTower, $@kewd_thanatosTower, 9, getarg(0), 1, "tha_t01.gat")))
+	if (!(SF_check(0x1000000, $@kewd_thanatosTower, 9, @map$, 1, "tha_t01.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -1260,7 +1293,7 @@ function SF_thanatosTower {
 	}
 	switch (@submenu) {
 	case 2:	
-		callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"tha_t01.gat",149,40;
+		callfunc "F_keWarp",@cost*100/@discountKP,$@kewd_discount,e_hmm,"tha_scene01.gat",139,201;
 		break;
 	case 3:
 		callfunc "F_keWarp",@cost2*100/@discountKP,$@kewd_discount,e_hmm,"tha_t02.gat",149,136;
@@ -1290,7 +1323,7 @@ function SF_thanatosTower {
 }
 
 function SF_toyFactory {
-	if (!(SF_check(kewd_toyFactory, #kewd_toyFactory, $@kewd_toyFactory, 2, getarg(0), 1, "xmas.gat")))
+	if (!(SF_check(0x2000000, $@kewd_toyFactory, 2, @map$, 1, "xmas.gat")))
 		return;
 
 	if ($@kewd_deep == 0)
@@ -1320,7 +1353,7 @@ function SF_toyFactory {
 }
 
 function SF_turtleIsland {
-	if (!(SF_check(kewd_turtleIsland, #kewd_turtleIsland, $@kewd_turtleIsland, 3, getarg(0), 1, "tur_dun01.gat")))
+	if (!(SF_check(0x4000000, $@kewd_turtleIsland, 3, @map$, 1, "tur_dun01.gat")))
 		return;
 	if ($@kewd_deep == 0) {
 		if ($@kewd_turtleCave)
@@ -1361,7 +1394,7 @@ function SF_turtleIsland {
 }
 
 function SF_umbala {
-	if (!(SF_check(kewd_umbala, #kewd_umbala, $@kewd_umbala, 2, getarg(0), 1, "umbala.gat")))
+	if (!(SF_check(0x8000000, $@kewd_umbala, 2, @map$, 1, "umbala.gat")))
 		return;
 	if ($@kewd_deep == 0)
 		set @submenu, 2;
@@ -1393,116 +1426,336 @@ function SF_umbala {
 //Invoked when we want to add a map to the list of travelled-to dungeons
 function	script	F_keAddTravelDungeon	{
 	set @map$, getarg(0);
+// Temporary code to update the previous variable format to the new one.
+	if(kewd_abyss) {
+		set kewd_travel,kewd_travel|0x1;
+		set kewd_abyss,0;
+	}
+	if(kewd_amatsu) {
+		set kewd_travel,kewd_travel|0x2;
+		set kewd_amatsu,0;
+	}
+	if(kewd_antHell) {
+		set kewd_travel,kewd_travel|0x4;
+		set kewd_antHell,0;
+	}
+	if(kewd_ayothaya) {
+		set kewd_travel,kewd_travel|0x8;
+		set kewd_ayothaya,0;
+	}
+	if(kewd_byalan) {
+		set kewd_travel,kewd_travel|0x10;
+		set kewd_byalan,0;
+	}
+	if(kewd_comodo) {
+		set kewd_travel,kewd_travel|0x20;
+		set kewd_comodo,0;
+	}
+	if(kewd_clockTower) {
+		set kewd_travel,kewd_travel|0x40;
+		set kewd_clockTower,0;
+	}
+	if(kewd_coalMines) {
+		set kewd_travel,kewd_travel|0x80;
+		set kewd_coalMines,0;
+	}
+	if(kewd_culvert) {
+		set kewd_travel,kewd_travel|0x100;
+		set kewd_culvert,0;
+	}
+	if(kewd_einbech) {
+		set kewd_travel,kewd_travel|0x200;
+		set kewd_einbech,0;
+	}
+	if(kewd_geffen) {
+		set kewd_travel,kewd_travel|0x800;
+		set kewd_geffen,0;
+	}
+	if(kewd_glastHeim) {
+		set kewd_travel,kewd_travel|0x1000;
+		set kewd_glastHeim,0;
+	}
+	if(kewd_gonRyun) {
+		set kewd_travel,kewd_travel|0x2000;
+		set kewd_gonRyun,0;
+	}
+	if(kewd_hiddenTemple) {
+		set kewd_travel,kewd_travel|0x4000;
+		set kewd_hiddenTemple,0;
+	}
+	if(kewd_juperos) {
+		set kewd_travel,kewd_travel|0x8000;
+		set kewd_juperos,0;
+	}
+	if(kewd_lightHalzen) {
+		set kewd_travel,kewd_travel|0x10000;
+		set kewd_lightHalzen,0;
+	}
+	if(kewd_louYang) {
+		set kewd_travel,kewd_travel|0x20000;
+		set kewd_louYang,0;
+	}
+	if(kewd_magma) {
+		set kewd_travel,kewd_travel|0x40000;
+		set kewd_magma,0;
+	}
+	if(kewd_orc) {
+		set kewd_travel,kewd_travel|0x80000;
+		set kewd_orc,0;
+	}
+	if(kewd_payon) {
+		set kewd_travel,kewd_travel|0x100000;
+		set kewd_payon,0;
+	}
+	if(kewd_pyramid) {
+		set kewd_travel,kewd_travel|0x200000;
+		set kewd_pyramid,0;
+	}
+	if(kewd_sphinx) {
+		set kewd_travel,kewd_travel|0x400000;
+		set kewd_sphinx,0;
+	}
+	if(kewd_sunkenShip) {
+		set kewd_travel,kewd_travel|0x800000;
+		set kewd_sunkenShip,0;
+	}
+	if(kewd_thanatosTower) {
+		set kewd_travel,kewd_travel|0x1000000;
+		set kewd_thanatosTower,0;
+	}
+	if(kewd_toyFactory) {
+		set kewd_travel,kewd_travel|0x2000000;
+		set kewd_toyFactory,0;
+	}
+	if(kewd_turtleIsland) {
+		set kewd_travel,kewd_travel|0x4000000;
+		set kewd_turtleIsland,0;
+	}
+	if(kewd_umbala) {
+		set kewd_travel,kewd_travel|0x8000000;
+		set kewd_umbala,0;
+	}
+
+	if(#kewd_abyss) {
+		set #kewd_travel,#kewd_travel|0x1;
+		set #kewd_abyss,0;
+	}
+	if(#kewd_amatsu) {
+		set #kewd_travel,#kewd_travel|0x2;
+		set #kewd_amatsu,0;
+	}
+	if(#kewd_antHell) {
+		set #kewd_travel,#kewd_travel|0x4;
+		set #kewd_antHell,0;
+	}
+	if(#kewd_ayothaya) {
+		set #kewd_travel,#kewd_travel|0x8;
+		set #kewd_ayothaya,0;
+	}
+	if(#kewd_byalan) {
+		set #kewd_travel,#kewd_travel|0x10;
+		set #kewd_byalan,0;
+	}
+	if(#kewd_comodo) {
+		set #kewd_travel,#kewd_travel|0x20;
+		set #kewd_comodo,0;
+	}
+	if(#kewd_clockTower) {
+		set #kewd_travel,#kewd_travel|0x40;
+		set #kewd_clockTower,0;
+	}
+	if(#kewd_coalMines) {
+		set #kewd_travel,#kewd_travel|0x80;
+		set #kewd_coalMines,0;
+	}
+	if(#kewd_culvert) {
+		set #kewd_travel,#kewd_travel|0x100;
+		set #kewd_culvert,0;
+	}
+	if(#kewd_einbech) {
+		set #kewd_travel,#kewd_travel|0x200;
+		set #kewd_einbech,0;
+	}
+	if(#kewd_geffen) {
+		set #kewd_travel,#kewd_travel|0x800;
+		set #kewd_geffen,0;
+	}
+	if(#kewd_glastHeim) {
+		set #kewd_travel,#kewd_travel|0x1000;
+		set #kewd_glastHeim,0;
+	}
+	if(#kewd_gonRyun) {
+		set #kewd_travel,#kewd_travel|0x2000;
+		set #kewd_gonRyun,0;
+	}
+	if(#kewd_hiddenTemple) {
+		set #kewd_travel,#kewd_travel|0x4000;
+		set #kewd_hiddenTemple,0;
+	}
+	if(#kewd_juperos) {
+		set #kewd_travel,#kewd_travel|0x8000;
+		set #kewd_juperos,0;
+	}
+	if(#kewd_lightHalzen) {
+		set #kewd_travel,#kewd_travel|0x10000;
+		set #kewd_lightHalzen,0;
+	}
+	if(#kewd_louYang) {
+		set #kewd_travel,#kewd_travel|0x20000;
+		set #kewd_louYang,0;
+	}
+	if(#kewd_magma) {
+		set #kewd_travel,#kewd_travel|0x40000;
+		set #kewd_magma,0;
+	}
+	if(#kewd_orc) {
+		set #kewd_travel,#kewd_travel|0x80000;
+		set #kewd_orc,0;
+	}
+	if(#kewd_payon) {
+		set #kewd_travel,#kewd_travel|0x100000;
+		set #kewd_payon,0;
+	}
+	if(#kewd_pyramid) {
+		set #kewd_travel,#kewd_travel|0x200000;
+		set #kewd_pyramid,0;
+	}
+	if(#kewd_sphinx) {
+		set #kewd_travel,#kewd_travel|0x400000;
+		set #kewd_sphinx,0;
+	}
+	if(#kewd_sunkenShip) {
+		set #kewd_travel,#kewd_travel|0x800000;
+		set #kewd_sunkenShip,0;
+	}
+	if(#kewd_thanatosTower) {
+		set #kewd_travel,#kewd_travel|0x1000000;
+		set #kewd_thanatosTower,0;
+	}
+	if(#kewd_toyFactory) {
+		set #kewd_travel,#kewd_travel|0x2000000;
+		set #kewd_toyFactory,0;
+	}
+	if(#kewd_turtleIsland) {
+		set #kewd_travel,#kewd_travel|0x4000000;
+		set #kewd_turtleIsland,0;
+	}
+	if(#kewd_umbala) {
+		set #kewd_travel,#kewd_travel|0x8000000;
+		set #kewd_umbala,0;
+	}
+
+// End transition code.
 	if ($@kewd_travel > 1) {
-		if (@map$ == "hu_fild05.gat" || kewd_abyss)
-			set #kewd_abyss,1;
-		if (@map$ == "ama_in02.gat" || kewd_amatsu)
-			set #kewd_amatsu,1;
-		if (@map$ == "moc_fild04.gat" || @map$ == "moc_fild15.gat" || kewd_antHell)
-			set #kewd_antHell,1;
-		if (@map$ == "ayo_fild02.gat" || kewd_ayothaya)
-			set #kewd_ayothaya,1;
-		if (@map$ == "izlu2dun.gat" || kewd_byalan)
-			set #kewd_byalan,1;
-		if (@map$ == "comodo.gat" || @map$ == "cmd_fild01.gat" || kewd_comodo)
-			set #kewd_comodo,1;
-		if (@map$ == "aldebaran.gat" || kewd_clockTower)
-			set #kewd_clockTower,1;
-		if (@map$ == "mjolnir_02.gat" || kewd_coalMines)
-			set #kewd_coalMines,1;
-		if (@map$ == "prt_fild05.gat" || kewd_culvert)
-			set #kewd_culvert,1;
-		if (@map$ == "einbech.gat" || kewd_einbech)
-			set #kewd_einbech,1;
-		if (@map$ == "gef_tower.gat" || kewd_geffen)
-			set #kewd_geffen,1;
-		if (@map$ == "glast_01.gat" || kewd_glastHeim)
-			set #kewd_glastHeim,1;
-		if (@map$ == "gonryun.gat" || kewd_gonRyun)
-			set #kewd_gonRyun,1;
-		if (@map$ == "prt_fild01.gat" || kewd_hiddenTemple)
-			set #kewd_hiddenTemple,1;
-		if (@map$ == "jupe_cave.gat" || kewd_juperos)
-			set #kewd_juperos,1;
-		if (@map$ == "lighthalzen.gat" || kewd_lightHalzen)
-			set #kewd_lightHalzen,1;
-		if (@map$ == "louyang.gat" || kewd_louYang)
-			set #kewd_louYang,1;
-		if (@map$ == "yuno_fild03.gat" || kewd_magma)
-			set #kewd_magma,1;
-		if (@map$ == "in_orcs01.gat" || kewd_orc)
-			set #kewd_orc,1;
-		if (@map$ == "pay_arche.gat" || kewd_payon)
-			set #kewd_payon,1;
-		if (@map$ == "moc_ruins.gat" || kewd_pyramid)
-			set #kewd_pyramid,1;
-		if (@map$ == "moc_fild19.gat" || kewd_sphinx)
-			set #kewd_sphinx,1;
-		if (@map$ == "alb2trea.gat" || kewd_sunkenShip)
-			set #kewd_sunkenShip,1;
-		if (@map$ == "tha_t01.gat" || kewd_thanatosTower)
-			set #kewd_thanatosTower,1;
-		if (@map$ == "xmas.gat" || kewd_toyFactory)
-			set #kewd_toyFactory,1;
-		if (@map$ == "tur_dun01.gat" || kewd_turtleIsland)
-			set #kewd_turtleIsland,1;
-		if (@map$ == "umbala.gat" || kewd_umbala)
-			set #kewd_umbala,1;
+		if (@map$ == "hu_fild05.gat" || kewd_travel&0x1)
+			set #kewd_travel,#kewd_travel|0x1;
+		if (@map$ == "ama_in02.gat" || kewd_travel&0x2)
+			set #kewd_travel,#kewd_travel|0x2;
+		if (@map$ == "moc_fild04.gat" || @map$ == "moc_fild15.gat" || kewd_travel&0x4)
+			set #kewd_travel,#kewd_travel|0x4;
+		if (@map$ == "ayo_fild02.gat" || kewd_travel&0x8)
+			set #kewd_travel,#kewd_travel|0x8;
+		if (@map$ == "izlu2dun.gat" || kewd_travel&0x10)
+			set #kewd_travel,#kewd_travel|0x10;
+		if (@map$ == "comodo.gat" || @map$ == "cmd_fild01.gat" || kewd_travel&0x20)
+			set #kewd_travel,#kewd_travel|0x20;
+		if (@map$ == "aldebaran.gat" || kewd_travel&0x40)
+			set #kewd_travel,#kewd_travel|0x40;
+		if (@map$ == "mjolnir_02.gat" || kewd_travel&0x80)
+			set #kewd_travel,#kewd_travel|0x80;
+		if (@map$ == "prt_fild05.gat" || kewd_travel&0x100)
+			set #kewd_travel,#kewd_travel|0x100;
+		if (@map$ == "einbech.gat" || kewd_travel&0x200)
+			set #kewd_travel,#kewd_travel|0x200;
+		if (@map$ == "gef_tower.gat" || kewd_travel&0x800)
+			set #kewd_travel,#kewd_travel|0x800;
+		if (@map$ == "glast_01.gat" || kewd_travel&0x1000)
+			set #kewd_travel,#kewd_travel|0x1000;
+		if (@map$ == "gonryun.gat" || kewd_travel&0x2000)
+			set #kewd_travel,#kewd_travel|0x2000;
+		if (@map$ == "prt_fild01.gat" || kewd_travel&0x4000)
+			set #kewd_travel,#kewd_travel|0x4000;
+		if (@map$ == "jupe_cave.gat" || kewd_travel&0x8000)
+			set #kewd_travel,#kewd_travel|0x8000;
+		if (@map$ == "lighthalzen.gat" || kewd_travel&0x10000)
+			set #kewd_travel,#kewd_travel|0x10000;
+		if (@map$ == "louyang.gat" || kewd_travel&0x20000)
+			set #kewd_travel,#kewd_travel|0x20000;
+		if (@map$ == "yuno_fild03.gat" || kewd_travel&0x40000)
+			set #kewd_travel,#kewd_travel|0x40000;
+		if (@map$ == "in_orcs01.gat" || kewd_travel&0x80000)
+			set #kewd_travel,#kewd_travel|0x80000;
+		if (@map$ == "pay_arche.gat" || kewd_travel&0x100000)
+			set #kewd_travel,#kewd_travel|0x100000;
+		if (@map$ == "moc_ruins.gat" || kewd_travel&0x200000)
+			set #kewd_travel,#kewd_travel|0x200000;
+		if (@map$ == "moc_fild19.gat" || kewd_travel&0x400000)
+			set #kewd_travel,#kewd_travel|0x400000;
+		if (@map$ == "alb2trea.gat" || kewd_travel&0x800000)
+			set #kewd_travel,#kewd_travel|0x800000;
+		if (@map$ == "tha_t01.gat" || kewd_travel&0x1000000)
+			set #kewd_travel,#kewd_travel|0x1000000;
+		if (@map$ == "xmas.gat" || kewd_travel&0x2000000)
+			set #kewd_travel,#kewd_travel|0x2000000;
+		if (@map$ == "tur_dun01.gat" || kewd_travel&0x4000000)
+			set #kewd_travel,#kewd_travel|0x4000000;
+		if (@map$ == "umbala.gat" || kewd_travel&0x8000000)
+			set #kewd_travel,#kewd_travel|0x8000000;
 	} else {
 		if (@map$ == "hu_fild05.gat")
-			set kewd_abyss,1;
+			set kewd_travel,kewd_travel|0x1;
 		if (@map$ == "ama_in02.gat")
-			set kewd_amatsu,1;
+			set kewd_travel,kewd_travel|0x2;
 		if (@map$ == "moc_fild04.gat" || @map$ == "moc_fild15.gat")
-			set kewd_antHell,1;
+			set kewd_travel,kewd_travel|0x4;
 		if (@map$ == "ayo_fild02.gat")
-			set kewd_ayothaya,1;
+			set kewd_travel,kewd_travel|0x8;
 		if (@map$ == "izlu2dun.gat")
-			set kewd_byalan,1;
+			set kewd_travel,kewd_travel|0x10;
 		if (@map$ == "comodo.gat" || @map$ == "cmd_fild01.gat")
-			set kewd_comodo,1;
+			set kewd_travel,kewd_travel|0x20;
 		if (@map$ == "aldebaran.gat")
-			set kewd_clockTower,1;
+			set kewd_travel,kewd_travel|0x40;
 		if (@map$ == "mjolnir_02.gat")
-			set kewd_coalMines,1;
+			set kewd_travel,kewd_travel|0x80;
 		if (@map$ == "prt_fild05.gat")
-			set kewd_culvert,1;
+			set kewd_travel,kewd_travel|0x100;
 		if (@map$ == "einbech.gat")
-			set kewd_einbech,1;
+			set kewd_travel,kewd_travel|0x200;
 		if (@map$ == "gef_tower.gat")
-			set kewd_geffen,1;
+			set kewd_travel,kewd_travel|0x800;
 		if (@map$ == "glast_01.gat")
-			set kewd_glastHeim,1;
+			set kewd_travel,kewd_travel|0x1000;
 		if (@map$ == "gonryun.gat")
-			set kewd_gonRyun,1;
+			set kewd_travel,kewd_travel|0x2000;
 		if (@map$ == "prt_fild01.gat")
-			set kewd_hiddenTemple,1;
+			set kewd_travel,kewd_travel|0x4000;
 		if (@map$ == "jupe_cave.gat")
-			set kewd_juperos,1;
+			set kewd_travel,kewd_travel|0x8000;
 		if (@map$ == "lighthalzen.gat")
-			set kewd_lightHalzen,1;
+			set kewd_travel,kewd_travel|0x10000;
 		if (@map$ == "louyang.gat")
-			set kewd_louYang,1;
+			set kewd_travel,kewd_travel|0x20000;
 		if (@map$ == "yuno_fild03.gat")
-			set kewd_magma,1;
+			set kewd_travel,kewd_travel|0x40000;
 		if (@map$ == "in_orcs01.gat")
-			set kewd_orc,1;
+			set kewd_travel,kewd_travel|0x80000;
 		if (@map$ == "pay_arche.gat")
-			set kewd_payon,1;
+			set kewd_travel,kewd_travel|0x100000;
 		if (@map$ == "moc_ruins.gat")
-			set kewd_pyramid,1;
+			set kewd_travel,kewd_travel|0x200000;
 		if (@map$ == "moc_fild19.gat")
-			set kewd_sphinx,1;
+			set kewd_travel,kewd_travel|0x400000;
 		if (@map$ == "alb2trea.gat")
-			set kewd_sunkenShip,1;
+			set kewd_travel,kewd_travel|0x800000;
 		if (@map$ == "tha_t01.gat")
-			set kewd_thanatosTower,1;
+			set kewd_travel,kewd_travel|0x1000000;
 		if (@map$ == "xmas.gat")
-			set kewd_toyFactory,1;
+			set kewd_travel,kewd_travel|0x2000000;
 		if (@map$ == "tur_dun01.gat")
-			set kewd_turtleIsland,1;
+			set kewd_travel,kewd_travel|0x4000000;
 		if (@map$ == "umbala.gat")
-			set kewd_umbala,1;
+			set kewd_travel,kewd_travel|0x8000000;
 	}
 	return;
 }

+ 302 - 97
npc/custom/eAAC_Scripts/kafraExpress/ke_warp_town.txt

@@ -3,14 +3,36 @@
 //===== By: ================================================== 
 //= Skotlex 
 //===== Current Version: ===================================== 
-//= 1.8
+//= 2.1
 //===== Compatible With: ===================================== 
-//= eAthena SVN R3424+, RO Episode 8+ (LightHalzen)
+//= eAthena SVN R3424+, RO Episode 8+ (Hugel)
 //===== Description: ========================================= 
 //= Part of the Kafra Express Script Package.
 //= Offers warp services to towns.
 //===== Additional Comments: ================================= 
 //= See config.txt for configuration.
+//= Flag values used for towns:
+//= 0x00000001 Alberta
+//= 0x00000002 AlDeBaran
+//= 0x00000004 Amatsu
+//= 0x00000008 Ayothaya
+//= 0x00000010 Comodo
+//= 0x00000020 Einbech
+//= 0x00000040 Einbroch
+//= 0x00000080 Geffen
+//= 0x00000100 Gon Ryun
+//= 0x00000200 Hugel
+//= 0x00000400 Izlude
+//= 0x00000800 Jawaii
+//= 0x00001000 LightHalzen
+//= 0x00002000 Lou Yang
+//= 0x00004000 Lutie
+//= 0x00008000 Morocc
+//= 0x00010000 Niflheim
+//= 0x00020000 Payon
+//= 0x00040000 Prontera
+//= 0x00080000 Umbala
+//= 0x00100000 Yuno
 //============================================================ 
 
 -	script	keInit_warpTown	{
@@ -45,6 +67,7 @@ function	script	F_keWarpTown	{
 				"- Geffen ("+@cost+"z/"+(getmapusers("geffen.gat")+getmapusers("geffen_in.gat")+getmapusers("gef_tower.gat"))
 					+" "+$@ked_users$+")",
 				"- Gon Ryun ("+@cost+"z/"+(getmapusers("gonryun.gat")+getmapusers("gon_in.gat"))+" "+$@ked_users$+")",
+				"- Hugel ("+@cost+"z/"+(getmapusers("hugel.gat")+getmapusers("hu_in01.gat"))+" "+$@ked_users$+")",
 				"- Izlude ("+@cost+"z/"+(getmapusers("izlude.gat")+getmapusers("izlude_in.gat"))+" "+$@ked_users$+")",
 				"- Jawaii ("+@cost+"z/"+(getmapusers("jawaii.gat")+getmapusers("jawaii_in.gat"))+" "+$@ked_users$+")",
 				"- LightHalzen ("+@cost+"z/"+(getmapusers("lighthalzen.gat")+getmapusers("lhz_in01.gat")
@@ -52,7 +75,7 @@ function	script	F_keWarpTown	{
 				"- Lou Yang ("+@cost+"z/"+(getmapusers("louyang.gat")+getmapusers("lou_in01.gat")+getmapusers("lou_in02.gat"))
 					+" "+$@ked_users$+")",
 				"- Lutie ("+@cost+"z/"+(getmapusers("xmas.gat")+getmapusers("xmas_in.gat"))+" "+$@ked_users$+")",
-				"- Morroc ("+@cost+"z/"+(getmapusers("morocc.gat")+getmapusers("morocc_in.gat")+getmapusers("moc_castle.gat"))
+				"- Morocc ("+@cost+"z/"+(getmapusers("morocc.gat")+getmapusers("morocc_in.gat")+getmapusers("moc_castle.gat"))
 					+" "+$@ked_users$+")",
 				"- Niflheim ("+@niflcost+"z/"+(getmapusers("niflheim.gat")+getmapusers("nif_in.gat"))+" "+$@ked_users$+")",
 				"- Payon ("+@cost+"z/"+(getmapusers("payon.gat")+getmapusers("payon_in01.gat")+getmapusers("payon_in02.gat"))
@@ -75,12 +98,13 @@ function	script	F_keWarpTown	{
 				"- Einbroch ("+@cost+"z)",
 				"- Geffen ("+@cost+"z)",
 				"- Gon Ryun ("+@cost+"z)",
+				"- Hugel ("+@cost+"z)",
 				"- Izlude ("+@cost+"z)",
 				"- Jawaii ("+@cost+"z)",
 				"- LightHalzen ("+@cost+"z)",
 				"- Lou Yang ("+@cost+"z)",
 				"- Lutie ("+@cost+"z)",
-				"- Morroc ("+@cost+"z)",
+				"- Morocc ("+@cost+"z)",
 				"- Niflheim ("+@niflcost+"z)",
 				"- Payon ("+@cost+"z)",
 				"- Prontera ("+@cost+"z)",
@@ -90,67 +114,71 @@ function	script	F_keWarpTown	{
 		}
 		switch (@kmenu) {
 		case 2: //Alberta
-			if (SF_check(ketw_alberta, #ketw_alberta))
+			if (SF_check(0x1))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"alberta.gat",117,56;
 			break;
 		case 3: //AlDeBaran
-			if (SF_check(ketw_aldebaran, #ketw_aldebaran))
+			if (SF_check(0x2))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"aldebaran.gat",139,124;
 			break;
 		case 4: //Amatsu
-			if (SF_check(ketw_amatsu, #ketw_amatsu))
+			if (SF_check(0x4))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"amatsu.gat",197,88;
 			break;
 		case 5: //Ayathoya
-			if (SF_check(ketw_ayothaya, #ketw_ayothaya))
+			if (SF_check(0x8))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"ayothaya.gat",202,174;
 			break;
 		case 6: //Comodo
-			if (SF_check(ketw_comodo, #ketw_comodo))
+			if (SF_check(0x10))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"comodo.gat",189,150;
 			break;
 		case 7: //Einbech
-			if (SF_check(ketw_einbech, #ketw_einbech))
-				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbech.gat",165,127;
+			if (SF_check(0x20))
+				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbech.gat",137,220;
 			break;
 		case 8: //Einbroch
-			if (SF_check(ketw_einbroch, #ketw_einbroch))
+			if (SF_check(0x40))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbroch.gat",64,199;
 			break;
 		case 9: //Geffen
-			if (SF_check(ketw_geffen, #ketw_geffen))
+			if (SF_check(0x80))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"geffen.gat",120,66;
 			break;
 		case 10: //GonRyun
-			if (SF_check(ketw_gonryun, #ketw_gonryun))
+			if (SF_check(0x100))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"gonryun.gat",160,180;
 			break;
-		case 11: //Izlude
-			if (SF_check(ketw_izlude, #ketw_izlude))
+		case 11: //Hugel
+			if (SF_check(0x200))
+				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"hugel.gat",96,105;
+			break;
+		case 12: //Izlude
+			if (SF_check(0x400))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"izlude.gat",127,97;
 			break;
-		case 12: //Jawaii
-			if (SF_check(ketw_jawaii, #ketw_jawaii))
+		case 13: //Jawaii
+			if (SF_check(0x800))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"jawaii.gat",214,223;
 			break;
-		case 13: //LightHalzen
-			if (SF_check(ketw_lighthalzen, #ketw_lighthalzen))
+		case 14: //LightHalzen
+			if (SF_check(0x1000))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"lighthalzen.gat",158,92;
 			break;
-		case 14: //LouYang
-			if (SF_check(ketw_louyang, #ketw_louyang))
+		case 15: //LouYang
+			if (SF_check(0x2000))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"louyang.gat",218,118;
 			break;
-		case 15: //Lutie
-			if (SF_check(ketw_lutie, #ketw_lutie))
+		case 16: //Lutie
+			if (SF_check(0x4000))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"xmas.gat",148,133;
 			break;
-		case 16: //Morroc
-			if (SF_check(ketw_morroc, #ketw_morroc))
+		case 17: //Morocc
+			if (SF_check(0x8000))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"morocc.gat",162,91;
 			break;
-		case 17: //Niflheim
-			if (SF_check(ketw_niflheim, #ketw_niflheim)) {
+		case 18: //Niflheim
+			if (SF_check(0x10000)) {
 				if (nif_q_done != 1) {
 					mes "...?";
 					callfunc "F_keIntro", e_no, "For some reason I can't warp you there!";
@@ -158,19 +186,20 @@ function	script	F_keWarpTown	{
 					callfunc "F_keWarp",$@kewt_niflCost,$@kewd_discount,e_yawn,"niflheim.gat",194,185;
 			}
 			break;
-		case 18: //Payon
-			if (SF_check(ketw_payon, #ketw_payon))
+		case 19: //Payon
+			if (SF_check(0x20000))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"payon.gat",159,181;
-		case 19: //Prontera
-			if (SF_check(ketw_prontera, #ketw_prontera))
+			break;
+		case 20: //Prontera
+			if (SF_check(0x40000))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"prontera.gat",156,175;
 			break;
-		case 20: //Umbala
-			if (SF_check(ketw_umbala, #ketw_umbala))
+		case 21: //Umbala
+			if (SF_check(0x80000))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"umbala.gat",88,153;
 			break;
-		case 21: //Yuno
-			if (SF_check(ketw_yuno, #ketw_yuno))
+		case 22: //Yuno
+			if (SF_check(0x100000))
 				SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"yuno.gat",158,77;
 			break;
 		}
@@ -181,7 +210,7 @@ function	script	F_keWarpTown	{
 //Checks if the character can warp to that town taking into consideration
 //traveller's mode.
 function SF_check {
-	if ($@kewt_travel && getarg(0) == 0 && getarg(1) == 0) {
+	if ($@kewt_travel && !((kewt_travel|#kewt_travel)&getarg(0))) {
 		callfunc "F_keIntro", e_sry, "Sorry, but we can only warp you to towns you have saved in at least once.";
 		return 0;
 	}
@@ -208,88 +237,264 @@ function SF_warp {
 //Invoked when we want to add a map to the list of travelled-to towns
 function	script	F_keAddTravelTown	{
 	set @map$, getarg(0);
+// Temporary code to update variables from old format to new.
+	if(ketw_alberta) {
+		set kewt_travel,kewt_travel|0x1;
+		set ketw_alberta,0;
+	}
+	if(ketw_aldebaran) {
+		set kewt_travel,kewt_travel|0x2;
+		set ketw_aldebaran,0;
+	}
+	if(ketw_amatsu) {
+		set kewt_travel,kewt_travel|0x4;
+		set ketw_amatsu,0;
+	}
+	if(ketw_ayothaya) {
+		set kewt_travel,kewt_travel|0x8;
+		set ketw_ayothaya,0;
+	}
+	if(ketw_comodo) {
+		set kewt_travel,kewt_travel|0x10;
+		set ketw_comodo,0;
+	}
+	if(ketw_einbech) {
+		set kewt_travel,kewt_travel|0x20;
+		set ketw_einbech,0;
+	}
+	if(ketw_einbroch) {
+		set kewt_travel,kewt_travel|0x40;
+		set ketw_einbroch,0;
+	}
+	if(ketw_geffen) {
+		set kewt_travel,kewt_travel|0x80;
+		set ketw_geffen,0;
+	}
+	if(ketw_gonryun) {
+		set kewt_travel,kewt_travel|0x100;
+		set ketw_gonryun,0;
+	}
+	if(ketw_hugel) {
+		set kewt_travel,kewt_travel|0x200;
+		set ketw_hugel,0;
+	}
+	if(ketw_izlude) {
+		set kewt_travel,kewt_travel|0x400;
+		set ketw_izlude,0;
+	}
+	if(ketw_jawaii) {
+		set kewt_travel,kewt_travel|0x800;
+		set ketw_jawaii,0;
+	}
+	if(ketw_lighthalzen) {
+		set kewt_travel,kewt_travel|0x1000;
+		set ketw_lighthalzen,0;
+	}
+	if(ketw_louyang) {
+		set kewt_travel,kewt_travel|0x2000;
+		set ketw_louyang,0;
+	}
+	if(ketw_lutie) {
+		set kewt_travel,kewt_travel|0x4000;
+		set ketw_lutie,0;
+	}
+	if(ketw_morroc) {
+		set kewt_travel,kewt_travel|0x8000;
+		set ketw_morroc,0;
+	}
+	if(ketw_niflheim) {
+		set kewt_travel,kewt_travel|0x10000;
+		set ketw_niflheim,0;
+	}
+	if(ketw_payon) {
+		set kewt_travel,kewt_travel|0x20000;
+		set ketw_payon,0;
+	}
+	if(ketw_prontera) {
+		set kewt_travel,kewt_travel|0x40000;
+		set ketw_prontera,0;
+	}
+	if(ketw_umbala) {
+		set kewt_travel,kewt_travel|0x80000;
+		set ketw_umbala,0;
+	}
+	if(ketw_yuno) {
+		set kewt_travel,kewt_travel|0x100000;
+		set ketw_yuno,0;
+	}
+
+	if(#ketw_alberta) {
+		set #kewt_travel,#kewt_travel|0x1;
+		set #ketw_alberta,0;
+	}
+	if(#ketw_aldebaran) {
+		set #kewt_travel,#kewt_travel|0x2;
+		set #ketw_aldebaran,0;
+	}
+	if(#ketw_amatsu) {
+		set #kewt_travel,#kewt_travel|0x4;
+		set #ketw_amatsu,0;
+	}
+	if(#ketw_ayothaya) {
+		set #kewt_travel,#kewt_travel|0x8;
+		set #ketw_ayothaya,0;
+	}
+	if(#ketw_comodo) {
+		set #kewt_travel,#kewt_travel|0x10;
+		set #ketw_comodo,0;
+	}
+	if(#ketw_einbech) {
+		set #kewt_travel,#kewt_travel|0x20;
+		set #ketw_einbech,0;
+	}
+	if(#ketw_einbroch) {
+		set #kewt_travel,#kewt_travel|0x40;
+		set #ketw_einbroch,0;
+	}
+	if(#ketw_geffen) {
+		set #kewt_travel,#kewt_travel|0x80;
+		set #ketw_geffen,0;
+	}
+	if(#ketw_gonryun) {
+		set #kewt_travel,#kewt_travel|0x100;
+		set #ketw_gonryun,0;
+	}
+	if(#ketw_hugel) {
+		set #kewt_travel,#kewt_travel|0x200;
+		set #ketw_hugel,0;
+	}
+	if(#ketw_izlude) {
+		set #kewt_travel,#kewt_travel|0x400;
+		set #ketw_izlude,0;
+	}
+	if(#ketw_jawaii) {
+		set #kewt_travel,#kewt_travel|0x800;
+		set #ketw_jawaii,0;
+	}
+	if(#ketw_lighthalzen) {
+		set #kewt_travel,#kewt_travel|0x1000;
+		set #ketw_lighthalzen,0;
+	}
+	if(#ketw_louyang) {
+		set #kewt_travel,#kewt_travel|0x2000;
+		set #ketw_louyang,0;
+	}
+	if(#ketw_lutie) {
+		set #kewt_travel,#kewt_travel|0x4000;
+		set #ketw_lutie,0;
+	}
+	if(#ketw_morroc) {
+		set #kewt_travel,#kewt_travel|0x8000;
+		set #ketw_morroc,0;
+	}
+	if(#ketw_niflheim) {
+		set #kewt_travel,#kewt_travel|0x10000;
+		set #ketw_niflheim,0;
+	}
+	if(#ketw_payon) {
+		set #kewt_travel,#kewt_travel|0x20000;
+		set #ketw_payon,0;
+	}
+	if(#ketw_prontera) {
+		set #kewt_travel,#kewt_travel|0x40000;
+		set #ketw_prontera,0;
+	}
+	if(#ketw_umbala) {
+		set #kewt_travel,#kewt_travel|0x80000;
+		set #ketw_umbala,0;
+	}
+	if(#ketw_yuno) {
+		set #kewt_travel,#kewt_travel|0x100000;
+		set #ketw_yuno,0;
+	}
+// End update code.
+
 	if ($@kewt_travel > 1) {
-		if (@map$ == "alberta.gat" || ketw_alberta)
-			set #ketw_alberta,1;
-		if (@map$ == "aldebaran.gat" || ketw_aldebaran)
-			set #ketw_aldebaran,1;
-		if (@map$ == "amatsu.gat" || ketw_amatsu)
-			set #ketw_amatsu,1;
-		if (@map$ == "ayothaya.gat" || ketw_ayothaya)
-			set #ketw_ayothaya,1;
-		if (@map$ == "comodo.gat" || ketw_comodo)
-			set #ketw_comodo,1;
-		if (@map$ == "einbech.gat" || ketw_einbech)
-			set #ketw_einbech,1;
-		if (@map$ == "einbroch.gat" || ketw_einbroch)
-			set #ketw_einbroch,1;
-		if (@map$ == "geffen.gat" || ketw_geffen)
-			set #ketw_geffen,1;
-		if (@map$ == "gonryun.gat" || ketw_gonryun)
-			set #ketw_gonryun,1;
-		if (@map$ == "izlude.gat" || ketw_izlude)
-			set #ketw_izlude,1;
-		if (@map$ == "jawaii.gat" || ketw_jawaii)
-			set #ketw_jawaii,1;
-		if (@map$ == "lighthalzen.gat" || ketw_lighthalzen)
-			set #ketw_lighthalzen,1;
-		if (@map$ == "louyang.gat" || ketw_louyang)
-			set #ketw_louyang,1;
-		if (@map$ == "xmas.gat" || ketw_lutie)
-			set #ketw_lutie,1;
-		if (@map$ == "morocc.gat" || ketw_morroc)
-			set #ketw_morroc,1;
-		if (@map$ == "niflheim.gat" || ketw_niflheim)
-			set #ketw_niflheim,1;
-		if (@map$ == "payon.gat" || ketw_payon)
-			set #ketw_payon,1;
-		if (@map$ == "prontera.gat" || ketw_prontera)
-			set #ketw_prontera,1;
-		if (@map$ == "umbala.gat" || ketw_umbala)
-			set #ketw_umbala,1;
-		if (@map$ == "yuno.gat" || ketw_yuno)
-			set #ketw_yuno,1;
+		if (@map$ == "alberta.gat" || kewt_travel&0x1)
+			set #kewt_travel,#kewt_travel|0x1;
+		if (@map$ == "aldebaran.gat" || kewt_travel&0x2)
+			set #kewt_travel,#kewt_travel|0x2;
+		if (@map$ == "amatsu.gat" || kewt_travel&0x4)
+			set #kewt_travel,#kewt_travel|0x4;
+		if (@map$ == "ayothaya.gat" || kewt_travel&0x8)
+			set #kewt_travel,#kewt_travel|0x8;
+		if (@map$ == "comodo.gat" || kewt_travel&0x10)
+			set #kewt_travel,#kewt_travel|0x10;
+		if (@map$ == "einbech.gat" || kewt_travel&0x20)
+			set #kewt_travel,#kewt_travel|0x20;
+		if (@map$ == "einbroch.gat" || kewt_travel&0x40)
+			set #kewt_travel,#kewt_travel|0x40;
+		if (@map$ == "geffen.gat" || kewt_travel&0x80)
+			set #kewt_travel,#kewt_travel|0x80;
+		if (@map$ == "gonryun.gat" || kewt_travel&0x100)
+			set #kewt_travel,#kewt_travel|0x100;
+		if (@map$ == "hugel.gat" || kewt_travel&0x200)
+			set #kewt_travel,#kewt_travel|0x200;
+		if (@map$ == "izlude.gat" || kewt_travel&0x400)
+			set #kewt_travel,#kewt_travel|0x400;
+		if (@map$ == "jawaii.gat" || kewt_travel&0x800)
+			set #kewt_travel,#kewt_travel|0x800;
+		if (@map$ == "lighthalzen.gat" || kewt_travel&1000)
+			set #kewt_travel,#kewt_travel|0x1000;
+		if (@map$ == "louyang.gat" || kewt_travel&0x2000)
+			set #kewt_travel,#kewt_travel|0x2000;
+		if (@map$ == "xmas.gat" || kewt_travel&0x4000)
+			set #kewt_travel,#kewt_travel|0x4000;
+		if (@map$ == "morocc.gat" || kewt_travel&0x8000)
+			set #kewt_travel,#kewt_travel|0x8000;
+		if (@map$ == "niflheim.gat" || kewt_travel&0x10000)
+			set #kewt_travel,#kewt_travel|0x10000;
+		if (@map$ == "payon.gat" || kewt_travel&0x20000)
+			set #kewt_travel,#kewt_travel|0x20000;
+		if (@map$ == "prontera.gat" || kewt_travel&0x40000)
+			set #kewt_travel,#kewt_travel|0x40000;
+		if (@map$ == "umbala.gat" || kewt_travel&0x80000)
+			set #kewt_travel,#kewt_travel|0x80000;
+		if (@map$ == "yuno.gat" || kewt_travel&0x100000)
+			set #kewt_travel,#kewt_travel|0x100000;
 	} else {
 		if (@map$ == "alberta.gat")
-			set ketw_alberta,1;
+			set kewt_travel,kewt_travel|0x1;
 		if (@map$ == "aldebaran.gat")
-			set ketw_aldebaran,1;
+			set kewt_travel,kewt_travel|0x2;
 		if (@map$ == "amatsu.gat")
-			set ketw_amatsu,1;
+			set kewt_travel,kewt_travel|0x4;
 		if (@map$ == "ayothaya.gat")
-			set ketw_ayothaya,1;
+			set kewt_travel,kewt_travel|0x8;
 		if (@map$ == "comodo.gat")
-			set ketw_comodo,1;
+			set kewt_travel,kewt_travel|0x10;
 		if (@map$ == "einbech.gat")
-			set ketw_einbech,1;
+			set kewt_travel,kewt_travel|0x20;
 		if (@map$ == "einbroch.gat")
-			set ketw_einbroch,1;
+			set kewt_travel,kewt_travel|0x40;
 		if (@map$ == "geffen.gat")
-			set ketw_geffen,1;
+			set kewt_travel,kewt_travel|0x80;
 		if (@map$ == "gonryun.gat")
-			set ketw_gonryun,1;
+			set kewt_travel,kewt_travel|0x100;
+		if (@map$ == "hugel.gat")
+			set kewt_travel,kewt_travel|0x200;
 		if (@map$ == "izlude.gat")
-			set ketw_izlude,1;
+			set kewt_travel,kewt_travel|0x400;
 		if (@map$ == "jawaii.gat")
-			set ketw_jawaii,1;
+			set kewt_travel,kewt_travel|0x800;
 		if (@map$ == "lighthalzen.gat")
-			set ketw_lighthalzen,1;
+			set kewt_travel,kewt_travel|0x1000;
 		if (@map$ == "louyang.gat")
-			set ketw_louyang,1;
+			set kewt_travel,kewt_travel|0x2000;
 		if (@map$ == "xmas.gat")
-			set ketw_lutie,1;
+			set kewt_travel,kewt_travel|0x4000;
 		if (@map$ == "morocc.gat")
-			set ketw_morroc,1;
+			set kewt_travel,kewt_travel|0x8000;
 		if (@map$ == "niflheim.gat")
-			set ketw_niflheim,1;
+			set kewt_travel,kewt_travel|0x10000;
 		if (@map$ == "payon.gat")
-			set ketw_payon,1;
+			set kewt_travel,kewt_travel|0x20000;
 		if (@map$ == "prontera.gat")
-			set ketw_prontera,1;
+			set kewt_travel,kewt_travel|0x40000;
 		if (@map$ == "umbala.gat")
-			set ketw_umbala,1;
+			set kewt_travel,kewt_travel|0x80000;
 		if (@map$ == "yuno.gat")
-			set ketw_yuno,1;
+			set kewt_travel,kewt_travel|0x100000;
 	}
 	return;
 }

+ 4 - 7
npc/custom/eAAC_Scripts/kafraExpress/readme.txt

@@ -6,7 +6,7 @@ This file's purpose is to give an indepth explanation about setting up, and
 configuring the Kafra Express Script Package (KESP). It is intended to be
 viewed by a text editor using fixed-width font and 80-character long lines.
 
-Document Version v1.8 (05/February/2006)
+Document Version v1.9 (15/June/2006)
 ////////////////////////////////////////////////////////////////////////////////
 Table of Contents
 ////////////////////////////////////////////////////////////////////////////////
@@ -915,11 +915,10 @@ There are three valid values for this variable: 0, 1, 2.
 0 - Disables this mode.
 1 - Uses the mode on a per character basis; that is, each character needs to
 travel to that town and save and that unlocks warping only for that
-character (note that this mode can mean up to 15+ variables per character,
-which can become quite the overload on a large server). 
+character.
 2 - Uses the mode on a per account basis; that is, once a character has saved
 on a town, all other (and future) characters from the same account have the
-warp unlocked (uses up to 15+ variables per account).
+warp unlocked.
 
 (1) kewt_free
 -------------
@@ -960,11 +959,9 @@ Enables the traveller system. Just like the traveller's system for towns,
 you can't warp to any dungeon to which you have not visited first on foot and
 saved with the corresponding Kafra Express first.
 If 1, traveller's mode is enabled on a per character basis (so once a
-character saves, only that character has unlocked the warp). Note that this
-method stores up to 25 extra variables per character.
+character saves, only that character has unlocked the warp).
 If 2, traveller's mode is enabled on a per account basis (so once a character
 saves, all charaters of the corresponding account have the warp unlocked).
-Note that this method stores up to 25 extra variables per account.
 
 (1) kewd_deep
 -------------