1402 lines
No EOL
52 KiB
C
Executable file
1402 lines
No EOL
52 KiB
C
Executable file
/*
|
|
===========================================================================
|
|
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 |