Quake-III-Arena

Quake III Arena GPL Source Release
Log | Files | Refs

EPAIRS.H (52286B)


      1 /*
      2 ===========================================================================
      3 Copyright (C) 1999-2005 Id Software, Inc.
      4 
      5 This file is part of Quake III Arena source code.
      6 
      7 Quake III Arena source code is free software; you can redistribute it
      8 and/or modify it under the terms of the GNU General Public License as
      9 published by the Free Software Foundation; either version 2 of the License,
     10 or (at your option) any later version.
     11 
     12 Quake III Arena source code is distributed in the hope that it will be
     13 useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
     14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15 GNU General Public License for more details.
     16 
     17 You should have received a copy of the GNU General Public License
     18 along with Foobar; if not, write to the Free Software
     19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     20 ===========================================================================
     21 */
     22 #ifndef	EPAIRS_H_
     23 #define	EPAIRS_H_
     24 
     25 typedef struct
     26 {
     27 	char  *key;
     28 	char  *value;
     29 } userEpair_t;
     30 
     31 userEpair_t eclassStr[] =
     32 {
     33 	//////////////////////////////
     34 	// Worldspawn
     35 	//////////////////////////////
     36 	{"classname",   "worldspawn"},
     37 	{"color",       "0 0 0"},
     38 	{"rem",         "Only used for the world entity."},
     39 	{"rem",			"cdtrack - number of CD track to play when level starts"},
     40 	{"rem",			"fog_value - level of fog for this map"},
     41 	
     42 	//////////////////////////////
     43 	// Light
     44 	//////////////////////////////
     45 	{"classname",	"light"},
     46 	{"size",		"-8 -8 -8 8 8 8"},
     47 	{"color",		"0 1 0"},
     48 	{"flag",		"START_OFF"},
     49 
     50 	{"rem",			"style - number of style to use, 0-63"},
     51 	{"rem",			"nelnosmama - string to define lightstyle"},
     52 
     53 	//////////////////////////////
     54 	// light_walltorch
     55 	//////////////////////////////
     56 	{"classname",	"light_walltorch"},
     57 	{"size",		"-8 -8 -8 8 8 8"},
     58 	{"color",		"0 1 0"},
     59 	{"flag",		"START_ON"},
     60 
     61 	{"rem",			"style - number of style to use, 0-63"},
     62 	{"rem",			"nelnosmama - string to define lightstyle"},
     63 
     64 	//////////////////////////////
     65 	// light_spot
     66 	//////////////////////////////
     67 	{"classname",	"light_spot"},
     68 	{"size",		"-8 -8 -8 8 8 8"},
     69 	{"color",		"0 1 0"},
     70 	{"flag",		"START_ON"},
     71 
     72 	{"rem",			"Used to make a spotlight.  If it is targeted at another entity,"},
     73 	{"rem",			"the spotlight will point directly at it, otherwise it will point"},
     74 	{"rem",			"in the direction of its 'angle' field"},
     75 	{"rem",			""},
     76 	{"rem",			"style - number of style to use, 0-63"},
     77 	{"rem",			"nelnosmama - string to define lightstyle"},
     78 
     79 	//////////////////////////////
     80 	// light_strobe
     81 	//////////////////////////////
     82 	{"classname",	"light_strobe"},
     83 	{"size",		"-8 -8 -8 8 8 8"},
     84 	{"color",		"0 1 0"},
     85 
     86 	{"flag",		"START_ON"},
     87 	{"rem",			"style - number of style to use, 0-63"},
     88 	{"rem",			"nelnosmama - string to define lightstyle"},
     89 
     90 	//////////////////////////////
     91 	// effect_fog
     92 	//////////////////////////////
     93 	{"classname",	"effect_fog"},
     94 	{"color",		"0 1 0"},
     95 	{"rem",			"Duh, fog."},
     96 	{"rem",			""},
     97 
     98 	//////////////////////////////
     99 	// effect_snow
    100 	//////////////////////////////
    101 	{"classname",	"effect_snow"},
    102 	{"color",		"1 1 1"},
    103 	{"height",		"10"},
    104 	{"rem",			"Snow!"},
    105 	{"rem",			"Do you realize the entire street value of this mountain?"},
    106 	
    107 	//////////////////////////////
    108 	// effect_rain
    109 	//////////////////////////////
    110 	{"classname",	"effect_rain"},
    111 	{"height",		"10"},
    112 	{"color",		"0 0.5 0.8"},
    113 	{"rem",			"Rain!"},
    114 	{"rem",			"Yellow rain?"},
    115 
    116 	//////////////////////////////
    117 	// func_door
    118 	//////////////////////////////
    119 	{"classname",    "func_door"},
    120 	{"color",        "0 0.5 0.8"},
    121 	{"health",		 "0"},
    122 	{"speed",		 "100"},
    123 	{"wait",		 "3"},
    124 	{"lip",			 "8"},
    125 	{"dmg",			 "2"},
    126 	{"angle",		 "0 0 0"},
    127 	{"message",		 "you suck"},
    128 	{"targetname",	 ""},
    129 	{"flag",         "START_OPEN"},
    130 	{"flag",         "REVERSE"},
    131 	{"flag",         "DOOR_DONT_LINK"},
    132 	{"flag",         "TOGGLE"},
    133 	{"flag",		 "AUTO_OPEN"},
    134 	{"flag",		 "USE_TO_CLOSE"},
    135 
    136 	{"rem", "Doors that touch are linked together to operate as one."},
    137 	{"rem", "  "},
    138 	{"rem", "message - printed when the door is touched if it is a trigger door and it hasn't been fired yet"},
    139 	{"rem", "angle - determines the opening direction"},
    140 	{"rem", "targetname - if set, no touch field will be spawned and a remote button or trigger field activates the door."},
    141 	{"rem", "health - if set, door must be shot open"},
    142 	{"rem",	"speed - movement speed (100 default)"},
    143 	{"rem", "wait - time to wait before returning (3 default, -1 = never return)"},
    144 	{"rem",	"lip - amount of door visible remaining at end of move (8 default)"},
    145 	{"rem",	"dmg - damage to inflict when blocked (2 default)"},
    146 	{"rem", "sound_opening - name of the sound to play during opening, ie. doors/creek.wav"},
    147 	{"rem",	"sound_open_finish - name of the sound to play when opening completes, ie. doors/slam.wav"},
    148 	{"rem", "sound_closing - name of the sound to play when closing starts, ie. doors/creek.wav"},
    149 	{"rem",	"sound_close_finish - name of the sound to play when closing completes, ie. doors/slam.wav"},
    150 	{"rem", "  "},
    151 	{"rem", "Spawnflags:"},
    152     {"rem", "TOGGLE causes the door to wait in both the start and end states for a"},
    153     {"rem", "trigger event."},
    154     {"rem", "  "},
    155     {"rem", "START_OPEN causes the door to move to its destination when spawned, and"},
    156     {"rem", "operate in reverse.  It is used to temporarily or permanently close off an"},
    157     {"rem", "area when triggered (not usefull for touch or takedamage doors)."},
    158 	{"rem",	"AUTO_OPEN will spawn a trigger field around the door that can open it without"},
    159 	{"rem", "its being used."},
    160 	{"rem",	"DOOR_DONT_LINK will stop a door from being automatically linked to other doors"},
    161 	{"rem", "that it touches."},
    162 
    163 	//////////////////////////////
    164 	// func_plat
    165 	//////////////////////////////
    166 	{"classname",    "func_plat"},
    167 	{"color",        "0 0.5 0.8"},
    168 	{"flag",         "PLAT_START_UP"},
    169 	{"flag",         ""},
    170 	{"flag",         ""},
    171 	{"flag",         "PLAT_TOGGLE"},
    172 
    173 	{"rem", "Plats should be drawn in the up position to spawn correctly"},
    174 	{"rem",	" "},
    175 	{"rem", "message - printed when the door is touched if it is a trigger door and it hasn't been fired yet"},
    176 	{"rem", "angle - determines the opening direction"},
    177 	{"rem", "targetname - if set, no touch field will be spawned and a remote button or trigger field activates the door."},
    178 	{"rem", "health - if set, door must be shot open"},
    179 	{"rem",	"speed - movement speed (100 default)"},
    180 	{"rem", "wait - time to wait before returning (3 default, -1 = never return)"},
    181 	{"rem",	"height - number of units to move the platform up from spawn position.  If height is"},
    182 	{"rem", "not specified, then the movement distance is determined based on the vertical size of the platform."},
    183 	{"rem",	"dmg - damage to inflict when blocked (2 default)"},
    184 	{"rem", "sound_up - name of the sound to play when going up, ie. doors/creek.wav"},
    185 	{"rem",	"sound_top - name of the sound to play when plat hits top, ie. doors/slam.wav"},
    186 	{"rem", "sound_down - name of the sound to play when going down, ie. doors/creek.wav"},
    187 	{"rem",	"sound_bottom - name of the sound to play when plat hits bottom, ie. doors/slam.wav"},
    188 	{"rem",	" "},
    189 	{"rem", "Spawnflags:"},
    190 	{"rem",	"PLAT_START_UP starts the platform in the up (drawn) position"},
    191 	{"rem",	"(height added to drawn position)"},
    192     {"rem", "TOGGLE causes the platform to wait in both the start and end states for a"},
    193     {"rem", "trigger event."},
    194 
    195 	//////////////////////////////
    196 	// func_door_rotate
    197 	//////////////////////////////
    198 	{"classname",    "func_door_rotate"},
    199 	{"distance",	 "90.0"},
    200 	{"color",        "0 0.5 0.8"},
    201 	{"message",		 "they suck"},
    202 	{"flag",         "START_OPEN"},
    203 	{"flag",         "REVERSE"},
    204 	{"flag",         "DOOR_DONT_LINK"},
    205 	{"flag",         "TOGGLE"},
    206 	{"flag",         "X_AXIS"},
    207 	{"flag",         "Y_AXIS"},
    208 	{"flag",		 "AUTO_OPEN"},
    209 	{"flag",		 "USE_TO_CLOSE"},
    210 //	{"flag",         "X_AXIS"},
    211 //	{"flag",         "Y_AXIS"},
    212 
    213 	{"rem", "if two doors touch, they are assumed to be connected and operate as a unit."},
    214 	{"rem", "  "},
    215     {"rem", "TOGGLE causes the door to wait in both the start and end states for a"},
    216     {"rem", "trigger event."},
    217     {"rem", "  "},
    218     {"rem", "START_OPEN causes the door to move to its destination when spawned, and"},
    219     {"rem", "operate in reverse.  It is used to temporarily or permanently close off an"},
    220     {"rem", "area when triggered (not usefull for touch or takedamage doors)."},
    221     {"rem", "  "},
    222     {"rem", "Key doors are allways wait -1."},
    223     {"rem", "  "},
    224     {"rem", "You need to have an origin brush as part of this entity.  The center of"},
    225     {"rem", "that brush will be"},
    226     {"rem", "the point around which it is rotated. It will rotate around the Z axis by"},
    227     {"rem", "default.  You can"},
    228     {"rem", "check either the X_AXIS or Y_AXIS box to change that."},
    229     {"rem", "  "},
    230     {"rem", "'distance'	is how many degrees the door will be rotated."},
    231     {"rem", "'speed'	determines how fast the door moves; default value is 100."},
    232     {"rem", "  "},
    233     {"rem", "REVERSE will cause the door to rotate in the opposite direction."},
    234     {"rem", "  "},
    235     {"rem", "'message'	is printed when the door is touched if it is a trigger door and"},
    236     {"rem", "		it hasn't been fired yet."},
    237     {"rem", "'targetname'	if set, no touch field will be spawned and a remote button or"},
    238     {"rem", "			trigger field activates the door."},
    239     {"rem", "'health'	if set, door must be shot open"},
    240     {"rem", "'wait'	wait before returning (3 default, -1 = never return)"},
    241     {"rem", "'dmg'	damage to inflict when blocked (2 default)"},
    242 	{"rem", "sound_opening - name of the sound to play during opening, ie. doors/creek.wav"},
    243 	{"rem",	"sound_open_finish - name of the sound to play when opening completes, ie. doors/slam.wav"},
    244 	{"rem", "sound_closing - name of the sound to play when closing starts, ie. doors/creek.wav"},
    245 	{"rem",	"sound_close_finish - name of the sound to play when closing completes, ie. doors/slam.wav"},
    246 	{"rem",	"AUTO_OPEN will spawn a trigger field around the door that can open it without"},
    247 	{"rem", "its being used."},
    248 	{"rem",	"DOOR_DONT_LINK will stop a door from being automatically linked to other doors"},
    249 	{"rem", "that it touches."},
    250 
    251 	//////////////////////////////
    252 	// func_rotate
    253 	//////////////////////////////
    254 	{"classname",    "func_rotate"},
    255 	{"color",        "0.0 0.5 0.8"},
    256 	{"flag",         "START_ON"},
    257 	{"flag",         "REVERSE"},
    258 	{"flag",         "X_AXIS"},
    259 	{"flag",         "Y_AXIS"},
    260 
    261     {"rem", "You need to have an origin brush as part of this entity."},
    262 	{"rem", "The center of that brush will be"},
    263     {"rem", "the point around which it is rotated. It will rotate around the Z axis by"},
    264 	{"rem", "default.  You can"},
    265     {"rem", "check either the X_AXIS or Y_AXIS box to change that."},
    266     {"rem", "  "},
    267     {"rem", "'speed'	determines how fast it moves; default value is 100."},
    268     {"rem", "'dmg'	damage to inflict when blocked (2 default)"},
    269     {"rem", "  "},
    270     {"rem", "REVERSE will cause the it to rotate in the opposite direction."},
    271 
    272 	//////////////////////////////
    273 	// trigger_multiple
    274 	//////////////////////////////
    275 	{"classname",	"trigger_multiple"},
    276 	{"color",		"0.5 0.5 0.5"},
    277 	{"health",		"0"},
    278 	{"delay",		"0"},
    279 	{"wait",		"0.2"},
    280 	{"sound",		""},
    281 	{"targetname",	""},
    282 	{"target",		""},
    283 	{"killtarget",	""},
    284 	{"message",		""},
    285 	{"flag",		"NOTOUCH"},
    286 
    287 	{"rem",			"a repeatable trigger, targetted at the entity with the name"},
    288 	{"rem",			"targetname."},
    289 	{"rem",			""},
    290 	{"rem",			"health - if set the trigger must be killed to activate"},
    291 	{"rem",			"delay - time to wait after activation before firing target"},
    292 	{"rem",			"wait - time to wait between retriggering (default = 0.2 seconds)"},
    293 	{"rem",			""},
    294 	{"rem",			"Spawnflags:"},
    295 	{"rem",			"NOTOUCH - if set the trigger is only fired by other entities and"},
    296 	{"rem",			"not by touching."},
    297 
    298 	//////////////////////////////
    299 	// trigger_console
    300 	//////////////////////////////
    301 	{"classname",	"trigger_console"},
    302 	{"color",		"0.5 0.5 0.5"},
    303 	{"wait",		"0.2"},
    304 	{"command",		""},
    305 	{"rem",			""},
    306 	{"rem",			"command - the command to send to the console when triggered"},
    307 
    308 	//////////////////////////////
    309 	// trigger_once
    310 	//////////////////////////////
    311 	{"classname",	"trigger_once"},
    312 	{"color",		"0.5 0.5 0.5"},
    313 	{"angle",		 "0 0 0"},
    314 	{"health",		"0"},
    315 	{"delay",		"0"},
    316 	{"sound",		""},
    317 	{"targetname",	""},
    318 	{"killtarget",	""},
    319 	{"message",		""},
    320 	{"flag",		"NOTOUCH"},
    321 
    322 	{"rem",			"triggers once, then removes itself"},
    323 	{"rem",			" "},
    324 	{"rem",			"health - if set the trigger must be killed to activate"},
    325 	{"rem",			"delay - time to wait after activation before firing target"},
    326 	{"rem",			"wait - time to wait between retriggering (default = 0.2 seconds)"},
    327 	{"rem",			"sound - name of sound to play upon firing"},
    328 	{"rem",			" "},
    329 	{"rem",			"Spawnflags:"},
    330 	{"rem",			"NOTOUCH - if set the trigger is only fired by other entities and"},
    331 	{"rem",			"not by touching."},
    332 
    333 	//////////////////////////////
    334 	// trigger_relay
    335 	//////////////////////////////
    336 	{"classname",	"trigger_relay"},
    337 	{"color",		"0.5 0.5 0.5"},
    338 	{"delay",		"0"},
    339 	{"sound",		""},
    340 	{"targetname",	""},
    341 	{"killtarget",	""},
    342 	{"message",		""},
    343 
    344 	{"rem",			"sound - name of sound to play upon firing"},
    345 
    346 	//////////////////////////////
    347 	// trigger_teleport
    348 	//////////////////////////////
    349 	{"classname",	"trigger_teleport"},
    350 	{"color",		"0.5 0.5 0.5"},
    351 	{"sound",		""},
    352 	{"targetname",	""},
    353 	{"killtarget",	""},
    354 	{"message",		""},
    355 	{"flag",		"PLAYER_ONLY"},
    356 	{"flag",		"NO_FLASH"},
    357 	{"flag",		"NO_ANGLE_ADJUST"},
    358 	
    359 	{"rem",			"sound - name of sound to play upon firing, if not specified, then no"},
    360 	{"rem",			"sound will be played"},
    361 	{"rem",			"fog_value - sets fog_value to this when a teleporter is used"},
    362 	{"rem",			""},
    363 	{"rem",			"Spawnflags:"},
    364 	{"rem",			"PLAYER_ONLY - will only teleport players (NOT bots)"},
    365 	{"rem",			"NO_FLASH - no spawn fog will be generated when an object teleports"},
    366 	{"rem",			"NO_ANGLE_ADJUST - the object's angle will not be adjusted when it is"},
    367 	{"rem",			"teleported."},
    368 
    369 	//////////////////////////////
    370 	// info_teleport_destination
    371 	//////////////////////////////
    372 	{"classname",	"info_teleport_destination"},
    373 	{"color",		"0.5 0.5 0.5"},
    374 	{"size",		"-8.0 -8.0 -8.0 8.0 8.0 8.0"},
    375 
    376 	//////////////////////////////
    377 	// trigger_warp
    378 	//////////////////////////////
    379 	{"classname",	"trigger_warp"},
    380 	{"color",		"0.5 0.5 0.5"},
    381 	{"sound",		""},
    382 	{"targetname",	""},
    383 	{"killtarget",	""},
    384 	{"message",		""},
    385 	{"flag",		"PLAYER_ONLY"},
    386 	{"flag",		"NO_FLASH"},
    387 	{"flag",		"NO_ANGLE_ADJUST"},
    388 
    389 	{"rem",			"sound - name of sound to play upon firing, if not specified, then no"},
    390 	{"rem",			"sound will be played"},
    391 	{"rem",			"fog_value - sets fog_value to this when a warp is used"},
    392 	{"rem",			"speed - speed from this path point to the next"},
    393 	{"rem",			""},
    394 	{"rem",			"Spawnflags:"},
    395 	{"rem",			"PLAYER_ONLY - will only teleport players (NOT bots)"},
    396 	{"rem",			"NO_FLASH - no spawn fog will be generated when an object teleports"},
    397 	{"rem",			"NO_ANGLE_ADJUST - the object's angle will not be adjusted when it is"},
    398 	{"rem",			"teleported."},
    399 
    400 	//////////////////////////////
    401 	//	tele_cylinder
    402 	//////////////////////////////
    403 
    404 	{"classname",	"warp_cylinder"},
    405 	{"color",		"0.5 0.5 0.5"},
    406 	{"color",        "1 0 1"},
    407 	{"size",         "-16 -16 -24 16 16 32"},
    408 	{"rem",          "Location player starts in deathmatch"},
    409 
    410 	//////////////////////////////
    411 	// info_warp_destination
    412 	//////////////////////////////
    413 	{"classname",	"info_warp_destination"},
    414 	{"color",		"0.5 0.5 0.5"},
    415 	{"size",		"-8.0 -8.0 -8.0 8.0 8.0 8.0"},
    416 
    417 	{"rem",			"target - next target to warp to"},
    418 	{"rem",			"speed - speed from this path point to the next"},
    419 
    420 	//////////////////////////////
    421 	// trigger_onlyregistered
    422 	//////////////////////////////
    423 	{"classname",	"trigger_onlyregistered"},
    424 	{"color",		"0.5 0.5 0.5"},
    425 	{"sound",		""},
    426 	{"wait",		"2.0"},
    427 	{"message",		""},
    428 
    429 	{"rem",			"sound - name of sound to play upon firing"},
    430 	{"rem",			"wait - the number of seconds between triggerings and"},
    431 	{"rem",			"the length of time the message will be displayed"},
    432 
    433 	//////////////////////////////
    434 	// trigger_hurt
    435 	//////////////////////////////
    436 	{"classname",	"trigger_hurt"},
    437 	{"color",		"0.5 0.5 0.5"},
    438 	{"sound",		""},
    439 	{"dmg",			"2.0"},
    440 	{"wait",		"2.0"},
    441 	{"message",		""},
    442 
    443 	{"rem",			"sound - name of sound to play upon firing"},
    444 	{"rem",			"dmg - the amount of damage the trigger will do to an object"},
    445 	{"rem",			"wait - the number of seconds between triggerings and"},
    446 
    447 	//////////////////////////////
    448 	// trigger_push
    449 	//////////////////////////////
    450 	{"classname",	"trigger_push"},
    451 	{"color",		"0.5 0.5 0.5"},
    452 	{"sound",		""},
    453 	{"message",		""},
    454 	{"speed",		"1000.0"},
    455 	{"flag",		"PUSH_ONCE"},
    456 	{"rem",			"speed - the velocity to give the object"},
    457 	{"rem",			"speed - the velocity to give the object"},
    458 
    459 	//////////////////////////////
    460 	// trigger_counter
    461 	//////////////////////////////
    462 	{"classname",	"trigger_counter"},
    463 	{"color",		"0.5 0.5 0.5"},
    464 	{"sound",		""},
    465 	{"flag",		"NO_MESSAGE"},
    466 
    467 	{"rem",			"sound - name of sound to play upon firing"},
    468 	{"rem",			"message - message to display upon last triggering"},
    469 	{"rem",			"when NO_MESSAGE is set, no messages are displayed upon triggering"},
    470 
    471 	//////////////////////////////
    472 	// trigger_changelevel
    473 	//////////////////////////////
    474 	{"classname",	"trigger_changelevel"},
    475 	{"color",		"0.5 0.5 0.5"},
    476 	{"sound",		""},
    477 	{"map",			""},
    478 	{"flag",		"NO_INTERMISSION"},
    479 
    480 	{"rem",			"sound - name of sound to play upon firing"},
    481 	{"rem",			"message - message to display upon last triggering"},
    482 
    483 	//////////////////////////////
    484 	// func_wall
    485 	//////////////////////////////
    486 	{"classname",	"func_wall"},
    487 	{"color",		"0 0.5 0.8"},
    488 	{"health",		"0"},
    489 	{"message",		""},
    490 	{"targetname",	""},
    491 	{"target",		""},
    492 	{"killtarget",	""},
    493 
    494 	{"rem",			"targetname - the name of this wall if it is a target"},
    495 	{"rem",			"target - the next entity to trigger when this one is triggered"},
    496 	{"rem",			"killtarget - the targetname of the entity to remove when triggered"},
    497 
    498 	//////////////////////////////
    499 	// func_button
    500 	//////////////////////////////
    501 	{"classname",	"func_button"},
    502 	{"color",		"0 0.5 0.8"},
    503 	{"health",		"0"},
    504 	{"targetname",	""},
    505 	{"target",		""},
    506 	{"killtarget",	""},
    507 	{"speed",		""},
    508 	{"wait",		""},
    509 	{"angle",		""},
    510 	{"lip",			""},
    511 	{"flag",		"PUSH_TOUCH"},
    512 
    513 	{"rem",			"targetname - the name of this wall if it is a target"},
    514 	{"rem",			"target - the next entity to trigger when this one is triggered"},
    515 	{"rem",			"killtarget - the targetname of the entity to remove when triggered"},
    516 	{"rem",			"sound_use - the sound to play when the button is used (defaults to none)"},
    517 	{"rem",			"sound_return - the sound to play when the button returns (defaults to none)"},
    518 	{"rem",			"speed - rate of travel when button moves"},
    519 	{"rem",			"wait - seconds to wait befor returning to useable (-1 = never return)"},
    520 	{"rem",			"angle - direction of travel"},
    521 	{"rem",			"lip - amount of button left sticking out after being pushed (default 4)"},
    522 	{"rem",			"health - when > 0 the button must be killed in order to fire"},
    523 	{"rem",			"PUSH_TOUCH will allow the button to be pushed by running into it, Quake style"},
    524 
    525 	//////////////////////////////
    526 	// func_multi_button
    527 	//////////////////////////////
    528 	{"classname",	"func_multi_button"},
    529 	{"color",		"0 0.5 0.8"},
    530 	{"health",		"0"},
    531 	{"targetname",	""},
    532 	{"target",		""},
    533 	{"killtarget",	""},
    534 	{"speed",		""},
    535 	{"wait",		""},
    536 	{"angle",		""},
    537 	{"lip",			""},
    538 	{"flag",		"PUSH_TOUCH"},
    539 	{"flag",		"CYCLE"},
    540 
    541 	{"rem",			"targetname - the name of this wall if it is a target"},
    542 	{"rem",			"target - the next entity to trigger when this one is triggered"},
    543 	{"rem",			"killtarget - the targetname of the entity to remove when triggered"},
    544 	{"rem",			"sound_use - the sound to play when the button is used (defaults to none)"},
    545 	{"rem",			"sound_return - the sound to play when the button returns (defaults to none)"},
    546 	{"rem",			"speed - rate of travel when button moves"},
    547 	{"rem",			"wait - seconds to wait befor returning to useable (-1 = never return)"},
    548 	{"rem",			"angle - direction of travel"},
    549 	{"rem",			"health - when > 0 the button must be killed in order to fire"},
    550 	{"rem",			"distance - distance button travels on each push"},
    551 	{"rem",			"count - number of positions this button has"},
    552 	{"rem",			"PUSH_TOUCH will allow the button to be pushed by running into it, Quake style"},
    553 	{"rem",			"CYCLE - button will not return to top from last position, but will go back through all positions"},
    554 
    555 	//////////////////////////////
    556 	// func_train
    557 	//////////////////////////////
    558 	{"classname",    "func_train"},
    559 	{"distance",	 "90.0"},
    560 	{"color",        "0 0.5 0.8"},
    561 	{"rem",			"targetname - the name of this train"},
    562 	{"rem",			"target - the path_corner that the train will spawn at"},
    563 	{"rem",			"killtarget - the targetname of the entity to remove when triggered"},
    564 
    565 	//////////////////////////////
    566 	// func_train
    567 	//////////////////////////////
    568 	{"classname",    "func_train2"},
    569 	{"distance",	 "90.0"},
    570 	{"color",        "0 0.5 0.8"},
    571 	{"rem",			"targetname - the name of this train"},
    572 	{"rem",			"target - the path_corner that the train will spawn at"},
    573 	{"rem",			"killtarget - the targetname of the entity to remove when triggered"},
    574 	
    575 	//////////////////////////////
    576 	// path_corner_train
    577 	//////////////////////////////
    578 	{"classname",    "path_corner_train"},
    579 	{"distance",	 "90.0"},
    580 	{"color",        "0.5 0.3 0"},
    581 	{"size",		 "-8 -8 -8 8 8 8"},
    582 	{"flag",		"X_AXIS"},
    583 	{"flag",		"Y_AXIS"},
    584 	{"flag",		"Z_AXIS"},
    585 	{"flag",		"TRIGWAIT"},
    586 	{"rem",			"killtarget - the targetname of the entity to remove when this"},
    587 	{"rem",			"path_corner is reached"},
    588 	{"rem",			"speed - rate of travel from this path_corner to the next"},
    589 	{"rem",			"wait - seconds to wait after the actions on this path_corner are complete"},
    590 	{"rem",			"sound - sound to play at this path corner"},
    591 	{"rem",			"x_distance - distance in degrees to rotate around x axis"},
    592 	{"rem",			"y_distance - distance in degrees to rotate around y axis"},
    593 	{"rem",			"z_distance - distance in degrees to rotate around z axis"},
    594 	{"rem",			"x_speed - speed to rotate along x axis in degrees per second"},
    595 	{"rem",			"y_speed - speed to rotate along y axis in degrees per second"},
    596 	{"rem",			"z_speed - speed to rotate along z axis in degrees per second"},
    597 	{"rem",			"health - if health is set, the train will wait at this path corner"},
    598 	{"rem",			"until it is killed."},
    599 	{"rem",			"Spawnflags:"},
    600 	{"rem",			"X_AXIS - when checked train will rotate continually around "},
    601 	{"rem",			"x axis at x_speed degrees per second"},
    602 	{"rem",			"Y_AXIS - when checked train will rotate continually around "},
    603 	{"rem",			"y axis at y_speed degrees per second"},
    604 	{"rem",			"Z_AXIS - when checked train will rotate continually around "},
    605 	{"rem",			"z axis at z_speed degrees per second"},
    606 	{"rem",			"TRIGWAIT - wait here until triggered"},
    607 
    608 	//////////////////////////////
    609 	// info_player_start
    610 	//////////////////////////////
    611 	{"classname",    "info_player_start"},
    612 	{"color",        "1 0 0"},
    613 	{"size",         "-16 -16 -24 16 16 32"},
    614 	{"rem",          "Location player starts in single play."},
    615 
    616 	//////////////////////////////
    617 	// info_mikiko_start
    618 	//////////////////////////////
    619 	{"classname",    "info_mikiko_start"},
    620 	{"color",        "1 0 0"},
    621 	{"size",         "-16 -16 -24 16 16 32"},
    622 	{"rem",          "Location Mikiko starts in single play."},
    623 
    624 	//////////////////////////////
    625 	// info_superfly_start
    626 	//////////////////////////////
    627 	{"classname",    "info_superfly_start"},
    628 	{"color",        "1 0 0"},
    629 	{"size",         "-16 -16 -24 16 16 32"},
    630 	{"rem",          "Location Superfly starts in single play."},
    631 
    632 	//////////////////////////////
    633 	// info_null
    634 	//////////////////////////////
    635 	{"classname",    "info_null"},
    636 	{"color",        "1 0 0"},
    637 	{"size",         "-8 -8 -8 8 8 8"},
    638 	{"rem",          "You can point anything to this as a target"},
    639 
    640 	//////////////////////////////
    641 	// info_player_deathmatch
    642 	//////////////////////////////
    643 	{"classname",    "info_player_deathmatch"},
    644 	{"color",        "1 0 1"},
    645 	{"size",         "-16 -16 -24 16 16 32"},
    646 	{"rem",          "Location player starts in deathmatch"},
    647 
    648 	//////////////////////////////
    649 	// info_player_coop
    650 	//////////////////////////////
    651 	{"classname",    "info_player_coop"},
    652 	{"color",        "1 0 1"},
    653 	{"size",         "-16 -16 -24 16 16 32"},
    654 	{"rem",          "Location player starts in coop"},
    655 
    656 	//////////////////////////////
    657 	// func_door_secret
    658 	//////////////////////////////
    659 	{"classname",    "func_door_secret"},
    660 	{"color",        "0 0.5 0.8"},
    661 	{"health",		 "0"},
    662 	{"speed",		 "100"},
    663 	{"wait",		 "3"},
    664 	{"lip",			 "8"},
    665 	{"dmg",			 "2"},
    666 	{"angle",		 "0 0 0"},
    667 	{"message",		 "we all suck"},
    668 	{"targetname",	 ""},
    669 	{"flag",         "OPEN_ONCE"},
    670 	{"flag",         "1ST_LEFT"},
    671 	{"flag",         "1ST_DOWN"},
    672 	{"flag",         "NO_SHOOT"},
    673 	{"flag",		 "YES_SHOOT"},
    674 
    675 	{"rem", "message - printed when the door is touched if it is a trigger door and it hasn't been fired yet"},
    676 	{"rem", "angle - determines the opening direction"},
    677 	{"rem", "targetname - if set, no touch field will be spawned and a remote button or trigger field activates the door."},
    678 	{"rem", "health - if set, door must be shot open"},
    679 	{"rem",	"speed - movement speed (100 default)"},
    680 	{"rem", "wait - time to wait before returning (3 default, -1 = never return)"},
    681 	{"rem",	"dmg - damage to inflict when blocked (2 default)"},
    682 	{"rem", "sound_opening - name of the sound to play during opening, ie. doors/creek.wav"},
    683 	{"rem",	"sound_open_finish - name of the sound to play when opening completes, ie. doors/slam.wav"},
    684 	{"rem", "sound_closing - name of the sound to play when closing starts, ie. doors/creek.wav"},
    685 	{"rem",	"sound_close_finish - name of the sound to play when closing completes, ie. doors/slam.wav"},
    686 	{"rem", "  "},
    687 	{"rem", "Spawnflags:"},
    688     {"rem", "SECRET_OPEN_ONCE - door stays open (imagine that...)"},
    689     {"rem", "SECRET_1ST_LEFT - first move is left of move direction"},
    690     {"rem", "SECRET_1ST_DOWN - first move is down from move direction"},
    691     {"rem", "SECRET_NO_SHOOT - only opened by a trigger"},
    692     {"rem", "SECRET_YES_SHOOT - shootable even if targeted"},
    693 
    694 	//////////////////////////////
    695 	// func_wall_explode
    696 	//////////////////////////////
    697 	{"classname",	"func_wall_explode"},
    698 	{"color",		"0 0.5 0.8"},
    699 	{"health",		"0"},
    700 	{"message",		""},
    701 	{"targetname",	""},
    702 	{"target",		""},
    703 	{"killtarget",	""},
    704 	{"model_1",		""},
    705 	{"model_2",		""},
    706 	{"model_3",		""},
    707 	{"flag",        "ROCK_CHUNKS"},
    708 	{"flag",        "WOOD_CHUNKS"},
    709 	{"flag",        "EXTRA_CHUNKS"},
    710 	{"flag",        "EXTRA_VELOCITY"},
    711 	{"flag",		"NO_CHUNKS"},
    712 	{"flag",		"NO_SOUND"},
    713 
    714 	{"rem",			"targetname - the name of this wall if it is a target"},
    715 	{"rem",			"target - the next entity to trigger when this one is triggered"},
    716 	{"rem",			"killtarget - the targetname of the entity to remove when triggered"},
    717 	{"rem",			"health - ummm... this would be the health of the wall, if it is 0 then"},
    718 	{"rem",			"the wall can only be exploded by targetting it"},
    719 	{"rem",			"message - this prints out when wall go boom"},
    720 	{"rem",			"model_1 - the specific pathname of the first model to throw when killed"},
    721 	{"rem",			"if model_1 is set then spawnflags ROCK_CHUNKS and WOOD_CHUNKS are overridden"},
    722 	{"rem",			"model_2 - the pathname of the second model"},
    723 	{"rem",			"model_3 - I wouldn't bet on it, but this is probably the name of the 3rd model"},
    724 	{"rem",			" "},
    725 	{"rem", "Spawnflags:"},
    726     {"rem", "ROCK_CHUNKS - makes rock chunk wall-gibs fly"},
    727 	{"rem",	"WOOD_CHUNKS - makes wood chunk wall-gibs fly"},
    728 	{"rem",	"EXTRA_CHUNKS - makes up to 3 chunks per explosion, instead of just one"},
    729 	{"rem",	"EXTRA_VELOCITY - gives chunks a higher velocity (good for underwater)"},
    730 	{"rem", "NO_CHUNKS - um, no chunks"},
    731 	{"rem", "NO_SOUND - no sound, use when lots of func walls are activated simultaneously to keep the"},
    732 	{"rem", "Quake engine from choking with too many sounds at once."},
    733 
    734 	//////////////////////////////
    735 	// func_anim
    736 	//////////////////////////////
    737 	{"classname",	"func_anim"},
    738 	{"color",		"0.0 1.0 0.1"},
    739 	{"flag",        "VISIBLE"},
    740 	{"rem", "Spawnflags:"},
    741     {"rem", "VISIBLE - start visible"},
    742 
    743 	//////////////////////////////
    744 	// func_floater
    745 	//////////////////////////////
    746 	{"classname",	"func_floater"},
    747 	{"color",		"0 0.5 0.8"},
    748 	{"size",		"-16 -16 -16 16 16 16"},
    749 	{"model",		""},
    750 
    751 	{"rem",			"model - pathname to model (ie. models/floater.mdl)"},
    752 	{"rem",			"velocity_cap - maximum up/down velocity"},
    753 	{"rem",			"dissipate - how fast velocity degrades to velocity_cap (default = 0.99)"},
    754 	{"rem",			"object_mass - mass of object (mass / volume = density)"},
    755 	{"rem",			"object_volume - volume of object (mass / volume = density)"},
    756 
    757 	//////////////////////////////
    758 	// func_debris
    759 	//////////////////////////////
    760 
    761 	{"classname",	"func_debris"},
    762 	{"color",		"0 0.5 0.8"},
    763 	{"target",		""},
    764 	{"flag",		"GO_TO_ACTIVATOR"},
    765 	{"flag",		"NO_ROTATE"},
    766 	{"flag",		"MOMENTUM_DAMAGE"},
    767 	{"flag",		"NO_ROTATION_ADJUST"},
    768 	{"flag",		"DROP_ONLY"},
    769 	{"flag",		"QUARTER_SIZE"},
    770 
    771 	{"rem",			"target - debris will fly towards targeted entity"},
    772 	{"rem",			"fly_sound - sound to play while the entity flies through the air"},
    773 	{"rem",			"hit_sound - sound to play when the entity hits something"},
    774 	{"rem",			"damage - amount of damage to do when hitting another object"},
    775 	{"rem",			"if MOMENTUM_DAMAGE is selected, then damage will be based on the"},
    776 	{"rem",			"speed of the debris when it impacts the object and damage becomes"},
    777 	{"rem",			"the divisor, so if speed at impact = 300 and damge = 3, then damage done"},
    778 	{"rem",			"while 300 / 3 = 100 points.  If damage is not set, then momentum damage"},
    779 	{"rem",			"will be the default with a damage divisor of 3."},
    780 	{"rem",			"Spawnflags:"},
    781 	{"rem",			"GO_TO_ACTIVATOR - debris will fly at whoever activated it"},
    782 	{"rem",			"NO_ROTATE - don't give this debris any random rotation"},
    783 	{"rem",			"MOMENTUM_DAMAGE - damage based on velocity"},
    784 	{"rem",			"DROP_ONLY - no upward velocity, debris just falls"},
    785 	{"rem",			"QUARTER_SIZE - shrink bounding box by 1/4"},
    786 	{"rem",			"Notes:"},
    787 	{"rem",			"A func debris entity must have an origin brush contained in it,"},
    788 	{"rem",			"otherwise it will rotate around the center of the level, not"},
    789 	{"rem",			"its own center.  That is bad."},
    790 
    791 	//////////////////////////////
    792 	// func_debris_visible
    793 	//////////////////////////////
    794 
    795 	{"classname",	"func_debris_visible"},
    796 	{"color",		"0 0.5 0.8"},
    797 	{"target",		""},
    798 	{"flag",		"GO_TO_ACTIVATOR"},
    799 	{"flag",		"NO_ROTATE"},
    800 	{"flag",		"MOMENTUM_DAMAGE"},
    801 	{"flag",		"NO_ROTATION_ADJUST"},
    802 	{"flag",		"DROP_ONLY"},
    803 	{"flag",		"QUARTER_SIZE"},
    804 
    805 	{"rem",			"SAME AS FUNC_DEBRIS EXCEPT DEBRIS IS VISIBLE BEFORE TARGETTING"},
    806 	{"rem",			"target - debris will fly towards targeted entity"},
    807 	{"rem",			"fly_sound - sound to play while the entity flies through the air"},
    808 	{"rem",			"hit_sound - sound to play when the entity hits something"},
    809 	{"rem",			"damage - amount of damage to do when hitting another object"},
    810 	{"rem",			"if MOMENTUM_DAMAGE is selected, then damage will be based on the"},
    811 	{"rem",			"speed of the debris when it impacts the object and damage becomes"},
    812 	{"rem",			"the divisor, so if speed at impact = 300 and damge = 3, then damage done"},
    813 	{"rem",			"while 300 / 3 = 100 points.  If damage is not set, then momentum damage"},
    814 	{"rem",			"will be the default with a damage divisor of 3."},
    815 	{"rem",			"Spawnflags:"},
    816 	{"rem",			"GO_TO_ACTIVATOR - debris will fly at whoever activated it"},
    817 	{"rem",			"NO_ROTATE - don't give this debris any random rotation"},
    818 	{"rem",			"MOMENTUM_DAMAGE - damage based on velocity"},
    819 	{"rem",			"DROP_ONLY - no upward velocity, debris just falls"},
    820 	{"rem",			"QUARTER_SIZE - shrink bounding box by 1/4"},
    821 	{"rem",			"Notes:"},
    822 	{"rem",			"A func debris entity must have an origin brush contained in it,"},
    823 	{"rem",			"otherwise it will rotate around the center of the level, not"},
    824 	{"rem",			"its own center.  That is bad."},
    825 
    826 	//////////////////////////////
    827 	// func_particlefield
    828 	//////////////////////////////
    829 	{"classname",	"func_particlefield"},
    830 	{"color",		"0 0.5 0.8"},
    831 	{"flag",		"USE_COUNT"},
    832 	{"rem",			"count - number of times to trigger before activated"},
    833 	{"rem",			"color - color of particles use:"},
    834 	{"rem",			"black, blue, green, cyan, red, "},
    835 	{"rem",			"purple, brown, ltgray, dkgray, "},
    836 	{"rem",			"ltblue, ltgreen, ltcyan, ltpurple,"},
    837 	{"rem",			"yellow, white"},
    838 
    839 	//////////////////////////////
    840 	// func_monitor
    841 	//////////////////////////////
    842 	{"classname",	"func_monitor"},
    843 	{"color",		"0 0.5 0.8"},
    844 	{"rem",			"target - the info_camera that the view will be from"},
    845 	{"rem",			"fov - the field of view when looking through this camera"},
    846 
    847 	//////////////////////////////
    848 	// info_camera
    849 	//////////////////////////////
    850 	{"classname",    "info_camera"},
    851 	{"color",        "1 0 0"},
    852 	{"size",         "-8 -8 -8 8 8 8"},
    853 
    854 	//////////////////////////////
    855 	// misc_lavaball_drop
    856 	//////////////////////////////
    857 	{"classname",	"misc_lavaball_drop"},
    858 	{"size",		"-8 -8 -8 8 8 8"},
    859 	{"color",		"1.0 0.5 0.0"},
    860 
    861 	//////////////////////////////
    862 	// misc_lavaball_toss
    863 	//////////////////////////////
    864 	{"classname",	"misc_lavaball_toss"},
    865 	{"size",		"-8 -8 -8 8 8 8"},
    866 	{"color",		"1.0 0.5 0.0"},
    867 
    868 	{"rem",			"target = can be triggered"},
    869 	{"rem",			"mintime = minimum time between tosses (default = 4.0 seconds)"},
    870 	{"rem",			"maxtime = maximum time between tosses (default = 12.0 seconds)"},
    871 	{"rem",			"damage = damage to do when an hitting something"},
    872 	{"rem",			"upmin = minimum upward velocity (default = 200)"},
    873 	{"rem",			"upmax = maximum upward velocity (default = 800)"},
    874 
    875 	//////////////////////////////
    876 	// sound_ambient
    877 	//////////////////////////////
    878 	
    879 	{"classname",	"sound_ambient"},
    880 	{"size",		"-8 -8 -8 8 8 8"},
    881 	{"color",		"1 0 1"},
    882 
    883 	{"rem",			"sound - path to ambient sound (ie. ambience/sound.wav."},
    884 	{"rem",			"fade - distance multiplier to make sounds fade in further away from source."},
    885 	{"rem",			"1.0 is normal, 2.0 is twice as far."},
    886 	{"rem",			"volume - 0 through 255.  255 is max."},
    887 
    888 	//////////////////////////////
    889 	// sound_ambient
    890 	//////////////////////////////
    891 	
    892 	{"classname",	"trigger_fog_value"},
    893 	{"color",		"0 1 0"},
    894 
    895 	{"rem",			"fog_value - the value for fog density 0 - 4.  0 is off, ie. r_drawfog 0"},
    896 
    897 	//////////////////////////////
    898 	// node_node
    899 	//////////////////////////////
    900 	
    901 	{"classname",	"node_node"},
    902 	{"color",		"0.5 0.5 1"},
    903 	{"size",		"-8 -8 -8 8 8 8"},
    904 	{"flag",		"NODE_DOOR"},
    905 
    906 	{"rem",			"number - the number of this node"},
    907 	{"rem",			"link - the number of the node linked to (can be up to four link fields)"},
    908 
    909 	//////////////////////////////////////////////////////////////////////////////////////////////////////
    910 	//
    911 	// Monsters
    912 	// 
    913 	//////////////////////////////////////////////////////////////////////////////////////////////////////
    914 
    915 	////////////////////////////////////////
    916 	// Episode 1 monsters
    917 	////////////////////////////////////////
    918 
    919     {"classname",    "monster_froginator"},
    920 	{"color",        "1.0 0.0 0.0"},
    921     {"size",         "-16 -16 -24 16 16 32"},
    922 	{"flag",		 "WANDER"},
    923 	{"rem",          "A light and refreshing monster."},
    924 	{"rem",          "One day I will read the spec and know what this"},
    925 	{"rem",          "monster does."},
    926 	{"rem",          "radius - wander radius"},
    927 	{"rem",			 "Spawnflags:"},
    928 	{"rem",			 "WANDER - monster will wander around"},
    929 
    930     {"classname",    "monster_crox"},
    931 	{"color",        "1.0 0.0 0.0"},
    932     {"size",         "-16 -16 -24 16 16 32"},
    933 	{"flag",		 "WANDER"},
    934 	{"rem",          "A realistic representation of your mother"},
    935 	{"rem",          "radius - wander radius"},
    936 	{"rem",			 "Spawnflags:"},
    937 	{"rem",			 "WANDER - monster will wander around"},
    938 
    939     {"classname",    "monster_slaughterskeet"},
    940 	{"color",        "1.0 0.0 0.0"},
    941     {"size",         "-16 -16 -24 16 16 32"},
    942 	{"flag",		 "WANDER"},
    943 	{"rem",          "A big thing with a big beak."},
    944 	{"rem",          "radius - wander radius"},
    945 	{"rem",			 "Spawnflags:"},
    946 	{"rem",			 "WANDER - monster will wander around"},
    947 
    948     {"classname",    "monster_thunderskeet"},
    949 	{"color",        "1.0 0.0 0.0"},
    950     {"size",         "-16 -16 -24 16 16 32"},
    951 	{"flag",		 "WANDER"},
    952 	{"rem",          "A big thing with a big beak."},
    953 	{"rem",          "radius - wander radius"},
    954 	{"rem",			 "Spawnflags:"},
    955 	{"rem",			 "WANDER - monster will wander around"},
    956 
    957     {"classname",    "monster_venomvermin"},
    958 	{"color",        "1.0 0.0 0.0"},
    959     {"size",         "-16 -16 -24 16 16 32"},
    960 	{"flag",		 "WANDER"},
    961 	{"rem",          "A big thing with a big beak."},
    962 	{"rem",          "radius - wander radius"},
    963 	{"rem",			 "Spawnflags:"},
    964 	{"rem",			 "WANDER - monster will wander around"},
    965 
    966     {"classname",    "monster_tentaclor"},
    967 	{"color",        "1.0 0.0 0.0"},
    968     {"size",         "-16 -16 -24 16 16 32"},
    969 	{"flag",		 "WANDER"},
    970 	{"rem",          "A big thing with a big beak."},
    971 	{"rem",          "radius - wander radius"},
    972 	{"rem",			 "Spawnflags:"},
    973 	{"rem",			 "WANDER - monster will wander around"},
    974 
    975     {"classname",    "monster_sludgeminion"},
    976 	{"color",        "1.0 0.0 0.0"},
    977     {"size",         "-16 -16 -24 16 16 32"},
    978 	{"flag",		 "WANDER"},
    979 	{"flag",		 "PATHFOLLOW"},
    980 	{"rem",          "A big thing with a big beak."},
    981 	{"rem",          "radius - wander radius"},
    982 	{"rem",			 "Spawnflags:"},
    983 	{"rem",			 "WANDER - monster will wander around"},
    984 
    985     {"classname",    "monster_prisoner"},
    986 	{"color",        "1.0 0.0 0.0"},
    987     {"size",         "-16 -16 -24 16 16 32"},
    988 	{"flag",		 "WANDER"},
    989 	{"rem",          "gib him."},
    990 	{"rem",          "radius - wander radius"},
    991 	{"rem",			 "Spawnflags:"},
    992 	{"rem",			 "WANDER - monster will wander around"},
    993 
    994     {"classname",    "func_prisoner_respawn"},
    995 	{"color",        "1.0 0.0 0.0"},
    996     {"size",         "-16 -16 -24 16 16 32"},
    997 	{"rem",			 "time - seconds until a new prisoner is spawned"},
    998 
    999     {"classname",    "monster_inmater"},
   1000 	{"color",        "1.0 0.0 0.0"},
   1001     {"size",         "-32 -32 -24 32 32 64"},
   1002 	{"flag",		 "WANDER"},
   1003 	{"flag",		 "PATHFOLLOW"},
   1004 	{"rem",          "A big thing with a big beak."},
   1005 	{"rem",          "radius - wander radius"},
   1006 	{"rem",			 "Spawnflags:"},
   1007 	{"rem",			 "WANDER - monster will wander around"},
   1008 	{"rem",			 "PATH_FOLLOW - begin following a monster path"},
   1009 
   1010     {"classname",    "monster_squid"},
   1011 	{"color",        "1.0 0.0 0.0"},
   1012     {"size",         "-16 -16 -24 16 16 32"},
   1013 	{"flag",		 "WANDER"},
   1014 	{"rem",          "A big thing with a big beak."},
   1015 	{"rem",          "radius - wander radius"},
   1016 	{"rem",			 "Spawnflags:"},
   1017 	{"rem",			 "WANDER - monster will wander around"},
   1018 
   1019     {"classname",    "monster_trackattack"},
   1020 	{"color",        "1.0 0.0 0.0"},
   1021     {"size",         "-16 -16 -24 16 16 32"},
   1022 	{"rem",          "Track turrets need to have a target"},
   1023 	{"rem",          "which is the path_corner_track at which"},
   1024 	{"rem",          "they will start."},
   1025 	{"rem",          "Spawn about 16 units below the track to"},
   1026 
   1027     {"classname",    "monster_trackdaddy"},
   1028 	{"color",        "1.0 0.0 0.0"},
   1029     {"size",         "-16 -16 -24 16 16 32"},
   1030 	{"rem",          "Track turrets need to have a target"},
   1031 	{"rem",          "which is the path_corner_track at which"},
   1032 	{"rem",          "they will start."},
   1033 	
   1034     {"classname",    "monster_lasergat"},
   1035 	{"color",        "1.0 0.0 0.0"},
   1036     {"size",         "-16 -16 -24 16 16 32"},
   1037 	{"rem",          "Track turrets need to have a target"},
   1038 	{"rem",          "which is the path_corner_track at which"},
   1039 	{"rem",          "they will start."},
   1040 
   1041     {"classname",    "monster_psyclaw"},
   1042 	{"color",        "1.0 0.0 0.0"},
   1043     {"size",         "-16 -16 -24 16 16 32"},
   1044 	{"flag",		 "WANDER"},
   1045 	{"rem",          "A big dog without a head and a"},
   1046 	{"rem",			 "brain for a back.  Cool, eh?"},
   1047 	{"rem",			 "Spawnflags:"},
   1048 	{"rem",			 "WANDER - monster will wander around"},
   1049 
   1050     {"classname",    "monster_labworker"},
   1051 	{"color",        "1.0 0.0 0.0"},
   1052     {"size",         "-16 -16 -24 16 16 32"},
   1053 	{"flag",		 "WANDER"},
   1054 	{"rem",          "Lab worker.  Your momma."},
   1055 	{"rem",			 "Spawnflags:"},
   1056 	{"rem",			 "WANDER - monster will wander around"},
   1057 
   1058     {"classname",    "monster_battleboar"},
   1059 	{"color",        "1.0 0.0 0.0"},
   1060     {"size",         "-16 -16 -24 16 16 32"},
   1061 	{"flag",		 "WANDER"},
   1062 	{"rem",          "A motorized, cybernetic pig, of course."},
   1063 	{"rem",			 "Spawnflags:"},
   1064 	{"rem",			 "WANDER - monster will wander around"},
   1065 
   1066 	//////////////////////////////
   1067 	//	path_corner_track
   1068 	//	
   1069 	//	path corners for tracked turrets only!
   1070 	//////////////////////////////
   1071 	
   1072 	{"classname",    "path_corner_track"},
   1073 	{"distance",	 "90.0"},
   1074 	{"color",        "0.5 0.3 0"},
   1075 	{"size",		 "-8 -8 -8 8 8 8"},
   1076 
   1077 	////////////////////////////////////////
   1078 	// Episode 2 monsters
   1079 	////////////////////////////////////////
   1080 
   1081     {"classname",    "monster_skeleton"},
   1082 	{"color",        "1.0 0.0 0.0"},
   1083     {"size",         "-16 -16 -24 16 16 32"},
   1084 	{"flag",		 "WANDER"},
   1085 	{"rem",          "Where's he at?  Ahh!  He's in me!"},
   1086 	{"rem",			 "Spawnflags:"},
   1087 	{"rem",			 "WANDER - monster will wander around"},
   1088 
   1089     {"classname",    "monster_spider"},
   1090 	{"color",        "1.0 0.0 0.0"},
   1091     {"size",         "-32 -32 -24 32 32 32"},
   1092 	{"flag",		 "WANDER"},
   1093 	{"rem",          "Dumbass."},
   1094 	{"rem",			 "Spawnflags:"},
   1095 	{"rem",			 "WANDER - monster will wander around"},
   1096 
   1097     {"classname",    "monster_tarantula"},
   1098 	{"color",        "1.0 0.0 0.0"},
   1099     {"size",         "-16 -16 -24 16 16 32"},
   1100 	{"flag",		 "WANDER"},
   1101 	{"rem",          "Dumbass."},
   1102 	{"rem",			 "Spawnflags:"},
   1103 	{"rem",			 "WANDER - monster will wander around"},
   1104 
   1105     {"classname",    "monster_griffon"},
   1106 	{"color",        "1.0 0.0 0.0"},
   1107     {"size",         "-16 -16 -24 16 16 32"},
   1108 	{"flag",		 "WANDER"},
   1109 	{"rem",          "A big thing with a big beak."},
   1110 	{"rem",			 "Spawnflags:"},
   1111 	{"rem",			 "WANDER - monster will wander around"},
   1112 
   1113     {"classname",    "monster_harpy"},
   1114 	{"color",        "1.0 0.0 0.0"},
   1115     {"size",         "-16 -16 -24 16 16 32"},
   1116 	{"flag",		 "WANDER"},
   1117 	{"rem",          "A big thing with a big beak."},
   1118 	{"rem",			 "Spawnflags:"},
   1119 	{"rem",			 "WANDER - monster will wander around"},
   1120 
   1121     {"classname",    "monster_centurion"},
   1122 	{"color",        "1.0 0.0 0.0"},
   1123     {"size",         "-16 -16 -24 16 16 32"},
   1124 	{"flag",		 "WANDER"},
   1125 	{"rem",          "A big thing with a big beak."},
   1126 	{"rem",			 "Spawnflags:"},
   1127 	{"rem",			 "WANDER - monster will wander around"},
   1128 
   1129     {"classname",    "monster_siren"},
   1130 	{"color",        "1.0 0.0 0.0"},
   1131     {"size",         "-16 -16 -24 16 16 32"},
   1132 	{"flag",		 "WANDER"},
   1133 	{"rem",          "A big thing with a big beak."},
   1134 	{"rem",			 "Spawnflags:"},
   1135 	{"rem",			 "WANDER - monster will wander around"},
   1136 
   1137     {"classname",    "monster_ferryman"},
   1138 	{"color",        "1.0 0.0 0.0"},
   1139     {"size",         "-16 -16 -24 16 16 32"},
   1140 	{"flag",		 "WANDER"},
   1141 	{"rem",          "A big thing with a big beak."},
   1142 	{"rem",			 "Spawnflags:"},
   1143 	{"rem",			 "WANDER - monster will wander around"},
   1144 
   1145     {"classname",    "monster_satyr"},
   1146 	{"color",        "1.0 0.0 0.0"},
   1147     {"size",         "-32 -32 -24 32 32 64"},
   1148 	{"flag",		 "WANDER"},
   1149 	{"rem",          "This thing will beat you down."},
   1150 	{"rem",			 "Spawnflags:"},
   1151 	{"rem",			 "WANDER - monster will wander around"},
   1152 
   1153     {"classname",    "monster_column"},
   1154 	{"color",        "1.0 0.0 0.0"},
   1155     {"size",         "-32 -32 -24 32 32 64"},
   1156 	{"flag",		 "WANDER"},
   1157 	{"rem",          "Look at the tits on that statue!!"},
   1158 	{"rem",			 "Spawnflags:"},
   1159 	{"rem",			 "WANDER - monster will wander around"},
   1160 
   1161 	////////////////////////////////////////
   1162 	// Episode 3 monsters
   1163 	////////////////////////////////////////
   1164 
   1165     {"classname",    "monster_plague_rat"},
   1166 	{"color",        "1.0 0.0 0.0"},
   1167     {"size",         "-16 -16 -24 16 16 32"},
   1168 	{"rem",          "I broke you!"},
   1169 	{"flag",		 "WANDER"},
   1170 	{"rem",          "I broke you!"},
   1171 	{"rem",          "radius - wander radius"},
   1172 	{"rem",			 "Spawnflags:"},
   1173 	{"rem",			 "WANDER - monster will wander around"},
   1174 
   1175     {"classname",    "monster_rotworm"},
   1176 	{"color",        "1.0 0.0 0.0"},
   1177     {"size",         "-16 -16 -24 16 16 32"},
   1178 	{"flag",		 "WANDER"},
   1179 	{"rem",          "I beat the dictionary out of your filthy mouth!"},
   1180 	{"rem",          "radius - wander radius"},
   1181 	{"rem",			 "Spawnflags:"},
   1182 	{"rem",			 "WANDER - monster will wander around"},
   1183 
   1184     {"classname",    "monster_buboid"},
   1185 	{"color",        "1.0 0.0 0.0"},
   1186     {"size",         "-16 -16 -24 16 16 32"},
   1187 	{"flag",		 "WANDER"},
   1188 	{"rem",          "Dumbass."},
   1189 	{"rem",          "radius - wander radius"},
   1190 	{"rem",			 "Spawnflags:"},
   1191 	{"rem",			 "WANDER - monster will wander around"},
   1192 
   1193     {"classname",    "monster_priest"},
   1194 	{"color",        "1.0 0.0 0.0"},
   1195     {"size",         "-16 -16 -24 16 16 32"},
   1196 	{"flag",		 "WANDER"},
   1197 	{"rem",          "A big thing with a big beak."},
   1198 	{"rem",          "radius - wander radius"},
   1199 	{"rem",			 "Spawnflags:"},
   1200 	{"rem",			 "WANDER - monster will wander around"},
   1201 
   1202     {"classname",    "monster_doombat"},
   1203 	{"color",        "1.0 0.0 0.0"},
   1204     {"size",         "-16 -16 -24 16 16 32"},
   1205 	{"flag",		 "WANDER"},
   1206 	{"rem",          "A big thing with a big beak."},
   1207 	{"rem",          "radius - wander radius"},
   1208 	{"rem",			 "Spawnflags:"},
   1209 	{"rem",			 "WANDER - monster will wander around"},
   1210 
   1211     {"classname",    "monster_lycanthir"},
   1212 	{"color",        "1.0 0.0 0.0"},
   1213     {"size",         "-16 -16 -24 16 16 32"},
   1214 	{"flag",		 "WANDER"},
   1215 	{"rem",          "A big thing with a big beak."},
   1216 	{"rem",          "radius - wander radius"},
   1217 	{"rem",			 "Spawnflags:"},
   1218 	{"rem",			 "WANDER - monster will wander around"},
   1219 
   1220     {"classname",    "monster_fletcher"},
   1221 	{"color",        "1.0 0.0 0.0"},
   1222     {"size",         "-16 -16 -24 16 16 32"},
   1223 	{"flag",		 "WANDER"},
   1224 	{"rem",          "A big thing with a big beak."},
   1225 	{"rem",          "radius - wander radius"},
   1226 	{"rem",			 "Spawnflags:"},
   1227 	{"rem",			 "WANDER - monster will wander around"},
   1228 
   1229     {"classname",    "monster_dwarf"},
   1230 	{"color",        "1.0 0.0 0.0"},
   1231     {"size",         "-16 -16 -24 16 16 32"},
   1232 	{"flag",		 "WANDER"},
   1233 	{"rem",          "A big thing with a big beak."},
   1234 	{"rem",          "radius - wander radius"},
   1235 	{"rem",			 "Spawnflags:"},
   1236 	{"rem",			 "WANDER - monster will wander around"},
   1237 
   1238     {"classname",    "monster_dragonegg"},
   1239 	{"color",        "1.0 0.0 0.0"},
   1240     {"size",         "-16 -16 -24 16 16 32"},
   1241 	{"flag",		 "WANDER"},
   1242 	{"rem",          "A big thing with a big beak."},
   1243 	{"rem",          "radius - wander radius"},
   1244 	{"rem",			 "Spawnflags:"},
   1245 	{"rem",			 "WANDER - monster will wander around"},
   1246 
   1247     {"classname",    "monster_babydragon"},
   1248 	{"color",        "1.0 0.0 0.0"},
   1249     {"size",         "-16 -16 -24 16 16 32"},
   1250 	{"flag",		 "WANDER"},
   1251 	{"rem",          "A big thing with a big beak."},
   1252 	{"rem",          "radius - wander radius"},
   1253 	{"rem",			 "Spawnflags:"},
   1254 	{"rem",			 "WANDER - monster will wander around"},
   1255 
   1256 	////////////////////////////////////////
   1257 	// Episode 4 monsters
   1258 	////////////////////////////////////////
   1259 
   1260     {"classname",    "monster_gang1"},
   1261 	{"color",        "1.0 0.0 0.0"},
   1262     {"size",         "-16 -16 -24 16 16 32"},
   1263 	{"flag",		 "WANDER"},
   1264 	{"rem",          "Less than half a fucking man."},
   1265 	{"rem",          "radius - wander radius"},
   1266 	{"rem",			 "Spawnflags:"},
   1267 	{"rem",			 "WANDER - monster will wander around"},
   1268 
   1269     {"classname",    "monster_gang2"},
   1270 	{"color",        "1.0 0.0 0.0"},
   1271     {"size",         "-16 -16 -24 16 16 32"},
   1272 	{"flag",		 "WANDER"},
   1273 	{"rem",          "You're fucking dumb!  Suck it down."},
   1274 	{"rem",          "radius - wander radius"},
   1275 	{"rem",			 "Spawnflags:"},
   1276 	{"rem",			 "WANDER - monster will wander around"},
   1277 
   1278     {"classname",    "monster_blackprisoner"},
   1279 	{"color",        "1.0 0.0 0.0"},
   1280     {"size",         "-16 -16 -24 16 16 32"},
   1281 	{"flag",		 "WANDER"},
   1282 	{"rem",          "A big thing with a big beak."},
   1283 	{"rem",          "radius - wander radius"},
   1284 	{"rem",			 "Spawnflags:"},
   1285 	{"rem",			 "WANDER - monster will wander around"},
   1286 
   1287     {"classname",    "monster_whiteprisoner"},
   1288 	{"color",        "1.0 0.0 0.0"},
   1289     {"size",         "-16 -16 -24 16 16 32"},
   1290 	{"flag",		 "WANDER"},
   1291 	{"rem",          "A big thing with a big beak."},
   1292 	{"rem",          "radius - wander radius"},
   1293 	{"rem",			 "Spawnflags:"},
   1294 	{"rem",			 "WANDER - monster will wander around"},
   1295 
   1296     {"classname",    "monster_femgang"},
   1297 	{"color",        "1.0 0.0 0.0"},
   1298     {"size",         "-16 -16 -24 16 16 32"},
   1299 	{"flag",		 "WANDER"},
   1300 	{"rem",          "A big thing with a big beak."},
   1301 	{"rem",          "radius - wander radius"},
   1302 	{"rem",			 "Spawnflags:"},
   1303 	{"rem",			 "WANDER - monster will wander around"},
   1304 
   1305     {"classname",    "monster_rocketdude"},
   1306 	{"color",        "1.0 0.0 0.0"},
   1307     {"size",         "-16 -16 -24 16 16 32"},
   1308 	{"flag",		 "WANDER"},
   1309 	{"rem",          "A big thing with a big beak."},
   1310 	{"rem",          "radius - wander radius"},
   1311 	{"rem",			 "Spawnflags:"},
   1312 	{"rem",			 "WANDER - monster will wander around"},
   1313 
   1314     {"classname",    "monster_chaingang"},
   1315 	{"color",        "1.0 0.0 0.0"},
   1316     {"size",         "-16 -16 -24 16 16 32"},
   1317 	{"flag",		 "WANDER"},
   1318 	{"rem",          "A big thing with a big beak."},
   1319 	{"rem",          "radius - wander radius"},
   1320 	{"rem",			 "Spawnflags:"},
   1321 	{"rem",			 "WANDER - monster will wander around"},
   1322 
   1323     {"classname",    "monster_labmonkey"},
   1324 	{"color",        "1.0 0.0 0.0"},
   1325     {"size",         "-16 -16 -24 16 16 32"},
   1326 	{"flag",		 "WANDER"},
   1327 	{"rem",          "Lab monkey.  This thing will crack your skull."},
   1328 	{"rem",			 "Spawnflags:"},
   1329 	{"rem",			 "WANDER - monster will wander around"},
   1330 
   1331     {"classname",    "monkey_message"},
   1332 	{"color",        "1.0 0.0 0.0"},
   1333     {"size",         "-8 -8 -8 8 8 8"},
   1334 	{"rem",          "Target this from the monkey switch to display current monkey state."},
   1335 
   1336 	//////////////////////////////////////////////////////////////////
   1337 	// monster AI markers
   1338 	//////////////////////////////////////////////////////////////////
   1339 
   1340 	{"classname",	"monster_path_corner"},
   1341 	{"distance",	"90.0"},
   1342 	{"color",		"0.5 0.3 0"},
   1343 	{"size",		"-8 -8 -8 8 8 8"},
   1344 	{"rem",			"A path corner for a monster to travel along"},
   1345 	{"rem"			"target1 - target4: "},
   1346 	{"rem",			"Can have up to 4 targets for the monster"},
   1347 	{"rem",			"to travel to.  If there is more than one target"},
   1348 	{"rem",			"the monster will randomly choose the next target"},
   1349 	{"rem",			"from those available."},
   1350 	{"rem",			"action1 - action4: "},
   1351 	{"rem",			"Use the action field to make a monster perform a"},
   1352 	{"rem",			"specific action at the path corner.  For example"},
   1353 	{"rem",			"'action scoop' will make a sludge minion scoop"},
   1354 	{"rem",			"sludge at that path corner (other monsters will"},
   1355 	{"rem",			"ignore the scoop command.  You can have multiple"},
   1356 	{"rem",			"actions on a path corner, for instance:"},
   1357 	{"rem",			"	action1	scoop"},
   1358 	{"rem",			"	action2	interrogate"},
   1359 	{"rem",			"Sludge minions reaching this path corner will scoop"},
   1360 	{"rem",			"while Inmaters will search out nearest prisoner"},
   1361 
   1362 
   1363 	//////////////////////////////////////////////////////////////////
   1364 	// decorations
   1365 	//////////////////////////////////////////////////////////////////
   1366 
   1367     {"classname",	"deco_e1"},
   1368 	{"color",		"1.0 0.0 0.0"},
   1369     {"size",		"-16 -16 -24 16 16 0"},
   1370 	{"flag",		"DECO_EXPLODE"},
   1371 	{"flag",		"DECO_NO_EXPLODE"},
   1372 	{"flag",		"DECO_PUSHABLE"},
   1373 	{"rem",			"model - choose model # -- see list."},
   1374 
   1375     {"classname",	"deco_e2"},
   1376 	{"color",		"1.0 0.0 0.0"},
   1377     {"size",		"-16 -16 -24 16 16 0"},
   1378 	{"flag",		"DECO_EXPLODE"},
   1379 	{"flag",		"DECO_NO_EXPLODE"},
   1380 	{"flag",		"DECO_PUSHABLE"},
   1381 	{"rem",			"model - choose model # -- see list."},
   1382 
   1383     {"classname",	"deco_e3"},
   1384 	{"color",		"1.0 0.0 0.0"},
   1385     {"size",		"-16 -16 -24 16 16 0"},
   1386 	{"flag",		"DECO_EXPLODE"},
   1387 	{"flag",		"DECO_NO_EXPLODE"},
   1388 	{"flag",		"DECO_PUSHABLE"},
   1389 	{"rem",			"model - choose model # -- see list."},
   1390 
   1391     {"classname",	"deco_e4"},
   1392 	{"color",		"1.0 0.0 0.0"},
   1393     {"size",		"-16 -16 -24 16 16 0"},
   1394 	{"flag",		"DECO_EXPLODE"},
   1395 	{"flag",		"DECO_NO_EXPLODE"},
   1396 	{"flag",		"DECO_PUSHABLE"},
   1397 	{"rem",			"model - choose model # -- see list."},
   1398 
   1399 	{NULL,            NULL},
   1400 };
   1401 
   1402 #endif