Started documenting map entities via QUAKED style comments.

Use the mk_mapdef.sh script to generate a radiant compatible entities.def
file.
This commit is contained in:
Marco Cawthorne 2019-09-07 05:37:06 +02:00
parent 98e7bdef03
commit f4ced97ad0
65 changed files with 839 additions and 118 deletions

View File

@ -14,12 +14,11 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
===============================================================================
/*QUAKED env_cubemap (1 0 0) (-8 -8 -8) (8 8 8)
"scale" Texture dimension at which to render the cubemap. Default is '32'.
Cubemap Entity Development Functions
===============================================================================
Specifies a location for which a cubemap will be generated when the
buildcubemaps console command is executed.
*/
int g_iCubeProcess;

View File

@ -14,6 +14,16 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED env_glow (1 0 0) (-8 -8 -8) (8 8 8)
"shader" Material to use for the glare/glow effect.
"model" Sprite model to use for the glare/glow (idTech 2 BSPs only)
"scale" Scale multiplier.
"rendercolor" Material color override in RGB8.
"renderamt" Material alpha override in A8.
Client-side glare/glow orb effect like the flares in 1997's Unreal.
*/
class env_glow:CBaseEntity
{
vector m_vecColor;

View File

@ -14,6 +14,49 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED env_sound (1 0 0) (-8 -8 -8) (8 8 8)
"radius" Radius in units.
"roomtype" Roomtype value:
0 = DEFAULT
1 = PADDEDCELL
2 = ROOM
3 = BATHROOM
4 = LIVINGROOM
5 = STONEROOM
6 = AUDITORIUM
7 = CONCERTHALL
8 = CAVE
9 = ARENA
10 = HANGAR
11 = CARPETEDHALLWAY
12 = HALLWAY
13 = STONECORRIDOR
14 = ALLEY
15 = FOREST
16 = CITY
17 = MOUNTAINS
18 = QUARRY
19 = PLAIN
20 = PARKINGLOT
21 = SEWERPIPE
22 = UNDERWATER
23 = DRUGGED
24 = DIZZY
25 = PSYCHOTIC
26 = CITYSTREETS
27 = SUBWAY
28 = MUSEUM
29 = LIBRARY
30 = UNDERPASS
31 = ABANDONED
32 = DUSTYROOM
33 = CHAPEL
34 = SMALLWATERROOM
Client-side environmental reverb modifier.
This works only with the OpenAL sound backend.
*/
int g_iDSP;
float g_flDSPCheck;

View File

@ -14,8 +14,16 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
var int autocvar_dev_skyscale = 0;
/*QUAKED sky_camera (1 0 0) (-8 -8 -8) (8 8 8)
"scale" Scale modifier. Default is '16'.
Defines the position of a skyroom camera.
You want to put this into a dedicated room that contains a 3D skybox.
The scale modifier is more like a divider. You want to keep these
divisable by 2 to avoid any precision funkyness.
*/
var int autocvar_dev_skyscale = 0;
var vector g_skypos;
var int g_skyscale;

View File

@ -14,6 +14,20 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED ambient_generic (1 0 0) (-8 -8 -8) (8 8 8) AS_SRADIUS AS_MRADIUS AS_LRADIUS AS_SILENT AS_NOTTOGGLED
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"message" Sound file to play
"volume" Playback volume from 0.0 to 1.0
"pitch" Playback pitch from 0.0 to 2.0
Plays a sound sample of whatever format the engine is configured to support.
If you want it to loop, you have to give the file itself a loop flag.
TODO: Add a forced loop flag for non .wav samples?
*/
enumflags {
AS_ARADIUS,
AS_SRADIUS,

View File

@ -14,23 +14,16 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
// TODO: Complete this once damage is done
/*QUAKED cycler (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"angles" Sets the pitch, yaw and roll angles of the model.
"sequence" Sets the animation the model should start in.
"model" Model file that will be displayed by the entity.
/*
* cycler - Point Entity
The cycler entity is a model viewer of sorts. It places a model within the map which, when attacked, will cycle its animation.
Attributes
Name (targetname) - Name is a general attribute used to identify entities.
Pitch Yaw Roll (Y Z X) (angles) - Sets the pitch, yaw and roll angles of the model.
Animation Sequence (editor) (sequence) - Sets the animation the model should start in. Setting this to anything other than 0 seems to place the cycler into its triggered mode (see notes).
Model (model) - This defines which model file will be displayed by the entity. This accepts an input of the form "path/filename.mdl" (starting from the root folder). (Example: "models/scientist.mdl").
Render FX (renderfx) - Gives the model certain visual effects depending on Render Mode.
Render Mode (rendermode) - Allows special rendering modes to be applied to the given entity.
FX Amount (1 - 255) (renderamt) - In all but "Normal" Render Mode, alters how transparent the model is. Scales from 0 (invisible) to 255 (solid, normal).
FX Color (R G B) (rendercolour) - Seemingly unused.
Notes
Triggering or pressing use on the cycler will freeze the model in its current animation. In this state, shooting the cycler will have it step through frames of the animation it was in. Triggering it or using it again will return it to its normal function.
Given the way this entity behaves, there is little practical use for this entity beyond viewing animations (for which there are programs that are far more convenient).
Upon damage, the cycler will switch between all available animation
sequences. This is really for test-maps and showroom entities.
*/
class cycler:CBaseTrigger

View File

@ -14,7 +14,15 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* https://twhl.info/wiki/page/cycler_sprite_(Half-Life) */
/*QUAKED cycler_sprite (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"angles" Sets the pitch, yaw and roll angles of the model.
"model" Model file that will be displayed by the entity.
Decorative, does nothing yet.
*/
class cycler_sprite:CBaseTrigger
{

View File

@ -14,6 +14,12 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED env_beam (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
This entity is incomplete. Purely stub.
*/
class env_beam {
void() env_beam;
};

View File

@ -14,7 +14,18 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
// Dependency from item_food.cpp
/*QUAKED env_beverage (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"health" Amount of soda-cans that can be dispensed at maximum
"angles" Sets the pitch, yaw and roll angles of the soda
Upon triggered, the entity will spawn item_food in its place in
the shape of a soda can.
*/
/* dependency from item_food.cpp */
void item_sodacan( void );
// TODO: Implement support for skins

View File

@ -14,6 +14,15 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED env_explosion (1 0 0) (-8 -8 -8) (8 8 8) ENVEXPLO_NODAMAGE ENVEXPLO_REPEATABLE ENVEXPLO_NOBALL ENVEXPLO_NOSMOKE ENVEXPLO_NODECAL ENVEXPLO_NOSPARKS
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"iMagnitude" Magnitude of the explosion.
When triggered, creates an explosion at its location.
*/
enumflags {
ENVEXPLO_NODAMAGE,
ENVEXPLO_REPEATABLE,

View File

@ -14,6 +14,19 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED env_fade (1 0 0) (-8 -8 -8) (8 8 8) EVF_FADEDROM EVF_MODULATE EVF_ONLYUSER
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"rendercolor" RGB8 Color of the fade effect.
"renderamt" A8 alpha value we'll hit at max.
"duration" Duration of the effect in seconds.
"holdtime" How long we'll hold on the max color/alpha.
When triggered, creates a colored overlay that blinds all players, or just
the one who triggered it if EVF_ONLYUSER is set.
*/
enumflags
{
EVF_FADEDROM,

View File

@ -14,6 +14,19 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED env_global (1 0 0) (-8 -8 -8) (8 8 8) GLOBAL_SETSPAWN
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"globalstate" The variable name in which we hold information in.
"initialstate" Initial mode: 0 = off, 1 = on, 2 = dead
"triggermode" Mode when triggered: 0 = off, 1 = on, 2 = dead
Sets/kills a global variable that carries across levels.
Without GLOBAL_SETSPAWN set, it'll only modify existing
values when triggered.
*/
#define GLOBAL_SETSPAWN 1
enum

View File

@ -14,6 +14,19 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED env_message (1 0 0) (-8 -8 -8) (8 8 8) EMF_ONCE EMF_ALLPLAYERS
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"message" Message to send to players
"messagesound" PCM sample to play when triggered
"messagevolume" PCM sample volume
"messageattenuation" PCM sample attenuation
Sends a message to either one or all players, depending on if EMF_ALLPLAYERS
is set. An optional sound effect can be supplied as well.
*/
enumflags
{
EMF_ONCE,

View File

@ -14,6 +14,17 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED env_render (1 0 0) (-8 -8 -8) (8 8 8) SF_NORENDERFX SF_NORENDERAMT SF_NORENDERMODE SF_NORENDERCOLOR
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"rendermode" Render-Mode the target changes to
"renderamt" Render-Alpha the target changes to
"rendercolor" Render-Color the target changes to
Changes the visual appearance of a target.
*/
enumflags {
SF_NORENDERFX,
SF_NORENDERAMT,

View File

@ -14,6 +14,19 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED env_shake (1 0 0) (-8 -8 -8) (8 8 8) EVS_GLOBAL
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"radius" Radius of the quake/shake effect.
"amplitude" Amplitude of the effect.
"duration" Duration of the effect in seconds.
"frequency" The frequency of the shake.
Causes an earthquake/shaking effect when triggered.
Affects all clients (radius ignored) when EVS_GLOBAL is set.
*/
#define EVS_GLOBAL 1
class env_shake : CBaseTrigger
@ -29,14 +42,14 @@ class env_shake : CBaseTrigger
void env_shake :: Trigger (void)
{
for (entity eClients = world; (eClients = find(eClients, ::classname, "Player"));) {
for (entity e = world; (e = find(e, ::classname, "Player"));) {
WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET);
WriteByte(MSG_MULTICAST, EV_SHAKE);
WriteFloat(MSG_MULTICAST, m_flRadius);
WriteFloat(MSG_MULTICAST, m_flAmplitude);
WriteFloat(MSG_MULTICAST, m_flDuration);
WriteFloat(MSG_MULTICAST, m_flFrequency);
msg_entity = eClients;
msg_entity = e;
multicast('0 0 0', MULTICAST_ONE_R);
}
}

View File

@ -14,6 +14,23 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED env_shooter (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"angles" Sets the pitch, yaw and roll direction of the shooter.
"shootmodel" Model file to shoot.
"shootsounds" PCM sample to play whenever a piece shoots out.
"m_iGibs" Amount of models shot in total.
"m_flDelay" Delay before being able to be fired again.
"m_flVelocity" Speed of the models in units per second.
"m_flVariance" Delay between shots.
"m_flGibLife" Life of the individual model piece.
"scale" Scale modifier of the model pieces.
Shoots model entities from its location.
*/
class env_shooter : CBaseTrigger
{
int m_iGibs;

View File

@ -14,6 +14,16 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED env_spark (1 0 0) (-8 -8 -8) (8 8 8) x x x x x EVSPARK_TOGGLE EVSPARK_STARTON
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"angles" Sets the pitch, yaw and roll angles of the spark.
"MaxDelay" Delay between sparks when start-on (or toggle) is set
Creates a series (or just one) spark effect with sound when triggered.
*/
enumflags
{
EVSPARK_UNUSED1,

View File

@ -14,7 +14,21 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* https://twhl.info/wiki/page/env_sprite_(Half-Life) */
/*QUAKED env_sprite (1 0 0) (-8 -8 -8) (8 8 8) ENVS_STARTON ENVS_PLAYONCE
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"angles" Sets the pitch, yaw and roll angles of the sprite.
"model" Path to the sprite in question.
"rendercolor" Color modifier of the sprite.
"renderamt" Alpha modifier of the sprite.
"rendermode" Render mode of the sprite.
"framerate" Rate between frames in seconds.
"scale" Scale modifier of the sprite.
A sprite entity manager with fancy overrides.
Only used with an external sprite format, like SPR, SPRHL and SPR32.
*/
enumflags
{

View File

@ -14,11 +14,25 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
Flags
Only Trigger (1) - Entity can only be activated (broken) by being triggered.
Touch (2) - Brush will break on touch.
Pressure (4) - Brush will break when pressured (e.g. player walking on it).
/*QUAKED func_breakable (0 .5 .8) ? SF_TRIGGER SF_TOUCH SF_PRESSURE
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"material" Material it's made of.
"delay" Delay in seconds of when it breaks under pressure.
"explodemagnitude" Strength of the explosion.
Brush volume that can break into lots of little pieces.
When SF_TOUCH is set, it'll break when an entity runs into it at high
velocities (damage is speed in units * 0.01).
When SF_PRESSURE is set, it'll collapse once someone is standing on top of it.
At that point the "delay" key will decide after how many seconds the object
breaks.
The strength of the explosion decides the radius (magnitude * 2.5) and the
maximum damage the explosion will do (you have to stand in the center for that).
*/
enumflags

View File

@ -14,6 +14,14 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED func_button (0 .5 .8) ?
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
STUB!
*/
#define SF_BTT_NOMOVE 1
#define SF_BTT_TOGGLE 32
#define SF_BTT_SPARKS 64

View File

@ -14,7 +14,15 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#define SF_CONVEYOR_VISUAL 1
/*QUAKED func_conveyor (0 .5 .8) ?
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
STUB!
*/
#define SF_CONVEYOR_VISUAL 1
#define SF_CONVEYOR_NOTSOLID 2
class func_conveyor : func_wall

View File

@ -14,12 +14,20 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED func_door (0 .5 .8) ?
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
STUB!
*/
// TODO: Finish these
#define SF_MOV_OPEN 1
#define SF_MOV_UNLINK 4
#define SF_MOV_PASSABLE 8
#define SF_MOV_PASSABLE 8
#define SF_MOV_TOGGLE 32
#define SF_MOV_USE 256
#define SF_MOV_USE 256
enum
{

View File

@ -14,6 +14,14 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED func_door_rotating (0 .5 .8) ?
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
STUB!
*/
enumflags
{
SF_ROT_OPEN,

View File

@ -14,6 +14,16 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED func_guntarget (0 .5 .8) ?
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"health" Health until it stops and triggers its targets.
"speed" Speed in units per second at which it moves.
Gun targets brushes that trigger a target once they 'die'.
*/
#define SF_GUNTARGET_ON 1
class func_guntarget:CBaseTrigger

View File

@ -14,12 +14,27 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED func_healthcharger (0 .5 .8) ?
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"snd_first" Sound to play when first used.
"snd_charging" Sound to play when first charging.
"snd_done" Sound to play when first finished charging.
Brush that fills up your health when used, to a maximum of 100 HP.
*/
class func_healthcharger:CBaseTrigger
{
entity m_eUser;
float m_flDelay;
float m_flCheck;
string m_strSndFirst;
string m_strSndCharging;
string m_strSndDone;
void() func_healthcharger;
virtual void() customphysics;
virtual void() PlayerUse;
@ -28,7 +43,7 @@ class func_healthcharger:CBaseTrigger
void func_healthcharger::PlayerUse(void)
{
eActivator.gflags |= GF_USE_RELEASED;
/* First come first serve */
if (m_eUser && eActivator != m_eUser) {
return;
@ -36,19 +51,19 @@ void func_healthcharger::PlayerUse(void)
/* First time */
if (m_eUser == world) {
sound(this, CHAN_VOICE, "items/medshot4.wav", 1.0, ATTN_NORM);
sound(this, CHAN_VOICE, m_strSndFirst, 1.0, ATTN_NORM);
}
if (m_flDelay > time) {
return;
}
if (eActivator.health >= 100) {
eActivator.gflags &= ~GF_USE_RELEASED;
sound(this, CHAN_VOICE, "items/medshotno1.wav", 1.0, ATTN_NORM);
sound(this, CHAN_VOICE, m_strSndDone, 1.0, ATTN_NORM);
} else {
if (m_eUser == world) {
sound(this, CHAN_ITEM, "items/medcharge4.wav", 1.0, ATTN_NORM);
sound(this, CHAN_ITEM, m_strSndCharging, 1.0, ATTN_NORM);
}
eActivator.health = bound(0, eActivator.health += 1, 100);
}
@ -63,6 +78,7 @@ void func_healthcharger::customphysics(void)
if (m_flCheck > time) {
return;
}
if (m_eUser) {
sound(this, CHAN_ITEM, "misc/null.wav", 1.0, ATTN_NORM);
m_eUser = world;
@ -71,10 +87,29 @@ void func_healthcharger::customphysics(void)
void func_healthcharger::func_healthcharger(void)
{
precache_sound("items/medshot4.wav");
precache_sound("items/medshotno1.wav");
precache_sound("items/medcharge4.wav");
m_strSndFirst = "items/medshot4.wav";
m_strSndCharging = "items/medcharge4.wav";
m_strSndDone = "items/medshotno1.wav";
for (int i = 1; i < (tokenize(__fullspawndata) - 1); i += 2) {
switch (argv(i)) {
case "snd_first":
m_strSndFirst = argv(i+1);
break;
case "snd_charging":
m_strSndCharging = argv(i+1);
break;
case "snd_done":
m_strSndDone = argv(i+1);
break;
default:
break;
}
}
precache_sound(m_strSndFirst);
precache_sound(m_strSndCharging);
precache_sound(m_strSndDone);
solid = SOLID_BSP;
movetype = MOVETYPE_PUSH;

View File

@ -14,8 +14,17 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED func_illusionary (0 .5 .8) ?
"targetname" Name
Brush that lets light to pass through it and is non-solid.
On idTech 2 BSPs, it will change texture variants when triggered.
*/
class func_illusionary : CBaseEntity
{
void() func_illusionary;
virtual void() Use;
};
@ -28,7 +37,7 @@ void func_illusionary :: func_illusionary ( void )
solid = SOLID_NOT;
setmodel( this, model );
// FIXME: Add support for (skin) -1 = Empty, -7 = Volumetric light
// TODO: Add support for (skin) -1 = Empty, -7 = Volumetric light
if (skin < 0 ) {
skin = 0;
}

View File

@ -14,6 +14,12 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED func_ladder (0 .5 .8) ?
"targetname" Name
Ladder volume. Climb up ladders with this one simple brush.
*/
string g_laddersnd[] = {
"player/pl_ladder1.wav",
"player/pl_ladder2.wav",

View File

@ -14,6 +14,14 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED func_pushable (0 .5 .8) ? SF_TRIGGER SF_TOUCH SF_PRESSURE
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
STUB!
*/
class func_pushable:func_breakable
{

View File

@ -14,12 +14,27 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED func_recharge (0 .5 .8) ?
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"snd_first" Sound to play when first used.
"snd_charging" Sound to play when first charging.
"snd_done" Sound to play when first finished charging.
Brush that fills up your armor when used, to a maximum of 100 points.
*/
class func_recharge:CBaseTrigger
{
entity m_eUser;
float m_flDelay;
float m_flCheck;
string m_strSndFirst;
string m_strSndCharging;
string m_strSndDone;
void() func_recharge;
virtual void() customphysics;
virtual void() PlayerUse;
@ -36,7 +51,7 @@ void func_recharge::PlayerUse(void)
/* First time */
if (m_eUser == world) {
sound(this, CHAN_VOICE, "items/suitchargeok1.wav", 1.0, ATTN_NORM);
sound(this, CHAN_VOICE, m_strSndFirst, 1.0, ATTN_NORM);
}
if (m_flDelay > time) {
@ -45,10 +60,10 @@ void func_recharge::PlayerUse(void)
if (eActivator.armor >= 100) {
eActivator.gflags &= ~GF_USE_RELEASED;
sound(this, CHAN_VOICE, "items/suitchargeno1.wav", 1.0, ATTN_NORM);
sound(this, CHAN_VOICE, m_strSndDone, 1.0, ATTN_NORM);
} else {
if (m_eUser == world) {
sound(this, CHAN_ITEM, "items/suitcharge1.wav", 1.0, ATTN_NORM);
sound(this, CHAN_ITEM, m_strSndCharging, 1.0, ATTN_NORM);
}
eActivator.armor = bound(0, eActivator.armor += 1, 100);
}
@ -71,10 +86,29 @@ void func_recharge::customphysics(void)
void func_recharge::func_recharge(void)
{
precache_sound("items/suitchargeok1.wav");
precache_sound("items/suitchargeno1.wav");
precache_sound("items/suitcharge1.wav");
m_strSndFirst = "items/suitchargeok1.wav";
m_strSndCharging = "items/suitcharge1.wav";
m_strSndDone = "items/suitchargeno1.wav";
for (int i = 1; i < (tokenize(__fullspawndata) - 1); i += 2) {
switch (argv(i)) {
case "snd_first":
m_strSndFirst = argv(i+1);
break;
case "snd_charging":
m_strSndCharging = argv(i+1);
break;
case "snd_done":
m_strSndDone = argv(i+1);
break;
default:
break;
}
}
precache_sound(m_strSndFirst);
precache_sound(m_strSndCharging);
precache_sound(m_strSndDone);
solid = SOLID_BSP;
movetype = MOVETYPE_PUSH;

View File

@ -14,6 +14,16 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED func_rotating (0 .5 .8) ? FR_STARTON FR_REVERSE FR_ZAXIS FR_XAXIS FR_ACCDCC FR_FANPAIN FR_NOTSOLID FR_SMALLRADIUS FR_MRADIUS FR_LRADIUS
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"speed" Speed in units per second.
"dmg" Damage applied to entity blocking its rotational path.
Rotating brush object. Useful for fans, etc.
*/
enumflags
{
FR_STARTON,
@ -45,6 +55,7 @@ void func_rotating :: Rotate( void )
{
nextthink = ltime + 10.0f;
}
void func_rotating :: Trigger ( void )
{
if ( vlen( avelocity ) ) {

View File

@ -14,6 +14,15 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED func_tracktrain (0 .5 .8) ?
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
Moving platform following along path_* entities that's fully user controlled.
Very unfinished.
*/
class func_tracktrain:CBaseTrigger
{
float m_flSpeed;

View File

@ -14,6 +14,15 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED func_train (0 .5 .8) ?
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
Moving platform following along path_* entities.
Very unfinished.
*/
class func_train:CBaseTrigger
{
float m_flSpeed;

View File

@ -14,6 +14,13 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED func_wall (0 .5 .8) ?
"targetname" Name
Brush that lets light to pass through it.
On idTech 2 BSPs, it will change texture variants when triggered.
*/
class func_wall : CBaseTrigger
{
void() func_wall;

View File

@ -14,6 +14,14 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED func_wall_toggle (0 .5 .8) ? FTW_STARTHIDDEN
"targetname" Name
Brush that can be hidden and reappear when triggered.
If FTW_STARTHIDDEN is set, it'll start hidden.
*/
enumflags
{
FTW_STARTHIDDEN

View File

@ -14,6 +14,33 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED game_text (1 0 0) (-8 -8 -8) (8 8 8) GTF_ALLPLAYERS
"targetname" Name
"x" Horizontal position of text.
(0 - 1.0 = left to right, -1 = center)
"y" Vertical position of text.
(0 - 1.0 = top to bottom, -1 = center)
"effect" Effect to apply to the text.
Valid values:
0 = Fade In/Out
1 = Credits
2 = Scan Out
"color" The main colour in RGB8.
"color2" The highlight colour in RGB8.
"fadein" Time taken to fade in each character.
"fadeout" Time taken to fade out message.
"holdtime" Length of time to hold message on screen after fading in.
"fxtime" Time the highlight lags behind the leading edge of the text in
seconds.
"channel" Message channel to use. Meant for overriding messages.
This entity displays a message of your choice on-screen.
Line breaks can be added with a \n character.
If GTF_ALLPLAYERS is set, it'll display the message to not just the activator,
but all players on the level.
*/
enumflags
{
GTF_ALLPLAYERS

View File

@ -14,6 +14,15 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED infodecal (1 0 0) (-8 -8 -8) (8 8 8)
"texture" Name of the texture inside decals.wad it projects onto a surface.
This entity only works on BSP version 30 levels.
Projects a decals.wad texture onto the nearest surface.
It'll automatically figure out the surface based on distance.
The texture will be aligned along the surface texture normals.
*/
/* We need to save trace infos temporarily in order to figure out what to
* project the decal against. Half-Life's infodecal entity only stores origin,
* but not angles. So we have to figure them out ourselves. */

View File

@ -14,6 +14,14 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED item_food (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
"angles" Sets the pitch, yaw and roll angles of the model.
"model" Model file that will be displayed by the entity.
This is a food item that will give the user 1 health when touched.
*/
class item_food
{
int m_iIsCan;

View File

@ -14,6 +14,45 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED light (1 0 0) (-8 -8 -8) (8 8 8) OFF_OR_LINEAR
"targetname" Name
Infinitely small point of light illuminating the scene.
idTech 3 BSP relevant keys:
"light" Light intensity value. Default is '300'.
"_color" Normalized RGB color value. Default is '1 1 1'.
"radius" Sets the light cone radius. Default is '64'.
"target" When set, targets an enity instead, becoming a spotlight.
If OFF_OR_LINEAR is set, the light will be cast with a linear falloff instead
of inverse square. This is useful for bright lights that'll travel long
distances.
idTech 2 BSP relevant keys:
"light" Defines the brightness of the light.
"style" Light style ID. 0-11 are defined, 12-32 are reserved for switched
lights. List of pre-defined styles:
0 = Normal
1 = Flicker A
2 = Slow strong pulse
3 = Candle A
4 = Fast strobe
5 = Gentle pulse
6 = Flicker B
7 = Candle B
8 = Candle C
9 = Slow strobe
10 = Fluorescent flicker
11 = Slow pulse, no black
"pattern" Custom light style pattern. Needs unique light style ID.
Patterns are defined with letters of the alphabet.
'a' being dark. 'z' being fully lit. Can be a string of characters
that'll interpolate between at 10 FPS ingame.
If OFF_OR_LINEAR is set, it starts off/disabled.
*/
class light:CBaseTrigger
{
int m_iEnabled;

View File

@ -14,6 +14,14 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED monster_furniture (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
"angles" Sets the pitch, yaw and roll angles of the model.
"model" Model file that will be displayed by the entity.
Decorative, does nothing yet.
*/
enumflags
{
MF_WAITTILSEEN,

View File

@ -14,6 +14,14 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED monster_generic (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
"angles" Sets the pitch, yaw and roll angles of the model.
"model" Model file that will be displayed by the entity.
Decorative, does nothing yet.
*/
enumflags
{
MF_WAITTILLSEEN,

View File

@ -14,6 +14,15 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED monstermaker (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
All it does right now is spawn snarks, regardless of what monster you want to
spawn.
*/
#ifdef VALVE
void() w_snark_deploy;
#endif

View File

@ -14,6 +14,17 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED multi_manager (1 0 0) (-8 -8 -8) (8 8 8) MM_MULTITHREADED
"targetname" Name
Triggers a maximum of 16 user defined entities with additonal timers.
Add a target's name as an entity key, with the value set to the time in seconds
that'll pass before the entity will be triggered.
If MM_MULTITHREADED is set, it'll allow the multi_manager to be triggered
again before it has finished triggering it's previous list of entities.
*/
#define MM_MULTITHREADED 1
class multi_manager : CBaseTrigger

View File

@ -14,6 +14,14 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED multisource (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
STUB!
*/
class multisource : CBaseTrigger
{
void() multisource;

View File

@ -14,6 +14,14 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED path_corner (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
STUB!
*/
class path_corner:CBaseTrigger
{
float m_flSpeed;

View File

@ -14,6 +14,14 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED path_track (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
STUB!
*/
class path_track:CBaseTrigger
{
float m_flSpeed;

View File

@ -14,6 +14,20 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED scripted_sentence (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"entity" Name of the entity that'll speak the sentence.
"sentence" Name of sentence from titles.txt.
"pitch" Desired sound pitch. May be overridden in the titles.txt entry.
"delay" Delay before it'll be triggered? UNUSED RIGHT NOW.
"wait" Delay before it can be triggered again? UNUSED RIGHT NOW.
Triggers a sound event on the client side associated with an entity in the
world. It'll enable mouth flapping and all sorts of other cool effects.
*/
class scripted_sentence:CBaseTrigger
{
string m_strSpeaker;

View File

@ -14,6 +14,29 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED scripted_sequence (1 0 0) (-8 -8 -8) (8 8 8) x x SSFL_REPEATABLE SSFL_LEAVECORPSE x SSFL_NOINTERRUPT SSFL_OVERRIDEAI SSFL_NOSCRIPTMOVE
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"m_iszEntity" Entity targetname OR classname description to target
"m_iszPlay" After the monster has moved to the action point, play this animation
"m_iszIdle" Animation to play until the scripted_sequence is triggered
"m_flRadius" Search radius for m_targetMonster if a classname is specified
"m_flRepeat" Loop? Unused.
"m_fMoveTo" How we move to perform m_iActionAnim
f_fMoveTo values:
0 = Don't move or turn
1 = Walk to the scripted_sequence
2 = Run to the scripted_sequence
3 = Unused/Not defined. Do not use this.
4 = Warp to the location of the scripted_sequence and perform the animation.
5 = Turn to the scripted_sequence's angle before performing the animation.
Allow a monster to be selected and given an action to perform.
This is done in the form of olaying an animation.
*/
/*
* Scripted Sequences
* ==================

View File

@ -14,6 +14,17 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED trigger_auto (1 0 0) (-8 -8 -8) (8 8 8) TA_USEONCE
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"delay" Time in seconds until it triggers its target.
Will automatically start working when the level has spawned.
If TA_USEONCE is set, it'll remove itself from the level permanently.
It will not survive round respawns, etc.
*/
class trigger_auto:CBaseTrigger
{
float m_flDelay;

View File

@ -14,6 +14,13 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED trigger_autosave (0 .5 .8) ?
"targetname" Name
Volume that'll save the current game when a client enters its bounds.
This entity does not work in multiplayer.
*/
class trigger_autosave:CBaseTrigger
{
float m_flDelay;

View File

@ -14,6 +14,15 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED trigger_camera (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
"angles" Sets the pitch, yaw and roll angles of the camera
"target" Which entity we're aiming at. Overrides angles.
"wait" How long to hold onto the target.
Causes the activators first-person camera to switch to the view of this entity.
*/
class trigger_camera:CBaseTrigger
{
float m_flWait;

View File

@ -14,6 +14,13 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED trigger_cdaudio (0 .5 .8) ?
"targetname" Name
"health" Music track to play.
Switches the background music track when triggered.
*/
class trigger_cdaudio : CBaseTrigger
{
int m_iCDTrack;

View File

@ -14,6 +14,23 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED trigger_changelevel (0 .5 .8) ? LC_NOINTERMISSION LC_USEONLY
"targetname" Name
"map" Next .bsp file name to transition to.
"landmark" Landmark name to target.
"changedelay" Time in seconds until the transition happens.
When a Landmark is specified, you will have to position two info_landmark
entities across your two levels with the same name. They'll mark a translation
point for the coordinates in your levels.
When LC_NOINTERMISSION is set, there'll be no stats screen at the end of the
level.
When LC_USEONLY is set, it will not act as a trigger volume people can step in.
It'll have to be triggered by another entity.
*/
vector g_landmarkpos;
enumflags

View File

@ -14,6 +14,13 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED trigger_endsection (0 .5 .8) ?
"targetname" Name
This trigger shuts down the server.
Useful for when a singleplayer game ends, as it takes you to the main menu.
*/
class trigger_endsection:CBaseTrigger
{
void() trigger_endsection;

View File

@ -14,6 +14,13 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED trigger_gravity (0 .5 .8) ?
"targetname" Name
"gravity" Gravity multiplier.
Volume that permanently adds a multiplier that affects an entities' gravity.
*/
#ifdef CSQC
class trigger_gravity:CBaseEntity
#else

View File

@ -14,9 +14,26 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#define SF_HURT_ONCE 1 // Turn off once it fired the first time
#define SF_HURT_OFF 2 // Needs to be triggered in order to work again
#define SF_HURT_NOPLAYERS 8 // Don't hurt players
/*QUAKED trigger_hurt (0 .5 .8) ? SF_HURT_ONCE SF_HURT_OFF x SF_HURT_NOPLAYERS SF_HURT_FIREONPLAYER SF_HURT_TOUCHPLAYER
"targetname" Name
"target" Target when triggered.
"delay" Delay until target is triggered.
"killtarget" Target to kill when triggered.
"dmg" Damage inflicted.
Trigger volume that damages everything it touches.
If SF_HURT_ONCE is set, it'll stop once it's been triggered the first time.
If SF_HURT_OFF is set, it needs to be triggered in order to work again.
If SF_HURT_NOPLAYERS is set, it will only NPCs.
If SF_HURT_TOUCHPLAYER is set, it'll only hurt players.
If SF_HURT_FIREONPLAYER is set, it'll only trigger a target if a player
activates it.
*/
#define SF_HURT_ONCE 1 // Turn off once it fired the first time
#define SF_HURT_OFF 2 // Needs to be triggered in order to work again
#define SF_HURT_NOPLAYERS 8 // Don't hurt players
#define SF_HURT_FIREONPLAYER 16 // Only call UseTarget functions when it's a player
#define SF_HURT_TOUCHPLAYER 32 // Only hurt players

View File

@ -14,6 +14,18 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED trigger_multiple (0 .5 .8) ? TM_MONSTERS TM_NOCLIENTS TM_PUSHABLES
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"delay" Delay until target is triggered.
"wait" Time until this entity can trigger again
A trigger volume which works more than once.
None of the spawnflags are implemented yet.
*/
// TODO: These are missing
enumflags
{

View File

@ -14,6 +14,17 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED trigger_once (0 .5 .8) ? TO_MONSTERS TO_NOCLIENTS TO_PUSHABLES
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
"delay" Delay until target is triggered.
A trigger volume which works only once.
None of the spawnflags are implemented yet.
*/
// TODO: These are missing
enumflags
{

View File

@ -14,6 +14,17 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED trigger_push (0 .5 .8) ? TP_ONCE TP_STARTOFF
"targetname" Name
"speed" The speed (units per second) it'll apply to touchers.
"angles" Sets the direction of the push.
Pushes anything in its volume into a direction of your choosing.
If TP_ONCE is set, It'll only emit a single push once before disabling itself.
If TP_STARTOFF is set, it needs to be triggered first in order to function.
*/
#define TP_ONCE 1
#define TP_STARTOFF 2
#define TP_AAAA 4

View File

@ -14,4 +14,12 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED trigger_relay (0 .5 .8) ?
"targetname" Name
"target" Target when triggered.
"killtarget" Target to kill when triggered.
See trigger_once.
*/
CLASSEXPORT(trigger_relay, trigger_once)

View File

@ -14,6 +14,14 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED trigger_teleport (0 .5 .8) ?
"targetname" Name
"target" Which target to teleport to.
Teleportation volume. Teleports anything it touches to the position of
any entity set as the "target". Works best with info_teleport_destination.
*/
class trigger_teleport:CBaseTrigger
{
void() trigger_teleport;
@ -48,4 +56,9 @@ void trigger_teleport::trigger_teleport(void)
CBaseTrigger::InitBrushTrigger();
}
/*QUAKED info_teleport_destination (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
Entity designed to designate a destination for a trigger_teleport.
*/
CLASSEXPORT(info_teleport_destination, info_notnull)

View File

@ -14,6 +14,13 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED trigger_transition (0 .5 .8) ?
"targetname" Name
Currently unused. This is meant for defining level transition regions.
All entities touching this volume would carry across to the next level.
*/
class trigger_transition
{
void() trigger_transition;

View File

@ -220,25 +220,25 @@ void w_cannon_hudpic(int s, vector pos)
weapon_t w_cannon =
{
ITEM_CANNON,
2,
3,
"sprites/w_cannon.spr_0.tga",
[48,16],
[192,0],
w_cannon_draw,
w_cannon_holster,
w_cannon_primary,
w_cannon_secondary,
w_cannon_reload,
w_cannon_release,
w_cannon_crosshair,
w_cannon_precache,
w_cannon_pickup,
w_cannon_updateammo,
__NULL__,
w_cannon_pmodel,
w_cannon_deathmsg,
w_cannon_aimanim,
w_cannon_hudpic
.id = ITEM_CANNON,
.slot = 2,
.slot_pos = 3,
.ki_spr = "sprites/w_cannon.spr_0.tga",
.ki_size = [48,16],
.ki_xy = [192,0],
.draw = w_cannon_draw,
.holster = w_cannon_holster,
.primary = w_cannon_primary,
.secondary = w_cannon_secondary,
.reload = w_cannon_reload,
.release = w_cannon_release,
.crosshair = w_cannon_crosshair,
.precache = w_cannon_precache,
.pickup = w_cannon_pickup,
.updateammo = w_cannon_updateammo,
.wmodel = __NULL__,
.pmodel = w_cannon_pmodel,
.deathmsg = w_cannon_deathmsg,
.aimanim = w_cannon_aimanim,
.hudpic = w_cannon_hudpic
};

View File

@ -153,25 +153,25 @@ void w_chainsaw_hudpic(int s, vector pos)
weapon_t w_chainsaw =
{
ITEM_CHAINSAW,
0,
2,
"sprites/chainsaw.spr_0.tga",
[48,16],
[192,0],
w_chainsaw_draw,
w_chainsaw_holster,
w_chainsaw_primary,
w_chainsaw_release,
w_chainsaw_release,
w_chainsaw_release,
__NULL__,
w_chainsaw_precache,
__NULL__,
w_chainsaw_updateammo,
__NULL__,
w_chainsaw_pmodel,
w_chainsaw_deathmsg,
w_chainsaw_aimanim,
w_chainsaw_hudpic
.id = ITEM_CHAINSAW,
.slot = 0,
.slot_pos = 2,
.ki_spr = "sprites/chainsaw.spr_0.tga",
.ki_size = [48,16],
.ki_xy = [192,0],
.draw = w_chainsaw_draw,
.holster = w_chainsaw_holster,
.primary = w_chainsaw_primary,
.secondary = w_chainsaw_release,
.reload = w_chainsaw_release,
.release = w_chainsaw_release,
.crosshair = __NULL__,
.precache = w_chainsaw_precache,
.pickup = __NULL__,
.updateammo = w_chainsaw_updateammo,
.wmodel = __NULL__,
.pmodel = w_chainsaw_pmodel,
.deathmsg = w_chainsaw_deathmsg,
.aimanim = w_chainsaw_aimanim,
.hudpic = w_chainsaw_hudpic
};

View File

@ -215,25 +215,25 @@ void w_hammer_hudpic(int s, vector pos)
weapon_t w_hammer =
{
ITEM_HAMMER,
0,
1,
"sprites/hammer.spr_0.tga",
[48,16],
[192,0],
w_hammer_draw,
w_hammer_holster,
w_hammer_primary,
w_hammer_secondary,
w_hammer_reload,
w_hammer_release,
__NULL__,
w_hammer_precache,
__NULL__,
w_hammer_updateammo,
__NULL__,
w_hammer_pmodel,
w_hammer_deathmsg,
w_hammer_aimanim,
w_hammer_hudpic
.id = ITEM_HAMMER,
.slot = 0,
.slot_pos = 1,
.ki_spr = "sprites/hammer.spr_0.tga",
.ki_size = [48,16],
.ki_xy = [192,0],
.draw = w_hammer_draw,
.holster = w_hammer_holster,
.primary = w_hammer_primary,
.secondary = w_hammer_secondary,
.reload = w_hammer_reload,
.release = w_hammer_release,
.crosshair = __NULL__,
.precache = w_hammer_precache,
.pickup = __NULL__,
.updateammo = w_hammer_updateammo,
.wmodel = __NULL__,
.pmodel = w_hammer_pmodel,
.deathmsg = w_hammer_deathmsg,
.aimanim = w_hammer_aimanim,
.hudpic = w_hammer_hudpic
};

View File

@ -36,7 +36,7 @@ float Spray_SendEntity(entity ePVSEnt, float fChanged)
WriteCoord(MSG_ENTITY, self.angles[2]);
WriteEntity(MSG_ENTITY, self.owner);
return TRUE;
}
}
void CSEv_Spraylogo(void)
{