UFO: Alien Invasion
Toggle main menu visibility
Loading...
Searching...
No Matches
e_event_actorwound.cpp
Go to the documentation of this file.
1
4
5
/*
6
Copyright (C) 2002-2025 UFO: Alien Invasion.
7
8
This program is free software; you can redistribute it and/or
9
modify it under the terms of the GNU General Public License
10
as published by the Free Software Foundation; either version 2
11
of the License, or (at your option) any later version.
12
13
This program is distributed in the hope that it will be useful,
14
but WITHOUT ANY WARRANTY; without even the implied warranty of
15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16
17
See the GNU General Public License for more details.
18
19
You should have received a copy of the GNU General Public License
20
along with this program; if not, write to the Free Software
21
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23
*/
24
25
#include "
../../../../client.h
"
26
#include "
../../../cl_actor.h
"
27
#include "
../../../cl_hud.h
"
28
#include "
../../../../ui/ui_main.h
"
29
#include "
e_event_actorwound.h
"
30
36
void
CL_ActorWound
(
const
eventRegister_t
* self,
dbuffer
* msg)
37
{
38
int
entnum, bodyPart, wounds, treatment;
39
NET_ReadFormat
(msg, self->
formatString
, &entnum, &bodyPart, &wounds, &treatment);
40
41
le_t
* le =
LE_Get
(entnum);
42
if
(!le)
43
LE_NotFoundError
(entnum);
44
45
switch
(le->
type
) {
46
case
ET_ACTORHIDDEN
:
47
case
ET_ACTOR
:
48
case
ET_ACTOR2x2
:
49
break
;
50
default
:
51
Com_Printf
(
"CL_ActorWound: LE (%i) not an actor (type: %i)\n"
, entnum, le->
type
);
52
return
;
53
}
54
55
const
BodyData
*
const
bodyData = le->
teamDef
->
bodyTemplate
;
56
if
(le->
wounds
.
woundLevel
[bodyPart] < wounds && wounds > le->
maxHP
*
57
bodyData->
woundThreshold
(bodyPart) && !
LE_IsDead
(le)) {
58
const
character_t
* chr =
CL_ActorGetChr
(le);
59
char
tmpbuf[128];
60
Com_sprintf
(tmpbuf,
lengthof
(tmpbuf),
_
(
"%s has been wounded"
), chr->
name
);
61
HUD_DisplayMessage
(tmpbuf);
62
}
63
le->
wounds
.
woundLevel
[bodyPart] = wounds;
64
le->
wounds
.
treatmentLevel
[bodyPart] = treatment;
65
const
int
actorIdx =
CL_ActorGetNumber
(le);
66
if
(actorIdx < 0)
67
return
;
68
69
/* Update bleeding status */
70
const
int
bleeding = (wounds > le->
maxHP
* bodyData->
woundThreshold
(bodyPart)
71
?
static_cast<
int
>
(wounds * bodyData->
bleedingFactor
(bodyPart)) : 0);
72
UI_ExecuteConfunc
(
"updateactorstatus %i %s %i"
, actorIdx,
"bleeding"
, bleeding);
73
}
CL_ActorGetNumber
int CL_ActorGetNumber(const le_t *le)
Returns the number of the actor in the teamlist.
Definition
cl_actor.cpp:125
CL_ActorGetChr
character_t * CL_ActorGetChr(const le_t *le)
Returns the character information for an actor in the teamlist.
Definition
cl_actor.cpp:155
cl_actor.h
HUD_DisplayMessage
void HUD_DisplayMessage(const char *text)
Displays a message on the hud.
Definition
cl_hud.cpp:138
cl_hud.h
HUD related routines.
LE_Get
le_t * LE_Get(int entnum)
Searches all local entities for the one with the searched entnum.
Definition
cl_localentity.cpp:1287
LE_IsDead
#define LE_IsDead(le)
Definition
cl_localentity.h:257
LE_NotFoundError
#define LE_NotFoundError(entnum)
Definition
cl_localentity.h:322
_
#define _(String)
Definition
cl_shared.h:44
BodyData
Definition
chr_shared.h:278
BodyData::woundThreshold
float woundThreshold(const short bodyPart) const
Definition
chr_shared.cpp:384
BodyData::bleedingFactor
float bleedingFactor(const short bodyPart) const
Definition
chr_shared.cpp:379
dbuffer
Definition
dbuffer.h:20
client.h
Primary header for client.
Com_Printf
void Com_Printf(const char *const fmt,...)
Definition
common.cpp:428
CL_ActorWound
void CL_ActorWound(const eventRegister_t *self, dbuffer *msg)
Parses the actor wound stats that come from the netchannel.
Definition
e_event_actorwound.cpp:36
e_event_actorwound.h
NET_ReadFormat
void NET_ReadFormat(dbuffer *buf, const char *format,...)
The user-friendly version of NET_ReadFormat that reads variable arguments from a buffer according to ...
Definition
netpack.cpp:533
ET_ACTOR
@ ET_ACTOR
Definition
q_shared.h:148
ET_ACTOR2x2
@ ET_ACTOR2x2
Definition
q_shared.h:160
ET_ACTORHIDDEN
@ ET_ACTORHIDDEN
Definition
q_shared.h:163
lengthof
#define lengthof(x)
Definition
shared.h:105
Com_sprintf
bool Com_sprintf(char *dest, size_t size, const char *fmt,...)
copies formatted string with buffer-size checking
Definition
shared.cpp:494
character_t
Describes a character with all its attributes.
Definition
chr_shared.h:388
character_t::name
char name[MAX_VAR]
Definition
chr_shared.h:390
eventRegister_t
Struct that defines one particular event with all its callbacks and data.
Definition
e_main.h:42
eventRegister_t::formatString
const char * formatString
The format string that is used to write and parse this event.
Definition
e_main.h:54
le_t
a local entity
Definition
cl_localentity.h:65
le_t::teamDef
teamDef_t * teamDef
Definition
cl_localentity.h:161
le_t::maxHP
int maxHP
Definition
cl_localentity.h:79
le_t::type
entity_type_t type
Definition
cl_localentity.h:67
le_t::wounds
woundInfo_t wounds
Definition
cl_localentity.h:82
teamDef_t::bodyTemplate
const BodyData * bodyTemplate
Definition
chr_shared.h:350
woundInfo_t::woundLevel
int woundLevel[BODYPART_MAXTYPE]
Definition
chr_shared.h:362
woundInfo_t::treatmentLevel
int treatmentLevel[BODYPART_MAXTYPE]
Definition
chr_shared.h:363
UI_ExecuteConfunc
void UI_ExecuteConfunc(const char *fmt,...)
Executes confunc - just to identify those confuncs in the code - in this frame.
Definition
ui_main.cpp:110
ui_main.h
src
client
battlescape
events
event
actor
e_event_actorwound.cpp
Generated on __DATE__ __TIME__ for UFO: Alien Invasion by
1.17.0