Skip to content

Commit 219bed2

Browse files
committed
Add player_hevsentence
1 parent 5ba852e commit 219bed2

File tree

3 files changed

+83
-0
lines changed

3 files changed

+83
-0
lines changed

dlls/player.cpp

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7599,6 +7599,62 @@ class CPlayerSpeed : public CPointEntity
75997599

76007600
LINK_ENTITY_TO_CLASS( player_speed, CPlayerSpeed )
76017601

7602+
#define SF_PLAYER_HEVSENTENCE_QUEUE (1 << 1)
7603+
7604+
class CPlayerHevSentence : public CPointEntity
7605+
{
7606+
public:
7607+
void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
7608+
{
7609+
CBasePlayer* pPlayer = g_pGameRules->EffectivePlayer(pActivator);
7610+
if (!pPlayer)
7611+
return;
7612+
7613+
if (FStringNull(pev->message))
7614+
{
7615+
pPlayer->SetSuitUpdate(nullptr, false, 0);
7616+
return;
7617+
}
7618+
7619+
const char* message = STRING(pev->message);
7620+
if (FBitSet(pev->spawnflags, SF_PLAYER_HEVSENTENCE_QUEUE))
7621+
{
7622+
int noRepeat = pev->impulse;
7623+
if (*message == '!')
7624+
{
7625+
pPlayer->SetSuitUpdate(message, false, noRepeat);
7626+
}
7627+
else
7628+
{
7629+
pPlayer->SetSuitUpdate(message, true, noRepeat);
7630+
}
7631+
}
7632+
else
7633+
{
7634+
if (*message == '!')
7635+
{
7636+
EMIT_SOUND_SUIT(pPlayer->edict(), message);
7637+
}
7638+
else
7639+
{
7640+
EMIT_GROUPNAME_SUIT(pPlayer->edict(), message);
7641+
}
7642+
}
7643+
}
7644+
void KeyValue(KeyValueData *pkvd)
7645+
{
7646+
if (FStrEq(pkvd->szKeyName, "norepeat"))
7647+
{
7648+
pev->impulse = atoi( pkvd->szValue );
7649+
pkvd->fHandled = true;
7650+
}
7651+
else
7652+
CPointEntity::KeyValue(pkvd);
7653+
}
7654+
};
7655+
7656+
LINK_ENTITY_TO_CLASS( player_hevsentence, CPlayerHevSentence )
7657+
76027658
static void DisableChangelevels()
76037659
{
76047660
CBaseEntity* pEntity = 0;
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
bookHidden: true
3+
bookToC: false
4+
---
5+
6+
# player_hevsentence
7+
8+
Plays HEV sentence, queued or at the moment of triggering.
9+
10+
### Parameters
11+
12+
* `Sentence` - HEV sentence to play. Can be a group name (e.g. `HEV_MED`) or a specific sentenc name `!HEV_PISTOL`.
13+
* `No repeat time` - the time in seconds to not play the sentence if it was played recently. Applied only if `Queue sentence` spawnflag is set.
14+
15+
### Spawnflags
16+
17+
* `Queue sentence` - whether to put HEV sentence into queue instead of playing right away. This might play the sentence later if there have been other previously queued sentences.

fgd/halflife.fgd

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7986,6 +7986,16 @@
79867986
fail_target(target_destination) : "Fail Target"
79877987
]
79887988

7989+
@PointClass base(Targetname) = player_hevsentence : "Play HEV sentence"
7990+
[
7991+
message(string) : "Sentence"
7992+
norepeat(integer) : "No repeat time (if queued)" : 60
7993+
spawnflags(flags) =
7994+
[
7995+
2 : "Queue sentence" : 1
7996+
]
7997+
]
7998+
79897999
@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game"
79908000
[
79918001
duration(string) : "Fade Duration (seconds)" : "2"

0 commit comments

Comments
 (0)