https://github.com/id-Software/Quake-III-Arena
Raw File
Tip revision: dbe4ddb10315479fc00086f08e25d968b4b43c49 authored by Travis Bradshaw on 31 January 2012, 19:41:34 UTC
The Quake III Arena sources as originally released under the GPL license on August 20, 2005.
Tip revision: dbe4ddb
EPAIRS.H
/*
===========================================================================
Copyright (C) 1999-2005 Id Software, Inc.

This file is part of Quake III Arena source code.

Quake III Arena source code is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.

Quake III Arena source code is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Foobar; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
===========================================================================
*/
#ifndef	EPAIRS_H_
#define	EPAIRS_H_

typedef struct
{
	char  *key;
	char  *value;
} userEpair_t;

userEpair_t eclassStr[] =
{
	//////////////////////////////
	// Worldspawn
	//////////////////////////////
	{"classname",   "worldspawn"},
	{"color",       "0 0 0"},
	{"rem",         "Only used for the world entity."},
	{"rem",			"cdtrack - number of CD track to play when level starts"},
	{"rem",			"fog_value - level of fog for this map"},
	
	//////////////////////////////
	// Light
	//////////////////////////////
	{"classname",	"light"},
	{"size",		"-8 -8 -8 8 8 8"},
	{"color",		"0 1 0"},
	{"flag",		"START_OFF"},

	{"rem",			"style - number of style to use, 0-63"},
	{"rem",			"nelnosmama - string to define lightstyle"},

	//////////////////////////////
	// light_walltorch
	//////////////////////////////
	{"classname",	"light_walltorch"},
	{"size",		"-8 -8 -8 8 8 8"},
	{"color",		"0 1 0"},
	{"flag",		"START_ON"},

	{"rem",			"style - number of style to use, 0-63"},
	{"rem",			"nelnosmama - string to define lightstyle"},

	//////////////////////////////
	// light_spot
	//////////////////////////////
	{"classname",	"light_spot"},
	{"size",		"-8 -8 -8 8 8 8"},
	{"color",		"0 1 0"},
	{"flag",		"START_ON"},

	{"rem",			"Used to make a spotlight.  If it is targeted at another entity,"},
	{"rem",			"the spotlight will point directly at it, otherwise it will point"},
	{"rem",			"in the direction of its 'angle' field"},
	{"rem",			""},
	{"rem",			"style - number of style to use, 0-63"},
	{"rem",			"nelnosmama - string to define lightstyle"},

	//////////////////////////////
	// light_strobe
	//////////////////////////////
	{"classname",	"light_strobe"},
	{"size",		"-8 -8 -8 8 8 8"},
	{"color",		"0 1 0"},

	{"flag",		"START_ON"},
	{"rem",			"style - number of style to use, 0-63"},
	{"rem",			"nelnosmama - string to define lightstyle"},

	//////////////////////////////
	// effect_fog
	//////////////////////////////
	{"classname",	"effect_fog"},
	{"color",		"0 1 0"},
	{"rem",			"Duh, fog."},
	{"rem",			""},

	//////////////////////////////
	// effect_snow
	//////////////////////////////
	{"classname",	"effect_snow"},
	{"color",		"1 1 1"},
	{"height",		"10"},
	{"rem",			"Snow!"},
	{"rem",			"Do you realize the entire street value of this mountain?"},
	
	//////////////////////////////
	// effect_rain
	//////////////////////////////
	{"classname",	"effect_rain"},
	{"height",		"10"},
	{"color",		"0 0.5 0.8"},
	{"rem",			"Rain!"},
	{"rem",			"Yellow rain?"},

	//////////////////////////////
	// func_door
	//////////////////////////////
	{"classname",    "func_door"},
	{"color",        "0 0.5 0.8"},
	{"health",		 "0"},
	{"speed",		 "100"},
	{"wait",		 "3"},
	{"lip",			 "8"},
	{"dmg",			 "2"},
	{"angle",		 "0 0 0"},
	{"message",		 "you suck"},
	{"targetname",	 ""},
	{"flag",         "START_OPEN"},
	{"flag",         "REVERSE"},
	{"flag",         "DOOR_DONT_LINK"},
	{"flag",         "TOGGLE"},
	{"flag",		 "AUTO_OPEN"},
	{"flag",		 "USE_TO_CLOSE"},

	{"rem", "Doors that touch are linked together to operate as one."},
	{"rem", "  "},
	{"rem", "message - printed when the door is touched if it is a trigger door and it hasn't been fired yet"},
	{"rem", "angle - determines the opening direction"},
	{"rem", "targetname - if set, no touch field will be spawned and a remote button or trigger field activates the door."},
	{"rem", "health - if set, door must be shot open"},
	{"rem",	"speed - movement speed (100 default)"},
	{"rem", "wait - time to wait before returning (3 default, -1 = never return)"},
	{"rem",	"lip - amount of door visible remaining at end of move (8 default)"},
	{"rem",	"dmg - damage to inflict when blocked (2 default)"},
	{"rem", "sound_opening - name of the sound to play during opening, ie. doors/creek.wav"},
	{"rem",	"sound_open_finish - name of the sound to play when opening completes, ie. doors/slam.wav"},
	{"rem", "sound_closing - name of the sound to play when closing starts, ie. doors/creek.wav"},
	{"rem",	"sound_close_finish - name of the sound to play when closing completes, ie. doors/slam.wav"},
	{"rem", "  "},
	{"rem", "Spawnflags:"},
    {"rem", "TOGGLE causes the door to wait in both the start and end states for a"},
    {"rem", "trigger event."},
    {"rem", "  "},
    {"rem", "START_OPEN causes the door to move to its destination when spawned, and"},
    {"rem", "operate in reverse.  It is used to temporarily or permanently close off an"},
    {"rem", "area when triggered (not usefull for touch or takedamage doors)."},
	{"rem",	"AUTO_OPEN will spawn a trigger field around the door that can open it without"},
	{"rem", "its being used."},
	{"rem",	"DOOR_DONT_LINK will stop a door from being automatically linked to other doors"},
	{"rem", "that it touches."},

	//////////////////////////////
	// func_plat
	//////////////////////////////
	{"classname",    "func_plat"},
	{"color",        "0 0.5 0.8"},
	{"flag",         "PLAT_START_UP"},
	{"flag",         ""},
	{"flag",         ""},
	{"flag",         "PLAT_TOGGLE"},

	{"rem", "Plats should be drawn in the up position to spawn correctly"},
	{"rem",	" "},
	{"rem", "message - printed when the door is touched if it is a trigger door and it hasn't been fired yet"},
	{"rem", "angle - determines the opening direction"},
	{"rem", "targetname - if set, no touch field will be spawned and a remote button or trigger field activates the door."},
	{"rem", "health - if set, door must be shot open"},
	{"rem",	"speed - movement speed (100 default)"},
	{"rem", "wait - time to wait before returning (3 default, -1 = never return)"},
	{"rem",	"height - number of units to move the platform up from spawn position.  If height is"},
	{"rem", "not specified, then the movement distance is determined based on the vertical size of the platform."},
	{"rem",	"dmg - damage to inflict when blocked (2 default)"},
	{"rem", "sound_up - name of the sound to play when going up, ie. doors/creek.wav"},
	{"rem",	"sound_top - name of the sound to play when plat hits top, ie. doors/slam.wav"},
	{"rem", "sound_down - name of the sound to play when going down, ie. doors/creek.wav"},
	{"rem",	"sound_bottom - name of the sound to play when plat hits bottom, ie. doors/slam.wav"},
	{"rem",	" "},
	{"rem", "Spawnflags:"},
	{"rem",	"PLAT_START_UP starts the platform in the up (drawn) position"},
	{"rem",	"(height added to drawn position)"},
    {"rem", "TOGGLE causes the platform to wait in both the start and end states for a"},
    {"rem", "trigger event."},

	//////////////////////////////
	// func_door_rotate
	//////////////////////////////
	{"classname",    "func_door_rotate"},
	{"distance",	 "90.0"},
	{"color",        "0 0.5 0.8"},
	{"message",		 "they suck"},
	{"flag",         "START_OPEN"},
	{"flag",         "REVERSE"},
	{"flag",         "DOOR_DONT_LINK"},
	{"flag",         "TOGGLE"},
	{"flag",         "X_AXIS"},
	{"flag",         "Y_AXIS"},
	{"flag",		 "AUTO_OPEN"},
	{"flag",		 "USE_TO_CLOSE"},
//	{"flag",         "X_AXIS"},
//	{"flag",         "Y_AXIS"},

	{"rem", "if two doors touch, they are assumed to be connected and operate as a unit."},
	{"rem", "  "},
    {"rem", "TOGGLE causes the door to wait in both the start and end states for a"},
    {"rem", "trigger event."},
    {"rem", "  "},
    {"rem", "START_OPEN causes the door to move to its destination when spawned, and"},
    {"rem", "operate in reverse.  It is used to temporarily or permanently close off an"},
    {"rem", "area when triggered (not usefull for touch or takedamage doors)."},
    {"rem", "  "},
    {"rem", "Key doors are allways wait -1."},
    {"rem", "  "},
    {"rem", "You need to have an origin brush as part of this entity.  The center of"},
    {"rem", "that brush will be"},
    {"rem", "the point around which it is rotated. It will rotate around the Z axis by"},
    {"rem", "default.  You can"},
    {"rem", "check either the X_AXIS or Y_AXIS box to change that."},
    {"rem", "  "},
    {"rem", "'distance'	is how many degrees the door will be rotated."},
    {"rem", "'speed'	determines how fast the door moves; default value is 100."},
    {"rem", "  "},
    {"rem", "REVERSE will cause the door to rotate in the opposite direction."},
    {"rem", "  "},
    {"rem", "'message'	is printed when the door is touched if it is a trigger door and"},
    {"rem", "		it hasn't been fired yet."},
    {"rem", "'targetname'	if set, no touch field will be spawned and a remote button or"},
    {"rem", "			trigger field activates the door."},
    {"rem", "'health'	if set, door must be shot open"},
    {"rem", "'wait'	wait before returning (3 default, -1 = never return)"},
    {"rem", "'dmg'	damage to inflict when blocked (2 default)"},
	{"rem", "sound_opening - name of the sound to play during opening, ie. doors/creek.wav"},
	{"rem",	"sound_open_finish - name of the sound to play when opening completes, ie. doors/slam.wav"},
	{"rem", "sound_closing - name of the sound to play when closing starts, ie. doors/creek.wav"},
	{"rem",	"sound_close_finish - name of the sound to play when closing completes, ie. doors/slam.wav"},
	{"rem",	"AUTO_OPEN will spawn a trigger field around the door that can open it without"},
	{"rem", "its being used."},
	{"rem",	"DOOR_DONT_LINK will stop a door from being automatically linked to other doors"},
	{"rem", "that it touches."},

	//////////////////////////////
	// func_rotate
	//////////////////////////////
	{"classname",    "func_rotate"},
	{"color",        "0.0 0.5 0.8"},
	{"flag",         "START_ON"},
	{"flag",         "REVERSE"},
	{"flag",         "X_AXIS"},
	{"flag",         "Y_AXIS"},

    {"rem", "You need to have an origin brush as part of this entity."},
	{"rem", "The center of that brush will be"},
    {"rem", "the point around which it is rotated. It will rotate around the Z axis by"},
	{"rem", "default.  You can"},
    {"rem", "check either the X_AXIS or Y_AXIS box to change that."},
    {"rem", "  "},
    {"rem", "'speed'	determines how fast it moves; default value is 100."},
    {"rem", "'dmg'	damage to inflict when blocked (2 default)"},
    {"rem", "  "},
    {"rem", "REVERSE will cause the it to rotate in the opposite direction."},

	//////////////////////////////
	// trigger_multiple
	//////////////////////////////
	{"classname",	"trigger_multiple"},
	{"color",		"0.5 0.5 0.5"},
	{"health",		"0"},
	{"delay",		"0"},
	{"wait",		"0.2"},
	{"sound",		""},
	{"targetname",	""},
	{"target",		""},
	{"killtarget",	""},
	{"message",		""},
	{"flag",		"NOTOUCH"},

	{"rem",			"a repeatable trigger, targetted at the entity with the name"},
	{"rem",			"targetname."},
	{"rem",			""},
	{"rem",			"health - if set the trigger must be killed to activate"},
	{"rem",			"delay - time to wait after activation before firing target"},
	{"rem",			"wait - time to wait between retriggering (default = 0.2 seconds)"},
	{"rem",			""},
	{"rem",			"Spawnflags:"},
	{"rem",			"NOTOUCH - if set the trigger is only fired by other entities and"},
	{"rem",			"not by touching."},

	//////////////////////////////
	// trigger_console
	//////////////////////////////
	{"classname",	"trigger_console"},
	{"color",		"0.5 0.5 0.5"},
	{"wait",		"0.2"},
	{"command",		""},
	{"rem",			""},
	{"rem",			"command - the command to send to the console when triggered"},

	//////////////////////////////
	// trigger_once
	//////////////////////////////
	{"classname",	"trigger_once"},
	{"color",		"0.5 0.5 0.5"},
	{"angle",		 "0 0 0"},
	{"health",		"0"},
	{"delay",		"0"},
	{"sound",		""},
	{"targetname",	""},
	{"killtarget",	""},
	{"message",		""},
	{"flag",		"NOTOUCH"},

	{"rem",			"triggers once, then removes itself"},
	{"rem",			" "},
	{"rem",			"health - if set the trigger must be killed to activate"},
	{"rem",			"delay - time to wait after activation before firing target"},
	{"rem",			"wait - time to wait between retriggering (default = 0.2 seconds)"},
	{"rem",			"sound - name of sound to play upon firing"},
	{"rem",			" "},
	{"rem",			"Spawnflags:"},
	{"rem",			"NOTOUCH - if set the trigger is only fired by other entities and"},
	{"rem",			"not by touching."},

	//////////////////////////////
	// trigger_relay
	//////////////////////////////
	{"classname",	"trigger_relay"},
	{"color",		"0.5 0.5 0.5"},
	{"delay",		"0"},
	{"sound",		""},
	{"targetname",	""},
	{"killtarget",	""},
	{"message",		""},

	{"rem",			"sound - name of sound to play upon firing"},

	//////////////////////////////
	// trigger_teleport
	//////////////////////////////
	{"classname",	"trigger_teleport"},
	{"color",		"0.5 0.5 0.5"},
	{"sound",		""},
	{"targetname",	""},
	{"killtarget",	""},
	{"message",		""},
	{"flag",		"PLAYER_ONLY"},
	{"flag",		"NO_FLASH"},
	{"flag",		"NO_ANGLE_ADJUST"},
	
	{"rem",			"sound - name of sound to play upon firing, if not specified, then no"},
	{"rem",			"sound will be played"},
	{"rem",			"fog_value - sets fog_value to this when a teleporter is used"},
	{"rem",			""},
	{"rem",			"Spawnflags:"},
	{"rem",			"PLAYER_ONLY - will only teleport players (NOT bots)"},
	{"rem",			"NO_FLASH - no spawn fog will be generated when an object teleports"},
	{"rem",			"NO_ANGLE_ADJUST - the object's angle will not be adjusted when it is"},
	{"rem",			"teleported."},

	//////////////////////////////
	// info_teleport_destination
	//////////////////////////////
	{"classname",	"info_teleport_destination"},
	{"color",		"0.5 0.5 0.5"},
	{"size",		"-8.0 -8.0 -8.0 8.0 8.0 8.0"},

	//////////////////////////////
	// trigger_warp
	//////////////////////////////
	{"classname",	"trigger_warp"},
	{"color",		"0.5 0.5 0.5"},
	{"sound",		""},
	{"targetname",	""},
	{"killtarget",	""},
	{"message",		""},
	{"flag",		"PLAYER_ONLY"},
	{"flag",		"NO_FLASH"},
	{"flag",		"NO_ANGLE_ADJUST"},

	{"rem",			"sound - name of sound to play upon firing, if not specified, then no"},
	{"rem",			"sound will be played"},
	{"rem",			"fog_value - sets fog_value to this when a warp is used"},
	{"rem",			"speed - speed from this path point to the next"},
	{"rem",			""},
	{"rem",			"Spawnflags:"},
	{"rem",			"PLAYER_ONLY - will only teleport players (NOT bots)"},
	{"rem",			"NO_FLASH - no spawn fog will be generated when an object teleports"},
	{"rem",			"NO_ANGLE_ADJUST - the object's angle will not be adjusted when it is"},
	{"rem",			"teleported."},

	//////////////////////////////
	//	tele_cylinder
	//////////////////////////////

	{"classname",	"warp_cylinder"},
	{"color",		"0.5 0.5 0.5"},
	{"color",        "1 0 1"},
	{"size",         "-16 -16 -24 16 16 32"},
	{"rem",          "Location player starts in deathmatch"},

	//////////////////////////////
	// info_warp_destination
	//////////////////////////////
	{"classname",	"info_warp_destination"},
	{"color",		"0.5 0.5 0.5"},
	{"size",		"-8.0 -8.0 -8.0 8.0 8.0 8.0"},

	{"rem",			"target - next target to warp to"},
	{"rem",			"speed - speed from this path point to the next"},

	//////////////////////////////
	// trigger_onlyregistered
	//////////////////////////////
	{"classname",	"trigger_onlyregistered"},
	{"color",		"0.5 0.5 0.5"},
	{"sound",		""},
	{"wait",		"2.0"},
	{"message",		""},

	{"rem",			"sound - name of sound to play upon firing"},
	{"rem",			"wait - the number of seconds between triggerings and"},
	{"rem",			"the length of time the message will be displayed"},

	//////////////////////////////
	// trigger_hurt
	//////////////////////////////
	{"classname",	"trigger_hurt"},
	{"color",		"0.5 0.5 0.5"},
	{"sound",		""},
	{"dmg",			"2.0"},
	{"wait",		"2.0"},
	{"message",		""},

	{"rem",			"sound - name of sound to play upon firing"},
	{"rem",			"dmg - the amount of damage the trigger will do to an object"},
	{"rem",			"wait - the number of seconds between triggerings and"},

	//////////////////////////////
	// trigger_push
	//////////////////////////////
	{"classname",	"trigger_push"},
	{"color",		"0.5 0.5 0.5"},
	{"sound",		""},
	{"message",		""},
	{"speed",		"1000.0"},
	{"flag",		"PUSH_ONCE"},
	{"rem",			"speed - the velocity to give the object"},
	{"rem",			"speed - the velocity to give the object"},

	//////////////////////////////
	// trigger_counter
	//////////////////////////////
	{"classname",	"trigger_counter"},
	{"color",		"0.5 0.5 0.5"},
	{"sound",		""},
	{"flag",		"NO_MESSAGE"},

	{"rem",			"sound - name of sound to play upon firing"},
	{"rem",			"message - message to display upon last triggering"},
	{"rem",			"when NO_MESSAGE is set, no messages are displayed upon triggering"},

	//////////////////////////////
	// trigger_changelevel
	//////////////////////////////
	{"classname",	"trigger_changelevel"},
	{"color",		"0.5 0.5 0.5"},
	{"sound",		""},
	{"map",			""},
	{"flag",		"NO_INTERMISSION"},

	{"rem",			"sound - name of sound to play upon firing"},
	{"rem",			"message - message to display upon last triggering"},

	//////////////////////////////
	// func_wall
	//////////////////////////////
	{"classname",	"func_wall"},
	{"color",		"0 0.5 0.8"},
	{"health",		"0"},
	{"message",		""},
	{"targetname",	""},
	{"target",		""},
	{"killtarget",	""},

	{"rem",			"targetname - the name of this wall if it is a target"},
	{"rem",			"target - the next entity to trigger when this one is triggered"},
	{"rem",			"killtarget - the targetname of the entity to remove when triggered"},

	//////////////////////////////
	// func_button
	//////////////////////////////
	{"classname",	"func_button"},
	{"color",		"0 0.5 0.8"},
	{"health",		"0"},
	{"targetname",	""},
	{"target",		""},
	{"killtarget",	""},
	{"speed",		""},
	{"wait",		""},
	{"angle",		""},
	{"lip",			""},
	{"flag",		"PUSH_TOUCH"},

	{"rem",			"targetname - the name of this wall if it is a target"},
	{"rem",			"target - the next entity to trigger when this one is triggered"},
	{"rem",			"killtarget - the targetname of the entity to remove when triggered"},
	{"rem",			"sound_use - the sound to play when the button is used (defaults to none)"},
	{"rem",			"sound_return - the sound to play when the button returns (defaults to none)"},
	{"rem",			"speed - rate of travel when button moves"},
	{"rem",			"wait - seconds to wait befor returning to useable (-1 = never return)"},
	{"rem",			"angle - direction of travel"},
	{"rem",			"lip - amount of button left sticking out after being pushed (default 4)"},
	{"rem",			"health - when > 0 the button must be killed in order to fire"},
	{"rem",			"PUSH_TOUCH will allow the button to be pushed by running into it, Quake style"},

	//////////////////////////////
	// func_multi_button
	//////////////////////////////
	{"classname",	"func_multi_button"},
	{"color",		"0 0.5 0.8"},
	{"health",		"0"},
	{"targetname",	""},
	{"target",		""},
	{"killtarget",	""},
	{"speed",		""},
	{"wait",		""},
	{"angle",		""},
	{"lip",			""},
	{"flag",		"PUSH_TOUCH"},
	{"flag",		"CYCLE"},

	{"rem",			"targetname - the name of this wall if it is a target"},
	{"rem",			"target - the next entity to trigger when this one is triggered"},
	{"rem",			"killtarget - the targetname of the entity to remove when triggered"},
	{"rem",			"sound_use - the sound to play when the button is used (defaults to none)"},
	{"rem",			"sound_return - the sound to play when the button returns (defaults to none)"},
	{"rem",			"speed - rate of travel when button moves"},
	{"rem",			"wait - seconds to wait befor returning to useable (-1 = never return)"},
	{"rem",			"angle - direction of travel"},
	{"rem",			"health - when > 0 the button must be killed in order to fire"},
	{"rem",			"distance - distance button travels on each push"},
	{"rem",			"count - number of positions this button has"},
	{"rem",			"PUSH_TOUCH will allow the button to be pushed by running into it, Quake style"},
	{"rem",			"CYCLE - button will not return to top from last position, but will go back through all positions"},

	//////////////////////////////
	// func_train
	//////////////////////////////
	{"classname",    "func_train"},
	{"distance",	 "90.0"},
	{"color",        "0 0.5 0.8"},
	{"rem",			"targetname - the name of this train"},
	{"rem",			"target - the path_corner that the train will spawn at"},
	{"rem",			"killtarget - the targetname of the entity to remove when triggered"},

	//////////////////////////////
	// func_train
	//////////////////////////////
	{"classname",    "func_train2"},
	{"distance",	 "90.0"},
	{"color",        "0 0.5 0.8"},
	{"rem",			"targetname - the name of this train"},
	{"rem",			"target - the path_corner that the train will spawn at"},
	{"rem",			"killtarget - the targetname of the entity to remove when triggered"},
	
	//////////////////////////////
	// path_corner_train
	//////////////////////////////
	{"classname",    "path_corner_train"},
	{"distance",	 "90.0"},
	{"color",        "0.5 0.3 0"},
	{"size",		 "-8 -8 -8 8 8 8"},
	{"flag",		"X_AXIS"},
	{"flag",		"Y_AXIS"},
	{"flag",		"Z_AXIS"},
	{"flag",		"TRIGWAIT"},
	{"rem",			"killtarget - the targetname of the entity to remove when this"},
	{"rem",			"path_corner is reached"},
	{"rem",			"speed - rate of travel from this path_corner to the next"},
	{"rem",			"wait - seconds to wait after the actions on this path_corner are complete"},
	{"rem",			"sound - sound to play at this path corner"},
	{"rem",			"x_distance - distance in degrees to rotate around x axis"},
	{"rem",			"y_distance - distance in degrees to rotate around y axis"},
	{"rem",			"z_distance - distance in degrees to rotate around z axis"},
	{"rem",			"x_speed - speed to rotate along x axis in degrees per second"},
	{"rem",			"y_speed - speed to rotate along y axis in degrees per second"},
	{"rem",			"z_speed - speed to rotate along z axis in degrees per second"},
	{"rem",			"health - if health is set, the train will wait at this path corner"},
	{"rem",			"until it is killed."},
	{"rem",			"Spawnflags:"},
	{"rem",			"X_AXIS - when checked train will rotate continually around "},
	{"rem",			"x axis at x_speed degrees per second"},
	{"rem",			"Y_AXIS - when checked train will rotate continually around "},
	{"rem",			"y axis at y_speed degrees per second"},
	{"rem",			"Z_AXIS - when checked train will rotate continually around "},
	{"rem",			"z axis at z_speed degrees per second"},
	{"rem",			"TRIGWAIT - wait here until triggered"},

	//////////////////////////////
	// info_player_start
	//////////////////////////////
	{"classname",    "info_player_start"},
	{"color",        "1 0 0"},
	{"size",         "-16 -16 -24 16 16 32"},
	{"rem",          "Location player starts in single play."},

	//////////////////////////////
	// info_mikiko_start
	//////////////////////////////
	{"classname",    "info_mikiko_start"},
	{"color",        "1 0 0"},
	{"size",         "-16 -16 -24 16 16 32"},
	{"rem",          "Location Mikiko starts in single play."},

	//////////////////////////////
	// info_superfly_start
	//////////////////////////////
	{"classname",    "info_superfly_start"},
	{"color",        "1 0 0"},
	{"size",         "-16 -16 -24 16 16 32"},
	{"rem",          "Location Superfly starts in single play."},

	//////////////////////////////
	// info_null
	//////////////////////////////
	{"classname",    "info_null"},
	{"color",        "1 0 0"},
	{"size",         "-8 -8 -8 8 8 8"},
	{"rem",          "You can point anything to this as a target"},

	//////////////////////////////
	// info_player_deathmatch
	//////////////////////////////
	{"classname",    "info_player_deathmatch"},
	{"color",        "1 0 1"},
	{"size",         "-16 -16 -24 16 16 32"},
	{"rem",          "Location player starts in deathmatch"},

	//////////////////////////////
	// info_player_coop
	//////////////////////////////
	{"classname",    "info_player_coop"},
	{"color",        "1 0 1"},
	{"size",         "-16 -16 -24 16 16 32"},
	{"rem",          "Location player starts in coop"},

	//////////////////////////////
	// func_door_secret
	//////////////////////////////
	{"classname",    "func_door_secret"},
	{"color",        "0 0.5 0.8"},
	{"health",		 "0"},
	{"speed",		 "100"},
	{"wait",		 "3"},
	{"lip",			 "8"},
	{"dmg",			 "2"},
	{"angle",		 "0 0 0"},
	{"message",		 "we all suck"},
	{"targetname",	 ""},
	{"flag",         "OPEN_ONCE"},
	{"flag",         "1ST_LEFT"},
	{"flag",         "1ST_DOWN"},
	{"flag",         "NO_SHOOT"},
	{"flag",		 "YES_SHOOT"},

	{"rem", "message - printed when the door is touched if it is a trigger door and it hasn't been fired yet"},
	{"rem", "angle - determines the opening direction"},
	{"rem", "targetname - if set, no touch field will be spawned and a remote button or trigger field activates the door."},
	{"rem", "health - if set, door must be shot open"},
	{"rem",	"speed - movement speed (100 default)"},
	{"rem", "wait - time to wait before returning (3 default, -1 = never return)"},
	{"rem",	"dmg - damage to inflict when blocked (2 default)"},
	{"rem", "sound_opening - name of the sound to play during opening, ie. doors/creek.wav"},
	{"rem",	"sound_open_finish - name of the sound to play when opening completes, ie. doors/slam.wav"},
	{"rem", "sound_closing - name of the sound to play when closing starts, ie. doors/creek.wav"},
	{"rem",	"sound_close_finish - name of the sound to play when closing completes, ie. doors/slam.wav"},
	{"rem", "  "},
	{"rem", "Spawnflags:"},
    {"rem", "SECRET_OPEN_ONCE - door stays open (imagine that...)"},
    {"rem", "SECRET_1ST_LEFT - first move is left of move direction"},
    {"rem", "SECRET_1ST_DOWN - first move is down from move direction"},
    {"rem", "SECRET_NO_SHOOT - only opened by a trigger"},
    {"rem", "SECRET_YES_SHOOT - shootable even if targeted"},

	//////////////////////////////
	// func_wall_explode
	//////////////////////////////
	{"classname",	"func_wall_explode"},
	{"color",		"0 0.5 0.8"},
	{"health",		"0"},
	{"message",		""},
	{"targetname",	""},
	{"target",		""},
	{"killtarget",	""},
	{"model_1",		""},
	{"model_2",		""},
	{"model_3",		""},
	{"flag",        "ROCK_CHUNKS"},
	{"flag",        "WOOD_CHUNKS"},
	{"flag",        "EXTRA_CHUNKS"},
	{"flag",        "EXTRA_VELOCITY"},
	{"flag",		"NO_CHUNKS"},
	{"flag",		"NO_SOUND"},

	{"rem",			"targetname - the name of this wall if it is a target"},
	{"rem",			"target - the next entity to trigger when this one is triggered"},
	{"rem",			"killtarget - the targetname of the entity to remove when triggered"},
	{"rem",			"health - ummm... this would be the health of the wall, if it is 0 then"},
	{"rem",			"the wall can only be exploded by targetting it"},
	{"rem",			"message - this prints out when wall go boom"},
	{"rem",			"model_1 - the specific pathname of the first model to throw when killed"},
	{"rem",			"if model_1 is set then spawnflags ROCK_CHUNKS and WOOD_CHUNKS are overridden"},
	{"rem",			"model_2 - the pathname of the second model"},
	{"rem",			"model_3 - I wouldn't bet on it, but this is probably the name of the 3rd model"},
	{"rem",			" "},
	{"rem", "Spawnflags:"},
    {"rem", "ROCK_CHUNKS - makes rock chunk wall-gibs fly"},
	{"rem",	"WOOD_CHUNKS - makes wood chunk wall-gibs fly"},
	{"rem",	"EXTRA_CHUNKS - makes up to 3 chunks per explosion, instead of just one"},
	{"rem",	"EXTRA_VELOCITY - gives chunks a higher velocity (good for underwater)"},
	{"rem", "NO_CHUNKS - um, no chunks"},
	{"rem", "NO_SOUND - no sound, use when lots of func walls are activated simultaneously to keep the"},
	{"rem", "Quake engine from choking with too many sounds at once."},

	//////////////////////////////
	// func_anim
	//////////////////////////////
	{"classname",	"func_anim"},
	{"color",		"0.0 1.0 0.1"},
	{"flag",        "VISIBLE"},
	{"rem", "Spawnflags:"},
    {"rem", "VISIBLE - start visible"},

	//////////////////////////////
	// func_floater
	//////////////////////////////
	{"classname",	"func_floater"},
	{"color",		"0 0.5 0.8"},
	{"size",		"-16 -16 -16 16 16 16"},
	{"model",		""},

	{"rem",			"model - pathname to model (ie. models/floater.mdl)"},
	{"rem",			"velocity_cap - maximum up/down velocity"},
	{"rem",			"dissipate - how fast velocity degrades to velocity_cap (default = 0.99)"},
	{"rem",			"object_mass - mass of object (mass / volume = density)"},
	{"rem",			"object_volume - volume of object (mass / volume = density)"},

	//////////////////////////////
	// func_debris
	//////////////////////////////

	{"classname",	"func_debris"},
	{"color",		"0 0.5 0.8"},
	{"target",		""},
	{"flag",		"GO_TO_ACTIVATOR"},
	{"flag",		"NO_ROTATE"},
	{"flag",		"MOMENTUM_DAMAGE"},
	{"flag",		"NO_ROTATION_ADJUST"},
	{"flag",		"DROP_ONLY"},
	{"flag",		"QUARTER_SIZE"},

	{"rem",			"target - debris will fly towards targeted entity"},
	{"rem",			"fly_sound - sound to play while the entity flies through the air"},
	{"rem",			"hit_sound - sound to play when the entity hits something"},
	{"rem",			"damage - amount of damage to do when hitting another object"},
	{"rem",			"if MOMENTUM_DAMAGE is selected, then damage will be based on the"},
	{"rem",			"speed of the debris when it impacts the object and damage becomes"},
	{"rem",			"the divisor, so if speed at impact = 300 and damge = 3, then damage done"},
	{"rem",			"while 300 / 3 = 100 points.  If damage is not set, then momentum damage"},
	{"rem",			"will be the default with a damage divisor of 3."},
	{"rem",			"Spawnflags:"},
	{"rem",			"GO_TO_ACTIVATOR - debris will fly at whoever activated it"},
	{"rem",			"NO_ROTATE - don't give this debris any random rotation"},
	{"rem",			"MOMENTUM_DAMAGE - damage based on velocity"},
	{"rem",			"DROP_ONLY - no upward velocity, debris just falls"},
	{"rem",			"QUARTER_SIZE - shrink bounding box by 1/4"},
	{"rem",			"Notes:"},
	{"rem",			"A func debris entity must have an origin brush contained in it,"},
	{"rem",			"otherwise it will rotate around the center of the level, not"},
	{"rem",			"its own center.  That is bad."},

	//////////////////////////////
	// func_debris_visible
	//////////////////////////////

	{"classname",	"func_debris_visible"},
	{"color",		"0 0.5 0.8"},
	{"target",		""},
	{"flag",		"GO_TO_ACTIVATOR"},
	{"flag",		"NO_ROTATE"},
	{"flag",		"MOMENTUM_DAMAGE"},
	{"flag",		"NO_ROTATION_ADJUST"},
	{"flag",		"DROP_ONLY"},
	{"flag",		"QUARTER_SIZE"},

	{"rem",			"SAME AS FUNC_DEBRIS EXCEPT DEBRIS IS VISIBLE BEFORE TARGETTING"},
	{"rem",			"target - debris will fly towards targeted entity"},
	{"rem",			"fly_sound - sound to play while the entity flies through the air"},
	{"rem",			"hit_sound - sound to play when the entity hits something"},
	{"rem",			"damage - amount of damage to do when hitting another object"},
	{"rem",			"if MOMENTUM_DAMAGE is selected, then damage will be based on the"},
	{"rem",			"speed of the debris when it impacts the object and damage becomes"},
	{"rem",			"the divisor, so if speed at impact = 300 and damge = 3, then damage done"},
	{"rem",			"while 300 / 3 = 100 points.  If damage is not set, then momentum damage"},
	{"rem",			"will be the default with a damage divisor of 3."},
	{"rem",			"Spawnflags:"},
	{"rem",			"GO_TO_ACTIVATOR - debris will fly at whoever activated it"},
	{"rem",			"NO_ROTATE - don't give this debris any random rotation"},
	{"rem",			"MOMENTUM_DAMAGE - damage based on velocity"},
	{"rem",			"DROP_ONLY - no upward velocity, debris just falls"},
	{"rem",			"QUARTER_SIZE - shrink bounding box by 1/4"},
	{"rem",			"Notes:"},
	{"rem",			"A func debris entity must have an origin brush contained in it,"},
	{"rem",			"otherwise it will rotate around the center of the level, not"},
	{"rem",			"its own center.  That is bad."},

	//////////////////////////////
	// func_particlefield
	//////////////////////////////
	{"classname",	"func_particlefield"},
	{"color",		"0 0.5 0.8"},
	{"flag",		"USE_COUNT"},
	{"rem",			"count - number of times to trigger before activated"},
	{"rem",			"color - color of particles use:"},
	{"rem",			"black, blue, green, cyan, red, "},
	{"rem",			"purple, brown, ltgray, dkgray, "},
	{"rem",			"ltblue, ltgreen, ltcyan, ltpurple,"},
	{"rem",			"yellow, white"},

	//////////////////////////////
	// func_monitor
	//////////////////////////////
	{"classname",	"func_monitor"},
	{"color",		"0 0.5 0.8"},
	{"rem",			"target - the info_camera that the view will be from"},
	{"rem",			"fov - the field of view when looking through this camera"},

	//////////////////////////////
	// info_camera
	//////////////////////////////
	{"classname",    "info_camera"},
	{"color",        "1 0 0"},
	{"size",         "-8 -8 -8 8 8 8"},

	//////////////////////////////
	// misc_lavaball_drop
	//////////////////////////////
	{"classname",	"misc_lavaball_drop"},
	{"size",		"-8 -8 -8 8 8 8"},
	{"color",		"1.0 0.5 0.0"},

	//////////////////////////////
	// misc_lavaball_toss
	//////////////////////////////
	{"classname",	"misc_lavaball_toss"},
	{"size",		"-8 -8 -8 8 8 8"},
	{"color",		"1.0 0.5 0.0"},

	{"rem",			"target = can be triggered"},
	{"rem",			"mintime = minimum time between tosses (default = 4.0 seconds)"},
	{"rem",			"maxtime = maximum time between tosses (default = 12.0 seconds)"},
	{"rem",			"damage = damage to do when an hitting something"},
	{"rem",			"upmin = minimum upward velocity (default = 200)"},
	{"rem",			"upmax = maximum upward velocity (default = 800)"},

	//////////////////////////////
	// sound_ambient
	//////////////////////////////
	
	{"classname",	"sound_ambient"},
	{"size",		"-8 -8 -8 8 8 8"},
	{"color",		"1 0 1"},

	{"rem",			"sound - path to ambient sound (ie. ambience/sound.wav."},
	{"rem",			"fade - distance multiplier to make sounds fade in further away from source."},
	{"rem",			"1.0 is normal, 2.0 is twice as far."},
	{"rem",			"volume - 0 through 255.  255 is max."},

	//////////////////////////////
	// sound_ambient
	//////////////////////////////
	
	{"classname",	"trigger_fog_value"},
	{"color",		"0 1 0"},

	{"rem",			"fog_value - the value for fog density 0 - 4.  0 is off, ie. r_drawfog 0"},

	//////////////////////////////
	// node_node
	//////////////////////////////
	
	{"classname",	"node_node"},
	{"color",		"0.5 0.5 1"},
	{"size",		"-8 -8 -8 8 8 8"},
	{"flag",		"NODE_DOOR"},

	{"rem",			"number - the number of this node"},
	{"rem",			"link - the number of the node linked to (can be up to four link fields)"},

	//////////////////////////////////////////////////////////////////////////////////////////////////////
	//
	// Monsters
	// 
	//////////////////////////////////////////////////////////////////////////////////////////////////////

	////////////////////////////////////////
	// Episode 1 monsters
	////////////////////////////////////////

    {"classname",    "monster_froginator"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A light and refreshing monster."},
	{"rem",          "One day I will read the spec and know what this"},
	{"rem",          "monster does."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_crox"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A realistic representation of your mother"},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_slaughterskeet"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_thunderskeet"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_venomvermin"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_tentaclor"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_sludgeminion"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"flag",		 "PATHFOLLOW"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_prisoner"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "gib him."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "func_prisoner_respawn"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"rem",			 "time - seconds until a new prisoner is spawned"},

    {"classname",    "monster_inmater"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-32 -32 -24 32 32 64"},
	{"flag",		 "WANDER"},
	{"flag",		 "PATHFOLLOW"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},
	{"rem",			 "PATH_FOLLOW - begin following a monster path"},

    {"classname",    "monster_squid"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_trackattack"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"rem",          "Track turrets need to have a target"},
	{"rem",          "which is the path_corner_track at which"},
	{"rem",          "they will start."},
	{"rem",          "Spawn about 16 units below the track to"},

    {"classname",    "monster_trackdaddy"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"rem",          "Track turrets need to have a target"},
	{"rem",          "which is the path_corner_track at which"},
	{"rem",          "they will start."},
	
    {"classname",    "monster_lasergat"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"rem",          "Track turrets need to have a target"},
	{"rem",          "which is the path_corner_track at which"},
	{"rem",          "they will start."},

    {"classname",    "monster_psyclaw"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big dog without a head and a"},
	{"rem",			 "brain for a back.  Cool, eh?"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_labworker"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "Lab worker.  Your momma."},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_battleboar"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A motorized, cybernetic pig, of course."},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

	//////////////////////////////
	//	path_corner_track
	//	
	//	path corners for tracked turrets only!
	//////////////////////////////
	
	{"classname",    "path_corner_track"},
	{"distance",	 "90.0"},
	{"color",        "0.5 0.3 0"},
	{"size",		 "-8 -8 -8 8 8 8"},

	////////////////////////////////////////
	// Episode 2 monsters
	////////////////////////////////////////

    {"classname",    "monster_skeleton"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "Where's he at?  Ahh!  He's in me!"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_spider"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-32 -32 -24 32 32 32"},
	{"flag",		 "WANDER"},
	{"rem",          "Dumbass."},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_tarantula"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "Dumbass."},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_griffon"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_harpy"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_centurion"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_siren"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_ferryman"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_satyr"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-32 -32 -24 32 32 64"},
	{"flag",		 "WANDER"},
	{"rem",          "This thing will beat you down."},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_column"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-32 -32 -24 32 32 64"},
	{"flag",		 "WANDER"},
	{"rem",          "Look at the tits on that statue!!"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

	////////////////////////////////////////
	// Episode 3 monsters
	////////////////////////////////////////

    {"classname",    "monster_plague_rat"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"rem",          "I broke you!"},
	{"flag",		 "WANDER"},
	{"rem",          "I broke you!"},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_rotworm"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "I beat the dictionary out of your filthy mouth!"},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_buboid"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "Dumbass."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_priest"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_doombat"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_lycanthir"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_fletcher"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_dwarf"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_dragonegg"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_babydragon"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

	////////////////////////////////////////
	// Episode 4 monsters
	////////////////////////////////////////

    {"classname",    "monster_gang1"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "Less than half a fucking man."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_gang2"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "You're fucking dumb!  Suck it down."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_blackprisoner"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_whiteprisoner"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_femgang"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_rocketdude"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_chaingang"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "A big thing with a big beak."},
	{"rem",          "radius - wander radius"},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monster_labmonkey"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-16 -16 -24 16 16 32"},
	{"flag",		 "WANDER"},
	{"rem",          "Lab monkey.  This thing will crack your skull."},
	{"rem",			 "Spawnflags:"},
	{"rem",			 "WANDER - monster will wander around"},

    {"classname",    "monkey_message"},
	{"color",        "1.0 0.0 0.0"},
    {"size",         "-8 -8 -8 8 8 8"},
	{"rem",          "Target this from the monkey switch to display current monkey state."},

	//////////////////////////////////////////////////////////////////
	// monster AI markers
	//////////////////////////////////////////////////////////////////

	{"classname",	"monster_path_corner"},
	{"distance",	"90.0"},
	{"color",		"0.5 0.3 0"},
	{"size",		"-8 -8 -8 8 8 8"},
	{"rem",			"A path corner for a monster to travel along"},
	{"rem"			"target1 - target4: "},
	{"rem",			"Can have up to 4 targets for the monster"},
	{"rem",			"to travel to.  If there is more than one target"},
	{"rem",			"the monster will randomly choose the next target"},
	{"rem",			"from those available."},
	{"rem",			"action1 - action4: "},
	{"rem",			"Use the action field to make a monster perform a"},
	{"rem",			"specific action at the path corner.  For example"},
	{"rem",			"'action scoop' will make a sludge minion scoop"},
	{"rem",			"sludge at that path corner (other monsters will"},
	{"rem",			"ignore the scoop command.  You can have multiple"},
	{"rem",			"actions on a path corner, for instance:"},
	{"rem",			"	action1	scoop"},
	{"rem",			"	action2	interrogate"},
	{"rem",			"Sludge minions reaching this path corner will scoop"},
	{"rem",			"while Inmaters will search out nearest prisoner"},


	//////////////////////////////////////////////////////////////////
	// decorations
	//////////////////////////////////////////////////////////////////

    {"classname",	"deco_e1"},
	{"color",		"1.0 0.0 0.0"},
    {"size",		"-16 -16 -24 16 16 0"},
	{"flag",		"DECO_EXPLODE"},
	{"flag",		"DECO_NO_EXPLODE"},
	{"flag",		"DECO_PUSHABLE"},
	{"rem",			"model - choose model # -- see list."},

    {"classname",	"deco_e2"},
	{"color",		"1.0 0.0 0.0"},
    {"size",		"-16 -16 -24 16 16 0"},
	{"flag",		"DECO_EXPLODE"},
	{"flag",		"DECO_NO_EXPLODE"},
	{"flag",		"DECO_PUSHABLE"},
	{"rem",			"model - choose model # -- see list."},

    {"classname",	"deco_e3"},
	{"color",		"1.0 0.0 0.0"},
    {"size",		"-16 -16 -24 16 16 0"},
	{"flag",		"DECO_EXPLODE"},
	{"flag",		"DECO_NO_EXPLODE"},
	{"flag",		"DECO_PUSHABLE"},
	{"rem",			"model - choose model # -- see list."},

    {"classname",	"deco_e4"},
	{"color",		"1.0 0.0 0.0"},
    {"size",		"-16 -16 -24 16 16 0"},
	{"flag",		"DECO_EXPLODE"},
	{"flag",		"DECO_NO_EXPLODE"},
	{"flag",		"DECO_PUSHABLE"},
	{"rem",			"model - choose model # -- see list."},

	{NULL,            NULL},
};

#endif
back to top