Nuclide
Software Development Kit for id Technology (BETA)
Loading...
Searching...
No Matches
SurfacePropEntity.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
46
47
63
70{
71public:
72 void ncSurfacePropEntity(void);
73
74 /* overrides */
75 virtual void Spawned(void);
76 virtual void SetModel(string);
77
78#ifdef SERVER
79 virtual void Save(float);
80 virtual void Restore(string,string);
81 virtual void RestoreComplete(void);
82 virtual void Respawn(void);
83 virtual void Input(entity,string,string);
84 virtual void SpawnKey(string,string);
85 virtual void ParentUpdate(void);
86 virtual void EvaluateEntity(void);
87 virtual float SendEntity(entity,float);
88#endif
89
90#ifdef CLIENT
91 virtual float predraw(void);
92 virtual void ReceiveEntity(float,float);
93#endif
94
96 nonvirtual bool IsOnFire(void);
97
98 /* new */
99#ifdef SERVER
101 virtual void Damage(entity, entity, ncDict, float, vector, vector);
103 virtual void DamageFeedback(entity, entity, int);
105 virtual void Pain(entity, entity, int, vector, vector, int);
107 virtual void Death(entity, entity, int, vector, vector, int);
109 virtual void BreakModel(int, vector, int);
111 virtual bool IsAlive(void);
112
114 nonvirtual void Ignite(entity, float, string);
116 nonvirtual void Extinguish(void);
117
119 nonvirtual bool IsVulnerable(void);
120
121 /* Generic Damage */
123 nonvirtual void EnableAimAssist(void);
125 nonvirtual void DisableAimAssist(void);
127 nonvirtual void MakeVulnerable(void);
129 nonvirtual void MakeInvulnerable(void);
131 nonvirtual void SetHealth(float);
133 nonvirtual void SetMaxHealth(float);
135 nonvirtual float GetHealth(void);
137 nonvirtual float GetMaxHealth(void);
139 nonvirtual void AddBonusHealth(float);
141 nonvirtual float GetBonusHealth(void);
143 nonvirtual void AddBonusArmor(float);
145 nonvirtual float GetBonusArmor(void);
146
148 nonvirtual void SetArmor(float);
150 nonvirtual float GetArmor(void);
151
153 nonvirtual void SetMaxArmor(float);
155 nonvirtual float GetMaxArmor(void);
156
158 nonvirtual float TimeSinceDeath(void);
159
161 nonvirtual bool CanBeDamaged(vector,vector);
162#endif
163
165 nonvirtual void SetSurfaceData(string);
167 nonvirtual void SetPropData(string);
169 nonvirtual bool HasPropData(void) ;
171 nonvirtual __variant GetPropData(int);
173 nonvirtual bool HasSurfaceData(void);
175 nonvirtual __variant GetSurfaceData(int);
176
177#ifdef CLIENT
179 virtual void RenderFire(void);
180#endif
181
182private:
183 nonvirtual void _SurfaceDataFinish(void);
184 nonvirtual void _PropDataFinish(void);
185
186 float m_timeUntilNextBurnDamage;
187
188 NETWORKED_FLOAT(armor)
189 NETWORKED_FLOAT_N(health)
190
191 /* Surface/PropKit */
192 int m_surfdataID;
193 string m_surfData;
194 int m_propdataID;
195 string m_propData;
196
197#ifdef SERVER
198 nonvirtual void _UpdateTakedamage(void);
199
200 float m_bonusHealth;
201 float m_timeUntilBonusHealthDecreases;
202 float m_bonusArmor;
203 float m_timeUntilBonusArmorDecreases;
204 float max_armor;
205 float m_timeOfDeath;
206 bool m_autoAim;
207 bool m_vulnerable;
208
209 /* fire/burning */
210 entity m_burningAttacker;
211 string m_burningWeapon;
212 float m_timeUntilBurningStops;
213 float m_timeUntilNextBurnDamage; /* for whenever they touch a hot flame */
214
215 /* I/O */
216 string m_outputOnDamaged;
217 string m_outputOnDamagedByPlayer;
218 string m_outputOnHalfHealth;
219 string m_outputOnDeath;
220 string m_outputOnBreak;
221
222#endif
223};
224
225#ifdef CLIENT
226void ncSurfacePropEntity_ReadEntity(bool);
227#endif
This class is responsible for handling groups of key/value pairs.
Definition Dict.h:35
void ncRenderableEntity(void)
Definition RenderableEntity.qc:18
virtual void ParentUpdate(void)
Called when we need to re-align the entity to our parent entity.
Definition SurfacePropEntity.qc:248
virtual void Death(entity, entity, int, vector, vector, int)
Called when the health is equal or below 0.
Definition SurfacePropEntity.qc:652
nonvirtual bool HasPropData(void)
Returns if the entity has prop data information set.
Definition SurfacePropEntity.qc:979
virtual float SendEntity(entity, float)
Called by the engine whenever we need to send a client an update about this entity.
Definition SurfacePropEntity.qc:781
virtual void RenderFire(void)
Called every frame to render a fire effect, but will only do so if the entity is burning.
nonvirtual void AddBonusArmor(float)
Adds bonus armor to the entity.
Definition SurfacePropEntity.qc:216
virtual void SpawnKey(string, string)
This method handles entity key/value pairs on map load.
Definition SurfacePropEntity.qc:602
nonvirtual float GetBonusArmor(void)
Returns the bonus armor of the entity.
Definition SurfacePropEntity.qc:236
nonvirtual float GetMaxArmor(void)
Returns the maximum armor value the entity can have.
Definition SurfacePropEntity.qc:169
virtual void Save(float)
Handles saving a copy of this entity to a given filehandle.
Definition SurfacePropEntity.qc:469
void ncSurfacePropEntity(void)
Definition SurfacePropEntity.qc:18
virtual void Damage(entity, entity, ncDict, float, vector, vector)
Applies damage to the entity.
Definition SurfacePropEntity.qc:304
nonvirtual bool HasSurfaceData(void)
Returns if the entity has surface data information set.
Definition SurfacePropEntity.qc:991
nonvirtual void AddBonusHealth(float)
Adds bonus health to the entity.
Definition SurfacePropEntity.qc:196
virtual void DamageFeedback(entity, entity, int)
Called when a different entity gets damaged by this entity.
Definition SurfacePropEntity.qc:664
nonvirtual float GetHealth(void)
Returns the current health of the entity.
Definition SurfacePropEntity.qc:157
virtual float predraw(void)
nonvirtual bool CanBeDamaged(vector, vector)
Returns whether this entity reacts to damage being inflicted.
Definition SurfacePropEntity.qc:395
virtual void SetModel(string)
Sets the 3D model representation of the entity from a file path and name.
Definition SurfacePropEntity.qc:1036
nonvirtual void SetSurfaceData(string)
Assigns the surface data of a given description onto this entity.
Definition SurfacePropEntity.qc:959
nonvirtual bool IsOnFire(void)
Returns whether or not this entity is on fire.
Definition SurfacePropEntity.qc:66
virtual void Restore(string, string)
Similar to ncIO::SpawnKey() but for save-game fields.
Definition SurfacePropEntity.qc:493
nonvirtual void MakeVulnerable(void)
Makes the entity vulnerable if it wasn't already.
Definition SurfacePropEntity.qc:100
nonvirtual void SetMaxArmor(float)
Sets the maximum amount of armor the entity can have.
Definition SurfacePropEntity.qc:150
virtual void Spawned(void)
Called when the entity is fulled initialized.
Definition SurfacePropEntity.qc:42
virtual void Input(entity, string, string)
Called when we are being prompted by another object/function with an input message.
Definition SurfacePropEntity.qc:558
nonvirtual void SetMaxHealth(float)
Sets the maximum amount of health the entity can have.
Definition SurfacePropEntity.qc:143
nonvirtual void DisableAimAssist(void)
Makes the entity invisible to other entity their aim-assists.
Definition SurfacePropEntity.qc:93
nonvirtual float GetMaxHealth(void)
Returns the maximum health the entity can have.
Definition SurfacePropEntity.qc:163
nonvirtual bool IsVulnerable(void)
Returns whether the entity can be damaged.
Definition SurfacePropEntity.qc:80
nonvirtual void EnableAimAssist(void)
Makes the entity visible to other entity their aim-assists.
Definition SurfacePropEntity.qc:86
nonvirtual void SetArmor(float)
Sets the current armor of the entity.
Definition SurfacePropEntity.qc:175
virtual void BreakModel(int, vector, int)
Called when the health is equal or below 0.
Definition SurfacePropEntity.qc:670
nonvirtual void Extinguish(void)
If the entity is on fire, it'll have it extinguished.
Definition SurfacePropEntity.qc:433
virtual void ReceiveEntity(float, float)
Client: Handles network updates from the server for the associated entity.
virtual void EvaluateEntity(void)
Run each tic after physics are run to determine if we need to send updates over the network.
Definition SurfacePropEntity.qc:734
nonvirtual __variant GetSurfaceData(int)
Returns a variable type of information about the entity's surface data.
Definition SurfacePropEntity.qc:997
nonvirtual __variant GetPropData(int)
Returns a variable type of information about the entity's prop data.
Definition SurfacePropEntity.qc:985
virtual void RestoreComplete(void)
Called when the entity has been successfully restored from a savegame file.
Definition SurfacePropEntity.qc:550
nonvirtual void MakeInvulnerable(void)
Makes the entity invulnerable if it wasn't already.
Definition SurfacePropEntity.qc:107
nonvirtual void SetPropData(string)
Assigns the prop data of a given description onto this entity.
Definition SurfacePropEntity.qc:969
nonvirtual float TimeSinceDeath(void)
Returns how many seconds have passed since we died.
Definition SurfacePropEntity.qc:724
virtual void Pain(entity, entity, int, vector, vector, int)
Called whenever the entity receives damage.
Definition SurfacePropEntity.qc:646
nonvirtual void Ignite(entity, float, string)
Sets the entity on fire.
Definition SurfacePropEntity.qc:375
nonvirtual void SetHealth(float)
Sets the current health of the entity.
Definition SurfacePropEntity.qc:128
nonvirtual float GetArmor(void)
Returns the current armor of the entity.
Definition SurfacePropEntity.qc:190
nonvirtual float GetBonusHealth(void)
Returns the bonus health of the entity.
Definition SurfacePropEntity.qc:242
virtual void Respawn(void)
Server: Called when the entity first spawns or when game-logic requests the entity to return to its o...
Definition SurfacePropEntity.qc:442
virtual bool IsAlive(void)
Returns whether or not the entity is alive.
Definition SurfacePropEntity.qc:74