From 56a616ec8bfe4710d37a6aead8f4d0763e4084e5 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Thu, 16 Sep 2021 17:34:56 +0200 Subject: [PATCH] CBaseEntity: Add reliable methods to query what certain attributes where when the entity first spawned. (e.g. GetSpawnOrigin()) --- src/gs-entbase/server/basemonster.qc | 11 +++--- src/gs-entbase/server/basephysics.qc | 4 +-- src/gs-entbase/server/button_target.qc | 4 +-- src/gs-entbase/server/func_breakable.qc | 10 +++--- src/gs-entbase/server/func_brush.qc | 8 ++--- src/gs-entbase/server/func_button.qc | 16 ++++----- src/gs-entbase/server/func_conveyor.qc | 6 ++-- src/gs-entbase/server/func_door.qc | 12 +++---- src/gs-entbase/server/func_door_rotating.qc | 10 +++--- src/gs-entbase/server/func_guntarget.qc | 4 +-- src/gs-entbase/server/func_mortar_field.qc | 4 +-- src/gs-entbase/server/func_pendulum.qc | 2 +- src/gs-entbase/server/func_plat.qc | 12 +++---- src/gs-entbase/server/func_rot_button.qc | 8 ++--- src/gs-entbase/server/func_tank.qc | 6 ++-- src/gs-entbase/server/func_tankcontrols.qc | 4 +-- src/gs-entbase/server/func_tracktrain.qc | 4 +-- src/gs-entbase/server/func_train.qc | 4 +-- src/gs-entbase/server/func_vehicle.qc | 8 ++--- src/gs-entbase/server/func_wall_toggle.qc | 2 +- src/gs-entbase/server/game_player_equip.qc | 2 +- src/gs-entbase/server/momentary_door.qc | 12 +++---- src/gs-entbase/server/momentary_rot_button.qc | 6 ++-- src/gs-entbase/server/monster_furniture.qc | 6 ++-- src/gs-entbase/server/monstermaker.qc | 4 +-- src/gs-entbase/server/point_camera.qc | 4 +-- src/gs-entbase/server/prop_door_rotating.qc | 6 ++-- src/gs-entbase/server/speaker.qc | 2 +- src/gs-entbase/server/stubs.qc | 6 ++-- src/gs-entbase/server/trigger_push.qc | 4 +-- src/gs-entbase/shared/baseentity.h | 8 +++++ src/gs-entbase/shared/baseentity.qc | 36 +++++++++++++++---- src/gs-entbase/shared/env_projectedtexture.qc | 18 +++------- src/gs-entbase/shared/func_illusionary.qc | 4 +-- src/gs-entbase/shared/func_ladder.qc | 4 +-- src/gs-entbase/shared/func_monitor.qc | 6 ++-- src/gs-entbase/shared/func_tankmortar.qc | 6 ++-- src/gs-entbase/shared/func_wall.qc | 4 +-- src/gs-entbase/shared/info_particle_system.qc | 4 +-- src/gs-entbase/shared/light_dynamic.qc | 4 +-- .../shared/prop_vehicle_driveable.qc | 6 ++-- src/gs-entbase/shared/trigger_camera.qc | 6 ++-- src/menu-fn/m_customgame.qc | 12 +++---- src/plugins/chatsounds.qc | 2 +- 44 files changed, 165 insertions(+), 146 deletions(-) mode change 100755 => 100644 src/gs-entbase/server/func_breakable.qc diff --git a/src/gs-entbase/server/basemonster.qc b/src/gs-entbase/server/basemonster.qc index 42e1864a..798a390f 100644 --- a/src/gs-entbase/server/basemonster.qc +++ b/src/gs-entbase/server/basemonster.qc @@ -531,9 +531,10 @@ CBaseMonster::Hide(void) void CBaseMonster::Respawn(void) { - v_angle[0] = Math_FixDelta(m_oldAngle[0]); - v_angle[1] = Math_FixDelta(m_oldAngle[1]); - v_angle[2] = Math_FixDelta(m_oldAngle[2]); + v_angle = GetSpawnAngles(); + v_angle[0] = Math_FixDelta(v_angle[0]); + v_angle[1] = Math_FixDelta(v_angle[1]); + v_angle[2] = Math_FixDelta(v_angle[2]); flags |= FL_MONSTER; takedamage = DAMAGE_YES; iBleeds = TRUE; @@ -548,9 +549,9 @@ CBaseMonster::Respawn(void) SetAngles(v_angle); SetSolid(SOLID_SLIDEBOX); SetMovetype(MOVETYPE_WALK); - SetModel(m_oldModel); + SetModel(GetSpawnModel()); SetSize(base_mins, base_maxs); - SetOrigin(m_oldOrigin); + SetOrigin(GetSpawnOrigin()); droptofloor(); } diff --git a/src/gs-entbase/server/basephysics.qc b/src/gs-entbase/server/basephysics.qc index 3383978b..fa1eb6de 100644 --- a/src/gs-entbase/server/basephysics.qc +++ b/src/gs-entbase/server/basephysics.qc @@ -201,14 +201,14 @@ CBasePhysics::Respawn(void) { SetMovetype(MOVETYPE_PHYSICS); SetSolid(SOLID_PHYSICS_BOX + m_iShape); - SetModel(m_oldModel); + SetModel(GetSpawnModel()); geomtype = GEOMTYPE_BOX; takedamage = DAMAGE_YES; health = 100000; PhysicsDisable(); SetFriction(2.0f); SetBounceFactor(0.25f); - SetOrigin(m_oldOrigin); + SetOrigin(GetSpawnOrigin()); /* don't let players collide */ dimension_solid = 1; diff --git a/src/gs-entbase/server/button_target.qc b/src/gs-entbase/server/button_target.qc index d97b622b..55da9387 100644 --- a/src/gs-entbase/server/button_target.qc +++ b/src/gs-entbase/server/button_target.qc @@ -55,8 +55,8 @@ button_target::Respawn(void) SetMovetype(MOVETYPE_PUSH); SetSolid(SOLID_BSP); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); /* it's either one or the other */ if (spawnflags & BUTTA_USE) { diff --git a/src/gs-entbase/server/func_breakable.qc b/src/gs-entbase/server/func_breakable.qc old mode 100755 new mode 100644 index d0289fd5..a790d865 --- a/src/gs-entbase/server/func_breakable.qc +++ b/src/gs-entbase/server/func_breakable.qc @@ -187,7 +187,7 @@ func_breakable::Death(void) callfunction(self.classname); /* apply the saved values back */ - t.origin = t.m_oldOrigin = neworg; + t.origin = t.GetSpawnOrigin() = neworg; /* spawn anew */ if (t.Respawn) @@ -284,8 +284,8 @@ func_breakable::Respawn(void) SetMovetype(MOVETYPE_NONE); SetSolid(SOLID_BSP); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); touch = PlayerTouch; think = __NULL__; @@ -295,7 +295,7 @@ func_breakable::Respawn(void) takedamage = DAMAGE_YES; } - health = m_oldHealth; + health = GetSpawnHealth(); if (!health) { health = 15; @@ -338,7 +338,7 @@ func_breakable::func_breakable(void) CBaseTrigger::CBaseTrigger(); /* contrary to what some map designers think, angles are not supported */ - m_oldAngle = angles = [0,0,0]; + GetSpawnAngles() = angles = [0,0,0]; switch (m_iMaterial) { case BREAKMT_GLASS: diff --git a/src/gs-entbase/server/func_brush.qc b/src/gs-entbase/server/func_brush.qc index 58ca1ba4..e25a5412 100644 --- a/src/gs-entbase/server/func_brush.qc +++ b/src/gs-entbase/server/func_brush.qc @@ -80,13 +80,13 @@ func_brush::Trigger(entity act, int state) SetModelindex(0); break; case TRIG_ON: - SetModel(m_oldModel); + SetModel(GetSpawnModel()); break; default: if (modelindex != 0) SetModelindex(0); else - SetModel(m_oldModel); + SetModel(GetSpawnModel()); } } @@ -114,8 +114,8 @@ void func_brush::Respawn(void) { SetMovetype(MOVETYPE_PUSH); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); /* make sure solid and so on are set */ if (m_iStartOff) { diff --git a/src/gs-entbase/server/func_button.qc b/src/gs-entbase/server/func_button.qc index 39e4bab7..8b63e9c6 100644 --- a/src/gs-entbase/server/func_button.qc +++ b/src/gs-entbase/server/func_button.qc @@ -231,7 +231,7 @@ func_button::Trigger(entity act, int state) UseOutput(act, m_strOnPressed); UseTargets(act, TRIG_TOGGLE, m_flDelay); - health = m_oldHealth; + health = GetSpawnHealth(); } void @@ -277,12 +277,12 @@ func_button::Blocked(void) void func_button::SetMovementDirection(void) { - if (m_oldAngle == [0,-1,0]) { + if (GetSpawnAngles() == [0,-1,0]) { m_vecMoveDir = [0,0,1]; - } else if (m_oldAngle == [0,-2,0]) { + } else if (GetSpawnAngles() == [0,-2,0]) { m_vecMoveDir = [0,0,-1]; } else { - makevectors(m_oldAngle); + makevectors(GetSpawnAngles()); m_vecMoveDir = v_forward; } } @@ -327,13 +327,13 @@ func_button::Respawn(void) SetSolid(SOLID_BSP); SetMovetype(MOVETYPE_PUSH); - SetOrigin(m_oldOrigin); - SetModel(m_oldModel); + SetOrigin(GetSpawnOrigin()); + SetModel(GetSpawnModel()); blocked = Blocked; velocity = [0,0,0]; nextthink = -1; - health = m_oldHealth; + health = GetSpawnHealth(); if (health > 0) { takedamage = DAMAGE_YES; @@ -352,7 +352,7 @@ func_button::Respawn(void) PlayerUse = Use; } - m_vecPos1 = m_oldOrigin; + m_vecPos1 = GetSpawnOrigin(); if (spawnflags & SF_BTT_NOMOVE) { m_vecPos2 = m_vecPos1; diff --git a/src/gs-entbase/server/func_conveyor.qc b/src/gs-entbase/server/func_conveyor.qc index 55ac8f5a..1612b51a 100644 --- a/src/gs-entbase/server/func_conveyor.qc +++ b/src/gs-entbase/server/func_conveyor.qc @@ -74,13 +74,13 @@ void func_conveyor::Respawn(void) { m_vecMoveDir = [0,0,0]; - angles = m_oldAngle; + angles = GetSpawnAngles(); SetMovementDirection(); SetSolid(SOLID_BSP); SetMovetype(MOVETYPE_PUSH); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); /* TODO: Apply some effect flag the engine handles? */ if (!(spawnflags & SF_CONVEYOR_VISUAL)) { diff --git a/src/gs-entbase/server/func_door.qc b/src/gs-entbase/server/func_door.qc index 7525e544..b18fc0cb 100644 --- a/src/gs-entbase/server/func_door.qc +++ b/src/gs-entbase/server/func_door.qc @@ -292,12 +292,12 @@ func_door::Blocked(void) void func_door::SetMovementDirection(void) { - if (m_oldAngle == [0,-1,0]) { + if (GetSpawnAngles() == [0,-1,0]) { m_vecMoveDir = [0,0,1]; - } else if (m_oldAngle == [0,-2,0]) { + } else if (GetSpawnAngles() == [0,-2,0]) { m_vecMoveDir = [0,0,-1]; } else { - makevectors(m_oldAngle); + makevectors(GetSpawnAngles()); m_vecMoveDir = v_forward; } } @@ -355,8 +355,8 @@ func_door::Respawn(void) SetSolid(SOLID_BSP); SetMovetype(MOVETYPE_PUSH); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); blocked = Blocked; think = __NULL__; nextthink = 0.0f; @@ -386,7 +386,7 @@ func_door::Respawn(void) m_iValue = 0; m_iState = DOORSTATE_LOWERED; - m_vecPos1 = m_oldOrigin; + m_vecPos1 = GetSpawnOrigin(); m_vecPos2 = (m_vecPos1 + m_vecMoveDir * (fabs(m_vecMoveDir * size) - m_flLip)); if (spawnflags & SF_MOV_OPEN) { diff --git a/src/gs-entbase/server/func_door_rotating.qc b/src/gs-entbase/server/func_door_rotating.qc index e3ac3d4b..41bc8149 100644 --- a/src/gs-entbase/server/func_door_rotating.qc +++ b/src/gs-entbase/server/func_door_rotating.qc @@ -360,8 +360,8 @@ void func_door_rotating::Respawn(void) SetSolid(SOLID_BSP); SetMovetype(MOVETYPE_PUSH); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); think = __NULL__; nextthink = 0.0f; avelocity = [0,0,0]; @@ -377,12 +377,12 @@ void func_door_rotating::Respawn(void) } m_iState = STATE_LOWERED; - m_vecPos1 = m_oldAngle; + m_vecPos1 = GetSpawnAngles(); if (spawnflags & SF_ROT_BACKWARDS) { - m_vecPos2 = m_oldAngle + m_vecMoveDir * -m_flDistance; + m_vecPos2 = GetSpawnAngles() + m_vecMoveDir * -m_flDistance; } else { - m_vecPos2 = m_oldAngle + m_vecMoveDir * m_flDistance; + m_vecPos2 = GetSpawnAngles() + m_vecMoveDir * m_flDistance; } if (spawnflags & SF_ROT_OPEN) { diff --git a/src/gs-entbase/server/func_guntarget.qc b/src/gs-entbase/server/func_guntarget.qc index 0a0ec391..f26c88ff 100644 --- a/src/gs-entbase/server/func_guntarget.qc +++ b/src/gs-entbase/server/func_guntarget.qc @@ -171,8 +171,8 @@ func_guntarget::Respawn(void) SetSolid(SOLID_BSP); SetMovetype(MOVETYPE_PUSH); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); if (spawnflags & SF_GUNTARGET_ON) { think = ThinkWrap; diff --git a/src/gs-entbase/server/func_mortar_field.qc b/src/gs-entbase/server/func_mortar_field.qc index 8780bc99..c8547a6a 100644 --- a/src/gs-entbase/server/func_mortar_field.qc +++ b/src/gs-entbase/server/func_mortar_field.qc @@ -174,8 +174,8 @@ func_mortar_field::Respawn(void) { SetMovetype(MOVETYPE_NONE); SetSolid(SOLID_NOT); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); #ifdef GS_RENDERFX SetRenderMode(RM_TRIGGER); diff --git a/src/gs-entbase/server/func_pendulum.qc b/src/gs-entbase/server/func_pendulum.qc index 6da44139..39bf344c 100644 --- a/src/gs-entbase/server/func_pendulum.qc +++ b/src/gs-entbase/server/func_pendulum.qc @@ -112,7 +112,7 @@ func_pendulum::Respawn(void) SetSolid(SOLID_BSP); movetype = MOVETYPE_PUSH; - SetModel(m_oldModel); + SetModel(GetSpawnModel()); SetOrigin(origin); } diff --git a/src/gs-entbase/server/func_plat.qc b/src/gs-entbase/server/func_plat.qc index 756e2363..ee283a28 100644 --- a/src/gs-entbase/server/func_plat.qc +++ b/src/gs-entbase/server/func_plat.qc @@ -97,9 +97,9 @@ void func_plat::MoveToggle(void) { if (m_iState == PLATSTATE_RAISED) { - Move(m_oldOrigin - [0,0,m_flHeight], ArrivedDown); + Move(GetSpawnOrigin() - [0,0,m_flHeight], ArrivedDown); } else if (m_iState == PLATSTATE_LOWERED) { - Move(m_oldOrigin, ArrivedUp); + Move(GetSpawnOrigin(), ArrivedUp); } } @@ -111,10 +111,10 @@ func_plat::Trigger(entity act, int state) switch (state) { case TRIG_OFF: - Move(m_oldOrigin - [0,0,m_flHeight], ArrivedDown); + Move(GetSpawnOrigin() - [0,0,m_flHeight], ArrivedDown); break; case TRIG_ON: - Move(m_oldOrigin, ArrivedUp); + Move(GetSpawnOrigin(), ArrivedUp); break; default: MoveToggle(); @@ -136,8 +136,8 @@ func_plat::Respawn(void) { SetMovetype(MOVETYPE_PUSH); SetSolid(SOLID_BSP); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); m_iState = PLATSTATE_RAISED; think = __NULL__; diff --git a/src/gs-entbase/server/func_rot_button.qc b/src/gs-entbase/server/func_rot_button.qc index 0dde6bc3..797d7b3c 100644 --- a/src/gs-entbase/server/func_rot_button.qc +++ b/src/gs-entbase/server/func_rot_button.qc @@ -144,7 +144,7 @@ func_rot_button::TurnToggle(void) if (m_iState == ROTBTNSTATE_OPENED) { Rotate(m_vecMoveAngle, ArrivedClosed); } else if (m_iState == ROTBTNSTATE_CLOSED) { - Rotate(m_oldAngle, ArrivedOpened); + Rotate(GetSpawnAngles(), ArrivedOpened); /* in toggle mode, we trigger our targets every turn */ if (spawnflags & FNCROTBUT_TOGGLE) @@ -169,9 +169,9 @@ func_rot_button::Respawn(void) else SetSolid(SOLID_BSP); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); - SetAngles(m_oldAngle); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); + SetAngles(GetSpawnAngles()); PlayerUse = OnPlayerUse; m_iState = ROTBTNSTATE_OPENED; diff --git a/src/gs-entbase/server/func_tank.qc b/src/gs-entbase/server/func_tank.qc index ae6b8f00..a6f46971 100644 --- a/src/gs-entbase/server/func_tank.qc +++ b/src/gs-entbase/server/func_tank.qc @@ -190,9 +190,9 @@ func_tank::Respawn(void) { SetMovetype(MOVETYPE_PUSH); SetSolid(SOLID_BSP); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); - SetAngles(m_oldAngle); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); + SetAngles(GetSpawnAngles()); if (m_eDriver) PlayerLeave((base_player)m_eDriver); diff --git a/src/gs-entbase/server/func_tankcontrols.qc b/src/gs-entbase/server/func_tankcontrols.qc index 7cb743b2..95c90375 100644 --- a/src/gs-entbase/server/func_tankcontrols.qc +++ b/src/gs-entbase/server/func_tankcontrols.qc @@ -65,8 +65,8 @@ func_tankcontrols::Respawn(void) { SetMovetype(MOVETYPE_PUSH); SetSolid(SOLID_BSP); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); PlayerUse = OnPlayerUse; #ifdef GS_RENDERFX diff --git a/src/gs-entbase/server/func_tracktrain.qc b/src/gs-entbase/server/func_tracktrain.qc index e2f7dead..8a90b9d9 100644 --- a/src/gs-entbase/server/func_tracktrain.qc +++ b/src/gs-entbase/server/func_tracktrain.qc @@ -237,8 +237,8 @@ func_tracktrain::Respawn(void) SetSolid(spawnflags & TRAIN_NOTSOLID ? SOLID_NOT : SOLID_BSP); SetMovetype(MOVETYPE_PUSH); blocked = Blocked; - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); m_flSpeed = m_flStartSpeed; /* let's wait 1/4 a second to give the path_corner entities a chance to diff --git a/src/gs-entbase/server/func_train.qc b/src/gs-entbase/server/func_train.qc index a646b1f1..fa1ba05a 100644 --- a/src/gs-entbase/server/func_train.qc +++ b/src/gs-entbase/server/func_train.qc @@ -226,8 +226,8 @@ func_train::Respawn(void) SetSolid(spawnflags & TRAIN_NOTSOLID ? SOLID_NOT : SOLID_BSP); SetMovetype(MOVETYPE_PUSH); blocked = Blocked; - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); /* let's wait 1/4 a second to give the path_corner entities a chance to * spawn in case they're after us in the ent lump */ diff --git a/src/gs-entbase/server/func_vehicle.qc b/src/gs-entbase/server/func_vehicle.qc index 5a88a258..7bae6d96 100644 --- a/src/gs-entbase/server/func_vehicle.qc +++ b/src/gs-entbase/server/func_vehicle.qc @@ -484,7 +484,7 @@ func_vehicle::Realign(void) angles = vectoangles(first.origin - second.origin); end_pos = first.origin; - end_pos[2] = m_oldOrigin[2] + 64; + end_pos[2] = GetSpawnOrigin()[2] + 64; setorigin(this, end_pos); } } @@ -494,9 +494,9 @@ func_vehicle::Respawn(void) { SetMovetype(MOVETYPE_PUSH); SetSolid(SOLID_BSP); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); - SetAngles(m_oldAngle); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); + SetAngles(GetSpawnAngles()); think = Realign; nextthink = time + 0.1f; diff --git a/src/gs-entbase/server/func_wall_toggle.qc b/src/gs-entbase/server/func_wall_toggle.qc index 469b53af..afbf19a2 100644 --- a/src/gs-entbase/server/func_wall_toggle.qc +++ b/src/gs-entbase/server/func_wall_toggle.qc @@ -71,7 +71,7 @@ func_wall_toggle::Respawn(void) { SetMovetype(MOVETYPE_PUSH); SetSolid(SOLID_BSP); - SetModel(m_oldModel); + SetModel(GetSpawnModel()); SetOrigin(origin); m_iVisible = 1; m_oldmodelindex = modelindex; diff --git a/src/gs-entbase/server/game_player_equip.qc b/src/gs-entbase/server/game_player_equip.qc index 7c192cc5..45c800e3 100644 --- a/src/gs-entbase/server/game_player_equip.qc +++ b/src/gs-entbase/server/game_player_equip.qc @@ -66,7 +66,7 @@ game_player_equip::SpawnUnit(string cname, vector org) callfunction(self.classname); /* apply the saved values back */ - t.origin = t.m_oldOrigin = neworg; + t.origin = t.GetSpawnOrigin() = neworg; /* spawn anew */ t.Respawn(); diff --git a/src/gs-entbase/server/momentary_door.qc b/src/gs-entbase/server/momentary_door.qc index 27d742cf..17c8d5c9 100644 --- a/src/gs-entbase/server/momentary_door.qc +++ b/src/gs-entbase/server/momentary_door.qc @@ -81,12 +81,12 @@ momentary_door::customphysics(void) void momentary_door::SetMovementDirection(void) { - if (m_oldAngle == [0,-1,0]) { + if (GetSpawnAngles() == [0,-1,0]) { m_vecMoveDir = [0,0,1]; - } else if (m_oldAngle == [0,-2,0]) { + } else if (GetSpawnAngles() == [0,-2,0]) { m_vecMoveDir = [0,0,-1]; } else { - makevectors(m_oldAngle); + makevectors(GetSpawnAngles()); m_vecMoveDir = v_forward; } } @@ -96,12 +96,12 @@ momentary_door::Respawn(void) { SetMovetype(MOVETYPE_PUSH); SetSolid(SOLID_BSP); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); SetMovementDirection(); SetAngles([0,0,0]); - m_vecPos1 = m_oldOrigin; + m_vecPos1 = GetSpawnOrigin(); m_vecPos2 = (m_vecPos1 + m_vecMoveDir * (fabs(m_vecMoveDir * size) - m_flDistance)); } diff --git a/src/gs-entbase/server/momentary_rot_button.qc b/src/gs-entbase/server/momentary_rot_button.qc index e63c03a2..3ddc8af9 100644 --- a/src/gs-entbase/server/momentary_rot_button.qc +++ b/src/gs-entbase/server/momentary_rot_button.qc @@ -127,14 +127,14 @@ momentary_rot_button::Respawn(void) { SetMovetype(MOVETYPE_PUSH); SetSolid(SOLID_BSP); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); SetMovementDirection(); SetAngles([0,0,0]); PlayerUse = OnPlayerUse; m_vecPos1 = [0,0,0]; - m_vecPos2 = m_oldAngle + m_vecMoveDir * m_flDistance; + m_vecPos2 = GetSpawnAngles() + m_vecMoveDir * m_flDistance; } void diff --git a/src/gs-entbase/server/monster_furniture.qc b/src/gs-entbase/server/monster_furniture.qc index abfe0118..f183a215 100644 --- a/src/gs-entbase/server/monster_furniture.qc +++ b/src/gs-entbase/server/monster_furniture.qc @@ -49,9 +49,9 @@ monster_furniture::Respawn(void) { SetMovetype(MOVETYPE_NOCLIP); SetSolid(SOLID_NOT); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); - SetAngles(m_oldAngle); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); + SetAngles(GetSpawnAngles()); } void diff --git a/src/gs-entbase/server/monstermaker.qc b/src/gs-entbase/server/monstermaker.qc index 45ca8a1b..e54f33d1 100644 --- a/src/gs-entbase/server/monstermaker.qc +++ b/src/gs-entbase/server/monstermaker.qc @@ -94,8 +94,8 @@ monstermaker::Spawner(void) callfunction(self.classname); /* apply the saved values back */ - t.origin = t.m_oldOrigin = neworg; - t.angles = t.m_oldAngle = newang; + t.origin = t.GetSpawnOrigin() = neworg; + t.angles = t.GetSpawnAngles() = newang; t.targetname = tname; t.spawnflags |= MSF_MULTIPLAYER; diff --git a/src/gs-entbase/server/point_camera.qc b/src/gs-entbase/server/point_camera.qc index d50ee487..12298d6f 100644 --- a/src/gs-entbase/server/point_camera.qc +++ b/src/gs-entbase/server/point_camera.qc @@ -115,8 +115,8 @@ point_camera::Respawn(void) SetModelindex(0); SetSolid(SOLID_NOT); SetSize([-16,-16,-16], [16,16,16]); - SetOrigin(m_oldOrigin); - SetAngles(m_oldAngle); + SetOrigin(GetSpawnOrigin()); + SetAngles(GetSpawnAngles()); m_iValue = TRUE; } diff --git a/src/gs-entbase/server/prop_door_rotating.qc b/src/gs-entbase/server/prop_door_rotating.qc index ed918fb1..50dd7eef 100644 --- a/src/gs-entbase/server/prop_door_rotating.qc +++ b/src/gs-entbase/server/prop_door_rotating.qc @@ -101,12 +101,12 @@ prop_door_rotating::Interact(void) void prop_door_rotating::Respawn(void) { - SetModel(m_oldModel); + SetModel(GetSpawnModel()); SetSolid(SOLID_BSP); SetMovetype(MOVETYPE_PUSH); - SetOrigin(m_oldOrigin); + SetOrigin(GetSpawnOrigin()); PlayerUse = Interact; - m_vecDest1 = m_oldAngle; + m_vecDest1 = GetSpawnAngles(); m_vecDest2 = m_vecDest1 + [0, m_flDistance, 0]; } diff --git a/src/gs-entbase/server/speaker.qc b/src/gs-entbase/server/speaker.qc index 1f567e43..c255eede 100644 --- a/src/gs-entbase/server/speaker.qc +++ b/src/gs-entbase/server/speaker.qc @@ -101,7 +101,7 @@ speaker::Respawn(void) { /* force this thing to be networked */ SetModel("models/player.mdl"); - SetOrigin(m_oldOrigin); + SetOrigin(GetSpawnOrigin()); #ifdef GS_RENDERFX SetRenderMode(RM_COLOR); diff --git a/src/gs-entbase/server/stubs.qc b/src/gs-entbase/server/stubs.qc index 4e286543..d1d115d9 100644 --- a/src/gs-entbase/server/stubs.qc +++ b/src/gs-entbase/server/stubs.qc @@ -76,9 +76,9 @@ This entity was introduced in Quake (1996). CLASSEXPORT(info_node, info_notnull) CLASSEXPORT(info_target, info_notnull) -CLASSEXPORT(env_sound, info_null) -CLASSEXPORT(env_sun, info_null) -CLASSEXPORT(info_intermission, info_null) +CLASSEXPORT(env_sound, info_notnull) +CLASSEXPORT(env_sun, info_notnull) +CLASSEXPORT(info_intermission, info_notnull) void env_glow(void) diff --git a/src/gs-entbase/server/trigger_push.qc b/src/gs-entbase/server/trigger_push.qc index bf0e0d44..984025ab 100644 --- a/src/gs-entbase/server/trigger_push.qc +++ b/src/gs-entbase/server/trigger_push.qc @@ -53,12 +53,12 @@ class trigger_push:CBaseTrigger void trigger_push::SetMovementDirection(void) { - if (m_oldAngle == [0,-1,0]) { + if (GetSpawnAngles() == [0,-1,0]) { m_vecMoveDir = [0,0,1]; } else if (angles == [0,-2,0]) { m_vecMoveDir = [0,0,-1]; } else { - makevectors(m_oldAngle); + makevectors(GetSpawnAngles()); m_vecMoveDir = v_forward; } diff --git a/src/gs-entbase/shared/baseentity.h b/src/gs-entbase/shared/baseentity.h index a36f7063..0c1732e2 100644 --- a/src/gs-entbase/shared/baseentity.h +++ b/src/gs-entbase/shared/baseentity.h @@ -57,6 +57,12 @@ class CBaseEntity string m_parent; + /* Reliable APIs */ + virtual vector(void) GetSpawnOrigin; + virtual vector(void) GetSpawnAngles; + virtual string(void) GetSpawnModel; + virtual float(void) GetSpawnHealth; + /* Input/Output System */ string m_strOnTrigger; string m_strOnUser1; @@ -121,4 +127,6 @@ class CBaseEntity #endif }; +#ifdef CLIENT class CBaseTrigger:CBaseEntity {}; +#endif \ No newline at end of file diff --git a/src/gs-entbase/shared/baseentity.qc b/src/gs-entbase/shared/baseentity.qc index 8c293621..b19f7266 100644 --- a/src/gs-entbase/shared/baseentity.qc +++ b/src/gs-entbase/shared/baseentity.qc @@ -825,11 +825,11 @@ CBaseEntity::SpawnInit(void) void CBaseEntity::Respawn(void) { - health = m_oldHealth; - SetModel(m_oldModel); + health = GetSpawnHealth(); + SetModel(GetSpawnModel()); SetSolid(m_oldSolid); - SetAngles(m_oldAngle); - SetOrigin(m_oldOrigin); + SetAngles(GetSpawnAngles()); + SetOrigin(GetSpawnOrigin()); target = m_oldstrTarget; #ifdef GS_RENDERFX @@ -902,7 +902,7 @@ CBaseEntity::CBaseEntity(void) m_oldstrTarget = target; if (m_oldModel != "") { - precache_model(m_oldModel); + precache_model(GetSpawnModel()); } #endif } @@ -1065,6 +1065,29 @@ CBaseEntity::SetRenderColor(vector newColor) } #endif +#ifdef SERVER +vector +CBaseEntity::GetSpawnOrigin(void) +{ + return m_oldOrigin; +} +vector +CBaseEntity::GetSpawnAngles(void) +{ + return m_oldAngle; +} +string +CBaseEntity::GetSpawnModel(void) +{ + return m_oldModel; +} +float +CBaseEntity::GetSpawnHealth(void) +{ + return m_oldHealth; +} +#endif + /* ============ CBaseEntity::SpawnKey @@ -1146,6 +1169,7 @@ CBaseEntity::SpawnKey(string strKey, string strValue) case "model": model = strValue; break; + case "zhlt_lightflags": case "classname": case "spawnflags": break; @@ -1182,7 +1206,7 @@ CBaseEntity::SpawnKey(string strKey, string strValue) break; #endif default: - print(sprintf("^3%s^7::SpawnKey:: Unknown key '%s' with value '%s'\n", + dprint(sprintf("^3%s^7::SpawnKey:: Unknown key '%s' with value '%s'\n", classname, strKey, strValue)); break; } diff --git a/src/gs-entbase/shared/env_projectedtexture.qc b/src/gs-entbase/shared/env_projectedtexture.qc index 6a3539a0..7fdcf4c7 100644 --- a/src/gs-entbase/shared/env_projectedtexture.qc +++ b/src/gs-entbase/shared/env_projectedtexture.qc @@ -92,7 +92,7 @@ class env_projectedtexture:CBaseTrigger virtual float(entity, float) SendEntity; virtual void(string, string) SpawnKey; virtual void(entity, string, string) Input; - virtual void(void) ParentUpdate; + virtual void(void) EvaluateEntity; #endif }; @@ -157,7 +157,7 @@ env_projectedtexture::ReceiveEntity(float flFlags) } #else void -env_projectedtexture::ParentUpdate(void) +env_projectedtexture::EvaluateEntity(void) { if (net_origin != origin) { net_origin = origin; @@ -167,16 +167,6 @@ env_projectedtexture::ParentUpdate(void) net_angles = angles; SendFlags |= PRTEXFL_CHANGED_ANGLES; } - - if (m_parent) { - entity p = find(world, ::targetname, m_parent); - - if (p) { - CBaseEntity t = (CBaseEntity)p; - vector ofs = m_oldOrigin - t.m_oldOrigin; - SetOrigin(p.origin + ofs); - } - } } void @@ -324,8 +314,8 @@ env_projectedtexture::Respawn(void) { SetSolid(SOLID_NOT); SetSize([-16,-16,-16], [16,16,16]); - SetOrigin(m_oldOrigin); - SetAngles(m_oldAngle); + SetOrigin(GetSpawnOrigin()); + SetAngles(GetSpawnAngles()); m_iState = (spawnflags & 1) ? 1 : 0; } diff --git a/src/gs-entbase/shared/func_illusionary.qc b/src/gs-entbase/shared/func_illusionary.qc index ca0aba80..6fe3558a 100644 --- a/src/gs-entbase/shared/func_illusionary.qc +++ b/src/gs-entbase/shared/func_illusionary.qc @@ -84,8 +84,8 @@ func_illusionary::Respawn(void) SetAngles([0,0,0]); SetMovetype(MOVETYPE_NONE); SetSolid(SOLID_NOT); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); SetSkin(0); // TODO: Add support for (skin) -1 = Empty, -7 = Volumetric light diff --git a/src/gs-entbase/shared/func_ladder.qc b/src/gs-entbase/shared/func_ladder.qc index e81f1e24..88e797c2 100644 --- a/src/gs-entbase/shared/func_ladder.qc +++ b/src/gs-entbase/shared/func_ladder.qc @@ -82,8 +82,8 @@ func_ladder::Respawn(void) SetMovetype(MOVETYPE_NONE); SetSolid(SOLID_BSP); SetSkin(CONTENT_LADDER); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); SetFrame(0); #ifdef GS_RENDERFX SetRenderMode(RM_TRIGGER); diff --git a/src/gs-entbase/shared/func_monitor.qc b/src/gs-entbase/shared/func_monitor.qc index 22dc6b87..2a53a568 100644 --- a/src/gs-entbase/shared/func_monitor.qc +++ b/src/gs-entbase/shared/func_monitor.qc @@ -325,9 +325,9 @@ func_monitor::Respawn(void) { SetSolid(SOLID_BSP); SetMovetype(MOVETYPE_NONE); - SetOrigin(m_oldOrigin); - SetAngles(m_oldAngle); - SetModel(m_oldModel); + SetOrigin(GetSpawnOrigin()); + SetAngles(GetSpawnAngles()); + SetModel(GetSpawnModel()); m_iValue = TRUE; } #endif diff --git a/src/gs-entbase/shared/func_tankmortar.qc b/src/gs-entbase/shared/func_tankmortar.qc index d24bbba2..834fbd44 100644 --- a/src/gs-entbase/shared/func_tankmortar.qc +++ b/src/gs-entbase/shared/func_tankmortar.qc @@ -362,9 +362,9 @@ func_tankmortar::Respawn(void) { SetMovetype(MOVETYPE_PUSH); SetSolid(SOLID_BSP); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); - SetAngles(m_oldAngle); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); + SetAngles(GetSpawnAngles()); if (m_eDriver) PlayerLeave((base_player)m_eDriver); diff --git a/src/gs-entbase/shared/func_wall.qc b/src/gs-entbase/shared/func_wall.qc index abfe502b..99d59bd0 100644 --- a/src/gs-entbase/shared/func_wall.qc +++ b/src/gs-entbase/shared/func_wall.qc @@ -84,8 +84,8 @@ func_wall::Respawn(void) SetAngles([0,0,0]); SetMovetype(MOVETYPE_PUSH); SetSolid(SOLID_BSP); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); SetFrame(0); } #else diff --git a/src/gs-entbase/shared/info_particle_system.qc b/src/gs-entbase/shared/info_particle_system.qc index b6bc5881..23b04aca 100644 --- a/src/gs-entbase/shared/info_particle_system.qc +++ b/src/gs-entbase/shared/info_particle_system.qc @@ -237,8 +237,8 @@ info_particle_system::Respawn(void) { SetSolid(SOLID_NOT); SetSize([-16,-16,-16], [16,16,16]); - SetOrigin(m_oldOrigin); - SetAngles(m_oldAngle); + SetOrigin(GetSpawnOrigin()); + SetAngles(GetSpawnAngles()); if (spawnflags & PSFL_STARTACTIVE) { Trigger(this, TRIG_ON); diff --git a/src/gs-entbase/shared/light_dynamic.qc b/src/gs-entbase/shared/light_dynamic.qc index 90978a33..2e67144e 100644 --- a/src/gs-entbase/shared/light_dynamic.qc +++ b/src/gs-entbase/shared/light_dynamic.qc @@ -312,8 +312,8 @@ light_dynamic::Respawn(void) { SetSolid(SOLID_NOT); SetSize([-16,-16,-16], [16,16,16]); - SetOrigin(m_oldOrigin); - SetAngles(m_oldAngle); + SetOrigin(GetSpawnOrigin()); + SetAngles(GetSpawnAngles()); m_iState = (m_iStartActive == 1) ? 1 : 0; } diff --git a/src/gs-entbase/shared/prop_vehicle_driveable.qc b/src/gs-entbase/shared/prop_vehicle_driveable.qc index a71ce784..93942d73 100644 --- a/src/gs-entbase/shared/prop_vehicle_driveable.qc +++ b/src/gs-entbase/shared/prop_vehicle_driveable.qc @@ -476,9 +476,9 @@ prop_vehicle_driveable::Respawn(void) { SetMovetype(MOVETYPE_NONE); SetSolid(SOLID_BBOX); - SetOrigin(m_oldOrigin + [0,0,32]); - SetAngles(m_oldAngle); - SetModel(m_oldModel); + SetOrigin(GetSpawnOrigin() + [0,0,32]); + SetAngles(GetSpawnAngles()); + SetModel(GetSpawnModel()); m_flBRWheelAxel = gettagindex( this, "RRWheelAxel" ); m_flBLWheelAxel = gettagindex( this, "RLWheelAxel" ); diff --git a/src/gs-entbase/shared/trigger_camera.qc b/src/gs-entbase/shared/trigger_camera.qc index baf0dd34..86d863d7 100644 --- a/src/gs-entbase/shared/trigger_camera.qc +++ b/src/gs-entbase/shared/trigger_camera.qc @@ -235,7 +235,7 @@ trigger_camera::Trigger(entity act, int state) { m_eLooker = act; - SetOrigin(m_oldOrigin); + SetOrigin(GetSpawnOrigin()); velocity = [0,0,0]; think = __NULL__; nextthink = 0.0f; @@ -250,8 +250,8 @@ trigger_camera::Respawn(void) { SetSolid(SOLID_NOT); SetMovetype(MOVETYPE_PUSH); - SetModel(m_oldModel); - SetOrigin(m_oldOrigin); + SetModel(GetSpawnModel()); + SetOrigin(GetSpawnOrigin()); } void diff --git a/src/menu-fn/m_customgame.qc b/src/menu-fn/m_customgame.qc index a936fa95..f9da26f6 100644 --- a/src/menu-fn/m_customgame.qc +++ b/src/menu-fn/m_customgame.qc @@ -359,7 +359,6 @@ games_check_gtxt(int id, string gamedirname) games[id].type = argv(1); break; } - print(sprintf("GameInfo: %s\n", temp)); } else if (braced == 2) { /* FileSystem */ switch (token) { @@ -368,7 +367,6 @@ games_check_gtxt(int id, string gamedirname) case "toolsappid": break; } - print(sprintf("FileSystem: %s\n", temp)); } else if (braced == 3) { /* SearchPaths */ switch (token) { @@ -379,7 +377,6 @@ games_check_gtxt(int id, string gamedirname) gamedirchain = strcat(gamedirchain, argv(1), " "); break; } - print(sprintf("SearchPaths: %s\n", temp)); } } @@ -398,7 +395,6 @@ games_check_gtxt(int id, string gamedirname) games[id].gamedir = strcat(games[id].gamedir, argv(i), ";"); } } - print(sprintf("Final GameDir: %s\n", games[id].gamedir)); fclose(fh); ret = 1; @@ -611,16 +607,16 @@ games_init(void) games[id].steambg = 0; if (games_check_manifest(id, gamedirname) == 1) { - print(sprintf("[MENU] Found manifest for %s\n", gamedirname)); + dprint(sprintf("[MENU] Found manifest for %s\n", gamedirname)); games[id].info_type = GAMEINFO_MANIFEST; } else if (games_check_gtxt(id, gamedirname) == 1) { - print(sprintf("[MENU] Found gameinfo for %s\n", gamedirname)); + dprint(sprintf("[MENU] Found gameinfo for %s\n", gamedirname)); games[id].info_type = GAMEINFO_GITXT; } else if (games_check_liblist(id, gamedirname) == 1) { - print(sprintf("[MENU] Found liblist for %s\n", gamedirname)); + dprint(sprintf("[MENU] Found liblist for %s\n", gamedirname)); games[id].info_type = GAMEINFO_LIBLIST; } else { - print(sprintf("[MENU] Found nothing for %s\n", gamedirname)); + dprint(sprintf("[MENU] Found nothing for %s\n", gamedirname)); games[id].info_type = GAMEINFO_NONE; } diff --git a/src/plugins/chatsounds.qc b/src/plugins/chatsounds.qc index ccd92841..a40d772c 100644 --- a/src/plugins/chatsounds.qc +++ b/src/plugins/chatsounds.qc @@ -91,7 +91,7 @@ ChatLoadFile(string filename) c = tokenizebyseparator(g_table[i].sample, ";"); for (int x = 0; x < c; x++) { precache_sound(argv(x)); - print(sprintf("[CHATSOUNDS] Caching: %s\n", argv(x))); + dprint(sprintf("[CHATSOUNDS] Caching: %s\n", argv(x))); } i++; }