1 /* GemRB - Infinity Engine Emulator
2  * Copyright (C) 2003 The GemRB Project
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8 
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13 
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  *
19  */
20 
21 /**
22  * @file ie_stats.h
23  * Definitions of creature stats codes
24  * @author The GemRB Project
25  */
26 
27 
28 // !!! NOTE: keep this file synchronized with gemrb/GUIScripts/ie_stats.py !!!
29 
30 #ifndef IE_STATS_H
31 #define IE_STATS_H
32 
33 namespace GemRB {
34 
35 //EA values
36 #define EA_INANIMATE   		1
37 #define EA_PC  			2
38 #define EA_FAMILIAR		3
39 #define EA_ALLY			4
40 #define EA_CONTROLLED  		5
41 #define EA_CHARMED 		6
42 //#define EA_REALLYCHARMED 		7 // added by EE for the charm opcode, while 6 is for shaman's spirits
43 #define EA_CONTROLLABLE         15
44 #define EA_GOODBUTRED  		28
45 #define EA_GOODBUTBLUE 		29
46 #define EA_GOODCUTOFF  		30
47 #define EA_NOTGOOD 		31
48 #define EA_ANYTHING		126
49 #define EA_AREAOBJECT	127 // included in EA groups 31|NOTGOOD, 126|ANYTHING, and 199|NOTEVIL.
50 #define EA_NEUTRAL 		128
51 #define EA_NOTNEUTRAL  	198
52 #define EA_NOTEVIL 		199
53 #define EA_EVILCUTOFF  		200
54 #define EA_EVILBUTGREEN		201
55 #define EA_EVILBUTBLUE 		202
56 #define EA_CHARMEDPC            254 // EVILBYCHARM in the original
57 #define EA_ENEMY   		255
58 
59 //GENERAL values
60 #define GEN_HUMANOID  1  //charm?
61 #define GEN_ANIMAL    2  //charm animals
62 #define GEN_DEAD      3  //???
63 #define GEN_UNDEAD    4  //turn
64 #define GEN_GIANT     5  //???
65 #define GEN_FROZEN    6  //???
66 #define GEN_MONSTER   255
67 
68 //GENDER values
69 #define SEX_MALE      1
70 #define SEX_FEMALE    2
71 #define SEX_OTHER     3
72 #define SEX_NEITHER   4
73 #define SEX_BOTH      5
74 #define SEX_SUMMON    6
75 #define SEX_ILLUSION  7 // bg2
76 #define SEX_EXTRA     8 // bg2
77 #define SEX_SUMMON_DEMON 9 //bg2
78 #define SEX_EXTRA2    0xa // ToB
79 #define SEX_MAXEXTRA  0x12 // ToB (extra10)
80 
81 //alignment values
82 #define AL_GE_MASK     3  //good / evil
83 #define AL_GOOD        1
84 #define AL_GE_NEUTRAL  2
85 #define AL_EVIL        3
86 #define AL_LC_MASK     0x30 //lawful / chaotic
87 #define AL_LAWFUL      0x10
88 #define AL_LC_NEUTRAL  0x20
89 #define AL_CHAOTIC     0x30
90 
91 #define AL_LAWFUL_GOOD (AL_LAWFUL|AL_GOOD)
92 #define AL_NEUTRAL_GOOD (AL_LC_NEUTRAL|AL_GOOD)
93 #define AL_CHAOTIC_GOOD (AL_CHAOTIC|AL_GOOD)
94 #define AL_LAWFUL_NEUTRAL (AL_LAWFUL|AL_GE_NEUTRAL)
95 #define AL_TRUE_NEUTRAL (AL_LC_NEUTRAL|AL_GE_NEUTRAL)
96 #define AL_CHAOTIC_NEUTRAL (AL_CHAOTIC|AL_GE_NEUTRAL)
97 #define AL_LAWFUL_EVIL (AL_LAWFUL|AL_EVIL)
98 #define AL_NEUTRAL_EVIL (AL_LC_NEUTRAL|AL_EVIL)
99 #define AL_CHAOTIC_EVIL (AL_CHAOTIC|AL_EVIL)
100 
101 //state bits (IE_STATE)
102 #define STATE_SLEEP      0x00000001
103 #define STATE_BERSERK    0x00000002
104 #define STATE_PANIC      0x00000004
105 #define STATE_STUNNED    0x00000008
106 #define STATE_INVISIBLE  0x00000010
107 #define STATE_PST_CURSE  0x00000010
108 #define STATE_HELPLESS   0x00000020
109 #define STATE_FROZEN     0x00000040
110 #define STATE_PETRIFIED  0x00000080
111 #define STATE_EXPLODING  0x00000100 // chunky death
112 #define STATE_PST_MIRROR 0x00000100 // pst version of STATE_MIRROR (overlaps STATE_EXPLODING)
113 #define STATE_FLAME      0x00000200 // charred to death
114 #define STATE_ACID       0x00000400 // disolved to death
115 #define STATE_DEAD       0x00000800
116 #define STATE_SILENCED   0x00001000
117 #define STATE_CHARMED    0x00002000
118 #define STATE_POISONED   0x00004000
119 #define STATE_HASTED     0x00008000
120 #define STATE_CRIT_PROT  0x00008000
121 #define STATE_SLOWED     0x00010000
122 #define STATE_CRIT_ENH   0x00010000
123 #define STATE_INFRA      0x00020000
124 #define STATE_BLIND      0x00040000
125 //this appears to be a mistake in the original state.ids
126 //this flag is the 'deactivate' flag, Activate/Deactivate works on it
127 // NOTE: we use IF_VISIBLE instead, so it could be removed if any conflict with disease arises
128 #define STATE_DISEASED   0x00080000
129 #define STATE_DEACTIVATED 0x00080000
130 #define STATE_FEEBLE     0x00100000
131 #define STATE_NONDET     0x00200000
132 #define STATE_INVIS2     0x00400000
133 #define STATE_EE_DUPL    0x00400000 // pst's enola projectile duplication (overlaps improved invisibility)
134 #define STATE_BLESS      0x00800000
135 #define STATE_CHANT      0x01000000
136 #define STATE_DETECT_EVIL 0x01000000
137 #define STATE_HOLY       0x02000000
138 #define STATE_PST_INVIS  0x02000000
139 #define STATE_LUCK       0x04000000
140 #define STATE_AID        0x08000000
141 #define STATE_CHANTBAD   0x10000000
142 #define STATE_ANTIMAGIC  0x10000000
143 #define STATE_BLUR       0x20000000
144 #define STATE_MIRROR     0x40000000
145 #define STATE_EMBALM     0x40000000 // pst healing with ac bonus
146 #define STATE_CONFUSED   0x80000000
147 
148 #define STATE_STILL      (STATE_STUNNED | STATE_FROZEN | STATE_PETRIFIED) //0xc8: not animated
149 #define _DEAD_STATES     (STATE_EXPLODING|STATE_FLAME|STATE_ACID|STATE_DEAD|STATE_PETRIFIED|STATE_FROZEN) //0x0fc0: just a shorthand
150 #define STATE_MINDLESS  (STATE_CONFUSED|STATE_FEEBLE|STATE_CHARMED|STATE_HELPLESS|STATE_SLEEP|STATE_BERSERK|STATE_PANIC) // 0x80102027
151 
152 // can't walk or attack - helpless
153 // FIXME: why is STATE_BERSERK on the list?
154 #define STATE_CANTMOVE ((STATE_MINDLESS|STATE_STUNNED|_DEAD_STATES|STATE_DEACTIVATED)^(STATE_CHARMED|STATE_CONFUSED)) // 0x180fef
155 #define STATE_CANTSTEAL  (_DEAD_STATES|STATE_DEACTIVATED|STATE_FEEBLE) //can't steal from, 0x00180fc0
156 #define STATE_CANTSEE    (_DEAD_STATES|STATE_DEACTIVATED) //can't explore (even itself), 0x00080fc0
157 #define STATE_CANTLISTEN ((STATE_CANTSEE|STATE_STUNNED|STATE_MINDLESS)^(STATE_CHARMED|STATE_FEEBLE)) // 0x80080fef
158 #define STATE_NOSAVE     _DEAD_STATES //don't save these, 0x00000fc0
159 
160 #define EXTSTATE_PRAYER      0x00000001
161 #define EXTSTATE_PRAYER_BAD  0x00000002
162 #define EXTSTATE_RECITATION  0x00000004
163 #define EXTSTATE_REC_BAD     0x00000008
164 #define EXTSTATE_EYE_MIND    0x00000010
165 #define EXTSTATE_EYE_SWORD   0x00000020
166 #define EXTSTATE_EYE_MAGE    0x00000040
167 #define EXTSTATE_EYE_VENOM   0x00000080
168 #define EXTSTATE_EYE_SPIRIT  0x00000100
169 #define EXTSTATE_EYE_FORT    0x00000200
170 #define EXTSTATE_EYE_STONE   0x00000400
171 #define EXTSTATE_ANIMAL_RAGE 0x00000800
172 #define EXTSTATE_NO_HP       0x00001000  //disable hp info in berserk mode
173 #define EXTSTATE_BERSERK     0x00002000
174 #define EXTSTATE_NO_BACKSTAB 0x00004000
175 #define EXTSTATE_FLOATTEXTS  0x00008000  //weapon chatting (IWD)
176 #define EXTSTATE_UNSTUN      0x00010000  //receiving damage will unstun
177 #define EXTSTATE_DEAF        0x00020000
178 #define EXTSTATE_CHAOTICCMD  0x00040000
179 #define EXTSTATE_MISCAST     0x00080000
180 #define EXTSTATE_PAIN        0x00100000
181 #define EXTSTATE_MALISON     0x00200000
182 #define EXTSTATE_BLOODRAGE   0x00400000
183 #define EXTSTATE_CATSGRACE   0x00800000
184 #define EXTSTATE_MOLD        0x01000000
185 #define EXTSTATE_SHROUD      0x02000000
186 #define EXTSTATE_NO_WAKEUP   0x80000000  //original HoW engine put this on top of eye_mind
187 #define EXTSTATE_SEVEN_EYES  0x000007f0
188 
189 //Multiclass flags
190 #define MC_SHOWLONGNAME         0x0001 // in iwd2 this supposedly prevents casting disruption from damage
191 #define MC_NO_DISRUPTION        0x0001 // but it is set on non-casters only (all halfgoblins) and most have no scripts
192 #define MC_REMOVE_CORPSE        0x0002
193 #define MC_KEEP_CORPSE          0x0004
194 #define MC_WAS_FIGHTER		0x0008
195 #define MC_WAS_MAGE		0x0010
196 #define MC_WAS_CLERIC		0x0020
197 #define MC_WAS_THIEF		0x0040
198 #define MC_WAS_DRUID		0x0080
199 #define MC_WAS_RANGER		0x0100
200 #define MC_WAS_ANY	        0x01f8 // MC_WAS_FIGHTER | ... | MC_WAS_RANGER
201 #define MC_FALLEN_PALADIN	0x0200
202 #define MC_FALLEN_RANGER	0x0400
203 #define MC_EXPORTABLE           0x0800  // iwd2: either different meaning or leftover cruft (set in a few creatures)
204 #define MC_HIDE_HP              0x1000  // also 'large creature' according to IE dev info (definitely something else in pst)
205 #define MC_PLOT_CRITICAL        0x2000  //if dies, it means game over (IWD2)
206 #define MC_LARGE_CREATURE       0x2000  // creature is subject to alternative melee damage (BG2), overlaps with MC_PLOT_CRITICAL
207 #define MC_LIMBO_CREATURE       0x4000
208 #define MC_BEENINPARTY          0x8000
209 #define MC_ENABLED              0x8000  // TODO iwd2 override; used like activate/deactivate?
210 #define MC_SEENPARTY            0x10000 //iwd2, TODO: non-iwd2: restore item in hand
211 #define MC_INVULNERABLE         0x20000 //iwd2
212 #define MC_NONTHREATENING_ENEMY 0x40000 // iwd2, barrels/kegs
213 #define MC_NO_TALK              0x80000 //ignore dialoginterrupt
214 #define MC_IGNORE_RETURN        0x100000 // iwd2, won't be moved to start position when party rests, TODO: ee, prevent chunking death
215 #define MC_IGNORE_INHIBIT_AI    0x200000 // iwd2 version of IE_ENABLEOFFSCREENAI (guess), elsewhere unused
216 #define MC_NO_NIGHTMARE_MODS    0x400000 // TODO: ee
217 #define MC_NO_TOOLTIPS          0x800000 // bit 23, TODO: ee
218 // the following bits are set in some files in iwd2 and iwd1
219 // it's in the range of the bg2 randomwalk bits 24-30, so likely the same between all the games
220 //#define                       0x4000000 // iwd2, unkown, probably irrelevant; set for 50wyv{,h,r}
221 //#define                       0x20000000 // iwd2, unkown, probably irrelevant
222 //#define                       0x40000000 // iwd2, unkown, probably irrelevant
223 #define MC_HOF_UPGRADED         0x80000000 // last bit, was used in memory only; repurposed to show HoF state
224 
225 // specflag values
226 #define SPECF_DRIVEN          1 // automatic concentration success, no morale failure
227 #define SPECF_CRITIMMUNITY    2 // immune to critical hits
228 #define SPECF_PALADINOFF      4 // can't choose paladin levels on level up
229 #define SPECF_MONKOFF         8 // can't choose monk levels on level up
230 
231 //stats
232 #define IE_HITPOINTS		0
233 #define IE_MAXHITPOINTS		1
234 #define IE_ARMORCLASS		2
235 #define IE_ACCRUSHINGMOD	3
236 #define IE_ACMISSILEMOD		4
237 #define IE_ACPIERCINGMOD	5
238 #define IE_ACSLASHINGMOD	6
239 #define IE_TOHIT		7
240 #define IE_NUMBEROFATTACKS	8
241 #define IE_SAVEVSDEATH		9
242 #define IE_SAVEVSWANDS		10
243 #define IE_SAVEVSPOLY		11
244 #define IE_SAVEVSBREATH		12
245 #define IE_SAVEVSSPELL		13
246 #define IE_SAVEFORTITUDE    	9
247 #define IE_SAVEREFLEX     	10
248 #define IE_SAVEWILL         	11
249 #define IE_RESISTFIRE		14
250 #define IE_RESISTCOLD		15
251 #define IE_RESISTELECTRICITY	16
252 #define IE_RESISTACID		17
253 #define IE_RESISTMAGIC		18
254 #define IE_RESISTMAGICFIRE	19
255 #define IE_RESISTMAGICCOLD	20
256 #define IE_RESISTSLASHING	21
257 #define IE_RESISTCRUSHING	22
258 #define IE_RESISTPIERCING	23
259 #define IE_RESISTMISSILE	24
260 #define IE_LORE	        	25
261 #define IE_LOCKPICKING  	26
262 #define IE_STEALTH		27
263 #define IE_TRAPS		28
264 #define IE_PICKPOCKET   	29
265 #define IE_FATIGUE		30
266 #define IE_INTOXICATION 	31
267 #define IE_LUCK	        	32
268 #define IE_TRACKING     	33
269 #define IE_LEVEL		34
270 #define IE_LEVELFIGHTER      	34 //for pst, iwd2
271 #define IE_SEX	        	35
272 #define IE_STR          	36
273 #define IE_STREXTRA     	37
274 #define IE_INT               	38
275 #define IE_WIS          	39
276 #define IE_DEX   		40
277 #define IE_CON  		41
278 #define IE_CHR  		42
279 #define IE_XPVALUE      	43
280 #define IE_CR                 	43      //for iwd2, not sure if this is a good idea yet
281 #define IE_XP   		44
282 #define IE_GOLD	        	45
283 #define IE_MORALEBREAK   	46
284 #define IE_MORALERECOVERYTIME	47
285 #define IE_REPUTATION        	48
286 #define IE_HATEDRACE         	49
287 #define IE_DAMAGEBONUS       	50
288 #define IE_SPELLFAILUREMAGE	51
289 #define IE_SPELLFAILUREPRIEST	52
290 #define IE_SPELLDURATIONMODMAGE	53
291 #define IE_SPELLDURATIONMODPRIEST	54
292 #define IE_TURNUNDEADLEVEL	55
293 #define IE_BACKSTABDAMAGEMULTIPLIER	56
294 #define IE_LAYONHANDSAMOUNT	57
295 #define IE_HELD 		58
296 #define IE_POLYMORPHED          59
297 #define IE_TRANSLUCENT          60
298 #define IE_IDENTIFYMODE         61
299 #define IE_ENTANGLE          	62
300 #define IE_SANCTUARY     	63
301 #define IE_MINORGLOBE    	64
302 #define IE_SHIELDGLOBE   	65
303 #define IE_GREASE		66
304 #define IE_WEB   		67
305 #define IE_LEVEL2               68
306 #define IE_LEVELMAGE            68 //pst, iwd2
307 #define IE_LEVEL3        	69
308 #define IE_LEVELTHIEF           69 //pst, iwd2
309 #define IE_CASTERHOLD       	70
310 #define IE_ENCUMBRANCE          71
311 #define IE_MISSILEHITBONUS	72
312 #define IE_MAGICDAMAGERESISTANCE  73
313 #define IE_RESISTPOISON 	 74
314 #define IE_DONOTJUMP           	 75
315 #define IE_AURACLEANSING	 76
316 #define IE_MENTALSPEED  	 77
317 #define IE_PHYSICALSPEED	 78
318 #define IE_CASTINGLEVELBONUSMAGE	79
319 #define IE_CASTINGLEVELBONUSCLERIC  80
320 #define IE_SEEINVISIBLE 		81
321 #define IE_IGNOREDIALOGPAUSE		82
322 #define IE_MINHITPOINTS 		83
323 #define IE_HITBONUSRIGHT  		84
324 #define IE_HITBONUSLEFT   		85
325 #define IE_DAMAGEBONUSRIGHT 		86
326 #define IE_DAMAGEBONUSLEFT  		87
327 #define IE_STONESKINS  			88
328 #define IE_FEAT_BOW                  	89
329 #define IE_FEAT_CROSSBOW              	90
330 #define IE_FEAT_SLING                 	91
331 #define IE_FEAT_AXE                   	92
332 #define IE_FEAT_MACE                   	93
333 #define IE_FEAT_FLAIL                  	94
334 #define IE_FEAT_POLEARM                 95
335 #define IE_FEAT_HAMMER 96
336 #define IE_FEAT_STAFF 97
337 #define IE_FEAT_GREAT_SWORD 98
338 #define IE_FEAT_LARGE_SWORD 99
339 #define IE_FEAT_SMALL_SWORD 100
340 #define IE_FEAT_TOUGHNESS 101
341 #define IE_FEAT_ARMORED_ARCANA 102
342 #define IE_FEAT_CLEAVE 103
343 #define IE_FEAT_ARMOUR 104
344 #define IE_FEAT_ENCHANTMENT 105
345 #define IE_FEAT_EVOCATION 106
346 #define IE_FEAT_NECROMANCY 107
347 #define IE_FEAT_TRANSMUTATION 108
348 #define IE_FEAT_SPELL_PENETRATION 109
349 #define IE_FEAT_EXTRA_RAGE 110
350 #define IE_FEAT_EXTRA_SHAPE 111
351 #define IE_FEAT_EXTRA_SMITING 112
352 #define IE_FEAT_EXTRA_TURNING 113
353 #define IE_FEAT_BASTARDSWORD 114
354 #define IE_PROFICIENCYBASTARDSWORD		89
355 #define IE_PROFICIENCYLONGSWORD		90
356 #define IE_PROFICIENCYSHORTSWORD		91
357 #define IE_PROFICIENCYAXE			92
358 #define IE_PROFICIENCYTWOHANDEDSWORD	93
359 #define IE_PROFICIENCYKATANA		94
360 #define IE_PROFICIENCYSCIMITAR   	95        //wakisashininjato
361 #define IE_PROFICIENCYDAGGER		96
362 #define IE_PROFICIENCYWARHAMMER	97
363 #define IE_PROFICIENCYSPEAR	98
364 #define IE_PROFICIENCYHALBERD		99
365 #define IE_PROFICIENCYFLAIL	100       //morningstar
366 #define IE_PROFICIENCYMACE			101
367 #define IE_PROFICIENCYQUARTERSTAFF		102
368 #define IE_PROFICIENCYCROSSBOW			103
369 #define IE_PROFICIENCYLONGBOW			104
370 #define IE_PROFICIENCYSHORTBOW			105
371 #define IE_PROFICIENCYDART			106
372 #define IE_PROFICIENCYSLING			107
373 #define IE_PROFICIENCYBLACKJACK			108
374 #define IE_PROFICIENCYGUN			109
375 #define IE_UNDEADLEVEL                          109 //if i calculated correctly, this is the 21th byte in the profs array
376 #define IE_PROFICIENCYMARTIALARTS		110
377 #define IE_PROFICIENCY2HANDED		   	111
378 #define IE_PROFICIENCYSWORDANDSHIELD		112
379 #define IE_PROFICIENCYSINGLEWEAPON		113
380 #define IE_PROFICIENCY2WEAPON		 114
381 #define IE_PROFICIENCYCLUB		 115
382 #define IE_ALCHEMY                       115
383 #define IE_EXTRAPROFICIENCY2 		 116
384 #define IE_ANIMALS                       116
385 #define IE_EXTRAPROFICIENCY3 		 117
386 #define IE_BLUFF                         117
387 #define IE_EXTRAPROFICIENCY4 		 118
388 #define IE_CONCENTRATION                 118
389 #define IE_EXTRAPROFICIENCY5 		 119
390 #define IE_DIPLOMACY                     119
391 #define IE_EXTRAPROFICIENCY6 		 120
392 #define IE_INTIMIDATE                    120
393 #define IE_EXTRAPROFICIENCY7 		 121
394 #define IE_SEARCH                        121
395 #define IE_EXTRAPROFICIENCY8 		 122
396 #define IE_SPELLCRAFT                    122
397 #define IE_EXTRAPROFICIENCY9 		 123
398 #define IE_MAGICDEVICE                   123
399 #define IE_EXTRAPROFICIENCY10 		 124
400 #define IE_SPECFLAGS                     124
401 #define IE_EXTRAPROFICIENCY11 		 125
402 #define IE_UNCANNY_DODGE                 125
403 #define IE_EXTRAPROFICIENCY12 		 126
404 #define IE_EXTRAPROFICIENCY13 		 127
405 #define IE_EXTRAPROFICIENCY14 		 128
406 #define IE_EXTRAPROFICIENCY15 		 129
407 #define IE_EXTRAPROFICIENCY16 		 130
408 #define IE_EXTRAPROFICIENCY17 		 131
409 #define IE_FEATS1                        131
410 #define IE_EXTRAPROFICIENCY18 		 132
411 #define IE_FEATS2                        132
412 #define IE_EXTRAPROFICIENCY19 		 133
413 #define IE_FEATS3                        133
414 #define IE_EXTRAPROFICIENCY20 		 134
415 #define IE_FREESLOTS	 		 134 //same as above
416 #define IE_HIDEINSHADOWS			  135
417 #define IE_DETECTILLUSIONS  		  136
418 #define IE_SETTRAPS 				  137
419 #define IE_PUPPETMASTERID   		  138
420 #define IE_PUPPETMASTERTYPE 		  139
421 #define IE_PUPPETTYPE   			  140
422 #define IE_PUPPETID 				  141
423 #define IE_CHECKFORBERSERK  		  142
424 #define IE_BERSERKSTAGE1			  143
425 #define IE_BERSERKSTAGE2			  144 //attack anyone
426 #define IE_DAMAGELUCK   			  145
427 #define IE_CRITICALHITBONUS 		  146
428 #define IE_VISUALRANGE  			  147
429 #define IE_EXPLORE  				  148
430 #define IE_THRULLCHARM  			  149
431 #define IE_SUMMONDISABLE			  150
432 #define IE_HITBONUS 				  151
433 #define IE_KIT  				  152
434 #define IE_FORCESURGE   			  153
435 #define IE_SURGEMOD 				  154
436 #define IE_IMPROVEDHASTE			  155
437 #define IE_INTERNAL_0            156
438 #define IE_INTERNAL_1            157
439 #define IE_INTERNAL_2            158
440 #define IE_INTERNAL_3            159
441 #define IE_INTERNAL_4            160
442 #define IE_INTERNAL_5            161
443 #define IE_INTERNAL_6            162
444 #define IE_INTERNAL_7            163
445 #define IE_INTERNAL_8            164
446 #define IE_INTERNAL_9            165
447 #define IE_SCRIPTINGSTATE1	 156
448 #define IE_SCRIPTINGSTATE2	 157
449 #define IE_SCRIPTINGSTATE3	 158
450 #define IE_SCRIPTINGSTATE4  	 159
451 #define IE_SCRIPTINGSTATE5  	 160
452 #define IE_SCRIPTINGSTATE6  	 161
453 #define IE_SCRIPTINGSTATE7  	162
454 #define IE_SCRIPTINGSTATE8  	163
455 #define IE_SCRIPTINGSTATE9  	164
456 #define IE_SCRIPTINGSTATE10 	165
457 //these are genuine bg2 stats found by research
458 #define IE_MELEETOHIT		166
459 #define IE_MELEEDAMAGE		167
460 #define IE_MISSILEDAMAGE	168
461 #define IE_NOCIRCLE		169
462 #define IE_FISTHIT		170
463 #define IE_FISTDAMAGE		171
464 #define IE_TITLE1		172
465 #define IE_TITLE2		173
466 #define IE_DISABLEOVERLAY	174
467 #define IE_DISABLEBACKSTAB	175
468 //these are clashing with GemRB now
469 //176 IE_OPEN_LOCK_BONUS
470 //177 IE_MOVE_SILENTLY_BONUS
471 //178 IE_FIND_TRAPS_BONUS
472 //179 IE_PICK_POCKETS_BONUS
473 //180 IE_HIDE_IN_SHADOWS_BONUS
474 //181 DETECT_ILLUSIONS_BONUS
475 //182 SET_TRAPS_BONUS
476 
477 // some bg2 mods use these
478 #define IE_SCRIPTINGSTATE21	 176
479 #define IE_SCRIPTINGSTATE22	 177
480 #define IE_SCRIPTINGSTATE23	 178
481 #define IE_SCRIPTINGSTATE24	 179
482 #define IE_SCRIPTINGSTATE25	 180
483 #define IE_SCRIPTINGSTATE26	 181
484 #define IE_SCRIPTINGSTATE27	 182
485 
486 #define IE_ENABLEOFFSCREENAI    183 // bg2 has this on this spot
487 #define IE_EXISTANCEDELAY       184 // affects the displaying of EXISTANCE strings
488 #define IE_ATTACKNUMBERDOUBLE   185 // used by haste option 2
489 #define IE_DISABLECHUNKING      186 // no permanent death
490 #define IE_NOTURNABLE           187 // immune to turn
491 //the IE sets this stat the same time as stat 150
492 //188 IE_SUMMONDISABLE2
493 #define IE_CHAOSSHIELD          189 // defense against wild surge
494 #define IE_NPCBUMP              190 // allow npcs to be bumped?
495 #define IE_CANUSEANYITEM        191
496 #define IE_ALWAYSBACKSTAB       192
497 #define IE_SEX_CHANGED          193 // modified by opcode 0x47
498 #define IE_SPELLFAILUREINNATE   194
499 #define IE_NOTRACKING           195 // tracking doesn't detect this
500 #define IE_DEADMAGIC            196
501 #define IE_DISABLETIMESTOP      197
502 #define IE_NOSEQUESTER          198 // this doesn't work in IE, but intended
503 #define IE_STONESKINSGOLEM	199
504 //actually this stat is not used for level drain
505 #define IE_LEVELDRAIN		200
506 #define IE_AVATARREMOVAL        201
507 
508 //GemRB Specific Defines
509 //these are temporary only
510 #define IE_XP_MAGE              176 // XP2
511 #define IE_XP_THIEF             177 // XP3
512 //the rest are relocated at 250+
513 
514 #define IE_ETHEREALNESS         202
515 #define IE_IMMUNITY             203
516 #define IE_DISABLEDBUTTON       204
517 #define IE_ANIMATION_ID		205 //cd
518 #define IE_STATE_ID		206
519 #define IE_EXTSTATE_ID		207     //used in how/iwd2
520 #define IE_METAL_COLOR		208 //d0
521 #define IE_COLORS		208 //same
522 #define IE_MINOR_COLOR		209
523 #define IE_MAJOR_COLOR		210
524 #define IE_SKIN_COLOR		211
525 #define IE_LEATHER_COLOR	212
526 #define IE_ARMOR_COLOR		213
527 #define IE_HAIR_COLOR		214
528 #define IE_COLORCOUNT		214 //same
529 #define IE_MC_FLAGS		215
530 #define IE_CLASSLEVELSUM	216 //iwd2
531 #define IE_ALIGNMENT		217
532 #define IE_CASTING		218
533 #define IE_ARMOR_TYPE		219
534 #define IE_TEAM			220
535 #define IE_FACTION		221
536 #define IE_SUBRACE		222
537 #define IE_SPECIES              223 // pst specific
538 #define IE_UNUSED_SKILLPTS 223 // iwd2 specific
539 //temporarily here for iwd2
540 #define IE_HATEDRACE2       224
541 #define IE_HATEDRACE3       225
542 #define IE_HATEDRACE4       226
543 #define IE_HATEDRACE5       227
544 #define IE_HATEDRACE6       228
545 #define IE_HATEDRACE7       229
546 #define IE_HATEDRACE8       230
547 #define IE_RACE			231
548 #define IE_CLASS		232
549 #define IE_GENERAL		233
550 #define IE_EA			234
551 #define IE_SPECIFIC		235
552 #define IE_SAVEDXPOS             236
553 #define IE_SAVEDYPOS             237
554 #define IE_SAVEDFACE             238
555 #define IE_USERSTAT              239 //user defined stat
556 //These are in IWD2, but in a different place
557 //core class levels (fighter, mage, thief are already stored)
558 #define IE_LEVELBARBARIAN        240
559 #define IE_LEVELBARD             241
560 #define IE_LEVELCLERIC           242
561 #define IE_LEVELDRUID            243
562 #define IE_LEVELMONK             244
563 #define IE_LEVELPALADIN          245
564 #define IE_LEVELRANGER           246
565 #define IE_LEVELSORCERER         247
566 // place for 2 more classes
567 #define IE_LEVELCLASS12          248
568 #define IE_LEVELCLASS13          249
569 
570 //more GemRB internal stats
571 #define IE_DIALOGRANGE          250 // iwd2
572 #define IE_MOVEMENTRATE         251
573 #define IE_MORALE               252 // this has no place
574 #define IE_BOUNCE               253 // has projectile bouncing effect
575 #define IE_MIRRORIMAGES         254
576 
577 }
578 
579 #endif  // ! IE_STATS_H
580