Fixed 'use' behaviour across FreeHL and FreeCS, fixing chargers and whatnot. Cleaned up old usage of FL_USERELEASED too. Changed FL_FLASHLIGHT to its bit.

This commit is contained in:
Marco Cawthorne 2019-08-18 12:01:01 -07:00
parent 4ed25b810b
commit 02c7eeb671
6 changed files with 40 additions and 40 deletions

View file

@ -36,28 +36,27 @@ const vector VEC_PLAYER_CVIEWPOS = [0,0,12];
// engine reserved flags
#define FL_FLY (1<<0)
#define FL_SWIM (1<<1)
#define FL_SWIM (1<<1)
#define FL_GLIMPSE (1<<2)
#define FL_CLIENT (1<<3)
#define FL_INWATER (1<<4)
#define FL_MONSTER (1<<5)
#define FL_GODMODE (1<<6)
#define FL_NOTARGET (1<<7)
#define FL_ITEM (1<<8)
#define FL_ONGROUND (1<<9)
#define FL_NOTARGET (1<<7)
#define FL_ITEM (1<<8)
#define FL_ONGROUND (1<<9)
#define FL_PARTIALGROUND (1<<10)
#define FL_WATERJUMP (1<<11)
#define FL_JUMPRELEASED (1<<12)
#define FL_JUMPRELEASED (1<<12)
#define FL_FINDABLE_NONSOLID (1<<14)
#define FLQW_LAGGEDMOVE (1<<16)
#define FLQW_LAGGEDMOVE (1<<16)
// FreeCS flags
#define FL_USERELEASED (1<<17)
#define FL_REMOVEME (1<<18)
#define FL_FLASHLIGHT (1<<17)
#define FL_REMOVEME (1<<18)
#define FL_CROUCHING (1<<19)
#define FL_SEMI_TOGGLED (1<<20)
#define FL_SEMI_TOGGLED (1<<20)
#define FL_FROZEN (1<<21)
#define FL_FLASHLIGHT (1<<21)
#define clamp(d,min,max) bound(min,d,max)

View file

@ -16,14 +16,13 @@ class func_healthcharger:CBaseTrigger
void func_healthcharger::PlayerUse(void)
{
eActivator.gflags &= ~GF_USE_RELEASED;
eActivator.gflags |= GF_USE_RELEASED;
if (m_flDelay > time) {
return;
}
eActivator.health = bound(0, eActivator.health += 15, 100);
m_flDelay = time + 1.0f;
eActivator.health = bound(0, eActivator.health += 1, 100);
m_flDelay = time + 0.1f;
}
void func_healthcharger::func_healthcharger(void)

View file

@ -16,14 +16,13 @@ class func_recharge:CBaseTrigger
void func_recharge::PlayerUse(void)
{
eActivator.gflags &= ~GF_USE_RELEASED;
eActivator.gflags |= GF_USE_RELEASED;
if (m_flDelay > time) {
return;
}
eActivator.armor = bound(0, eActivator.armor += 15, 100);
m_flDelay = time + 1.0f;
eActivator.armor = bound(0, eActivator.armor += 1, 100);
m_flDelay = time + 0.1f;
}
void func_recharge::func_recharge(void)

View file

@ -191,28 +191,30 @@ Player_UseDown
*/
void Player_UseDown(void)
{
if (self.health <= 0) {
if (self.health <= 0) {
return;
} else if (!(self.flags & FL_USERELEASED)) {
} else if (!(self.gflags & GF_USE_RELEASED)) {
return;
}
vector vSource;
makevectors(self.v_angle);
vSource = self.origin + self.view_ofs;
traceline (vSource, vSource + (v_forward * 64), FALSE, self);
if (trace_ent.PlayerUse) {
if ((trace_ent.classname != "c4bomb") && (trace_ent.classname != "func_pushable")) {
self.flags = (self.flags - FL_USERELEASED);
sound(self, CHAN_ITEM, "common/wpn_select.wav", 0.25, ATTN_IDLE);
}
self.gflags &= ~GF_USE_RELEASED;
UseWorkaround(trace_ent);
/* Some entities want to support Use spamming */
if (!(self.gflags & GF_USE_RELEASED)) {
sound(self, CHAN_ITEM, "common/wpn_select.wav", 0.25, ATTN_IDLE);
}
} else {
sound(self, CHAN_ITEM, "common/wpn_denyselect.wav", 0.25, ATTN_IDLE);
self.flags = (self.flags - FL_USERELEASED);
self.gflags &= ~GF_USE_RELEASED;
}
}
@ -223,8 +225,8 @@ Player_UseUp
*/
void Player_UseUp(void)
{
if (!(self.frags & FL_USERELEASED)) {
self.flags = self.flags | FL_USERELEASED;
if (!(self.gflags & GF_USE_RELEASED)) {
self.gflags |= GF_USE_RELEASED;
self.fProgressBar = 0;
}
}

View file

@ -55,12 +55,14 @@ void Player_UseDown(void)
traceline (vSource, vSource + (v_forward * 64), FALSE, self);
if (trace_ent.PlayerUse) {
if (trace_ent.classname != "func_pushable") {
self.gflags &= ~GF_USE_RELEASED;
sound(self, CHAN_ITEM, "common/wpn_select.wav", 0.25, ATTN_IDLE);
}
self.gflags &= ~GF_USE_RELEASED;
UseWorkaround(trace_ent);
/* Some entities want to support Use spamming */
if (!(self.gflags & GF_USE_RELEASED)) {
sound(self, CHAN_ITEM, "common/wpn_select.wav", 0.25, ATTN_IDLE);
}
} else {
sound(self, CHAN_ITEM, "common/wpn_denyselect.wav", 0.25, ATTN_IDLE);
self.gflags &= ~GF_USE_RELEASED;

View file

@ -53,10 +53,8 @@ var float fBeepTime; // Used for the beeping sounds that last 1.5 seconds
var float fDefuseProgress; // Used to track... the progress
static void WeaponC4BOMB_Use( void ) {
if ( cvar( "developer" ) == 0 ) {
if ( eActivator.team != TEAM_CT ) {
return;
}
if ( eActivator.team != TEAM_CT ) {
return;
}
// On first use, play defusing sound
@ -85,7 +83,8 @@ static void WeaponC4BOMB_Use( void ) {
} else {
fDefuseProgress += 0.01;
}
eActivator.gflags |= GF_USE_RELEASED;
eActivator.fProgressBar = fDefuseProgress * 0.1;
// Make sure WeaponC4BOMB_Think knows who the user is
@ -216,7 +215,7 @@ void WeaponC4BOMB_PrimaryFire( void ) {
return;
}
traceline( source, source + [0,0,-64], MOVE_OTHERONLY, self );
traceline(source, source + [0,0,-64], MOVE_OTHERONLY, self);
// If we aren't aiming at a place or look in the wrong location... stop it
if ( trace_fraction == 1 || self.fInBombZone == FALSE ) {