diff --git a/src/client/entry.c b/src/client/entry.c index 32fbc687..7b06ed9f 100644 --- a/src/client/entry.c +++ b/src/client/entry.c @@ -257,6 +257,7 @@ CSQC_UpdateView(float w, float h, float focus) setproperty(VF_CL_VIEWANGLES, view_angles); setproperty(VF_ANGLES, view_angles); } else { + pSeat->m_vecCameraOrigin = [0,0,0]; if (pl.health) { if (autocvar_cl_thirdperson == TRUE) { makevectors(view_angles); @@ -525,15 +526,25 @@ CSQC_Parse_Event(void) GameMessage_Parse(); break; case EV_CAMERATRIGGER: - pSeat->m_vecCameraOrigin[0] = readcoord(); - pSeat->m_vecCameraOrigin[1] = readcoord(); - pSeat->m_vecCameraOrigin[2] = readcoord(); + vector cam_newpos; + + cam_newpos[0] = readcoord(); + cam_newpos[1] = readcoord(); + cam_newpos[2] = readcoord(); pSeat->m_vecCameraAngle[0] = readcoord(); pSeat->m_vecCameraAngle[1] = readcoord(); pSeat->m_vecCameraAngle[2] = readcoord(); pSeat->m_flCameraTime = time + readfloat(); + + /* if the same camera as last-time (hack) is still active, + then make sure it becomes inactive... */ + if (pSeat->m_vecCameraOrigin == cam_newpos) { + pSeat->m_flCameraTime = 0.0f; + } else { + pSeat->m_vecCameraOrigin = cam_newpos; + } break; case EV_ANGLE: vector a; diff --git a/src/client/gearbox/progs.src b/src/client/gearbox/progs.src index 9414e09a..148b9bc9 100644 --- a/src/client/gearbox/progs.src +++ b/src/client/gearbox/progs.src @@ -6,6 +6,7 @@ #define VALVE #define GEARBOX #define GS_RENDERFX +#define CLASSIC_VGUI #includelist ../../shared/fteextensions.qc diff --git a/src/gs-entbase/server.src b/src/gs-entbase/server.src index 0c59682e..5da8b543 100644 --- a/src/gs-entbase/server.src +++ b/src/gs-entbase/server.src @@ -65,7 +65,7 @@ server/trigger_relay.cpp server/env_shooter.cpp server/gibshooter.cpp server/env_beverage.cpp -server/env_global.cpp +//server/env_global.cpp server/env_laser.cpp server/item_food.cpp server/speaker.cpp diff --git a/src/gs-entbase/server/basemonster.cpp b/src/gs-entbase/server/basemonster.cpp index e59fcf6a..c6e351ba 100644 --- a/src/gs-entbase/server/basemonster.cpp +++ b/src/gs-entbase/server/basemonster.cpp @@ -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(TRIG_TOGGLE); + trigger.Trigger(this, TRIG_TOGGLE); } else { dprint(sprintf("^1CBaseMonster::^3FreeState^7: %s not a valid trigger\n", m_strRouteEnded)); } diff --git a/src/gs-entbase/server/basetrigger.cpp b/src/gs-entbase/server/basetrigger.cpp index cc272ed5..22b8afde 100644 --- a/src/gs-entbase/server/basetrigger.cpp +++ b/src/gs-entbase/server/basetrigger.cpp @@ -40,9 +40,9 @@ class CBaseTrigger:CBaseEntity void(void) CBaseTrigger; - virtual void(int) Trigger; - virtual void(int) UseTargets; - virtual void(int, float) UseTargets_Delay; + virtual void(entity, int) Trigger; + virtual void(entity, int) UseTargets; + virtual void(entity, int, float) UseTargets_Delay; virtual int(void) GetValue; virtual int(void) GetMaster; virtual void(void) InitBrushTrigger; @@ -50,14 +50,14 @@ class CBaseTrigger:CBaseEntity }; void -CBaseTrigger::UseTargets(int state) +CBaseTrigger::UseTargets(entity act, int state) { 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, f.classname, trigger.m_strTargetName)); + dprint(sprintf("^2%s::^3UseTargets^7: Triggering %s `%s` from %s\n", + this.classname, f.classname, trigger.m_strTargetName, act.classname)); if (trigger.Trigger != __NULL__) { - trigger.Trigger(state); + trigger.Trigger(act, state); } } @@ -66,8 +66,8 @@ CBaseTrigger::UseTargets(int state) print(m_strMessage); print("\n"); } else { - if (m_strMessage && eActivator.flags & FL_CLIENT) { - centerprint(eActivator, m_strMessage); + if (m_strMessage && act.flags & FL_CLIENT) { + centerprint(act, m_strMessage); } }*/ @@ -80,11 +80,10 @@ CBaseTrigger::UseTargets(int state) } void -CBaseTrigger::UseTargets_Delay(int state, float fDelay) +CBaseTrigger::UseTargets_Delay(entity act, int state, float fDelay) { static void Entities_UseTargets_Delay_Think(void) { - eActivator = self.owner; - CBaseTrigger::UseTargets(self.health); /* ugly */ + CBaseTrigger::UseTargets(self.owner, self.health); /* ugly */ remove(self); } @@ -92,7 +91,7 @@ CBaseTrigger::UseTargets_Delay(int state, float fDelay) this.classname, m_strTarget)); CBaseTrigger eTimer = spawn(CBaseTrigger); - eTimer.owner = eActivator; + eTimer.owner = act; eTimer.think = Entities_UseTargets_Delay_Think; eTimer.m_strTarget = m_strTarget; eTimer.nextthink = time + fDelay; @@ -137,7 +136,7 @@ CBaseTrigger::GetMaster(void) } void -CBaseTrigger::Trigger(int state) +CBaseTrigger::Trigger(entity act, int state) { } diff --git a/src/gs-entbase/server/button_target.cpp b/src/gs-entbase/server/button_target.cpp index 0c53a071..c36d7666 100644 --- a/src/gs-entbase/server/button_target.cpp +++ b/src/gs-entbase/server/button_target.cpp @@ -38,7 +38,7 @@ class button_target:CBaseTrigger void(void) button_target; virtual void(void) Respawn; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(int) Damage; }; @@ -47,7 +47,7 @@ button_target::Respawn(void) { /* yuck */ static void PUseWrapper(void) { - Trigger(TRIG_TOGGLE); + Trigger(eActivator, TRIG_TOGGLE); } SetMovetype(MOVETYPE_PUSH); @@ -69,20 +69,20 @@ button_target::Respawn(void) } void -button_target::Trigger(int status) +button_target::Trigger(entity act, int status) { /* make unusable */ PlayerUse = __NULL__; takedamage = DAMAGE_NO; frame = 1 - frame; - UseTargets(status); + UseTargets(act, status); } void button_target::Damage(int hit) { - Trigger(TRIG_TOGGLE); /* TODO: Set state? */ + Trigger(g_dmg_eAttacker, TRIG_TOGGLE); /* TODO: Set state? */ } void diff --git a/src/gs-entbase/server/env_beverage.cpp b/src/gs-entbase/server/env_beverage.cpp index e155d752..983dedd9 100644 --- a/src/gs-entbase/server/env_beverage.cpp +++ b/src/gs-entbase/server/env_beverage.cpp @@ -46,11 +46,11 @@ class env_beverage:CBaseTrigger int m_iReady; int m_iSkin; void(void) env_beverage; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; }; void -env_beverage::Trigger(int unused) +env_beverage::Trigger(entity act, int unused) { if (m_iReady == FALSE || m_iUses <= 0) { return; diff --git a/src/gs-entbase/server/env_explosion.cpp b/src/gs-entbase/server/env_explosion.cpp index 1f46c5cb..19c312eb 100644 --- a/src/gs-entbase/server/env_explosion.cpp +++ b/src/gs-entbase/server/env_explosion.cpp @@ -39,7 +39,7 @@ class env_explosion:CBaseTrigger float m_flMaxDelay; void(void) env_explosion; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; }; void env_explosion::env_explosion(void) @@ -56,7 +56,7 @@ void env_explosion::env_explosion(void) CBaseTrigger::CBaseTrigger(); } -void env_explosion::Trigger(int state) +void env_explosion::Trigger(entity act, int state) { FX_Explosion(origin); diff --git a/src/gs-entbase/server/env_fade.cpp b/src/gs-entbase/server/env_fade.cpp index 2cca6156..a75b1dea 100644 --- a/src/gs-entbase/server/env_fade.cpp +++ b/src/gs-entbase/server/env_fade.cpp @@ -40,10 +40,10 @@ class env_fade:CBaseTrigger float m_flFadeHold; void(void) env_fade; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; }; -void env_fade::Trigger(int state) +void env_fade::Trigger(entity act, int state) { WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET); WriteByte(MSG_MULTICAST, EV_FADE); @@ -54,7 +54,7 @@ void env_fade::Trigger(int state) WriteFloat(MSG_MULTICAST, m_flFadeDuration); WriteFloat(MSG_MULTICAST, m_flFadeHold); WriteByte(MSG_MULTICAST, spawnflags); - msg_entity = eActivator; + msg_entity = act; if (spawnflags & EVF_ONLYUSER) { multicast([0,0,0], MULTICAST_ONE_R); diff --git a/src/gs-entbase/server/env_laser.cpp b/src/gs-entbase/server/env_laser.cpp index 5c60cc33..e1162fb4 100644 --- a/src/gs-entbase/server/env_laser.cpp +++ b/src/gs-entbase/server/env_laser.cpp @@ -54,7 +54,7 @@ class env_laser:CBaseTrigger void(void) env_laser; virtual void(void) think; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) Respawn; virtual void(void) ParentUpdate; virtual float(entity, float) SendEntity; @@ -85,7 +85,7 @@ void env_laser::think(void) } } -void env_laser::Trigger(int state) +void env_laser::Trigger(entity act, int state) { switch (state) { case TRIG_OFF: diff --git a/src/gs-entbase/server/env_message.cpp b/src/gs-entbase/server/env_message.cpp index 2435400d..ad7b8c4a 100644 --- a/src/gs-entbase/server/env_message.cpp +++ b/src/gs-entbase/server/env_message.cpp @@ -41,11 +41,11 @@ class env_message:CBaseTrigger void(void) env_message; - virtual void(int) Play; + virtual void(entity, int) Play; virtual void(void) Respawn; }; -void env_message::Play(int state) +void env_message::Play(entity act, int state) { WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET); WriteByte(MSG_MULTICAST, EV_MESSAGE); @@ -58,7 +58,7 @@ void env_message::Play(int state) msg_entity = this; multicast(origin, MULTICAST_ALL); } else { - msg_entity = eActivator; + msg_entity = act; multicast(origin, MULTICAST_ONE_R); } diff --git a/src/gs-entbase/server/env_render.cpp b/src/gs-entbase/server/env_render.cpp index cb93a28f..b787302f 100644 --- a/src/gs-entbase/server/env_render.cpp +++ b/src/gs-entbase/server/env_render.cpp @@ -36,11 +36,11 @@ enumflags class env_render:CBaseTrigger { void(void) env_render; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; }; void -env_render::Trigger(int state) +env_render::Trigger(entity act, int state) { for (entity e = world; (e = find(e, CBaseEntity::m_strTargetName, m_strTarget));) { diff --git a/src/gs-entbase/server/env_shake.cpp b/src/gs-entbase/server/env_shake.cpp index d7b201ab..2a5c55f1 100644 --- a/src/gs-entbase/server/env_shake.cpp +++ b/src/gs-entbase/server/env_shake.cpp @@ -37,10 +37,10 @@ class env_shake:CBaseTrigger float m_flFrequency; void(void) env_shake; - virtual void(int) Trigger; + virtual void(entity act, int) Trigger; }; -void env_shake::Trigger(int state) +void env_shake::Trigger(entity act, int state) { for (entity e = world; (e = find(e, ::classname, "player"));) { WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET); @@ -54,7 +54,7 @@ void env_shake::Trigger(int state) } } -void env_shake::env_shake (void) +void env_shake::env_shake(void) { for (int i = 1; i < (tokenize(__fullspawndata) - 1); i += 2) { switch (argv(i)) { diff --git a/src/gs-entbase/server/env_shooter.cpp b/src/gs-entbase/server/env_shooter.cpp index 9ddd50da..820c4b39 100644 --- a/src/gs-entbase/server/env_shooter.cpp +++ b/src/gs-entbase/server/env_shooter.cpp @@ -48,7 +48,7 @@ class env_shooter:CBaseTrigger void(void) env_shooter; virtual void(void) Respawn; virtual void(void) ShootGib; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; }; void @@ -79,7 +79,7 @@ env_shooter::ShootGib(void) } void -env_shooter::Trigger(int state) +env_shooter::Trigger(entity act, int state) { switch (state) { case TRIG_OFF: @@ -92,9 +92,9 @@ env_shooter::Trigger(int state) break; default: if (think == __NULL__) - Trigger(TRIG_ON); + Trigger(act, TRIG_ON); else - Trigger(TRIG_OFF); + Trigger(act, TRIG_OFF); } } diff --git a/src/gs-entbase/server/env_spark.cpp b/src/gs-entbase/server/env_spark.cpp index 0e8dd396..1c433c1d 100644 --- a/src/gs-entbase/server/env_spark.cpp +++ b/src/gs-entbase/server/env_spark.cpp @@ -51,7 +51,7 @@ class env_spark:CBaseTrigger void(void) env_spark; virtual void(void) CreateSpark; virtual void(void) TimedSpark; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) Respawn; }; @@ -69,7 +69,7 @@ void env_spark::TimedSpark(void) } /* TODO: Implement state */ -void env_spark::Trigger(int state) +void env_spark::Trigger(entity act, int state) { if (spawnflags & EVSPARK_TOGGLE) { if (think != __NULL__) { diff --git a/src/gs-entbase/server/env_sprite.cpp b/src/gs-entbase/server/env_sprite.cpp index fde6e140..16605dac 100644 --- a/src/gs-entbase/server/env_sprite.cpp +++ b/src/gs-entbase/server/env_sprite.cpp @@ -44,7 +44,7 @@ class env_sprite:CBaseTrigger float m_flEffects; void(void) env_sprite; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual float(entity, float) Network; }; @@ -92,7 +92,7 @@ void env_sprite::NetworkOnce(void) } /* TODO: Implement state */ -void env_sprite::Trigger(int state) +void env_sprite::Trigger(entity act, int state) { if (spawnflags & ENVS_PLAYONCE) { NetworkOnce(); diff --git a/src/gs-entbase/server/func_breakable.cpp b/src/gs-entbase/server/func_breakable.cpp index 05882e1d..e625cd05 100755 --- a/src/gs-entbase/server/func_breakable.cpp +++ b/src/gs-entbase/server/func_breakable.cpp @@ -115,7 +115,7 @@ class func_breakable:CBaseTrigger void(void) func_breakable; virtual void(void) Respawn; virtual void(void) Explode; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) PlayerTouch; /*virtual void(void) PressureDeath;*/ virtual void(int) Pain; @@ -167,7 +167,7 @@ func_breakable::Explode(void) 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(TRIG_TOGGLE); + CBaseTrigger::UseTargets(this, TRIG_TOGGLE); CBaseEntity::Hide(); } @@ -218,13 +218,14 @@ 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(TRIG_TOGGLE); + /* TODO: ability to have whoever destroyed the crate be the activator */ + CBaseTrigger::UseTargets(this, TRIG_TOGGLE); CBaseEntity::Hide(); } } void -func_breakable::Trigger(int state) +func_breakable::Trigger(entity act, int state) { if (health > 0) func_breakable::Death(0); @@ -240,7 +241,8 @@ void func_breakable::PlayerTouch(void) { static void TriggerWrap(void) { - Trigger(TRIG_TOGGLE); + /* TODO: 'this' should be the person who touched the ent instead */ + Trigger(this, TRIG_TOGGLE); } if (other.classname == classname) { diff --git a/src/gs-entbase/server/func_button.cpp b/src/gs-entbase/server/func_button.cpp index 104a4c4d..88fe8690 100644 --- a/src/gs-entbase/server/func_button.cpp +++ b/src/gs-entbase/server/func_button.cpp @@ -133,7 +133,7 @@ class func_button:CBaseTrigger virtual void(void) MoveAway; virtual void(void) Touch; virtual void(void) Blocked; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) Use; virtual void(int) Pain; virtual void(int) Death; @@ -235,7 +235,7 @@ void func_button::MoveAway(void) } /* TODO: Handle state */ -void func_button::Trigger(int state) +void func_button::Trigger(entity act, int state) { if (m_flNextTrigger > time) { return; @@ -260,17 +260,16 @@ void func_button::Trigger(int state) MoveAway(); if (m_flDelay) { - UseTargets_Delay(TRIG_TOGGLE, m_flDelay); + UseTargets_Delay(act, TRIG_TOGGLE, m_flDelay); } else { - UseTargets(TRIG_TOGGLE); + UseTargets(act, TRIG_TOGGLE); } } void func_button::Touch(void) { if (other.movetype == MOVETYPE_WALK) { - eActivator = other; - Trigger(TRIG_TOGGLE); + Trigger(other, TRIG_TOGGLE); if (!(spawnflags & SF_BTT_TOUCH_ONLY)) { touch = __NULL__; @@ -280,7 +279,7 @@ void func_button::Touch(void) void func_button::Use(void) { - Trigger(TRIG_TOGGLE); + Trigger(eActivator, TRIG_TOGGLE); } void func_button::Pain (int body) @@ -290,7 +289,7 @@ void func_button::Pain (int body) void func_button::Death (int body) { - Trigger(TRIG_TOGGLE); + Trigger(g_dmg_eAttacker, TRIG_TOGGLE); health = m_oldHealth; } diff --git a/src/gs-entbase/server/func_conveyor.cpp b/src/gs-entbase/server/func_conveyor.cpp index 78975cef..95174039 100644 --- a/src/gs-entbase/server/func_conveyor.cpp +++ b/src/gs-entbase/server/func_conveyor.cpp @@ -33,7 +33,7 @@ class func_conveyor:CBaseTrigger void(void) func_conveyor; virtual void(void) Respawn; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) touch; virtual void(void) SetMovementDirection; }; @@ -59,7 +59,7 @@ func_conveyor::touch(void) /* TODO: Handle state? */ void -func_conveyor::Trigger(int state) +func_conveyor::Trigger(entity act, int state) { /* changes direction */ m_flSpeed = -m_flSpeed; diff --git a/src/gs-entbase/server/func_door.cpp b/src/gs-entbase/server/func_door.cpp index 7ef0779c..d44ae91b 100644 --- a/src/gs-entbase/server/func_door.cpp +++ b/src/gs-entbase/server/func_door.cpp @@ -98,7 +98,7 @@ class func_door:CBaseTrigger virtual void(void) Arrived; virtual void(void) Returned; virtual void(void) Respawn; - virtual void(int) Trigger; + virtual void(entity, 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(TRIG_TOGGLE); + Trigger(eActivator, TRIG_TOGGLE); } void @@ -154,7 +154,7 @@ func_door::Returned(void) t = (CBaseTrigger)find(world, CBaseTrigger::m_strTargetName, m_strFire); if (t) { - t.Trigger(TRIG_TOGGLE); + t.Trigger(this, TRIG_TOGGLE); } } @@ -205,7 +205,7 @@ func_door::MoveAway(void) } void -func_door::Trigger(int state) +func_door::Trigger(entity act, int state) { if (GetMaster() == 0) return; @@ -220,9 +220,9 @@ func_door::Trigger(int state) /* only trigger stuff once we are done moving */ if ((m_iState == DOORSTATE_RAISED) || (m_iState == DOORSTATE_LOWERED)) { if (m_flDelay > 0) { - CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay); + CBaseTrigger::UseTargets_Delay(act, TRIG_TOGGLE, m_flDelay); } else { - CBaseTrigger::UseTargets(TRIG_TOGGLE); + CBaseTrigger::UseTargets(act, TRIG_TOGGLE); } } @@ -252,8 +252,7 @@ func_door::Touch(void) if (other.movetype == MOVETYPE_WALK) { if (other.absmin[2] <= maxs[2] - 2) { - eActivator = other; - Trigger(TRIG_TOGGLE); + Trigger(other, TRIG_TOGGLE); } } } @@ -267,9 +266,9 @@ func_door::Blocked(void) if (m_flWait >= 0) { if (m_iState == DOORSTATE_DOWN) { - MoveAway (); + MoveAway(); } else { - MoveBack (); + MoveBack(); } } } diff --git a/src/gs-entbase/server/func_door_rotating.cpp b/src/gs-entbase/server/func_door_rotating.cpp index a8af0e97..81d932b5 100644 --- a/src/gs-entbase/server/func_door_rotating.cpp +++ b/src/gs-entbase/server/func_door_rotating.cpp @@ -64,7 +64,7 @@ class func_door_rotating:CBaseTrigger virtual void(void) Returned; virtual void(void) Back; virtual void(void) Away; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) Use; virtual void(void) Touch; virtual void(void) Blocked; @@ -196,15 +196,15 @@ void func_door_rotating::Away(void) RotToDest(m_vecPos2 * fDirection, Arrived); } -void func_door_rotating::Trigger(int state) +void func_door_rotating::Trigger(entity act, int state) { if (GetMaster() == FALSE) { return; } - if (m_flNextAction > time) { return; } + m_flNextAction = time + m_flWait; if (state == TRIG_TOGGLE) { @@ -222,16 +222,16 @@ void func_door_rotating::Trigger(int state) if (m_flDelay) { - CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay); + CBaseTrigger::UseTargets_Delay(act, TRIG_TOGGLE, m_flDelay); } else { - CBaseTrigger::UseTargets(TRIG_TOGGLE); + CBaseTrigger::UseTargets(act, TRIG_TOGGLE); } } void func_door_rotating::Use(void) { eActivator.gflags &= ~GF_USE_RELEASED; - Trigger(TRIG_TOGGLE); + Trigger(eActivator, TRIG_TOGGLE); } void func_door_rotating::Touch(void) @@ -239,14 +239,12 @@ void func_door_rotating::Touch(void) if (spawnflags & SF_ROT_USE) { return; } - if (m_iLocked) { return; } if (other.movetype == MOVETYPE_WALK) { - eActivator = other; - Trigger(TRIG_TOGGLE); + Trigger(other, TRIG_TOGGLE); } touch = __NULL__; } diff --git a/src/gs-entbase/server/func_guntarget.cpp b/src/gs-entbase/server/func_guntarget.cpp index 0e80f438..e82dc937 100644 --- a/src/gs-entbase/server/func_guntarget.cpp +++ b/src/gs-entbase/server/func_guntarget.cpp @@ -37,7 +37,7 @@ class func_guntarget:CBaseTrigger virtual void(void) NextPath; virtual void(void) Move; virtual void(void) Stop; - virtual void(int) Trigger; + virtual void(entity act, int) Trigger; virtual void(int) Death; }; @@ -104,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(TRIG_TOGGLE); + trigger.Trigger(g_dmg_eAttacker, TRIG_TOGGLE); } } @@ -117,7 +117,7 @@ void func_guntarget::Stop(void) } /* TODO: Handle state? */ -void func_guntarget::Trigger(int state) +void func_guntarget::Trigger(entity act, int state) { flags = (1 << FL_FROZEN) | flags; @@ -135,7 +135,7 @@ void func_guntarget::Trigger(int state) void func_guntarget::Respawn(void) { static void ThinkWrap(void) { - Trigger(TRIG_TOGGLE); + Trigger(this, TRIG_TOGGLE); } SetSolid(SOLID_BSP); diff --git a/src/gs-entbase/server/func_pendulum.cpp b/src/gs-entbase/server/func_pendulum.cpp index 4c87bc5c..8c8bf689 100644 --- a/src/gs-entbase/server/func_pendulum.cpp +++ b/src/gs-entbase/server/func_pendulum.cpp @@ -45,7 +45,7 @@ class func_pendulum:CBaseTrigger virtual void(void) customphysics; virtual void(void) Respawn; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; }; void @@ -67,7 +67,7 @@ func_pendulum::customphysics(void) } void -func_pendulum::Trigger(int state) +func_pendulum::Trigger(entity act, int state) { switch (state) { case TRIG_OFF: diff --git a/src/gs-entbase/server/func_rotating.cpp b/src/gs-entbase/server/func_rotating.cpp index 20790778..6f141104 100644 --- a/src/gs-entbase/server/func_rotating.cpp +++ b/src/gs-entbase/server/func_rotating.cpp @@ -52,7 +52,7 @@ class func_rotating:CBaseTrigger void(void) func_rotating; virtual void(void) Respawn; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) Rotate; virtual void(void) Blocked; virtual void(void) SetMovementDirection; @@ -66,7 +66,7 @@ func_rotating::Rotate(void) /* TODO: Handle state */ void -func_rotating::Trigger(int state) +func_rotating::Trigger(entity act, int state) { if (vlen(avelocity)) { avelocity = [0,0,0]; diff --git a/src/gs-entbase/server/func_tracktrain.cpp b/src/gs-entbase/server/func_tracktrain.cpp index ebae14de..5e0b4974 100644 --- a/src/gs-entbase/server/func_tracktrain.cpp +++ b/src/gs-entbase/server/func_tracktrain.cpp @@ -31,7 +31,7 @@ class func_tracktrain:CBaseTrigger virtual void(void) Find; virtual void(void) NextPath; virtual void(void) GoToTarget; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) Respawn; }; @@ -72,7 +72,7 @@ void func_tracktrain::NextPath(void) GoToTarget(); } -void func_tracktrain::Trigger(int state) +void func_tracktrain::Trigger(entity act, int state) { GoToTarget(); } diff --git a/src/gs-entbase/server/func_train.cpp b/src/gs-entbase/server/func_train.cpp index afffbac0..7647ff11 100644 --- a/src/gs-entbase/server/func_train.cpp +++ b/src/gs-entbase/server/func_train.cpp @@ -83,7 +83,7 @@ class func_train:CBaseTrigger void(void) func_train; virtual void(void) NextPath; virtual void(void) GoToTarget; - virtual void(int) Trigger; + virtual void(entity, 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(TRIG_TOGGLE); + eNode.Trigger(this, TRIG_TOGGLE); } /* stuff for the ears */ @@ -195,7 +195,7 @@ func_train::NextPath(void) /* TODO: Handle state? */ void -func_train::Trigger(int state) +func_train::Trigger(entity act, int state) { GoToTarget(); } diff --git a/src/gs-entbase/server/func_wall.cpp b/src/gs-entbase/server/func_wall.cpp index c19afcd1..806953f2 100644 --- a/src/gs-entbase/server/func_wall.cpp +++ b/src/gs-entbase/server/func_wall.cpp @@ -24,11 +24,11 @@ On idTech 2 BSPs, it will change texture variants when triggered. class func_wall:CBaseTrigger { void(void) func_wall; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; }; void -func_wall::Trigger(int state) +func_wall::Trigger(entity act, int state) { switch (state) { case TRIG_OFF: diff --git a/src/gs-entbase/server/func_wall_toggle.cpp b/src/gs-entbase/server/func_wall_toggle.cpp index 5ab7e85a..e8878391 100644 --- a/src/gs-entbase/server/func_wall_toggle.cpp +++ b/src/gs-entbase/server/func_wall_toggle.cpp @@ -34,11 +34,11 @@ class func_wall_toggle:CBaseTrigger void(void) func_wall_toggle; virtual void(void) Respawn; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; }; void -func_wall_toggle::Trigger(int state) +func_wall_toggle::Trigger(entity act, int state) { switch (state) { case TRIG_OFF: @@ -71,7 +71,7 @@ func_wall_toggle::Respawn(void) m_oldmodelindex = modelindex; if (spawnflags & FTW_STARTHIDDEN) { - Trigger(TRIG_OFF); + Trigger(this, TRIG_OFF); } } diff --git a/src/gs-entbase/server/game_text.cpp b/src/gs-entbase/server/game_text.cpp index 8e41a690..9077e19d 100644 --- a/src/gs-entbase/server/game_text.cpp +++ b/src/gs-entbase/server/game_text.cpp @@ -61,10 +61,10 @@ class game_text:CBaseTrigger void(void) game_text; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; }; -void game_text::Trigger(int state) +void game_text::Trigger(entity act, int state) { WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET); WriteByte(MSG_MULTICAST, EV_TEXT); @@ -88,7 +88,7 @@ void game_text::Trigger(int state) msg_entity = this; multicast(origin, MULTICAST_ALL); } else { - msg_entity = eActivator; + msg_entity = act; multicast(origin, MULTICAST_ONE_R); } } diff --git a/src/gs-entbase/server/infodecal.cpp b/src/gs-entbase/server/infodecal.cpp index 9a0d7548..c7223feb 100644 --- a/src/gs-entbase/server/infodecal.cpp +++ b/src/gs-entbase/server/infodecal.cpp @@ -35,13 +35,13 @@ class infodecal:CBaseTrigger string m_strTexture; void(void) infodecal; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) Respawn; }; /* TODO: Handle state? */ void -infodecal::Trigger(int state) +infodecal::Trigger(entity act, int state) { decal new = spawn(decal); new.Place(origin, m_strTexture); @@ -54,7 +54,7 @@ infodecal::Respawn(void) /* this will be invisible by default */ if (!m_strTargetName) { /* spawn automatically, remove self */ - Trigger(TRIG_TOGGLE); + Trigger(this, TRIG_TOGGLE); } } diff --git a/src/gs-entbase/server/light.cpp b/src/gs-entbase/server/light.cpp index 29f26185..34ebbacc 100644 --- a/src/gs-entbase/server/light.cpp +++ b/src/gs-entbase/server/light.cpp @@ -60,11 +60,11 @@ class light:CBaseTrigger string m_strPattern; void(void) light; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) Respawn; }; -void light::Trigger(int state) +void light::Trigger(entity act, int state) { switch (state) { case TRIG_OFF: diff --git a/src/gs-entbase/server/monstermaker.cpp b/src/gs-entbase/server/monstermaker.cpp index e53ce76c..6f11149b 100644 --- a/src/gs-entbase/server/monstermaker.cpp +++ b/src/gs-entbase/server/monstermaker.cpp @@ -49,31 +49,23 @@ class monstermaker:CBaseTrigger int m_iTotalMonsters; float m_flDelay; int m_iMaxChildren; - int m_iEnabled; string m_strChildName; void(void) monstermaker; virtual void(void) Spawner; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) Respawn; virtual void(void) TurnOn; virtual void(void) TurnOff; - virtual int(void) GetValue; }; -int -monstermaker::GetValue(void) -{ - return m_iEnabled; -} - void monstermaker::TurnOff(void) { think = __NULL__; nextthink = 0; - m_iEnabled = 0; + m_iValue = 0; } void @@ -81,7 +73,7 @@ monstermaker::TurnOn(void) { think = Spawner; nextthink = time + m_flDelay; - m_iEnabled = 1; + m_iValue = 1; } void @@ -142,7 +134,7 @@ monstermaker::Spawner(void) m_iMonsterSpawned++; if (m_strTarget) { - UseTargets(TRIG_TOGGLE); + UseTargets(this, TRIG_TOGGLE); } /* inherit the monsterclip flag */ @@ -170,7 +162,7 @@ monstermaker::Spawner(void) } void -monstermaker::Trigger(int state) +monstermaker::Trigger(entity act, int state) { switch (state) { case TRIG_OFF: @@ -180,7 +172,7 @@ monstermaker::Trigger(int state) TurnOn(); break; default: - if (m_iEnabled) + if (m_iValue) TurnOff(); else TurnOn(); diff --git a/src/gs-entbase/server/multi_manager.cpp b/src/gs-entbase/server/multi_manager.cpp index 2f9c8b7c..03835589 100644 --- a/src/gs-entbase/server/multi_manager.cpp +++ b/src/gs-entbase/server/multi_manager.cpp @@ -29,16 +29,10 @@ again before it has finished triggering it's previous list of entities. class multi_manager_sub:CBaseTrigger { + entity m_eActivator; int m_iValue; - virtual int(void) GetValue; }; -int -multi_manager_sub::GetValue(void) -{ - return m_iValue; -} - class multi_manager:CBaseTrigger { multi_manager_sub m_eTriggers[16]; @@ -46,18 +40,12 @@ class multi_manager:CBaseTrigger int m_iBusy; int m_iValue; - virtual void(int) Trigger; - virtual int(void) GetValue; + virtual void(entity, int) Trigger; }; -int -multi_manager::GetValue(void) -{ - return m_iValue; -} void -multi_manager::Trigger(int state) +multi_manager::Trigger(entity act, int state) { static void mm_enttrigger (void) { multi_manager_sub wow = (multi_manager_sub)self; @@ -67,7 +55,7 @@ multi_manager::Trigger(int state) dprint(sprintf("^2%s::^3Trigger^7: %s (%s)\n", this.classname, wow.m_strTarget, eFind.classname)); - CBaseTrigger::UseTargets(TRIG_TOGGLE); + CBaseTrigger::UseTargets(wow.m_eActivator, TRIG_TOGGLE); } m_iValue = TRUE; @@ -95,6 +83,7 @@ multi_manager::Trigger(int state) m_eTriggers[b].think = mm_enttrigger; m_eTriggers[b].nextthink = time + stof(argv(i+1)); m_eTriggers[b].m_iValue = TRUE; + m_eTriggers[b].m_eActivator = act; b++; } } diff --git a/src/gs-entbase/server/multisource.cpp b/src/gs-entbase/server/multisource.cpp index 7c96460e..04f2fadb 100644 --- a/src/gs-entbase/server/multisource.cpp +++ b/src/gs-entbase/server/multisource.cpp @@ -28,7 +28,7 @@ class multisource:CBaseTrigger virtual void(void) Respawn; virtual int(void) QueryTargets; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; }; int @@ -63,7 +63,7 @@ multisource::QueryTargets(void) } void -multisource::Trigger(int unused) +multisource::Trigger(entity act, int unused) { if (QueryTargets() == FALSE) { dprint(sprintf("[^1MULTISOURCE^7] %s is inactive.\n", m_strTargetName)); @@ -73,7 +73,7 @@ multisource::Trigger(int unused) dprint(sprintf("[^1MULTISOURCE^7] %s is now active.\n", m_strTargetName)); m_iValue = TRUE; - CBaseTrigger::UseTargets(TRIG_TOGGLE); + CBaseTrigger::UseTargets(act, TRIG_TOGGLE); } void diff --git a/src/gs-entbase/server/path_corner.cpp b/src/gs-entbase/server/path_corner.cpp index 21841dd5..64abeba2 100644 --- a/src/gs-entbase/server/path_corner.cpp +++ b/src/gs-entbase/server/path_corner.cpp @@ -53,12 +53,12 @@ class path_corner:CBaseTrigger float m_flWait; void(void) path_corner; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) Respawn; }; void -path_corner::Trigger(int state) +path_corner::Trigger(entity act, int state) { entity a; @@ -68,7 +68,7 @@ path_corner::Trigger(int state) for (a = world; (a = find(a, CBaseTrigger::m_strTargetName, m_strMessage));) { CBaseTrigger trigger = (CBaseTrigger)a; - trigger.Trigger(state); + trigger.Trigger(act, state); m_iFired = TRUE; } } diff --git a/src/gs-entbase/server/player_loadsaved.cpp b/src/gs-entbase/server/player_loadsaved.cpp index 0df8cb1b..58a466f4 100644 --- a/src/gs-entbase/server/player_loadsaved.cpp +++ b/src/gs-entbase/server/player_loadsaved.cpp @@ -36,7 +36,7 @@ class player_loadsaved:CBaseTrigger float m_flFadeHold; void(void) player_loadsaved; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) ReloadSave; }; @@ -47,7 +47,7 @@ player_loadsaved::ReloadSave(void) } void -player_loadsaved::Trigger(int unused) +player_loadsaved::Trigger(entity act, int unused) { WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET); WriteByte(MSG_MULTICAST, EV_FADE); @@ -60,7 +60,7 @@ player_loadsaved::Trigger(int unused) WriteByte(MSG_MULTICAST, 0); msg_entity = world; multicast([0,0,0], MULTICAST_ALL); - env_message_single(eActivator, m_strMessage); + env_message_single(act, m_strMessage); think = ReloadSave; nextthink = time + m_flLoadTime; diff --git a/src/gs-entbase/server/player_weaponstrip.cpp b/src/gs-entbase/server/player_weaponstrip.cpp index ead16e43..7be806f0 100644 --- a/src/gs-entbase/server/player_weaponstrip.cpp +++ b/src/gs-entbase/server/player_weaponstrip.cpp @@ -23,19 +23,19 @@ Strips the activator of all of its weapons. class player_weaponstrip:CBaseTrigger { void(void) player_weaponstrip; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; }; void -player_weaponstrip::Trigger(int unused) +player_weaponstrip::Trigger(entity act, int unused) { base_player pl; - if (!(eActivator.flags & FL_CLIENT)) { + if (!(act.flags & FL_CLIENT)) { return; } - pl = (base_player)eActivator; + pl = (base_player)act; for (int i = 1; i < Weapon_GetCount(); i++) { pl.g_items &= ~Weapon_GetBitID(i); diff --git a/src/gs-entbase/server/scripted_sentence.cpp b/src/gs-entbase/server/scripted_sentence.cpp index d5084e1b..055ae092 100644 --- a/src/gs-entbase/server/scripted_sentence.cpp +++ b/src/gs-entbase/server/scripted_sentence.cpp @@ -38,11 +38,11 @@ class scripted_sentence:CBaseTrigger float m_flDuration; void(void) scripted_sentence; - virtual void(int state) Trigger; + virtual void(entity, int) Trigger; }; void -scripted_sentence::Trigger(int unused) +scripted_sentence::Trigger(entity act, int unused) { entity speaker = find(world, CBaseEntity::m_strTargetName, m_strSpeaker); diff --git a/src/gs-entbase/server/scripted_sequence.cpp b/src/gs-entbase/server/scripted_sequence.cpp index 6434afde..36faa79f 100644 --- a/src/gs-entbase/server/scripted_sequence.cpp +++ b/src/gs-entbase/server/scripted_sequence.cpp @@ -92,13 +92,13 @@ class scripted_sequence:CBaseTrigger int m_iMove; void(void) scripted_sequence; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) InitIdle; virtual void(void) Respawn; }; void -scripted_sequence::Trigger(int unused) +scripted_sequence::Trigger(entity act, int unused) { CBaseMonster f; float duration; diff --git a/src/gs-entbase/server/trigger_auto.cpp b/src/gs-entbase/server/trigger_auto.cpp index 2a4b9e80..9d8138ce 100644 --- a/src/gs-entbase/server/trigger_auto.cpp +++ b/src/gs-entbase/server/trigger_auto.cpp @@ -41,7 +41,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_iTriggerState, m_flDelay); + CBaseTrigger::UseTargets_Delay(this, m_iTriggerState, m_flDelay); if (spawnflags & 1) { dprint(sprintf("^2trigger_auto::^3think^7: %s triggerer removed self\n", m_strTarget)); diff --git a/src/gs-entbase/server/trigger_autosave.cpp b/src/gs-entbase/server/trigger_autosave.cpp index feaaf5d7..78c475be 100644 --- a/src/gs-entbase/server/trigger_autosave.cpp +++ b/src/gs-entbase/server/trigger_autosave.cpp @@ -33,8 +33,6 @@ class trigger_autosave:CBaseTrigger void trigger_autosave::touch(void) { - eActivator = other; - /* saved text */ WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET); WriteByte(MSG_MULTICAST, EV_MESSAGE); @@ -48,13 +46,13 @@ trigger_autosave::touch(void) dprint(sprintf("^2trigger_autosave::^3touch^7: %s called autosave\n", other.netname)); - //localcmd("save autosave\n"); + //readcmd("save autosave\n"); Hide(); if (m_flDelay > 0) { - CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay); + CBaseTrigger::UseTargets_Delay(other, TRIG_TOGGLE, m_flDelay); } else { - CBaseTrigger::UseTargets(TRIG_TOGGLE); + CBaseTrigger::UseTargets(other, TRIG_TOGGLE); } solid = SOLID_NOT; } diff --git a/src/gs-entbase/server/trigger_camera.cpp b/src/gs-entbase/server/trigger_camera.cpp index 231955ca..81ebb97b 100644 --- a/src/gs-entbase/server/trigger_camera.cpp +++ b/src/gs-entbase/server/trigger_camera.cpp @@ -30,16 +30,16 @@ class trigger_camera:CBaseTrigger float m_flWait; void(void) trigger_camera; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; }; void -trigger_camera::Trigger(int state) +trigger_camera::Trigger(entity act, int state) { if (m_flDelay > 0) { - CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay); + CBaseTrigger::UseTargets_Delay(act, TRIG_TOGGLE, m_flDelay); } else { - CBaseTrigger::UseTargets(TRIG_TOGGLE); + CBaseTrigger::UseTargets(act, TRIG_TOGGLE); } if (m_strMoveTo) { @@ -49,7 +49,7 @@ trigger_camera::Trigger(int state) } } - Client_TriggerCamera(eActivator, origin, angles, m_flWait); + Client_TriggerCamera(act, origin, angles, m_flWait); //eActivator.view2 = this; dprint(sprintf("^2trigger_camera::^3Trigger^7: Camera at %v, %v, for %f sec/s requested\n", diff --git a/src/gs-entbase/server/trigger_cdaudio.cpp b/src/gs-entbase/server/trigger_cdaudio.cpp index dd5fc158..20640e43 100644 --- a/src/gs-entbase/server/trigger_cdaudio.cpp +++ b/src/gs-entbase/server/trigger_cdaudio.cpp @@ -26,15 +26,15 @@ class trigger_cdaudio:CBaseTrigger int m_iCDTrack; void(void) trigger_cdaudio; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) Respawn; virtual void(void) touch; }; void -trigger_cdaudio::Trigger(int unused) +trigger_cdaudio::Trigger(entity act, int unused) { - if (!(other.flags & FL_CLIENT)) { + if (!(act.flags & FL_CLIENT)) { return; } @@ -53,7 +53,7 @@ trigger_cdaudio::Trigger(int unused) void trigger_cdaudio::touch(void) { - Trigger(TRIG_TOGGLE); + Trigger(other, TRIG_TOGGLE); } void diff --git a/src/gs-entbase/server/trigger_changelevel.cpp b/src/gs-entbase/server/trigger_changelevel.cpp index b89a2f74..a539f7bb 100644 --- a/src/gs-entbase/server/trigger_changelevel.cpp +++ b/src/gs-entbase/server/trigger_changelevel.cpp @@ -53,7 +53,7 @@ class trigger_changelevel:CBaseTrigger void(void) trigger_changelevel; virtual void(void) Change; - virtual void(int) Trigger; + virtual void(entity, 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(int unused) +trigger_changelevel::Trigger(entity act, int unused) { /* this means a delayed trigger is active */ if (nextthink > 0.0f) @@ -122,8 +122,7 @@ trigger_changelevel::Trigger(int unused) void trigger_changelevel::TouchTrigger(void) { - eActivator = other; - Trigger(TRIG_TOGGLE); + Trigger(other, TRIG_TOGGLE); } void diff --git a/src/gs-entbase/server/trigger_hurt.cpp b/src/gs-entbase/server/trigger_hurt.cpp index 0cc42dd1..e7536476 100644 --- a/src/gs-entbase/server/trigger_hurt.cpp +++ b/src/gs-entbase/server/trigger_hurt.cpp @@ -45,13 +45,13 @@ class trigger_hurt:CBaseTrigger float m_flDelay; void(void) trigger_hurt; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) touch; virtual void(void) Respawn; }; void -trigger_hurt::Trigger(int state) +trigger_hurt::Trigger(entity act, int state) { switch (state) { case TRIG_OFF: @@ -63,9 +63,9 @@ trigger_hurt::Trigger(int state) break; default: if (solid == SOLID_NOT) - Trigger(TRIG_ON); + Trigger(act, TRIG_ON); else - Trigger(TRIG_OFF); + Trigger(act, TRIG_OFF); } } @@ -87,17 +87,17 @@ trigger_hurt::touch(void) if (other.flags & FL_CLIENT) { eActivator = other; if (m_flDelay > 0) { - CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay); + CBaseTrigger::UseTargets_Delay(other, TRIG_TOGGLE, m_flDelay); } else { - CBaseTrigger::UseTargets(TRIG_TOGGLE); + CBaseTrigger::UseTargets(other, TRIG_TOGGLE); } } } else { eActivator = other; if (m_flDelay > 0) { - CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay); + CBaseTrigger::UseTargets_Delay(other, TRIG_TOGGLE, m_flDelay); } else { - CBaseTrigger::UseTargets(TRIG_TOGGLE); + CBaseTrigger::UseTargets(other, TRIG_TOGGLE); } } } @@ -109,7 +109,7 @@ trigger_hurt::touch(void) /* shut it down if used once */ if (spawnflags & SF_HURT_ONCE) { - Trigger(TRIG_OFF); + Trigger(other, TRIG_OFF); } m_flNextTrigger = time + m_flNextDmg; @@ -122,9 +122,9 @@ trigger_hurt::Respawn(void) m_flNextTrigger = 0.0f; if (spawnflags & SF_HURT_OFF) { - Trigger(TRIG_OFF); + Trigger(this, TRIG_OFF); } else { - Trigger(TRIG_ON); + Trigger(this, TRIG_ON); } } diff --git a/src/gs-entbase/server/trigger_look.cpp b/src/gs-entbase/server/trigger_look.cpp index 2fc2ab34..52fb80d2 100644 --- a/src/gs-entbase/server/trigger_look.cpp +++ b/src/gs-entbase/server/trigger_look.cpp @@ -89,9 +89,9 @@ trigger_look::Touch(void) /* trigger and disable entity, for now */ if (m_flDelay > 0) { - UseTargets_Delay(TRIG_TOGGLE, m_flDelay); + UseTargets_Delay(other, TRIG_TOGGLE, m_flDelay); } else { - UseTargets(TRIG_TOGGLE); + UseTargets(other, TRIG_TOGGLE); } solid = SOLID_NOT; } diff --git a/src/gs-entbase/server/trigger_multiple.cpp b/src/gs-entbase/server/trigger_multiple.cpp index 3ae654e3..b34bb24a 100644 --- a/src/gs-entbase/server/trigger_multiple.cpp +++ b/src/gs-entbase/server/trigger_multiple.cpp @@ -46,8 +46,6 @@ class trigger_multiple:CBaseTrigger void trigger_multiple::touch(void) { - eActivator = other; - if (GetMaster() == FALSE) return; @@ -62,9 +60,9 @@ trigger_multiple::touch(void) } if (m_flDelay > 0) { - UseTargets_Delay(TRIG_TOGGLE, m_flDelay); + UseTargets_Delay(other, TRIG_TOGGLE, m_flDelay); } else { - UseTargets(TRIG_TOGGLE); + UseTargets(other, TRIG_TOGGLE); } /* This is effectively a trigger_once...*/ diff --git a/src/gs-entbase/server/trigger_once.cpp b/src/gs-entbase/server/trigger_once.cpp index 2b641b54..7dbf0af9 100644 --- a/src/gs-entbase/server/trigger_once.cpp +++ b/src/gs-entbase/server/trigger_once.cpp @@ -51,14 +51,13 @@ trigger_once::touch(void) if (GetMaster() == FALSE) return; - eActivator = other; solid = SOLID_NOT; /* make inactive */ m_iValue = 1; if (m_flDelay > 0) { - CBaseTrigger::UseTargets_Delay(TRIG_TOGGLE, m_flDelay); + CBaseTrigger::UseTargets_Delay(other, TRIG_TOGGLE, m_flDelay); } else { - CBaseTrigger::UseTargets(TRIG_TOGGLE); + CBaseTrigger::UseTargets(other, TRIG_TOGGLE); } } diff --git a/src/gs-entbase/server/trigger_push.cpp b/src/gs-entbase/server/trigger_push.cpp index bdb4050c..d504ec90 100644 --- a/src/gs-entbase/server/trigger_push.cpp +++ b/src/gs-entbase/server/trigger_push.cpp @@ -40,7 +40,7 @@ class trigger_push:CBaseTrigger virtual void(void) touch; virtual void(void) Respawn; - virtual void(int state) Trigger; + virtual void(entity, int) Trigger; virtual void(void) SetMovementDirection; }; @@ -60,7 +60,7 @@ trigger_push::SetMovementDirection(void) } void -trigger_push::Trigger(int state) +trigger_push::Trigger(entity act, int state) { switch (state) { case TRIG_OFF: diff --git a/src/gs-entbase/server/trigger_relay.cpp b/src/gs-entbase/server/trigger_relay.cpp index b41aefd8..200a9da6 100644 --- a/src/gs-entbase/server/trigger_relay.cpp +++ b/src/gs-entbase/server/trigger_relay.cpp @@ -39,12 +39,12 @@ class trigger_relay:CBaseTrigger int m_iEnabled; void(void) trigger_relay; - virtual void(int) Trigger; + virtual void(entity, int) Trigger; virtual void(void) Respawn; }; void -trigger_relay::Trigger(int state) +trigger_relay::Trigger(entity act, int state) { if (m_iEnabled == FALSE) return; @@ -52,9 +52,9 @@ trigger_relay::Trigger(int state) m_iEnabled = FALSE; if (m_flDelay > 0) { - CBaseTrigger::UseTargets_Delay(m_iTriggerState, m_flDelay); + CBaseTrigger::UseTargets_Delay(act, m_iTriggerState, m_flDelay); } else { - CBaseTrigger::UseTargets(m_iTriggerState); + CBaseTrigger::UseTargets(act, m_iTriggerState); } } diff --git a/src/server/cstrike/item_c4bomb.cpp b/src/server/cstrike/item_c4bomb.cpp index 1847f8eb..752f41d6 100644 --- a/src/server/cstrike/item_c4bomb.cpp +++ b/src/server/cstrike/item_c4bomb.cpp @@ -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(TRIG_TOGGLE); + trigger.Trigger(this, TRIG_TOGGLE); } } diff --git a/src/server/cstrike/item_suit.cpp b/src/server/cstrike/item_suit.cpp index 714b4d42..e7d02756 100644 --- a/src/server/cstrike/item_suit.cpp +++ b/src/server/cstrike/item_suit.cpp @@ -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(TRIG_TOGGLE); + CBaseTrigger::UseTargets(other, TRIG_TOGGLE); if (cvar("sv_playerslots") == 1) { remove(self); diff --git a/src/server/valve/item_longjump.cpp b/src/server/valve/item_longjump.cpp index 328408ff..a09b9381 100644 --- a/src/server/valve/item_longjump.cpp +++ b/src/server/valve/item_longjump.cpp @@ -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(TRIG_TOGGLE); + CBaseTrigger::UseTargets(other, TRIG_TOGGLE); if (real_owner || cvar("sv_playerslots") == 1) { remove(self); diff --git a/src/server/valve/item_suit.cpp b/src/server/valve/item_suit.cpp index 2abba515..d5e61be1 100644 --- a/src/server/valve/item_suit.cpp +++ b/src/server/valve/item_suit.cpp @@ -47,7 +47,7 @@ void item_suit::touch(void) pl.g_items |= ITEM_SUIT; m_iValue = TRUE; - CBaseTrigger::UseTargets(TRIG_TOGGLE); + CBaseTrigger::UseTargets(other, TRIG_TOGGLE); if (real_owner || cvar("sv_playerslots") == 1) { remove(self); diff --git a/src/server/valve/items.cpp b/src/server/valve/items.cpp index 3923e11a..e86895d9 100644 --- a/src/server/valve/items.cpp +++ b/src/server/valve/items.cpp @@ -28,7 +28,7 @@ void item_pickup::touch(void) Logging_Pickup(other, this, __NULL__); Sound_Play(other, CHAN_ITEM, "weapon.pickup"); - CBaseTrigger::UseTargets(TRIG_TOGGLE); + CBaseTrigger::UseTargets(other, TRIG_TOGGLE); if (real_owner || m_iWasDropped == 1 || cvar("sv_playerslots") == 1) { remove(self);