Przeglądaj źródła

Moved some remaining constants into src (#2501)

* Moved all npc view constants into src

Source side the constants will use Gravity's naming standard(JT_*)
NPC side still supports the old names without JT_

* Moved all effect constants into src

Added check for effect validation to atcommand effect and all script commands using them
Removed the unused and broken function unit_changeviewsize from unit.c
Replaced a lot of hardcoded effect ids with their respective constants
Cleaned up the effect documentations

* Moved all hat effect constants into src

Added check for effect validation to script command hateffect
Lemongrass3110 7 lat temu
rodzic
commit
f42c2ff211

+ 2 - 1
conf/msg_conf/map_msg.conf

@@ -1621,7 +1621,8 @@
 1475: ---- My Channels ----
 1476: You have not joined any channels.
 
-//1477 free
+// @effect
+1477: Please enter a valid effect id in the range from %d to %d.
 
 // @partysharelvl
 1478: Party share level range has been changed successfully.

Plik diff jest za duży
+ 0 - 1152
db/const.txt


+ 15 - 5
doc/atcommands.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20160313
+//= 20171011
 //===== Description: =========================================
 //= List of available atcommands and their functions.
 //============================================================
@@ -226,14 +226,24 @@ New warp NPC 'my_warp_sample' created.
 @effect <effect ID>
 
 Creates a visual effect on or around the character.
-A list of IDs can be found in '/db/const.txt'.
-Descriptions of the effects can be found in '/doc/effect_list.txt'.
+A list of IDs and descriptions of the effects can be found in '/doc/effect_list.txt'.
 
 ---------------------------------------
 
-@misceffect
+@misceffect <effect ID>
 
-Does some visual effect on the character (more info needed).
+Does some visual effect on the character.
+Possible effect IDs:
+	0 = base level up
+	1 = job level up
+	2 = refine failure
+	3 = refine success
+	4 = game over
+	5 = pharmacy success
+	6 = pharmacy failure
+	7 = base level up (super novice)
+	8 = job level up (super novice)
+	9 = base level up (taekwon)
 
 ---------------------------------------
 

+ 2 - 2
doc/effect_list.txt

@@ -3,7 +3,7 @@
 //===== By: ==================================================
 //= rAthena Dev Team
 //===== Last Updated: ========================================
-//= 20120822
+//= 20171011
 //===== Description: =========================================
 //= A list of client-side effects sorted by ID.
 //============================================================
@@ -11,7 +11,7 @@
 The following is a compiled list of visual and sound effects which the client
 can produce when receiving a packet with id 0x1f3 (01f3 <ID>.l <type>.l).
 Each list entry contains a number and a short description of the effect.
-You can produce these effects ingame by doing "@effect <number> 22" (22=self).
+You can produce these effects ingame by doing "@effect <number>".
 It's also possible to attach effects to item/npc scripts by using 'misceffect'.
 
 Number	Description

+ 4 - 3
doc/script_commands.txt

@@ -3,7 +3,7 @@
 //===== By:==================================================
 //= rAthena Dev Team
 //===== Last Updated:========================================
-//= 20161206
+//= 20171011
 //===== Description:=========================================
 //= A reference manual for the rAthena scripting language.
 //= Commands are sorted depending on their functionality.
@@ -7343,7 +7343,7 @@ Example:
 		bindatcmd "test",strnpcinfo(3) + "::OnAtcommand";
 		end;
 	OnAtcommand:
-		specialeffect2 338;
+		specialeffect2 EF_ANGEL2;
 		end;
 	}
 
@@ -9577,7 +9577,8 @@ solution rather than sending the map and the monster_id.
 
 This will set a Hat Effect onto the player. The state field allows you to
 enable (true) or disable (false) the effect on the player.
-The Hat Effect constants can be found in db/const.txt starting with HAT_EF_*.
+The Hat Effect constants can be found in 'src/map/script_constants.h' starting
+with HAT_EF_*.
 
 Requires client 2015-05-13aRagEXE or newer.
 

+ 2 - 2
npc/custom/events/holiday/valentinesdayexp.txt

@@ -62,9 +62,9 @@ M_INFO:
 
 OnInit:
 	//559,Hand-made_Chocolate
-	setitemscript 559,"{ itemheal 50,50; if(Sex==SEX_FEMALE || @dsv == gettime(DT_HOUR)+1 || ispartneron()==0)end; set @dsv,gettime(DT_HOUR)+1; misceffect 113; }";
+	setitemscript 559,"{ itemheal 50,50; if(Sex==SEX_FEMALE || @dsv == gettime(DT_HOUR)+1 || ispartneron()==0)end; set @dsv,gettime(DT_HOUR)+1; misceffect EF_MAGNUS; }";
 	//560,Hand-made_White_Chocolate
-	setitemscript 560,"{ itemheal 50,50; if(Sex==SEX_MALE || @dsv == gettime(DT_HOUR)+1 || ispartneron()==0)end; set @dsv,gettime(DT_HOUR)+1; misceffect 113; }";
+	setitemscript 560,"{ itemheal 50,50; if(Sex==SEX_MALE || @dsv == gettime(DT_HOUR)+1 || ispartneron()==0)end; set @dsv,gettime(DT_HOUR)+1; misceffect EF_MAGNUS; }";
 
 	//2634,Wedding_Ring_M,Wedding Ring,5,,10,0,,0,,0,127918079,7,1,136,,0,0,0,{ skill 334,1; skill 335,1; skill 336,1; }
 	setitemscript 2634,"{ skill 334,1; skill 335,1; skill 336,1; if(@dsv == gettime(DT_HOUR)+1 && ispartneron()){ bonus2 bExpAddRace,5,50; bonus2 bExpAddRace,6,50; bonus2 bExpAddRace,7,50; bonus2 bExpAddRace,8,50; bonus2 bExpAddRace,1,50; } }";

+ 1 - 1
npc/custom/events/holiday/xmas_rings_event.txt

@@ -91,7 +91,7 @@ M_QUEST:
 
 OnInit:
 //Santa's Hat
-	setitemscript 2236,"{ bonus bMdef,1; bonus bLuk,1; if(isequipped(2636,2637)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect 410; end;} if(isequipped(2636)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect 72;} if(isequipped(2637)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect 338;}}";
+	setitemscript 2236,"{ bonus bMdef,1; bonus bLuk,1; if(isequipped(2636,2637)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect EF_RAINBOW; end;} if(isequipped(2636)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect EF_SPHERE;} if(isequipped(2637)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect EF_ANGEL2;}}";
 //Gold Xmas Ring
 	setitemscript 2636,"{ bonus bLoseSPWhenUnequip,30; if(isequipped(2236)==0)end; if(getskilllv(\"AL_HEAL\")){skill \"TF_HIDING\",4+isequipped(2637);}else{skill \"AL_HEAL\",1+4*isequipped(2637);} }";
 //Silver Xmas Ring

+ 57 - 56
npc/custom/official/GeffenMagicTournament.txt

@@ -183,12 +183,13 @@ OnTimer2500:
 	.@r = rand(0,1);
 	if (.@r != 0 ) { stopnpctimer; initnpctimer; end; }
 	stopnpctimer;
-	specialeffect .effects[rand(0,18)],AREA,instance_npcname(strnpcinfo(0));
+	specialeffect .effects[rand(getarraysize(.effects))],AREA,instance_npcname(strnpcinfo(0));
 	initnpctimer;
 	end;
 
 OnInit:
-	setarray .effects,97,255,28,256,29,257,244,92,32,195,258,22,62,234,89,30,225,116,94;
+	setarray .effects[0],EF_FIREPILLARBOMB,EF_FLAMELAUNCHER,EF_FROSTDIVER2,EF_FROSTWEAPON,EF_LIGHTBOLT,EF_LIGHTNINGLOADER,EF_MAGICROD,EF_METEORSTORM,EF_NAPALMBEAT;
+	setarray .effects[9],EF_PETRIFYATTACK,EF_SEISMICWEAPON,EF_SIGHT,EF_SIGHTRASHER,EF_SPELLBREAKER,EF_STORMGUST,EF_THUNDERSTORM,EF_VOLCANO,EF_WATERBALL,EF_YUFITELHIT;
 	hideonnpc strnpcinfo(0);
 	end;
 	
@@ -2289,7 +2290,7 @@ OnEnd:
 	mes "Enjoy.";
 	mes "Good luck on the next round!";
 	percentheal 100,100;
-	specialeffect2 312;
+	specialeffect2 EF_HEAL;
 	close2;
 	hideonnpc instance_npcname("Tournament Healer#1"); // 83649
 	end;
@@ -2303,13 +2304,13 @@ end;
 OnStart:
 	initnpctimer;
 		for ( .@i = 11; .@i <= 20; .@i++ ) {
-			specialeffect .effect[rand(3)], AREA, instance_npcname("#fireworks_" +.@i);
+			specialeffect .effect[getarraysize(.effect)], AREA, instance_npcname("#fireworks_" +.@i);
 		}
 	end;
 OnTimer6000:
 	initnpctimer;
 		for ( .@i = 0; .@i < 5; .@i++) {
-			specialeffect .effect[rand(3)], AREA, instance_npcname("#fireworks_" + rand(11,20));
+			specialeffect .effect[getarraysize(.effect)], AREA, instance_npcname("#fireworks_" + rand(11,20));
 		}
 	end;
 
@@ -2319,23 +2320,23 @@ OnTurn:
 
 OnWin:
 	for ( .@i = 1; .@i <= 5; .@i++ ) {
-		specialeffect 90, AREA, instance_npcname("#fireworks_f" + .@i);
+		specialeffect EF_LORD, AREA, instance_npcname("#fireworks_f" + .@i);
 	}
 	sleep 3000;
 	for ( .@i = 1; .@i <= 5; .@i++ ) {
-		specialeffect 62, AREA, instance_npcname("#fireworks_f" + .@i);
+		specialeffect EF_SIGHTRASHER, AREA, instance_npcname("#fireworks_f" + .@i);
 	}
 	sleep 500;
 	for ( .@i = 1; .@i <= 5; .@i++ ){
-		specialeffect 89, AREA, instance_npcname("#fireworks_f" + .@i);
+		specialeffect EF_STORMGUST, AREA, instance_npcname("#fireworks_f" + .@i);
 	}
 	sleep 3000;
 	for ( .@i = 1; .@i <= 5; .@i++ ) {
-		specialeffect 237, AREA, instance_npcname("#fireworks_f" + .@i);
+		specialeffect EF_VIOLENTGALE, AREA, instance_npcname("#fireworks_f" + .@i);
 	}
 	end;
 OnInstanceInit:
-	setarray .effect, 30, 89, 92;
+	setarray .effect, EF_THUNDERSTORM, EF_STORMGUST, EF_METEORSTORM;
 	end;
 }
 
@@ -4098,9 +4099,9 @@ OnTimer1000:
 	
 	switch('gmt_timer_evt1) {
 		case 1:
-			specialeffect 220, AREA, instance_npcname("Geffen Gangster#1");
-			specialeffect 220, AREA, instance_npcname("Geffen Gangster#2");
-			specialeffect 220, AREA, instance_npcname("Geffen Gangster#3");
+			specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Gangster#1");
+			specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Gangster#2");
+			specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Gangster#3");
 			npctalk "Geffen Gangster : You're pretty good...!", instance_npcname("Geffen Gangster#1");
 			npctalk "Geffen Gangster : We should stop playing around...", instance_npcname("Geffen Gangster#2");
 			npctalk "Geffen Gangster : You're gonna pay the price!", instance_npcname("Geffen Gangster#3");
@@ -4112,7 +4113,7 @@ OnTimer1000:
 			break;
 		case 8: npctalk "Iris : That's enough.", instance_npcname("Iris#Gef1"); break;
 		case 11: npctalk "Iris : I won't forgive you~!", instance_npcname("Iris#Gef1"); break;
-		case 13: specialeffect 204, AREA, instance_npcname("Iris#Gef1"); break;
+		case 13: specialeffect EF_POTION1, AREA, instance_npcname("Iris#Gef1"); break;
 		case 14:
 			npctalk "Geffen Gangster : Why hello there, are you scared?", instance_npcname("Geffen Gangster#1");
 			npctalk "Geffen Gangster : You're pretty cute. Do you want to play with us too?", instance_npcname("Geffen Gangster#2");
@@ -4128,23 +4129,23 @@ OnTimer1000:
 			break;
 		case 22: mapannounce instance_mapname("1@gef"), "Stop right there! Jerks!", 0x00ebff; break;
 		case 23: hideoffnpc instance_npcname("Chaos#Gef1"); break;
-		case 25: specialeffect 218, AREA, instance_npcname("Chaos#Gef1"); break;
+		case 25: specialeffect EF_POTION_CON, AREA, instance_npcname("Chaos#Gef1"); break;
 		case 26: npctalk "Chaos : Are you clowns harassing Iris?", instance_npcname("Chaos#Gef1"); break;
 		case 30: npctalk "Chaos : I think I need to teach someone a lesson!", instance_npcname("Chaos#Gef1"); break;
 		case 31:
-			specialeffect 60, AREA, instance_npcname("Geffen Gangster#11");
-			specialeffect 60, AREA, instance_npcname("Geffen Gangster#22");
-			specialeffect 60, AREA, instance_npcname("Geffen Gangster#33");
+			specialeffect EF_LOCKON, AREA, instance_npcname("Geffen Gangster#11");
+			specialeffect EF_LOCKON, AREA, instance_npcname("Geffen Gangster#22");
+			specialeffect EF_LOCKON, AREA, instance_npcname("Geffen Gangster#33");
 			npctalk "Chaos : Come and fight me!", instance_npcname("Chaos#Gef2");
 			hideonnpc instance_npcname("Chaos#Gef1");
 			hideoffnpc instance_npcname("Chaos#Gef2");
 			break;
 		case 34:
 			npctalk "Chaos : Bash~!!!", instance_npcname("Chaos#Gef2");
-			specialeffect 1, AREA, instance_npcname("Chaos#Gef2");
-			specialeffect 16, AREA, instance_npcname("Geffen Gangster#11");
-			specialeffect 16, AREA, instance_npcname("Geffen Gangster#22");
-			specialeffect 16, AREA, instance_npcname("Geffen Gangster#33");
+			specialeffect EF_HIT2, AREA, instance_npcname("Chaos#Gef2");
+			specialeffect EF_BASH, AREA, instance_npcname("Geffen Gangster#11");
+			specialeffect EF_BASH, AREA, instance_npcname("Geffen Gangster#22");
+			specialeffect EF_BASH, AREA, instance_npcname("Geffen Gangster#33");
 			hideonnpc instance_npcname("Geffen Gangster#11");
 			hideonnpc instance_npcname("Geffen Gangster#22");
 			hideonnpc instance_npcname("Geffen Gangster#33");
@@ -4165,14 +4166,14 @@ OnTimer1000:
 			break;
 		case 42:
 			npctalk "Chaos : I'm not done yet!! Magnum Break~!", instance_npcname("Chaos#3");
-			specialeffect 17, AREA, instance_npcname("Geffen Gangster#1");
-			specialeffect 17, AREA, instance_npcname("Geffen Gangster#2");
-			specialeffect 17, AREA, instance_npcname("Geffen Gangster#3");
+			specialeffect EF_MAGNUMBREAK, AREA, instance_npcname("Geffen Gangster#1");
+			specialeffect EF_MAGNUMBREAK, AREA, instance_npcname("Geffen Gangster#2");
+			specialeffect EF_MAGNUMBREAK, AREA, instance_npcname("Geffen Gangster#3");
 			break;
 		case 43:
-			specialeffect 183, AREA, instance_npcname("Geffen Gangster#1");
-			specialeffect 183, AREA, instance_npcname("Geffen Gangster#2");
-			specialeffect 183, AREA, instance_npcname("Geffen Gangster#3");
+			specialeffect EF_SUI_EXPLOSION, AREA, instance_npcname("Geffen Gangster#1");
+			specialeffect EF_SUI_EXPLOSION, AREA, instance_npcname("Geffen Gangster#2");
+			specialeffect EF_SUI_EXPLOSION, AREA, instance_npcname("Geffen Gangster#3");
 			hideonnpc instance_npcname("Geffen Gangster#1");
 			hideonnpc instance_npcname("Geffen Gangster#2");
 			hideonnpc instance_npcname("Geffen Gangster#3");
@@ -4314,7 +4315,7 @@ OnTimer1000:
 		case 9:
 			unittalk 'gmt_account_id, "I have to help!";
 			attachrid 'gmt_account_id;
-			specialeffect2 60;
+			specialeffect2 EF_LOCKON;
 			detachrid;
 			monster instance_mapname("1@gef"), 75, 172, "Geffen Bully", 2567, 1, instance_npcname("#Event 2 start 2") + "::OnMobKilled";
 			monster instance_mapname("1@gef"), 76, 170, "Geffen Bully", 2567, 1, instance_npcname("#Event 2 start 2") + "::OnMobKilled";
@@ -4338,9 +4339,9 @@ OnMobKilled:
 		//completequest 9286;
 		//setquest 9287;
 		sleep2 500;
-		specialeffect 220, AREA, instance_npcname("Geffen Bully#1");
-		specialeffect 220, AREA, instance_npcname("Geffen Bully#2");
-		specialeffect 220, AREA, instance_npcname("Geffen Bully#3");
+		specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Bully#1");
+		specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Bully#2");
+		specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Bully#3");
 		
 		$gmt_timer_evt2 = -1;
 		
@@ -4364,7 +4365,7 @@ OnMobKilled:
 				case 10: npctalk "Fenrir : This is really uncomfortable. I can't just sit back and watch.", instance_npcname("Fenrir#1"); break;
 				case 13:
 					npctalk "Fenrir : Stop harassing her. I won't forgive you.", instance_npcname("Fenrir#1");
-					specialeffect 204, AREA, instance_npcname("Fenrir#1");
+					specialeffect EF_POTION1, AREA, instance_npcname("Fenrir#1");
 					break;
 				case 15: npctalk "Geffen Bully : Hey~ You look rich, you must have a lot of zeny right?", instance_npcname("Geffen Bully#1"); break;
 				case 17: npctalk "Geffen Bully : What's a rich girl like you doing around here?~", instance_npcname("Geffen Bully#2"); break;
@@ -4384,16 +4385,16 @@ OnMobKilled:
 				case 25:
 					hideoffnpc instance_npcname("Loki#1");
 					sleep2 500;
-					specialeffect 126, AREA, instance_npcname("Loki#1");
+					specialeffect EF_POISONREACT, AREA, instance_npcname("Loki#1");
 					sleep2 1500;
-					specialeffect 121, AREA, instance_npcname("Loki#1");
+					specialeffect EF_SONICBLOW, AREA, instance_npcname("Loki#1");
 					npctalk "Loki : Hmph!", instance_npcname("Loki#1");
 					sleep2 500;
-					specialeffect 124, AREA, instance_npcname("Loki#1");
-					specialeffect 122, AREA, instance_npcname("Geffen Bully#33");
-					specialeffect 143, AREA, instance_npcname("Geffen Bully#33");
+					specialeffect EF_VENOMDUST, AREA, instance_npcname("Loki#1");
+					specialeffect EF_SONICBLOWHIT, AREA, instance_npcname("Geffen Bully#33");
+					specialeffect EF_SONICBLOW2, AREA, instance_npcname("Geffen Bully#33");
 					sleep2 330;
-					specialeffect 32, AREA, instance_npcname("Geffen Bully#33");
+					specialeffect EF_NAPALMBEAT, AREA, instance_npcname("Geffen Bully#33");
 					hideonnpc instance_npcname("Geffen Bully#33");
 					hideoffnpc instance_npcname("Geffen Bully#3");
 					break;
@@ -4404,11 +4405,11 @@ OnMobKilled:
 					sleep2 750;
 					npctalk "Loki : Take this.", instance_npcname("Loki#2");
 					sleep2 500;
-					specialeffect 271, AREA, instance_npcname("Geffen Bully#22");
-					specialeffect 122, AREA, instance_npcname("Geffen Bully#22");
-					specialeffect 143, AREA, instance_npcname("Geffen Bully#22");
+					specialeffect EF_STRIPARMOR, AREA, instance_npcname("Geffen Bully#22");
+					specialeffect EF_SONICBLOWHIT, AREA, instance_npcname("Geffen Bully#22");
+					specialeffect EF_SONICBLOW2, AREA, instance_npcname("Geffen Bully#22");
 					sleep2 330;
-					specialeffect 32, AREA, instance_npcname("Geffen Bully#22");
+					specialeffect EF_NAPALMBEAT, AREA, instance_npcname("Geffen Bully#22");
 					hideonnpc instance_npcname("Geffen Bully#22");
 					hideoffnpc instance_npcname("Geffen Bully#2");
 					break;
@@ -4419,11 +4420,11 @@ OnMobKilled:
 					sleep2 750;
 					npctalk "Loki : Change your mind yet?", instance_npcname("Loki#3");
 					sleep2 500;
-					specialeffect 270, AREA, instance_npcname("Geffen Bully#11");
-					specialeffect 122, AREA, instance_npcname("Geffen Bully#11");
-					specialeffect 143, AREA, instance_npcname("Geffen Bully#11");
+					specialeffect EF_STRIPSHIELD, AREA, instance_npcname("Geffen Bully#11");
+					specialeffect EF_SONICBLOWHIT, AREA, instance_npcname("Geffen Bully#11");
+					specialeffect EF_SONICBLOW2, AREA, instance_npcname("Geffen Bully#11");
 					sleep2 330;
-					specialeffect 32, AREA, instance_npcname("Geffen Bully#11");
+					specialeffect EF_NAPALMBEAT, AREA, instance_npcname("Geffen Bully#11");
 					hideonnpc instance_npcname("Geffen Bully#11");
 					hideoffnpc instance_npcname("Geffen Bully#1");
 					break;
@@ -4435,18 +4436,18 @@ OnMobKilled:
 				case 40: npctalk "Geffen Bully : Let's get away!~!!!!!", instance_npcname("Geffen Bully#3"); break;
 				case 41:
 					npctalk "Loki : You have 10 seconds.", instance_npcname("Loki#3");
-					specialeffect 121, AREA, instance_npcname("Loki#3");
+					specialeffect EF_SONICBLOW, AREA, instance_npcname("Loki#3");
 					break;
 				case 43:
-					specialeffect 136, AREA, instance_npcname("Loki#3");
+					specialeffect EF_SLOWPOISON, AREA, instance_npcname("Loki#3");
 					npctalk "Loki : 10... 9...", instance_npcname("Loki#3");
 					sleep2 500;
-					specialeffect 269, AREA, instance_npcname("Loki#3");
-					specialeffect 126, AREA, instance_npcname("Loki#3");
-					specialeffect 127, AREA, instance_npcname("Loki#3");
+					specialeffect EF_STRIPWEAPON, AREA, instance_npcname("Loki#3");
+					specialeffect EF_POISONREACT, AREA, instance_npcname("Loki#3");
+					specialeffect EF_POISONREACT2, AREA, instance_npcname("Loki#3");
 					break;
 				case 45:
-					specialeffect 125, AREA, instance_npcname("Loki#3");
+					specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("Loki#3");
 					sleep2 500;
 					emotion e_gg, 0, instance_npcname("Loki#3");
 					npctalk "Loki : 3... 2...", instance_npcname("Loki#3");
@@ -4456,8 +4457,8 @@ OnMobKilled:
 					npctalk "Geffen Bully : I will have my revenge~!!", instance_npcname("Geffen Bully#3");
 					break;
 				case 46:
-					specialeffect 361, AREA, instance_npcname("Loki#3");
-					specialeffect 124, AREA, instance_npcname("Loki#3");
+					specialeffect EF_SOULBREAKER, AREA, instance_npcname("Loki#3");
+					specialeffect EF_VENOMDUST, AREA, instance_npcname("Loki#3");
 					npctalk "Loki : 1...", instance_npcname("Loki#3");
 					sleep2 330;
 					hideonnpc instance_npcname("Geffen Bully#1");
@@ -4644,7 +4645,7 @@ OnTimer1000:
 	'gmt_timer_evt3++;
 	
 	switch('gmt_timer_evt3) {
-		case 1: specialeffect 20, AREA, instance_npcname("Geffen Shoplifter#1"); break;
+		case 1: specialeffect EF_PATTACK, AREA, instance_npcname("Geffen Shoplifter#1"); break;
 		case 4: npctalk "Geffen Shoplifter : Ugh, I shouldn't fight toe to toe with anyone...", instance_npcname("Geffen Shoplifter#1"); break;
 		case 7: unittalk 'gmt_account_id, "Don't want to be in a fair fight, huh thief?"; break;
 		case 10: npctalk "Geffen Shoplifter : Umm... stealing zeny is my job~ I did nothing wrong~!", instance_npcname("Geffen Shoplifter#1"); break;

+ 2 - 2
npc/guild2/agit_main_se.txt

@@ -1003,11 +1003,11 @@ OnInit:
 			mes "their Magic properties by";
 			mes "their casting effect.^000000";
 			next;
-			setarray .@effect[0],56,54,225;
+			setarray .@effect[0],EF_BEGINSPELL4,EF_BEGINSPELL2,EF_VOLCANO;
 			setarray .@color$[0],"Red","Yellow","Blue";
 			while(1) {
 				if (.@roof0 > 7) break;
-				set .@i, rand(3);
+				set .@i, rand(getarraysize(.@effect));
 				specialeffect .@effect[.@i];
 				mes "^3355FFThe Gemstones must";
 				mes "be arranged in the correct";

+ 4 - 4
npc/quests/thana_quest.txt

@@ -2099,19 +2099,19 @@ OnTouch_:
 	// .@j$: FragmentName
 	switch(.@seal) {
 	case 1:
-		setarray .@i[0],7437,1711,217,167,238;
+		setarray .@i[0],7437,1711,217,167,EF_LANDPROTECTOR;
 		set .@j$,"Misery";
 		break;
 	case 2:
-		setarray .@i[0],7436,1712,202,75,102;
+		setarray .@i[0],7436,1712,202,75,EF_CRASHEARTH;
 		set .@j$,"Agony";
 		break;
 	case 3:
-		setarray .@i[0],7438,1709,80,76,101;
+		setarray .@i[0],7438,1709,80,76,EF_REPAIRWEAPON;
 		set .@j$,"Hatred";
 		break;
 	case 4:
-		setarray .@i[0],7439,1710,62,171,100;
+		setarray .@i[0],7439,1710,62,171,EF_REMOVETRAP;
 		set .@j$,"Despair";
 		break;
 	}

+ 4 - 4
npc/re/custom/lasagna/lasagna_npcs.txt

@@ -3934,7 +3934,7 @@ lasagna,85,93,5	script	Shaman meow#dorcon	4_DR_KID_01,{
 			mes "[Shaman meow]";
 			mes "I'll tell you today's talisman. It is...";
 			next;
-			specialeffect 330;
+			specialeffect EF_HITLINE;
 			mes "[Shaman meow]";
 			.@quest_id = rand(14560,14562);
 			switch( .@quest_id ) {
@@ -6910,7 +6910,7 @@ conch_in,181,61,5	script	Boatswain#dorcon	4_M_BOSSCAT,{
 		next;
 		mes "[Boatswain]";
 		mes "This... This is...";
-		specialeffect 66;
+		specialeffect EF_CURE;
 		next;
 		mes "[" + strcharinfo(0) + "]";
 		mes "What do you think?";
@@ -6991,7 +6991,7 @@ conch_in,181,61,5	script	Boatswain#dorcon	4_M_BOSSCAT,{
 			mes "This is the amulet for today! Give me all the Basilrocks you have.";
 			next;
 			mes "[Boatswain]";
-			specialeffect 66;
+			specialeffect EF_CURE;
 			if (isbegin_quest(14560) == 1) {
 				mes "It feels like watching the blue horizon on a clear and windless day. It is refreshing.";
 				next;
@@ -8228,7 +8228,7 @@ lasa_dun03,161,292,5	script	Lord Imuk#dorcon	4_NFWISP,{
 		next;
 		mes "[???]";
 		mes "How dare you treat me like a ghost! I have lived for ^0000cd2,500 years^000000!";
-		specialeffect2 29;
+		specialeffect2 EF_LIGHTBOLT;
 		next;
 		mes "[" + strcharinfo(0) + "]";
 		mes "Oww...that hurts. I'm sorry if I've offended you, but are you Imoogi, the chief of the Basilisk?";

+ 1 - 1
src/custom/atcommand.inc

@@ -14,6 +14,6 @@
 //ACMD_FUNC(newcommand)
 //{
 //	clif_displaymessage(fd, "It works!");
-//	clif_specialeffect(&sd->bl, 343, AREA);
+//	clif_specialeffect(&sd->bl, EF_HEARTCASTING, AREA);
 //	return 0;
 //}

+ 19 - 13
src/map/atcommand.c

@@ -997,7 +997,7 @@ ACMD_FUNC(hide)
 		map_foreachinmovearea(clif_insight, &sd->bl, AREA_SIZE, sd->bl.x, sd->bl.y, BL_ALL, &sd->bl);
 	} else {
 		sd->sc.option |= OPTION_INVISIBLE;
-		sd->vd.class_ = INVISIBLE_CLASS;
+		sd->vd.class_ = JT_INVISIBLE;
 		clif_displaymessage(fd, msg_txt(sd,11)); // Invisible: On
 
 		// decrement the number of pvp players on the map
@@ -3134,7 +3134,7 @@ ACMD_FUNC(doom)
 		if (pl_sd->fd != fd && pc_get_group_level(sd) >= pc_get_group_level(pl_sd))
 		{
 			status_kill(&pl_sd->bl);
-			clif_specialeffect(&pl_sd->bl,450,AREA);
+			clif_specialeffect(&pl_sd->bl,EF_GRANDCROSS2,AREA);
 			clif_displaymessage(pl_sd->fd, msg_txt(sd,61)); // The holy messenger has given judgement.
 		}
 	}
@@ -3161,7 +3161,7 @@ ACMD_FUNC(doommap)
 		if (pl_sd->fd != fd && sd->bl.m == pl_sd->bl.m && pc_get_group_level(sd) >= pc_get_group_level(pl_sd))
 		{
 			status_kill(&pl_sd->bl);
-			clif_specialeffect(&pl_sd->bl,450,AREA);
+			clif_specialeffect(&pl_sd->bl,EF_GRANDCROSS2,AREA);
 			clif_displaymessage(pl_sd->fd, msg_txt(sd,61)); // The holy messenger has given judgement.
 		}
 	}
@@ -5300,7 +5300,7 @@ ACMD_FUNC(email)
  *------------------------------------------*/
 ACMD_FUNC(effect)
 {
-	int type = 0, flag = 0;
+	int type = EF_NONE;
 	nullpo_retr(-1, sd);
 
 	if (!message || !*message || sscanf(message, "%11d", &type) < 1) {
@@ -5308,7 +5308,13 @@ ACMD_FUNC(effect)
 		return -1;
 	}
 
-	clif_specialeffect(&sd->bl, type, (send_target)flag);
+	if( type <= EF_NONE || type >= EF_MAX ){
+		sprintf(atcmd_output, msg_txt(sd,1152),EF_NONE+1,EF_MAX-1); // Please enter a valid effect id in the range from %d to %d.
+		clif_displaymessage(fd, atcmd_output);
+		return -1;
+	}
+
+	clif_specialeffect(&sd->bl, type, ALL_CLIENT);
 	clif_displaymessage(fd, msg_txt(sd,229)); // Your effect has changed.
 	return 0;
 }
@@ -6816,7 +6822,7 @@ ACMD_FUNC(summon)
 	md->master_id=sd->bl.id;
 	md->special_state.ai=AI_ATTACK;
 	md->deletetimer=add_timer(tick+(duration*60000),mob_timer_delete,md->bl.id,0);
-	clif_specialeffect(&md->bl,344,AREA);
+	clif_specialeffect(&md->bl,EF_ENTRY2,AREA);
 	mob_spawn(md);
 	sc_start4(NULL,&md->bl, SC_MODECHANGE, 100, 1, 0, MD_AGGRESSIVE, 0, 60000);
 	clif_skill_poseffect(&sd->bl,AM_CALLHOMUN,1,md->bl.x,md->bl.y,tick);
@@ -7414,7 +7420,7 @@ ACMD_FUNC(homlevel)
 
 	status_calc_homunculus(hd, SCO_NONE);
 	status_percent_heal(&hd->bl, 100, 100);
-	clif_specialeffect(&hd->bl,568,AREA);
+	clif_specialeffect(&hd->bl,EF_HO_UP,AREA);
 
 	return 0;
 }
@@ -7996,9 +8002,9 @@ ACMD_FUNC(size)
 
 	sd->state.size = size;
 	if( size == SZ_MEDIUM )
-		clif_specialeffect(&sd->bl,420,AREA);
+		clif_specialeffect(&sd->bl,EF_BABYBODY,AREA);
 	else if( size == SZ_BIG )
-		clif_specialeffect(&sd->bl,422,AREA);
+		clif_specialeffect(&sd->bl,EF_GIANTBODY,AREA);
 
 	clif_displaymessage(fd, msg_txt(sd,1303)); // Size change applied.
 	return 0;
@@ -8023,9 +8029,9 @@ ACMD_FUNC(sizeall)
 
 			pl_sd->state.size = size;
 			if( size == SZ_MEDIUM )
-				clif_specialeffect(&pl_sd->bl,420,AREA);
+				clif_specialeffect(&pl_sd->bl,EF_BABYBODY,AREA);
 			else if( size == SZ_BIG )
-				clif_specialeffect(&pl_sd->bl,422,AREA);
+				clif_specialeffect(&pl_sd->bl,EF_GIANTBODY,AREA);
 		}
 	}
 	mapit_free(iter);
@@ -8065,9 +8071,9 @@ ACMD_FUNC(sizeguild)
 
 			pl_sd->state.size = size;
 			if( size == SZ_MEDIUM )
-				clif_specialeffect(&pl_sd->bl,420,AREA);
+				clif_specialeffect(&pl_sd->bl,EF_BABYBODY,AREA);
 			else if( size == SZ_BIG )
-				clif_specialeffect(&pl_sd->bl,422,AREA);
+				clif_specialeffect(&pl_sd->bl,EF_GIANTBODY,AREA);
 		}
 	}
 

+ 5 - 5
src/map/battle.c

@@ -1160,7 +1160,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 
 		//Kaupe blocks damage (skill or otherwise) from players, mobs, homuns, mercenaries.
 		if ((sce = sc->data[SC_KAUPE]) && rnd()%100 < sce->val2) {
-			clif_specialeffect(bl, 462, AREA);
+			clif_specialeffect(bl, EF_STORMKICK4, AREA);
 			//Shouldn't end until Breaker's non-weapon part connects.
 #ifndef RENEWAL
 			if (skill_id != ASC_BREAKER || !(flag&BF_WEAPON))
@@ -1176,7 +1176,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 #endif
 
 		if( flag&BF_MAGIC && (sce=sc->data[SC_PRESTIGE]) && rnd()%100 < sce->val2) {
-			clif_specialeffect(bl, 462, AREA); // Still need confirm it.
+			clif_specialeffect(bl, EF_STORMKICK4, AREA); // Still need confirm it.
 			return 0;
 		}
 
@@ -1185,7 +1185,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 			if (!status_isdead(src))
 				skill_counter_additional_effect( src, bl, skill_id, skill_lv, flag, gettick() );
 			if (sce) {
-				clif_specialeffect(bl, 462, AREA);
+				clif_specialeffect(bl, EF_STORMKICK4, AREA);
 				skill_blown(src,bl,sce->val3,-1,BLOWN_NONE);
 			}
 			//Both need to be consumed if they are active.
@@ -1408,7 +1408,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
 		}
 
 		if ((sce = sc->data[SC_P_ALTER]) && damage > 0) {
-			clif_specialeffect(bl, 336, AREA);
+			clif_specialeffect(bl, EF_GUARD, AREA);
 			sce->val3 -= (int)cap_value(damage, INT_MIN, INT_MAX);
 			if (sce->val3 >= 0)
 				damage = 0;
@@ -2369,7 +2369,7 @@ static bool is_attack_critical(struct Damage wd, struct block_list *src, struct
 			case 0:
 				if(sc && !sc->data[SC_AUTOCOUNTER])
 					break;
-				clif_specialeffect(src, 131, AREA);
+				clif_specialeffect(src, EF_AUTOCOUNTER, AREA);
 				status_change_end(src, SC_AUTOCOUNTER, INVALID_TIMER);
 			case KN_AUTOCOUNTER:
 				if(battle_config.auto_counter_type &&

+ 33 - 33
src/map/clif.cpp

@@ -1060,7 +1060,7 @@ static int clif_set_unit_idle(struct block_list* bl, unsigned char* buffer, bool
 	WBUFW(buf,24) = vd->head_top;
 	WBUFW(buf,26) = vd->head_mid;
 
-	if( bl->type == BL_NPC && vd->class_ == FLAG_CLASS )
+	if( bl->type == BL_NPC && vd->class_ == JT_GUILD_FLAG )
 	{	//The hell, why flags work like this?
 		WBUFW(buf,22) = status_get_emblem_id(bl);
 		WBUFW(buf,24) = GetWord(status_get_guild_id(bl), 1);
@@ -1371,22 +1371,22 @@ static void clif_weather_check(struct map_session_data *sd)
 		|| map[m].flag.clouds2)
 	{
 		if (map[m].flag.snow)
-			clif_specialeffect_single(&sd->bl, 162, fd);
+			clif_specialeffect_single(&sd->bl, EF_SNOW, fd);
 		if (map[m].flag.clouds)
-			clif_specialeffect_single(&sd->bl, 233, fd);
+			clif_specialeffect_single(&sd->bl, EF_CLOUD3, fd);
 		if (map[m].flag.clouds2)
-			clif_specialeffect_single(&sd->bl, 516, fd);
+			clif_specialeffect_single(&sd->bl, EF_CLOUD5, fd);
 		if (map[m].flag.fog)
-			clif_specialeffect_single(&sd->bl, 515, fd);
+			clif_specialeffect_single(&sd->bl, EF_CLOUD4, fd);
 		if (map[m].flag.fireworks) {
-			clif_specialeffect_single(&sd->bl, 297, fd);
-			clif_specialeffect_single(&sd->bl, 299, fd);
-			clif_specialeffect_single(&sd->bl, 301, fd);
+			clif_specialeffect_single(&sd->bl, EF_POKJUK, fd);
+			clif_specialeffect_single(&sd->bl, EF_THROWITEM2, fd);
+			clif_specialeffect_single(&sd->bl, EF_POKJUK_SOUND, fd);
 		}
 		if (map[m].flag.sakura)
-			clif_specialeffect_single(&sd->bl, 163, fd);
+			clif_specialeffect_single(&sd->bl, EF_SAKURA, fd);
 		if (map[m].flag.leaves)
-			clif_specialeffect_single(&sd->bl, 333, fd);
+			clif_specialeffect_single(&sd->bl, EF_MAPLE, fd);
 	}
 }
 /**
@@ -1415,7 +1415,7 @@ int clif_spawn(struct block_list *bl)
 	int len;
 
 	vd = status_get_viewdata(bl);
-	if( !vd || vd->class_ == INVISIBLE_CLASS )
+	if( !vd || vd->class_ == JT_INVISIBLE )
 		return 0;
 
 	/**
@@ -1443,9 +1443,9 @@ int clif_spawn(struct block_list *bl)
 			if (sd->spiritball > 0)
 				clif_spiritball(&sd->bl);
 			if(sd->state.size==SZ_BIG) // tiny/big players [Valaris]
-				clif_specialeffect(bl,423,AREA);
+				clif_specialeffect(bl,EF_GIANTBODY2,AREA);
 			else if(sd->state.size==SZ_MEDIUM)
-				clif_specialeffect(bl,421,AREA);
+				clif_specialeffect(bl,EF_BABYBODY2,AREA);
 			if( sd->bg_id && map[sd->bl.m].flag.battleground )
 				clif_sendbgemblem_area(sd);
 			if (sd->spiritcharm_type != CHARM_TYPE_NONE && sd->spiritcharm > 0)
@@ -1460,18 +1460,18 @@ int clif_spawn(struct block_list *bl)
 		{
 			TBL_MOB *md = ((TBL_MOB*)bl);
 			if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris]
-				clif_specialeffect(&md->bl,423,AREA);
+				clif_specialeffect(&md->bl,EF_GIANTBODY2,AREA);
 			else if(md->special_state.size==SZ_MEDIUM)
-				clif_specialeffect(&md->bl,421,AREA);
+				clif_specialeffect(&md->bl,EF_BABYBODY2,AREA);
 		}
 		break;
 	case BL_NPC:
 		{
 			TBL_NPC *nd = ((TBL_NPC*)bl);
 			if( nd->size == SZ_BIG )
-				clif_specialeffect(&nd->bl,423,AREA);
+				clif_specialeffect(&nd->bl,EF_GIANTBODY2,AREA);
 			else if( nd->size == SZ_MEDIUM )
-				clif_specialeffect(&nd->bl,421,AREA);
+				clif_specialeffect(&nd->bl,EF_BABYBODY2,AREA);
 			clif_efst_status_change_sub(bl, bl, AREA);
 			clif_progressbar_npc_area(nd);
 		}
@@ -1723,9 +1723,9 @@ static void clif_move2(struct block_list *bl, struct view_data *vd, struct unit_
 			TBL_PC *sd = ((TBL_PC*)bl);
 //			clif_movepc(sd);
 			if(sd->state.size==SZ_BIG) // tiny/big players [Valaris]
-				clif_specialeffect(&sd->bl,423,AREA);
+				clif_specialeffect(&sd->bl,EF_GIANTBODY2,AREA);
 			else if(sd->state.size==SZ_MEDIUM)
-				clif_specialeffect(&sd->bl,421,AREA);
+				clif_specialeffect(&sd->bl,EF_BABYBODY2,AREA);
 			if (sd->status.robe)
 				clif_refreshlook(bl,bl->id,LOOK_ROBE,sd->status.robe,AREA);
 		}
@@ -1734,9 +1734,9 @@ static void clif_move2(struct block_list *bl, struct view_data *vd, struct unit_
 		{
 			TBL_MOB *md = ((TBL_MOB*)bl);
 			if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris]
-				clif_specialeffect(&md->bl,423,AREA);
+				clif_specialeffect(&md->bl,EF_GIANTBODY2,AREA);
 			else if(md->special_state.size==SZ_MEDIUM)
-				clif_specialeffect(&md->bl,421,AREA);
+				clif_specialeffect(&md->bl,EF_BABYBODY2,AREA);
 		}
 		break;
 	case BL_PET:
@@ -1762,7 +1762,7 @@ void clif_move(struct unit_data *ud)
 	if (!vd )
 		return;
 	//This performance check is needed to keep GM-hidden objects from being notified to bots.
-	else if( vd->class_ == INVISIBLE_CLASS ){
+	else if( vd->class_ == JT_INVISIBLE ){
 		// If the player was disguised we still need to update the disguised unit, since the main unit will be updated through clif_walkok
 		if(disguised(bl)) {
 			WBUFW(buf,0)=0x86;
@@ -3492,7 +3492,7 @@ void clif_changelook(struct block_list *bl, int type, int val) {
 				if (!sd) 
 					break;
 
-				if ( val == INVISIBLE_CLASS )
+				if ( val == JT_INVISIBLE )
 					return;
 
 				if (sd->sc.option&OPTION_COSTUME)
@@ -4612,7 +4612,7 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
 	int len;
 
 	vd = status_get_viewdata(bl);
-	if (!vd || vd->class_ == INVISIBLE_CLASS)
+	if (!vd || vd->class_ == JT_INVISIBLE)
 		return;
 
 	/**
@@ -4638,9 +4638,9 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
 
 			clif_getareachar_pc(sd, tsd);
 			if(tsd->state.size==SZ_BIG) // tiny/big players [Valaris]
-				clif_specialeffect_single(bl,423,sd->fd);
+				clif_specialeffect_single(bl,EF_GIANTBODY2,sd->fd);
 			else if(tsd->state.size==SZ_MEDIUM)
-				clif_specialeffect_single(bl,421,sd->fd);
+				clif_specialeffect_single(bl,EF_BABYBODY2,sd->fd);
 			if( tsd->bg_id && map[tsd->bl.m].flag.battleground )
 				clif_sendbgemblem_single(sd->fd,tsd);
 			if ( tsd->status.robe )
@@ -4659,9 +4659,9 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
 			if( nd->chat_id )
 				clif_dispchat((struct chat_data*)map_id2bl(nd->chat_id),sd->fd);
 			if( nd->size == SZ_BIG )
-				clif_specialeffect_single(bl,423,sd->fd);
+				clif_specialeffect_single(bl,EF_GIANTBODY2,sd->fd);
 			else if( nd->size == SZ_MEDIUM )
-				clif_specialeffect_single(bl,421,sd->fd);
+				clif_specialeffect_single(bl,EF_BABYBODY2,sd->fd);
 			clif_efst_status_change_sub(&sd->bl, bl, SELF);
 			clif_progressbar_npc(nd, sd);
 		}
@@ -4670,9 +4670,9 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
 		{
 			TBL_MOB* md = (TBL_MOB*)bl;
 			if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris]
-				clif_specialeffect_single(bl,423,sd->fd);
+				clif_specialeffect_single(bl,EF_GIANTBODY2,sd->fd);
 			else if(md->special_state.size==SZ_MEDIUM)
-				clif_specialeffect_single(bl,421,sd->fd);
+				clif_specialeffect_single(bl,EF_BABYBODY2,sd->fd);
 #if PACKETVER >= 20120404
 			if (battle_config.monster_hp_bars_info && !map[bl->m].flag.hidemobhpbar) {
 				int i;
@@ -5152,7 +5152,7 @@ int clif_outsight(struct block_list *bl,va_list ap)
 		nullpo_ret(bl);
 		switch(bl->type){
 		case BL_PC:
-			if(sd->vd.class_ != INVISIBLE_CLASS)
+			if(sd->vd.class_ != JT_INVISIBLE)
 				clif_clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd);
 			if(sd->chatID){
 				struct chat_data *cd;
@@ -5176,7 +5176,7 @@ int clif_outsight(struct block_list *bl,va_list ap)
 				clif_clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd);
 			break;
 		default:
-			if((vd=status_get_viewdata(bl)) && vd->class_ != INVISIBLE_CLASS)
+			if((vd=status_get_viewdata(bl)) && vd->class_ != JT_INVISIBLE)
 				clif_clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd);
 			break;
 		}
@@ -5185,7 +5185,7 @@ int clif_outsight(struct block_list *bl,va_list ap)
 		nullpo_ret(tbl);
 		if(tbl->type == BL_SKILL) //Trap knocked out of sight
 			clif_clearchar_skillunit((struct skill_unit *)tbl,sd->fd);
-		else if(((vd=status_get_viewdata(tbl)) && vd->class_ != INVISIBLE_CLASS) &&
+		else if(((vd=status_get_viewdata(tbl)) && vd->class_ != JT_INVISIBLE) &&
 			!(tbl->type == BL_NPC && (((TBL_NPC*)tbl)->sc.option&OPTION_INVISIBLE)))
 			clif_clearunit_single(tbl->id,CLR_OUTSIGHT,sd->fd);
 	}

+ 4 - 4
src/map/homunculus.c

@@ -594,7 +594,7 @@ int hom_evolution(struct homun_data *hd)
 
 	clif_spawn(&hd->bl);
 	clif_emotion(&sd->bl, E_NO1);
-	clif_specialeffect(&hd->bl,568,AREA);
+	clif_specialeffect(&hd->bl,EF_HO_UP,AREA);
 
 	//status_Calc flag&1 will make current HP/SP be reloaded from hom structure
 	hom->hp = hd->battle_status.hp;
@@ -645,7 +645,7 @@ int hom_mutate(struct homun_data *hd, int homun_id)
 
 	clif_spawn(&hd->bl);
 	clif_emotion(&sd->bl, E_NO1);
-	clif_specialeffect(&hd->bl,568,AREA);
+	clif_specialeffect(&hd->bl,EF_HO_UP,AREA);
 
 	//status_Calc flag&1 will make current HP/SP be reloaded from hom structure
 	hom = &hd->homunculus;
@@ -705,7 +705,7 @@ void hom_gainexp(struct homun_data *hd,int exp)
 	if( hd->exp_next == 0 )
 		hd->homunculus.exp = 0 ;
 
-	clif_specialeffect(&hd->bl,568,AREA);
+	clif_specialeffect(&hd->bl,EF_HO_UP,AREA);
 	status_calc_homunculus(hd, SCO_NONE);
 	status_percent_heal(&hd->bl, 100, 100);
 }
@@ -1335,7 +1335,7 @@ int hom_shuffle(struct homun_data *hd)
 	clif_homskillinfoblock(sd);
 	status_calc_homunculus(hd, SCO_NONE);
 	status_percent_heal(&hd->bl, 100, 100);
-	clif_specialeffect(&hd->bl,568,AREA);
+	clif_specialeffect(&hd->bl,EF_HO_UP,AREA);
 
 	return 1;
 }

+ 19 - 19
src/map/npc.c

@@ -111,9 +111,9 @@ static struct script_event_s
 
 struct view_data* npc_get_viewdata(int class_)
 {	//Returns the viewdata for normal npc classes.
-	if( class_ == INVISIBLE_CLASS )
+	if( class_ == JT_INVISIBLE )
 		return &npc_viewdb[0];
-	if (npcdb_checkid(class_) || class_ == WARP_CLASS){
+	if (npcdb_checkid(class_)){
 		if( class_ > MAX_NPC_CLASS2_START ){
 			return &npc_viewdb2[class_-MAX_NPC_CLASS2_START];
 		}else{
@@ -234,7 +234,7 @@ int npc_enable(const char* name, int flag)
 		clif_clearunit_area(&nd->bl,CLR_OUTSIGHT);  // Hack to trick maya purple card [Xazax]
 	}
 
-	if (nd->class_ == WARP_CLASS || nd->class_ == FLAG_CLASS)
+	if (nd->class_ == JT_WARPNPC || nd->class_ == JT_GUILD_FLAG)
 	{	//Client won't display option changes for these classes [Toms]
 		if (nd->sc.option&(OPTION_HIDE|OPTION_INVISIBLE))
 			clif_clearunit_area(&nd->bl, CLR_OUTSIGHT);
@@ -2396,7 +2396,7 @@ static void npc_parsename(struct npc_data* nd, const char* name, const char* sta
  * Support for using Constants in place of NPC View IDs.
  */
 int npc_parseview(const char* w4, const char* start, const char* buffer, const char* filepath) {
-	int val = -1, i = 0;
+	int val = JT_FAKENPC, i = 0;
 	char viewid[1024];	// Max size of name from const.txt, see read_constdb.
 
 	// Extract view ID / constant
@@ -2413,8 +2413,8 @@ int npc_parseview(const char* w4, const char* start, const char* buffer, const c
 	if(!npc_viewisid(viewid)) {
 		// Check if constant exists and get its value.
 		if(!script_get_constant(viewid, &val)) {
-			ShowWarning("npc_parseview: Invalid NPC constant '%s' specified in file '%s', line'%d'. Defaulting to INVISIBLE_CLASS. \n", viewid, filepath, strline(buffer,start-buffer));
-			val = INVISIBLE_CLASS;
+			ShowWarning("npc_parseview: Invalid NPC constant '%s' specified in file '%s', line'%d'. Defaulting to INVISIBLE. \n", viewid, filepath, strline(buffer,start-buffer));
+			val = JT_INVISIBLE;
 		}
 	} else {
 		// NPC has an ID specified for view id.
@@ -2429,7 +2429,7 @@ int npc_parseview(const char* w4, const char* start, const char* buffer, const c
  */
 bool npc_viewisid(const char * viewid)
 {
-	if(atoi(viewid) != -1) {
+	if(atoi(viewid) != JT_FAKENPC) {
 		// Loop through view, looking for non-numeric character.
 		while (*viewid) {
 			if (ISDIGIT(*viewid++) == 0) return false;
@@ -2495,9 +2495,9 @@ struct npc_data* npc_add_warp(char* name, short from_mapid, short from_x, short
 	safestrncpy(nd->name, nd->exname, ARRAYLENGTH(nd->name));
 
 	if( battle_config.warp_point_debug )
-		nd->class_ = WARP_DEBUG_CLASS;
+		nd->class_ = JT_GUILD_FLAG;
 	else
-		nd->class_ = WARP_CLASS;
+		nd->class_ = JT_WARPNPC;
 	nd->speed = 200;
 
 	nd->u.warp.mapindex = to_mapindex;
@@ -2567,9 +2567,9 @@ static const char* npc_parse_warp(char* w1, char* w2, char* w3, char* w4, const
 	npc_parsename(nd, w3, start, buffer, filepath);
 
 	if (!battle_config.warp_point_debug)
-		nd->class_ = WARP_CLASS;
+		nd->class_ = JT_WARPNPC;
 	else
-		nd->class_ = WARP_DEBUG_CLASS;
+		nd->class_ = JT_GUILD_FLAG;
 	nd->speed = 200;
 
 	nd->u.warp.mapindex = i;
@@ -2801,7 +2801,7 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const
 	}
 
 	npc_parsename(nd, w3, start, buffer, filepath);
-	nd->class_ = m == -1 ? -1 : npc_parseview(w4, start, buffer, filepath);
+	nd->class_ = m == -1 ? JT_FAKENPC : npc_parseview(w4, start, buffer, filepath);
 	nd->speed = 200;
 
 	++npc_shop;
@@ -3036,7 +3036,7 @@ static const char* npc_parse_script(char* w1, char* w2, char* w3, char* w4, cons
 	}
 
 	npc_parsename(nd, w3, start, buffer, filepath);
-	nd->class_ = m == -1 ? -1 : npc_parseview(w4, start, buffer, filepath);
+	nd->class_ = m == -1 ? JT_FAKENPC : npc_parseview(w4, start, buffer, filepath);
 	nd->speed = 200;
 	nd->u.scr.script = script;
 	nd->u.scr.label_list = label_list;
@@ -3164,7 +3164,7 @@ const char* npc_parse_duplicate(char* w1, char* w2, char* w3, char* w4, const ch
 
 	nd = npc_create_npc(m, x, y);
 	npc_parsename(nd, w3, start, buffer, filepath);
-	nd->class_ = m == -1 ? -1 : npc_parseview(w4, start, buffer, filepath);
+	nd->class_ = m == -1 ? JT_FAKENPC : npc_parseview(w4, start, buffer, filepath);
 	nd->speed = 200;
 	nd->src_id = src_id;
 	nd->bl.type = BL_NPC;
@@ -3192,9 +3192,9 @@ const char* npc_parse_duplicate(char* w1, char* w2, char* w3, char* w4, const ch
 		case NPCTYPE_WARP:
 			++npc_warp;
 			if( !battle_config.warp_point_debug )
-				nd->class_ = WARP_CLASS;
+				nd->class_ = JT_WARPNPC;
 			else
-				nd->class_ = WARP_DEBUG_CLASS;
+				nd->class_ = JT_GUILD_FLAG;
 			nd->u.warp.xs = xs;
 			nd->u.warp.ys = ys;
 			nd->u.warp.mapindex = dnd->u.warp.mapindex;
@@ -3281,7 +3281,7 @@ int npc_duplicate4instance(struct npc_data *snd, int16 m) {
 		map_addnpc(m, wnd);
 		safestrncpy(wnd->name, "", ARRAYLENGTH(wnd->name));
 		safestrncpy(wnd->exname, newname, ARRAYLENGTH(wnd->exname));
-		wnd->class_ = WARP_CLASS;
+		wnd->class_ = JT_WARPNPC;
 		wnd->speed = 200;
 		wnd->u.warp.mapindex = map_id2index(imap);
 		wnd->u.warp.x = snd->u.warp.x;
@@ -4756,7 +4756,7 @@ void do_init_npc(void){
 
 	//Stock view data for normal npcs.
 	memset(&npc_viewdb, 0, sizeof(npc_viewdb));
-	npc_viewdb[0].class_ = INVISIBLE_CLASS; //Invisible class is stored here.
+	npc_viewdb[0].class_ = JT_INVISIBLE; //Invisible class is stored here.
 	for( i = 1; i < MAX_NPC_CLASS; i++ )
 		npc_viewdb[i].class_ = i;
 	for( i = MAX_NPC_CLASS2_START; i < MAX_NPC_CLASS2_END; i++ )
@@ -4807,7 +4807,7 @@ void do_init_npc(void){
 	fake_nd = (struct npc_data *)aCalloc(1,sizeof(struct npc_data));
 	fake_nd->bl.m = -1;
 	fake_nd->bl.id = npc_get_new_npc_id();
-	fake_nd->class_ = -1;
+	fake_nd->class_ = JT_FAKENPC;
 	fake_nd->speed = 200;
 	strcpy(fake_nd->name,"FAKE_NPC");
 	memcpy(fake_nd->exname, fake_nd->name, 9);

+ 974 - 10
src/map/npc.h

@@ -110,24 +110,988 @@ extern struct eri *npc_sc_display_ers;
 
 #define START_NPC_NUM 110000000
 
-enum actor_classes
+enum e_job_types
 {
-	WARP_CLASS = 45,
-	HIDDEN_WARP_CLASS = 139,
-	WARP_DEBUG_CLASS = 722,
-	FLAG_CLASS = 722,
-	INVISIBLE_CLASS = 32767,
+	NPC_RANGE1_START = 44,
+	JT_WARPNPC,
+	JT_1_ETC_01,
+	JT_1_M_01,
+	JT_1_M_02,
+	JT_1_M_03,
+	JT_1_M_04,
+	JT_1_M_BARD,
+	JT_1_M_HOF,
+	JT_1_M_INNKEEPER,
+	JT_1_M_JOBGUIDER,
+	JT_1_M_JOBTESTER,
+	JT_1_M_KNIGHTMASTER,
+	JT_1_M_LIBRARYMASTER,
+	JT_1_M_MERCHANT,
+	JT_1_M_ORIENT01,
+	JT_1_M_PASTOR,
+	JT_1_M_PUBMASTER,
+	JT_1_M_SIZ,
+	JT_1_M_SMITH,
+	JT_1_M_WIZARD,
+	JT_1_M_YOUNGKNIGHT,
+	JT_1_F_01,
+	JT_1_F_02,
+	JT_1_F_03,
+	JT_1_F_04,
+	JT_1_F_GYPSY,
+	JT_1_F_LIBRARYGIRL,
+	JT_1_F_MARIA,
+	JT_1_F_MERCHANT_01,
+	JT_1_F_MERCHANT_02,
+	JT_1_F_ORIENT_01,
+	JT_1_F_ORIENT_02,
+	JT_1_F_ORIENT_03,
+	JT_1_F_ORIENT_04,
+	JT_1_F_PRIEST,
+	JT_1_F_PUBGIRL,
+	JT_4_DOG01,
+	JT_4_KID01,
+	JT_4_M_01,
+	JT_4_M_02,
+	JT_4_M_03,
+	JT_4_M_04,
+	JT_4_M_BARBER,
+	JT_4_M_ORIENT01,
+	JT_4_M_ORIENT02,
+	JT_4_F_01,
+	JT_4_F_02,
+	JT_4_F_03,
+	JT_4_F_04,
+	JT_4_F_MAID,
+	JT_4_F_SISTER,
+	JT_4W_KID,
+	JT_4W_M_01,
+	JT_4W_M_02,
+	JT_4W_M_03,
+	JT_4W_SAILOR,
+	JT_4W_F_01,
+	JT_8_F,
+	JT_8_F_GRANDMOTHER,
+	JT_EFFECTLAUNCHER,
+	JT_8W_SOLDIER,
+	JT_1_M_MOC_LORD,
+	JT_1_M_PAY_ELDER,
+	JT_1_M_PRON_KING,
+	JT_4_M_MANAGER,
+	JT_4_M_MINISTER,
+	JT_HIDDEN_NPC,
+	JT_4_F_KAFRA6,
+	JT_4_F_KAFRA5,
+	JT_4_F_KAFRA4,
+	JT_4_F_KAFRA3,
+	JT_4_F_KAFRA2,
+	JT_4_F_KAFRA1,
+	JT_2_M_THIEFMASTER,
+	JT_2_M_SWORDMASTER,
+	JT_2_M_PHARMACIST,
+	JT_2_M_MOLGENSTEIN,
+	JT_2_M_DYEINGER,
+	JT_2_F_MAGICMASTER,
+	JT_4_F_TELEPORTER,
+	JT_4_M_TELEPORTER,
+	NPC_RANGE1_END,
+
+	JT_HIDDEN_WARP_NPC = 139,
+
+	NPC_RANGE2_START = 400,
+	JT_4_M_MUT2,
+	JT_4_M_SCIENCE,
+	JT_4_F_VALKYRIE2,
+	JT_4_M_UNCLEKNIGHT,
+	JT_4_M_YOUNGKNIGHT,
+	JT_2_MONEMUS,
+	JT_4_M_ATEIL,
+	JT_4_F_ANNIVERSARY,
+	JT_4_M_GREATPO,
+	JT_4_M_NOVELIST,
+	JT_4_M_CHAMPSOUL,
+	JT_4_M_OLDFRIAR,
+	JT_4_M_CRU_SOLD,
+	JT_4_M_CRU_KNT,
+	JT_4_M_CRU_HEAD,
+	JT_4_M_CRU_CRUA,
+	JT_4_M_KY_SOLD,
+	JT_4_M_KY_KNT,
+	JT_4_M_KY_HEAD,
+	JT_4_M_KY_KIYOM,
+	JT_4_M_BOSSCAT,
+	JT_4_M_BABYCAT,
+	JT_4W_F_KAFRA2,
+	JT_4_F_MUNAK,
+	JT_4_M_BONGUN,
+	JT_4_BEAR,
+	JT_4_BLUEWOLF,
+	JT_4_PECOPECO,
+	JT_4_M_JP_MID,
+	JT_4_M_JP_RUN,
+	JT_4_ORCLADY,
+	JT_4_ORCLADY2,
+	JT_4_ORCWARRIOR,
+	JT_4_ORCWARRIOR2,
+	JT_4_F_FAIRY,
+	JT_4_F_FAIRYKID,
+	JT_4_F_FAIRYKID2,
+	JT_4_F_FAIRYKID3,
+	JT_4_F_FAIRYKID4,
+	JT_4_F_FAIRYKID5,
+	JT_4_F_FAIRYKID6,
+	JT_4_M_FAIRYKID,
+	JT_4_M_FAIRYKID2,
+	JT_4_M_FAIRYKID3,
+	JT_4_M_FAIRYKID4,
+	JT_4_M_FAIRYKID5,
+	JT_4_M_FAIRYSOLDIER,
+	JT_4_M_TUFFOLD,
+	JT_4_MAN_BENKUNI,
+	JT_4_MAN_GALTUN,
+	JT_4_MAN_JERUTOO,
+	JT_4_MAN_LAVAIL,
+	JT_4_MAN_NITT,
+	JT_4_MAN_PIOM,
+	JT_4_MAN_PIOM2,
+	JT_4_M_DSTMAN,
+	JT_4_M_DSTMANDEAD,
+	JT_4_BABYLEOPARD,
+	JT_4_M_REDSWORD,
+	JT_4_MAN_PIOM3,
+	JT_4_M_FAIRYSOLDIER2,
+	JT_4_F_FAIRYSOLDIER,
+	JT_4_DRAGON_EGG,
+	JT_4_MIMIC,
+	JT_4_F_FAIRY1,
+	JT_4_F_GUILLOTINE,
+	JT_4_M_GUILLOTINE,
+	JT_4_M_KNIGHT_BLACK,
+	JT_4_M_KNIGHT_GOLD,
+	JT_4_M_KNIGHT_SILVER,
+	JT_4_SKULL_MUD,
+	JT_4_M_BRZ_INDIAN,
+	JT_4_F_BRZ_INDIAN,
+	JT_4_F_BRZ_INDOLD,
+	JT_4_M_BRZ_JACI,
+	JT_4_M_BRZ_MAN1,
+	JT_4_M_BRZ_MAN2,
+	JT_4_F_BRZ_WOMAN,
+	JT_4_M_MINSTREL,
+	JT_4_M_MINSTREL1,
+	JT_4_M_SHADOWCHASER,
+	JT_4_F_SHADOWCHASER,
+	JT_4_M_SURA,
+	JT_4_F_SURA,
+	JT_4_F_WANDERER,
+	JT_4_M_BARD,
+	JT_1_FLAG_NOFEAR,
+	JT_4_M_NOFEARGUY,
+	JT_4_MAN_PIOM6,
+	JT_4_MAN_PIOM4,
+	JT_4_MAN_PIOM5,
+	JT_4_MAN_GALTUN1,
+	JT_4_HUMAN_GERUTOO,
+	JT_4_M_ROKI,
+	JT_4_M_MERCAT1,
+	JT_4_M_MERCAT2,
+	JT_4_M_CATMAN1,
+	JT_4_M_CATMAN2,
+	JT_4_F_BRZ_WOMAN2,
+	JT_4_M_JP_DISH,
+	JT_4_F_JP_NOAH,
+	JT_4_F_JP_OZ,
+	JT_4_F_JP_CHROME,
+	JT_4_F_JP_RINNE,
+	JT_4_WHITETIGER,
+	JT_4_VENDING_MACHINE,
+	JT_4_MISTY,
+	JT_4_NECORING,
+	JT_4_ELEPHANT,
+	JT_4_F_NYDHOG,
+	JT_4_F_NYDHOG2,
+	JT_4_M_ROKI2,
+	JT_4_M_DOGTRAVELER,
+	JT_4_M_DOGTRAVELER2,
+	JT_4_F_DOGTRAVELER,
+	JT_4_M_RAFLE_GR,
+	JT_4_M_RAFLE_OLD,
+	JT_4_F_RAFLE_PK,
+	JT_4_M_LYINGDOG,
+	JT_4_F_MORAFINE1,
+	JT_4_F_MORAFINE2,
+	JT_4_M_RAFLE_OR,
+	JT_4_F_RAFLE_YE,
+	JT_4_M_RAFLE_VI,
+	JT_4_F_RAFLE_VI,
+	JT_4_M_ARDHA,
+	JT_4_CREEPER,
+	JT_JP_RUFAKU,
+	JT_JP_SUPIKA,
+	JT_JP_SABIKU,
+	JT_JP_ARUGORU,
+	JT_JP_ARUNA,
+	JT_JP_AIRI,
+	JT_4_M_DEWOLDMAN,
+	JT_4_M_DEWOLDWOMAN,
+	JT_4_M_DEWMAN,
+	JT_4_M_DEWWOMAN,
+	JT_4_M_DEWBOY,
+	JT_4_M_DEWGIRL,
+	JT_4_M_DEWZATICHIEF,
+	JT_4_M_DEWZATIMAN,
+	JT_4_M_ALCHE_E,
+	JT_4_MASK_SMOKEY,
+	JT_4_CAT_SAILOR1,
+	JT_4_CAT_SAILOR2,
+	JT_4_CAT_SAILOR3,
+	JT_4_CAT_SAILOR4,
+	JT_4_CAT_CHEF,
+	JT_4_CAT_MERMASTER,
+	JT_4_CRACK,
+	JT_4_ASTER,
+	JT_4_F_STARFISHGIRL,
+	JT_4_CAT_DOWN,
+	JT_4_CAT_REST,
+	JT_4_CAT_3COLOR,
+	JT_4_CAT_ADMIRAL,
+	JT_4_SOIL,
+	JT_4_F_ALCHE_A,
+	JT_4_CAT_ADV1,
+	JT_4_CAT_ADV2,
+	JT_4_CAT_SAILOR5,
+	JT_2_DROP_MACHINE,
+	JT_2_SLOT_MACHINE,
+	JT_2_VENDING_MACHINE1,
+	JT_MOB_TOMB,
+	JT_4_MYSTCASE,
+	JT_4_M_SIT_NOVICE,
+	JT_4_OCTOPUS_LEG,
+	JT_4_F_NURSE,
+	JT_4_MAL_SOLDIER,
+	JT_4_MAL_CAPTAIN,
+	JT_4_MAL_BUDIDAI,
+	JT_4_M_MAYOR,
+	JT_4_M_BARYO_OLD,
+	JT_4_F_BARYO_OLD,
+	JT_4_F_BARYO_GIRL,
+	JT_4_M_BARYO_BOY,
+	JT_4_M_BARYO_MAN,
+	JT_4_F_BARYO_WOMAN,
+	JT_4_BARYO_CHIEF,
+	JT_4_MAL_KAFRA,
+	JT_4_M_MALAYA,
+	JT_4_F_MALAYA,
+	JT_4_F_PATIENT,
+	JT_4_M_PATIENT,
+	JT_4_F_KR_TIGER,
+	JT_4_M_KR_BOY,
+	JT_4_M_KAGE_OLD,
+	JT_4_WHIKEBAIN,
+	JT_4_EREND,
+	JT_4_RAWREL,
+	JT_4_ARMAIA,
+	JT_4_KAVAC,
+	JT_4_YGNIZEM,
+	JT_4_EREMES,
+	JT_4_MAGALETA,
+	JT_4_KATRINN,
+	JT_4_SHECIL,
+	JT_4_SEYREN,
+	JT_4_HARWORD,
+	JT_4_F_JP_CYNTHIA,
+	JT_4_M_JP_GUSTON,
+	JT_4_M_JP_BERKUT,
+	JT_4_F_JP_DARK_ADELAIDE,
+	JT_4_M_JP_DARK_DARIUS,
+	JT_4_M_JP_JESTER,
+	JT_XMAS_SMOKEY_B,
+	JT_XMAS_SMOKEY_R,
+	JT_XMAS_SMOKEY_Y,
+	JT_4_F_CLOCKDOLL,
+	JT_4_F_FAIRY2,
+	JT_4_F_PINKWOMAN,
+	JT_4_FAIRYDEADLEAF,
+	JT_4_FROG,
+	JT_4_M_BLACKMAN,
+	JT_4_M_BLUEMAN,
+	JT_4_M_FAIRYANG,
+	JT_4_M_FAIRYAVANT,
+	JT_4_M_FAIRYFREAK,
+	JT_4_M_FAIRYKID6,
+	JT_4_M_FAIRYSCHOLAR,
+	JT_4_M_FAIRYSCHOLAR_DIRTY,
+	JT_4_M_FARIY_HISIE,
+	JT_4_M_FARIYKING,
+	JT_4_M_NEWOZ,
+	JT_4_M_OLIVER,
+	JT_4_M_PROFESSORWORM,
+	JT_4_M_REDMAN,
+	JT_4_F_GELKA,
+	JT_4_M_ROTERT,
+	JT_4_BLACKDRAGON,
+	JT_4_M_GUNSLINGER,
+	JT_4_F_GUNSLINGER,
+	JT_4_M_ARCHER,
+	JT_4_M_SWORDMAN,
+	JT_4_M_NINJA_RED,
+	JT_4_M_NINJA_BLUE,
+	JT_4_M_THIEF_RUMIN,
+	JT_4_M_NOV_RUMIN,
+	JT_4_F_MAYSEL,
+	JT_4_F_ACOLYTE,
+	JT_4_M_NOV_HUNT,
+	JT_4_F_GENETIC,
+	JT_4_F_TAEKWON,
+	JT_4_F_SWORDMAN,
+	JT_4_F_IU,
+	JT_4_M_RAGI,
+	JT_4_M_MELODY,
+	JT_4_TRACE,
+	JT_4_F_HIMEL,
+	JT_4_LEVITATEMAN,
+	JT_4_M_HEINRICH,
+	JT_4_M_ROYALGUARD,
+	JT_4_M_BARMUND,
+	JT_4_F_KHALITZBURG,
+	JT_4_F_HIMEL2,
+	JT_4_WHITEKNIGHT,
+	JT_4_COCO,
+	JT_4_M_ALADDIN,
+	JT_4_M_GENIE,
+	JT_4_F_GENIE,
+	JT_4_JP_MID_SWIM,
+	JT_4_JP_RUNE_SWIM,
+	JT_4_F_FENRIR,
+	JT_4_F_GEFFEN_FAY,
+	JT_4_F_IRIS,
+	JT_4_F_LUCILE,
+	JT_4_F_SARAH_BABY,
+	JT_4_GEFFEN_01,
+	JT_4_GEFFEN_02,
+	JT_4_GEFFEN_03,
+	JT_4_GEFFEN_04,
+	JT_4_GEFFEN_05,
+	JT_4_GEFFEN_06,
+	JT_4_GEFFEN_07,
+	JT_4_GEFFEN_08,
+	JT_4_GEFFEN_09,
+	JT_4_GEFFEN_10,
+	JT_4_GEFFEN_11,
+	JT_4_GEFFEN_12,
+	JT_4_GEFFEN_13,
+	JT_4_GEFFEN_14,
+	JT_4_M_CHAOS,
+	JT_4_M_CHIEF_IRIN,
+	JT_4_M_SAKRAY,
+	JT_4_M_SAKRAYROYAL,
+	JT_4_TOWER_01,
+	JT_4_TOWER_02,
+	JT_4_TOWER_03,
+	JT_4_TOWER_04,
+	JT_4_TOWER_05,
+	JT_4_TOWER_06,
+	JT_4_TOWER_07,
+	JT_4_TOWER_08,
+	JT_4_TOWER_09,
+	JT_4_TOWER_10,
+	JT_4_TOWER_11,
+	JT_4_TOWER_12,
+	JT_4_TOWER_13,
+	JT_8_F_GIRL,
+	JT_4_F_GODEMOM,
+	JT_4_F_GON,
+	JT_4_F_KID2,
+	JT_4_M_BIBI,
+	JT_4_M_GEF_SOLDIER,
+	JT_4_M_KID1,
+	JT_4_M_MOC_SOLDIER,
+	JT_4_M_PAY_SOLDIER,
+	JT_4_M_SEAMAN,
+	JT_4_M_SNOWMAN,
+	JT_4_F_05,
+	JT_4_M_05,
+	JT_4_M_06,
+	JT_4_F_06,
+	JT_4_M_PIERROT,
+	JT_4_M_KID2,
+	JT_4_F_KID3,
+	JT_4_M_SANTA,
+	JT_4_F_NACORURI,
+	JT_4_F_SHAMAN,
+	JT_4_F_KAFRA7,
+	JT_GUILD_FLAG,
+	JT_1_SHADOW_NPC,
+	JT_4_F_07,
+	JT_4_F_JOB_ASSASSIN,
+	JT_4_F_JOB_BLACKSMITH,
+	JT_4_F_JOB_HUNTER,
+	JT_4_F_JOB_KNIGHT,
+	JT_4_F_NOVICE,
+	JT_4_M_JOB_ASSASSIN,
+	JT_4_M_JOB_BLACKSMITH,
+	JT_4_M_JOB_HUNTER,
+	JT_4_M_JOB_KNIGHT1,
+	JT_4_M_JOB_KNIGHT2,
+	JT_4_M_JOB_WIZARD,
+	JT_4_BAPHOMET,
+	JT_4_DARKLORD,
+	JT_4_DEVIRUCHI,
+	JT_8_DOPPEL,
+	JT_2_M_ALCHE,
+	JT_2_M_BARD_ORIENT,
+	JT_2_M_SAGE_B,
+	JT_2_M_SAGE_OLD,
+	JT_4_F_ALCHE,
+	JT_4_F_CRU,
+	JT_4_F_MONK,
+	JT_4_F_ROGUE,
+	JT_4_M_ALCHE_A,
+	JT_4_M_ALCHE_B,
+	JT_4_M_ALCHE_C,
+	JT_4_M_CRU,
+	JT_4_M_CRU_OLD,
+	JT_4_M_MONK,
+	JT_4_M_SAGE_A,
+	JT_4_M_SAGE_C,
+	JT_4_F_SON,
+	JT_4_F_JPN2,
+	JT_4_F_JPN,
+	JT_4_F_JPNCHIBI,
+	JT_4_F_JPNOBA2,
+	JT_4_F_JPNOBA,
+	JT_4_M_JPN2,
+	JT_4_M_JPN,
+	JT_4_M_JPNCHIBI,
+	JT_4_M_JPNOJI2,
+	JT_4_M_JPNOJI,
+	JT_8_M_JPNSOLDIER,
+	JT_8_M_JPNMASTER,
+	JT_4_F_JPNMU,
+	JT_4_F_TWGIRL,
+	JT_4_F_TWGRANDMOM,
+	JT_4_F_TWMASKGIRL,
+	JT_4_F_TWMIDWOMAN,
+	JT_4_M_TWBOY,
+	JT_4_M_TWMASKMAN,
+	JT_4_M_TWMIDMAN,
+	JT_4_M_TWOLDMAN,
+	JT_4_M_TWTEAMAN,
+	JT_4_M_YOYOROGUE,
+	JT_8_M_TWSOLDIER,
+	JT_4_F_UMGIRL,
+	JT_4_F_UMOLDWOMAN,
+	JT_4_F_UMWOMAN,
+	JT_4_M_UMCHIEF,
+	JT_4_M_UMDANCEKID2,
+	JT_4_M_UMDANCEKID,
+	JT_4_M_UMKID,
+	JT_4_M_UMOLDMAN,
+	JT_4_M_UMSOLDIER,
+	JT_4_M_SALVATION,
+	JT_4_F_NFDEADKAFRA,
+	JT_4_F_NFDEADMGCIAN,
+	JT_4_F_NFLOSTGIRL,
+	JT_4_M_NFDEADMAN2,
+	JT_4_M_NFDEADMAN,
+	JT_4_M_NFDEADSWDMAN,
+	JT_4_M_NFLOSTMAN,
+	JT_4_M_NFMAN,
+	JT_4_NFBAT,
+	JT_4_NFCOCK,
+	JT_4_NFCOFFIN,
+	JT_4_NFWISP,
+	JT_1_F_SIGNZISK,
+	JT_1_M_SIGN1,
+	JT_1_M_SIGNALCHE,
+	JT_1_M_SIGNART,
+	JT_1_M_SIGNMCNT,
+	JT_1_M_SIGNMONK2,
+	JT_1_M_SIGNMONK,
+	JT_1_M_SIGNROGUE,
+	JT_4_F_VALKYRIE,
+	JT_TW_TOWER,
+	JT_2_M_OLDBLSMITH,
+	JT_4_F_CHNDOCTOR,
+	JT_4_F_CHNDRESS1,
+	JT_4_F_CHNDRESS2,
+	JT_4_F_CHNDRESS3,
+	JT_4_F_CHNWOMAN,
+	JT_4_M_CHN8GUEK,
+	JT_4_M_CHNCOOK,
+	JT_4_M_CHNGENERL,
+	JT_4_M_CHNMAN,
+	JT_4_M_CHNMONK,
+	JT_4_M_CHNOLD,
+	JT_4_M_CHNSOLDIER,
+	JT_4_M_DWARF,
+	JT_4_M_GRANDMONK,
+	JT_4_M_ROGUE,
+	JT_4_M_DOMINO,
+	JT_4_F_DOMINO,
+	JT_4_F_ZONDAGIRL,
+	JT_4_M_REIDIN_KURS,
+	JT_4_M_ZONDAOYAJI,
+	JT_4_M_BUDDHIST,
+	JT_2_BOARD1,
+	JT_2_BOARD2,
+	JT_2_BULLETIN_BOARD,
+	JT_4_F_THAIAYO,
+	JT_4_F_THAIGIRL,
+	JT_4_F_THAISHAMAN,
+	JT_4_M_THAIAYO,
+	JT_4_M_THAIOLD,
+	JT_4_M_THAIONGBAK,
+	JT_CLEAR_NPC,
+	JT_4_F_RACING,
+	JT_4_F_EINOLD,
+	JT_4_M_EINOLD,
+	JT_4_M_EINMINER,
+	JT_4_M_DIEMAN,
+	JT_4_F_EINWOMAN,
+	JT_4_M_REPAIR,
+	JT_4_M_EIN_SOLDIER,
+	JT_4_M_YURI,
+	JT_4_M_EINMAN2,
+	JT_4_M_EINMAN,
+	JT_2_F_SIGN1,
+	JT_4_BOARD3,
+	JT_4_BULLETIN_BOARD2,
+	JT_4_F_AGENTKAFRA,
+	JT_4_F_KAFRA8,
+	JT_4_F_KAFRA9,
+	JT_4_F_LGTGIRL,
+	JT_4_F_LGTGRAND,
+	JT_4_F_OPERATION,
+	JT_4_LGTSCIENCE,
+	JT_4_M_LGTGRAND,
+	JT_4_M_LGTGUARD2,
+	JT_4_M_LGTGUARD,
+	JT_4_M_LGTMAN,
+	JT_4_M_LGTPOOR,
+	JT_4_M_OPERATION,
+	JT_4_M_PRESIDENT,
+	JT_4_M_REINDEER,
+	JT_4_M_ZONDAMAN,
+	JT_4_M_PECOKNIGHT,
+	JT_4_CAT,
+	JT_4_F_YUNYANG,
+	JT_4_M_OILMAN,
+	JT_4_F_CAPEGIRL,
+	JT_4_M_MASKMAN,
+	JT_4_M_SITDOWN,
+	JT_4_F_SITDOWN,
+	JT_4_M_ALCHE_D,
+	JT_4_M_ACROSS,
+	JT_4_F_ACROSS,
+	JT_4_COOK,
+	JT_4_M_LIEMAN,
+	JT_2_POSTBOX,
+	JT_4_BULL,
+	JT_4_LAM,
+	JT_4_F_HUGIRL,
+	JT_4_F_HUGRANMA,
+	JT_4_F_HUWOMAN,
+	JT_4_F_KHELLISIA,
+	JT_4_F_KHELLY,
+	JT_4_M_HUBOY,
+	JT_4_M_HUGRANFA,
+	JT_4_M_HUMAN_01,
+	JT_4_M_HUMAN_02,
+	JT_4_M_HUMERCHANT,
+	JT_4_M_HUOLDARMY,
+	JT_4_M_KHKIEL,
+	JT_4_M_KHKYEL,
+	JT_4_M_KHMAN,
+	JT_4_F_KHWOMAN,
+	JT_4_F_KHGIRL,
+	JT_4_M_KHBOY,
+	JT_4_M_PHILMAN,
+	JT_4_PORING,
+	JT_2_COLAVEND,
+	JT_4_F_SOCCER,
+	JT_4_M_SOCCER7,
+	JT_4_M_SOCCER9,
+	JT_4_F_CHILD,
+	JT_4_F_MADAME,
+	JT_4_F_MASK1,
+	JT_4_F_MASK,
+	JT_4_F_RACHOLD,
+	JT_4_F_SHABBY,
+	JT_4_F_TRAINEE,
+	JT_4_M_CHILD1,
+	JT_4_M_CHILD,
+	JT_4_M_DOCTOR,
+	JT_4_M_FROZEN1,
+	JT_4_M_FROZEN,
+	JT_4_M_MASK1,
+	JT_4_M_MASK,
+	JT_4_M_MIDDLE1,
+	JT_4_M_MIDDLE,
+	JT_4_M_RACHMAN2,
+	JT_4_M_RACHMAN1,
+	JT_4_M_RACHOLD1,
+	JT_4_M_RACHOLD,
+	JT_4_M_RASWORD,
+	JT_4_M_TRAINEE,
+	JT_4_F_ARUNA_POP,
+	JT_4_M_ARUNA_NFM1,
+	JT_4_DST_CAMEL,
+	JT_4_DST_SOLDIER,
+	JT_4_F_DESERT,
+	JT_4_F_DST_CHILD,
+	JT_4_F_DST_GRAND,
+	JT_4_M_DESERT,
+	JT_4_M_DST_CHILD,
+	JT_4_M_DST_GRAND,
+	JT_4_M_DST_MASTER,
+	JT_4_M_DST_TOUGH,
+	JT_4_ANGELING,
+	JT_4_ARCHANGELING,
+	JT_4_GHOSTRING,
+	JT_4_F_EDEN_MASTER,
+	JT_4_F_EDEN_OFFICER,
+	JT_4_M_EDEN_GUARDER,
+	JT_4_M_PATRICK,
+	JT_4_DONKEY,
+	JT_4_M_TRISTAN,
+	JT_4_WHITE_COW,
+	JT_4_F_RUSCHILD,
+	JT_4_F_RUSWOMAN1,
+	JT_4_F_RUSWOMAN2,
+	JT_4_F_RUSWOMAN3,
+	JT_4_M_RUSCHILD,
+	JT_4_M_GUSLIMAN,
+	JT_4_M_RUSBALD,
+	JT_4_M_RUSKING,
+	JT_4_M_RUSKNIGHT,
+	JT_4_M_RUSMAN1,
+	JT_4_M_RUSMAN2,
+	JT_4_M_DRAKE,
+	JT_4_F_BABAYAGA,
+	JT_4_F_RUSGREEN,
+	JT_4_RUS_DWOLF,
+	JT_1_FLAG_LION,
+	JT_1_FLAG_EAGLE,
+	JT_4_M_MIKID,
+	JT_4_BLUE_FLOWER,
+	JT_4_RED_FLOWER,
+	JT_4_YELL_FLOWER,
+	JT_4_F_CAVE1,
+	JT_4_F_MUT1,
+	JT_4_F_MUT2,
+	JT_4_F_SCIENCE,
+	JT_4_M_1STPRIN1,
+	JT_4_M_1STPRIN2,
+	JT_4_M_2NDPRIN1,
+	JT_4_M_2NDPRIN2,
+	JT_4_M_3RDPRIN1,
+	JT_4_M_3RDPRIN2,
+	JT_4_M_4THPRIN1,
+	JT_4_M_4THPRIN2,
+	JT_4_M_5THPRIN1,
+	JT_4_M_5THPRIN2,
+	JT_4_M_6THPRIN1,
+	JT_4_M_6THPRIN2,
+	JT_4_M_CASMAN1,
+	JT_4_M_CAVE1,
+	JT_4_M_MOCASS1,
+	JT_4_M_MOCASS2,
+	JT_4_M_MUT1,
+	NPC_RANGE2_END, // Official JT_MON_BEGIN
+
+	NPC_RANGE3_START = 10000, // Official JT_NEW_NPC_3RD_BEGIN
+	JT_4_TOWER_14,
+	JT_4_TOWER_15,
+	JT_4_TOWER_16,
+	JT_4_TOWER_17,
+	JT_4_TREASURE_BOX,
+	JT_ACADEMY_MASTER,
+	JT_PORTAL,
+	JT_THANATOS_BATTLE,
+	JT_THANATOS_KEEP,
+	JT_4_F_LYDIA,
+	JT_4_LUDE,
+	JT_4_ALIZA,
+	JT_4_ALICE,
+	JT_4_ARCHER_SKEL,
+	JT_4_JACK,
+	JT_4_SOLDIER_SKEL,
+	JT_4_LOLI_RURI,
+	JT_4_M_SAKRAY_TIED,
+	JT_4_M_ANTONIO,
+	JT_4_M_COOKIE,
+	JT_4_M_BELIEVER01,
+	JT_4_F_BELIEVER01,
+	JT_4_M_BELIEVER02,
+	JT_4_ROPEPILE,
+	JT_4_BRICKPILE,
+	JT_4_WOODPILE,
+	JT_4_M_TAMARIN,
+	JT_4_M_DEATH,
+	JT_4_GHOST_STAND,
+	JT_4_GHOST_COLLAPSE,
+	JT_4_COOKIEHOUSE,
+	JT_4_F_SKULL06GIRL,
+	JT_4_NONMYSTCASE,
+	JT_4_F_KIMI,
+	JT_4_M_FROZEN_GC,
+	JT_4_M_FROZEN_KN,
+	JT_4_SNAKE_LORD,
+	JT_4_F_MOCBOY,
+	JT_4_F_RUNAIN,
+	JT_4_M_ROEL,
+	JT_4_F_SHALOSH,
+	JT_4_ENERGY_RED,
+	JT_4_ENERGY_BLUE,
+	JT_4_ENERGY_YELLOW,
+	JT_4_ENERGY_BLACK,
+	JT_4_ENERGY_WHITE,
+	JT_4_F_PERE01,
+	JT_4_JITTERBUG,
+	JT_4_SEA_OTTER,
+	JT_4_GALAPAGO,
+	JT_4_DESERTWOLF_B,
+	JT_4_BB_PORING,
+	JT_4_F_CHARLESTON01,
+	JT_4_F_CHARLESTON02,
+	JT_4_F_CHARLESTON03,
+	JT_4_M_IAN,
+	JT_4_M_OLDSCHOLAR,
+	JT_4_F_LAPERM,
+	JT_4_M_DEBON,
+	JT_4_M_BIRMAN,
+	JT_4_F_SHAM,
+	JT_4_M_REBELLION,
+	JT_4_F_REBELLION,
+	JT_4_CHN_SHAOTH,
+	JT_4_SHOAL,
+	JT_4_F_SARAH,
+	JT_4_GIGANTES_BIG,
+	JT_4_GIGANTES,
+	JT_4_GIGANTES_SMALL,
+	JT_4_GARGOYLE_STATUE,
+	JT_4_AIRA,
+	JT_4_EZELLA,
+	JT_4_KULUNA,
+	JT_4_LUNE,
+	JT_4_MALLINA,
+	JT_4_MORIN,
+	JT_4_NASARIN,
+	JT_4_F_BERRYTEA,
+	JT_4_F_FRUIT,
+	JT_4_SCR_MT_ROBOTS,
+	JT_4_MACHINE_DEVICE,
+	JT_4_GC109,
+	JT_4_SYS_MSG,
+	JT_4_M_TATIO,
+	JT_4_M_REKENBER,
+	JT_4_XMAS_CAT1,
+	JT_4_XMAS_CAT2,
+	JT_4_XMAS_CAT3,
+	JT_4_XMAS_CAT4,
+	JT_4_XMAS_CAT5,
+	JT_4_XMAS_CAT6,
+	JT_4_M_DEATH2,
+	JT_4_S_KADOMATSU,
+	JT_4_B_KADOMATSU,
+	JT_4_F_08,
+	JT_4_F_08_STATUE,
+	JT_4_M_DARKPRIEST,
+	JT_4_JP_GARM_H,
+	JT_4_JP_MEDUSA_H,
+	JT_4_CHN_GVG_01,
+	JT_4_SPRING_RABBIT,
+	JT_4_PD_TYRA,
+	JT_4_PD_TYRANOS,
+	JT_4_PD_PLESI,
+	JT_4_PD_PLESIO,
+	JT_4_PD_BRACHI,
+	JT_4_PD_BRACHIOS,
+	JT_4_PD_GOLDDRAGON,
+	JT_4_PD_ZAEROG,
+	JT_4_PD_TAMADORA,
+	JT_4_JP_EDGA_H,
+	JT_4_JP_BRAGOLEM_H,
+	JT_4_EL_AQUA,
+	JT_4_EP16_NIHIL,
+	JT_4_EP16_SPICA,
+	JT_4_EP16_SKIA,
+	JT_4_EP16_PETER,
+	JT_4_EP16_CRUX,
+	JT_4_EP16_GRANZ,
+	JT_4_EP16_STOLZ,
+	JT_4_EP16_EGEO,
+	JT_4_EP16_COOK,
+	JT_4_EP16_MARK,
+	JT_4_EP16_TAMARIN,
+	JT_4_EP16_POE,
+	JT_4_EP16_ISAAC,
+	JT_4_EP16_HELMUT,
+	JT_4_EP16_WOLF,
+	JT_4_EP16_MEYER,
+	JT_4_EP16_AGNES,
+	JT_4_EP16_FOOD,
+	JT_4_EP16_LOUVIERE,
+	JT_4_EP16_MAX,
+	JT_4_EP16_SPIEGEL,
+	JT_4_MOONLIGHT,
+	JT_4_MISTRESS,
+	JT_4_DRACULA,
+	JT_4_STORMKNIGHT,
+	JT_4_TATTER,
+	JT_4_AS_RAGGED_GOLEM,
+	JT_4_AS_BLOODY_KNIGHT,
+	JT_4_AS_WIND_GHOST,
+	JT_4_F_BIJOU,
+	JT_4_EP16_COOK2,
+	JT_4_SERVICE_30_M_01,
+	JT_4_SERVICE_30_F_01,
+	JT_4_SCR_AT_ROBOTS,
+	JT_4_F_RANGER,
+	JT_4_WAG,
+	JT_4_NPC_TRAP,
+	JT_4_RAGGLER,
+	JT_4_DR_PEPE,
+	JT_4_DR_GAMBERI,
+	JT_4_DR_AGLIO,
+	JT_4_DR_OLIO,
+	JT_4_DR_STELO,
+	JT_4_DR_TORTEL,
+	JT_4_BASIL_SLAVE,
+	JT_4_DOU_JINDO,
+	JT_4_DOU_SIBA,
+	JT_4_TARUTUPI,
+	JT_4_DR_SOLDIER,
+	JT_4_DR_M_01,
+	JT_4_DR_M_02,
+	JT_4_DR_F_01,
+	JT_4_DR_F_02,
+	JT_4_DR_KID_01,
+	JT_4_JP_2015EVT,
+	JT_4_ALLIGATOR,
+	JT_4_ANOLIAN,
+	JT_4_TACNU,
+	JT_4_CENERE,
+	JT_4_F_ARUNA_POP2,
+	JT_4_JACK_HEAD,
+	JT_4_INJUSTICE,
+	JT_4_BLOODYMAN,
+	JT_4_GIBBET,
+	JT_4_DULLAHAN,
+	JT_4_M_LAZY,
+	JT_4_M_GONY,
+	JT_4_M_ROOKIE,
+	JT_4_M_PHILOFONTES,
+	JT_4_F_ESTLOVELOY,
+	JT_4_F_LEEDSH,
+	JT_4_F_DIENE,
+	JT_4_F_COATNEIS,
+	JT_4_M_RUPERT,
+	JT_4_M_FALLENGONY,
+	JT_4_M_EISEN,
+	JT_4_F_DEADEVIL,
+	JT_4_F_HUNTER_EVIL,
+	JT_4_F_ELENA,
+	JT_4_F_ANYA,
+	JT_4_M_SEIREN_UC,
+	JT_4_M_GUNSLINGER2,
+	JT_4_M_GUNSLINGER3,
+	JT_4_M_REBELLION2,
+	JT_4_M_REBELLION3,
+	JT_4_F_GUNSLINGER2,
+	JT_4_F_GUNSLINGER3,
+	JT_4_F_REBELLION2,
+	JT_4_F_REBELLION3,
+	JT_4_M_ILYA,
+
+	JT_4_ELDER = 10205,
+	JT_4_LUNATIC,
+	JT_4_F_NOVICE2,
+	JT_4_WICKEDNYMPH,
+	JT_4_F_PREMI,
+	JT_4_M_COSTELL,
+	JT_4_M_YATTWARP,
+	JT_4_M_EVOKASCUDI,
+	JT_4_M_JOHNNYJAMES,
+	JT_4_M_ALBERTFORD,
+	JT_4_M_SEANMCCURDY,
+	JT_4_M_KARAMPUCCI,
+	JT_4_M_CACTUSMAN1,
+	JT_4_M_CACTUSMAN2,
+	JT_4_M_CACTUSMAN3,
+	JT_4_M_CACTUSLADY,
+	JT_4_M_GAST,
+	JT_4_M_CACTUSCHILD,
+	JT_4_KING,
+	JT_4_F_BOMI,
+	JT_4_M_CACTUSCHIEF,
+	JT_4_F_CACTUSCHILD2,
+	JT_4_F_CACTUSLADY2,
+	JT_4_F_CACTUSLADY3,
+	JT_4_M_CACTUS,
+	JT_4_M_COWRAIDERS1,
+	JT_4_M_COWRAIDERS2,
+	JT_4_M_COWRAIDERS3,
+	JT_4_F_JP14THEVT,
+	JT_4_M_POORSCHOLAR,
+	JT_4_M_PEPPERROTI,
+	JT_JP_NPC01,
+	JT_4_PURPLE_WARP,
+	JT_4_F_NARIN,
+	JT_4_M_URGENT_MAN,
+	JT_4_M_KEEN_SOLDIER,
+	JT_4_F_SLOPPY_WOMAN,
+	JT_4_F_DRKAFRA01,
+	JT_4_M_DRZONDA01,
+	JT_4_M_SWD_RENO,
+	JT_4_M_KNG_RENO,
+	JT_4_M_AC_RUMIN,
+	JT_4_M_HIGH_WIZARD,
+	JT_4_SYSTEM_BOX,
+	JT_4_STEELBOX,
+	JT_4_WOODBOX,
+	JT_4_M_POPFESTA,
+	JT_4_BONFIRE,
+	JT_4_PCCOUNT,
+	JT_4_LAVAGOLEM,
+
+	JT_JP_NPC02 = 10261,
+	JT_JP_NPC03,
+	JT_JP_NPC04,
+	JT_JP_NPC05,
+	JT_JP_NPC06,
+	JT_JP_NPC07,
+	JT_JP_NPC08,
+	JT_JP_NPC09,
+	JT_JP_NPC10,
+
+	JT_4_SCATLETON = 10271,
+	JT_4_JP_AB_NPC_001,
+	JT_4_JP_AB_NPC_002,
+	JT_4_JP_AB_NPC_003,
+	JT_4_JP_AB_NPC_004,
+	JT_4_JP_AB_NPC_005,
+	JT_4_JP_AB_NPC_006,
+	JT_4_JP_AB_NPC_007,
+	JT_4_JP_AB_NPC_008,
+	JT_4_JJAK,
+	NPC_RANGE3_END, // Official: JT_NEW_NPC_3RD_END=19999
+
+	// Unofficial
+	JT_INVISIBLE = 32767,
+	JT_FAKENPC = -1
 };
 
 // Old NPC range
-#define MAX_NPC_CLASS 1000
+#define MAX_NPC_CLASS NPC_RANGE2_END
 // New NPC range
-#define MAX_NPC_CLASS2_START 10000
-#define MAX_NPC_CLASS2_END 10281
+#define MAX_NPC_CLASS2_START NPC_RANGE3_START
+#define MAX_NPC_CLASS2_END NPC_RANGE3_END
 
 //Checks if a given id is a valid npc id. [Skotlex]
 //Since new npcs are added all the time, the max valid value is the one before the first mob (Scorpion = 1001)
-#define npcdb_checkid(id) ( ( (id) >= 46 && (id) <= 125) || (id) == HIDDEN_WARP_CLASS || ( (id) > 400 && (id) < MAX_NPC_CLASS ) || (id) == INVISIBLE_CLASS || ( id > MAX_NPC_CLASS2_START && id < MAX_NPC_CLASS2_END ) )
+#define npcdb_checkid(id) ( ( (id) > NPC_RANGE1_START && (id) < NPC_RANGE1_END ) || (id) == JT_HIDDEN_WARP_NPC || ( (id) > NPC_RANGE2_START && (id) < NPC_RANGE2_END ) || (id) == JT_INVISIBLE || ( id > NPC_RANGE3_START && id < NPC_RANGE3_END ) )
 
 #ifdef PCRE_SUPPORT
 void npc_chat_finalize(struct npc_data* nd);

+ 1 - 1
src/map/pc.c

@@ -1521,7 +1521,7 @@ void pc_reg_received(struct map_session_data *sd)
 	}
 
 	if( pc_isinvisible(sd) ) {
-		sd->vd.class_ = INVISIBLE_CLASS;
+		sd->vd.class_ = JT_INVISIBLE;
 		clif_displaymessage( sd->fd, msg_txt( sd, 11 ) ); // Invisible: On
 		// decrement the number of pvp players on the map
 		map[sd->bl.m].users_pvp--;

+ 26 - 4
src/map/script.cpp

@@ -14006,6 +14006,13 @@ BUILDIN_FUNC(misceffect)
 	int type;
 
 	type=script_getnum(st,2);
+
+	if( type <= EF_NONE || type >= EF_MAX ){
+		ShowError( "buildin_misceffect: unsupported effect id %d\n", type );
+		return SCRIPT_CMD_FAILURE;
+	}
+
+
 	if(st->oid && st->oid != fake_nd->bl.id) {
 		struct block_list *bl = map_id2bl(st->oid);
 		if (bl)
@@ -14369,6 +14376,11 @@ BUILDIN_FUNC(specialeffect)
 	if(bl==NULL)
 		return SCRIPT_CMD_SUCCESS;
 
+	if( type <= EF_NONE || type >= EF_MAX ){
+		ShowError( "buildin_specialeffect: unsupported effect id %d\n", type );
+		return SCRIPT_CMD_FAILURE;
+	}
+
 	if( script_hasdata(st,4) )
 	{
 		TBL_NPC *nd = npc_name2id(script_getstr(st,4));
@@ -14396,6 +14408,11 @@ BUILDIN_FUNC(specialeffect2)
 		int type = script_getnum(st,2);
 		enum send_target target = script_hasdata(st,3) ? (send_target)script_getnum(st,3) : AREA;
 
+		if( type <= EF_NONE || type >= EF_MAX ){
+			ShowError( "buildin_specialeffect2: unsupported effect id %d\n", type );
+			return SCRIPT_CMD_FAILURE;
+		}
+
 		clif_specialeffect(&sd->bl, type, target);
 	}
 	return SCRIPT_CMD_SUCCESS;
@@ -14507,7 +14524,7 @@ int recovery_sub(struct map_session_data* sd, int revive)
 	if(revive&(1|4) && pc_isdead(sd)) {
 		status_revive(&sd->bl, 100, 100);
 		clif_displaymessage(sd->fd,msg_txt(sd,16)); // You've been revived!
-		clif_specialeffect(&sd->bl, 77, AREA);
+		clif_specialeffect(&sd->bl, EF_RESURRECTION, AREA);
 	} else if(revive&(1|2) && !pc_isdead(sd)) {
 		status_percent_heal(&sd->bl, 100, 100);
 		clif_displaymessage(sd->fd,msg_txt(sd,680)); // You have been recovered!
@@ -15238,7 +15255,7 @@ BUILDIN_FUNC(summon)
 			delete_timer(md->deletetimer, mob_timer_delete);
 		md->deletetimer = add_timer(tick+(timeout>0?timeout:60000),mob_timer_delete,md->bl.id,0);
 		mob_spawn (md); //Now it is ready for spawning.
-		clif_specialeffect(&md->bl,344,AREA);
+		clif_specialeffect(&md->bl,EF_ENTRY2,AREA);
 		sc_start4(NULL,&md->bl, SC_MODECHANGE, 100, 1, 0, MD_AGGRESSIVE, 0, 60000);
 	}
 	script_pushint(st, md->bl.id);
@@ -16410,7 +16427,7 @@ BUILDIN_FUNC(setnpcdisplay)
 {
 	const char* name;
 	const char* newname = NULL;
-	int class_ = -1, size = -1;
+	int class_ = JT_FAKENPC, size = -1;
 	struct script_data* data;
 	struct npc_data* nd;
 
@@ -16450,7 +16467,7 @@ BUILDIN_FUNC(setnpcdisplay)
 	else
 		size = -1;
 
-	if( class_ != -1 && nd->class_ != class_ )
+	if( class_ != JT_FAKENPC && nd->class_ != class_ )
 		npc_setclass(nd, class_);
 	else if( size != -1 )
 	{ // Required to update the visual size
@@ -22571,6 +22588,11 @@ BUILDIN_FUNC(hateffect){
 	effectID = script_getnum(st,2);
 	enable = script_getnum(st,3) ? true : false;
 
+	if( effectID <= HAT_EF_MIN || effectID >= HAT_EF_MAX ){
+		ShowError( "buildin_hateffect: unsupported hat effect id %d\n", effectID );
+		return SCRIPT_CMD_FAILURE;
+	}
+
 	ARR_FIND( 0, sd->hatEffectCount, i, sd->hatEffectIDs[i] == effectID );
 
 	if( enable ){

+ 1159 - 0
src/map/script.h

@@ -706,6 +706,1165 @@ enum vip_status_type {
 	VIP_STATUS_REMAINING
 };
 
+enum e_special_effects {
+	EF_NONE = -1,
+	EF_HIT1,
+	EF_HIT2,
+	EF_HIT3,
+	EF_HIT4,
+	EF_HIT5,
+	EF_HIT6,
+	EF_ENTRY,
+	EF_EXIT,
+	EF_WARP,
+	EF_ENHANCE,
+	EF_COIN,
+	EF_ENDURE,
+	EF_BEGINSPELL,
+	EF_GLASSWALL,
+	EF_HEALSP,
+	EF_SOULSTRIKE,
+	EF_BASH,
+	EF_MAGNUMBREAK,
+	EF_STEAL,
+	EF_HIDING,
+	EF_PATTACK,
+	EF_DETOXICATION,
+	EF_SIGHT,
+	EF_STONECURSE,
+	EF_FIREBALL,
+	EF_FIREWALL,
+	EF_ICEARROW,
+	EF_FROSTDIVER,
+	EF_FROSTDIVER2,
+	EF_LIGHTBOLT,
+	EF_THUNDERSTORM,
+	EF_FIREARROW,
+	EF_NAPALMBEAT,
+	EF_RUWACH,
+	EF_TELEPORTATION,
+	EF_READYPORTAL,
+	EF_PORTAL,
+	EF_INCAGILITY,
+	EF_DECAGILITY,
+	EF_AQUA,
+	EF_SIGNUM,
+	EF_ANGELUS,
+	EF_BLESSING,
+	EF_INCAGIDEX,
+	EF_SMOKE,
+	EF_FIREFLY,
+	EF_SANDWIND,
+	EF_TORCH,
+	EF_SPRAYPOND,
+	EF_FIREHIT,
+	EF_FIRESPLASHHIT,
+	EF_COLDHIT,
+	EF_WINDHIT,
+	EF_POISONHIT,
+	EF_BEGINSPELL2,
+	EF_BEGINSPELL3,
+	EF_BEGINSPELL4,
+	EF_BEGINSPELL5,
+	EF_BEGINSPELL6,
+	EF_BEGINSPELL7,
+	EF_LOCKON,
+	EF_WARPZONE,
+	EF_SIGHTRASHER,
+	EF_BARRIER,
+	EF_ARROWSHOT,
+	EF_INVENOM,
+	EF_CURE,
+	EF_PROVOKE,
+	EF_MVP,
+	EF_SKIDTRAP,
+	EF_BRANDISHSPEAR,
+	EF_CONE,
+	EF_SPHERE,
+	EF_BOWLINGBASH,
+	EF_ICEWALL,
+	EF_GLORIA,
+	EF_MAGNIFICAT,
+	EF_RESURRECTION,
+	EF_RECOVERY,
+	EF_EARTHSPIKE,
+	EF_SPEARBMR,
+	EF_PIERCE,
+	EF_TURNUNDEAD,
+	EF_SANCTUARY,
+	EF_IMPOSITIO,
+	EF_LEXAETERNA,
+	EF_ASPERSIO,
+	EF_LEXDIVINA,
+	EF_SUFFRAGIUM,
+	EF_STORMGUST,
+	EF_LORD,
+	EF_BENEDICTIO,
+	EF_METEORSTORM,
+	EF_YUFITEL,
+	EF_YUFITELHIT,
+	EF_QUAGMIRE,
+	EF_FIREPILLAR,
+	EF_FIREPILLARBOMB,
+	EF_HASTEUP,
+	EF_FLASHER,
+	EF_REMOVETRAP,
+	EF_REPAIRWEAPON,
+	EF_CRASHEARTH,
+	EF_PERFECTION,
+	EF_MAXPOWER,
+	EF_BLASTMINE,
+	EF_BLASTMINEBOMB,
+	EF_CLAYMORE,
+	EF_FREEZING,
+	EF_BUBBLE,
+	EF_GASPUSH,
+	EF_SPRINGTRAP,
+	EF_KYRIE,
+	EF_MAGNUS,
+	EF_BOTTOM,
+	EF_BLITZBEAT,
+	EF_WATERBALL,
+	EF_WATERBALL2,
+	EF_FIREIVY,
+	EF_DETECTING,
+	EF_CLOAKING,
+	EF_SONICBLOW,
+	EF_SONICBLOWHIT,
+	EF_GRIMTOOTH,
+	EF_VENOMDUST,
+	EF_ENCHANTPOISON,
+	EF_POISONREACT,
+	EF_POISONREACT2,
+	EF_OVERTHRUST,
+	EF_SPLASHER,
+	EF_TWOHANDQUICKEN,
+	EF_AUTOCOUNTER,
+	EF_GRIMTOOTHATK,
+	EF_FREEZE,
+	EF_FREEZED,
+	EF_ICECRASH,
+	EF_SLOWPOISON,
+	EF_BOTTOM2,
+	EF_FIREPILLARON,
+	EF_SANDMAN,
+	EF_REVIVE,
+	EF_PNEUMA,
+	EF_HEAVENSDRIVE,
+	EF_SONICBLOW2,
+	EF_BRANDISH2,
+	EF_SHOCKWAVE,
+	EF_SHOCKWAVEHIT,
+	EF_EARTHHIT,
+	EF_PIERCESELF,
+	EF_BOWLINGSELF,
+	EF_SPEARSTABSELF,
+	EF_SPEARBMRSELF,
+	EF_HOLYHIT,
+	EF_CONCENTRATION,
+	EF_REFINEOK,
+	EF_REFINEFAIL,
+	EF_JOBCHANGE,
+	EF_LVUP,
+	EF_JOBLVUP,
+	EF_TOPRANK,
+	EF_PARTY,
+	EF_RAIN,
+	EF_SNOW,
+	EF_SAKURA,
+	EF_STATUS_STATE,
+	EF_BANJJAKII,
+	EF_MAKEBLUR,
+	EF_TAMINGSUCCESS,
+	EF_TAMINGFAILED,
+	EF_ENERGYCOAT,
+	EF_CARTREVOLUTION,
+	EF_VENOMDUST2,
+	EF_CHANGEDARK,
+	EF_CHANGEFIRE,
+	EF_CHANGECOLD,
+	EF_CHANGEWIND,
+	EF_CHANGEFLAME,
+	EF_CHANGEEARTH,
+	EF_CHAINGEHOLY,
+	EF_CHANGEPOISON,
+	EF_HITDARK,
+	EF_MENTALBREAK,
+	EF_MAGICALATTHIT,
+	EF_SUI_EXPLOSION,
+	EF_DARKATTACK,
+	EF_SUICIDE,
+	EF_COMBOATTACK1,
+	EF_COMBOATTACK2,
+	EF_COMBOATTACK3,
+	EF_COMBOATTACK4,
+	EF_COMBOATTACK5,
+	EF_GUIDEDATTACK,
+	EF_POISONATTACK,
+	EF_SILENCEATTACK,
+	EF_STUNATTACK,
+	EF_PETRIFYATTACK,
+	EF_CURSEATTACK,
+	EF_SLEEPATTACK,
+	EF_TELEKHIT,
+	EF_PONG,
+	EF_LEVEL99,
+	EF_LEVEL99_2,
+	EF_LEVEL99_3,
+	EF_GUMGANG,
+	EF_POTION1,
+	EF_POTION2,
+	EF_POTION3,
+	EF_POTION4,
+	EF_POTION5,
+	EF_POTION6,
+	EF_POTION7,
+	EF_POTION8,
+	EF_DARKBREATH,
+	EF_DEFFENDER,
+	EF_KEEPING,
+	EF_SUMMONSLAVE,
+	EF_BLOODDRAIN,
+	EF_ENERGYDRAIN,
+	EF_POTION_CON,
+	EF_POTION_,
+	EF_POTION_BERSERK,
+	EF_POTIONPILLAR,
+	EF_DEFENDER,
+	EF_GANBANTEIN,
+	EF_WIND,
+	EF_VOLCANO,
+	EF_GRANDCROSS,
+	EF_INTIMIDATE,
+	EF_CHOOKGI,
+	EF_CLOUD,
+	EF_CLOUD2,
+	EF_MAPPILLAR,
+	EF_LINELINK,
+	EF_CLOUD3,
+	EF_SPELLBREAKER,
+	EF_DISPELL,
+	EF_DELUGE,
+	EF_VIOLENTGALE,
+	EF_LANDPROTECTOR,
+	EF_BOTTOM_VO,
+	EF_BOTTOM_DE,
+	EF_BOTTOM_VI,
+	EF_BOTTOM_LA,
+	EF_FASTMOVE,
+	EF_MAGICROD,
+	EF_HOLYCROSS,
+	EF_SHIELDCHARGE,
+	EF_MAPPILLAR2,
+	EF_PROVIDENCE,
+	EF_SHIELDBOOMERANG,
+	EF_SPEARQUICKEN,
+	EF_DEVOTION,
+	EF_REFLECTSHIELD,
+	EF_ABSORBSPIRITS,
+	EF_STEELBODY,
+	EF_FLAMELAUNCHER,
+	EF_FROSTWEAPON,
+	EF_LIGHTNINGLOADER,
+	EF_SEISMICWEAPON,
+	EF_MAPPILLAR3,
+	EF_MAPPILLAR4,
+	EF_GUMGANG2,
+	EF_TEIHIT1,
+	EF_GUMGANG3,
+	EF_TEIHIT2,
+	EF_TANJI,
+	EF_TEIHIT1X,
+	EF_CHIMTO,
+	EF_STEALCOIN,
+	EF_STRIPWEAPON,
+	EF_STRIPSHIELD,
+	EF_STRIPARMOR,
+	EF_STRIPHELM,
+	EF_CHAINCOMBO,
+	EF_RG_COIN,
+	EF_BACKSTAP,
+	EF_TEIHIT3,
+	EF_BOTTOM_DISSONANCE,
+	EF_BOTTOM_LULLABY,
+	EF_BOTTOM_RICHMANKIM,
+	EF_BOTTOM_ETERNALCHAOS,
+	EF_BOTTOM_DRUMBATTLEFIELD,
+	EF_BOTTOM_RINGNIBELUNGEN,
+	EF_BOTTOM_ROKISWEIL,
+	EF_BOTTOM_INTOABYSS,
+	EF_BOTTOM_SIEGFRIED,
+	EF_BOTTOM_WHISTLE,
+	EF_BOTTOM_ASSASSINCROSS,
+	EF_BOTTOM_POEMBRAGI,
+	EF_BOTTOM_APPLEIDUN,
+	EF_BOTTOM_UGLYDANCE,
+	EF_BOTTOM_HUMMING,
+	EF_BOTTOM_DONTFORGETME,
+	EF_BOTTOM_FORTUNEKISS,
+	EF_BOTTOM_SERVICEFORYOU,
+	EF_TALK_FROSTJOKE,
+	EF_TALK_SCREAM,
+	EF_POKJUK,
+	EF_THROWITEM,
+	EF_THROWITEM2,
+	EF_CHEMICALPROTECTION,
+	EF_POKJUK_SOUND,
+	EF_DEMONSTRATION,
+	EF_CHEMICAL2,
+	EF_TELEPORTATION2,
+	EF_PHARMACY_OK,
+	EF_PHARMACY_FAIL,
+	EF_FORESTLIGHT,
+	EF_THROWITEM3,
+	EF_FIRSTAID,
+	EF_SPRINKLESAND,
+	EF_LOUD,
+	EF_HEAL,
+	EF_HEAL2,
+	EF_EXIT2,
+	EF_GLASSWALL2,
+	EF_READYPORTAL2,
+	EF_PORTAL2,
+	EF_BOTTOM_MAG,
+	EF_BOTTOM_SANC,
+	EF_HEAL3,
+	EF_WARPZONE2,
+	EF_FORESTLIGHT2,
+	EF_FORESTLIGHT3,
+	EF_FORESTLIGHT4,
+	EF_HEAL4,
+	EF_FOOT,
+	EF_FOOT2,
+	EF_BEGINASURA,
+	EF_TRIPLEATTACK,
+	EF_HITLINE,
+	EF_HPTIME,
+	EF_SPTIME,
+	EF_MAPLE,
+	EF_BLIND,
+	EF_POISON,
+	EF_GUARD,
+	EF_JOBLVUP50,
+	EF_ANGEL2,
+	EF_MAGNUM2,
+	EF_CALLZONE,
+	EF_PORTAL3,
+	EF_COUPLECASTING,
+	EF_HEARTCASTING,
+	EF_ENTRY2,
+	EF_SAINTWING,
+	EF_SPHEREWIND,
+	EF_COLORPAPER,
+	EF_LIGHTSPHERE,
+	EF_WATERFALL,
+	EF_WATERFALL_90,
+	EF_WATERFALL_SMALL,
+	EF_WATERFALL_SMALL_90,
+	EF_WATERFALL_T2,
+	EF_WATERFALL_T2_90,
+	EF_WATERFALL_SMALL_T2,
+	EF_WATERFALL_SMALL_T2_90,
+	EF_MINI_TETRIS,
+	EF_GHOST,
+	EF_BAT,
+	EF_BAT2,
+	EF_SOULBREAKER,
+	EF_LEVEL99_4,
+	EF_VALLENTINE,
+	EF_VALLENTINE2,
+	EF_PRESSURE,
+	EF_BASH3D,
+	EF_AURABLADE,
+	EF_REDBODY,
+	EF_LKCONCENTRATION,
+	EF_BOTTOM_GOSPEL,
+	EF_ANGEL,
+	EF_DEVIL,
+	EF_DRAGONSMOKE,
+	EF_BOTTOM_BASILICA,
+	EF_ASSUMPTIO,
+	EF_HITLINE2,
+	EF_BASH3D2,
+	EF_ENERGYDRAIN2,
+	EF_TRANSBLUEBODY,
+	EF_MAGICCRASHER,
+	EF_LIGHTSPHERE2,
+	EF_LIGHTBLADE,
+	EF_ENERGYDRAIN3,
+	EF_LINELINK2,
+	EF_LINKLIGHT,
+	EF_TRUESIGHT,
+	EF_FALCONASSAULT,
+	EF_TRIPLEATTACK2,
+	EF_PORTAL4,
+	EF_MELTDOWN,
+	EF_CARTBOOST,
+	EF_REJECTSWORD,
+	EF_TRIPLEATTACK3,
+	EF_SPHEREWIND2,
+	EF_LINELINK3,
+	EF_PINKBODY,
+	EF_LEVEL99_5,
+	EF_LEVEL99_6,
+	EF_BASH3D3,
+	EF_BASH3D4,
+	EF_NAPALMVALCAN,
+	EF_PORTAL5,
+	EF_MAGICCRASHER2,
+	EF_BOTTOM_SPIDER,
+	EF_BOTTOM_FOGWALL,
+	EF_SOULBURN,
+	EF_SOULCHANGE,
+	EF_BABY,
+	EF_SOULBREAKER2,
+	EF_RAINBOW,
+	EF_PEONG,
+	EF_TANJI2,
+	EF_PRESSEDBODY,
+	EF_SPINEDBODY,
+	EF_KICKEDBODY,
+	EF_AIRTEXTURE,
+	EF_HITBODY,
+	EF_DOUBLEGUMGANG,
+	EF_REFLECTBODY,
+	EF_BABYBODY,
+	EF_BABYBODY2,
+	EF_GIANTBODY,
+	EF_GIANTBODY2,
+	EF_ASURABODY,
+	EF_4WAYBODY,
+	EF_QUAKEBODY,
+	EF_ASURABODY_MONSTER,
+	EF_HITLINE3,
+	EF_HITLINE4,
+	EF_HITLINE5,
+	EF_HITLINE6,
+	EF_ELECTRIC,
+	EF_ELECTRIC2,
+	EF_HITLINE7,
+	EF_STORMKICK,
+	EF_HALFSPHERE,
+	EF_ATTACKENERGY,
+	EF_ATTACKENERGY2,
+	EF_CHEMICAL3,
+	EF_ASSUMPTIO2,
+	EF_BLUECASTING,
+	EF_RUN,
+	EF_STOPRUN,
+	EF_STOPEFFECT,
+	EF_JUMPBODY,
+	EF_LANDBODY,
+	EF_FOOT3,
+	EF_FOOT4,
+	EF_TAE_READY,
+	EF_GRANDCROSS2,
+	EF_SOULSTRIKE2,
+	EF_YUFITEL2,
+	EF_NPC_STOP,
+	EF_DARKCASTING,
+	EF_GUMGANGNPC,
+	EF_AGIUP,
+	EF_JUMPKICK,
+	EF_QUAKEBODY2,
+	EF_STORMKICK1,
+	EF_STORMKICK2,
+	EF_STORMKICK3,
+	EF_STORMKICK4,
+	EF_STORMKICK5,
+	EF_STORMKICK6,
+	EF_STORMKICK7,
+	EF_SPINEDBODY2,
+	EF_BEGINASURA1,
+	EF_BEGINASURA2,
+	EF_BEGINASURA3,
+	EF_BEGINASURA4,
+	EF_BEGINASURA5,
+	EF_BEGINASURA6,
+	EF_BEGINASURA7,
+	EF_AURABLADE2,
+	EF_DEVIL1,
+	EF_DEVIL2,
+	EF_DEVIL3,
+	EF_DEVIL4,
+	EF_DEVIL5,
+	EF_DEVIL6,
+	EF_DEVIL7,
+	EF_DEVIL8,
+	EF_DEVIL9,
+	EF_DEVIL10,
+	EF_DOUBLEGUMGANG2,
+	EF_DOUBLEGUMGANG3,
+	EF_BLACKDEVIL,
+	EF_FLOWERCAST,
+	EF_FLOWERCAST2,
+	EF_FLOWERCAST3,
+	EF_MOCHI,
+	EF_LAMADAN,
+	EF_EDP,
+	EF_SHIELDBOOMERANG2,
+	EF_RG_COIN2,
+	EF_GUARD2,
+	EF_SLIM,
+	EF_SLIM2,
+	EF_SLIM3,
+	EF_CHEMICALBODY,
+	EF_CASTSPIN,
+	EF_PIERCEBODY,
+	EF_SOULLINK,
+	EF_CHOOKGI2,
+	EF_MEMORIZE,
+	EF_SOULLIGHT,
+	EF_MAPAE,
+	EF_ITEMPOKJUK,
+	EF_05VAL,
+	EF_BEGINASURA11,
+	EF_NIGHT,
+	EF_CHEMICAL2DASH,
+	EF_GROUNDSAMPLE,
+	EF_GI_EXPLOSION,
+	EF_CLOUD4,
+	EF_CLOUD5,
+	EF_BOTTOM_HERMODE,
+	EF_CARTTER,
+	EF_ITEMFAST,
+	EF_SHIELDBOOMERANG3,
+	EF_DOUBLECASTBODY,
+	EF_GRAVITATION,
+	EF_TAROTCARD1,
+	EF_TAROTCARD2,
+	EF_TAROTCARD3,
+	EF_TAROTCARD4,
+	EF_TAROTCARD5,
+	EF_TAROTCARD6,
+	EF_TAROTCARD7,
+	EF_TAROTCARD8,
+	EF_TAROTCARD9,
+	EF_TAROTCARD10,
+	EF_TAROTCARD11,
+	EF_TAROTCARD12,
+	EF_TAROTCARD13,
+	EF_TAROTCARD14,
+	EF_ACIDDEMON,
+	EF_GREENBODY,
+	EF_THROWITEM4,
+	EF_BABYBODY_BACK,
+	EF_THROWITEM5,
+	EF_BLUEBODY,
+	EF_HATED,
+	EF_REDLIGHTBODY,
+	EF_RO2YEAR,
+	EF_SMA_READY,
+	EF_STIN,
+	EF_RED_HIT,
+	EF_BLUE_HIT,
+	EF_QUAKEBODY3,
+	EF_SMA,
+	EF_SMA2,
+	EF_STIN2,
+	EF_HITTEXTURE,
+	EF_STIN3,
+	EF_SMA3,
+	EF_BLUEFALL,
+	EF_BLUEFALL_90,
+	EF_FASTBLUEFALL,
+	EF_FASTBLUEFALL_90,
+	EF_BIG_PORTAL,
+	EF_BIG_PORTAL2,
+	EF_SCREEN_QUAKE,
+	EF_HOMUNCASTING,
+	EF_HFLIMOON1,
+	EF_HFLIMOON2,
+	EF_HFLIMOON3,
+	EF_HO_UP,
+	EF_HAMIDEFENCE,
+	EF_HAMICASTLE,
+	EF_HAMIBLOOD,
+	EF_HATED2,
+	EF_TWILIGHT1,
+	EF_TWILIGHT2,
+	EF_TWILIGHT3,
+	EF_ITEM_THUNDER,
+	EF_ITEM_CLOUD,
+	EF_ITEM_CURSE,
+	EF_ITEM_ZZZ,
+	EF_ITEM_RAIN,
+	EF_ITEM_LIGHT,
+	EF_ANGEL3,
+	EF_M01,
+	EF_M02,
+	EF_M03,
+	EF_M04,
+	EF_M05,
+	EF_M06,
+	EF_M07,
+	EF_KAIZEL,
+	EF_KAAHI,
+	EF_CLOUD6,
+	EF_FOOD01,
+	EF_FOOD02,
+	EF_FOOD03,
+	EF_FOOD04,
+	EF_FOOD05,
+	EF_FOOD06,
+	EF_SHRINK,
+	EF_THROWITEM6,
+	EF_SIGHT2,
+	EF_QUAKEBODY4,
+	EF_FIREHIT2,
+	EF_NPC_STOP2,
+	EF_NPC_STOP2_DEL,
+	EF_FVOICE,
+	EF_WINK,
+	EF_COOKING_OK,
+	EF_COOKING_FAIL,
+	EF_TEMP_OK,
+	EF_TEMP_FAIL,
+	EF_HAPGYEOK,
+	EF_THROWITEM7,
+	EF_THROWITEM8,
+	EF_THROWITEM9,
+	EF_THROWITEM10,
+	EF_BUNSINJYUTSU,
+	EF_KOUENKA,
+	EF_HYOUSENSOU,
+	EF_BOTTOM_SUITON,
+	EF_STIN4,
+	EF_THUNDERSTORM2,
+	EF_CHEMICAL4,
+	EF_STIN5,
+	EF_MADNESS_BLUE,
+	EF_MADNESS_RED,
+	EF_RG_COIN3,
+	EF_BASH3D5,
+	EF_CHOOKGI3,
+	EF_KIRIKAGE,
+	EF_TATAMI,
+	EF_KASUMIKIRI,
+	EF_ISSEN,
+	EF_KAEN,
+	EF_BAKU,
+	EF_HYOUSYOURAKU,
+	EF_DESPERADO,
+	EF_LIGHTNING_S,
+	EF_BLIND_S,
+	EF_POISON_S,
+	EF_FREEZING_S,
+	EF_FLARE_S,
+	EF_RAPIDSHOWER,
+	EF_MAGICALBULLET,
+	EF_SPREADATTACK,
+	EF_TRACKCASTING,
+	EF_TRACKING,
+	EF_TRIPLEACTION,
+	EF_BULLSEYE,
+	EF_MAP_MAGICZONE,
+	EF_MAP_MAGICZONE2,
+	EF_DAMAGE1,
+	EF_DAMAGE1_2,
+	EF_DAMAGE1_3,
+	EF_UNDEADBODY,
+	EF_UNDEADBODY_DEL,
+	EF_GREEN_NUMBER,
+	EF_BLUE_NUMBER,
+	EF_RED_NUMBER,
+	EF_PURPLE_NUMBER,
+	EF_BLACK_NUMBER,
+	EF_WHITE_NUMBER,
+	EF_YELLOW_NUMBER,
+	EF_PINK_NUMBER,
+	EF_BUBBLE_DROP,
+	EF_NPC_EARTHQUAKE,
+	EF_DA_SPACE,
+	EF_DRAGONFEAR,
+	EF_BLEEDING,
+	EF_WIDECONFUSE,
+	EF_BOTTOM_RUNNER,
+	EF_BOTTOM_TRANSFER,
+	EF_CRYSTAL_BLUE,
+	EF_BOTTOM_EVILLAND,
+	EF_GUARD3,
+	EF_NPC_SLOWCAST,
+	EF_CRITICALWOUND,
+	EF_GREEN99_3,
+	EF_GREEN99_5,
+	EF_GREEN99_6,
+	EF_MAPSPHERE,
+	EF_POK_LOVE,
+	EF_POK_WHITE,
+	EF_POK_VALEN,
+	EF_POK_BIRTH,
+	EF_POK_CHRISTMAS,
+	EF_MAP_MAGICZONE3,
+	EF_MAP_MAGICZONE4,
+	EF_DUST,
+	EF_TORCH_RED,
+	EF_TORCH_GREEN,
+	EF_MAP_GHOST,
+	EF_GLOW1,
+	EF_GLOW2,
+	EF_GLOW4,
+	EF_TORCH_PURPLE,
+	EF_CLOUD7,
+	EF_CLOUD8,
+	EF_FLOWERLEAF,
+	EF_MAPSPHERE2,
+	EF_GLOW11,
+	EF_GLOW12,
+	EF_CIRCLELIGHT,
+	EF_ITEM315,
+	EF_ITEM316,
+	EF_ITEM317,
+	EF_ITEM318,
+	EF_STORM_MIN,
+	EF_POK_JAP,
+	EF_MAP_GREENLIGHT,
+	EF_MAP_MAGICWALL,
+	EF_MAP_GREENLIGHT2,
+	EF_YELLOWFLY1,
+	EF_YELLOWFLY2,
+	EF_BOTTOM_BLUE,
+	EF_BOTTOM_BLUE2,
+	EF_WEWISH,
+	EF_FIREPILLARON2,
+	EF_FORESTLIGHT5,
+	EF_SOULBREAKER3,
+	EF_ADO_STR,
+	EF_IGN_STR,
+	EF_CHIMTO2,
+	EF_WINDCUTTER,
+	EF_DETECT2,
+	EF_FROSTMYSTY,
+	EF_CRIMSON_STR,
+	EF_HELL_STR,
+	EF_SPR_MASH,
+	EF_SPR_SOULE,
+	EF_DHOWL_STR,
+	EF_EARTHWALL,
+	EF_SOULBREAKER4,
+	EF_CHAINL_STR,
+	EF_CHOOKGI_FIRE,
+	EF_CHOOKGI_WIND,
+	EF_CHOOKGI_WATER,
+	EF_CHOOKGI_GROUND,
+	EF_MAGENTA_TRAP,
+	EF_COBALT_TRAP,
+	EF_MAIZE_TRAP,
+	EF_VERDURE_TRAP,
+	EF_NORMAL_TRAP,
+	EF_CLOAKING2,
+	EF_AIMED_STR,
+	EF_ARROWSTORM_STR,
+	EF_LAULAMUS_STR,
+	EF_LAUAGNUS_STR,
+	EF_MILSHIELD_STR,
+	EF_CONCENTRATION2,
+	EF_FIREBALL2,
+	EF_BUNSINJYUTSU2,
+	EF_CLEARTIME,
+	EF_GLASSWALL3,
+	EF_ORATIO,
+	EF_POTION_BERSERK2,
+	EF_CIRCLEPOWER,
+	EF_ROLLING1,
+	EF_ROLLING2,
+	EF_ROLLING3,
+	EF_ROLLING4,
+	EF_ROLLING5,
+	EF_ROLLING6,
+	EF_ROLLING7,
+	EF_ROLLING8,
+	EF_ROLLING9,
+	EF_ROLLING10,
+	EF_PURPLEBODY,
+	EF_STIN6,
+	EF_RG_COIN4,
+	EF_POISONWAV,
+	EF_POISONSMOKE,
+	EF_GUMGANG4,
+	EF_SHIELDBOOMERANG4,
+	EF_CASTSPIN2,
+	EF_VULCANWAV,
+	EF_AGIUP2,
+	EF_DETECT3,
+	EF_AGIUP3,
+	EF_DETECT4,
+	EF_ELECTRIC3,
+	EF_GUARD4,
+	EF_BOTTOM_BARRIER,
+	EF_BOTTOM_STEALTH,
+	EF_REPAIRTIME,
+	EF_NC_ANAL,
+	EF_FIRETHROW,
+	EF_VENOMIMPRESS,
+	EF_FROSTMISTY,
+	EF_BURNING,
+	EF_COLDTHROW,
+	EF_MAKEHALLU,
+	EF_HALLUTIME,
+	EF_INFRAREDSCAN,
+	EF_CRASHAXE,
+	EF_GTHUNDER,
+	EF_STONERING,
+	EF_INTIMIDATE2,
+	EF_STASIS,
+	EF_REDLINE,
+	EF_FROSTDIVER3,
+	EF_BOTTOM_BASILICA2,
+	EF_RECOGNIZED,
+	EF_TETRA,
+	EF_TETRACASTING,
+	EF_FIREBALL3,
+	EF_INTIMIDATE3,
+	EF_RECOGNIZED2,
+	EF_CLOAKING3,
+	EF_INTIMIDATE4,
+	EF_STRETCH,
+	EF_BLACKBODY,
+	EF_ENERVATION,
+	EF_ENERVATION2,
+	EF_ENERVATION3,
+	EF_ENERVATION4,
+	EF_ENERVATION5,
+	EF_ENERVATION6,
+	EF_LINELINK4,
+	EF_RG_COIN5,
+	EF_WATERFALL_ANI,
+	EF_BOTTOM_MANHOLE,
+	EF_MANHOLE,
+	EF_MAKEFEINT,
+	EF_FORESTLIGHT6,
+	EF_DARKCASTING2,
+	EF_BOTTOM_ANI,
+	EF_BOTTOM_MAELSTROM,
+	EF_BOTTOM_BLOODYLUST,
+	EF_BEGINSPELL_N1,
+	EF_BEGINSPELL_N2,
+	EF_HEAL_N,
+	EF_CHOOKGI_N,
+	EF_JOBLVUP50_2,
+	EF_CHEMICAL2DASH2,
+	EF_CHEMICAL2DASH3,
+	EF_ROLLINGCAST,
+	EF_WATER_BELOW,
+	EF_WATER_FADE,
+	EF_BEGINSPELL_N3,
+	EF_BEGINSPELL_N4,
+	EF_BEGINSPELL_N5,
+	EF_BEGINSPELL_N6,
+	EF_BEGINSPELL_N7,
+	EF_BEGINSPELL_N8,
+	EF_WATER_SMOKE,
+	EF_DANCE1,
+	EF_DANCE2,
+	EF_LINKPARTICLE,
+	EF_SOULLIGHT2,
+	EF_SPR_PARTICLE,
+	EF_SPR_PARTICLE2,
+	EF_SPR_PLANT,
+	EF_CHEMICAL_V,
+	EF_SHOOTPARTICLE,
+	EF_BOT_REVERB,
+	EF_RAIN_PARTICLE,
+	EF_CHEMICAL_V2,
+	EF_SECRA,
+	EF_BOT_REVERB2,
+	EF_CIRCLEPOWER2,
+	EF_SECRA2,
+	EF_CHEMICAL_V3,
+	EF_ENERVATION7,
+	EF_CIRCLEPOWER3,
+	EF_SPR_PLANT2,
+	EF_CIRCLEPOWER4,
+	EF_SPR_PLANT3,
+	EF_RG_COIN6,
+	EF_SPR_PLANT4,
+	EF_CIRCLEPOWER5,
+	EF_SPR_PLANT5,
+	EF_CIRCLEPOWER6,
+	EF_SPR_PLANT6,
+	EF_CIRCLEPOWER7,
+	EF_SPR_PLANT7,
+	EF_CIRCLEPOWER8,
+	EF_SPR_PLANT8,
+	EF_HEARTASURA,
+	EF_BEGINSPELL_150,
+	EF_LEVEL99_150,
+	EF_PRIMECHARGE,
+	EF_GLASSWALL4,
+	EF_GRADIUS_LASER,
+	EF_BASH3D6,
+	EF_GUMGANG5,
+	EF_HITLINE8,
+	EF_ELECTRIC4,
+	EF_TEIHIT1T,
+	EF_SPINMOVE,
+	EF_FIREBALL4,
+	EF_TRIPLEATTACK4,
+	EF_CHEMICAL3S,
+	EF_GROUNDSHAKE,
+	EF_DQ9_CHARGE,
+	EF_DQ9_CHARGE2,
+	EF_DQ9_CHARGE3,
+	EF_DQ9_CHARGE4,
+	EF_BLUELINE,
+	EF_SELFSCROLL,
+	EF_SPR_LIGHTPRINT,
+	EF_PNG_TEST,
+	EF_BEGINSPELL_YB,
+	EF_CHEMICAL2DASH4,
+	EF_GROUNDSHAKE2,
+	EF_PRESSURE2,
+	EF_RG_COIN7,
+	EF_PRIMECHARGE2,
+	EF_PRIMECHARGE3,
+	EF_PRIMECHARGE4,
+	EF_GREENCASTING,
+	EF_WALLOFTHORN,
+	EF_FIREBALL5,
+	EF_THROWITEM11,
+	EF_SPR_PLANT9,
+	EF_DEMONICFIRE,
+	EF_DEMONICFIRE2,
+	EF_DEMONICFIRE3,
+	EF_HELLSPLANT,
+	EF_FIREWALL2,
+	EF_VACUUM,
+	EF_SPR_PLANT10,
+	EF_SPR_LIGHTPRINT2,
+	EF_POISONSMOKE2,
+	EF_MAKEHALLU2,
+	EF_SHOCKWAVE2,
+	EF_SPR_PLANT11,
+	EF_COLDTHROW2,
+	EF_DEMONICFIRE4,
+	EF_PRESSURE3,
+	EF_LINKPARTICLE2,
+	EF_SOULLIGHT3,
+	EF_CHAREFFECT,
+	EF_GUMGANG6,
+	EF_FIREBALL6,
+	EF_GUMGANG7,
+	EF_GUMGANG8,
+	EF_GUMGANG9,
+	EF_BOTTOM_DE2,
+	EF_COLDSTATUS,
+	EF_SPR_LIGHTPRINT3,
+	EF_WATERBALL3,
+	EF_HEAL_N2,
+	EF_RAIN_PARTICLE2,
+	EF_CLOUD9,
+	EF_YELLOWFLY3,
+	EF_EL_GUST,
+	EF_EL_BLAST,
+	EF_EL_AQUAPLAY,
+	EF_EL_UPHEAVAL,
+	EF_EL_WILD_STORM,
+	EF_EL_CHILLY_AIR,
+	EF_EL_CURSED_SOIL,
+	EF_EL_COOLER,
+	EF_EL_TROPIC,
+	EF_EL_PYROTECHNIC,
+	EF_EL_PETROLOGY,
+	EF_EL_HEATER,
+	EF_POISON_MIST,
+	EF_ERASER_CUTTER,
+	EF_SILENT_BREEZE,
+	EF_MAGMA_FLOW,
+	EF_GRAYBODY,
+	EF_LAVA_SLIDE,
+	EF_SONIC_CLAW,
+	EF_TINDER_BREAKER,
+	EF_MIDNIGHT_FRENZY,
+	EF_MACRO,
+	EF_CHEMICAL_ALLRANGE,
+	EF_TETRA_FIRE,
+	EF_TETRA_WATER,
+	EF_TETRA_WIND,
+	EF_TETRA_GROUND,
+	EF_EMITTER,
+	EF_VOLCANIC_ASH,
+	EF_LEVEL99_ORB1,
+	EF_LEVEL99_ORB2,
+	EF_LEVEL150,
+	EF_LEVEL150_SUB,
+	EF_THROWITEM4_1,
+	EF_THROW_HAPPOKUNAI,
+	EF_THROW_MULTIPLE_COIN,
+	EF_THROW_BAKURETSU,
+	EF_ROTATE_HUUMARANKA,
+	EF_ROTATE_BG,
+	EF_ROTATE_LINE_GRAY,
+	EF_2011RWC,
+	EF_2011RWC2,
+	EF_KAIHOU,
+	EF_GROUND_EXPLOSION,
+	EF_KG_KAGEHUMI,
+	EF_KO_ZENKAI_WATER,
+	EF_KO_ZENKAI_LAND,
+	EF_KO_ZENKAI_FIRE,
+	EF_KO_ZENKAI_WIND,
+	EF_KO_JYUMONJIKIRI,
+	EF_KO_SETSUDAN,
+	EF_RED_CROSS,
+	EF_KO_IZAYOI,
+	EF_ROTATE_LINE_BLUE,
+	EF_KG_KYOMU,
+	EF_KO_HUUMARANKA,
+	EF_BLUELIGHTBODY,
+	EF_KAGEMUSYA,
+	EF_OB_GENSOU,
+	EF_NO100_FIRECRACKER,
+	EF_KO_MAKIBISHI,
+	EF_KAIHOU1,
+	EF_AKAITSUKI,
+	EF_ZANGETSU,
+	EF_GENSOU,
+	EF_HAT_EFFECT,
+	EF_CHERRYBLOSSOM,
+	EF_EVENT_CLOUD,
+	EF_RUN_MAKE_OK,
+	EF_RUN_MAKE_FAILURE,
+	EF_MIRESULT_MAKE_OK,
+	EF_MIRESULT_MAKE_FAIL,
+	EF_ALL_RAY_OF_PROTECTION,
+	EF_VENOMFOG,
+	EF_DUSTSTORM,
+	EF_LEVEL160,
+	EF_LEVEL160_SUB,
+	EF_MAPCHAIN,
+	EF_MAGIC_FLOOR,
+	EF_ICEMINE,
+	EF_FLAMECORSS,
+	EF_ICEMINE_1,
+	EF_DANCE_BLADE_ATK,
+	EF_DARKPIERCING,
+	EF_INVINCIBLEOFF2,
+	EF_MAXPAIN,
+	EF_DEATHSUMMON,
+	EF_MOONSTAR,
+	EF_STRANGELIGHTS,
+	EF_SUPER_STAR,
+	EF_YELLOBODY,
+	EF_COLORPAPER2,
+	EF_EVILS_PAW,
+	EF_GC_DARKCROW,
+	EF_RK_DRAGONBREATH_WATER,
+	EF_ALL_FULL_THROTTLE,
+	EF_SR_FLASHCOMBO,
+	EF_RK_LUXANIMA,
+	EF_CLOUD10,
+	EF_SO_ELEMENTAL_SHIELD,
+	EF_AB_OFFERTORIUM,
+	EF_WL_TELEKINESIS_INTENSE,
+	EF_GN_ILLUSIONDOPING,
+	EF_NC_MAGMA_ERUPTION,
+	EF_LG_KINGS_GRACE,
+	EF_BLOODDRAIN2,
+	EF_NPC_WIDEWEB,
+	EF_NPC_BURNT,
+	EF_NPC_CHILL,
+	EF_RA_UNLIMIT,
+	EF_AB_OFFERTORIUM_RING,
+	EF_SC_ESCAPE,
+	EF_WM_FRIGG_SONG,
+	EF_FLICKER,
+	EF_C_MAKER,
+	EF_HAMMER_OF_GOD,
+	EF_MASS_SPIRAL,
+	EF_FIRE_RAIN,
+	EF_WHITEBODY,
+	EF_BANISHING_BUSTER,
+	EF_SLUGSHOT,
+	EF_D_TAIL,
+	EF_BIND_TRAP1,
+	EF_BIND_TRAP2,
+	EF_BIND_TRAP3,
+	EF_JUMPBODY1,
+	EF_ANIMATED_EMITTER,
+	EF_RL_EXPLOSION,
+	EF_C_MAKER_1,
+	EF_QD_SHOT,
+	EF_P_ALTER,
+	EF_S_STORM,
+	EF_MUSIC_HAT,
+	EF_CLOUD_KILL,
+	EF_ESCAPE,
+	EF_XENO_SLASHER,
+	EF_FLOWERSMOKE,
+	EF_FSTONE,
+	EF_QSCARABA,
+	EF_LJOSALFAR,
+	EF_HAPPINESSSTAR,
+	EF_POWER_OF_GAIA,
+	EF_MAPLE_FALLS,
+	EF_MARKING_USE_CHANGEMONSTER,
+	EF_MAGICAL_FEATHER,
+	EF_MERMAID_LONGING,
+	EF_GIFT_OF_SNOW,
+	EF_ACH_COMPLETE,
+	EF_TIME_ACCESSORY,
+	EF_SPRITEMABLE,
+	EF_TUNAPARTY,
+	EF_MAX
+};
+
+enum e_hat_effects {
+	HAT_EF_MIN = 0,
+	HAT_EF_BLOSSOM_FLUTTERING,
+	HAT_EF_MERMAID_LONGING,
+	HAT_EF_RL_BANISHING_BUSTER,
+	HAT_EF_LJOSALFAR,
+	HAT_EF_CLOCKING,
+	HAT_EF_SNOW,
+	HAT_EF_MAKEBLUR,
+	HAT_EF_SLEEPATTACK,
+	HAT_EF_GUMGANG,
+	HAT_EF_TALK_FROSTJOKE,
+	HAT_EF_DEMONSTRATION,
+	HAT_EF_FLUTTER_BUTTERFLY,
+	HAT_EF_ANGEL_FLUTTERING,
+	HAT_EF_BLESSING_OF_ANGELS,
+	HAT_EF_ELECTRIC,
+	HAT_EF_GREEN_FLOOR,
+	HAT_EF_SHRINK,
+	HAT_EF_VALHALLA_IDOL,
+	HAT_EF_ANGEL_STAIRS,
+	HAT_EF_GLOW_OF_NEW_YEAR,
+	HAT_EF_BOTTOM_FORTUNEKISS,
+	HAT_EF_PINKBODY,
+	HAT_EF_DOUBLEGUMGANG,
+	HAT_EF_GIANTBODY,
+	HAT_EF_GREEN99_6,
+	HAT_EF_CIRCLEPOWER,
+	HAT_EF_BOTTOM_BLOODYLUST,
+	HAT_EF_WATER_BELOW,
+	HAT_EF_LEVEL99_150,
+	HAT_EF_YELLOWFLY3,
+	HAT_EF_KAGEMUSYA,
+	HAT_EF_CHERRYBLOSSOM,
+	HAT_EF_STRANGELIGHTS,
+	HAT_EF_WL_TELEKINESIS_INTENSE,
+	HAT_EF_AB_OFFERTORIUM_RING,
+	HAT_EF_WHITEBODY2,
+	HAT_EF_SAKURA,
+	HAT_EF_CLOUD2,
+	HAT_EF_FEATHER_FLUTTERING,
+	HAT_EF_CAMELLIA_HAIR_PIN,
+	HAT_EF_JP_EV_EFFECT01,
+	HAT_EF_JP_EV_EFFECT02,
+	HAT_EF_JP_EV_EFFECT03,
+	HAT_EF_FLORAL_WALTZ,
+	HAT_EF_MAGICAL_FEATHER,
+	HAT_EF_HAT_EFFECT,
+	HAT_EF_BAKURETSU_HADOU,
+	HAT_EF_GOLD_SHOWER,
+	HAT_EF_WHITEBODY,
+	HAT_EF_WATER_BELOW2,
+	HAT_EF_FIREWORK,
+	HAT_EF_MAX
+};
+
 /**
  * used to generate quick script_array entries
  **/

+ 2115 - 0
src/map/script_constants.h

@@ -6,6 +6,7 @@
 
 	#define export_constant(a) script_set_constant(#a,a,false,false)
 	#define export_constant2(a,b) script_set_constant(a,b,false,false)
+	#define export_constant_offset(a,offset) script_set_constant(#a + (offset),a,false,false)
 	#define export_parameter(a,b) script_set_constant(a,b,true,false)
 
 	/* min and maximum variable value */
@@ -3877,8 +3878,2122 @@
 	script_set_constant("REFINE_MATERIAL_ID", 0, false, false);
 	script_set_constant("REFINE_ZENY_COST", 1, false, false);
 
+	/* NPC view ids */
+	// Special macro to strip the prefix 'JT_'
+	#define export_constant_npc(a) export_constant_offset(a,3)
+
+	export_constant_npc(JT_WARPNPC);
+	export_constant_npc(JT_1_ETC_01);
+	export_constant_npc(JT_1_M_01);
+	export_constant_npc(JT_1_M_02);
+	export_constant_npc(JT_1_M_03);
+	export_constant_npc(JT_1_M_04);
+	export_constant_npc(JT_1_M_BARD);
+	export_constant_npc(JT_1_M_HOF);
+	export_constant_npc(JT_1_M_INNKEEPER);
+	export_constant_npc(JT_1_M_JOBGUIDER);
+	export_constant_npc(JT_1_M_JOBTESTER);
+	export_constant_npc(JT_1_M_KNIGHTMASTER);
+	export_constant_npc(JT_1_M_LIBRARYMASTER);
+	export_constant_npc(JT_1_M_MERCHANT);
+	export_constant_npc(JT_1_M_ORIENT01);
+	export_constant_npc(JT_1_M_PASTOR);
+	export_constant_npc(JT_1_M_PUBMASTER);
+	export_constant_npc(JT_1_M_SIZ);
+	export_constant_npc(JT_1_M_SMITH);
+	export_constant_npc(JT_1_M_WIZARD);
+	export_constant_npc(JT_1_M_YOUNGKNIGHT);
+	export_constant_npc(JT_1_F_01);
+	export_constant_npc(JT_1_F_02);
+	export_constant_npc(JT_1_F_03);
+	export_constant_npc(JT_1_F_04);
+	export_constant_npc(JT_1_F_GYPSY);
+	export_constant_npc(JT_1_F_LIBRARYGIRL);
+	export_constant_npc(JT_1_F_MARIA);
+	export_constant_npc(JT_1_F_MERCHANT_01);
+	export_constant_npc(JT_1_F_MERCHANT_02);
+	export_constant_npc(JT_1_F_ORIENT_01);
+	export_constant_npc(JT_1_F_ORIENT_02);
+	export_constant_npc(JT_1_F_ORIENT_03);
+	export_constant_npc(JT_1_F_ORIENT_04);
+	export_constant_npc(JT_1_F_PRIEST);
+	export_constant_npc(JT_1_F_PUBGIRL);
+	export_constant_npc(JT_4_DOG01);
+	export_constant_npc(JT_4_KID01);
+	export_constant_npc(JT_4_M_01);
+	export_constant_npc(JT_4_M_02);
+	export_constant_npc(JT_4_M_03);
+	export_constant_npc(JT_4_M_04);
+	export_constant_npc(JT_4_M_BARBER);
+	export_constant_npc(JT_4_M_ORIENT01);
+	export_constant_npc(JT_4_M_ORIENT02);
+	export_constant_npc(JT_4_F_01);
+	export_constant_npc(JT_4_F_02);
+	export_constant_npc(JT_4_F_03);
+	export_constant_npc(JT_4_F_04);
+	export_constant_npc(JT_4_F_MAID);
+	export_constant_npc(JT_4_F_SISTER);
+	export_constant_npc(JT_4W_KID);
+	export_constant_npc(JT_4W_M_01);
+	export_constant_npc(JT_4W_M_02);
+	export_constant_npc(JT_4W_M_03);
+	export_constant_npc(JT_4W_SAILOR);
+	export_constant_npc(JT_4W_F_01);
+	export_constant_npc(JT_8_F);
+	export_constant_npc(JT_8_F_GRANDMOTHER);
+	export_constant_npc(JT_EFFECTLAUNCHER);
+	export_constant_npc(JT_8W_SOLDIER);
+	export_constant_npc(JT_1_M_MOC_LORD);
+	export_constant_npc(JT_1_M_PAY_ELDER);
+	export_constant_npc(JT_1_M_PRON_KING);
+	export_constant_npc(JT_4_M_MANAGER);
+	export_constant_npc(JT_4_M_MINISTER);
+	export_constant_npc(JT_HIDDEN_NPC);
+	export_constant_npc(JT_4_F_KAFRA6);
+	export_constant_npc(JT_4_F_KAFRA5);
+	export_constant_npc(JT_4_F_KAFRA4);
+	export_constant_npc(JT_4_F_KAFRA3);
+	export_constant_npc(JT_4_F_KAFRA2);
+	export_constant_npc(JT_4_F_KAFRA1);
+	export_constant_npc(JT_2_M_THIEFMASTER);
+	export_constant_npc(JT_2_M_SWORDMASTER);
+	export_constant_npc(JT_2_M_PHARMACIST);
+	export_constant_npc(JT_2_M_MOLGENSTEIN);
+	export_constant_npc(JT_2_M_DYEINGER);
+	export_constant_npc(JT_2_F_MAGICMASTER);
+	export_constant_npc(JT_4_F_TELEPORTER);
+	export_constant_npc(JT_4_M_TELEPORTER);
+	export_constant_npc(JT_HIDDEN_WARP_NPC);
+	export_constant_npc(JT_4_M_MUT2);
+	export_constant_npc(JT_4_M_SCIENCE);
+	export_constant_npc(JT_4_F_VALKYRIE2);
+	export_constant_npc(JT_4_M_UNCLEKNIGHT);
+	export_constant_npc(JT_4_M_YOUNGKNIGHT);
+	export_constant_npc(JT_2_MONEMUS);
+	export_constant_npc(JT_4_M_ATEIL);
+	export_constant_npc(JT_4_F_ANNIVERSARY);
+	export_constant_npc(JT_4_M_GREATPO);
+	export_constant_npc(JT_4_M_NOVELIST);
+	export_constant_npc(JT_4_M_CHAMPSOUL);
+	export_constant_npc(JT_4_M_OLDFRIAR);
+	export_constant_npc(JT_4_M_CRU_SOLD);
+	export_constant_npc(JT_4_M_CRU_KNT);
+	export_constant_npc(JT_4_M_CRU_HEAD);
+	export_constant_npc(JT_4_M_CRU_CRUA);
+	export_constant_npc(JT_4_M_KY_SOLD);
+	export_constant_npc(JT_4_M_KY_KNT);
+	export_constant_npc(JT_4_M_KY_HEAD);
+	export_constant_npc(JT_4_M_KY_KIYOM);
+	export_constant_npc(JT_4_M_BOSSCAT);
+	export_constant_npc(JT_4_M_BABYCAT);
+	export_constant_npc(JT_4W_F_KAFRA2);
+	export_constant_npc(JT_4_F_MUNAK);
+	export_constant_npc(JT_4_M_BONGUN);
+	export_constant_npc(JT_4_BEAR);
+	export_constant_npc(JT_4_BLUEWOLF);
+	export_constant_npc(JT_4_PECOPECO);
+	export_constant_npc(JT_4_M_JP_MID);
+	export_constant_npc(JT_4_M_JP_RUN);
+	export_constant_npc(JT_4_ORCLADY);
+	export_constant_npc(JT_4_ORCLADY2);
+	export_constant_npc(JT_4_ORCWARRIOR);
+	export_constant_npc(JT_4_ORCWARRIOR2);
+	export_constant_npc(JT_4_F_FAIRY);
+	export_constant_npc(JT_4_F_FAIRYKID);
+	export_constant_npc(JT_4_F_FAIRYKID2);
+	export_constant_npc(JT_4_F_FAIRYKID3);
+	export_constant_npc(JT_4_F_FAIRYKID4);
+	export_constant_npc(JT_4_F_FAIRYKID5);
+	export_constant_npc(JT_4_F_FAIRYKID6);
+	export_constant_npc(JT_4_M_FAIRYKID);
+	export_constant_npc(JT_4_M_FAIRYKID2);
+	export_constant_npc(JT_4_M_FAIRYKID3);
+	export_constant_npc(JT_4_M_FAIRYKID4);
+	export_constant_npc(JT_4_M_FAIRYKID5);
+	export_constant_npc(JT_4_M_FAIRYSOLDIER);
+	export_constant_npc(JT_4_M_TUFFOLD);
+	export_constant_npc(JT_4_MAN_BENKUNI);
+	export_constant_npc(JT_4_MAN_GALTUN);
+	export_constant_npc(JT_4_MAN_JERUTOO);
+	export_constant_npc(JT_4_MAN_LAVAIL);
+	export_constant_npc(JT_4_MAN_NITT);
+	export_constant_npc(JT_4_MAN_PIOM);
+	export_constant_npc(JT_4_MAN_PIOM2);
+	export_constant_npc(JT_4_M_DSTMAN);
+	export_constant_npc(JT_4_M_DSTMANDEAD);
+	export_constant_npc(JT_4_BABYLEOPARD);
+	export_constant_npc(JT_4_M_REDSWORD);
+	export_constant_npc(JT_4_MAN_PIOM3);
+	export_constant_npc(JT_4_M_FAIRYSOLDIER2);
+	export_constant_npc(JT_4_F_FAIRYSOLDIER);
+	export_constant_npc(JT_4_DRAGON_EGG);
+	export_constant_npc(JT_4_MIMIC);
+	export_constant_npc(JT_4_F_FAIRY1);
+	export_constant_npc(JT_4_F_GUILLOTINE);
+	export_constant_npc(JT_4_M_GUILLOTINE);
+	export_constant_npc(JT_4_M_KNIGHT_BLACK);
+	export_constant_npc(JT_4_M_KNIGHT_GOLD);
+	export_constant_npc(JT_4_M_KNIGHT_SILVER);
+	export_constant_npc(JT_4_SKULL_MUD);
+	export_constant_npc(JT_4_M_BRZ_INDIAN);
+	export_constant_npc(JT_4_F_BRZ_INDIAN);
+	export_constant_npc(JT_4_F_BRZ_INDOLD);
+	export_constant_npc(JT_4_M_BRZ_JACI);
+	export_constant_npc(JT_4_M_BRZ_MAN1);
+	export_constant_npc(JT_4_M_BRZ_MAN2);
+	export_constant_npc(JT_4_F_BRZ_WOMAN);
+	export_constant_npc(JT_4_M_MINSTREL);
+	export_constant_npc(JT_4_M_MINSTREL1);
+	export_constant_npc(JT_4_M_SHADOWCHASER);
+	export_constant_npc(JT_4_F_SHADOWCHASER);
+	export_constant_npc(JT_4_M_SURA);
+	export_constant_npc(JT_4_F_SURA);
+	export_constant_npc(JT_4_F_WANDERER);
+	export_constant_npc(JT_4_M_BARD);
+	export_constant_npc(JT_1_FLAG_NOFEAR);
+	export_constant_npc(JT_4_M_NOFEARGUY);
+	export_constant_npc(JT_4_MAN_PIOM6);
+	export_constant_npc(JT_4_MAN_PIOM4);
+	export_constant_npc(JT_4_MAN_PIOM5);
+	export_constant_npc(JT_4_MAN_GALTUN1);
+	export_constant_npc(JT_4_HUMAN_GERUTOO);
+	export_constant_npc(JT_4_M_ROKI);
+	export_constant_npc(JT_4_M_MERCAT1);
+	export_constant_npc(JT_4_M_MERCAT2);
+	export_constant_npc(JT_4_M_CATMAN1);
+	export_constant_npc(JT_4_M_CATMAN2);
+	export_constant_npc(JT_4_F_BRZ_WOMAN2);
+	export_constant_npc(JT_4_M_JP_DISH);
+	export_constant_npc(JT_4_F_JP_NOAH);
+	export_constant_npc(JT_4_F_JP_OZ);
+	export_constant_npc(JT_4_F_JP_CHROME);
+	export_constant_npc(JT_4_F_JP_RINNE);
+	export_constant_npc(JT_4_WHITETIGER);
+	export_constant_npc(JT_4_VENDING_MACHINE);
+	export_constant_npc(JT_4_MISTY);
+	export_constant_npc(JT_4_NECORING);
+	export_constant_npc(JT_4_ELEPHANT);
+	export_constant_npc(JT_4_F_NYDHOG);
+	export_constant_npc(JT_4_F_NYDHOG2);
+	export_constant_npc(JT_4_M_ROKI2);
+	export_constant_npc(JT_4_M_DOGTRAVELER);
+	export_constant_npc(JT_4_M_DOGTRAVELER2);
+	export_constant_npc(JT_4_F_DOGTRAVELER);
+	export_constant_npc(JT_4_M_RAFLE_GR);
+	export_constant_npc(JT_4_M_RAFLE_OLD);
+	export_constant_npc(JT_4_F_RAFLE_PK);
+	export_constant_npc(JT_4_M_LYINGDOG);
+	export_constant_npc(JT_4_F_MORAFINE1);
+	export_constant_npc(JT_4_F_MORAFINE2);
+	export_constant_npc(JT_4_M_RAFLE_OR);
+	export_constant_npc(JT_4_F_RAFLE_YE);
+	export_constant_npc(JT_4_M_RAFLE_VI);
+	export_constant_npc(JT_4_F_RAFLE_VI);
+	export_constant_npc(JT_4_M_ARDHA);
+	export_constant_npc(JT_4_CREEPER);
+	export_constant_npc(JT_JP_RUFAKU);
+	export_constant_npc(JT_JP_SUPIKA);
+	export_constant_npc(JT_JP_SABIKU);
+	export_constant_npc(JT_JP_ARUGORU);
+	export_constant_npc(JT_JP_ARUNA);
+	export_constant_npc(JT_JP_AIRI);
+	export_constant_npc(JT_4_M_DEWOLDMAN);
+	export_constant_npc(JT_4_M_DEWOLDWOMAN);
+	export_constant_npc(JT_4_M_DEWMAN);
+	export_constant_npc(JT_4_M_DEWWOMAN);
+	export_constant_npc(JT_4_M_DEWBOY);
+	export_constant_npc(JT_4_M_DEWGIRL);
+	export_constant_npc(JT_4_M_DEWZATICHIEF);
+	export_constant_npc(JT_4_M_DEWZATIMAN);
+	export_constant_npc(JT_4_M_ALCHE_E);
+	export_constant_npc(JT_4_MASK_SMOKEY);
+	export_constant_npc(JT_4_CAT_SAILOR1);
+	export_constant_npc(JT_4_CAT_SAILOR2);
+	export_constant_npc(JT_4_CAT_SAILOR3);
+	export_constant_npc(JT_4_CAT_SAILOR4);
+	export_constant_npc(JT_4_CAT_CHEF);
+	export_constant_npc(JT_4_CAT_MERMASTER);
+	export_constant_npc(JT_4_CRACK);
+	export_constant_npc(JT_4_ASTER);
+	export_constant_npc(JT_4_F_STARFISHGIRL);
+	export_constant_npc(JT_4_CAT_DOWN);
+	export_constant_npc(JT_4_CAT_REST);
+	export_constant_npc(JT_4_CAT_3COLOR);
+	export_constant_npc(JT_4_CAT_ADMIRAL);
+	export_constant_npc(JT_4_SOIL);
+	export_constant_npc(JT_4_F_ALCHE_A);
+	export_constant_npc(JT_4_CAT_ADV1);
+	export_constant_npc(JT_4_CAT_ADV2);
+	export_constant_npc(JT_4_CAT_SAILOR5);
+	export_constant_npc(JT_2_DROP_MACHINE);
+	export_constant_npc(JT_2_SLOT_MACHINE);
+	export_constant_npc(JT_2_VENDING_MACHINE1);
+	export_constant_npc(JT_MOB_TOMB);
+	export_constant_npc(JT_4_MYSTCASE);
+	export_constant_npc(JT_4_M_SIT_NOVICE);
+	export_constant_npc(JT_4_OCTOPUS_LEG);
+	export_constant_npc(JT_4_F_NURSE);
+	export_constant_npc(JT_4_MAL_SOLDIER);
+	export_constant_npc(JT_4_MAL_CAPTAIN);
+	export_constant_npc(JT_4_MAL_BUDIDAI);
+	export_constant_npc(JT_4_M_MAYOR);
+	export_constant_npc(JT_4_M_BARYO_OLD);
+	export_constant_npc(JT_4_F_BARYO_OLD);
+	export_constant_npc(JT_4_F_BARYO_GIRL);
+	export_constant_npc(JT_4_M_BARYO_BOY);
+	export_constant_npc(JT_4_M_BARYO_MAN);
+	export_constant_npc(JT_4_F_BARYO_WOMAN);
+	export_constant_npc(JT_4_BARYO_CHIEF);
+	export_constant_npc(JT_4_MAL_KAFRA);
+	export_constant_npc(JT_4_M_MALAYA);
+	export_constant_npc(JT_4_F_MALAYA);
+	export_constant_npc(JT_4_F_PATIENT);
+	export_constant_npc(JT_4_M_PATIENT);
+	export_constant_npc(JT_4_F_KR_TIGER);
+	export_constant_npc(JT_4_M_KR_BOY);
+	export_constant_npc(JT_4_M_KAGE_OLD);
+	export_constant_npc(JT_4_WHIKEBAIN);
+	export_constant_npc(JT_4_EREND);
+	export_constant_npc(JT_4_RAWREL);
+	export_constant_npc(JT_4_ARMAIA);
+	export_constant_npc(JT_4_KAVAC);
+	export_constant_npc(JT_4_YGNIZEM);
+	export_constant_npc(JT_4_EREMES);
+	export_constant_npc(JT_4_MAGALETA);
+	export_constant_npc(JT_4_KATRINN);
+	export_constant_npc(JT_4_SHECIL);
+	export_constant_npc(JT_4_SEYREN);
+	export_constant_npc(JT_4_HARWORD);
+	export_constant_npc(JT_4_F_JP_CYNTHIA);
+	export_constant_npc(JT_4_M_JP_GUSTON);
+	export_constant_npc(JT_4_M_JP_BERKUT);
+	export_constant_npc(JT_4_F_JP_DARK_ADELAIDE);
+	export_constant_npc(JT_4_M_JP_DARK_DARIUS);
+	export_constant_npc(JT_4_M_JP_JESTER);
+	export_constant_npc(JT_XMAS_SMOKEY_B);
+	export_constant_npc(JT_XMAS_SMOKEY_R);
+	export_constant_npc(JT_XMAS_SMOKEY_Y);
+	export_constant_npc(JT_4_F_CLOCKDOLL);
+	export_constant_npc(JT_4_F_FAIRY2);
+	export_constant_npc(JT_4_F_PINKWOMAN);
+	export_constant_npc(JT_4_FAIRYDEADLEAF);
+	export_constant_npc(JT_4_FROG);
+	export_constant_npc(JT_4_M_BLACKMAN);
+	export_constant_npc(JT_4_M_BLUEMAN);
+	export_constant_npc(JT_4_M_FAIRYANG);
+	export_constant_npc(JT_4_M_FAIRYAVANT);
+	export_constant_npc(JT_4_M_FAIRYFREAK);
+	export_constant_npc(JT_4_M_FAIRYKID6);
+	export_constant_npc(JT_4_M_FAIRYSCHOLAR);
+	export_constant_npc(JT_4_M_FAIRYSCHOLAR_DIRTY);
+	export_constant_npc(JT_4_M_FARIY_HISIE);
+	export_constant_npc(JT_4_M_FARIYKING);
+	export_constant_npc(JT_4_M_NEWOZ);
+	export_constant_npc(JT_4_M_OLIVER);
+	export_constant_npc(JT_4_M_PROFESSORWORM);
+	export_constant_npc(JT_4_M_REDMAN);
+	export_constant_npc(JT_4_F_GELKA);
+	export_constant_npc(JT_4_M_ROTERT);
+	export_constant_npc(JT_4_BLACKDRAGON);
+	export_constant_npc(JT_4_M_GUNSLINGER);
+	export_constant_npc(JT_4_F_GUNSLINGER);
+	export_constant_npc(JT_4_M_ARCHER);
+	export_constant_npc(JT_4_M_SWORDMAN);
+	export_constant_npc(JT_4_M_NINJA_RED);
+	export_constant_npc(JT_4_M_NINJA_BLUE);
+	export_constant_npc(JT_4_M_THIEF_RUMIN);
+	export_constant_npc(JT_4_M_NOV_RUMIN);
+	export_constant_npc(JT_4_F_MAYSEL);
+	export_constant_npc(JT_4_F_ACOLYTE);
+	export_constant_npc(JT_4_M_NOV_HUNT);
+	export_constant_npc(JT_4_F_GENETIC);
+	export_constant_npc(JT_4_F_TAEKWON);
+	export_constant_npc(JT_4_F_SWORDMAN);
+	export_constant_npc(JT_4_F_IU);
+	export_constant_npc(JT_4_M_RAGI);
+	export_constant_npc(JT_4_M_MELODY);
+	export_constant_npc(JT_4_TRACE);
+	export_constant_npc(JT_4_F_HIMEL);
+	export_constant_npc(JT_4_LEVITATEMAN);
+	export_constant_npc(JT_4_M_HEINRICH);
+	export_constant_npc(JT_4_M_ROYALGUARD);
+	export_constant_npc(JT_4_M_BARMUND);
+	export_constant_npc(JT_4_F_KHALITZBURG);
+	export_constant_npc(JT_4_F_HIMEL2);
+	export_constant_npc(JT_4_WHITEKNIGHT);
+	export_constant_npc(JT_4_COCO);
+	export_constant_npc(JT_4_M_ALADDIN);
+	export_constant_npc(JT_4_M_GENIE);
+	export_constant_npc(JT_4_F_GENIE);
+	export_constant_npc(JT_4_JP_MID_SWIM);
+	export_constant_npc(JT_4_JP_RUNE_SWIM);
+	export_constant_npc(JT_4_F_FENRIR);
+	export_constant_npc(JT_4_F_GEFFEN_FAY);
+	export_constant_npc(JT_4_F_IRIS);
+	export_constant_npc(JT_4_F_LUCILE);
+	export_constant_npc(JT_4_F_SARAH_BABY);
+	export_constant_npc(JT_4_GEFFEN_01);
+	export_constant_npc(JT_4_GEFFEN_02);
+	export_constant_npc(JT_4_GEFFEN_03);
+	export_constant_npc(JT_4_GEFFEN_04);
+	export_constant_npc(JT_4_GEFFEN_05);
+	export_constant_npc(JT_4_GEFFEN_06);
+	export_constant_npc(JT_4_GEFFEN_07);
+	export_constant_npc(JT_4_GEFFEN_08);
+	export_constant_npc(JT_4_GEFFEN_09);
+	export_constant_npc(JT_4_GEFFEN_10);
+	export_constant_npc(JT_4_GEFFEN_11);
+	export_constant_npc(JT_4_GEFFEN_12);
+	export_constant_npc(JT_4_GEFFEN_13);
+	export_constant_npc(JT_4_GEFFEN_14);
+	export_constant_npc(JT_4_M_CHAOS);
+	export_constant_npc(JT_4_M_CHIEF_IRIN);
+	export_constant_npc(JT_4_M_SAKRAY);
+	export_constant_npc(JT_4_M_SAKRAYROYAL);
+	export_constant_npc(JT_4_TOWER_01);
+	export_constant_npc(JT_4_TOWER_02);
+	export_constant_npc(JT_4_TOWER_03);
+	export_constant_npc(JT_4_TOWER_04);
+	export_constant_npc(JT_4_TOWER_05);
+	export_constant_npc(JT_4_TOWER_06);
+	export_constant_npc(JT_4_TOWER_07);
+	export_constant_npc(JT_4_TOWER_08);
+	export_constant_npc(JT_4_TOWER_09);
+	export_constant_npc(JT_4_TOWER_10);
+	export_constant_npc(JT_4_TOWER_11);
+	export_constant_npc(JT_4_TOWER_12);
+	export_constant_npc(JT_4_TOWER_13);
+	export_constant_npc(JT_8_F_GIRL);
+	export_constant_npc(JT_4_F_GODEMOM);
+	export_constant_npc(JT_4_F_GON);
+	export_constant_npc(JT_4_F_KID2);
+	export_constant_npc(JT_4_M_BIBI);
+	export_constant_npc(JT_4_M_GEF_SOLDIER);
+	export_constant_npc(JT_4_M_KID1);
+	export_constant_npc(JT_4_M_MOC_SOLDIER);
+	export_constant_npc(JT_4_M_PAY_SOLDIER);
+	export_constant_npc(JT_4_M_SEAMAN);
+	export_constant_npc(JT_4_M_SNOWMAN);
+	export_constant_npc(JT_4_F_05);
+	export_constant_npc(JT_4_M_05);
+	export_constant_npc(JT_4_M_06);
+	export_constant_npc(JT_4_F_06);
+	export_constant_npc(JT_4_M_PIERROT);
+	export_constant_npc(JT_4_M_KID2);
+	export_constant_npc(JT_4_F_KID3);
+	export_constant_npc(JT_4_M_SANTA);
+	export_constant_npc(JT_4_F_NACORURI);
+	export_constant_npc(JT_4_F_SHAMAN);
+	export_constant_npc(JT_4_F_KAFRA7);
+	export_constant_npc(JT_GUILD_FLAG);
+	export_constant_npc(JT_1_SHADOW_NPC);
+	export_constant_npc(JT_4_F_07);
+	export_constant_npc(JT_4_F_JOB_ASSASSIN);
+	export_constant_npc(JT_4_F_JOB_BLACKSMITH);
+	export_constant_npc(JT_4_F_JOB_HUNTER);
+	export_constant_npc(JT_4_F_JOB_KNIGHT);
+	export_constant_npc(JT_4_F_NOVICE);
+	export_constant_npc(JT_4_M_JOB_ASSASSIN);
+	export_constant_npc(JT_4_M_JOB_BLACKSMITH);
+	export_constant_npc(JT_4_M_JOB_HUNTER);
+	export_constant_npc(JT_4_M_JOB_KNIGHT1);
+	export_constant_npc(JT_4_M_JOB_KNIGHT2);
+	export_constant_npc(JT_4_M_JOB_WIZARD);
+	export_constant_npc(JT_4_BAPHOMET);
+	export_constant_npc(JT_4_DARKLORD);
+	export_constant_npc(JT_4_DEVIRUCHI);
+	export_constant_npc(JT_8_DOPPEL);
+	export_constant_npc(JT_2_M_ALCHE);
+	export_constant_npc(JT_2_M_BARD_ORIENT);
+	export_constant_npc(JT_2_M_SAGE_B);
+	export_constant_npc(JT_2_M_SAGE_OLD);
+	export_constant_npc(JT_4_F_ALCHE);
+	export_constant_npc(JT_4_F_CRU);
+	export_constant_npc(JT_4_F_MONK);
+	export_constant_npc(JT_4_F_ROGUE);
+	export_constant_npc(JT_4_M_ALCHE_A);
+	export_constant_npc(JT_4_M_ALCHE_B);
+	export_constant_npc(JT_4_M_ALCHE_C);
+	export_constant_npc(JT_4_M_CRU);
+	export_constant_npc(JT_4_M_CRU_OLD);
+	export_constant_npc(JT_4_M_MONK);
+	export_constant_npc(JT_4_M_SAGE_A);
+	export_constant_npc(JT_4_M_SAGE_C);
+	export_constant_npc(JT_4_F_SON);
+	export_constant_npc(JT_4_F_JPN2);
+	export_constant_npc(JT_4_F_JPN);
+	export_constant_npc(JT_4_F_JPNCHIBI);
+	export_constant_npc(JT_4_F_JPNOBA2);
+	export_constant_npc(JT_4_F_JPNOBA);
+	export_constant_npc(JT_4_M_JPN2);
+	export_constant_npc(JT_4_M_JPN);
+	export_constant_npc(JT_4_M_JPNCHIBI);
+	export_constant_npc(JT_4_M_JPNOJI2);
+	export_constant_npc(JT_4_M_JPNOJI);
+	export_constant_npc(JT_8_M_JPNSOLDIER);
+	export_constant_npc(JT_8_M_JPNMASTER);
+	export_constant_npc(JT_4_F_JPNMU);
+	export_constant_npc(JT_4_F_TWGIRL);
+	export_constant_npc(JT_4_F_TWGRANDMOM);
+	export_constant_npc(JT_4_F_TWMASKGIRL);
+	export_constant_npc(JT_4_F_TWMIDWOMAN);
+	export_constant_npc(JT_4_M_TWBOY);
+	export_constant_npc(JT_4_M_TWMASKMAN);
+	export_constant_npc(JT_4_M_TWMIDMAN);
+	export_constant_npc(JT_4_M_TWOLDMAN);
+	export_constant_npc(JT_4_M_TWTEAMAN);
+	export_constant_npc(JT_4_M_YOYOROGUE);
+	export_constant_npc(JT_8_M_TWSOLDIER);
+	export_constant_npc(JT_4_F_UMGIRL);
+	export_constant_npc(JT_4_F_UMOLDWOMAN);
+	export_constant_npc(JT_4_F_UMWOMAN);
+	export_constant_npc(JT_4_M_UMCHIEF);
+	export_constant_npc(JT_4_M_UMDANCEKID2);
+	export_constant_npc(JT_4_M_UMDANCEKID);
+	export_constant_npc(JT_4_M_UMKID);
+	export_constant_npc(JT_4_M_UMOLDMAN);
+	export_constant_npc(JT_4_M_UMSOLDIER);
+	export_constant_npc(JT_4_M_SALVATION);
+	export_constant_npc(JT_4_F_NFDEADKAFRA);
+	export_constant_npc(JT_4_F_NFDEADMGCIAN);
+	export_constant_npc(JT_4_F_NFLOSTGIRL);
+	export_constant_npc(JT_4_M_NFDEADMAN2);
+	export_constant_npc(JT_4_M_NFDEADMAN);
+	export_constant_npc(JT_4_M_NFDEADSWDMAN);
+	export_constant_npc(JT_4_M_NFLOSTMAN);
+	export_constant_npc(JT_4_M_NFMAN);
+	export_constant_npc(JT_4_NFBAT);
+	export_constant_npc(JT_4_NFCOCK);
+	export_constant_npc(JT_4_NFCOFFIN);
+	export_constant_npc(JT_4_NFWISP);
+	export_constant_npc(JT_1_F_SIGNZISK);
+	export_constant_npc(JT_1_M_SIGN1);
+	export_constant_npc(JT_1_M_SIGNALCHE);
+	export_constant_npc(JT_1_M_SIGNART);
+	export_constant_npc(JT_1_M_SIGNMCNT);
+	export_constant_npc(JT_1_M_SIGNMONK2);
+	export_constant_npc(JT_1_M_SIGNMONK);
+	export_constant_npc(JT_1_M_SIGNROGUE);
+	export_constant_npc(JT_4_F_VALKYRIE);
+	export_constant_npc(JT_TW_TOWER);
+	export_constant_npc(JT_2_M_OLDBLSMITH);
+	export_constant_npc(JT_4_F_CHNDOCTOR);
+	export_constant_npc(JT_4_F_CHNDRESS1);
+	export_constant_npc(JT_4_F_CHNDRESS2);
+	export_constant_npc(JT_4_F_CHNDRESS3);
+	export_constant_npc(JT_4_F_CHNWOMAN);
+	export_constant_npc(JT_4_M_CHN8GUEK);
+	export_constant_npc(JT_4_M_CHNCOOK);
+	export_constant_npc(JT_4_M_CHNGENERL);
+	export_constant_npc(JT_4_M_CHNMAN);
+	export_constant_npc(JT_4_M_CHNMONK);
+	export_constant_npc(JT_4_M_CHNOLD);
+	export_constant_npc(JT_4_M_CHNSOLDIER);
+	export_constant_npc(JT_4_M_DWARF);
+	export_constant_npc(JT_4_M_GRANDMONK);
+	export_constant_npc(JT_4_M_ROGUE);
+	export_constant_npc(JT_4_M_DOMINO);
+	export_constant_npc(JT_4_F_DOMINO);
+	export_constant_npc(JT_4_F_ZONDAGIRL);
+	export_constant_npc(JT_4_M_REIDIN_KURS);
+	export_constant_npc(JT_4_M_ZONDAOYAJI);
+	export_constant_npc(JT_4_M_BUDDHIST);
+	export_constant_npc(JT_2_BOARD1);
+	export_constant_npc(JT_2_BOARD2);
+	export_constant_npc(JT_2_BULLETIN_BOARD);
+	export_constant_npc(JT_4_F_THAIAYO);
+	export_constant_npc(JT_4_F_THAIGIRL);
+	export_constant_npc(JT_4_F_THAISHAMAN);
+	export_constant_npc(JT_4_M_THAIAYO);
+	export_constant_npc(JT_4_M_THAIOLD);
+	export_constant_npc(JT_4_M_THAIONGBAK);
+	export_constant_npc(JT_CLEAR_NPC);
+	export_constant_npc(JT_4_F_RACING);
+	export_constant_npc(JT_4_F_EINOLD);
+	export_constant_npc(JT_4_M_EINOLD);
+	export_constant_npc(JT_4_M_EINMINER);
+	export_constant_npc(JT_4_M_DIEMAN);
+	export_constant_npc(JT_4_F_EINWOMAN);
+	export_constant_npc(JT_4_M_REPAIR);
+	export_constant_npc(JT_4_M_EIN_SOLDIER);
+	export_constant_npc(JT_4_M_YURI);
+	export_constant_npc(JT_4_M_EINMAN2);
+	export_constant_npc(JT_4_M_EINMAN);
+	export_constant_npc(JT_2_F_SIGN1);
+	export_constant_npc(JT_4_BOARD3);
+	export_constant_npc(JT_4_BULLETIN_BOARD2);
+	export_constant_npc(JT_4_F_AGENTKAFRA);
+	export_constant_npc(JT_4_F_KAFRA8);
+	export_constant_npc(JT_4_F_KAFRA9);
+	export_constant_npc(JT_4_F_LGTGIRL);
+	export_constant_npc(JT_4_F_LGTGRAND);
+	export_constant_npc(JT_4_F_OPERATION);
+	export_constant_npc(JT_4_LGTSCIENCE);
+	export_constant_npc(JT_4_M_LGTGRAND);
+	export_constant_npc(JT_4_M_LGTGUARD2);
+	export_constant_npc(JT_4_M_LGTGUARD);
+	export_constant_npc(JT_4_M_LGTMAN);
+	export_constant_npc(JT_4_M_LGTPOOR);
+	export_constant_npc(JT_4_M_OPERATION);
+	export_constant_npc(JT_4_M_PRESIDENT);
+	export_constant_npc(JT_4_M_REINDEER);
+	export_constant_npc(JT_4_M_ZONDAMAN);
+	export_constant_npc(JT_4_M_PECOKNIGHT);
+	export_constant_npc(JT_4_CAT);
+	export_constant_npc(JT_4_F_YUNYANG);
+	export_constant_npc(JT_4_M_OILMAN);
+	export_constant_npc(JT_4_F_CAPEGIRL);
+	export_constant_npc(JT_4_M_MASKMAN);
+	export_constant_npc(JT_4_M_SITDOWN);
+	export_constant_npc(JT_4_F_SITDOWN);
+	export_constant_npc(JT_4_M_ALCHE_D);
+	export_constant_npc(JT_4_M_ACROSS);
+	export_constant_npc(JT_4_F_ACROSS);
+	export_constant_npc(JT_4_COOK);
+	export_constant_npc(JT_4_M_LIEMAN);
+	export_constant_npc(JT_2_POSTBOX);
+	export_constant_npc(JT_4_BULL);
+	export_constant_npc(JT_4_LAM);
+	export_constant_npc(JT_4_F_HUGIRL);
+	export_constant_npc(JT_4_F_HUGRANMA);
+	export_constant_npc(JT_4_F_HUWOMAN);
+	export_constant_npc(JT_4_F_KHELLISIA);
+	export_constant_npc(JT_4_F_KHELLY);
+	export_constant_npc(JT_4_M_HUBOY);
+	export_constant_npc(JT_4_M_HUGRANFA);
+	export_constant_npc(JT_4_M_HUMAN_01);
+	export_constant_npc(JT_4_M_HUMAN_02);
+	export_constant_npc(JT_4_M_HUMERCHANT);
+	export_constant_npc(JT_4_M_HUOLDARMY);
+	export_constant_npc(JT_4_M_KHKIEL);
+	export_constant_npc(JT_4_M_KHKYEL);
+	export_constant_npc(JT_4_M_KHMAN);
+	export_constant_npc(JT_4_F_KHWOMAN);
+	export_constant_npc(JT_4_F_KHGIRL);
+	export_constant_npc(JT_4_M_KHBOY);
+	export_constant_npc(JT_4_M_PHILMAN);
+	export_constant_npc(JT_4_PORING);
+	export_constant_npc(JT_2_COLAVEND);
+	export_constant_npc(JT_4_F_SOCCER);
+	export_constant_npc(JT_4_M_SOCCER7);
+	export_constant_npc(JT_4_M_SOCCER9);
+	export_constant_npc(JT_4_F_CHILD);
+	export_constant_npc(JT_4_F_MADAME);
+	export_constant_npc(JT_4_F_MASK1);
+	export_constant_npc(JT_4_F_MASK);
+	export_constant_npc(JT_4_F_RACHOLD);
+	export_constant_npc(JT_4_F_SHABBY);
+	export_constant_npc(JT_4_F_TRAINEE);
+	export_constant_npc(JT_4_M_CHILD1);
+	export_constant_npc(JT_4_M_CHILD);
+	export_constant_npc(JT_4_M_DOCTOR);
+	export_constant_npc(JT_4_M_FROZEN1);
+	export_constant_npc(JT_4_M_FROZEN);
+	export_constant_npc(JT_4_M_MASK1);
+	export_constant_npc(JT_4_M_MASK);
+	export_constant_npc(JT_4_M_MIDDLE1);
+	export_constant_npc(JT_4_M_MIDDLE);
+	export_constant_npc(JT_4_M_RACHMAN2);
+	export_constant_npc(JT_4_M_RACHMAN1);
+	export_constant_npc(JT_4_M_RACHOLD1);
+	export_constant_npc(JT_4_M_RACHOLD);
+	export_constant_npc(JT_4_M_RASWORD);
+	export_constant_npc(JT_4_M_TRAINEE);
+	export_constant_npc(JT_4_F_ARUNA_POP);
+	export_constant_npc(JT_4_M_ARUNA_NFM1);
+	export_constant_npc(JT_4_DST_CAMEL);
+	export_constant_npc(JT_4_DST_SOLDIER);
+	export_constant_npc(JT_4_F_DESERT);
+	export_constant_npc(JT_4_F_DST_CHILD);
+	export_constant_npc(JT_4_F_DST_GRAND);
+	export_constant_npc(JT_4_M_DESERT);
+	export_constant_npc(JT_4_M_DST_CHILD);
+	export_constant_npc(JT_4_M_DST_GRAND);
+	export_constant_npc(JT_4_M_DST_MASTER);
+	export_constant_npc(JT_4_M_DST_TOUGH);
+	export_constant_npc(JT_4_ANGELING);
+	export_constant_npc(JT_4_ARCHANGELING);
+	export_constant_npc(JT_4_GHOSTRING);
+	export_constant_npc(JT_4_F_EDEN_MASTER);
+	export_constant_npc(JT_4_F_EDEN_OFFICER);
+	export_constant_npc(JT_4_M_EDEN_GUARDER);
+	export_constant_npc(JT_4_M_PATRICK);
+	export_constant_npc(JT_4_DONKEY);
+	export_constant_npc(JT_4_M_TRISTAN);
+	export_constant_npc(JT_4_WHITE_COW);
+	export_constant_npc(JT_4_F_RUSCHILD);
+	export_constant_npc(JT_4_F_RUSWOMAN1);
+	export_constant_npc(JT_4_F_RUSWOMAN2);
+	export_constant_npc(JT_4_F_RUSWOMAN3);
+	export_constant_npc(JT_4_M_RUSCHILD);
+	export_constant_npc(JT_4_M_GUSLIMAN);
+	export_constant_npc(JT_4_M_RUSBALD);
+	export_constant_npc(JT_4_M_RUSKING);
+	export_constant_npc(JT_4_M_RUSKNIGHT);
+	export_constant_npc(JT_4_M_RUSMAN1);
+	export_constant_npc(JT_4_M_RUSMAN2);
+	export_constant_npc(JT_4_M_DRAKE);
+	export_constant_npc(JT_4_F_BABAYAGA);
+	export_constant_npc(JT_4_F_RUSGREEN);
+	export_constant_npc(JT_4_RUS_DWOLF);
+	export_constant_npc(JT_1_FLAG_LION);
+	export_constant_npc(JT_1_FLAG_EAGLE);
+	export_constant_npc(JT_4_M_MIKID);
+	export_constant_npc(JT_4_BLUE_FLOWER);
+	export_constant_npc(JT_4_RED_FLOWER);
+	export_constant_npc(JT_4_YELL_FLOWER);
+	export_constant_npc(JT_4_F_CAVE1);
+	export_constant_npc(JT_4_F_MUT1);
+	export_constant_npc(JT_4_F_MUT2);
+	export_constant_npc(JT_4_F_SCIENCE);
+	export_constant_npc(JT_4_M_1STPRIN1);
+	export_constant_npc(JT_4_M_1STPRIN2);
+	export_constant_npc(JT_4_M_2NDPRIN1);
+	export_constant_npc(JT_4_M_2NDPRIN2);
+	export_constant_npc(JT_4_M_3RDPRIN1);
+	export_constant_npc(JT_4_M_3RDPRIN2);
+	export_constant_npc(JT_4_M_4THPRIN1);
+	export_constant_npc(JT_4_M_4THPRIN2);
+	export_constant_npc(JT_4_M_5THPRIN1);
+	export_constant_npc(JT_4_M_5THPRIN2);
+	export_constant_npc(JT_4_M_6THPRIN1);
+	export_constant_npc(JT_4_M_6THPRIN2);
+	export_constant_npc(JT_4_M_CASMAN1);
+	export_constant_npc(JT_4_M_CAVE1);
+	export_constant_npc(JT_4_M_MOCASS1);
+	export_constant_npc(JT_4_M_MOCASS2);
+	export_constant_npc(JT_4_M_MUT1);
+	export_constant_npc(JT_4_TOWER_14);
+	export_constant_npc(JT_4_TOWER_15);
+	export_constant_npc(JT_4_TOWER_16);
+	export_constant_npc(JT_4_TOWER_17);
+	export_constant_npc(JT_4_TREASURE_BOX);
+	export_constant_npc(JT_ACADEMY_MASTER);
+	export_constant_npc(JT_PORTAL);
+	export_constant_npc(JT_THANATOS_BATTLE);
+	export_constant_npc(JT_THANATOS_KEEP);
+	export_constant_npc(JT_4_F_LYDIA);
+	export_constant_npc(JT_4_LUDE);
+	export_constant_npc(JT_4_ALIZA);
+	export_constant_npc(JT_4_ALICE);
+	export_constant_npc(JT_4_ARCHER_SKEL);
+	export_constant_npc(JT_4_JACK);
+	export_constant_npc(JT_4_SOLDIER_SKEL);
+	export_constant_npc(JT_4_LOLI_RURI);
+	export_constant_npc(JT_4_M_SAKRAY_TIED);
+	export_constant_npc(JT_4_M_ANTONIO);
+	export_constant_npc(JT_4_M_COOKIE);
+	export_constant_npc(JT_4_M_BELIEVER01);
+	export_constant_npc(JT_4_F_BELIEVER01);
+	export_constant_npc(JT_4_M_BELIEVER02);
+	export_constant_npc(JT_4_ROPEPILE);
+	export_constant_npc(JT_4_BRICKPILE);
+	export_constant_npc(JT_4_WOODPILE);
+	export_constant_npc(JT_4_M_TAMARIN);
+	export_constant_npc(JT_4_M_DEATH);
+	export_constant_npc(JT_4_GHOST_STAND);
+	export_constant_npc(JT_4_GHOST_COLLAPSE);
+	export_constant_npc(JT_4_COOKIEHOUSE);
+	export_constant_npc(JT_4_F_SKULL06GIRL);
+	export_constant_npc(JT_4_NONMYSTCASE);
+	export_constant_npc(JT_4_F_KIMI);
+	export_constant_npc(JT_4_M_FROZEN_GC);
+	export_constant_npc(JT_4_M_FROZEN_KN);
+	export_constant_npc(JT_4_SNAKE_LORD);
+	export_constant_npc(JT_4_F_MOCBOY);
+	export_constant_npc(JT_4_F_RUNAIN);
+	export_constant_npc(JT_4_M_ROEL);
+	export_constant_npc(JT_4_F_SHALOSH);
+	export_constant_npc(JT_4_ENERGY_RED);
+	export_constant_npc(JT_4_ENERGY_BLUE);
+	export_constant_npc(JT_4_ENERGY_YELLOW);
+	export_constant_npc(JT_4_ENERGY_BLACK);
+	export_constant_npc(JT_4_ENERGY_WHITE);
+	export_constant_npc(JT_4_F_PERE01);
+	export_constant_npc(JT_4_JITTERBUG);
+	export_constant_npc(JT_4_SEA_OTTER);
+	export_constant_npc(JT_4_GALAPAGO);
+	export_constant_npc(JT_4_DESERTWOLF_B);
+	export_constant_npc(JT_4_BB_PORING);
+	export_constant_npc(JT_4_F_CHARLESTON01);
+	export_constant_npc(JT_4_F_CHARLESTON02);
+	export_constant_npc(JT_4_F_CHARLESTON03);
+	export_constant_npc(JT_4_M_IAN);
+	export_constant_npc(JT_4_M_OLDSCHOLAR);
+	export_constant_npc(JT_4_F_LAPERM);
+	export_constant_npc(JT_4_M_DEBON);
+	export_constant_npc(JT_4_M_BIRMAN);
+	export_constant_npc(JT_4_F_SHAM);
+	export_constant_npc(JT_4_M_REBELLION);
+	export_constant_npc(JT_4_F_REBELLION);
+	export_constant_npc(JT_4_CHN_SHAOTH);
+	export_constant_npc(JT_4_SHOAL);
+	export_constant_npc(JT_4_F_SARAH);
+	export_constant_npc(JT_4_GIGANTES_BIG);
+	export_constant_npc(JT_4_GIGANTES);
+	export_constant_npc(JT_4_GIGANTES_SMALL);
+	export_constant_npc(JT_4_GARGOYLE_STATUE);
+	export_constant_npc(JT_4_AIRA);
+	export_constant_npc(JT_4_EZELLA);
+	export_constant_npc(JT_4_KULUNA);
+	export_constant_npc(JT_4_LUNE);
+	export_constant_npc(JT_4_MALLINA);
+	export_constant_npc(JT_4_MORIN);
+	export_constant_npc(JT_4_NASARIN);
+	export_constant_npc(JT_4_F_BERRYTEA);
+	export_constant_npc(JT_4_F_FRUIT);
+	export_constant_npc(JT_4_SCR_MT_ROBOTS);
+	export_constant_npc(JT_4_MACHINE_DEVICE);
+	export_constant_npc(JT_4_GC109);
+	export_constant_npc(JT_4_SYS_MSG);
+	export_constant_npc(JT_4_M_TATIO);
+	export_constant_npc(JT_4_M_REKENBER);
+	export_constant_npc(JT_4_XMAS_CAT1);
+	export_constant_npc(JT_4_XMAS_CAT2);
+	export_constant_npc(JT_4_XMAS_CAT3);
+	export_constant_npc(JT_4_XMAS_CAT4);
+	export_constant_npc(JT_4_XMAS_CAT5);
+	export_constant_npc(JT_4_XMAS_CAT6);
+	export_constant_npc(JT_4_M_DEATH2);
+	export_constant_npc(JT_4_S_KADOMATSU);
+	export_constant_npc(JT_4_B_KADOMATSU);
+	export_constant_npc(JT_4_F_08);
+	export_constant_npc(JT_4_F_08_STATUE);
+	export_constant_npc(JT_4_M_DARKPRIEST);
+	export_constant_npc(JT_4_JP_GARM_H);
+	export_constant_npc(JT_4_JP_MEDUSA_H);
+	export_constant_npc(JT_4_CHN_GVG_01);
+	export_constant_npc(JT_4_SPRING_RABBIT);
+	export_constant_npc(JT_4_PD_TYRA);
+	export_constant_npc(JT_4_PD_TYRANOS);
+	export_constant_npc(JT_4_PD_PLESI);
+	export_constant_npc(JT_4_PD_PLESIO);
+	export_constant_npc(JT_4_PD_BRACHI);
+	export_constant_npc(JT_4_PD_BRACHIOS);
+	export_constant_npc(JT_4_PD_GOLDDRAGON);
+	export_constant_npc(JT_4_PD_ZAEROG);
+	export_constant_npc(JT_4_PD_TAMADORA);
+	export_constant_npc(JT_4_JP_EDGA_H);
+	export_constant_npc(JT_4_JP_BRAGOLEM_H);
+	export_constant_npc(JT_4_EL_AQUA);
+	export_constant_npc(JT_4_EP16_NIHIL);
+	export_constant_npc(JT_4_EP16_SPICA);
+	export_constant_npc(JT_4_EP16_SKIA);
+	export_constant_npc(JT_4_EP16_PETER);
+	export_constant_npc(JT_4_EP16_CRUX);
+	export_constant_npc(JT_4_EP16_GRANZ);
+	export_constant_npc(JT_4_EP16_STOLZ);
+	export_constant_npc(JT_4_EP16_EGEO);
+	export_constant_npc(JT_4_EP16_COOK);
+	export_constant_npc(JT_4_EP16_MARK);
+	export_constant_npc(JT_4_EP16_TAMARIN);
+	export_constant_npc(JT_4_EP16_POE);
+	export_constant_npc(JT_4_EP16_ISAAC);
+	export_constant_npc(JT_4_EP16_HELMUT);
+	export_constant_npc(JT_4_EP16_WOLF);
+	export_constant_npc(JT_4_EP16_MEYER);
+	export_constant_npc(JT_4_EP16_AGNES);
+	export_constant_npc(JT_4_EP16_FOOD);
+	export_constant_npc(JT_4_EP16_LOUVIERE);
+	export_constant_npc(JT_4_EP16_MAX);
+	export_constant_npc(JT_4_EP16_SPIEGEL);
+	export_constant_npc(JT_4_MOONLIGHT);
+	export_constant_npc(JT_4_MISTRESS);
+	export_constant_npc(JT_4_DRACULA);
+	export_constant_npc(JT_4_STORMKNIGHT);
+	export_constant_npc(JT_4_TATTER);
+	export_constant_npc(JT_4_AS_RAGGED_GOLEM);
+	export_constant_npc(JT_4_AS_BLOODY_KNIGHT);
+	export_constant_npc(JT_4_AS_WIND_GHOST);
+	export_constant_npc(JT_4_F_BIJOU);
+	export_constant_npc(JT_4_EP16_COOK2);
+	export_constant_npc(JT_4_SERVICE_30_M_01);
+	export_constant_npc(JT_4_SERVICE_30_F_01);
+	export_constant_npc(JT_4_SCR_AT_ROBOTS);
+	export_constant_npc(JT_4_F_RANGER);
+	export_constant_npc(JT_4_WAG);
+	export_constant_npc(JT_4_NPC_TRAP);
+	export_constant_npc(JT_4_RAGGLER);
+	export_constant_npc(JT_4_DR_PEPE);
+	export_constant_npc(JT_4_DR_GAMBERI);
+	export_constant_npc(JT_4_DR_AGLIO);
+	export_constant_npc(JT_4_DR_OLIO);
+	export_constant_npc(JT_4_DR_STELO);
+	export_constant_npc(JT_4_DR_TORTEL);
+	export_constant_npc(JT_4_BASIL_SLAVE);
+	export_constant_npc(JT_4_DOU_JINDO);
+	export_constant_npc(JT_4_DOU_SIBA);
+	export_constant_npc(JT_4_TARUTUPI);
+	export_constant_npc(JT_4_DR_SOLDIER);
+	export_constant_npc(JT_4_DR_M_01);
+	export_constant_npc(JT_4_DR_M_02);
+	export_constant_npc(JT_4_DR_F_01);
+	export_constant_npc(JT_4_DR_F_02);
+	export_constant_npc(JT_4_DR_KID_01);
+	export_constant_npc(JT_4_JP_2015EVT);
+	export_constant_npc(JT_4_ALLIGATOR);
+	export_constant_npc(JT_4_ANOLIAN);
+	export_constant_npc(JT_4_TACNU);
+	export_constant_npc(JT_4_CENERE);
+	export_constant_npc(JT_4_F_ARUNA_POP2);
+	export_constant_npc(JT_4_JACK_HEAD);
+	export_constant_npc(JT_4_INJUSTICE);
+	export_constant_npc(JT_4_BLOODYMAN);
+	export_constant_npc(JT_4_GIBBET);
+	export_constant_npc(JT_4_DULLAHAN);
+	export_constant_npc(JT_4_M_LAZY);
+	export_constant_npc(JT_4_M_GONY);
+	export_constant_npc(JT_4_M_ROOKIE);
+	export_constant_npc(JT_4_M_PHILOFONTES);
+	export_constant_npc(JT_4_F_ESTLOVELOY);
+	export_constant_npc(JT_4_F_LEEDSH);
+	export_constant_npc(JT_4_F_DIENE);
+	export_constant_npc(JT_4_F_COATNEIS);
+	export_constant_npc(JT_4_M_RUPERT);
+	export_constant_npc(JT_4_M_FALLENGONY);
+	export_constant_npc(JT_4_M_EISEN);
+	export_constant_npc(JT_4_F_DEADEVIL);
+	export_constant_npc(JT_4_F_HUNTER_EVIL);
+	export_constant_npc(JT_4_F_ELENA);
+	export_constant_npc(JT_4_F_ANYA);
+	export_constant_npc(JT_4_M_SEIREN_UC);
+	export_constant_npc(JT_4_M_GUNSLINGER2);
+	export_constant_npc(JT_4_M_GUNSLINGER3);
+	export_constant_npc(JT_4_M_REBELLION2);
+	export_constant_npc(JT_4_M_REBELLION3);
+	export_constant_npc(JT_4_F_GUNSLINGER2);
+	export_constant_npc(JT_4_F_GUNSLINGER3);
+	export_constant_npc(JT_4_F_REBELLION2);
+	export_constant_npc(JT_4_F_REBELLION3);
+	export_constant_npc(JT_4_M_ILYA);
+	export_constant_npc(JT_4_ELDER);
+	export_constant_npc(JT_4_LUNATIC);
+	export_constant_npc(JT_4_F_NOVICE2);
+	export_constant_npc(JT_4_WICKEDNYMPH);
+	export_constant_npc(JT_4_F_PREMI);
+	export_constant_npc(JT_4_M_COSTELL);
+	export_constant_npc(JT_4_M_YATTWARP);
+	export_constant_npc(JT_4_M_EVOKASCUDI);
+	export_constant_npc(JT_4_M_JOHNNYJAMES);
+	export_constant_npc(JT_4_M_ALBERTFORD);
+	export_constant_npc(JT_4_M_SEANMCCURDY);
+	export_constant_npc(JT_4_M_KARAMPUCCI);
+	export_constant_npc(JT_4_M_CACTUSMAN1);
+	export_constant_npc(JT_4_M_CACTUSMAN2);
+	export_constant_npc(JT_4_M_CACTUSMAN3);
+	export_constant_npc(JT_4_M_CACTUSLADY);
+	export_constant_npc(JT_4_M_GAST);
+	export_constant_npc(JT_4_M_CACTUSCHILD);
+	export_constant_npc(JT_4_KING);
+	export_constant_npc(JT_4_F_BOMI);
+	export_constant_npc(JT_4_M_CACTUSCHIEF);
+	export_constant_npc(JT_4_F_CACTUSCHILD2);
+	export_constant_npc(JT_4_F_CACTUSLADY2);
+	export_constant_npc(JT_4_F_CACTUSLADY3);
+	export_constant_npc(JT_4_M_CACTUS);
+	export_constant_npc(JT_4_M_COWRAIDERS1);
+	export_constant_npc(JT_4_M_COWRAIDERS2);
+	export_constant_npc(JT_4_M_COWRAIDERS3);
+	export_constant_npc(JT_4_F_JP14THEVT);
+	export_constant_npc(JT_4_M_POORSCHOLAR);
+	export_constant_npc(JT_4_M_PEPPERROTI);
+	export_constant_npc(JT_JP_NPC01);
+	export_constant_npc(JT_4_PURPLE_WARP);
+	export_constant_npc(JT_4_F_NARIN);
+	export_constant_npc(JT_4_M_URGENT_MAN);
+	export_constant_npc(JT_4_M_KEEN_SOLDIER);
+	export_constant_npc(JT_4_F_SLOPPY_WOMAN);
+	export_constant_npc(JT_4_F_DRKAFRA01);
+	export_constant_npc(JT_4_M_DRZONDA01);
+	export_constant_npc(JT_4_M_SWD_RENO);
+	export_constant_npc(JT_4_M_KNG_RENO);
+	export_constant_npc(JT_4_M_AC_RUMIN);
+	export_constant_npc(JT_4_M_HIGH_WIZARD);
+	export_constant_npc(JT_4_SYSTEM_BOX);
+	export_constant_npc(JT_4_STEELBOX);
+	export_constant_npc(JT_4_WOODBOX);
+	export_constant_npc(JT_4_M_POPFESTA);
+	export_constant_npc(JT_4_BONFIRE);
+	export_constant_npc(JT_4_PCCOUNT);
+	export_constant_npc(JT_4_LAVAGOLEM);
+	export_constant_npc(JT_JP_NPC02);
+	export_constant_npc(JT_JP_NPC03);
+	export_constant_npc(JT_JP_NPC04);
+	export_constant_npc(JT_JP_NPC05);
+	export_constant_npc(JT_JP_NPC06);
+	export_constant_npc(JT_JP_NPC07);
+	export_constant_npc(JT_JP_NPC08);
+	export_constant_npc(JT_JP_NPC09);
+	export_constant_npc(JT_JP_NPC10);
+	export_constant_npc(JT_4_SCATLETON);
+	export_constant_npc(JT_4_JP_AB_NPC_001);
+	export_constant_npc(JT_4_JP_AB_NPC_002);
+	export_constant_npc(JT_4_JP_AB_NPC_003);
+	export_constant_npc(JT_4_JP_AB_NPC_004);
+	export_constant_npc(JT_4_JP_AB_NPC_005);
+	export_constant_npc(JT_4_JP_AB_NPC_006);
+	export_constant_npc(JT_4_JP_AB_NPC_007);
+	export_constant_npc(JT_4_JP_AB_NPC_008);
+	export_constant_npc(JT_4_JJAK);
+	#undef export_constant_npc
+
+	/* special effects */
+	export_constant(EF_NONE);
+	export_constant(EF_HIT1);
+	export_constant(EF_HIT2);
+	export_constant(EF_HIT3);
+	export_constant(EF_HIT4);
+	export_constant(EF_HIT5);
+	export_constant(EF_HIT6);
+	export_constant(EF_ENTRY);
+	export_constant(EF_EXIT);
+	export_constant(EF_WARP);
+	export_constant(EF_ENHANCE);
+	export_constant(EF_COIN);
+	export_constant(EF_ENDURE);
+	export_constant(EF_BEGINSPELL);
+	export_constant(EF_GLASSWALL);
+	export_constant(EF_HEALSP);
+	export_constant(EF_SOULSTRIKE);
+	export_constant(EF_BASH);
+	export_constant(EF_MAGNUMBREAK);
+	export_constant(EF_STEAL);
+	export_constant(EF_HIDING);
+	export_constant(EF_PATTACK);
+	export_constant(EF_DETOXICATION);
+	export_constant(EF_SIGHT);
+	export_constant(EF_STONECURSE);
+	export_constant(EF_FIREBALL);
+	export_constant(EF_FIREWALL);
+	export_constant(EF_ICEARROW);
+	export_constant(EF_FROSTDIVER);
+	export_constant(EF_FROSTDIVER2);
+	export_constant(EF_LIGHTBOLT);
+	export_constant(EF_THUNDERSTORM);
+	export_constant(EF_FIREARROW);
+	export_constant(EF_NAPALMBEAT);
+	export_constant(EF_RUWACH);
+	export_constant(EF_TELEPORTATION);
+	export_constant(EF_READYPORTAL);
+	export_constant(EF_PORTAL);
+	export_constant(EF_INCAGILITY);
+	export_constant(EF_DECAGILITY);
+	export_constant(EF_AQUA);
+	export_constant(EF_SIGNUM);
+	export_constant(EF_ANGELUS);
+	export_constant(EF_BLESSING);
+	export_constant(EF_INCAGIDEX);
+	export_constant(EF_SMOKE);
+	export_constant(EF_FIREFLY);
+	export_constant(EF_SANDWIND);
+	export_constant(EF_TORCH);
+	export_constant(EF_SPRAYPOND);
+	export_constant(EF_FIREHIT);
+	export_constant(EF_FIRESPLASHHIT);
+	export_constant(EF_COLDHIT);
+	export_constant(EF_WINDHIT);
+	export_constant(EF_POISONHIT);
+	export_constant(EF_BEGINSPELL2);
+	export_constant(EF_BEGINSPELL3);
+	export_constant(EF_BEGINSPELL4);
+	export_constant(EF_BEGINSPELL5);
+	export_constant(EF_BEGINSPELL6);
+	export_constant(EF_BEGINSPELL7);
+	export_constant(EF_LOCKON);
+	export_constant(EF_WARPZONE);
+	export_constant(EF_SIGHTRASHER);
+	export_constant(EF_BARRIER);
+	export_constant(EF_ARROWSHOT);
+	export_constant(EF_INVENOM);
+	export_constant(EF_CURE);
+	export_constant(EF_PROVOKE);
+	export_constant(EF_MVP);
+	export_constant(EF_SKIDTRAP);
+	export_constant(EF_BRANDISHSPEAR);
+	export_constant(EF_CONE);
+	export_constant(EF_SPHERE);
+	export_constant(EF_BOWLINGBASH);
+	export_constant(EF_ICEWALL);
+	export_constant(EF_GLORIA);
+	export_constant(EF_MAGNIFICAT);
+	export_constant(EF_RESURRECTION);
+	export_constant(EF_RECOVERY);
+	export_constant(EF_EARTHSPIKE);
+	export_constant(EF_SPEARBMR);
+	export_constant(EF_PIERCE);
+	export_constant(EF_TURNUNDEAD);
+	export_constant(EF_SANCTUARY);
+	export_constant(EF_IMPOSITIO);
+	export_constant(EF_LEXAETERNA);
+	export_constant(EF_ASPERSIO);
+	export_constant(EF_LEXDIVINA);
+	export_constant(EF_SUFFRAGIUM);
+	export_constant(EF_STORMGUST);
+	export_constant(EF_LORD);
+	export_constant(EF_BENEDICTIO);
+	export_constant(EF_METEORSTORM);
+	export_constant(EF_YUFITEL);
+	export_constant(EF_YUFITELHIT);
+	export_constant(EF_QUAGMIRE);
+	export_constant(EF_FIREPILLAR);
+	export_constant(EF_FIREPILLARBOMB);
+	export_constant(EF_HASTEUP);
+	export_constant(EF_FLASHER);
+	export_constant(EF_REMOVETRAP);
+	export_constant(EF_REPAIRWEAPON);
+	export_constant(EF_CRASHEARTH);
+	export_constant(EF_PERFECTION);
+	export_constant(EF_MAXPOWER);
+	export_constant(EF_BLASTMINE);
+	export_constant(EF_BLASTMINEBOMB);
+	export_constant(EF_CLAYMORE);
+	export_constant(EF_FREEZING);
+	export_constant(EF_BUBBLE);
+	export_constant(EF_GASPUSH);
+	export_constant(EF_SPRINGTRAP);
+	export_constant(EF_KYRIE);
+	export_constant(EF_MAGNUS);
+	export_constant(EF_BOTTOM);
+	export_constant(EF_BLITZBEAT);
+	export_constant(EF_WATERBALL);
+	export_constant(EF_WATERBALL2);
+	export_constant(EF_FIREIVY);
+	export_constant(EF_DETECTING);
+	export_constant(EF_CLOAKING);
+	export_constant(EF_SONICBLOW);
+	export_constant(EF_SONICBLOWHIT);
+	export_constant(EF_GRIMTOOTH);
+	export_constant(EF_VENOMDUST);
+	export_constant(EF_ENCHANTPOISON);
+	export_constant(EF_POISONREACT);
+	export_constant(EF_POISONREACT2);
+	export_constant(EF_OVERTHRUST);
+	export_constant(EF_SPLASHER);
+	export_constant(EF_TWOHANDQUICKEN);
+	export_constant(EF_AUTOCOUNTER);
+	export_constant(EF_GRIMTOOTHATK);
+	export_constant(EF_FREEZE);
+	export_constant(EF_FREEZED);
+	export_constant(EF_ICECRASH);
+	export_constant(EF_SLOWPOISON);
+	export_constant(EF_BOTTOM2);
+	export_constant(EF_FIREPILLARON);
+	export_constant(EF_SANDMAN);
+	export_constant(EF_REVIVE);
+	export_constant(EF_PNEUMA);
+	export_constant(EF_HEAVENSDRIVE);
+	export_constant(EF_SONICBLOW2);
+	export_constant(EF_BRANDISH2);
+	export_constant(EF_SHOCKWAVE);
+	export_constant(EF_SHOCKWAVEHIT);
+	export_constant(EF_EARTHHIT);
+	export_constant(EF_PIERCESELF);
+	export_constant(EF_BOWLINGSELF);
+	export_constant(EF_SPEARSTABSELF);
+	export_constant(EF_SPEARBMRSELF);
+	export_constant(EF_HOLYHIT);
+	export_constant(EF_CONCENTRATION);
+	export_constant(EF_REFINEOK);
+	export_constant(EF_REFINEFAIL);
+	export_constant(EF_JOBCHANGE);
+	export_constant(EF_LVUP);
+	export_constant(EF_JOBLVUP);
+	export_constant(EF_TOPRANK);
+	export_constant(EF_PARTY);
+	export_constant(EF_RAIN);
+	export_constant(EF_SNOW);
+	export_constant(EF_SAKURA);
+	export_constant(EF_STATUS_STATE);
+	export_constant(EF_BANJJAKII);
+	export_constant(EF_MAKEBLUR);
+	export_constant(EF_TAMINGSUCCESS);
+	export_constant(EF_TAMINGFAILED);
+	export_constant(EF_ENERGYCOAT);
+	export_constant(EF_CARTREVOLUTION);
+	export_constant(EF_VENOMDUST2);
+	export_constant(EF_CHANGEDARK);
+	export_constant(EF_CHANGEFIRE);
+	export_constant(EF_CHANGECOLD);
+	export_constant(EF_CHANGEWIND);
+	export_constant(EF_CHANGEFLAME);
+	export_constant(EF_CHANGEEARTH);
+	export_constant(EF_CHAINGEHOLY);
+	export_constant(EF_CHANGEPOISON);
+	export_constant(EF_HITDARK);
+	export_constant(EF_MENTALBREAK);
+	export_constant(EF_MAGICALATTHIT);
+	export_constant(EF_SUI_EXPLOSION);
+	export_constant(EF_DARKATTACK);
+	export_constant(EF_SUICIDE);
+	export_constant(EF_COMBOATTACK1);
+	export_constant(EF_COMBOATTACK2);
+	export_constant(EF_COMBOATTACK3);
+	export_constant(EF_COMBOATTACK4);
+	export_constant(EF_COMBOATTACK5);
+	export_constant(EF_GUIDEDATTACK);
+	export_constant(EF_POISONATTACK);
+	export_constant(EF_SILENCEATTACK);
+	export_constant(EF_STUNATTACK);
+	export_constant(EF_PETRIFYATTACK);
+	export_constant(EF_CURSEATTACK);
+	export_constant(EF_SLEEPATTACK);
+	export_constant(EF_TELEKHIT);
+	export_constant(EF_PONG);
+	export_constant(EF_LEVEL99);
+	export_constant(EF_LEVEL99_2);
+	export_constant(EF_LEVEL99_3);
+	export_constant(EF_GUMGANG);
+	export_constant(EF_POTION1);
+	export_constant(EF_POTION2);
+	export_constant(EF_POTION3);
+	export_constant(EF_POTION4);
+	export_constant(EF_POTION5);
+	export_constant(EF_POTION6);
+	export_constant(EF_POTION7);
+	export_constant(EF_POTION8);
+	export_constant(EF_DARKBREATH);
+	export_constant(EF_DEFFENDER);
+	export_constant(EF_KEEPING);
+	export_constant(EF_SUMMONSLAVE);
+	export_constant(EF_BLOODDRAIN);
+	export_constant(EF_ENERGYDRAIN);
+	export_constant(EF_POTION_CON);
+	export_constant(EF_POTION_);
+	export_constant(EF_POTION_BERSERK);
+	export_constant(EF_POTIONPILLAR);
+	export_constant(EF_DEFENDER);
+	export_constant(EF_GANBANTEIN);
+	export_constant(EF_WIND);
+	export_constant(EF_VOLCANO);
+	export_constant(EF_GRANDCROSS);
+	export_constant(EF_INTIMIDATE);
+	export_constant(EF_CHOOKGI);
+	export_constant(EF_CLOUD);
+	export_constant(EF_CLOUD2);
+	export_constant(EF_MAPPILLAR);
+	export_constant(EF_LINELINK);
+	export_constant(EF_CLOUD3);
+	export_constant(EF_SPELLBREAKER);
+	export_constant(EF_DISPELL);
+	export_constant(EF_DELUGE);
+	export_constant(EF_VIOLENTGALE);
+	export_constant(EF_LANDPROTECTOR);
+	export_constant(EF_BOTTOM_VO);
+	export_constant(EF_BOTTOM_DE);
+	export_constant(EF_BOTTOM_VI);
+	export_constant(EF_BOTTOM_LA);
+	export_constant(EF_FASTMOVE);
+	export_constant(EF_MAGICROD);
+	export_constant(EF_HOLYCROSS);
+	export_constant(EF_SHIELDCHARGE);
+	export_constant(EF_MAPPILLAR2);
+	export_constant(EF_PROVIDENCE);
+	export_constant(EF_SHIELDBOOMERANG);
+	export_constant(EF_SPEARQUICKEN);
+	export_constant(EF_DEVOTION);
+	export_constant(EF_REFLECTSHIELD);
+	export_constant(EF_ABSORBSPIRITS);
+	export_constant(EF_STEELBODY);
+	export_constant(EF_FLAMELAUNCHER);
+	export_constant(EF_FROSTWEAPON);
+	export_constant(EF_LIGHTNINGLOADER);
+	export_constant(EF_SEISMICWEAPON);
+	export_constant(EF_MAPPILLAR3);
+	export_constant(EF_MAPPILLAR4);
+	export_constant(EF_GUMGANG2);
+	export_constant(EF_TEIHIT1);
+	export_constant(EF_GUMGANG3);
+	export_constant(EF_TEIHIT2);
+	export_constant(EF_TANJI);
+	export_constant(EF_TEIHIT1X);
+	export_constant(EF_CHIMTO);
+	export_constant(EF_STEALCOIN);
+	export_constant(EF_STRIPWEAPON);
+	export_constant(EF_STRIPSHIELD);
+	export_constant(EF_STRIPARMOR);
+	export_constant(EF_STRIPHELM);
+	export_constant(EF_CHAINCOMBO);
+	export_constant(EF_RG_COIN);
+	export_constant(EF_BACKSTAP);
+	export_constant(EF_TEIHIT3);
+	export_constant(EF_BOTTOM_DISSONANCE);
+	export_constant(EF_BOTTOM_LULLABY);
+	export_constant(EF_BOTTOM_RICHMANKIM);
+	export_constant(EF_BOTTOM_ETERNALCHAOS);
+	export_constant(EF_BOTTOM_DRUMBATTLEFIELD);
+	export_constant(EF_BOTTOM_RINGNIBELUNGEN);
+	export_constant(EF_BOTTOM_ROKISWEIL);
+	export_constant(EF_BOTTOM_INTOABYSS);
+	export_constant(EF_BOTTOM_SIEGFRIED);
+	export_constant(EF_BOTTOM_WHISTLE);
+	export_constant(EF_BOTTOM_ASSASSINCROSS);
+	export_constant(EF_BOTTOM_POEMBRAGI);
+	export_constant(EF_BOTTOM_APPLEIDUN);
+	export_constant(EF_BOTTOM_UGLYDANCE);
+	export_constant(EF_BOTTOM_HUMMING);
+	export_constant(EF_BOTTOM_DONTFORGETME);
+	export_constant(EF_BOTTOM_FORTUNEKISS);
+	export_constant(EF_BOTTOM_SERVICEFORYOU);
+	export_constant(EF_TALK_FROSTJOKE);
+	export_constant(EF_TALK_SCREAM);
+	export_constant(EF_POKJUK);
+	export_constant(EF_THROWITEM);
+	export_constant(EF_THROWITEM2);
+	export_constant(EF_CHEMICALPROTECTION);
+	export_constant(EF_POKJUK_SOUND);
+	export_constant(EF_DEMONSTRATION);
+	export_constant(EF_CHEMICAL2);
+	export_constant(EF_TELEPORTATION2);
+	export_constant(EF_PHARMACY_OK);
+	export_constant(EF_PHARMACY_FAIL);
+	export_constant(EF_FORESTLIGHT);
+	export_constant(EF_THROWITEM3);
+	export_constant(EF_FIRSTAID);
+	export_constant(EF_SPRINKLESAND);
+	export_constant(EF_LOUD);
+	export_constant(EF_HEAL);
+	export_constant(EF_HEAL2);
+	export_constant(EF_EXIT2);
+	export_constant(EF_GLASSWALL2);
+	export_constant(EF_READYPORTAL2);
+	export_constant(EF_PORTAL2);
+	export_constant(EF_BOTTOM_MAG);
+	export_constant(EF_BOTTOM_SANC);
+	export_constant(EF_HEAL3);
+	export_constant(EF_WARPZONE2);
+	export_constant(EF_FORESTLIGHT2);
+	export_constant(EF_FORESTLIGHT3);
+	export_constant(EF_FORESTLIGHT4);
+	export_constant(EF_HEAL4);
+	export_constant(EF_FOOT);
+	export_constant(EF_FOOT2);
+	export_constant(EF_BEGINASURA);
+	export_constant(EF_TRIPLEATTACK);
+	export_constant(EF_HITLINE);
+	export_constant(EF_HPTIME);
+	export_constant(EF_SPTIME);
+	export_constant(EF_MAPLE);
+	export_constant(EF_BLIND);
+	export_constant(EF_POISON);
+	export_constant(EF_GUARD);
+	export_constant(EF_JOBLVUP50);
+	export_constant(EF_ANGEL2);
+	export_constant(EF_MAGNUM2);
+	export_constant(EF_CALLZONE);
+	export_constant(EF_PORTAL3);
+	export_constant(EF_COUPLECASTING);
+	export_constant(EF_HEARTCASTING);
+	export_constant(EF_ENTRY2);
+	export_constant(EF_SAINTWING);
+	export_constant(EF_SPHEREWIND);
+	export_constant(EF_COLORPAPER);
+	export_constant(EF_LIGHTSPHERE);
+	export_constant(EF_WATERFALL);
+	export_constant(EF_WATERFALL_90);
+	export_constant(EF_WATERFALL_SMALL);
+	export_constant(EF_WATERFALL_SMALL_90);
+	export_constant(EF_WATERFALL_T2);
+	export_constant(EF_WATERFALL_T2_90);
+	export_constant(EF_WATERFALL_SMALL_T2);
+	export_constant(EF_WATERFALL_SMALL_T2_90);
+	export_constant(EF_MINI_TETRIS);
+	export_constant(EF_GHOST);
+	export_constant(EF_BAT);
+	export_constant(EF_BAT2);
+	export_constant(EF_SOULBREAKER);
+	export_constant(EF_LEVEL99_4);
+	export_constant(EF_VALLENTINE);
+	export_constant(EF_VALLENTINE2);
+	export_constant(EF_PRESSURE);
+	export_constant(EF_BASH3D);
+	export_constant(EF_AURABLADE);
+	export_constant(EF_REDBODY);
+	export_constant(EF_LKCONCENTRATION);
+	export_constant(EF_BOTTOM_GOSPEL);
+	export_constant(EF_ANGEL);
+	export_constant(EF_DEVIL);
+	export_constant(EF_DRAGONSMOKE);
+	export_constant(EF_BOTTOM_BASILICA);
+	export_constant(EF_ASSUMPTIO);
+	export_constant(EF_HITLINE2);
+	export_constant(EF_BASH3D2);
+	export_constant(EF_ENERGYDRAIN2);
+	export_constant(EF_TRANSBLUEBODY);
+	export_constant(EF_MAGICCRASHER);
+	export_constant(EF_LIGHTSPHERE2);
+	export_constant(EF_LIGHTBLADE);
+	export_constant(EF_ENERGYDRAIN3);
+	export_constant(EF_LINELINK2);
+	export_constant(EF_LINKLIGHT);
+	export_constant(EF_TRUESIGHT);
+	export_constant(EF_FALCONASSAULT);
+	export_constant(EF_TRIPLEATTACK2);
+	export_constant(EF_PORTAL4);
+	export_constant(EF_MELTDOWN);
+	export_constant(EF_CARTBOOST);
+	export_constant(EF_REJECTSWORD);
+	export_constant(EF_TRIPLEATTACK3);
+	export_constant(EF_SPHEREWIND2);
+	export_constant(EF_LINELINK3);
+	export_constant(EF_PINKBODY);
+	export_constant(EF_LEVEL99_5);
+	export_constant(EF_LEVEL99_6);
+	export_constant(EF_BASH3D3);
+	export_constant(EF_BASH3D4);
+	export_constant(EF_NAPALMVALCAN);
+	export_constant(EF_PORTAL5);
+	export_constant(EF_MAGICCRASHER2);
+	export_constant(EF_BOTTOM_SPIDER);
+	export_constant(EF_BOTTOM_FOGWALL);
+	export_constant(EF_SOULBURN);
+	export_constant(EF_SOULCHANGE);
+	export_constant(EF_BABY);
+	export_constant(EF_SOULBREAKER2);
+	export_constant(EF_RAINBOW);
+	export_constant(EF_PEONG);
+	export_constant(EF_TANJI2);
+	export_constant(EF_PRESSEDBODY);
+	export_constant(EF_SPINEDBODY);
+	export_constant(EF_KICKEDBODY);
+	export_constant(EF_AIRTEXTURE);
+	export_constant(EF_HITBODY);
+	export_constant(EF_DOUBLEGUMGANG);
+	export_constant(EF_REFLECTBODY);
+	export_constant(EF_BABYBODY);
+	export_constant(EF_BABYBODY2);
+	export_constant(EF_GIANTBODY);
+	export_constant(EF_GIANTBODY2);
+	export_constant(EF_ASURABODY);
+	export_constant(EF_4WAYBODY);
+	export_constant(EF_QUAKEBODY);
+	export_constant(EF_ASURABODY_MONSTER);
+	export_constant(EF_HITLINE3);
+	export_constant(EF_HITLINE4);
+	export_constant(EF_HITLINE5);
+	export_constant(EF_HITLINE6);
+	export_constant(EF_ELECTRIC);
+	export_constant(EF_ELECTRIC2);
+	export_constant(EF_HITLINE7);
+	export_constant(EF_STORMKICK);
+	export_constant(EF_HALFSPHERE);
+	export_constant(EF_ATTACKENERGY);
+	export_constant(EF_ATTACKENERGY2);
+	export_constant(EF_CHEMICAL3);
+	export_constant(EF_ASSUMPTIO2);
+	export_constant(EF_BLUECASTING);
+	export_constant(EF_RUN);
+	export_constant(EF_STOPRUN);
+	export_constant(EF_STOPEFFECT);
+	export_constant(EF_JUMPBODY);
+	export_constant(EF_LANDBODY);
+	export_constant(EF_FOOT3);
+	export_constant(EF_FOOT4);
+	export_constant(EF_TAE_READY);
+	export_constant(EF_GRANDCROSS2);
+	export_constant(EF_SOULSTRIKE2);
+	export_constant(EF_YUFITEL2);
+	export_constant(EF_NPC_STOP);
+	export_constant(EF_DARKCASTING);
+	export_constant(EF_GUMGANGNPC);
+	export_constant(EF_AGIUP);
+	export_constant(EF_JUMPKICK);
+	export_constant(EF_QUAKEBODY2);
+	export_constant(EF_STORMKICK1);
+	export_constant(EF_STORMKICK2);
+	export_constant(EF_STORMKICK3);
+	export_constant(EF_STORMKICK4);
+	export_constant(EF_STORMKICK5);
+	export_constant(EF_STORMKICK6);
+	export_constant(EF_STORMKICK7);
+	export_constant(EF_SPINEDBODY2);
+	export_constant(EF_BEGINASURA1);
+	export_constant(EF_BEGINASURA2);
+	export_constant(EF_BEGINASURA3);
+	export_constant(EF_BEGINASURA4);
+	export_constant(EF_BEGINASURA5);
+	export_constant(EF_BEGINASURA6);
+	export_constant(EF_BEGINASURA7);
+	export_constant(EF_AURABLADE2);
+	export_constant(EF_DEVIL1);
+	export_constant(EF_DEVIL2);
+	export_constant(EF_DEVIL3);
+	export_constant(EF_DEVIL4);
+	export_constant(EF_DEVIL5);
+	export_constant(EF_DEVIL6);
+	export_constant(EF_DEVIL7);
+	export_constant(EF_DEVIL8);
+	export_constant(EF_DEVIL9);
+	export_constant(EF_DEVIL10);
+	export_constant(EF_DOUBLEGUMGANG2);
+	export_constant(EF_DOUBLEGUMGANG3);
+	export_constant(EF_BLACKDEVIL);
+	export_constant(EF_FLOWERCAST);
+	export_constant(EF_FLOWERCAST2);
+	export_constant(EF_FLOWERCAST3);
+	export_constant(EF_MOCHI);
+	export_constant(EF_LAMADAN);
+	export_constant(EF_EDP);
+	export_constant(EF_SHIELDBOOMERANG2);
+	export_constant(EF_RG_COIN2);
+	export_constant(EF_GUARD2);
+	export_constant(EF_SLIM);
+	export_constant(EF_SLIM2);
+	export_constant(EF_SLIM3);
+	export_constant(EF_CHEMICALBODY);
+	export_constant(EF_CASTSPIN);
+	export_constant(EF_PIERCEBODY);
+	export_constant(EF_SOULLINK);
+	export_constant(EF_CHOOKGI2);
+	export_constant(EF_MEMORIZE);
+	export_constant(EF_SOULLIGHT);
+	export_constant(EF_MAPAE);
+	export_constant(EF_ITEMPOKJUK);
+	export_constant(EF_05VAL);
+	export_constant(EF_BEGINASURA11);
+	export_constant(EF_NIGHT);
+	export_constant(EF_CHEMICAL2DASH);
+	export_constant(EF_GROUNDSAMPLE);
+	export_constant(EF_GI_EXPLOSION);
+	export_constant(EF_CLOUD4);
+	export_constant(EF_CLOUD5);
+	export_constant(EF_BOTTOM_HERMODE);
+	export_constant(EF_CARTTER);
+	export_constant(EF_ITEMFAST);
+	export_constant(EF_SHIELDBOOMERANG3);
+	export_constant(EF_DOUBLECASTBODY);
+	export_constant(EF_GRAVITATION);
+	export_constant(EF_TAROTCARD1);
+	export_constant(EF_TAROTCARD2);
+	export_constant(EF_TAROTCARD3);
+	export_constant(EF_TAROTCARD4);
+	export_constant(EF_TAROTCARD5);
+	export_constant(EF_TAROTCARD6);
+	export_constant(EF_TAROTCARD7);
+	export_constant(EF_TAROTCARD8);
+	export_constant(EF_TAROTCARD9);
+	export_constant(EF_TAROTCARD10);
+	export_constant(EF_TAROTCARD11);
+	export_constant(EF_TAROTCARD12);
+	export_constant(EF_TAROTCARD13);
+	export_constant(EF_TAROTCARD14);
+	export_constant(EF_ACIDDEMON);
+	export_constant(EF_GREENBODY);
+	export_constant(EF_THROWITEM4);
+	export_constant(EF_BABYBODY_BACK);
+	export_constant(EF_THROWITEM5);
+	export_constant(EF_BLUEBODY);
+	export_constant(EF_HATED);
+	export_constant(EF_REDLIGHTBODY);
+	export_constant(EF_RO2YEAR);
+	export_constant(EF_SMA_READY);
+	export_constant(EF_STIN);
+	export_constant(EF_RED_HIT);
+	export_constant(EF_BLUE_HIT);
+	export_constant(EF_QUAKEBODY3);
+	export_constant(EF_SMA);
+	export_constant(EF_SMA2);
+	export_constant(EF_STIN2);
+	export_constant(EF_HITTEXTURE);
+	export_constant(EF_STIN3);
+	export_constant(EF_SMA3);
+	export_constant(EF_BLUEFALL);
+	export_constant(EF_BLUEFALL_90);
+	export_constant(EF_FASTBLUEFALL);
+	export_constant(EF_FASTBLUEFALL_90);
+	export_constant(EF_BIG_PORTAL);
+	export_constant(EF_BIG_PORTAL2);
+	export_constant(EF_SCREEN_QUAKE);
+	export_constant(EF_HOMUNCASTING);
+	export_constant(EF_HFLIMOON1);
+	export_constant(EF_HFLIMOON2);
+	export_constant(EF_HFLIMOON3);
+	export_constant(EF_HO_UP);
+	export_constant(EF_HAMIDEFENCE);
+	export_constant(EF_HAMICASTLE);
+	export_constant(EF_HAMIBLOOD);
+	export_constant(EF_HATED2);
+	export_constant(EF_TWILIGHT1);
+	export_constant(EF_TWILIGHT2);
+	export_constant(EF_TWILIGHT3);
+	export_constant(EF_ITEM_THUNDER);
+	export_constant(EF_ITEM_CLOUD);
+	export_constant(EF_ITEM_CURSE);
+	export_constant(EF_ITEM_ZZZ);
+	export_constant(EF_ITEM_RAIN);
+	export_constant(EF_ITEM_LIGHT);
+	export_constant(EF_ANGEL3);
+	export_constant(EF_M01);
+	export_constant(EF_M02);
+	export_constant(EF_M03);
+	export_constant(EF_M04);
+	export_constant(EF_M05);
+	export_constant(EF_M06);
+	export_constant(EF_M07);
+	export_constant(EF_KAIZEL);
+	export_constant(EF_KAAHI);
+	export_constant(EF_CLOUD6);
+	export_constant(EF_FOOD01);
+	export_constant(EF_FOOD02);
+	export_constant(EF_FOOD03);
+	export_constant(EF_FOOD04);
+	export_constant(EF_FOOD05);
+	export_constant(EF_FOOD06);
+	export_constant(EF_SHRINK);
+	export_constant(EF_THROWITEM6);
+	export_constant(EF_SIGHT2);
+	export_constant(EF_QUAKEBODY4);
+	export_constant(EF_FIREHIT2);
+	export_constant(EF_NPC_STOP2);
+	export_constant(EF_NPC_STOP2_DEL);
+	export_constant(EF_FVOICE);
+	export_constant(EF_WINK);
+	export_constant(EF_COOKING_OK);
+	export_constant(EF_COOKING_FAIL);
+	export_constant(EF_TEMP_OK);
+	export_constant(EF_TEMP_FAIL);
+	export_constant(EF_HAPGYEOK);
+	export_constant(EF_THROWITEM7);
+	export_constant(EF_THROWITEM8);
+	export_constant(EF_THROWITEM9);
+	export_constant(EF_THROWITEM10);
+	export_constant(EF_BUNSINJYUTSU);
+	export_constant(EF_KOUENKA);
+	export_constant(EF_HYOUSENSOU);
+	export_constant(EF_BOTTOM_SUITON);
+	export_constant(EF_STIN4);
+	export_constant(EF_THUNDERSTORM2);
+	export_constant(EF_CHEMICAL4);
+	export_constant(EF_STIN5);
+	export_constant(EF_MADNESS_BLUE);
+	export_constant(EF_MADNESS_RED);
+	export_constant(EF_RG_COIN3);
+	export_constant(EF_BASH3D5);
+	export_constant(EF_CHOOKGI3);
+	export_constant(EF_KIRIKAGE);
+	export_constant(EF_TATAMI);
+	export_constant(EF_KASUMIKIRI);
+	export_constant(EF_ISSEN);
+	export_constant(EF_KAEN);
+	export_constant(EF_BAKU);
+	export_constant(EF_HYOUSYOURAKU);
+	export_constant(EF_DESPERADO);
+	export_constant(EF_LIGHTNING_S);
+	export_constant(EF_BLIND_S);
+	export_constant(EF_POISON_S);
+	export_constant(EF_FREEZING_S);
+	export_constant(EF_FLARE_S);
+	export_constant(EF_RAPIDSHOWER);
+	export_constant(EF_MAGICALBULLET);
+	export_constant(EF_SPREADATTACK);
+	export_constant(EF_TRACKCASTING);
+	export_constant(EF_TRACKING);
+	export_constant(EF_TRIPLEACTION);
+	export_constant(EF_BULLSEYE);
+	export_constant(EF_MAP_MAGICZONE);
+	export_constant(EF_MAP_MAGICZONE2);
+	export_constant(EF_DAMAGE1);
+	export_constant(EF_DAMAGE1_2);
+	export_constant(EF_DAMAGE1_3);
+	export_constant(EF_UNDEADBODY);
+	export_constant(EF_UNDEADBODY_DEL);
+	export_constant(EF_GREEN_NUMBER);
+	export_constant(EF_BLUE_NUMBER);
+	export_constant(EF_RED_NUMBER);
+	export_constant(EF_PURPLE_NUMBER);
+	export_constant(EF_BLACK_NUMBER);
+	export_constant(EF_WHITE_NUMBER);
+	export_constant(EF_YELLOW_NUMBER);
+	export_constant(EF_PINK_NUMBER);
+	export_constant(EF_BUBBLE_DROP);
+	export_constant(EF_NPC_EARTHQUAKE);
+	export_constant(EF_DA_SPACE);
+	export_constant(EF_DRAGONFEAR);
+	export_constant(EF_BLEEDING);
+	export_constant(EF_WIDECONFUSE);
+	export_constant(EF_BOTTOM_RUNNER);
+	export_constant(EF_BOTTOM_TRANSFER);
+	export_constant(EF_CRYSTAL_BLUE);
+	export_constant(EF_BOTTOM_EVILLAND);
+	export_constant(EF_GUARD3);
+	export_constant(EF_NPC_SLOWCAST);
+	export_constant(EF_CRITICALWOUND);
+	export_constant(EF_GREEN99_3);
+	export_constant(EF_GREEN99_5);
+	export_constant(EF_GREEN99_6);
+	export_constant(EF_MAPSPHERE);
+	export_constant(EF_POK_LOVE);
+	export_constant(EF_POK_WHITE);
+	export_constant(EF_POK_VALEN);
+	export_constant(EF_POK_BIRTH);
+	export_constant(EF_POK_CHRISTMAS);
+	export_constant(EF_MAP_MAGICZONE3);
+	export_constant(EF_MAP_MAGICZONE4);
+	export_constant(EF_DUST);
+	export_constant(EF_TORCH_RED);
+	export_constant(EF_TORCH_GREEN);
+	export_constant(EF_MAP_GHOST);
+	export_constant(EF_GLOW1);
+	export_constant(EF_GLOW2);
+	export_constant(EF_GLOW4);
+	export_constant(EF_TORCH_PURPLE);
+	export_constant(EF_CLOUD7);
+	export_constant(EF_CLOUD8);
+	export_constant(EF_FLOWERLEAF);
+	export_constant(EF_MAPSPHERE2);
+	export_constant(EF_GLOW11);
+	export_constant(EF_GLOW12);
+	export_constant(EF_CIRCLELIGHT);
+	export_constant(EF_ITEM315);
+	export_constant(EF_ITEM316);
+	export_constant(EF_ITEM317);
+	export_constant(EF_ITEM318);
+	export_constant(EF_STORM_MIN);
+	export_constant(EF_POK_JAP);
+	export_constant(EF_MAP_GREENLIGHT);
+	export_constant(EF_MAP_MAGICWALL);
+	export_constant(EF_MAP_GREENLIGHT2);
+	export_constant(EF_YELLOWFLY1);
+	export_constant(EF_YELLOWFLY2);
+	export_constant(EF_BOTTOM_BLUE);
+	export_constant(EF_BOTTOM_BLUE2);
+	export_constant(EF_WEWISH);
+	export_constant(EF_FIREPILLARON2);
+	export_constant(EF_FORESTLIGHT5);
+	export_constant(EF_SOULBREAKER3);
+	export_constant(EF_ADO_STR);
+	export_constant(EF_IGN_STR);
+	export_constant(EF_CHIMTO2);
+	export_constant(EF_WINDCUTTER);
+	export_constant(EF_DETECT2);
+	export_constant(EF_FROSTMYSTY);
+	export_constant(EF_CRIMSON_STR);
+	export_constant(EF_HELL_STR);
+	export_constant(EF_SPR_MASH);
+	export_constant(EF_SPR_SOULE);
+	export_constant(EF_DHOWL_STR);
+	export_constant(EF_EARTHWALL);
+	export_constant(EF_SOULBREAKER4);
+	export_constant(EF_CHAINL_STR);
+	export_constant(EF_CHOOKGI_FIRE);
+	export_constant(EF_CHOOKGI_WIND);
+	export_constant(EF_CHOOKGI_WATER);
+	export_constant(EF_CHOOKGI_GROUND);
+	export_constant(EF_MAGENTA_TRAP);
+	export_constant(EF_COBALT_TRAP);
+	export_constant(EF_MAIZE_TRAP);
+	export_constant(EF_VERDURE_TRAP);
+	export_constant(EF_NORMAL_TRAP);
+	export_constant(EF_CLOAKING2);
+	export_constant(EF_AIMED_STR);
+	export_constant(EF_ARROWSTORM_STR);
+	export_constant(EF_LAULAMUS_STR);
+	export_constant(EF_LAUAGNUS_STR);
+	export_constant(EF_MILSHIELD_STR);
+	export_constant(EF_CONCENTRATION2);
+	export_constant(EF_FIREBALL2);
+	export_constant(EF_BUNSINJYUTSU2);
+	export_constant(EF_CLEARTIME);
+	export_constant(EF_GLASSWALL3);
+	export_constant(EF_ORATIO);
+	export_constant(EF_POTION_BERSERK2);
+	export_constant(EF_CIRCLEPOWER);
+	export_constant(EF_ROLLING1);
+	export_constant(EF_ROLLING2);
+	export_constant(EF_ROLLING3);
+	export_constant(EF_ROLLING4);
+	export_constant(EF_ROLLING5);
+	export_constant(EF_ROLLING6);
+	export_constant(EF_ROLLING7);
+	export_constant(EF_ROLLING8);
+	export_constant(EF_ROLLING9);
+	export_constant(EF_ROLLING10);
+	export_constant(EF_PURPLEBODY);
+	export_constant(EF_STIN6);
+	export_constant(EF_RG_COIN4);
+	export_constant(EF_POISONWAV);
+	export_constant(EF_POISONSMOKE);
+	export_constant(EF_GUMGANG4);
+	export_constant(EF_SHIELDBOOMERANG4);
+	export_constant(EF_CASTSPIN2);
+	export_constant(EF_VULCANWAV);
+	export_constant(EF_AGIUP2);
+	export_constant(EF_DETECT3);
+	export_constant(EF_AGIUP3);
+	export_constant(EF_DETECT4);
+	export_constant(EF_ELECTRIC3);
+	export_constant(EF_GUARD4);
+	export_constant(EF_BOTTOM_BARRIER);
+	export_constant(EF_BOTTOM_STEALTH);
+	export_constant(EF_REPAIRTIME);
+	export_constant(EF_NC_ANAL);
+	export_constant(EF_FIRETHROW);
+	export_constant(EF_VENOMIMPRESS);
+	export_constant(EF_FROSTMISTY);
+	export_constant(EF_BURNING);
+	export_constant(EF_COLDTHROW);
+	export_constant(EF_MAKEHALLU);
+	export_constant(EF_HALLUTIME);
+	export_constant(EF_INFRAREDSCAN);
+	export_constant(EF_CRASHAXE);
+	export_constant(EF_GTHUNDER);
+	export_constant(EF_STONERING);
+	export_constant(EF_INTIMIDATE2);
+	export_constant(EF_STASIS);
+	export_constant(EF_REDLINE);
+	export_constant(EF_FROSTDIVER3);
+	export_constant(EF_BOTTOM_BASILICA2);
+	export_constant(EF_RECOGNIZED);
+	export_constant(EF_TETRA);
+	export_constant(EF_TETRACASTING);
+	export_constant(EF_FIREBALL3);
+	export_constant(EF_INTIMIDATE3);
+	export_constant(EF_RECOGNIZED2);
+	export_constant(EF_CLOAKING3);
+	export_constant(EF_INTIMIDATE4);
+	export_constant(EF_STRETCH);
+	export_constant(EF_BLACKBODY);
+	export_constant(EF_ENERVATION);
+	export_constant(EF_ENERVATION2);
+	export_constant(EF_ENERVATION3);
+	export_constant(EF_ENERVATION4);
+	export_constant(EF_ENERVATION5);
+	export_constant(EF_ENERVATION6);
+	export_constant(EF_LINELINK4);
+	export_constant(EF_RG_COIN5);
+	export_constant(EF_WATERFALL_ANI);
+	export_constant(EF_BOTTOM_MANHOLE);
+	export_constant(EF_MANHOLE);
+	export_constant(EF_MAKEFEINT);
+	export_constant(EF_FORESTLIGHT6);
+	export_constant(EF_DARKCASTING2);
+	export_constant(EF_BOTTOM_ANI);
+	export_constant(EF_BOTTOM_MAELSTROM);
+	export_constant(EF_BOTTOM_BLOODYLUST);
+	export_constant(EF_BEGINSPELL_N1);
+	export_constant(EF_BEGINSPELL_N2);
+	export_constant(EF_HEAL_N);
+	export_constant(EF_CHOOKGI_N);
+	export_constant(EF_JOBLVUP50_2);
+	export_constant(EF_CHEMICAL2DASH2);
+	export_constant(EF_CHEMICAL2DASH3);
+	export_constant(EF_ROLLINGCAST);
+	export_constant(EF_WATER_BELOW);
+	export_constant(EF_WATER_FADE);
+	export_constant(EF_BEGINSPELL_N3);
+	export_constant(EF_BEGINSPELL_N4);
+	export_constant(EF_BEGINSPELL_N5);
+	export_constant(EF_BEGINSPELL_N6);
+	export_constant(EF_BEGINSPELL_N7);
+	export_constant(EF_BEGINSPELL_N8);
+	export_constant(EF_WATER_SMOKE);
+	export_constant(EF_DANCE1);
+	export_constant(EF_DANCE2);
+	export_constant(EF_LINKPARTICLE);
+	export_constant(EF_SOULLIGHT2);
+	export_constant(EF_SPR_PARTICLE);
+	export_constant(EF_SPR_PARTICLE2);
+	export_constant(EF_SPR_PLANT);
+	export_constant(EF_CHEMICAL_V);
+	export_constant(EF_SHOOTPARTICLE);
+	export_constant(EF_BOT_REVERB);
+	export_constant(EF_RAIN_PARTICLE);
+	export_constant(EF_CHEMICAL_V2);
+	export_constant(EF_SECRA);
+	export_constant(EF_BOT_REVERB2);
+	export_constant(EF_CIRCLEPOWER2);
+	export_constant(EF_SECRA2);
+	export_constant(EF_CHEMICAL_V3);
+	export_constant(EF_ENERVATION7);
+	export_constant(EF_CIRCLEPOWER3);
+	export_constant(EF_SPR_PLANT2);
+	export_constant(EF_CIRCLEPOWER4);
+	export_constant(EF_SPR_PLANT3);
+	export_constant(EF_RG_COIN6);
+	export_constant(EF_SPR_PLANT4);
+	export_constant(EF_CIRCLEPOWER5);
+	export_constant(EF_SPR_PLANT5);
+	export_constant(EF_CIRCLEPOWER6);
+	export_constant(EF_SPR_PLANT6);
+	export_constant(EF_CIRCLEPOWER7);
+	export_constant(EF_SPR_PLANT7);
+	export_constant(EF_CIRCLEPOWER8);
+	export_constant(EF_SPR_PLANT8);
+	export_constant(EF_HEARTASURA);
+	export_constant(EF_BEGINSPELL_150);
+	export_constant(EF_LEVEL99_150);
+	export_constant(EF_PRIMECHARGE);
+	export_constant(EF_GLASSWALL4);
+	export_constant(EF_GRADIUS_LASER);
+	export_constant(EF_BASH3D6);
+	export_constant(EF_GUMGANG5);
+	export_constant(EF_HITLINE8);
+	export_constant(EF_ELECTRIC4);
+	export_constant(EF_TEIHIT1T);
+	export_constant(EF_SPINMOVE);
+	export_constant(EF_FIREBALL4);
+	export_constant(EF_TRIPLEATTACK4);
+	export_constant(EF_CHEMICAL3S);
+	export_constant(EF_GROUNDSHAKE);
+	export_constant(EF_DQ9_CHARGE);
+	export_constant(EF_DQ9_CHARGE2);
+	export_constant(EF_DQ9_CHARGE3);
+	export_constant(EF_DQ9_CHARGE4);
+	export_constant(EF_BLUELINE);
+	export_constant(EF_SELFSCROLL);
+	export_constant(EF_SPR_LIGHTPRINT);
+	export_constant(EF_PNG_TEST);
+	export_constant(EF_BEGINSPELL_YB);
+	export_constant(EF_CHEMICAL2DASH4);
+	export_constant(EF_GROUNDSHAKE2);
+	export_constant(EF_PRESSURE2);
+	export_constant(EF_RG_COIN7);
+	export_constant(EF_PRIMECHARGE2);
+	export_constant(EF_PRIMECHARGE3);
+	export_constant(EF_PRIMECHARGE4);
+	export_constant(EF_GREENCASTING);
+	export_constant(EF_WALLOFTHORN);
+	export_constant(EF_FIREBALL5);
+	export_constant(EF_THROWITEM11);
+	export_constant(EF_SPR_PLANT9);
+	export_constant(EF_DEMONICFIRE);
+	export_constant(EF_DEMONICFIRE2);
+	export_constant(EF_DEMONICFIRE3);
+	export_constant(EF_HELLSPLANT);
+	export_constant(EF_FIREWALL2);
+	export_constant(EF_VACUUM);
+	export_constant(EF_SPR_PLANT10);
+	export_constant(EF_SPR_LIGHTPRINT2);
+	export_constant(EF_POISONSMOKE2);
+	export_constant(EF_MAKEHALLU2);
+	export_constant(EF_SHOCKWAVE2);
+	export_constant(EF_SPR_PLANT11);
+	export_constant(EF_COLDTHROW2);
+	export_constant(EF_DEMONICFIRE4);
+	export_constant(EF_PRESSURE3);
+	export_constant(EF_LINKPARTICLE2);
+	export_constant(EF_SOULLIGHT3);
+	export_constant(EF_CHAREFFECT);
+	export_constant(EF_GUMGANG6);
+	export_constant(EF_FIREBALL6);
+	export_constant(EF_GUMGANG7);
+	export_constant(EF_GUMGANG8);
+	export_constant(EF_GUMGANG9);
+	export_constant(EF_BOTTOM_DE2);
+	export_constant(EF_COLDSTATUS);
+	export_constant(EF_SPR_LIGHTPRINT3);
+	export_constant(EF_WATERBALL3);
+	export_constant(EF_HEAL_N2);
+	export_constant(EF_RAIN_PARTICLE2);
+	export_constant(EF_CLOUD9);
+	export_constant(EF_YELLOWFLY3);
+	export_constant(EF_EL_GUST);
+	export_constant(EF_EL_BLAST);
+	export_constant(EF_EL_AQUAPLAY);
+	export_constant(EF_EL_UPHEAVAL);
+	export_constant(EF_EL_WILD_STORM);
+	export_constant(EF_EL_CHILLY_AIR);
+	export_constant(EF_EL_CURSED_SOIL);
+	export_constant(EF_EL_COOLER);
+	export_constant(EF_EL_TROPIC);
+	export_constant(EF_EL_PYROTECHNIC);
+	export_constant(EF_EL_PETROLOGY);
+	export_constant(EF_EL_HEATER);
+	export_constant(EF_POISON_MIST);
+	export_constant(EF_ERASER_CUTTER);
+	export_constant(EF_SILENT_BREEZE);
+	export_constant(EF_MAGMA_FLOW);
+	export_constant(EF_GRAYBODY);
+	export_constant(EF_LAVA_SLIDE);
+	export_constant(EF_SONIC_CLAW);
+	export_constant(EF_TINDER_BREAKER);
+	export_constant(EF_MIDNIGHT_FRENZY);
+	export_constant(EF_MACRO);
+	export_constant(EF_CHEMICAL_ALLRANGE);
+	export_constant(EF_TETRA_FIRE);
+	export_constant(EF_TETRA_WATER);
+	export_constant(EF_TETRA_WIND);
+	export_constant(EF_TETRA_GROUND);
+	export_constant(EF_EMITTER);
+	export_constant(EF_VOLCANIC_ASH);
+	export_constant(EF_LEVEL99_ORB1);
+	export_constant(EF_LEVEL99_ORB2);
+	export_constant(EF_LEVEL150);
+	export_constant(EF_LEVEL150_SUB);
+	export_constant(EF_THROWITEM4_1);
+	export_constant(EF_THROW_HAPPOKUNAI);
+	export_constant(EF_THROW_MULTIPLE_COIN);
+	export_constant(EF_THROW_BAKURETSU);
+	export_constant(EF_ROTATE_HUUMARANKA);
+	export_constant(EF_ROTATE_BG);
+	export_constant(EF_ROTATE_LINE_GRAY);
+	export_constant(EF_2011RWC);
+	export_constant(EF_2011RWC2);
+	export_constant(EF_KAIHOU);
+	export_constant(EF_GROUND_EXPLOSION);
+	export_constant(EF_KG_KAGEHUMI);
+	export_constant(EF_KO_ZENKAI_WATER);
+	export_constant(EF_KO_ZENKAI_LAND);
+	export_constant(EF_KO_ZENKAI_FIRE);
+	export_constant(EF_KO_ZENKAI_WIND);
+	export_constant(EF_KO_JYUMONJIKIRI);
+	export_constant(EF_KO_SETSUDAN);
+	export_constant(EF_RED_CROSS);
+	export_constant(EF_KO_IZAYOI);
+	export_constant(EF_ROTATE_LINE_BLUE);
+	export_constant(EF_KG_KYOMU);
+	export_constant(EF_KO_HUUMARANKA);
+	export_constant(EF_BLUELIGHTBODY);
+	export_constant(EF_KAGEMUSYA);
+	export_constant(EF_OB_GENSOU);
+	export_constant(EF_NO100_FIRECRACKER);
+	export_constant(EF_KO_MAKIBISHI);
+	export_constant(EF_KAIHOU1);
+	export_constant(EF_AKAITSUKI);
+	export_constant(EF_ZANGETSU);
+	export_constant(EF_GENSOU);
+	export_constant(EF_HAT_EFFECT);
+	export_constant(EF_CHERRYBLOSSOM);
+	export_constant(EF_EVENT_CLOUD);
+	export_constant(EF_RUN_MAKE_OK);
+	export_constant(EF_RUN_MAKE_FAILURE);
+	export_constant(EF_MIRESULT_MAKE_OK);
+	export_constant(EF_MIRESULT_MAKE_FAIL);
+	export_constant(EF_ALL_RAY_OF_PROTECTION);
+	export_constant(EF_VENOMFOG);
+	export_constant(EF_DUSTSTORM);
+	export_constant(EF_LEVEL160);
+	export_constant(EF_LEVEL160_SUB);
+	export_constant(EF_MAPCHAIN);
+	export_constant(EF_MAGIC_FLOOR);
+	export_constant(EF_ICEMINE);
+	export_constant(EF_FLAMECORSS);
+	export_constant(EF_ICEMINE_1);
+	export_constant(EF_DANCE_BLADE_ATK);
+	export_constant(EF_DARKPIERCING);
+	export_constant(EF_INVINCIBLEOFF2);
+	export_constant(EF_MAXPAIN);
+	export_constant(EF_DEATHSUMMON);
+	export_constant(EF_MOONSTAR);
+	export_constant(EF_STRANGELIGHTS);
+	export_constant(EF_SUPER_STAR);
+	export_constant(EF_YELLOBODY);
+	export_constant(EF_COLORPAPER2);
+	export_constant(EF_EVILS_PAW);
+	export_constant(EF_GC_DARKCROW);
+	export_constant(EF_RK_DRAGONBREATH_WATER);
+	export_constant(EF_ALL_FULL_THROTTLE);
+	export_constant(EF_SR_FLASHCOMBO);
+	export_constant(EF_RK_LUXANIMA);
+	export_constant(EF_CLOUD10);
+	export_constant(EF_SO_ELEMENTAL_SHIELD);
+	export_constant(EF_AB_OFFERTORIUM);
+	export_constant(EF_WL_TELEKINESIS_INTENSE);
+	export_constant(EF_GN_ILLUSIONDOPING);
+	export_constant(EF_NC_MAGMA_ERUPTION);
+	export_constant(EF_LG_KINGS_GRACE);
+	export_constant(EF_BLOODDRAIN2);
+	export_constant(EF_NPC_WIDEWEB);
+	export_constant(EF_NPC_BURNT);
+	export_constant(EF_NPC_CHILL);
+	export_constant(EF_RA_UNLIMIT);
+	export_constant(EF_AB_OFFERTORIUM_RING);
+	export_constant(EF_SC_ESCAPE);
+	export_constant(EF_WM_FRIGG_SONG);
+	export_constant(EF_FLICKER);
+	export_constant(EF_C_MAKER);
+	export_constant(EF_HAMMER_OF_GOD);
+	export_constant(EF_MASS_SPIRAL);
+	export_constant(EF_FIRE_RAIN);
+	export_constant(EF_WHITEBODY);
+	export_constant(EF_BANISHING_BUSTER);
+	export_constant(EF_SLUGSHOT);
+	export_constant(EF_D_TAIL);
+	export_constant(EF_BIND_TRAP1);
+	export_constant(EF_BIND_TRAP2);
+	export_constant(EF_BIND_TRAP3);
+	export_constant(EF_JUMPBODY1);
+	export_constant(EF_ANIMATED_EMITTER);
+	export_constant(EF_RL_EXPLOSION);
+	export_constant(EF_C_MAKER_1);
+	export_constant(EF_QD_SHOT);
+	export_constant(EF_P_ALTER);
+	export_constant(EF_S_STORM);
+	export_constant(EF_MUSIC_HAT);
+	export_constant(EF_CLOUD_KILL);
+	export_constant(EF_ESCAPE);
+	export_constant(EF_XENO_SLASHER);
+	export_constant(EF_FLOWERSMOKE);
+	export_constant(EF_FSTONE);
+	export_constant(EF_QSCARABA);
+	export_constant(EF_LJOSALFAR);
+	export_constant(EF_HAPPINESSSTAR);
+	export_constant(EF_POWER_OF_GAIA);
+	export_constant(EF_MAPLE_FALLS);
+	export_constant(EF_MARKING_USE_CHANGEMONSTER);
+	export_constant(EF_MAGICAL_FEATHER);
+	export_constant(EF_MERMAID_LONGING);
+	export_constant(EF_GIFT_OF_SNOW);
+	export_constant(EF_ACH_COMPLETE);
+	export_constant(EF_TIME_ACCESSORY);
+	export_constant(EF_SPRITEMABLE);
+	export_constant(EF_TUNAPARTY);
+
+	/* hat effects */
+	export_constant(HAT_EF_BLOSSOM_FLUTTERING);
+	export_constant(HAT_EF_MERMAID_LONGING);
+	export_constant(HAT_EF_RL_BANISHING_BUSTER);
+	export_constant(HAT_EF_LJOSALFAR);
+	export_constant(HAT_EF_CLOCKING);
+	export_constant(HAT_EF_SNOW);
+	export_constant(HAT_EF_MAKEBLUR);
+	export_constant(HAT_EF_SLEEPATTACK);
+	export_constant(HAT_EF_GUMGANG);
+	export_constant(HAT_EF_TALK_FROSTJOKE);
+	export_constant(HAT_EF_DEMONSTRATION);
+	export_constant(HAT_EF_FLUTTER_BUTTERFLY);
+	export_constant(HAT_EF_ANGEL_FLUTTERING);
+	export_constant(HAT_EF_BLESSING_OF_ANGELS);
+	export_constant(HAT_EF_ELECTRIC);
+	export_constant(HAT_EF_GREEN_FLOOR);
+	export_constant(HAT_EF_SHRINK);
+	export_constant(HAT_EF_VALHALLA_IDOL);
+	export_constant(HAT_EF_ANGEL_STAIRS);
+	export_constant(HAT_EF_GLOW_OF_NEW_YEAR);
+	export_constant(HAT_EF_BOTTOM_FORTUNEKISS);
+	export_constant(HAT_EF_PINKBODY);
+	export_constant(HAT_EF_DOUBLEGUMGANG);
+	export_constant(HAT_EF_GIANTBODY);
+	export_constant(HAT_EF_GREEN99_6);
+	export_constant(HAT_EF_CIRCLEPOWER);
+	export_constant(HAT_EF_BOTTOM_BLOODYLUST);
+	export_constant(HAT_EF_WATER_BELOW);
+	export_constant(HAT_EF_LEVEL99_150);
+	export_constant(HAT_EF_YELLOWFLY3);
+	export_constant(HAT_EF_KAGEMUSYA);
+	export_constant(HAT_EF_CHERRYBLOSSOM);
+	export_constant(HAT_EF_STRANGELIGHTS);
+	export_constant(HAT_EF_WL_TELEKINESIS_INTENSE);
+	export_constant(HAT_EF_AB_OFFERTORIUM_RING);
+	export_constant(HAT_EF_WHITEBODY2);
+	export_constant(HAT_EF_SAKURA);
+	export_constant(HAT_EF_CLOUD2);
+	export_constant(HAT_EF_FEATHER_FLUTTERING);
+	export_constant(HAT_EF_CAMELLIA_HAIR_PIN);
+	export_constant(HAT_EF_JP_EV_EFFECT01);
+	export_constant(HAT_EF_JP_EV_EFFECT02);
+	export_constant(HAT_EF_JP_EV_EFFECT03);
+	export_constant(HAT_EF_FLORAL_WALTZ);
+	export_constant(HAT_EF_MAGICAL_FEATHER);
+	export_constant(HAT_EF_HAT_EFFECT);
+	export_constant(HAT_EF_BAKURETSU_HADOU);
+	export_constant(HAT_EF_GOLD_SHOWER);
+	export_constant(HAT_EF_WHITEBODY);
+	export_constant(HAT_EF_WATER_BELOW2);
+	export_constant(HAT_EF_FIREWORK);
+
 	#undef export_constant
 	#undef export_constant2
 	#undef export_parameter
+	#undef export_constant_offset
 
 #endif /* _SCRIPT_CONSTANTS_H_ */

+ 5 - 5
src/map/skill.c

@@ -2713,7 +2713,7 @@ static int skill_magic_reflect(struct block_list* src, struct block_list* bl, in
 		) {
 		// Kaite only works against non-players if they are low-level.
 		// Kyomu doesn't disable Kaite, but the "skill fail chance" part of Kyomu applies to it.
-		clif_specialeffect(bl, 438, AREA);
+		clif_specialeffect(bl, EF_ATTACKENERGY2, AREA);
 		if( --sc->data[SC_KAITE]->val2 <= 0 )
 			status_change_end(bl, SC_KAITE, INVALID_TIMER);
 		return 2;
@@ -8602,7 +8602,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 			}
 			status_zap(src,0,skill_get_sp(skill_id,skill_lv)); // consume sp only if succeeded [Inkfish]
 			card = skill_tarotcard(src, bl, skill_id, skill_lv, tick); // actual effect is executed here
-			clif_specialeffect((card == 6) ? src : bl, 522 + card, AREA);
+			clif_specialeffect((card == 6) ? src : bl, EF_TAROTCARD1 + card - 1, AREA);
 			clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
 		}
 		break;
@@ -8631,7 +8631,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 		{	//Erase death count 1% of the casts
 			dstsd->die_counter = 0;
 			pc_setglobalreg(dstsd, add_str("PC_DIE_COUNTER"), 0);
-			clif_specialeffect(bl, 0x152, AREA);
+			clif_specialeffect(bl, EF_ANGEL2, AREA);
 			//SC_SPIRIT invokes status_calc_pc for us.
 		}
 		clif_skill_nodamage(src,bl,skill_id,skill_lv,
@@ -19300,7 +19300,7 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh
 					break;
 				default: //Those that don't require a skill?
 					if (skill_produce_db[idx].itemlv > 10 && skill_produce_db[idx].itemlv <= 20) { //Cooking items.
-						clif_specialeffect(&sd->bl, 608, AREA);
+						clif_specialeffect(&sd->bl, EF_COOKING_OK, AREA);
 						if (sd->cook_mastery < 1999)
 							pc_setglobalreg(sd, add_str("COOK_MASTERY"), sd->cook_mastery + ( 1 << ( (skill_produce_db[idx].itemlv - 11) / 2 ) ) * 5);
 					}
@@ -19412,7 +19412,7 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh
 				break;
 			default:
 				if (skill_produce_db[idx].itemlv > 10 && skill_produce_db[idx].itemlv <= 20 ) { //Cooking items.
-					clif_specialeffect(&sd->bl, 609, AREA);
+					clif_specialeffect(&sd->bl, EF_COOKING_FAIL, AREA);
 					if (sd->cook_mastery > 0)
 						pc_setglobalreg(sd, add_str("COOK_MASTERY"), sd->cook_mastery - ( 1 << ((skill_produce_db[idx].itemlv - 11) / 2) ) - ( ( ( 1 << ((skill_produce_db[idx].itemlv - 11) / 2) ) >> 1 ) * 3 ));
 				}

+ 1 - 1
src/map/status.c

@@ -7610,7 +7610,7 @@ void status_set_viewdata(struct block_list *bl, int class_)
 	nullpo_retv(bl);
 	if (mobdb_checkid(class_) || mob_is_clone(class_))
 		vd = mob_get_viewdata(class_);
-	else if (npcdb_checkid(class_) || (bl->type == BL_NPC && class_ == WARP_CLASS))
+	else if (npcdb_checkid(class_))
 		vd = npc_get_viewdata(class_);
 	else if (homdb_checkid(class_))
 		vd = hom_get_viewdata(class_);

+ 0 - 25
src/map/unit.c

@@ -2759,31 +2759,6 @@ int unit_counttargeted(struct block_list* bl)
 	return 0;
 }
 
-/**
- * Changes the size of a unit
- * @param bl: Object to change size [PC|MOB]
- * @param size: New size of bl
- * @return 0
- */
-int unit_changeviewsize(struct block_list *bl,short size)
-{
-	nullpo_ret(bl);
-
-	size = (size < 0) ? -1 : (size > 0) ? 1 : 0;
-
-	if(bl->type == BL_PC)
-		((TBL_PC*)bl)->state.size = size;
-	else if(bl->type == BL_MOB)
-		((TBL_MOB*)bl)->special_state.size = size;
-	else
-		return 0;
-
-	if(size != 0)
-		clif_specialeffect(bl,421+size, AREA);
-
-	return 0;
-}
-
 /**
  * Makes 'bl' that attacking 'src' switch to attack 'target'
  * @param bl

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików