55 lines
996 B
C++
55 lines
996 B
C++
|
/***
|
||
|
*
|
||
|
* Copyright (c) 2016-2019 Marco 'eukara' Hladik. All rights reserved.
|
||
|
*
|
||
|
* See the file LICENSE attached with the sources for usage details.
|
||
|
*
|
||
|
****/
|
||
|
|
||
|
enumflags {
|
||
|
ENVEXPLO_NODAMAGE,
|
||
|
ENVEXPLO_REPEATABLE,
|
||
|
ENVEXPLO_NOBALL,
|
||
|
ENVEXPLO_NOSMOKE,
|
||
|
ENVEXPLO_NODECAL,
|
||
|
ENVEXPLO_NOSPARKS
|
||
|
};
|
||
|
|
||
|
class CEnvExplosion:CBaseTrigger
|
||
|
{
|
||
|
int m_iMagnitude;
|
||
|
float m_flMaxDelay;
|
||
|
|
||
|
void() CEnvExplosion;
|
||
|
virtual void() Trigger;
|
||
|
};
|
||
|
|
||
|
void CEnvExplosion::CEnvExplosion(void)
|
||
|
{
|
||
|
for (int i = 1; i < (tokenize(__fullspawndata) - 1); i += 2) {
|
||
|
switch (argv(i)) {
|
||
|
case "iMagnitude":
|
||
|
m_iMagnitude = stoi(argv(i + 1));
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
CBaseTrigger::CBaseTrigger();
|
||
|
}
|
||
|
|
||
|
void CEnvExplosion::Trigger(void)
|
||
|
{
|
||
|
Effect_CreateExplosion(origin);
|
||
|
|
||
|
if (!(spawnflags & ENVEXPLO_NODAMAGE)) {
|
||
|
Damage_Radius(origin, this, 500, m_iMagnitude, TRUE);
|
||
|
}
|
||
|
// TODO: Respawn after round instead?
|
||
|
if (!(spawnflags & ENVEXPLO_REPEATABLE)) {
|
||
|
remove(this);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
CLASSEXPORT(env_explosion, CEnvExplosion)
|