CBaseTrigger: Massive change that allows us to finally set states. This affected every entity that can be triggered. Things like the airlock check in c1a0d work now.
This commit is contained in:
parent
40d0ceedf5
commit
d324259e72
61 changed files with 540 additions and 298 deletions
0
doc/faq
Executable file → Normal file
0
doc/faq
Executable file → Normal file
5
gearbox.fmf
Executable file → Normal file
5
gearbox.fmf
Executable file → Normal file
|
@ -23,10 +23,7 @@ BASEGAME gearbox
|
|||
-set gameinfo_cldll 1
|
||||
-set gameinfo_hlversion "1110"
|
||||
-set gameinfo_svonly "0"
|
||||
|
||||
DOWNLOADSURL http://www.frag-net.com/dl/gearbox_packages
|
||||
UPDATEURL http://www.frag-net.com/mods/valve.fmf
|
||||
INSTALL "gearbox_essential;valve_essential;free_essential;addons_essential"
|
||||
-set gameinfo_pkgname "cg_gearbox"
|
||||
|
||||
// you don't really want to change these
|
||||
RTCBROKER master.frag-net.com:27950
|
||||
|
|
|
@ -23,12 +23,7 @@ BASEGAME hunger
|
|||
-set gameinfo_url_info "www.planethalflife.com/manke"
|
||||
-set gameinfo_url_dl "http://www.frag-net.com/mods/hunger.fmf"
|
||||
-set gameinfo_menutrack "sound/song/you_are.wav"
|
||||
|
||||
// download/update packaging information
|
||||
// PACKAGE hunger/pak0.pak 0xc1cbd5c1 "http://www.frag-net.com/files/hunger_pak0.pak"
|
||||
|
||||
// do we want this? I don't want to automatically update it
|
||||
// UPDATEURL http://www.frag-net.com/mods/hunger.fmf
|
||||
-set gameinfo_pkgname "cg_hunger"
|
||||
|
||||
// you don't really want to change these
|
||||
RTCBROKER master.frag-net.com:27950
|
||||
|
|
7
rewolf_demo.fmf
Executable file → Normal file
7
rewolf_demo.fmf
Executable file → Normal file
|
@ -22,12 +22,7 @@ BASEGAME rewolf_demo
|
|||
-set gameinfo_cldll 1
|
||||
-set gameinfo_hlversion "1110"
|
||||
-set gameinfo_svonly "0"
|
||||
|
||||
// download/update packaging information
|
||||
UPDATEURL http://www.frag-net.com/mods/rewolf_demo.fmf
|
||||
PACKAGE rewolf_demo/pak0.pk3 0x105f03e9 "http://www.frag-net.com/dl/105f03e9/file.pk3"
|
||||
PACKAGE logos/pakrm_logos.pk3 0xd318299 "http://www.frag-net.com/dl/d318299/file.pk3"
|
||||
PACKAGE platform/pak0.pk3 0xd707e87f "http://www.frag-net.com/dl/707e87f/file.pk3"
|
||||
-set gameinfo_pkgname "cg_rewolf"
|
||||
|
||||
// you don't really want to change these
|
||||
RTCBROKER master.frag-net.com:27950
|
||||
|
|
|
@ -24,10 +24,7 @@ BASEGAME scihunt
|
|||
-set gameinfo_url_info "www.richwhitehouse.com"
|
||||
-set gameinfo_url_dl "http://www.frag-net.com/mods/scihunt.fmf"
|
||||
-set gameinfo_menutrack "sound/Hondo2/pca.wav"
|
||||
|
||||
DOWNLOADSURL http://www.frag-net.com/dl/scihunt_packages
|
||||
UPDATEURL http://www.frag-net.com/mods/scihunt.fmf
|
||||
INSTALL "scihunt_essential;valve_essential;free_essential;addons_essential"
|
||||
-set gameinfo_pkgname "cg_scihunt"
|
||||
|
||||
// you don't really want to change these
|
||||
RTCBROKER master.frag-net.com:27950
|
||||
|
|
|
@ -57,8 +57,8 @@ class ambient_generic:CBaseTrigger
|
|||
void(void) ambient_generic;
|
||||
|
||||
virtual void(void) Respawn;
|
||||
virtual void(void) UseNormal;
|
||||
virtual void(void) UseLoop;
|
||||
virtual void(int) UseNormal;
|
||||
virtual void(int) UseLoop;
|
||||
virtual float(entity, float) SendEntity;
|
||||
};
|
||||
|
||||
|
@ -91,7 +91,7 @@ ambient_generic::SendEntity(entity ePEnt, float fChanged)
|
|||
}
|
||||
|
||||
void
|
||||
ambient_generic::UseNormal(void)
|
||||
ambient_generic::UseNormal(int state)
|
||||
{
|
||||
sound(this, CHAN_VOICE, m_strActivePath, m_flVolume, m_flRadius, m_flPitch);
|
||||
dprint(sprintf("^2ambient_generic::^3UseNormal^7: %s plays `%s`\n",
|
||||
|
@ -99,7 +99,7 @@ ambient_generic::UseNormal(void)
|
|||
}
|
||||
|
||||
void
|
||||
ambient_generic::UseLoop(void)
|
||||
ambient_generic::UseLoop(int state)
|
||||
{
|
||||
if (m_iToggleSwitch == TRUE) {
|
||||
dprint(sprintf("^2ambient_generic::^3UseLoop^7: %s stops `%s`\n",
|
||||
|
|
|
@ -343,7 +343,7 @@ CBaseMonster::FreeState(void)
|
|||
|
||||
if (trigger.Trigger != __NULL__) {
|
||||
dprint(sprintf("^2CBaseMonster::^3FreeState^7: %s triggered %f\n", m_strRouteEnded, time));
|
||||
trigger.Trigger();
|
||||
trigger.Trigger(TRIG_TOGGLE);
|
||||
} else {
|
||||
dprint(sprintf("^1CBaseMonster::^3FreeState^7: %s not a valid trigger\n", m_strRouteEnded));
|
||||
}
|
||||
|
@ -509,7 +509,7 @@ CBaseMonster::Physics(void)
|
|||
|
||||
/* override whatever we did above with this */
|
||||
if (m_iSequenceState == SEQUENCESTATE_ENDING) {
|
||||
input_angles = v_angle = m_vecSequenceAngle;
|
||||
input_angles = v_angle = angles = m_vecSequenceAngle;
|
||||
SetFrame(m_flSequenceEnd);
|
||||
} else if (movetype == MOVETYPE_WALK) {
|
||||
SeeThink();
|
||||
|
|
|
@ -447,7 +447,7 @@ CBaseNPC::Physics(void)
|
|||
|
||||
/* override whatever we did above with this */
|
||||
if (m_iSequenceState == SEQUENCESTATE_ENDING) {
|
||||
input_angles = v_angle = m_vecSequenceAngle;
|
||||
input_angles = v_angle = angles = m_vecSequenceAngle;
|
||||
SetFrame(m_flSequenceEnd);
|
||||
} else {
|
||||
if (style != MONSTER_DEAD) {
|
||||
|
|
|
@ -20,34 +20,44 @@ enum
|
|||
USE_CONTINOUS
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
TRIG_TOGGLE,
|
||||
TRIG_OFF,
|
||||
TRIG_ON
|
||||
};
|
||||
|
||||
class CBaseTrigger:CBaseEntity
|
||||
{
|
||||
int m_strGlobalState;
|
||||
string m_strKillTarget;
|
||||
string m_strMessage;
|
||||
string m_strMaster;
|
||||
float m_flDelay;
|
||||
int m_iUseType;
|
||||
int m_iTeam;
|
||||
int m_iValue;
|
||||
|
||||
void(void) CBaseTrigger;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(void) UseTargets;
|
||||
|
||||
virtual void(int) Trigger;
|
||||
virtual void(int) UseTargets;
|
||||
virtual void(int, float) UseTargets_Delay;
|
||||
virtual int(void) GetValue;
|
||||
virtual int(void) GetMaster;
|
||||
virtual void(float) UseTargets_Delay;
|
||||
virtual void(void) InitBrushTrigger;
|
||||
virtual void(void) InitPointTrigger;
|
||||
};
|
||||
|
||||
void
|
||||
CBaseTrigger::UseTargets(void)
|
||||
CBaseTrigger::UseTargets(int state)
|
||||
{
|
||||
for (entity eFind = world; (eFind = find(eFind, CBaseTrigger::m_strTargetName, m_strTarget));) {
|
||||
CBaseTrigger trigger = (CBaseTrigger) eFind;
|
||||
for (entity f = world; (f = find(f, CBaseTrigger::m_strTargetName, m_strTarget));) {
|
||||
CBaseTrigger trigger = (CBaseTrigger)f;
|
||||
dprint(sprintf("^2%s::^3UseTargets^7: Triggering %s `%s`\n",
|
||||
this.classname, eFind.classname, trigger.m_strTargetName));
|
||||
this.classname, f.classname, trigger.m_strTargetName));
|
||||
if (trigger.Trigger != __NULL__) {
|
||||
trigger.Trigger();
|
||||
trigger.Trigger(state);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -69,38 +79,12 @@ CBaseTrigger::UseTargets(void)
|
|||
}
|
||||
}
|
||||
|
||||
int
|
||||
CBaseTrigger::GetValue(void)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int
|
||||
CBaseTrigger::GetMaster(void)
|
||||
{
|
||||
CBaseTrigger t;
|
||||
|
||||
/* default to success */
|
||||
if (!m_strMaster) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
t = (CBaseTrigger)find(world, CBaseTrigger::m_strTarget, m_strMaster);
|
||||
|
||||
/* we couldn't find it, so let's not even bother going further */
|
||||
if (!t) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return t.GetValue();
|
||||
}
|
||||
|
||||
void
|
||||
CBaseTrigger::UseTargets_Delay (float fDelay)
|
||||
CBaseTrigger::UseTargets_Delay(int state, float fDelay)
|
||||
{
|
||||
static void Entities_UseTargets_Delay_Think(void) {
|
||||
eActivator = self.owner;
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(self.health); /* ugly */
|
||||
remove(self);
|
||||
}
|
||||
|
||||
|
@ -112,10 +96,48 @@ CBaseTrigger::UseTargets_Delay (float fDelay)
|
|||
eTimer.think = Entities_UseTargets_Delay_Think;
|
||||
eTimer.m_strTarget = m_strTarget;
|
||||
eTimer.nextthink = time + fDelay;
|
||||
eTimer.health = state; /* ugly */
|
||||
}
|
||||
|
||||
int
|
||||
CBaseTrigger::GetValue(void)
|
||||
{
|
||||
return m_iValue;
|
||||
}
|
||||
|
||||
int
|
||||
CBaseTrigger::GetMaster(void)
|
||||
{
|
||||
CBaseTrigger t;
|
||||
|
||||
/* default to success */
|
||||
if (!m_strMaster) {
|
||||
dprint(sprintf("^2%s::^3GetMaster^7: No master, return success\n",
|
||||
this.classname));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
t = (CBaseTrigger)find(world, CBaseTrigger::m_strTarget, m_strMaster);
|
||||
|
||||
/* we couldn't find it, so let's not even bother going further */
|
||||
if (!t) {
|
||||
dprint(sprintf("^2%s::^3GetMaster^7: Invalid master, return success\n",
|
||||
this.classname));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (t.GetValue() == 1)
|
||||
dprint(sprintf("^2%s::^3GetMaster^7: %s learns %s ^2POSITIVE\n",
|
||||
this.classname, m_strTargetName, m_strMaster));
|
||||
else
|
||||
dprint(sprintf("^2%s::^3GetMaster^7: %s learns %s ^1NEGATIVE\n",
|
||||
this.classname, m_strTargetName, m_strMaster));
|
||||
|
||||
return t.GetValue();
|
||||
}
|
||||
|
||||
void
|
||||
CBaseTrigger::Trigger(void)
|
||||
CBaseTrigger::Trigger(int state)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
@ -38,13 +38,18 @@ class button_target:CBaseTrigger
|
|||
void(void) button_target;
|
||||
|
||||
virtual void(void) Respawn;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(int) Damage;
|
||||
};
|
||||
|
||||
void
|
||||
button_target::Respawn(void)
|
||||
{
|
||||
/* yuck */
|
||||
static void PUseWrapper(void) {
|
||||
Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
SetMovetype(MOVETYPE_PUSH);
|
||||
SetSolid(SOLID_BSP);
|
||||
SetModel(m_oldModel);
|
||||
|
@ -52,7 +57,7 @@ button_target::Respawn(void)
|
|||
|
||||
/* it's either one or the other */
|
||||
if (spawnflags & BUTTA_USE) {
|
||||
PlayerUse = Trigger;
|
||||
PlayerUse = PUseWrapper;
|
||||
} else {
|
||||
health = 1;
|
||||
takedamage = DAMAGE_YES;
|
||||
|
@ -64,20 +69,20 @@ button_target::Respawn(void)
|
|||
}
|
||||
|
||||
void
|
||||
button_target::Trigger(void)
|
||||
button_target::Trigger(int status)
|
||||
{
|
||||
/* make unusable */
|
||||
PlayerUse = __NULL__;
|
||||
takedamage = DAMAGE_NO;
|
||||
|
||||
frame = 1 - frame;
|
||||
UseTargets();
|
||||
UseTargets(status);
|
||||
}
|
||||
|
||||
void
|
||||
button_target::Damage(int hit)
|
||||
{
|
||||
Trigger();
|
||||
Trigger(TRIG_TOGGLE); /* TODO: Set state? */
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -46,10 +46,11 @@ class env_beverage:CBaseTrigger
|
|||
int m_iReady;
|
||||
int m_iSkin;
|
||||
void(void) env_beverage;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
};
|
||||
|
||||
void env_beverage::Trigger(void)
|
||||
void
|
||||
env_beverage::Trigger(int unused)
|
||||
{
|
||||
if (m_iReady == FALSE || m_iUses <= 0) {
|
||||
return;
|
||||
|
@ -66,7 +67,8 @@ void env_beverage::Trigger(void)
|
|||
m_iReady = FALSE;
|
||||
}
|
||||
|
||||
void env_beverage::env_beverage(void)
|
||||
void
|
||||
env_beverage::env_beverage(void)
|
||||
{
|
||||
precache_model("models/can.mdl");
|
||||
precache_sound("weapons/g_bounce3.wav");
|
||||
|
|
|
@ -39,7 +39,7 @@ class env_explosion:CBaseTrigger
|
|||
float m_flMaxDelay;
|
||||
|
||||
void(void) env_explosion;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
};
|
||||
|
||||
void env_explosion::env_explosion(void)
|
||||
|
@ -56,7 +56,7 @@ void env_explosion::env_explosion(void)
|
|||
CBaseTrigger::CBaseTrigger();
|
||||
}
|
||||
|
||||
void env_explosion::Trigger(void)
|
||||
void env_explosion::Trigger(int state)
|
||||
{
|
||||
FX_Explosion(origin);
|
||||
|
||||
|
|
|
@ -40,10 +40,10 @@ class env_fade:CBaseTrigger
|
|||
float m_flFadeHold;
|
||||
|
||||
void(void) env_fade;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
};
|
||||
|
||||
void env_fade::Trigger (void)
|
||||
void env_fade::Trigger(int state)
|
||||
{
|
||||
WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET);
|
||||
WriteByte(MSG_MULTICAST, EV_FADE);
|
||||
|
|
|
@ -45,7 +45,7 @@ class env_global:CBaseTrigger
|
|||
int m_iInitialState;
|
||||
|
||||
void(void) env_global;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
|
||||
virtual int(string) GlobalPresent;
|
||||
virtual void(string, int) AddNewGlobal;
|
||||
|
@ -53,7 +53,9 @@ class env_global:CBaseTrigger
|
|||
virtual int(string) GetGlobal;
|
||||
};
|
||||
|
||||
void env_global::Trigger(void) {
|
||||
void
|
||||
env_global::Trigger(int state)
|
||||
{
|
||||
int iOldValue = GetGlobal(m_strGlobalState);
|
||||
int iNewValue = 0;
|
||||
|
||||
|
@ -84,7 +86,9 @@ void env_global::Trigger(void) {
|
|||
}
|
||||
}
|
||||
|
||||
int env_global::GlobalPresent (string strName) {
|
||||
int
|
||||
env_global::GlobalPresent(string strName)
|
||||
{
|
||||
for (int i = 1; i < (tokenize(cvar_string(CENVGLOBAL_CVAR)) - 1); i += 2) {
|
||||
if (argv(i) == strName) {
|
||||
return 1;
|
||||
|
@ -93,11 +97,14 @@ int env_global::GlobalPresent (string strName) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
void env_global::AddNewGlobal (string strName, int iValue) {
|
||||
void
|
||||
env_global::AddNewGlobal(string strName, int iValue)
|
||||
{
|
||||
cvar_set(CENVGLOBAL_CVAR, sprintf("%s %s %i", cvar_string(CENVGLOBAL_CVAR), strName, iValue));
|
||||
}
|
||||
|
||||
void env_global::SetGlobal (string strName, int iValue) {
|
||||
void
|
||||
env_global::SetGlobal(string strName, int iValue) {
|
||||
string strNewData = "";
|
||||
for (int i = 1; i < (tokenize(cvar_string(CENVGLOBAL_CVAR)) - 1); i += 2) {
|
||||
if (argv(i) != strName) {
|
||||
|
@ -107,7 +114,9 @@ void env_global::SetGlobal (string strName, int iValue) {
|
|||
cvar_set(CENVGLOBAL_CVAR, sprintf("%s %s %i", strNewData, strName, iValue));
|
||||
}
|
||||
|
||||
int env_global::GetGlobal (string strName) {
|
||||
int
|
||||
env_global::GetGlobal(string strName)
|
||||
{
|
||||
for (int i = 1; i < (tokenize(cvar_string(CENVGLOBAL_CVAR)) - 1); i += 2) {
|
||||
if (argv(i) == strName) {
|
||||
return stoi(argv(i+1));
|
||||
|
@ -116,7 +125,8 @@ int env_global::GetGlobal (string strName) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
void env_global::env_global(void)
|
||||
void
|
||||
env_global::env_global(void)
|
||||
{
|
||||
for (int i = 1; i < (tokenize(__fullspawndata) - 1); i += 2) {
|
||||
switch (argv(i)) {
|
||||
|
|
|
@ -54,7 +54,7 @@ class env_laser:CBaseTrigger
|
|||
void(void) env_laser;
|
||||
|
||||
virtual void(void) think;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) Respawn;
|
||||
virtual void(void) ParentUpdate;
|
||||
virtual float(entity, float) SendEntity;
|
||||
|
@ -85,9 +85,18 @@ void env_laser::think(void)
|
|||
}
|
||||
}
|
||||
|
||||
void env_laser::Trigger(void)
|
||||
void env_laser::Trigger(int state)
|
||||
{
|
||||
switch (state) {
|
||||
case TRIG_OFF:
|
||||
m_iState = 0;
|
||||
break;
|
||||
case TRIG_ON:
|
||||
m_iState = 1;
|
||||
break;
|
||||
default:
|
||||
m_iState = 1 - m_iState;
|
||||
}
|
||||
|
||||
if (m_iState) {
|
||||
nextthink = time;
|
||||
|
|
|
@ -41,11 +41,11 @@ class env_message:CBaseTrigger
|
|||
|
||||
void(void) env_message;
|
||||
|
||||
virtual void(void) Play;
|
||||
virtual void(int) Play;
|
||||
virtual void(void) Respawn;
|
||||
};
|
||||
|
||||
void env_message::Play(void)
|
||||
void env_message::Play(int state)
|
||||
{
|
||||
WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET);
|
||||
WriteByte(MSG_MULTICAST, EV_MESSAGE);
|
||||
|
|
|
@ -36,11 +36,11 @@ enumflags
|
|||
class env_render:CBaseTrigger
|
||||
{
|
||||
void(void) env_render;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
};
|
||||
|
||||
void
|
||||
env_render::Trigger(void)
|
||||
env_render::Trigger(int state)
|
||||
{
|
||||
for (entity e = world;
|
||||
(e = find(e, CBaseEntity::m_strTargetName, m_strTarget));) {
|
||||
|
|
|
@ -37,12 +37,12 @@ class env_shake:CBaseTrigger
|
|||
float m_flFrequency;
|
||||
|
||||
void(void) env_shake;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
};
|
||||
|
||||
void env_shake::Trigger (void)
|
||||
void env_shake::Trigger(int state)
|
||||
{
|
||||
for (entity e = world; (e = find(e, ::classname, "Player"));) {
|
||||
for (entity e = world; (e = find(e, ::classname, "player"));) {
|
||||
WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET);
|
||||
WriteByte(MSG_MULTICAST, EV_SHAKE);
|
||||
WriteFloat(MSG_MULTICAST, m_flRadius);
|
||||
|
|
|
@ -48,10 +48,11 @@ class env_shooter:CBaseTrigger
|
|||
void(void) env_shooter;
|
||||
virtual void(void) Respawn;
|
||||
virtual void(void) ShootGib;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
};
|
||||
|
||||
void env_shooter::ShootGib(void)
|
||||
void
|
||||
env_shooter::ShootGib(void)
|
||||
{
|
||||
static void Gib_Remove(void) { remove(self); }
|
||||
|
||||
|
@ -77,18 +78,34 @@ void env_shooter::ShootGib(void)
|
|||
}
|
||||
}
|
||||
|
||||
void env_shooter::Trigger(void)
|
||||
void
|
||||
env_shooter::Trigger(int state)
|
||||
{
|
||||
switch (state) {
|
||||
case TRIG_OFF:
|
||||
think = __NULL__;
|
||||
nextthink = 0.0f;
|
||||
break;
|
||||
case TRIG_ON:
|
||||
think = ShootGib;
|
||||
nextthink = time + m_flVariance;
|
||||
break;
|
||||
default:
|
||||
if (think == __NULL__)
|
||||
Trigger(TRIG_ON);
|
||||
else
|
||||
Trigger(TRIG_OFF);
|
||||
}
|
||||
}
|
||||
|
||||
void env_shooter::Respawn(void)
|
||||
void
|
||||
env_shooter::Respawn(void)
|
||||
{
|
||||
m_iGibsLeft = m_iGibs;
|
||||
}
|
||||
|
||||
void env_shooter::env_shooter(void)
|
||||
void
|
||||
env_shooter::env_shooter(void)
|
||||
{
|
||||
for (int i = 1; i < (tokenize(__fullspawndata) - 1); i += 2) {
|
||||
switch (argv(i)) {
|
||||
|
|
|
@ -51,7 +51,7 @@ class env_spark:CBaseTrigger
|
|||
void(void) env_spark;
|
||||
virtual void(void) CreateSpark;
|
||||
virtual void(void) TimedSpark;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) Respawn;
|
||||
};
|
||||
|
||||
|
@ -68,7 +68,8 @@ void env_spark::TimedSpark(void)
|
|||
nextthink = time + (random() * m_flMaxDelay);
|
||||
}
|
||||
|
||||
void env_spark::Trigger(void)
|
||||
/* TODO: Implement state */
|
||||
void env_spark::Trigger(int state)
|
||||
{
|
||||
if (spawnflags & EVSPARK_TOGGLE) {
|
||||
if (think != __NULL__) {
|
||||
|
|
|
@ -44,7 +44,7 @@ class env_sprite:CBaseTrigger
|
|||
float m_flEffects;
|
||||
|
||||
void(void) env_sprite;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual float(entity, float) Network;
|
||||
};
|
||||
|
||||
|
@ -91,7 +91,8 @@ void env_sprite::NetworkOnce(void)
|
|||
multicast(origin, MULTICAST_PVS);
|
||||
}
|
||||
|
||||
void env_sprite::Trigger(void)
|
||||
/* TODO: Implement state */
|
||||
void env_sprite::Trigger(int state)
|
||||
{
|
||||
if (spawnflags & ENVS_PLAYONCE) {
|
||||
NetworkOnce();
|
||||
|
|
|
@ -115,14 +115,15 @@ class func_breakable:CBaseTrigger
|
|||
void(void) func_breakable;
|
||||
virtual void(void) Respawn;
|
||||
virtual void(void) Explode;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) PlayerTouch;
|
||||
/*virtual void(void) PressureDeath;*/
|
||||
virtual void(int) Pain;
|
||||
virtual void(int) Death;
|
||||
};
|
||||
|
||||
void func_breakable::Pain (int body)
|
||||
void
|
||||
func_breakable::Pain(int body)
|
||||
{
|
||||
if (spawnflags & SF_TRIGGER) {
|
||||
return;
|
||||
|
@ -159,17 +160,19 @@ void func_breakable::Pain (int body)
|
|||
}
|
||||
|
||||
|
||||
void func_breakable::Explode(void)
|
||||
void
|
||||
func_breakable::Explode(void)
|
||||
{
|
||||
vector rp = absmin + (0.5 * (absmax - absmin));
|
||||
FX_BreakModel(vlen(size) / 10, absmin, absmax, [0,0,0], m_iMaterial);
|
||||
FX_Explosion(rp);
|
||||
Damage_Radius(rp, this, m_flExplodeMag, m_flExplodeMag * 2.5f, TRUE, 0);
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
CBaseEntity::Hide();
|
||||
}
|
||||
|
||||
void func_breakable::Death(int body)
|
||||
void
|
||||
func_breakable::Death(int body)
|
||||
{
|
||||
static void break_spawnobject(void) {
|
||||
/* these might get overwritten by the entity spawnfunction */
|
||||
|
@ -215,24 +218,31 @@ void func_breakable::Death(int body)
|
|||
nextthink = time + random(0.0,0.5);
|
||||
} else {
|
||||
FX_BreakModel(vlen(size) / 10, absmin, absmax, [0,0,0], m_iMaterial);
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
CBaseEntity::Hide();
|
||||
}
|
||||
}
|
||||
|
||||
void func_breakable::Trigger(void)
|
||||
void
|
||||
func_breakable::Trigger(int state)
|
||||
{
|
||||
if (health > 0)
|
||||
func_breakable::Death(0);
|
||||
}
|
||||
|
||||
/*void func_breakable::PressureDeath(void)
|
||||
/*void
|
||||
func_breakable::PressureDeath(void)
|
||||
{
|
||||
func_breakable::Death(m_pressAttacker, m_pressType, m_pressDamage);
|
||||
}*/
|
||||
|
||||
void func_breakable::PlayerTouch(void)
|
||||
void
|
||||
func_breakable::PlayerTouch(void)
|
||||
{
|
||||
static void TriggerWrap(void) {
|
||||
Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
if (other.classname == classname) {
|
||||
return;
|
||||
}
|
||||
|
@ -252,7 +262,7 @@ void func_breakable::PlayerTouch(void)
|
|||
|
||||
if ((spawnflags & SF_PRESSURE) && (other.absmin[2] >= maxs[2] - 2)) {
|
||||
touch = __NULL__;
|
||||
think = Trigger;
|
||||
think = TriggerWrap;
|
||||
|
||||
if (m_flDelay == 0) {
|
||||
m_flDelay = 0.1f;
|
||||
|
@ -263,7 +273,8 @@ void func_breakable::PlayerTouch(void)
|
|||
}
|
||||
|
||||
|
||||
void func_breakable::Respawn(void)
|
||||
void
|
||||
func_breakable::Respawn(void)
|
||||
{
|
||||
CBaseEntity::Respawn();
|
||||
|
||||
|
@ -293,7 +304,8 @@ void func_breakable::Respawn(void)
|
|||
}
|
||||
}
|
||||
|
||||
void func_breakable::func_breakable(void)
|
||||
void
|
||||
func_breakable::func_breakable(void)
|
||||
{
|
||||
vector vvm_angles = [0,0,0];
|
||||
precache_model(model);
|
||||
|
|
|
@ -133,7 +133,7 @@ class func_button:CBaseTrigger
|
|||
virtual void(void) MoveAway;
|
||||
virtual void(void) Touch;
|
||||
virtual void(void) Blocked;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) Use;
|
||||
virtual void(int) Pain;
|
||||
virtual void(int) Death;
|
||||
|
@ -194,6 +194,7 @@ void func_button::MoveBack(void)
|
|||
{
|
||||
touch = __NULL__;
|
||||
m_iState = STATE_DOWN;
|
||||
m_iValue = 0;
|
||||
|
||||
if (m_strSndUnpressed) {
|
||||
if (m_iSoundCompat)
|
||||
|
@ -229,10 +230,12 @@ void func_button::MoveAway(void)
|
|||
Arrived();
|
||||
}
|
||||
|
||||
m_iValue = 1;
|
||||
SetFrame(FRAME_ON);
|
||||
}
|
||||
|
||||
void func_button::Trigger(void)
|
||||
/* TODO: Handle state */
|
||||
void func_button::Trigger(int state)
|
||||
{
|
||||
if (m_flNextTrigger > time) {
|
||||
return;
|
||||
|
@ -257,9 +260,9 @@ void func_button::Trigger(void)
|
|||
MoveAway();
|
||||
|
||||
if (m_flDelay) {
|
||||
UseTargets_Delay(m_flDelay);
|
||||
UseTargets_Delay(TRIG_TOGGLE, m_flDelay);
|
||||
} else {
|
||||
UseTargets();
|
||||
UseTargets(TRIG_TOGGLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -267,7 +270,7 @@ void func_button::Touch(void)
|
|||
{
|
||||
if (other.movetype == MOVETYPE_WALK) {
|
||||
eActivator = other;
|
||||
Trigger();
|
||||
Trigger(TRIG_TOGGLE);
|
||||
|
||||
if (!(spawnflags & SF_BTT_TOUCH_ONLY)) {
|
||||
touch = __NULL__;
|
||||
|
@ -277,17 +280,17 @@ void func_button::Touch(void)
|
|||
|
||||
void func_button::Use(void)
|
||||
{
|
||||
Trigger();
|
||||
Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
void func_button::Pain (int body)
|
||||
{
|
||||
Trigger();
|
||||
Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
void func_button::Death (int body)
|
||||
{
|
||||
Trigger();
|
||||
Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
void func_button::Blocked(void)
|
||||
|
|
|
@ -33,12 +33,13 @@ class func_conveyor:CBaseTrigger
|
|||
void(void) func_conveyor;
|
||||
|
||||
virtual void(void) Respawn;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) touch;
|
||||
virtual void(void) SetMovementDirection;
|
||||
};
|
||||
|
||||
void func_conveyor::SetMovementDirection(void)
|
||||
void
|
||||
func_conveyor::SetMovementDirection(void)
|
||||
{
|
||||
if (angles == [0,-1,0]) {
|
||||
m_vecMoveDir = [0,0,1];
|
||||
|
@ -50,18 +51,22 @@ void func_conveyor::SetMovementDirection(void)
|
|||
}
|
||||
}
|
||||
|
||||
void func_conveyor::touch(void)
|
||||
void
|
||||
func_conveyor::touch(void)
|
||||
{
|
||||
other.basevelocity = m_vecMoveDir * m_flSpeed;
|
||||
}
|
||||
|
||||
void func_conveyor::Trigger(void)
|
||||
/* TODO: Handle state? */
|
||||
void
|
||||
func_conveyor::Trigger(int state)
|
||||
{
|
||||
/* changes direction */
|
||||
m_flSpeed = -m_flSpeed;
|
||||
}
|
||||
|
||||
void func_conveyor::Respawn(void)
|
||||
void
|
||||
func_conveyor::Respawn(void)
|
||||
{
|
||||
m_vecMoveDir = [0,0,0];
|
||||
angles = m_oldAngle;
|
||||
|
@ -87,7 +92,8 @@ void func_conveyor::Respawn(void)
|
|||
SetAngles([0,0,0]);
|
||||
}
|
||||
|
||||
void func_conveyor::func_conveyor(void)
|
||||
void
|
||||
func_conveyor::func_conveyor(void)
|
||||
{
|
||||
CBaseTrigger::CBaseTrigger();
|
||||
}
|
||||
|
|
|
@ -98,7 +98,7 @@ class func_door:CBaseTrigger
|
|||
virtual void(void) Arrived;
|
||||
virtual void(void) Returned;
|
||||
virtual void(void) Respawn;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) Blocked;
|
||||
virtual void(void) Touch;
|
||||
virtual void(void) Use;
|
||||
|
@ -109,7 +109,7 @@ void
|
|||
func_door::Use(void)
|
||||
{
|
||||
eActivator.gflags &= ~GF_USE_RELEASED;
|
||||
Trigger();
|
||||
Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -154,7 +154,7 @@ func_door::Returned(void)
|
|||
t = (CBaseTrigger)find(world, CBaseTrigger::m_strTargetName, m_strFire);
|
||||
|
||||
if (t) {
|
||||
t.Trigger();
|
||||
t.Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -174,6 +174,7 @@ func_door::MoveBack(void)
|
|||
touch = __NULL__;
|
||||
}
|
||||
|
||||
m_iValue = 0;
|
||||
m_iState = DOORSTATE_DOWN;
|
||||
MoveToDestination(m_vecPos1, Returned);
|
||||
}
|
||||
|
@ -198,13 +199,17 @@ func_door::MoveAway(void)
|
|||
}
|
||||
}
|
||||
|
||||
m_iValue = 1;
|
||||
m_iState = DOORSTATE_UP;
|
||||
MoveToDestination(m_vecPos2, Arrived);
|
||||
}
|
||||
|
||||
void
|
||||
func_door::Trigger(void)
|
||||
func_door::Trigger(int state)
|
||||
{
|
||||
if (GetMaster() == 0)
|
||||
return;
|
||||
|
||||
if (m_flNextTrigger > time) {
|
||||
if (!(spawnflags & SF_MOV_TOGGLE)) {
|
||||
return;
|
||||
|
@ -215,9 +220,9 @@ func_door::Trigger(void)
|
|||
/* only trigger stuff once we are done moving */
|
||||
if ((m_iState == DOORSTATE_RAISED) || (m_iState == DOORSTATE_LOWERED)) {
|
||||
if (m_flDelay > 0) {
|
||||
CBaseTrigger::UseTargets_Delay(m_flDelay);
|
||||
CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay);
|
||||
} else {
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -243,7 +248,7 @@ func_door::Touch(void)
|
|||
if (other.movetype == MOVETYPE_WALK) {
|
||||
if (other.absmin[2] <= maxs[2] - 2) {
|
||||
eActivator = other;
|
||||
Trigger();
|
||||
Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -368,6 +373,7 @@ func_door::Respawn(void)
|
|||
PlayerUse = __NULL__;
|
||||
}
|
||||
|
||||
m_iValue = 0;
|
||||
m_iState = DOORSTATE_LOWERED;
|
||||
m_vecPos1 = m_oldOrigin;
|
||||
m_vecPos2 = (m_vecPos1 + m_vecMoveDir * (fabs(m_vecMoveDir * size) - m_flLip));
|
||||
|
@ -376,6 +382,7 @@ func_door::Respawn(void)
|
|||
SetOrigin(m_vecPos2);
|
||||
m_vecPos2 = m_vecPos1;
|
||||
m_vecPos1 = origin;
|
||||
m_iValue = 1;
|
||||
}
|
||||
|
||||
if (m_strTargetName) {
|
||||
|
|
|
@ -64,7 +64,7 @@ class func_door_rotating:CBaseTrigger
|
|||
virtual void(void) Returned;
|
||||
virtual void(void) Back;
|
||||
virtual void(void) Away;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) Use;
|
||||
virtual void(void) Touch;
|
||||
virtual void(void) Blocked;
|
||||
|
@ -196,7 +196,8 @@ void func_door_rotating::Away(void)
|
|||
RotToDest(m_vecPos2 * fDirection, Arrived);
|
||||
}
|
||||
|
||||
void func_door_rotating::Trigger(void)
|
||||
/* TODO: Handle state */
|
||||
void func_door_rotating::Trigger(int state)
|
||||
{
|
||||
if (GetMaster() == FALSE) {
|
||||
return;
|
||||
|
@ -215,16 +216,16 @@ void func_door_rotating::Trigger(void)
|
|||
Away();
|
||||
|
||||
if (m_flDelay) {
|
||||
CBaseTrigger::UseTargets_Delay(m_flDelay);
|
||||
CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay);
|
||||
} else {
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
}
|
||||
}
|
||||
|
||||
void func_door_rotating::Use(void)
|
||||
{
|
||||
eActivator.gflags &= ~GF_USE_RELEASED;
|
||||
Trigger();
|
||||
Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
void func_door_rotating::Touch(void)
|
||||
|
@ -239,7 +240,7 @@ void func_door_rotating::Touch(void)
|
|||
|
||||
if (other.movetype == MOVETYPE_WALK) {
|
||||
eActivator = other;
|
||||
Trigger();
|
||||
Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
touch = __NULL__;
|
||||
}
|
||||
|
|
|
@ -37,20 +37,10 @@ class func_guntarget:CBaseTrigger
|
|||
virtual void(void) NextPath;
|
||||
virtual void(void) Move;
|
||||
virtual void(void) Stop;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(int) Death;
|
||||
virtual int(void) GetValue;
|
||||
};
|
||||
|
||||
int func_guntarget::GetValue(void)
|
||||
{
|
||||
if (health <= 0) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void func_guntarget::Move(void)
|
||||
{
|
||||
float flTravelTime;
|
||||
|
@ -114,7 +104,7 @@ void func_guntarget::Death(int iHitBody)
|
|||
|
||||
for (a = world; (a = find(a, CBaseTrigger::m_strTargetName, m_strFire));) {
|
||||
CBaseTrigger trigger = (CBaseTrigger)a;
|
||||
trigger.Trigger();
|
||||
trigger.Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -126,28 +116,35 @@ void func_guntarget::Stop(void)
|
|||
think = __NULL__;
|
||||
}
|
||||
|
||||
void func_guntarget::Trigger(void)
|
||||
/* TODO: Handle state? */
|
||||
void func_guntarget::Trigger(int state)
|
||||
{
|
||||
flags = (1 << FL_FROZEN) | flags;
|
||||
|
||||
if (flags & FL_FROZEN) {
|
||||
takedamage = DAMAGE_NO;
|
||||
Stop();
|
||||
m_iValue = 1;
|
||||
} else {
|
||||
takedamage = DAMAGE_YES;
|
||||
NextPath();
|
||||
m_iValue = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void func_guntarget::Respawn(void)
|
||||
{
|
||||
static void ThinkWrap(void) {
|
||||
Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
SetSolid(SOLID_BSP);
|
||||
SetMovetype(MOVETYPE_PUSH);
|
||||
SetModel(m_oldModel);
|
||||
SetOrigin(m_oldOrigin);
|
||||
|
||||
if (spawnflags & SF_GUNTARGET_ON) {
|
||||
think = Trigger;
|
||||
think = ThinkWrap;
|
||||
nextthink = ltime + 0.25f;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,10 +45,11 @@ class func_pendulum:CBaseTrigger
|
|||
|
||||
virtual void(void) customphysics;
|
||||
virtual void(void) Respawn;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
};
|
||||
|
||||
void func_pendulum::customphysics(void)
|
||||
void
|
||||
func_pendulum::customphysics(void)
|
||||
{
|
||||
if (!m_iActive)
|
||||
return;
|
||||
|
@ -65,15 +66,26 @@ void func_pendulum::customphysics(void)
|
|||
angles *= m_flDistance;
|
||||
}
|
||||
|
||||
void func_pendulum::Trigger(void)
|
||||
void
|
||||
func_pendulum::Trigger(int state)
|
||||
{
|
||||
switch (state) {
|
||||
case TRIG_OFF:
|
||||
m_iActive = 0;
|
||||
break;
|
||||
case TRIG_ON:
|
||||
m_iActive = 1;
|
||||
break;
|
||||
default:
|
||||
m_iActive = 1 - m_iActive;
|
||||
}
|
||||
|
||||
if (m_iActive == FALSE && spawnflags & FUNCPEND_RETURNONTRIGGER)
|
||||
if (m_iActive == 0 && spawnflags & FUNCPEND_RETURNONTRIGGER)
|
||||
angles = [0,0,0];
|
||||
}
|
||||
|
||||
void func_pendulum::Respawn(void)
|
||||
void
|
||||
func_pendulum::Respawn(void)
|
||||
{
|
||||
if (spawnflags & FUNCPEND_STARTON)
|
||||
m_iActive = TRUE;
|
||||
|
@ -88,7 +100,8 @@ void func_pendulum::Respawn(void)
|
|||
SetOrigin(origin);
|
||||
}
|
||||
|
||||
void func_pendulum::func_pendulum(void)
|
||||
void
|
||||
func_pendulum::func_pendulum(void)
|
||||
{
|
||||
CBaseTrigger::CBaseTrigger();
|
||||
|
||||
|
|
|
@ -52,18 +52,21 @@ class func_rotating:CBaseTrigger
|
|||
|
||||
void(void) func_rotating;
|
||||
virtual void(void) Respawn;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) Rotate;
|
||||
virtual void(void) Blocked;
|
||||
virtual void(void) SetMovementDirection;
|
||||
};
|
||||
|
||||
void func_rotating::Rotate(void)
|
||||
void
|
||||
func_rotating::Rotate(void)
|
||||
{
|
||||
nextthink = ltime + 10.0f;
|
||||
}
|
||||
|
||||
void func_rotating::Trigger(void)
|
||||
/* TODO: Handle state */
|
||||
void
|
||||
func_rotating::Trigger(int state)
|
||||
{
|
||||
if (vlen(avelocity)) {
|
||||
avelocity = [0,0,0];
|
||||
|
@ -81,7 +84,8 @@ void func_rotating::Trigger(void)
|
|||
}
|
||||
}
|
||||
|
||||
void func_rotating::Blocked(void)
|
||||
void
|
||||
func_rotating::Blocked(void)
|
||||
{
|
||||
if (avelocity == [0,0,0]) {
|
||||
return;
|
||||
|
@ -92,7 +96,8 @@ void func_rotating::Blocked(void)
|
|||
}
|
||||
}
|
||||
|
||||
void func_rotating::Respawn(void)
|
||||
void
|
||||
func_rotating::Respawn(void)
|
||||
{
|
||||
#ifdef GS_DEVELOPER
|
||||
if (autocvar_dev_rotspeed != 0) {
|
||||
|
@ -120,7 +125,8 @@ void func_rotating::Respawn(void)
|
|||
}
|
||||
}
|
||||
|
||||
void func_rotating::SetMovementDirection(void)
|
||||
void
|
||||
func_rotating::SetMovementDirection(void)
|
||||
{
|
||||
if (spawnflags & FR_ZAXIS) {
|
||||
m_vecMoveDir = [0,0,1];
|
||||
|
@ -135,7 +141,8 @@ void func_rotating::SetMovementDirection(void)
|
|||
}
|
||||
}
|
||||
|
||||
void func_rotating::func_rotating(void)
|
||||
void
|
||||
func_rotating::func_rotating(void)
|
||||
{
|
||||
precache_model(model);
|
||||
for (int i = 1; i < (tokenize(__fullspawndata) - 1); i += 2) {
|
||||
|
|
|
@ -31,7 +31,7 @@ class func_tracktrain:CBaseTrigger
|
|||
virtual void(void) Find;
|
||||
virtual void(void) NextPath;
|
||||
virtual void(void) GoToTarget;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) Respawn;
|
||||
};
|
||||
|
||||
|
@ -72,7 +72,7 @@ void func_tracktrain::NextPath(void)
|
|||
GoToTarget();
|
||||
}
|
||||
|
||||
void func_tracktrain::Trigger(void)
|
||||
void func_tracktrain::Trigger(int state)
|
||||
{
|
||||
GoToTarget();
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ class func_train:CBaseTrigger
|
|||
void(void) func_train;
|
||||
virtual void(void) NextPath;
|
||||
virtual void(void) GoToTarget;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) Respawn;
|
||||
virtual void(void) Blocked;
|
||||
};
|
||||
|
@ -154,7 +154,7 @@ func_train::NextPath(void)
|
|||
|
||||
/* fire the path_corners' target */
|
||||
if (eNode.m_strMessage) {
|
||||
eNode.Trigger();
|
||||
eNode.Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
/* stuff for the ears */
|
||||
|
@ -193,8 +193,9 @@ func_train::NextPath(void)
|
|||
}
|
||||
}
|
||||
|
||||
/* TODO: Handle state? */
|
||||
void
|
||||
func_train::Trigger(void)
|
||||
func_train::Trigger(int state)
|
||||
{
|
||||
GoToTarget();
|
||||
}
|
||||
|
|
|
@ -24,10 +24,26 @@ On idTech 2 BSPs, it will change texture variants when triggered.
|
|||
class func_wall:CBaseTrigger
|
||||
{
|
||||
void(void) func_wall;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
};
|
||||
|
||||
void func_wall::func_wall(void)
|
||||
void
|
||||
func_wall::Trigger(int state)
|
||||
{
|
||||
switch (state) {
|
||||
case TRIG_OFF:
|
||||
frame = 0;
|
||||
break;
|
||||
case TRIG_ON:
|
||||
frame = 1;
|
||||
break;
|
||||
default:
|
||||
frame = 1 - frame;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
func_wall::func_wall(void)
|
||||
{
|
||||
precache_model(model);
|
||||
//angles = [0,0,0];
|
||||
|
@ -37,8 +53,3 @@ void func_wall::func_wall(void)
|
|||
SetOrigin(origin);
|
||||
CBaseTrigger::CBaseTrigger();
|
||||
}
|
||||
|
||||
void func_wall::Trigger(void)
|
||||
{
|
||||
frame = 1 - frame;
|
||||
}
|
||||
|
|
|
@ -34,12 +34,22 @@ class func_wall_toggle:CBaseTrigger
|
|||
|
||||
void(void) func_wall_toggle;
|
||||
virtual void(void) Respawn;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
};
|
||||
|
||||
void func_wall_toggle::Trigger(void)
|
||||
void
|
||||
func_wall_toggle::Trigger(int state)
|
||||
{
|
||||
switch (state) {
|
||||
case TRIG_OFF:
|
||||
m_iVisible = 0;
|
||||
break;
|
||||
case TRIG_ON:
|
||||
m_iVisible = 1;
|
||||
break;
|
||||
default:
|
||||
m_iVisible = 1 - m_iVisible;
|
||||
}
|
||||
|
||||
if (m_iVisible) {
|
||||
modelindex = m_oldmodelindex;
|
||||
|
@ -50,7 +60,8 @@ void func_wall_toggle::Trigger(void)
|
|||
}
|
||||
}
|
||||
|
||||
void func_wall_toggle::Respawn(void)
|
||||
void
|
||||
func_wall_toggle::Respawn(void)
|
||||
{
|
||||
movetype = MOVETYPE_PUSH;
|
||||
solid = SOLID_BSP;
|
||||
|
@ -60,11 +71,12 @@ void func_wall_toggle::Respawn(void)
|
|||
m_oldmodelindex = modelindex;
|
||||
|
||||
if (spawnflags & FTW_STARTHIDDEN) {
|
||||
Trigger();
|
||||
Trigger(TRIG_OFF);
|
||||
}
|
||||
}
|
||||
|
||||
void func_wall_toggle::func_wall_toggle(void)
|
||||
void
|
||||
func_wall_toggle::func_wall_toggle(void)
|
||||
{
|
||||
precache_model(model);
|
||||
CBaseTrigger::CBaseTrigger();
|
||||
|
|
|
@ -61,10 +61,10 @@ class game_text:CBaseTrigger
|
|||
|
||||
void(void) game_text;
|
||||
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
};
|
||||
|
||||
void game_text::Trigger(void)
|
||||
void game_text::Trigger(int state)
|
||||
{
|
||||
WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET);
|
||||
WriteByte(MSG_MULTICAST, EV_TEXT);
|
||||
|
|
|
@ -35,12 +35,13 @@ class infodecal:CBaseTrigger
|
|||
string m_strTexture;
|
||||
|
||||
void(void) infodecal;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) Respawn;
|
||||
};
|
||||
|
||||
/* TODO: Handle state? */
|
||||
void
|
||||
infodecal::Trigger(void)
|
||||
infodecal::Trigger(int state)
|
||||
{
|
||||
decal new = spawn(decal);
|
||||
new.Place(origin, m_strTexture);
|
||||
|
@ -53,7 +54,7 @@ infodecal::Respawn(void)
|
|||
/* this will be invisible by default */
|
||||
if (!m_strTargetName) {
|
||||
/* spawn automatically, remove self */
|
||||
Trigger();
|
||||
Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -60,18 +60,27 @@ class light:CBaseTrigger
|
|||
string m_strPattern;
|
||||
|
||||
void(void) light;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) Respawn;
|
||||
};
|
||||
|
||||
void light::Trigger(void)
|
||||
void light::Trigger(int state)
|
||||
{
|
||||
if (m_iEnabled == TRUE) {
|
||||
switch (state) {
|
||||
case TRIG_OFF:
|
||||
m_iEnabled = 0;
|
||||
break;
|
||||
case TRIG_ON:
|
||||
m_iEnabled = 1;
|
||||
break;
|
||||
default:
|
||||
m_iEnabled = 1 - m_iEnabled;
|
||||
}
|
||||
|
||||
if (m_iEnabled == 0) {
|
||||
lightstyle(m_flStyle, "a");
|
||||
m_iEnabled = FALSE;
|
||||
} else {
|
||||
lightstyle(m_flStyle, m_strPattern);
|
||||
m_iEnabled = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -79,10 +88,10 @@ void light::Respawn(void)
|
|||
{
|
||||
if (spawnflags & 1) {
|
||||
lightstyle(m_flStyle, "a");
|
||||
m_iEnabled = FALSE;
|
||||
m_iEnabled = 0;
|
||||
} else {
|
||||
lightstyle(m_flStyle, m_strPattern);
|
||||
m_iEnabled = TRUE;
|
||||
m_iEnabled = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ class monstermaker:CBaseTrigger
|
|||
void(void) monstermaker;
|
||||
|
||||
virtual void(void) Spawner;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) Respawn;
|
||||
virtual void(void) TurnOn;
|
||||
virtual void(void) TurnOff;
|
||||
|
@ -142,7 +142,7 @@ monstermaker::Spawner(void)
|
|||
m_iMonsterSpawned++;
|
||||
|
||||
if (m_strTarget) {
|
||||
UseTargets();
|
||||
UseTargets(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
/* inherit the monsterclip flag */
|
||||
|
@ -170,13 +170,22 @@ monstermaker::Spawner(void)
|
|||
}
|
||||
|
||||
void
|
||||
monstermaker::Trigger(void)
|
||||
monstermaker::Trigger(int state)
|
||||
{
|
||||
switch (state) {
|
||||
case TRIG_OFF:
|
||||
TurnOff();
|
||||
break;
|
||||
case TRIG_ON:
|
||||
TurnOn();
|
||||
break;
|
||||
default:
|
||||
if (m_iEnabled)
|
||||
TurnOff();
|
||||
else
|
||||
TurnOn();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
monstermaker::Respawn(void)
|
||||
|
|
|
@ -46,7 +46,7 @@ class multi_manager:CBaseTrigger
|
|||
int m_iBusy;
|
||||
int m_iValue;
|
||||
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual int(void) GetValue;
|
||||
};
|
||||
|
||||
|
@ -57,7 +57,7 @@ multi_manager::GetValue(void)
|
|||
}
|
||||
|
||||
void
|
||||
multi_manager::Trigger(void)
|
||||
multi_manager::Trigger(int state)
|
||||
{
|
||||
static void mm_enttrigger (void) {
|
||||
multi_manager_sub wow = (multi_manager_sub)self;
|
||||
|
@ -67,7 +67,7 @@ multi_manager::Trigger(void)
|
|||
dprint(sprintf("^2%s::^3Trigger^7: %s (%s)\n",
|
||||
this.classname, wow.m_strTarget, eFind.classname));
|
||||
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
m_iValue = TRUE;
|
||||
|
|
|
@ -26,12 +26,13 @@ class multisource:CBaseTrigger
|
|||
{
|
||||
void(void) multisource;
|
||||
|
||||
virtual int(void) GetValue;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(void) Respawn;
|
||||
virtual int(void) QueryTargets;
|
||||
virtual void(int) Trigger;
|
||||
};
|
||||
|
||||
int
|
||||
multisource::GetValue(void)
|
||||
multisource::QueryTargets(void)
|
||||
{
|
||||
entity a;
|
||||
int out = TRUE;
|
||||
|
@ -39,7 +40,7 @@ multisource::GetValue(void)
|
|||
/* normal triggers */
|
||||
for (a = world; (a = find(a, CBaseTrigger::m_strTarget, m_strTargetName));) {
|
||||
CBaseTrigger tTemp = (CBaseTrigger) a;
|
||||
#ifdef GS_DEVELOPER
|
||||
if (cvar("developer") == 1) {
|
||||
dprint("[^1MULTISOURCE^7] ");
|
||||
dprint(tTemp.classname);
|
||||
if (tTemp.GetValue() == FALSE) {
|
||||
|
@ -50,25 +51,35 @@ multisource::GetValue(void)
|
|||
}
|
||||
dprint(tTemp.m_strTargetName);
|
||||
dprint("\n");
|
||||
#else
|
||||
} else {
|
||||
/* exit out immediately as there's no point unless in-dev */
|
||||
if (tTemp.GetValue() == FALSE) {
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
void
|
||||
multisource::Trigger(void)
|
||||
multisource::Trigger(int unused)
|
||||
{
|
||||
if (GetValue() == FALSE) {
|
||||
if (QueryTargets() == FALSE) {
|
||||
dprint(sprintf("[^1MULTISOURCE^7] %s is inactive.\n", m_strTargetName));
|
||||
m_iValue = FALSE;
|
||||
return;
|
||||
}
|
||||
|
||||
CBaseTrigger::UseTargets();
|
||||
dprint(sprintf("[^1MULTISOURCE^7] %s is now active.\n", m_strTargetName));
|
||||
m_iValue = TRUE;
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
void
|
||||
multisource::Respawn(void)
|
||||
{
|
||||
m_iValue = FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -53,12 +53,12 @@ class path_corner:CBaseTrigger
|
|||
float m_flWait;
|
||||
|
||||
void(void) path_corner;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) Respawn;
|
||||
};
|
||||
|
||||
void
|
||||
path_corner::Trigger(void)
|
||||
path_corner::Trigger(int state)
|
||||
{
|
||||
entity a;
|
||||
|
||||
|
@ -68,7 +68,7 @@ path_corner::Trigger(void)
|
|||
|
||||
for (a = world; (a = find(a, CBaseTrigger::m_strTargetName, m_strMessage));) {
|
||||
CBaseTrigger trigger = (CBaseTrigger)a;
|
||||
trigger.Trigger();
|
||||
trigger.Trigger(state);
|
||||
m_iFired = TRUE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ class player_loadsaved:CBaseTrigger
|
|||
float m_flFadeHold;
|
||||
|
||||
void(void) player_loadsaved;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) ReloadSave;
|
||||
};
|
||||
|
||||
|
@ -47,7 +47,7 @@ player_loadsaved::ReloadSave(void)
|
|||
}
|
||||
|
||||
void
|
||||
player_loadsaved::Trigger(void)
|
||||
player_loadsaved::Trigger(int unused)
|
||||
{
|
||||
WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET);
|
||||
WriteByte(MSG_MULTICAST, EV_FADE);
|
||||
|
|
|
@ -23,11 +23,11 @@ Strips the activator of all of its weapons.
|
|||
class player_weaponstrip:CBaseTrigger
|
||||
{
|
||||
void(void) player_weaponstrip;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
};
|
||||
|
||||
void
|
||||
player_weaponstrip::Trigger(void)
|
||||
player_weaponstrip::Trigger(int unused)
|
||||
{
|
||||
base_player pl;
|
||||
|
||||
|
|
|
@ -38,11 +38,11 @@ class scripted_sentence:CBaseTrigger
|
|||
float m_flDuration;
|
||||
|
||||
void(void) scripted_sentence;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int state) Trigger;
|
||||
};
|
||||
|
||||
void
|
||||
scripted_sentence::Trigger(void)
|
||||
scripted_sentence::Trigger(int unused)
|
||||
{
|
||||
entity speaker = find(world, CBaseEntity::m_strTargetName, m_strSpeaker);
|
||||
|
||||
|
|
|
@ -92,13 +92,13 @@ class scripted_sequence:CBaseTrigger
|
|||
int m_iMove;
|
||||
|
||||
void(void) scripted_sequence;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) InitIdle;
|
||||
virtual void(void) Respawn;
|
||||
};
|
||||
|
||||
void
|
||||
scripted_sequence::Trigger(void)
|
||||
scripted_sequence::Trigger(int unused)
|
||||
{
|
||||
CBaseMonster f;
|
||||
float duration;
|
||||
|
|
|
@ -40,7 +40,7 @@ trigger_auto::Processing(void)
|
|||
// This is weird, because ents may not be spawned yet.
|
||||
// However, Half-Life doesn't care about this, either.
|
||||
// So why should we?
|
||||
CBaseTrigger::UseTargets_Delay(m_flDelay);
|
||||
CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay);
|
||||
|
||||
if (spawnflags & 1) {
|
||||
dprint(sprintf("^2trigger_auto::^3think^7: %s triggerer removed self\n",
|
||||
|
|
|
@ -48,13 +48,13 @@ trigger_autosave::touch(void)
|
|||
dprint(sprintf("^2trigger_autosave::^3touch^7: %s called autosave\n",
|
||||
other.netname));
|
||||
|
||||
localcmd("save autosave\n");
|
||||
//localcmd("save autosave\n");
|
||||
Hide();
|
||||
|
||||
if (m_flDelay > 0) {
|
||||
CBaseTrigger::UseTargets_Delay(m_flDelay);
|
||||
CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay);
|
||||
} else {
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
}
|
||||
solid = SOLID_NOT;
|
||||
}
|
||||
|
|
|
@ -30,16 +30,16 @@ class trigger_camera:CBaseTrigger
|
|||
float m_flWait;
|
||||
|
||||
void(void) trigger_camera;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
};
|
||||
|
||||
void
|
||||
trigger_camera::Trigger(void)
|
||||
trigger_camera::Trigger(int state)
|
||||
{
|
||||
if (m_flDelay > 0) {
|
||||
CBaseTrigger::UseTargets_Delay(m_flDelay);
|
||||
CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay);
|
||||
} else {
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
if (m_strMoveTo) {
|
||||
|
|
|
@ -26,12 +26,13 @@ class trigger_cdaudio:CBaseTrigger
|
|||
int m_iCDTrack;
|
||||
void(void) trigger_cdaudio;
|
||||
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) Respawn;
|
||||
virtual void(void) touch;
|
||||
};
|
||||
|
||||
void
|
||||
trigger_cdaudio::Trigger(void)
|
||||
trigger_cdaudio::Trigger(int unused)
|
||||
{
|
||||
if (!(other.flags & FL_CLIENT)) {
|
||||
return;
|
||||
|
@ -49,6 +50,12 @@ trigger_cdaudio::Trigger(void)
|
|||
remove(this);
|
||||
}
|
||||
|
||||
void
|
||||
trigger_cdaudio::touch(void)
|
||||
{
|
||||
Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
void
|
||||
trigger_cdaudio::Respawn(void)
|
||||
{
|
||||
|
@ -69,5 +76,4 @@ trigger_cdaudio::trigger_cdaudio(void)
|
|||
}
|
||||
CBaseTrigger::CBaseTrigger();
|
||||
CBaseTrigger::InitBrushTrigger();
|
||||
touch = Trigger;
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ class trigger_changelevel:CBaseTrigger
|
|||
|
||||
void(void) trigger_changelevel;
|
||||
virtual void(void) Change;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) TouchTrigger;
|
||||
virtual void(void) Respawn;
|
||||
virtual int(entity, entity) IsInside;
|
||||
|
@ -97,7 +97,7 @@ trigger_changelevel::Change(void)
|
|||
}
|
||||
|
||||
void
|
||||
trigger_changelevel::Trigger(void)
|
||||
trigger_changelevel::Trigger(int unused)
|
||||
{
|
||||
/* this means a delayed trigger is active */
|
||||
if (nextthink > 0.0f)
|
||||
|
@ -123,7 +123,7 @@ void
|
|||
trigger_changelevel::TouchTrigger(void)
|
||||
{
|
||||
eActivator = other;
|
||||
Trigger();
|
||||
Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -45,29 +45,32 @@ class trigger_hurt:CBaseTrigger
|
|||
float m_flDelay;
|
||||
void(void) trigger_hurt;
|
||||
|
||||
virtual void(void) Trigger;
|
||||
virtual void(void) Touch;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) touch;
|
||||
virtual void(void) Respawn;
|
||||
};
|
||||
|
||||
void
|
||||
trigger_hurt::Trigger(void)
|
||||
trigger_hurt::Trigger(int state)
|
||||
{
|
||||
if (solid != SOLID_NOT) {
|
||||
dprint(sprintf("trigger_hurt::^3Trigger: %s deactivated\n",
|
||||
m_strTargetName));
|
||||
switch (state) {
|
||||
case TRIG_OFF:
|
||||
solid = SOLID_NOT;
|
||||
touch = __NULL__;
|
||||
} else {
|
||||
dprint(sprintf("trigger_hurt::^3Trigger: %s activated\n",
|
||||
m_strTargetName));
|
||||
break;
|
||||
case TRIG_ON:
|
||||
solid = SOLID_TRIGGER;
|
||||
InitBrushTrigger();
|
||||
touch = Touch;
|
||||
break;
|
||||
default:
|
||||
if (solid == SOLID_NOT)
|
||||
Trigger(TRIG_ON);
|
||||
else
|
||||
Trigger(TRIG_OFF);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
trigger_hurt::Touch(void)
|
||||
trigger_hurt::touch(void)
|
||||
{
|
||||
if (m_flNextTrigger > time) {
|
||||
return;
|
||||
|
@ -84,17 +87,17 @@ trigger_hurt::Touch(void)
|
|||
if (other.flags & FL_CLIENT) {
|
||||
eActivator = other;
|
||||
if (m_flDelay > 0) {
|
||||
CBaseTrigger::UseTargets_Delay(m_flDelay);
|
||||
CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay);
|
||||
} else {
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
eActivator = other;
|
||||
if (m_flDelay > 0) {
|
||||
CBaseTrigger::UseTargets_Delay(m_flDelay);
|
||||
CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay);
|
||||
} else {
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -106,7 +109,7 @@ trigger_hurt::Touch(void)
|
|||
|
||||
/* shut it down if used once */
|
||||
if (spawnflags & SF_HURT_ONCE) {
|
||||
Trigger();
|
||||
Trigger(TRIG_OFF);
|
||||
}
|
||||
|
||||
m_flNextTrigger = time + m_flNextDmg;
|
||||
|
@ -119,10 +122,9 @@ trigger_hurt::Respawn(void)
|
|||
m_flNextTrigger = 0.0f;
|
||||
|
||||
if (spawnflags & SF_HURT_OFF) {
|
||||
solid = SOLID_NOT;
|
||||
Trigger(TRIG_OFF);
|
||||
} else {
|
||||
InitBrushTrigger();
|
||||
touch = Touch;
|
||||
Trigger(TRIG_ON);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -53,6 +53,9 @@ trigger_look::Touch(void)
|
|||
float dot;
|
||||
entity lt;
|
||||
|
||||
if (GetMaster() == FALSE)
|
||||
return;
|
||||
|
||||
if (!(other.flags & FL_CLIENT)) {
|
||||
/* FIXME: could this conflict with other entities? probably. */
|
||||
m_flLooked = 0.0f;
|
||||
|
@ -86,9 +89,9 @@ trigger_look::Touch(void)
|
|||
|
||||
/* trigger and disable entity, for now */
|
||||
if (m_flDelay > 0) {
|
||||
UseTargets_Delay(m_flDelay);
|
||||
UseTargets_Delay(TRIG_TOGGLE, m_flDelay);
|
||||
} else {
|
||||
UseTargets();
|
||||
UseTargets(TRIG_TOGGLE);
|
||||
}
|
||||
solid = SOLID_NOT;
|
||||
}
|
||||
|
|
|
@ -48,6 +48,9 @@ trigger_multiple::touch(void)
|
|||
{
|
||||
eActivator = other;
|
||||
|
||||
if (GetMaster() == FALSE)
|
||||
return;
|
||||
|
||||
if (Rules_IsTeamPlay() == TRUE) {
|
||||
if (m_iTeam > 0 && eActivator.team != m_iTeam + 1) {
|
||||
return;
|
||||
|
@ -59,9 +62,9 @@ trigger_multiple::touch(void)
|
|||
}
|
||||
|
||||
if (m_flDelay > 0) {
|
||||
UseTargets_Delay(m_flDelay);
|
||||
UseTargets_Delay(TRIG_TOGGLE, m_flDelay);
|
||||
} else {
|
||||
UseTargets();
|
||||
UseTargets(TRIG_TOGGLE);
|
||||
}
|
||||
|
||||
/* This is effectively a trigger_once...*/
|
||||
|
|
|
@ -35,7 +35,6 @@ enumflags
|
|||
|
||||
class trigger_once:CBaseTrigger
|
||||
{
|
||||
float m_flDelay;
|
||||
void(void) trigger_once;
|
||||
|
||||
virtual void(void) touch;
|
||||
|
@ -49,22 +48,27 @@ trigger_once::touch(void)
|
|||
return;
|
||||
if (spawnflags & TO_NOCLIENTS && other.spawnflags & FL_CLIENT)
|
||||
return;
|
||||
if (GetMaster() == FALSE)
|
||||
return;
|
||||
|
||||
eActivator = other;
|
||||
solid = SOLID_NOT; /* make inactive */
|
||||
m_iValue = 1;
|
||||
|
||||
if (m_flDelay > 0) {
|
||||
CBaseTrigger::UseTargets_Delay(m_flDelay);
|
||||
CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay);
|
||||
} else {
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
trigger_once::Respawn(void)
|
||||
{
|
||||
m_iValue = 0;
|
||||
solid = SOLID_TRIGGER;
|
||||
SetRenderMode(RM_TRIGGER);
|
||||
InitBrushTrigger();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -81,5 +85,4 @@ trigger_once::trigger_once(void)
|
|||
}
|
||||
|
||||
CBaseTrigger::CBaseTrigger();
|
||||
InitBrushTrigger();
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ class trigger_push:CBaseTrigger
|
|||
|
||||
virtual void(void) touch;
|
||||
virtual void(void) Respawn;
|
||||
virtual void(void) Trigger;
|
||||
virtual void(int state) Trigger;
|
||||
virtual void(void) SetMovementDirection;
|
||||
};
|
||||
|
||||
|
@ -60,12 +60,17 @@ trigger_push::SetMovementDirection(void)
|
|||
}
|
||||
|
||||
void
|
||||
trigger_push::Trigger(void)
|
||||
trigger_push::Trigger(int state)
|
||||
{
|
||||
if (solid == SOLID_NOT) {
|
||||
solid = SOLID_TRIGGER;
|
||||
} else {
|
||||
switch (state) {
|
||||
case TRIG_OFF:
|
||||
solid = SOLID_NOT;
|
||||
break;
|
||||
case TRIG_ON:
|
||||
solid = SOLID_TRIGGER;
|
||||
break;
|
||||
default:
|
||||
solid = (solid == SOLID_NOT) ? SOLID_TRIGGER : SOLID_NOT;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,12 +14,78 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/*QUAKED trigger_relay (0 .5 .8) ?
|
||||
/*QUAKED trigger_relay (0 .5 .8) ? TRLY_ONCE
|
||||
"targetname" Name
|
||||
"target" Target when triggered.
|
||||
"killtarget" Target to kill when triggered.
|
||||
"delay" Delay til the target is triggered.
|
||||
"triggerstate" Desired state of the triggered entity.
|
||||
|
||||
See trigger_once.
|
||||
This is an inbetween trigger that forces a desired output state
|
||||
instead of toggling e.g. a door open.
|
||||
|
||||
When the spawnflag TRLY_ONCE is set, the trigger_relay will be removed upon
|
||||
triggering its targets.
|
||||
*/
|
||||
|
||||
CLASSEXPORT(trigger_relay, trigger_once)
|
||||
enumflags
|
||||
{
|
||||
TRLY_ONCE,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
TRL_STATE_OFF,
|
||||
TRL_STATE_ON,
|
||||
TRL_STATE_TOGGLE
|
||||
};
|
||||
|
||||
class trigger_relay:CBaseTrigger
|
||||
{
|
||||
int m_iTriggerState;
|
||||
int m_iEnabled;
|
||||
|
||||
void(void) trigger_relay;
|
||||
virtual void(int) Trigger;
|
||||
virtual void(void) Respawn;
|
||||
};
|
||||
|
||||
void
|
||||
trigger_relay::Trigger(int state)
|
||||
{
|
||||
if (m_iEnabled == FALSE)
|
||||
return;
|
||||
if (spawnflags & TRLY_ONCE)
|
||||
m_iEnabled = FALSE;
|
||||
|
||||
if (m_flDelay > 0) {
|
||||
CBaseTrigger::UseTargets_Delay(m_iTriggerState, m_flDelay);
|
||||
} else {
|
||||
CBaseTrigger::UseTargets(m_iTriggerState);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
trigger_relay::Respawn(void)
|
||||
{
|
||||
m_iEnabled = TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
trigger_relay::trigger_relay(void)
|
||||
{
|
||||
CBaseTrigger::CBaseTrigger();
|
||||
|
||||
for (int i = 1; i < (tokenize(__fullspawndata) - 1); i += 2) {
|
||||
switch (argv(i)) {
|
||||
case "delay":
|
||||
m_flDelay = stof(argv(i+1));
|
||||
break;
|
||||
case "triggerstate":
|
||||
m_iTriggerState = stoi(argv(i+1));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -94,7 +94,7 @@ item_c4::Logic(void)
|
|||
for (entity e = world; (e = find(e, ::classname, "func_bomb_target"));) {
|
||||
CBaseTrigger trigger = (CBaseTrigger)e;
|
||||
if (trigger.Trigger != __NULL__) {
|
||||
trigger.Trigger();
|
||||
trigger.Trigger(TRIG_TOGGLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ void item_suit::touch(void)
|
|||
sound(other, CHAN_ITEM, "items/tr_kevlar.wav", 1, ATTN_NORM);
|
||||
pl.g_items |= ITEM_SUIT;
|
||||
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
|
||||
if (cvar("sv_playerslots") == 1) {
|
||||
remove(self);
|
||||
|
|
|
@ -47,7 +47,7 @@ void item_longjump::touch(void)
|
|||
sound(other, CHAN_VOICE, "fvox/powermove_on.wav", 1, ATTN_NORM);
|
||||
pl.g_items |= ITEM_LONGJUMP;
|
||||
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
|
||||
if (real_owner || cvar("sv_playerslots") == 1) {
|
||||
remove(self);
|
||||
|
|
|
@ -45,8 +45,9 @@ void item_suit::touch(void)
|
|||
sound(other, CHAN_ITEM, "fvox/bell.wav", 1, ATTN_NORM);
|
||||
sound(other, CHAN_VOICE, "fvox/hev_logon.wav", 1, ATTN_NORM);
|
||||
pl.g_items |= ITEM_SUIT;
|
||||
m_iValue = TRUE;
|
||||
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
|
||||
if (real_owner || cvar("sv_playerslots") == 1) {
|
||||
remove(self);
|
||||
|
@ -64,6 +65,7 @@ void item_suit::Respawn(void)
|
|||
SetSize(VEC_HULL_MIN, VEC_HULL_MAX);
|
||||
SetOrigin(m_oldOrigin);
|
||||
SetModel(m_oldModel);
|
||||
m_iValue = FALSE;
|
||||
|
||||
think = __NULL__;
|
||||
nextthink = -1;
|
||||
|
|
|
@ -28,7 +28,7 @@ void item_pickup::touch(void)
|
|||
Logging_Pickup(other, this, __NULL__);
|
||||
Sound_Play(other, CHAN_ITEM, "weapon.pickup");
|
||||
|
||||
CBaseTrigger::UseTargets();
|
||||
CBaseTrigger::UseTargets(TRIG_TOGGLE);
|
||||
|
||||
if (real_owner || m_iWasDropped == 1 || cvar("sv_playerslots") == 1) {
|
||||
remove(self);
|
||||
|
|
|
@ -83,6 +83,7 @@ monster_houndeye::AttackMelee(void)
|
|||
|
||||
think = AttackBlast;
|
||||
nextthink = m_flAnimTime;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Reference in a new issue