nuclide/Source/gs-entbase/server/func_recharge.cpp

76 lines
1.5 KiB
C++
Raw Normal View History

/***
*
2019-01-16 16:43:50 +00:00
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
*
* See the file LICENSE attached with the sources for usage details.
*
****/
class func_recharge:CBaseTrigger
{
entity m_eUser;
float m_flDelay;
float m_flCheck;
void() func_recharge;
virtual void() customphysics;
virtual void() PlayerUse;
};
void func_recharge::PlayerUse(void)
{
eActivator.gflags |= GF_USE_RELEASED;
/* First come first serve */
if (m_eUser && eActivator != m_eUser) {
return;
}
/* First time */
if (m_eUser == world) {
sound(this, CHAN_VOICE, "items/suitchargeok1.wav", 1.0, ATTN_NORM);
}
if (m_flDelay > time) {
return;
}
if (eActivator.armor >= 100) {
eActivator.gflags &= ~GF_USE_RELEASED;
sound(this, CHAN_VOICE, "items/suitchargeno1.wav", 1.0, ATTN_NORM);
} else {
if (m_eUser == world) {
sound(this, CHAN_ITEM, "items/suitcharge1.wav", 1.0, ATTN_NORM);
}
eActivator.armor = bound(0, eActivator.armor += 1, 100);
}
m_eUser = eActivator;
m_flDelay = time + 0.1f;
m_flCheck = time + 0.25f;
}
void func_recharge::customphysics(void)
{
if (m_flCheck > time) {
return;
}
if (m_eUser) {
sound(this, CHAN_ITEM, "misc/null.wav", 1.0, ATTN_NORM);
m_eUser = world;
}
}
void func_recharge::func_recharge(void)
{
precache_sound("items/suitchargeok1.wav");
precache_sound("items/suitchargeno1.wav");
precache_sound("items/suitcharge1.wav");
solid = SOLID_BSP;
movetype = MOVETYPE_PUSH;
setorigin(this, origin);
setmodel(this, model);
}