OSDN Git Service

Added PCD_SECTORDAMAGE and PCD_REPLACETEXTURES support.
[zandronum/zandronum-acc.git] / zdefs.acs
1 \r
2 //**************************************************************************\r
3 //**\r
4 //** zdefs.acs\r
5 //**\r
6 //** Common definitions for use when compiling ACS scripts for ZDoom\r
7 //**\r
8 //**************************************************************************\r
9 \r
10 #define TRUE                    1\r
11 #define FALSE                   0\r
12 #define ON                      1\r
13 #define OFF                     0\r
14 #define YES                     1\r
15 #define NO                      0\r
16 \r
17 #define LINE_FRONT              0\r
18 #define LINE_BACK               1\r
19 \r
20 #define SIDE_FRONT              0\r
21 #define SIDE_BACK               1\r
22 \r
23 #define TEXTURE_TOP             0\r
24 #define TEXTURE_MIDDLE          1\r
25 #define TEXTURE_BOTTOM          2\r
26 \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
31 \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
36 \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
42 \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
47 \r
48 #define SCROLL                  0\r
49 #define CARRY                   1\r
50 #define SCROLL_AND_CARRY        2\r
51 \r
52 // Means-of-death for Sector_SetDamage --------------------------------------\r
53 \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
64 #define MOD_LAVA                14\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
70 #define MOD_EXIT                20\r
71 #define MOD_SPLASH              21\r
72 #define MOD_HIT                 22\r
73 #define MOD_RAILGUN             23\r
74 #define MOD_ICE                 24\r
75 #define MOD_DISINTEGRATE        25\r
76 #define MOD_POISON              26\r
77 #define MOD_ELECTRIC            27\r
78 \r
79 // Return values for PlayMovie ----------------------------------------------\r
80 \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
85 \r
86 \r
87 // Player properties --------------------------------------------------------\r
88 \r
89 #define PROP_FROZEN                     0\r
90 #define PROP_NOTARGET                   1\r
91 #define PROP_INSTANTWEAPONSWITCH        2\r
92 #define PROP_FLY                        3\r
93 #define PROP_TOTALLYFROZEN              4\r
94 \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
105 \r
106 // Text colors for hudmessage -----------------------------------------------\r
107 \r
108 #define CR_UNTRANSLATED         -1\r
109 #define CR_BRICK                0\r
110 #define CR_TAN                  1\r
111 #define CR_GRAY                 2\r
112 #define CR_GREY                 2\r
113 #define CR_GREEN                3\r
114 #define CR_BROWN                4\r
115 #define CR_GOLD                 5\r
116 #define CR_RED                  6\r
117 #define CR_BLUE                 7\r
118 #define CR_ORANGE               8\r
119 #define CR_WHITE                9\r
120 #define CR_YELLOW               10\r
121 \r
122 // HUD message types --------------------------------------------------------\r
123 \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
128 \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
132 \r
133 // "Scripted" Marine weapon types -------------------------------------------\r
134 \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
147 \r
148 // Actor properties you can get/set -----------------------------------------\r
149 \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
165 \r
166 // Render Styles ------------------------------------------------------------\r
167 \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
175 \r
176 // Properties you can use with GetLevelInfo() -------------------------------\r
177 \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
188 \r
189 \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
192 \r
193 #define T_ROCK1                 41\r
194 #define T_ROCK2                 42\r
195 #define T_ROCK3                 43\r
196 #define T_DIRT1                 44\r
197 #define T_DIRT2                 45\r
198 #define T_DIRT3                 46\r
199 #define T_DIRT4                 47\r
200 #define T_DIRT5                 48\r
201 #define T_DIRT6                 49\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
212 \r
213 // Doom Spawnable things (used for thingcount() and thing spawners) ---------\r
214 \r
215 #define T_NONE                  0\r
216 #define T_SHOTGUY               1\r
217 #define T_CHAINGUY              2\r
218 #define T_BARON                 3\r
219 #define T_ZOMBIE                4\r
220 #define T_IMP                   5\r
221 #define T_ARACHNOTRON           6\r
222 #define T_SPIDERMASTERMIND      7\r
223 #define T_DEMON                 8\r
224 #define T_SPECTRE               9\r
225 #define T_IMPFIREBALL           10\r
226 #define T_CLIP                  11\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
239 #define T_BFG                   31\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
246 #define T_CELL                  75\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
258 \r
259 #define T_LOSTSOUL              110\r
260 #define T_VILE                  111\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
280 #define T_PUFF                  131\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
294 #define T_GUTS                  145\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
304 \r
305 // Heretic Spawnable things (used for thingcount() and thing spawners) ------\r
306 \r
307 #define T_CLINK                 1\r
308 #define T_MUMMYLEADER           2\r
309 #define T_BEAST                 3\r
310 #define T_MUMMY                 4\r
311 //#define T_IMP                 5   // Defined above\r
312 #define T_KNIGHT                6\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
331 #define T_MACE                  31\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
347 \r
348 #define T_SOUND_WIND            110\r
349 #define T_SOUND_WATERFALL       111\r
350 \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
356 #define T_POD                   125\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
371 \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
381 \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
403 \r
404 // Events when you have input grabbed\r
405 \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
422 \r
423 // Key modifiers (or'd with event type)\r
424 \r
425 #define GKM_SHIFT                               256\r
426 #define GKM_CTRL                                512\r
427 #define GKM_ALT                                 1024\r
428 \r
429 // Button modifiers are only valid for EV_MouseMove events\r
430 \r
431 #define GKM_LBUTTON                             2048\r
432 #define GKM_MBUTTON                             4096\r
433 #define GKM_RBUTTON                             8192\r
434 \r
435 // Special codes for some GUI keys, including a few real ASCII codes.\r
436 \r
437 #define GK_PGDN                 1\r
438 #define GK_PGUP                 2\r
439 #define GK_HOME                 3\r
440 #define GK_END                  4\r
441 #define GK_LEFT                 5\r
442 #define GK_RIGHT                6\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
447 #define GK_DOWN                 10\r
448 #define GK_VTAB                 11              // ASCII\r
449 #define GK_UP                   11\r
450 #define GK_FORMFEED             12              // ASCII\r
451 #define GK_RETURN               13              // ASCII\r
452 #define GK_F1                   14\r
453 #define GK_F2                   15\r
454 #define GK_F3                   16\r
455 #define GK_F4                   17\r
456 #define GK_F5                   18\r
457 #define GK_F6                   19\r
458 #define GK_F7                   20\r
459 #define GK_F8                   21\r
460 #define GK_F9                   22\r
461 #define GK_F10                  23\r
462 #define GK_F11                  24\r
463 #define GK_F12                  25\r
464 #define GK_DEL                  26\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
470 \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