Nuclide
Software Development Kit for id Technology
NSSurfacePropEntity.h
1/*
2 * Copyright (c) 2016-2024 Vera Visions LLC.
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
13 * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
14 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*/
16
17#ifdef CLIENT
18noref .float health;
19#endif
20
21typedef enumflags
22{
23 SRFENT_CHANGED_ORIGIN_X,
24 SRFENT_CHANGED_ORIGIN_Y,
25 SRFENT_CHANGED_ORIGIN_Z,
26 SRFENT_CHANGED_ANGLES_X,
27 SRFENT_CHANGED_ANGLES_Y,
28 SRFENT_CHANGED_ANGLES_Z,
29 SRFENT_CHANGED_MODELINDEX,
30 SRFENT_CHANGED_SIZE,
31 SRFENT_CHANGED_FLAGS,
32 SRFENT_CHANGED_SOLIDMOVETYPE,
33 SRFENT_CHANGED_FRAME,
34 SRFENT_CHANGED_SKIN,
35 SRFENT_CHANGED_EFFECTS,
36 SRFENT_CHANGED_BODY,
37 SRFENT_CHANGED_SCALE,
38 SRFENT_CHANGED_VELOCITY,
39 SRFENT_CHANGED_ANGULARVELOCITY,
40 SRFENT_CHANGED_RENDERCOLOR,
41 SRFENT_CHANGED_RENDERAMT,
42 SRFENT_CHANGED_RENDERMODE,
43 SRFENT_CHANGED_CONTROLLER
44} nssurfacepropentity_changed_t;
45
52{
53public:
54 void NSSurfacePropEntity(void);
55
56 /* overrides */
57 virtual void Spawned(void);
58 virtual void SetModel(string);
59
60#ifdef SERVER
61 virtual void Save(float);
62 virtual void Restore(string,string);
63 virtual void Respawn(void);
64 virtual void Input(entity,string,string);
65 virtual void SpawnKey(string,string);
66 virtual void ParentUpdate(void);
67 virtual void EvaluateEntity(void);
68 virtual float SendEntity(entity,float);
69#endif
70
71#ifdef CLIENT
72 virtual float predraw(void);
73 virtual void ReceiveEntity(float,float);
74#endif
75
77 nonvirtual bool IsOnFire(void);
78
79 /* new */
80#ifdef SERVER
82 virtual void Damage(entity, entity, NSDict, float, vector, vector);
84 virtual void DamageFeedback(entity, entity, int);
86 virtual void Pain(entity, entity, int, vector, vector, int);
88 virtual void Death(entity, entity, int, vector, vector, int);
90 virtual void BreakModel(int, vector, int);
92 virtual bool IsAlive(void);
93
95 nonvirtual void Ignite(entity, float, int);
97 nonvirtual void Extinguish(void);
98
100 nonvirtual bool CanBleed(void);
102 nonvirtual bool IsVulnerable(void);
103
104 /* Generic Damage */
106 nonvirtual void EnableBleeding(void);
108 nonvirtual void DisableBleeding(void);
110 nonvirtual void EnableAimAssist(void);
112 nonvirtual void DisableAimAssist(void);
114 nonvirtual void MakeVulnerable(void);
116 nonvirtual void MakeInvulnerable(void);
118 nonvirtual void SetHealth(float);
120 nonvirtual void SetMaxHealth(float);
122 nonvirtual float GetHealth(void);
124 nonvirtual float GetMaxHealth(void);
125
127 nonvirtual void SetArmor(float);
129 nonvirtual float GetArmor(void);
130
132 nonvirtual void SetMaxArmor(float);
134 nonvirtual float GetMaxArmor(void);
135
137 nonvirtual float GetSpawnHealth(void);
139 nonvirtual float TimeSinceDeath(void);
140
142 nonvirtual bool CanBeDamaged(vector,vector);
143
145 nonvirtual void SetBloodColor(vector);
147 nonvirtual vector GetBloodColor(void);
148#endif
149
150
152 nonvirtual void SetSurfaceData(string);
154 nonvirtual void SetPropData(string);
156 nonvirtual bool HasPropData(void) ;
158 nonvirtual __variant GetPropData(int);
160 nonvirtual bool HasSurfaceData(void);
162 nonvirtual __variant GetSurfaceData(int);
163
164#ifdef CLIENT
166 virtual void RenderFire(void);
167#endif
168
169private:
170 float m_flBurnNext;
171
172 PREDICTED_FLOAT(armor)
173 PREDICTED_FLOAT_N(health)
174
175 /* Surface/PropKit */
176 int m_iMaterial;
177 string m_strSurfData;
178 int m_iPropData;
179 string m_strPropData;
180 nonvirtual void _SurfaceDataFinish(void);
181 nonvirtual void _PropDataFinish(void);
182
183#ifdef SERVER
184 float max_armor;
185
186 /* fire/burning */
187 entity m_eBurner;
188 int m_iBurnWeapon;
189 float m_flBurnTime;
190 float m_flBurnDmgTime; /* for whenever they touch a hot flame */
191
192 /* I/O */
193 string m_strOnBreak;
194
195 /* life, death */
196 float m_oldHealth;
197 vector m_vecBloodColor;
198
199 float m_flDeathTime;
200 bool m_bAutoAim;
201 bool m_bTakesDamage;
202
203 nonvirtual void _UpdateTakedamage(void);
204#endif
205};
206
207#ifdef CLIENT
208void NSSurfacePropEntity_ReadEntity(bool);
209#endif
This class is responsible for handling groups of key/value pairs.
Definition: NSDict.h:42
This entity represents any NSEntity with advanced rendering properties.
Definition: NSRenderableEntity.h:94
This entity represents an NSRenderableEntity with interactive surface properties.
Definition: NSSurfacePropEntity.h:52
virtual void BreakModel(int, vector, int)
Called when the health is equal or below 0.
Definition: NSSurfacePropEntity.qc:530
nonvirtual void SetPropData(string)
Assigns the prop data of a given description onto this entity.
Definition: NSSurfacePropEntity.qc:812
virtual void RenderFire(void)
Called every frame to render a fire effect, but will only do so if the entity is burning.
virtual void Save(float)
Handles saving a copy of this entity to a given filehandle.
Definition: NSSurfacePropEntity.qc:375
nonvirtual void DisableAimAssist(void)
Makes the entity invisible to other entity their aim-assists.
Definition: NSSurfacePropEntity.qc:106
nonvirtual float GetMaxHealth(void)
Returns the maximum health the entity can have.
Definition: NSSurfacePropEntity.qc:176
virtual void SetModel(string)
Sets the 3D model representation of the entity from a file path and name.
Definition: NSSurfacePropEntity.qc:876
virtual void EvaluateEntity(void)
Run each tic after physics are run to determine if we need to send updates over the network.
Definition: NSSurfacePropEntity.qc:588
void NSSurfacePropEntity(void)
Definition: NSSurfacePropEntity.qc:18
nonvirtual float GetArmor(void)
Returns the current armor of the entity.
Definition: NSSurfacePropEntity.qc:200
nonvirtual float GetHealth(void)
Returns the current health of the entity.
Definition: NSSurfacePropEntity.qc:170
virtual void ParentUpdate(void)
Called when we need to re-align the entity to our parent entity.
Definition: NSSurfacePropEntity.qc:206
nonvirtual void MakeInvulnerable(void)
Makes the entity invulnerable if it wasn't already.
Definition: NSSurfacePropEntity.qc:120
nonvirtual void SetArmor(float)
Sets the current armor of the entity.
Definition: NSSurfacePropEntity.qc:194
nonvirtual bool CanBeDamaged(vector, vector)
Returns whether this entity reacts to damage being inflicted.
Definition: NSSurfacePropEntity.qc:301
nonvirtual void SetMaxArmor(float)
Sets the maximum amount of armor the entity can have.
Definition: NSSurfacePropEntity.qc:163
nonvirtual void Extinguish(void)
If the entity is on fire, it'll have it extinguished.
Definition: NSSurfacePropEntity.qc:339
nonvirtual void MakeVulnerable(void)
Makes the entity vulnerable if it wasn't already.
Definition: NSSurfacePropEntity.qc:113
virtual void Respawn(void)
Server: Called when the entity first spawns or when game-logic requests the entity to return to its o...
Definition: NSSurfacePropEntity.qc:348
nonvirtual __variant GetSurfaceData(int)
Returns a variable type of information about the entity's surface data.
Definition: NSSurfacePropEntity.qc:837
virtual bool IsAlive(void)
Returns whether or not the entity is alive.
Definition: NSSurfacePropEntity.qc:75
nonvirtual bool IsOnFire(void)
Returns whether or not this entity is on fire.
Definition: NSSurfacePropEntity.qc:55
virtual void Pain(entity, entity, int, vector, vector, int)
Called whenever the entity receives damage.
Definition: NSSurfacePropEntity.qc:506
virtual void Spawned(void)
Called when the entity is fulled initialized.
Definition: NSSurfacePropEntity.qc:39
nonvirtual vector GetBloodColor(void)
Returns the blood color of this entity.
Definition: NSSurfacePropEntity.qc:69
virtual void Death(entity, entity, int, vector, vector, int)
Called when the health is equal or below 0.
Definition: NSSurfacePropEntity.qc:512
nonvirtual __variant GetPropData(int)
Returns a variable type of information about the entity's prop data.
Definition: NSSurfacePropEntity.qc:825
virtual float predraw(void)
nonvirtual void EnableBleeding(void)
Marks the entity as capable of bleeding.
Definition: NSSurfacePropEntity.qc:87
virtual void ReceiveEntity(float, float)
Client: Handles network updates from the server for the associated entity.
virtual float SendEntity(entity, float)
Called by the engine whenever we need to send a client an update about this entity.
Definition: NSSurfacePropEntity.qc:635
nonvirtual bool CanBleed(void)
Returns whether the entity can bleed.
Definition: NSSurfacePropEntity.qc:141
nonvirtual float GetMaxArmor(void)
Returns the maximum armor value the entity can have.
Definition: NSSurfacePropEntity.qc:182
nonvirtual void SetSurfaceData(string)
Assigns the surface data of a given description onto this entity.
Definition: NSSurfacePropEntity.qc:805
nonvirtual bool IsVulnerable(void)
Returns whether the entity can be damaged.
Definition: NSSurfacePropEntity.qc:81
nonvirtual void Ignite(entity, float, int)
Sets the entity on fire.
Definition: NSSurfacePropEntity.qc:282
nonvirtual void SetMaxHealth(float)
Sets the maximum amount of health the entity can have.
Definition: NSSurfacePropEntity.qc:156
nonvirtual void DisableBleeding(void)
Marks the entity as incapable of bleeding.
Definition: NSSurfacePropEntity.qc:93
nonvirtual float TimeSinceDeath(void)
Returns how many seconds have passed since we died.
Definition: NSSurfacePropEntity.qc:578
nonvirtual bool HasSurfaceData(void)
Returns if the entity has surface data information set.
Definition: NSSurfacePropEntity.qc:831
nonvirtual float GetSpawnHealth(void)
Returns the health the entity spawned with at map load.
Definition: NSSurfacePropEntity.qc:188
virtual void DamageFeedback(entity, entity, int)
Called when a different entity gets damaged by this entity.
Definition: NSSurfacePropEntity.qc:524
nonvirtual void SetHealth(float)
Sets the current health of the entity.
Definition: NSSurfacePropEntity.qc:147
virtual void Damage(entity, entity, NSDict, float, vector, vector)
Applies damage to the entity.
Definition: NSSurfacePropEntity.qc:231
nonvirtual bool HasPropData(void)
Returns if the entity has prop data information set.
Definition: NSSurfacePropEntity.qc:819
virtual void Restore(string, string)
Similar to NSIO::SpawnKey but for save-game fields.
Definition: NSSurfacePropEntity.qc:394
virtual void SpawnKey(string, string)
This method handles entity key/value pairs on map load.
Definition: NSSurfacePropEntity.qc:468
nonvirtual void SetBloodColor(vector)
Sets the colour of the blood of this entity.
Definition: NSSurfacePropEntity.qc:63
nonvirtual void EnableAimAssist(void)
Makes the entity visible to other entity their aim-assists.
Definition: NSSurfacePropEntity.qc:99
virtual void Input(entity, string, string)
Called when we are being prompted by another object/function with an input message.
Definition: NSSurfacePropEntity.qc:442
typedef enumflags
Defines the valid alignment flags for text fields.
Definition: font.h:37