2 //**************************************************************************
\r
6 //** Common definitions for use when compiling ACS scripts for ZDoom
\r
8 //**************************************************************************
\r
17 #define LINE_FRONT 0
\r
20 #define SIDE_FRONT 0
\r
23 #define TEXTURE_TOP 0
\r
24 #define TEXTURE_MIDDLE 1
\r
25 #define TEXTURE_BOTTOM 2
\r
27 #define GAME_SINGLE_PLAYER 0
\r
28 #define GAME_NET_COOPERATIVE 1
\r
29 #define GAME_NET_DEATHMATCH 2
\r
30 #define GAME_TITLE_MAP 3
\r
32 // Classes are only useful with Hexen
\r
33 #define CLASS_FIGHTER 0
\r
34 #define CLASS_CLERIC 1
\r
35 #define CLASS_MAGE 2
\r
37 #define SKILL_VERY_EASY 0
\r
38 #define SKILL_EASY 1
\r
39 #define SKILL_NORMAL 2
\r
40 #define SKILL_HARD 3
\r
41 #define SKILL_VERY_HARD 4
\r
43 #define BLOCK_NOTHING 0
\r
44 #define BLOCK_CREATURES 1
\r
45 #define BLOCK_EVERYTHING 2
\r
46 #define BLOCK_RAILING 3
\r
50 #define SCROLL_AND_CARRY 2
\r
52 // Means-of-death for Sector_SetDamage --------------------------------------
\r
54 #define MOD_UNKNOWN 0
\r
55 #define MOD_ROCKET 5
\r
56 #define MOD_R_SPLASH 6
\r
57 #define MOD_PLASMARIFLE 7
\r
58 #define MOD_BFG_BOOM 8
\r
59 #define MOD_BFG_SPLASH 9
\r
60 #define MOD_CHAINSAW 10
\r
61 #define MOD_SSHOTGUN 11
\r
62 #define MOD_WATER 12
\r
63 #define MOD_SLIME 13
\r
65 #define MOD_CRUSH 15
\r
66 #define MOD_TELEFRAG 16
\r
67 #define MOD_FALLING 17
\r
68 #define MOD_SUICIDE 18
\r
69 #define MOD_BARREL 19
\r
71 #define MOD_SPLASH 21
\r
73 #define MOD_RAILGUN 23
\r
75 #define MOD_DISINTEGRATE 25
\r
76 #define MOD_POISON 26
\r
77 #define MOD_ELECTRIC 27
\r
79 // Return values for PlayMovie ----------------------------------------------
\r
81 #define MOVIE_Played 0
\r
82 #define MOVIE_Played_NoVideo 1
\r
83 #define MOVIE_Played_Aborted 2
\r
84 #define MOVIE_Failed -1
\r
87 // Player properties --------------------------------------------------------
\r
89 #define PROP_FROZEN 0
\r
90 #define PROP_NOTARGET 1
\r
91 #define PROP_INSTANTWEAPONSWITCH 2
\r
93 #define PROP_TOTALLYFROZEN 4
\r
95 // The following properties correspond to powers given by certain items
\r
96 #define PROP_INVULNERABILITY 5
\r
97 #define PROP_STRENGTH 6
\r
98 #define PROP_INVISIBILITY 7
\r
99 #define PROP_RADIATIONSUIT 8
\r
100 #define PROP_ALLMAP 9
\r
101 #define PROP_INFRARED 10
\r
102 #define PROP_WEAPONLEVEL2 11
\r
103 #define PROP_FLIGHT 12
\r
104 #define PROP_SPEED 15
\r
106 // Text colors for hudmessage -----------------------------------------------
\r
108 #define CR_UNTRANSLATED -1
\r
118 #define CR_ORANGE 8
\r
120 #define CR_YELLOW 10
\r
122 // HUD message types --------------------------------------------------------
\r
124 #define HUDMSG_PLAIN 0
\r
125 #define HUDMSG_FADEOUT 1
\r
126 #define HUDMSG_TYPEON 2
\r
127 #define HUDMSG_FADEINOUT 3
\r
129 // OR this with one of the above to log the hudmessage to the console.
\r
130 // i.e. instead of HUDMSG_PLAIN, you can use HUDMSG_PLAIN | HUDMSG_LOG
\r
131 #define HUDMSG_LOG 0x80000000
\r
133 // "Scripted" Marine weapon types -------------------------------------------
\r
135 #define MARINEWEAPON_Dummy 0
\r
136 #define MARINEWEAPON_Fist 1
\r
137 #define MARINEWEAPON_BerserkFist 2
\r
138 #define MARINEWEAPON_Chainsaw 3
\r
139 #define MARINEWEAPON_Pistol 4
\r
140 #define MARINEWEAPON_Shotgun 5
\r
141 #define MARINEWEAPON_SuperShotgun 6
\r
142 #define MARINEWEAPON_Chaingun 7
\r
143 #define MARINEWEAPON_RocketLauncher 8
\r
144 #define MARINEWEAPON_PlasmaRifle 9
\r
145 #define MARINEWEAPON_Railgun 10
\r
146 #define MARINEWEAPON_BFG 11
\r
148 // Actor properties you can get/set -----------------------------------------
\r
150 #define APROP_Health 0
\r
151 #define APROP_Speed 1
\r
152 #define APROP_Damage 2
\r
153 #define APROP_Alpha 3
\r
154 #define APROP_RenderStyle 4
\r
155 #define APROP_Ambush 10
\r
156 #define APROP_Invulnerable 11
\r
157 #define APROP_JumpZ 12
\r
158 #define APROP_ChaseGoal 13
\r
159 #define APROP_Frightened 14
\r
160 #define APROP_SeeSound 5 // Sounds can only be set, not gotten
\r
161 #define APROP_AttackSound 6
\r
162 #define APROP_PainSound 7
\r
163 #define APROP_DeathSound 8
\r
164 #define APROP_ActiveSound 9
\r
166 // Render Styles ------------------------------------------------------------
\r
168 #define STYLE_None 0 // Do not draw
\r
169 #define STYLE_Normal 1 // Normal; just copy the image to the screen
\r
170 #define STYLE_Fuzzy 2 // Draw silhouette using "fuzz" effect
\r
171 #define STYLE_SoulTrans 3 // Draw translucent with amount in r_transsouls
\r
172 #define STYLE_OptFuzzy 4 // Draw as fuzzy or translucent, based on user preference
\r
173 #define STYLE_Translucent 64 // Draw translucent
\r
174 #define STYLE_Add 65 // Draw additive
\r
176 // Properties you can use with GetLevelInfo() -------------------------------
\r
178 #define LEVELINFO_PAR_TIME 0
\r
179 #define LEVELINFO_CLUSTERNUM 1
\r
180 #define LEVELINFO_LEVELNUM 2
\r
181 #define LEVELINFO_TOTAL_SECRETS 3
\r
182 #define LEVELINFO_FOUND_SECRETS 4
\r
183 #define LEVELINFO_TOTAL_ITEMS 5
\r
184 #define LEVELINFO_FOUND_ITEMS 6
\r
185 #define LEVELINFO_TOTAL_MONSTERS 7
\r
186 #define LEVELINFO_KILLED_MONSTERS 8
\r
187 #define LEVELINFO_SUCK_TIME 9
\r
190 // Shared spawnable things from Hexen. You can spawn these in the other -----
\r
191 // games if you provide sprites for them, otherwise they'll be invisible. ---
\r
202 #define T_STAINEDGLASS1 54
\r
203 #define T_STAINEDGLASS2 55
\r
204 #define T_STAINEDGLASS3 56
\r
205 #define T_STAINEDGLASS4 57
\r
206 #define T_STAINEDGLASS5 58
\r
207 #define T_STAINEDGLASS6 59
\r
208 #define T_STAINEDGLASS7 60
\r
209 #define T_STAINEDGLASS8 61
\r
210 #define T_STAINEDGLASS9 62
\r
211 #define T_STAINEDGLASS0 63
\r
213 // Doom Spawnable things (used for thingcount() and thing spawners) ---------
\r
216 #define T_SHOTGUY 1
\r
217 #define T_CHAINGUY 2
\r
221 #define T_ARACHNOTRON 6
\r
222 #define T_SPIDERMASTERMIND 7
\r
224 #define T_SPECTRE 9
\r
225 #define T_IMPFIREBALL 10
\r
227 #define T_SHELLS 12
\r
228 #define T_CACODEMON 19
\r
229 #define T_REVENANT 20
\r
230 #define T_BRIDGE 21
\r
231 #define T_ARMORBONUS 22
\r
232 #define T_STIMPACK 23
\r
233 #define T_MEDKIT 24
\r
234 #define T_SOULSPHERE 25
\r
235 #define T_SHOTGUN 27
\r
236 #define T_CHAINGUN 28
\r
237 #define T_ROCKETLAUNCHER 29
\r
238 #define T_PLASMAGUN 30
\r
240 #define T_CHAINSAW 32
\r
241 #define T_SUPERSHOTGUN 33
\r
242 #define T_PLASMABOLT 51
\r
243 #define T_TRACER 53
\r
244 #define T_GREENARMOR 68
\r
245 #define T_BLUEARMOR 69
\r
247 #define T_BLUEKEYCARD 85
\r
248 #define T_REDKEYCARD 86
\r
249 #define T_YELLOWKEYCARD 87
\r
250 #define T_YELLOWSKULLKEY 88
\r
251 #define T_REDSKULLKEY 89
\r
252 #define T_BLUESKULLKEY 90
\r
253 #define T_TEMPLARGEFLAME 98
\r
254 #define T_STEALTHBARON 100
\r
255 #define T_STEALTHKNIGHT 101
\r
256 #define T_STEALTHZOMBIE 102
\r
257 #define T_STEALTHSHOTGUY 103
\r
259 #define T_LOSTSOUL 110
\r
261 #define T_MANCUBUS 112
\r
262 #define T_HELLKNIGHT 113
\r
263 #define T_CYBERDEMON 114
\r
264 #define T_PAINELEMENTAL 115
\r
265 #define T_WOLFSS 116
\r
266 #define T_STEALTHARACHNOTRON 117
\r
267 #define T_STEALTHVILE 118
\r
268 #define T_STEALTHCACODEMON 119
\r
269 #define T_STEALTHCHAINGUY 120
\r
270 #define T_STEALTHSERGEANT 121
\r
271 #define T_STEALTHIMP 122
\r
272 #define T_STEALTHMANCUBUS 123
\r
273 #define T_STEALTHREVENANT 124
\r
274 #define T_BARREL 125
\r
275 #define T_CACODEMONSHOT 126
\r
276 #define T_ROCKET 127
\r
277 #define T_BFGSHOT 128
\r
278 #define T_ARACHNOTRONPLASMA 129
\r
279 #define T_BLOOD 130
\r
281 #define T_MEGASPHERE 132
\r
282 #define T_INVULNERABILITY 133
\r
283 #define T_BERSERK 134
\r
284 #define T_INVISIBILITY 135
\r
285 #define T_IRONFEET 136
\r
286 #define T_COMPUTERMAP 137
\r
287 #define T_LIGHTAMP 138
\r
288 #define T_AMMOBOX 139
\r
289 #define T_ROCKETAMMO 140
\r
290 #define T_ROCKETBOX 141
\r
291 #define T_BATTERY 142
\r
292 #define T_SHELLBOX 143
\r
293 #define T_BACKPACK 144
\r
295 #define T_BLOODPOOL 146
\r
296 #define T_BLOODPOOL1 147
\r
297 #define T_BLOODPOOL2 148
\r
298 #define T_FLAMINGBARREL 149
\r
299 #define T_BRAINS 150
\r
300 #define T_SCRIPTEDMARINE 151
\r
301 #define T_HEALTHBONUS 152
\r
302 #define T_MANCUBUSSHOT 153
\r
303 #define T_BARONBALL 154
\r
305 // Heretic Spawnable things (used for thingcount() and thing spawners) ------
\r
308 #define T_MUMMYLEADER 2
\r
311 //#define T_IMP 5 // Defined above
\r
313 #define T_IMPLEADER 7
\r
314 #define T_MUMMYGHOST 8
\r
315 #define T_MUMMYLEADERGHOST 9
\r
316 //#define T_IMPFIREBALL 10
\r
317 #define T_WIMPYWANDAMMO 11
\r
318 #define T_HEFTYWANDAMMO 12
\r
319 #define T_ITEMEGG 14
\r
320 #define T_ITEMFLIGHT 15
\r
321 #define T_ITEMTELEPORT 18
\r
322 #define T_WIZARD 19
\r
323 #define T_IRONLICH 20
\r
324 #define T_ITEMHEALTHPOTION 23
\r
325 #define T_ITEMHEALTHFLASH 24
\r
326 #define T_ITEMHEALTHFULL 25
\r
327 #define T_CROSSBOW 27
\r
328 #define T_BLASTER 28
\r
329 #define T_PHOENIXROD 29
\r
330 #define T_SKULLROD 30
\r
332 #define T_GAUNTLETS 32
\r
333 #define T_WIMPYCROSSBOWAMMO 33
\r
334 #define T_HEFTYCROSSBOWAMMO 34
\r
335 #define T_WIMPYMACEAMMO 35
\r
336 #define T_HEFTYMACEAMMO 36
\r
337 #define T_WIMPYBLASTERAMMO 37
\r
338 #define T_HEFTYBLASTERAMMO 38
\r
339 #define T_MORPHBLAST 40
\r
340 #define T_SHIELD1 68
\r
341 #define T_SHIELD2 69
\r
342 #define T_ITEMTIMEBOMB 72
\r
343 #define T_ITEMTORCH 73
\r
344 #define T_BLUEKEY 85
\r
345 #define T_GREENKEY 86
\r
346 #define T_YELLOWKEY 87
\r
348 #define T_SOUND_WIND 110
\r
349 #define T_SOUND_WATERFALL 111
\r
351 #define T_BEASTBALL 120
\r
352 #define T_FEATHER 121
\r
353 #define T_CHICKEN 122
\r
354 #define T_VOLCANOBALL 123
\r
355 #define T_TINYVOLCANOBALL 124
\r
357 #define T_PODGENERATOR 126
\r
358 #define T_KNIGHTAXE 127
\r
359 #define T_KNIGHTBLOODAXE 128
\r
360 #define T_KNIGHTGHOST 129
\r
361 #define T_MUMMYHEAD 131
\r
362 #define T_SNAKE 132
\r
363 #define T_ITEMINVULNERABILITY 133
\r
364 #define T_ITEMTOME 134
\r
365 #define T_ITEMINVISIBILITY 135
\r
366 #define T_ITEMBAGOFHOLDING 136
\r
367 #define T_ITEMALLMAP 137
\r
368 #define T_SNAKEPROJECTILE 138
\r
369 #define T_SNAKEPROJECTILEBIG 139
\r
370 #define T_WIZARDSHOT 140
\r
372 // All D'Sparil teleport destinations must be spawned before D'Sparil alone.
\r
373 // D'Sparil can be spawned alone manually, and he is also spawned automatically
\r
374 // when he "dies" on his serpent.
\r
375 #define T_DSPARILTELEPORTDEST 141
\r
376 #define T_DSPARILONSERPENT 142
\r
377 #define T_DSPARILALONE 143
\r
378 #define T_SERPENTFIREBALL 144
\r
379 #define T_DSPARILBLUESHOT 145
\r
380 #define T_DSPARILWIZARDSPAWNER 146
\r
382 #define T_CROSSBOWMAINBLAST 147
\r
383 #define T_CROSSBOWMINIBLAST 148
\r
384 #define T_CROSSBOWPOWERBLAST 149
\r
385 #define T_VOLCANO 150
\r
386 #define T_POWERWANDMINIBLAST 151
\r
387 #define T_POWERWANDBIGGERBLAST 152
\r
388 #define T_DEATHBALL 153
\r
389 #define T_NOGRAVITYMACEBALL 154
\r
390 #define T_BOUNCYMACEBALL 155
\r
391 #define T_HEAVYMACEBALL 156
\r
392 #define T_RIPPER 157
\r
393 #define T_WIMPYSKULLRODAMMO 158
\r
394 #define T_HEFTYSKULLRODAMMO 159
\r
395 #define T_SKULLRODBLAST 160
\r
396 #define T_WIMPYPHOENIXRODAMMO 161
\r
397 #define T_HEFTYPHOENIXRODAMMO 162
\r
398 #define T_PHOENIXSHOT 163
\r
399 #define T_IRONLICHBLUESHOT 164
\r
400 #define T_WHIRLWIND 165
\r
401 #define T_REDTELEGLITTER 166
\r
402 #define T_BLUETELEGLITTER 167
\r
404 // Events when you have input grabbed
\r
406 #define EV_KeyDown 1 // data1: unshifted ASCII, data2: shifted ASCII
\r
407 #define EV_KeyRepeat 2 // data1: unshifted ASCII, data2: shifted ASCII
\r
408 #define EV_KeyUp 3 // data1: unshifted ASCII, data2: shifted ASCII
\r
409 #define EV_Char 4 // data1: translated character for text input
\r
410 #define EV_MouseMove 5 // data1: x, data2: y
\r
411 #define EV_LButtonDown 6
\r
412 #define EV_LButtonUp 7
\r
413 #define EV_LButtonDblClick 8
\r
414 #define EV_MButtonDown 9
\r
415 #define EV_MButtonUp 10
\r
416 #define EV_MButtonDblClick 11
\r
417 #define EV_RButtonDown 12
\r
418 #define EV_RButtonUp 13
\r
419 #define EV_RButtonDblClick 14
\r
420 #define EV_WheelDown 15
\r
421 #define EV_WheelUp 16
\r
423 // Key modifiers (or'd with event type)
\r
425 #define GKM_SHIFT 256
\r
426 #define GKM_CTRL 512
\r
427 #define GKM_ALT 1024
\r
429 // Button modifiers are only valid for EV_MouseMove events
\r
431 #define GKM_LBUTTON 2048
\r
432 #define GKM_MBUTTON 4096
\r
433 #define GKM_RBUTTON 8192
\r
435 // Special codes for some GUI keys, including a few real ASCII codes.
\r
443 #define GK_ALERT 7 // ASCII bell
\r
444 #define GK_BACKSPACE 8 // ASCII
\r
445 #define GK_TAB 9 // ASCII
\r
446 #define GK_LINEFEED 10 // ASCII
\r
448 #define GK_VTAB 11 // ASCII
\r
450 #define GK_FORMFEED 12 // ASCII
\r
451 #define GK_RETURN 13 // ASCII
\r
465 #define GK_ESCAPE 27 // ASCII
\r
466 #define GK_FREE1 28
\r
467 #define GK_FREE2 29
\r
468 #define GK_FREE3 30
\r
469 #define GK_CESCAPE 31 // color escape
\r
471 #define CHANGELEVEL_KEEPFACING 1
\r
472 #define CHANGELEVEL_RESETINVENTORY 2
\r
473 #define CHANGELEVEL_NOMONSTERS 4
\r
474 #define CHANGELEVEL_CHANGESKILL 8
\r
475 #define CHANGELEVEL_NOINTERMISSION 16
\r