From 40ff065a82babd64a08daead1f38ea43750b5241 Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Wed, 11 Jan 2023 17:45:51 -0800 Subject: [PATCH] Removal of Game_Input which has been made obsolete. --- src/server/gamerules.qc | 24 +++++ src/server/gamerules_singleplayer.qc | 133 +++++++++++++++++++++++++++ src/server/progs.src | 2 +- src/shared/include.src | 1 - src/shared/input.qc | 61 ------------ 5 files changed, 158 insertions(+), 63 deletions(-) create mode 100644 src/server/gamerules_singleplayer.qc delete mode 100644 src/shared/input.qc diff --git a/src/server/gamerules.qc b/src/server/gamerules.qc index 69cd99d..a3c4c3c 100644 --- a/src/server/gamerules.qc +++ b/src/server/gamerules.qc @@ -130,3 +130,27 @@ HLGameRules::PlayerKill(NSClientPlayer pp) player pl = (player)pp; Damage_Apply(pl, pl, pl.health, WEAPON_NONE, DMG_SKIP_ARMOR); } + + +void +TriggerFlashlight(NSClient target) +{ + entity oldself = self; + self = target; + Flashlight_Toggle(); + self = oldself; +} + +bool +HLGameRules::ImpulseCommand(NSClient bp, float num) +{ + switch (num) { + case 100: + TriggerFlashlight(bp); + break; + default: + return super::ImpulseCommand(bp, num); + } + + return true; +} diff --git a/src/server/gamerules_singleplayer.qc b/src/server/gamerules_singleplayer.qc new file mode 100644 index 0000000..01e8219 --- /dev/null +++ b/src/server/gamerules_singleplayer.qc @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2016-2020 Marco Cawthorne + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +bool +HLSingleplayerRules::IsMultiplayer(void) +{ + return false; +} + +void +HLSingleplayerRules::PlayerDeath(NSClientPlayer pl) +{ + pl.movetype = MOVETYPE_NONE; + pl.solid = SOLID_NOT; + pl.takedamage = DAMAGE_NO; + pl.gflags &= ~GF_FLASHLIGHT; + pl.armor = pl.activeweapon = pl.g_items = pl.weapon = 0; + pl.health = 0; + Sound_Play(pl, CHAN_AUTO, "player.die"); + + if (cvar("coop") == 1) { + pl.think = PutClientInServer; + pl.nextthink = time + 4.0f; + } + + if (pl.health < -50) { + FX_GibHuman(pl.origin, vectoangles(pl.origin - g_dmg_eAttacker.origin), g_dmg_iDamage * 2.0f); + } + + /* Let's handle corpses on the clientside */ + entity corpse = spawn(); + setorigin(corpse, pl.origin + [0,0,32]); + setmodel(corpse, pl.model); + setsize(corpse, VEC_HULL_MIN, VEC_HULL_MAX); + corpse.movetype = MOVETYPE_TOSS; + corpse.solid = SOLID_TRIGGER; + corpse.modelindex = pl.modelindex; + corpse.frame = ANIM_DIESIMPLE; + corpse.angles = pl.angles; + corpse.velocity = pl.velocity; +} + +void +HLSingleplayerRules::PlayerSpawn(NSClientPlayer pl) +{ + pl.classname = "player"; + pl.health = pl.max_health = 100; + pl.takedamage = DAMAGE_YES; + pl.SetSolid(SOLID_SLIDEBOX); + pl.SetMovetype(MOVETYPE_WALK); + pl.flags = FL_CLIENT; + pl.viewzoom = 1.0; + pl.model = "models/player.mdl"; + + + if (cvar("coop") == 1) { + string mymodel = infokey(pl, "model"); + if (mymodel) { + mymodel = sprintf("models/player/%s/%s.mdl", mymodel, mymodel); + if (whichpack(mymodel)) { + pl.model = mymodel; + } + } + } + + setmodel(pl, pl.model); + + setsize(pl, VEC_HULL_MIN, VEC_HULL_MAX); + pl.velocity = [0,0,0]; + pl.gravity = __NULL__; + pl.frame = 1; + //pl.SendEntity = Player_SendEntity; + pl.SendFlags = UPDATE_ALL; + pl.customphysics = Empty; + pl.iBleeds = TRUE; + forceinfokey(pl, "*spec", "0"); + forceinfokey(pl, "*deaths", ftos(pl.deaths)); + + /* this is where the mods want to deviate */ + entity spot; + + if (startspot != "") { + dprint(sprintf("^3Gamerules_Spawn^7: Startspot is %s\n", startspot)); + LevelDecodeParms(pl); + setorigin(pl, Landmark_GetSpot()); + } else { + LevelNewParms(); + spot = find(world, ::classname, "info_player_start"); + setorigin(pl, spot.origin); + pl.angles = spot.angles; + } + + Weapons_RefreshAmmo(pl); + Client_FixAngle(pl, pl.angles); +} + + + +bool +HLSingleplayerRules::ImpulseCommand(NSClient bp, float num) +{ + switch (num) { + case 101: + player pl = (player)bp; + pl.health = 100; + pl.armor = 100; + Weapons_AddItem(pl, WEAPON_HEATERPIPE, -1); + Weapons_AddItem(pl, WEAPON_BRADNAILER, -1); + Weapons_AddItem(pl, WEAPON_NAILGUN, -1); + Weapons_AddItem(pl, WEAPON_SHOTGUN, -1); + Weapons_AddItem(pl, WEAPON_CMLWBR, -1); + Weapons_AddItem(pl, WEAPON_XS, -1); + Weapons_AddItem(pl, WEAPON_SATCHEL, -1); + break; + default: + return super::ImpulseCommand(bp, num); + } + + return true; +} diff --git a/src/server/progs.src b/src/server/progs.src index 686a703..b27f067 100644 --- a/src/server/progs.src +++ b/src/server/progs.src @@ -71,7 +71,7 @@ ammo_p646.qc ../../../src/botlib/include.src gamerules.qc -../../../valve/src/server/gamerules_singleplayer.qc +gamerules_singleplayer.qc ../../../valve/src/server/gamerules_multiplayer.qc ../../../valve/src/server/server.qc ../../../base/src/server/damage.qc diff --git a/src/shared/include.src b/src/shared/include.src index afe53bf..9efadfe 100644 --- a/src/shared/include.src +++ b/src/shared/include.src @@ -28,5 +28,4 @@ w_shotgun.qc w_xs.qc weapons.qc ../../../base/src/shared/weapon_common.qc -input.qc #endlist diff --git a/src/shared/input.qc b/src/shared/input.qc deleted file mode 100644 index 7423a1f..0000000 --- a/src/shared/input.qc +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2016-2020 Marco Cawthorne - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -void -Game_Input(player pl) -{ -#ifdef SERVER - CGameRules rules = (CGameRules)g_grMode; - - if (rules.m_iIntermission) { - rules.IntermissionEnd(); - return; - } - - if (input_buttons & INPUT_BUTTON5) - pl.InputUse_Down(); - else - pl.InputUse_Up(); - - if (self.impulse == 100) - Flashlight_Toggle(); - - if (cvar("sv_cheats") == 1) { - if (pl.impulse == 101) { - pl.health = 100; - pl.armor = 100; - Weapons_AddItem(pl, WEAPON_HEATERPIPE, -1); - Weapons_AddItem(pl, WEAPON_BRADNAILER, -1); - Weapons_AddItem(pl, WEAPON_NAILGUN, -1); - Weapons_AddItem(pl, WEAPON_SHOTGUN, -1); - Weapons_AddItem(pl, WEAPON_CMLWBR, -1); - Weapons_AddItem(pl, WEAPON_XS, -1); - Weapons_AddItem(pl, WEAPON_SATCHEL, -1); - } - } - - pl.impulse = 0; -#endif - - if (input_buttons & INPUT_BUTTON0) - Weapons_Primary(pl); - else if (input_buttons & INPUT_BUTTON4) - Weapons_Reload(pl); - else if (input_buttons & INPUT_BUTTON3) - Weapons_Secondary(pl); - else - Weapons_Release(pl); -}