From e26c38718a81fa604d550b610d8f8711781ed5ec Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Mon, 8 Mar 2021 11:58:43 +0100 Subject: [PATCH] Initial commit, carried over from Nuclide's Git on March 8th 2021 --- LICENSE | 15 + README.md | 37 ++ data.pk3dir/default.cfg | 41 ++ data.pk3dir/sound/weapons_poke646.sndshd | 10 + img/preview1.jpg | Bin 0 -> 42531 bytes img/preview2.jpg | Bin 0 -> 41002 bytes img/preview3.jpg | Bin 0 -> 68507 bytes img/preview4.jpg | Bin 0 -> 49157 bytes src/Makefile | 5 + src/client/Makefile | 4 + src/client/entities.qc | 26 ++ src/client/init.qc | 61 +++ src/client/progs.src | 39 ++ src/progs.src | 2 + src/server/Makefile | 4 + src/server/ammo_p646.qc | 184 +++++++++ src/server/gamerules.qc | 127 +++++++ src/server/gamerules_multiplayer.qc | 120 ++++++ src/server/input.qc | 65 ++++ src/server/progs.src | 89 +++++ src/shared/include.src | 29 ++ src/shared/items.h | 51 +++ src/shared/player.qc | 464 +++++++++++++++++++++++ src/shared/w_bradnailer.qc | 268 +++++++++++++ src/shared/w_cmlwbr.qc | 151 ++++++++ src/shared/w_heaterpipe.qc | 140 +++++++ src/shared/w_nailgun.qc | 196 ++++++++++ src/shared/w_pipebomb.qc | 276 ++++++++++++++ src/shared/w_shotgun.qc | 280 ++++++++++++++ src/shared/w_xs.qc | 153 ++++++++ src/shared/weapons.h | 34 ++ src/shared/weapons.qc | 27 ++ 32 files changed, 2898 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100755 data.pk3dir/default.cfg create mode 100644 data.pk3dir/sound/weapons_poke646.sndshd create mode 100644 img/preview1.jpg create mode 100644 img/preview2.jpg create mode 100644 img/preview3.jpg create mode 100644 img/preview4.jpg create mode 100644 src/Makefile create mode 100644 src/client/Makefile create mode 100644 src/client/entities.qc create mode 100644 src/client/init.qc create mode 100644 src/client/progs.src create mode 100755 src/progs.src create mode 100644 src/server/Makefile create mode 100644 src/server/ammo_p646.qc create mode 100644 src/server/gamerules.qc create mode 100644 src/server/gamerules_multiplayer.qc create mode 100644 src/server/input.qc create mode 100755 src/server/progs.src create mode 100644 src/shared/include.src create mode 100644 src/shared/items.h create mode 100644 src/shared/player.qc create mode 100644 src/shared/w_bradnailer.qc create mode 100644 src/shared/w_cmlwbr.qc create mode 100644 src/shared/w_heaterpipe.qc create mode 100644 src/shared/w_nailgun.qc create mode 100644 src/shared/w_pipebomb.qc create mode 100644 src/shared/w_shotgun.qc create mode 100644 src/shared/w_xs.qc create mode 100644 src/shared/weapons.h create mode 100644 src/shared/weapons.qc diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..73679b8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,15 @@ +ISC License + +Copyright (c) 2016-2021, Marco "eukara" Hladik + +Permission to use, copy, modify, and/or 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 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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..0c52dbf --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +# FreePoke646 +Clean-room reimplementation of Poke646 in QuakeC. + +![Preview 1](img/preview1.jpg) +![Preview 2](img/preview2.jpg) +![Preview 3](img/preview3.jpg) +![Preview 4](img/preview4.jpg) + +## Building +Clone the repository into the Nuclide-SDK: + +> git clone REPOURL poke646 + +then either run Nuclide's ./build_game.sh shell script, or issue 'make' inside +./poke646/src! + +Obviously make sure that Nuclide has fteqw and fteqcc set-up for building. + +## Community +Join us on #halflife or #poke646 via irc.frag-net.com and chat. + +## License +ISC License + +Copyright (c) 2016-2021 Marco Hladik + +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. diff --git a/data.pk3dir/default.cfg b/data.pk3dir/default.cfg new file mode 100755 index 0000000..43ea9b2 --- /dev/null +++ b/data.pk3dir/default.cfg @@ -0,0 +1,41 @@ +// Generic Binds +bind "ESC" "togglemenu" +bind "w" "+forward" +bind "s" "+back" +bind "a" "+moveleft" +bind "d" "+moveright" +bind "SPACE" "+jump" +bind "CTRL" "+duck" +bind "SHIFT" "+speed" +bind "0" "slot10" +bind "1" "slot1" +bind "2" "slot2" +bind "3" "slot3" +bind "4" "slot4" +bind "5" "slot5" +bind "6" "slot6" +bind "7" "slot7" +bind "8" "slot8" +bind "9" "slot9" +bind "UPARROW" "+forward" +bind "DOWNARROW" "+back" +bind "LEFTARROW" "+left" +bind "RIGHTARROW" "+right" +bind "MOUSE1" "+attack" +bind "MOUSE2" "+attack2" +bind "MWHEELDOWN" "invnext" +bind "MWHEELUP" "invprev" +bind "r" "+reload" +bind "e" "+use" +bind "TAB" "+showscores" +bind "y" "messagemode" +bind "u" "messagemode2" +bind "t" "impulse 201" +bind "f" "impulse 100" +bind "f1" "vote yes" +bind "f2" "vote no" + +// 2D/HUD Variables +seta "con_color" "193 207 204" +seta "vgui_color" "0 255 0" +seta "cross_color" "0 255 0" diff --git a/data.pk3dir/sound/weapons_poke646.sndshd b/data.pk3dir/sound/weapons_poke646.sndshd new file mode 100644 index 0000000..96aee2a --- /dev/null +++ b/data.pk3dir/sound/weapons_poke646.sndshd @@ -0,0 +1,10 @@ +weapon_bradnailer.fire +{ + sample weapons/bradnailer.wav +} + +weapon_bradnailer.hitbody +{ + sample weapons/brad_hit1.wav + sample weapons/brad_hit2.wav +} diff --git a/img/preview1.jpg b/img/preview1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..56edb30ed9df5e92f203c6da66122066c86ec569 GIT binary patch literal 42531 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 Rel{kG=N`iE|FP{3{||PD)&Bqh literal 0 HcmV?d00001 diff --git a/img/preview3.jpg b/img/preview3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..debd541d64e7f218d2267c44afc66631fbbc6add GIT binary patch literal 68507 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 KpO5dKU;hWqKBd_J literal 0 HcmV?d00001 diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..cc3f82d --- /dev/null +++ b/src/Makefile @@ -0,0 +1,5 @@ +CC=fteqcc + +all: + cd client && $(MAKE) + cd server && $(MAKE) diff --git a/src/client/Makefile b/src/client/Makefile new file mode 100644 index 0000000..627019a --- /dev/null +++ b/src/client/Makefile @@ -0,0 +1,4 @@ +CC=fteqcc + +all: + $(CC) progs.src diff --git a/src/client/entities.qc b/src/client/entities.qc new file mode 100644 index 0000000..3e4da72 --- /dev/null +++ b/src/client/entities.qc @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * 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. + */ + +int +ClientGame_EntityUpdate(float id, float new) +{ + switch (id) { + default: + return FALSE; + } + + return TRUE; +} diff --git a/src/client/init.qc b/src/client/init.qc new file mode 100644 index 0000000..8bce813 --- /dev/null +++ b/src/client/init.qc @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * 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. + */ + +float(entity foo, float chanid) getchannellevel = #0; + + +/* +================= +ClientGame_Init + +Comparable to worldspawn in SSQC in that it's mostly used for precaches +================= +*/ +void +ClientGame_Init(float apilevel, string enginename, float engineversion) +{ + Obituary_Init(); +} + +void +ClientGame_InitDone(void) +{ +} + +void +ClientGame_RendererRestart(string rstr) +{ + Obituary_Precache(); + + FX_Blood_Init(); + FX_BreakModel_Init(); + FX_Explosion_Init(); + FX_GibHuman_Init(); + FX_Spark_Init(); + FX_Impact_Init(); + + precache_model("sprites/640hud1.spr"); + precache_model("sprites/640hud2.spr"); + precache_model("sprites/640hud3.spr"); + precache_model("sprites/640hud4.spr"); + precache_model("sprites/640hud5.spr"); + precache_model("sprites/640hud6.spr"); + precache_model("sprites/hud640_01.spr"); + precache_model("sprites/hud640_02.spr"); + precache_model("sprites/hud640_04.spr"); + + BEAM_TRIPMINE = particleeffectnum("weapon_tripmine.beam"); +} diff --git a/src/client/progs.src b/src/client/progs.src new file mode 100644 index 0000000..a1420e5 --- /dev/null +++ b/src/client/progs.src @@ -0,0 +1,39 @@ +#pragma target fte +#pragma progs_dat "../../csprogs.dat" + +#define CSQC +#define CLIENT +#define VALVE +#define POKE646 +#define CLASSIC_VGUI +#define GS_RENDERFX + +#includelist +../../../src/shared/fteextensions.qc +../../../src/shared/defs.h +../../../valve/src/client/defs.h +../../../src/client/defs.h + +../../../src/vgui/include.src + +../../../src/gs-entbase/client.src +../../../src/gs-entbase/shared.src +../shared/include.src + +../../../valve/src/client/predict.qc +init.qc +../../../valve/src/client/player.qc +entities.qc +../../../valve/src/client/cmds.qc +../../../valve/src/client/game_event.qc +../../../valve/src/client/view.qc +../../../valve/src/client/obituary.qc +../../../valve/src/client/hud.qc +../../../valve/src/client/hud_weaponselect.qc +../../../valve/src/client/scoreboard.qc +../../../valve/src/client/input.qc +../../../base/src/client/modelevent.qc + +../../../src/client/include.src +../../../src/shared/include.src +#endlist diff --git a/src/progs.src b/src/progs.src new file mode 100755 index 0000000..2c2a868 --- /dev/null +++ b/src/progs.src @@ -0,0 +1,2 @@ +#pragma sourcefile client/progs.src +#pragma sourcefile server/progs.src diff --git a/src/server/Makefile b/src/server/Makefile new file mode 100644 index 0000000..627019a --- /dev/null +++ b/src/server/Makefile @@ -0,0 +1,4 @@ +CC=fteqcc + +all: + $(CC) progs.src diff --git a/src/server/ammo_p646.qc b/src/server/ammo_p646.qc new file mode 100644 index 0000000..329e834 --- /dev/null +++ b/src/server/ammo_p646.qc @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * 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. + */ + +class item_ammo:CBaseEntity +{ + void(void) item_ammo; + virtual void(void) Respawn; + virtual void(void) touch; +}; + +void item_ammo::touch(void) +{ + if not (other.flags & FL_CLIENT) { + return; + } + + player pl = (player)other; + Sound_Play(other, CHAN_ITEM, "ammo.pickup"); + Weapons_RefreshAmmo(pl); + Logging_Pickup(other, this, __NULL__); + + if (cvar("sv_playerslots") == 1) { + remove(self); + } else { + Hide(); + think = Respawn; + nextthink = time + 20.0f; + } +} + +void item_ammo::Respawn(void) +{ + solid = SOLID_TRIGGER; + movetype = MOVETYPE_TOSS; + + if (m_oldModel) { + SetModel(m_oldModel); + } + + setsize(this, [-16,-16,0], [16,16,16]); + SetOrigin(origin); + + think = __NULL__; + nextthink = -1; + Sound_Play(this, CHAN_ITEM, "ammo.respawn"); + droptofloor(); +} + +void item_ammo::item_ammo(void) +{ + m_oldModel = model; + SetModel(m_oldModel); + CBaseEntity::CBaseEntity(); +} + +/* + * Ammo for the Crossbow. + * A single ammo_bolts will provide 5 bolts. + */ + +class +ammo_bolts:item_ammo +{ + void(void) ammo_bolts; +}; + +void +ammo_bolts::ammo_bolts(void) +{ + model = "models/w_crossbow_clip.mdl"; +} + +/*QUAKED ammo_nailclip (0 0 0.8) (-16 -16 0) (16 16 32) + +Poke646 (2001) ENTITY + +Ammo for the nailguns. +A single ammo_nailclip will provide 25 nails. + +*/ +class ammo_nailclip:item_ammo +{ + void(void) ammo_nailclip; + virtual void(void) touch; +}; + +void ammo_nailclip::ammo_nailclip(void) +{ + model = "models/w_nailclip.mdl"; + item_ammo::item_ammo(); +} +void ammo_nailclip::touch(void) +{ + if not (other.flags & FL_CLIENT) { + return; + } + if (other.classname == "player") { + player pl = (player)other; + if (pl.ammo_nail < MAX_A_NAIL) { + pl.ammo_nail = bound(0, pl.ammo_nail + 25, MAX_A_NAIL); + item_ammo::touch(); + } + } +} + +/*QUAKED ammo_nailround (0 0 0.8) (-16 -16 0) (16 16 32) + +Poke646 (2001) ENTITY + +Ammo for the nailguns. +A single ammo_nailround will provide 50 nails. + +*/ +class ammo_nailround:item_ammo +{ + void(void) ammo_nailround; + virtual void(void) touch; +}; + +void ammo_nailround::ammo_nailround(void) +{ + model = "models/w_nailround.mdl"; + item_ammo::item_ammo(); +} +void ammo_nailround::touch(void) +{ + if not (other.flags & FL_CLIENT) { + return; + } + if (other.classname == "player") { + player pl = (player)other; + if (pl.ammo_nail < MAX_A_NAIL) { + pl.ammo_nail = bound(0, pl.ammo_nail + 50, MAX_A_NAIL); + item_ammo::touch(); + } + } +} + +/*QUAKED ammo_xencandy (0 0 0.8) (-16 -16 0) (16 16 32) + +Poke646 (2001) ENTITY + +Ammo for the alien. +A single ammo_xencandy will provide 20 snacks. + +*/ + +class ammo_xencandy:item_ammo +{ + void(void) ammo_xencandy; + virtual void(void) touch; +}; + +void ammo_xencandy::ammo_xencandy(void) +{ + model = "models/w_xencandy.mdl"; + item_ammo::item_ammo(); +} +void ammo_xencandy::touch(void) +{ + if not (other.flags & FL_CLIENT) { + return; + } + if (other.classname == "player") { + player pl = (player)other; + if (pl.ammo_xencandy < MAX_A_XENCANDY) { + pl.ammo_xencandy = bound(0, pl.ammo_xencandy + 20, MAX_A_XENCANDY); + item_ammo::touch(); + } + } +} diff --git a/src/server/gamerules.qc b/src/server/gamerules.qc new file mode 100644 index 0000000..33f8a82 --- /dev/null +++ b/src/server/gamerules.qc @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * 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. + */ + +/* we check what fields have changed over the course of the frame and network + * only the ones that have actually changed */ +void +HLGameRules::PlayerPostFrame(base_player pp) +{ + Animation_PlayerUpdate(); +} + +void +HLGameRules::LevelNewParms(void) +{ + parm1 = parm2 = parm3 = parm4 = parm5 = parm6 = parm7 = + parm8 = parm9 = parm10 = parm11 = parm12 = parm13 = parm14 = + parm15 = parm16 = parm17 = parm18 = parm19 = parm20 = parm21 = + parm22 = parm23 = parm24 = parm25 = parm26 = parm27 = parm28 = + parm29 = parm30 = 0; + parm64 = FL_CLIENT; +} + +void +HLGameRules::LevelDecodeParms(base_player pp) +{ + player pl = (player)pp; + g_landmarkpos[0] = parm1; + g_landmarkpos[1] = parm2; + g_landmarkpos[2] = parm3; + pl.angles[0] = parm4; + pl.angles[1] = parm5; + pl.angles[2] = parm6; + pl.velocity[0] = parm7; + pl.velocity[1] = parm8; + pl.velocity[2] = parm9; + pl.g_items = parm10; + pl.activeweapon = parm11; + pl.flags = parm64; + + pl.ammo_nail = parm12; + pl.ammo_buckshot = parm13; + pl.ammo_bolts = parm14; + pl.ammo_xencandy = parm15; + pl.ammo_satchel = parm16; + + pl.bradnailer_mag = parm17; + pl.nailgun_mag = parm18; + pl.shotgun_mag = parm19; + pl.cmlwbr_mag = parm20; + pl.xs_mag = parm21; + pl.satchel_chg = parm22; + + if (pl.flags & FL_CROUCHING) { + setsize(pl, VEC_CHULL_MIN, VEC_CHULL_MAX); + } else { + setsize(pl, VEC_HULL_MIN, VEC_HULL_MAX); + } +} + +void +HLGameRules::LevelChangeParms(base_player pp) +{ + player pl = (player)pp; + parm1 = g_landmarkpos[0]; + parm2 = g_landmarkpos[1]; + parm3 = g_landmarkpos[2]; + parm4 = pl.angles[0]; + parm5 = pl.angles[1]; + parm6 = pl.angles[2]; + parm7 = pl.velocity[0]; + parm8 = pl.velocity[1]; + parm9 = pl.velocity[2]; + parm64 = pl.flags; + parm10 = pl.g_items; + parm11 = pl.activeweapon; + parm12 = pl.ammo_nail; + parm13 = pl.ammo_buckshot; + parm14 = pl.ammo_bolts; + parm15 = pl.ammo_xencandy; + parm16 = pl.ammo_satchel; + parm17 = pl.bradnailer_mag; + parm18 = pl.nailgun_mag; + parm19 = pl.shotgun_mag; + parm20 = pl.cmlwbr_mag; + parm21 = pl.xs_mag; + parm22 = pl.satchel_chg; +} + +void +HLGameRules::PlayerConnect(base_player pl) +{ + bprint(PRINT_HIGH, sprintf("%s connected\n", pl.netname)); +} + +void +HLGameRules::PlayerDisconnect(base_player pl) +{ + bprint(PRINT_HIGH, sprintf("%s disconnected\n", pl.netname)); + + /* Make this unusable */ + pl.solid = SOLID_NOT; + pl.movetype = MOVETYPE_NONE; + pl.modelindex = 0; + pl.health = 0; + pl.takedamage = 0; + pl.SendFlags = PLAYER_MODELINDEX; +} + +void +HLGameRules::PlayerKill(base_player pp) +{ + player pl = (player)pp; + Damage_Apply(pl, pl, pl.health, WEAPON_NONE, DMG_SKIP_ARMOR); +} diff --git a/src/server/gamerules_multiplayer.qc b/src/server/gamerules_multiplayer.qc new file mode 100644 index 0000000..2e5848b --- /dev/null +++ b/src/server/gamerules_multiplayer.qc @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * 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 +HLMultiplayerRules::FrameStart(void) +{ + if (cvar("mp_timelimit") != 0) + if (time >= (cvar("mp_timelimit") * 60)) { + IntermissionStart(); + } +} + +void +HLMultiplayerRules::PlayerDeath(base_player pp) +{ + player pl = (player)pp; + pl.movetype = MOVETYPE_NONE; + pl.solid = SOLID_NOT; + pl.takedamage = DAMAGE_NO; + pl.gflags &= ~GF_FLASHLIGHT; + pl.armor = pl.activeweapon = pl.g_items = 0; + + pl.think = PutClientInServer; + pl.nextthink = time + 4.0f; + + if (pl.health < -50) { + pl.health = 0; + FX_GibHuman(pl.origin); + return; + } + + pl.health = 0; + + /* 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 +HLMultiplayerRules::PlayerSpawn(base_player pp) +{ + player pl = (player)pp; + /* this is where the mods want to deviate */ + entity spot; + + pl.classname = "player"; + pl.health = pl.max_health = 100; + pl.takedamage = DAMAGE_YES; + pl.solid = SOLID_SLIDEBOX; + pl.movetype = MOVETYPE_WALK; + pl.flags = FL_CLIENT; + pl.viewzoom = 1.0; + pl.model = "models/player.mdl"; + 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.view_ofs = VEC_PLAYER_VIEWPOS; + pl.velocity = [0,0,0]; + pl.gravity = __NULL__; + pl.frame = 1; + pl.SendFlags = UPDATE_ALL; + pl.customphysics = Empty; + pl.iBleeds = TRUE; + forceinfokey(pl, "*spec", "0"); + forceinfokey(pl, "*deaths", ftos(pl.deaths)); + + LevelNewParms(); + LevelDecodeParms(pl); + spot = Spawn_SelectRandom("info_player_deathmatch"); + setorigin(pl, spot.origin); + pl.angles = spot.angles; + Weapons_RefreshAmmo(pl); + + Client_FixAngle(pl, pl.angles); +} + +float +HLMultiplayerRules::ConsoleCommand(base_player pp, string cmd) +{ + tokenize(cmd); + + switch (argv(0)) { + case "bot_add": + Bot_AddQuick(); + break; + default: + return FALSE; + } + + return TRUE; +} diff --git a/src/server/input.qc b/src/server/input.qc new file mode 100644 index 0000000..c52ec79 --- /dev/null +++ b/src/server/input.qc @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * 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(void) +{ + if (input_buttons & INPUT_BUTTON0) { + Weapons_Primary(); + } else if (input_buttons & INPUT_BUTTON4) { + Weapons_Reload(); + } else if (input_buttons & INPUT_BUTTON3) { + Weapons_Secondary(); + } else { + Weapons_Release(); + } + + if (input_buttons & INPUT_BUTTON5) { + Player_UseDown(); + } else { + Player_UseUp(); + } + + if (self.impulse == 100) { + Flashlight_Toggle(); + } + + if (cvar("sv_cheats") == 1) { + player pl = (player)self; + if (self.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); + } + + if (self.impulse == 102) { + // Respawn all the entities + for (entity a = world; (a = findfloat(a, ::identity, 1));) { + CBaseEntity caw = (CBaseEntity)a; + caw.Respawn(); + } + bprint(PRINT_HIGH, "Respawning all map entities...\n"); + } + } + + self.impulse = 0; +} diff --git a/src/server/progs.src b/src/server/progs.src new file mode 100755 index 0000000..8b7e6ed --- /dev/null +++ b/src/server/progs.src @@ -0,0 +1,89 @@ +#pragma target fte +#pragma progs_dat "../../progs.dat" + +#define QWSSQC +#define SERVER +#define VALVE +#define POKE646 +#define GS_RENDERFX + +#includelist +../../../src/shared/fteextensions.qc +../../../src/gs-entbase/server/defs.h +../../../src/shared/defs.h +../../../src/server/defs.h + +../../../src/gs-entbase/server.src +../../../src/gs-entbase/shared.src +../shared/include.src + +../../../valve/src/server/defs.h + +../../../valve/src/server/monster_apache.qc +../../../valve/src/server/monster_alien_controller.qc +../../../valve/src/server/monster_alien_grunt.qc +../../../valve/src/server/monster_alien_slave.qc +../../../valve/src/server/monster_barnacle.qc +../../../valve/src/server/monster_barney.qc +../../../valve/src/server/monster_barney_dead.qc +../../../valve/src/server/monster_bigmomma.qc +../../../valve/src/server/monster_bloater.qc +../../../valve/src/server/monster_bullchicken.qc +../../../valve/src/server/monster_cockroach.qc +../../../valve/src/server/monster_flyer_flock.qc +../../../valve/src/server/monster_gargantua.qc +../../../valve/src/server/monster_gman.qc +../../../valve/src/server/monster_headcrab.qc +../../../valve/src/server/monster_babycrab.qc +../../../valve/src/server/monster_hevsuit_dead.qc +../../../valve/src/server/monster_houndeye.qc +../../../valve/src/server/monster_human_grunt.qc +../../../valve/src/server/monster_hgrunt_dead.qc +../../../valve/src/server/monster_human_assassin.qc +../../../valve/src/server/monster_ichthyosaur.qc +../../../valve/src/server/monster_leech.qc +../../../valve/src/server/monster_miniturret.qc +../../../valve/src/server/monster_nihilanth.qc +../../../valve/src/server/monster_osprey.qc +../../../valve/src/server/monster_rat.qc +../../../valve/src/server/monster_scientist_dead.qc +../../../valve/src/server/monster_sitting_scientist.qc +../../../valve/src/server/monster_scientist.qc +../../../valve/src/server/monster_sentry.qc +../../../valve/src/server/monster_tentacle.qc +../../../valve/src/server/monster_turret.qc +../../../valve/src/server/monster_zombie.qc + +../../../valve/src/server/player.qc +../../../valve/src/server/spectator.qc +../../../valve/src/server/items.qc +../../../valve/src/server/item_longjump.qc +../../../valve/src/server/item_suit.qc +../../../valve/src/server/item_healthkit.qc +../../../valve/src/server/item_battery.qc +../../../valve/src/server/world_items.qc +../../../valve/src/server/xen_spore_small.qc +../../../valve/src/server/xen_spore_medium.qc +../../../valve/src/server/xen_spore_large.qc +../../../valve/src/server/xen_hair.qc +../../../valve/src/server/xen_plantlight.qc +ammo_p646.qc + +../../../src/botlib/include.src + +gamerules.qc +../../../valve/src/server/gamerules_singleplayer.qc +gamerules_multiplayer.qc +../../../valve/src/server/client.qc +../../../valve/src/server/server.qc +../../../valve/src/server/damage.qc +../../../valve/src/server/rules.qc +../../../valve/src/server/flashlight.qc +../../../base/src/server/modelevent.qc + +input.qc +../../../valve/src/server/spawn.qc + +../../../src/server/include.src +../../../src/shared/include.src +#endlist diff --git a/src/shared/include.src b/src/shared/include.src new file mode 100644 index 0000000..cc0449e --- /dev/null +++ b/src/shared/include.src @@ -0,0 +1,29 @@ + #includelist +../../../valve/src/shared/flags.h +player.qc +../../../valve/src/shared/weapon_common.h +../../../valve/src/shared/animations.h +../../../valve/src/shared/animations.qc +../../../valve/src/shared/pmove.qc +../../../valve/src/shared/pmove_water.qc + +../../../valve/src/shared/fx_blood.qc +../../../valve/src/shared/fx_breakmodel.qc +../../../valve/src/shared/fx_explosion.qc +../../../valve/src/shared/fx_gibhuman.qc +../../../valve/src/shared/fx_spark.qc +../../../valve/src/shared/fx_impact.qc + +items.h +weapons.h +../../../valve/src/shared/w_satchel.qc +w_bradnailer.qc +w_cmlwbr.qc +w_heaterpipe.qc +w_nailgun.qc +w_pipebomb.qc +w_shotgun.qc +w_xs.qc +weapons.qc +../../../valve/src/shared/weapon_common.qc +#endlist diff --git a/src/shared/items.h b/src/shared/items.h new file mode 100644 index 0000000..f733a1d --- /dev/null +++ b/src/shared/items.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * 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. + */ + +#define ITEM_HEATERPIPE 0x00000001i +#define ITEM_BRADNAILER 0x00000002i +#define ITEM_NAILGUN 0x00000004i +#define ITEM_SHOTGUN 0x00000008i +#define ITEM_CMLWBR 0x00000010i +#define ITEM_XS 0x00000020i +#define ITEM_SATCHEL 0x00000040i +#define ITEM_UNUSED8 0x00000080i + +#define ITEM_UNUSED9 0x00000100i +#define ITEM_UNUSED10 0x00000200i +#define ITEM_UNUSED11 0x00000400i +#define ITEM_UNUSED12 0x00000800i +#define ITEM_UNUSED13 0x00001000i +#define ITEM_UNUSED14 0x00002000i +#define ITEM_SUIT 0x00004000i +#define ITEM_LONGJUMP 0x00008000i + +#define ITEM_UNUSED17 0x00010000i +#define ITEM_UNUSED18 0x00020000i +#define ITEM_UNUSED19 0x00040000i +#define ITEM_UNUSED20 0x00080000i +#define ITEM_UNUSED21 0x00100000i +#define ITEM_UNUSED22 0x00200000i +#define ITEM_UNUSED23 0x00400000i +#define ITEM_UNUSED24 0x00800000i + +#define ITEM_UNUSED25 0x01000000i +#define ITEM_UNUSED26 0x02000000i +#define ITEM_UNUSED27 0x04000000i +#define ITEM_UNUSED28 0x08000000i +#define ITEM_UNUSED29 0x10000000i +#define ITEM_UNUSED30 0x20000000i +#define ITEM_UNUSED31 0x40000000i +#define ITEM_UNUSED32 0x80000000i diff --git a/src/shared/player.qc b/src/shared/player.qc new file mode 100644 index 0000000..e3b1ae8 --- /dev/null +++ b/src/shared/player.qc @@ -0,0 +1,464 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * 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. + */ + +/* all potential SendFlags bits we can possibly send */ +enumflags +{ + PLAYER_KEEPALIVE, + PLAYER_MODELINDEX, + PLAYER_ORIGIN, + PLAYER_ORIGIN_Z, + PLAYER_ANGLES_X, + PLAYER_ANGLES_Y, + PLAYER_ANGLES_Z, + PLAYER_VELOCITY, + PLAYER_VELOCITY_Z, + PLAYER_FLAGS, + PLAYER_WEAPON, + PLAYER_ITEMS, + PLAYER_HEALTH, + PLAYER_ARMOR, + PLAYER_MOVETYPE, + PLAYER_VIEWOFS, + PLAYER_BASEFRAME, + PLAYER_FRAME, + PLAYER_AMMO1, + PLAYER_AMMO2, + PLAYER_AMMO3, + PLAYER_UNUSED1, + PLAYER_UNUSED2 +}; + +noref int input_sequence; +class player:base_player +{ + /* Weapon specific */ + int bradnailer_mag; int bradnailer_mag_net; + int nailgun_mag; int nailgun_mag_net; + int shotgun_mag; int shotgun_mag_net; + int cmlwbr_mag; int cmlwbr_mag_net; + int xs_mag; int xs_mag_net; + int satchel_chg; int satchel_chg_net; + + int ammo_nail; int ammo_nail_net; + int ammo_buckshot; int ammo_buckshot_net; + int ammo_bolts; int ammo_bolts_net; + int ammo_xencandy; int ammo_xencandy_net; + int ammo_satchel; int ammo_satchel_net; + +#ifdef CLIENT + /* External model */ + entity p_model; + int p_hand_bone; + int p_model_bone; + float lastweapon; + + virtual void(void) gun_offset; + virtual void(void) draw; + virtual float() predraw; + virtual void(void) postdraw; + virtual void(float) ReceiveEntity; + virtual void(void) PredictPreFrame; + virtual void(void) PredictPostFrame; +#else + virtual void(void) EvaluateEntity; + virtual float(entity, float) SendEntity; +#endif +}; + +#ifdef CLIENT +void Weapons_AmmoUpdate(entity); +/* +================= +player::ReceiveEntity +================= +*/ +void +player::ReceiveEntity(float new) +{ + float fl; + if (new == FALSE) { + /* Go through all the physics code between the last received frame + * and the newest frame and keep the changes this time around instead + * of rolling back, because we'll apply the new server-verified values + * right after anyway. */ + /* FIXME: splitscreen */ + if (entnum == player_localentnum) { + /* FIXME: splitscreen */ + pSeat = &g_seats[0]; + + for (int i = sequence+1; i <= servercommandframe; i++) { + /* ...maybe the input state is too old? */ + if (!getinputstate(i)) { + break; + } + input_sequence = i; + PMove_Run(); + } + + /* any differences in things that are read below are now + * officially from prediction misses. */ + } + } + + /* seed for our prediction table */ + sequence = servercommandframe; + + fl = readfloat(); + + /* HACK: we need to make this more reliable */ + if (fl == UPDATE_ALL) { + /* we respawned */ + gravity = __NULL__; + } + + if (fl & PLAYER_MODELINDEX) + modelindex = readshort(); + + if (fl & PLAYER_ORIGIN) { + origin[0] = readcoord(); + origin[1] = readcoord(); + } + + if (fl & PLAYER_ORIGIN_Z) + origin[2] = readcoord(); + if (fl & PLAYER_ANGLES_X) + pitch = readfloat(); + if (fl & PLAYER_ANGLES_Y) + angles[1] = readfloat(); + if (fl & PLAYER_ANGLES_Z) + angles[2] = readfloat(); + + if (fl & PLAYER_VELOCITY) { + velocity[0] = readcoord(); + velocity[1] = readcoord(); + } + + if (fl & PLAYER_VELOCITY_Z) + velocity[2] = readcoord(); + if (fl & PLAYER_FLAGS) { + flags = readfloat(); + gflags = readfloat(); + } + if (fl & PLAYER_WEAPON) + activeweapon = readbyte(); + if (fl & PLAYER_ITEMS) + g_items = (__variant)readfloat(); + if (fl & PLAYER_HEALTH) + health = readbyte(); + if (fl & PLAYER_ARMOR) + armor = readbyte(); + if (fl & PLAYER_MOVETYPE) + movetype = readbyte(); + if (fl & PLAYER_VIEWOFS) + view_ofs[2] = readfloat(); + if (fl & PLAYER_BASEFRAME) + baseframe = readbyte(); + if (fl & PLAYER_FRAME) { + frame = readbyte(); + frame1time = 0.0f; + frame2time = 0.0f; + } + + if (fl & PLAYER_AMMO1) { + bradnailer_mag = readbyte(); + nailgun_mag = readbyte(); + shotgun_mag = readbyte(); + cmlwbr_mag = readbyte(); + xs_mag = readbyte(); + satchel_chg = readbyte(); + } + + if (fl & PLAYER_AMMO2) { + ammo_nail = readbyte(); + ammo_buckshot = readbyte(); + ammo_bolts = readbyte(); + ammo_xencandy = readbyte(); + ammo_satchel = readbyte(); + } + + if (fl & PLAYER_AMMO3) { + } + + if (fl & PLAYER_AMMO1 || fl & PLAYER_AMMO2 || fl & PLAYER_AMMO3) + Weapons_AmmoUpdate(this); + + setorigin(this, origin); +} + +/* +================= +player::PredictPostFrame + +Save the last valid server values away in the _net variants of each field +so we can roll them back later. +================= +*/ +void +player::PredictPreFrame(void) +{ + bradnailer_mag_net = bradnailer_mag; + nailgun_mag_net = nailgun_mag; + shotgun_mag_net = shotgun_mag; + cmlwbr_mag_net = cmlwbr_mag; + xs_mag_net = xs_mag; + satchel_chg_net = satchel_chg; + + ammo_nail_net = ammo_nail; + ammo_buckshot_net = ammo_buckshot; + ammo_bolts_net = ammo_bolts; + ammo_xencandy_net = ammo_xencandy; + ammo_satchel_net = ammo_satchel; +} + +/* +================= +player::PredictPostFrame + +Where we roll back our values to the ones last sent/verified by the server. +================= +*/ +void +player::PredictPostFrame(void) +{ + bradnailer_mag = bradnailer_mag_net; + nailgun_mag = nailgun_mag_net; + shotgun_mag = shotgun_mag_net; + cmlwbr_mag = cmlwbr_mag_net; + xs_mag = xs_mag_net; + satchel_chg = satchel_chg_net; + + ammo_nail = ammo_nail_net; + ammo_buckshot = ammo_buckshot_net; + ammo_bolts = ammo_bolts_net; + ammo_xencandy = ammo_xencandy_net; + ammo_satchel = ammo_satchel_net; +} + +#else +void +player::EvaluateEntity(void) +{ + SendFlags |= PLAYER_KEEPALIVE; + + if (old_modelindex != modelindex) + SendFlags |= PLAYER_MODELINDEX; + + if (old_origin[0] != origin[0]) + SendFlags |= PLAYER_ORIGIN; + + if (old_origin[1] != origin[1]) + SendFlags |= PLAYER_ORIGIN; + + if (old_origin[2] != origin[2]) + SendFlags |= PLAYER_ORIGIN_Z; + + if (old_angles[0] != v_angle[0]) + SendFlags |= PLAYER_ANGLES_X; + + if (old_angles[1] != angles[1]) + SendFlags |= PLAYER_ANGLES_Y; + + if (old_angles[2] != angles[2]) + SendFlags |= PLAYER_ANGLES_Z; + + if (old_velocity[0] != velocity[0]) + SendFlags |= PLAYER_VELOCITY; + + if (old_velocity[1] != velocity[1]) + SendFlags |= PLAYER_VELOCITY; + + if (old_velocity[2] != velocity[2]) + SendFlags |= PLAYER_VELOCITY_Z; + + if (old_flags != flags) + SendFlags |= PLAYER_FLAGS; + + if (old_gflags != gflags) + SendFlags |= PLAYER_FLAGS; + + if (old_activeweapon != activeweapon) + SendFlags |= PLAYER_WEAPON; + + if (old_items != g_items) + SendFlags |= PLAYER_ITEMS; + + if (old_health != health) + SendFlags |= PLAYER_HEALTH; + + if (old_armor != armor) + SendFlags |= PLAYER_ARMOR; + + if (old_movetype != movetype) + SendFlags |= PLAYER_MOVETYPE; + + if (old_viewofs != view_ofs[2]) + SendFlags |= PLAYER_VIEWOFS; + + if (old_baseframe != baseframe) + SendFlags |= PLAYER_BASEFRAME; + + if (old_frame != frame) + SendFlags |= PLAYER_FRAME; + + old_modelindex = modelindex; + old_origin = origin; + old_angles = angles; + old_angles[0] = v_angle[0]; + old_velocity = velocity; + old_flags = flags; + old_gflags = gflags; + old_activeweapon = activeweapon; + old_items = g_items; + old_health = health; + old_armor = armor; + old_movetype = movetype; + old_viewofs = view_ofs[2]; + old_baseframe = baseframe; + old_frame = frame; + + if (bradnailer_mag_net != bradnailer_mag) + SendFlags |= PLAYER_AMMO1; + if (nailgun_mag_net != nailgun_mag) + SendFlags |= PLAYER_AMMO1; + if (shotgun_mag_net != shotgun_mag) + SendFlags |= PLAYER_AMMO1; + if (cmlwbr_mag_net != cmlwbr_mag) + SendFlags |= PLAYER_AMMO1; + if (xs_mag_net != xs_mag) + SendFlags |= PLAYER_AMMO1; + if (satchel_chg_net != satchel_chg) + SendFlags |= PLAYER_AMMO1; + + if (ammo_nail_net != ammo_nail) + SendFlags |= PLAYER_AMMO2; + if (ammo_buckshot_net != ammo_buckshot) + SendFlags |= PLAYER_AMMO2; + if (ammo_bolts_net != ammo_bolts) + SendFlags |= PLAYER_AMMO2; + if (ammo_xencandy_net != ammo_xencandy) + SendFlags |= PLAYER_AMMO2; + if (ammo_satchel_net != ammo_satchel) + SendFlags |= PLAYER_AMMO2; + + bradnailer_mag_net = bradnailer_mag; + nailgun_mag_net = nailgun_mag; + shotgun_mag_net = shotgun_mag; + cmlwbr_mag_net = cmlwbr_mag; + xs_mag_net = xs_mag; + satchel_chg_net = satchel_chg; + + ammo_nail_net = ammo_nail; + ammo_buckshot_net = ammo_buckshot; + ammo_bolts_net = ammo_bolts; + ammo_xencandy_net = ammo_xencandy; + ammo_satchel_net = ammo_satchel; +} + +/* +================= +player::SendEntity +================= +*/ +float +player::SendEntity(entity ePEnt, float fChanged) +{ + if (health <= 0 && ePEnt != this) { + return FALSE; + } + + if (clienttype(ePEnt) != CLIENTTYPE_REAL) { + return FALSE; + } + + if (ePEnt != self) { + fChanged &= ~PLAYER_ITEMS; + fChanged &= ~PLAYER_HEALTH; + fChanged &= ~PLAYER_ARMOR; + fChanged &= ~PLAYER_VIEWOFS; + fChanged &= ~PLAYER_AMMO1; + fChanged &= ~PLAYER_AMMO2; + fChanged &= ~PLAYER_AMMO3; + } + + WriteByte(MSG_ENTITY, ENT_PLAYER); + WriteFloat(MSG_ENTITY, fChanged); + + /* really trying to get our moneys worth with 23 bits of mantissa */ + if (fChanged & PLAYER_MODELINDEX) + WriteShort(MSG_ENTITY, modelindex); + if (fChanged & PLAYER_ORIGIN) { + WriteCoord(MSG_ENTITY, origin[0]); + WriteCoord(MSG_ENTITY, origin[1]); + } + if (fChanged & PLAYER_ORIGIN_Z) + WriteCoord(MSG_ENTITY, origin[2]); + if (fChanged & PLAYER_ANGLES_X) + WriteFloat(MSG_ENTITY, v_angle[0]); + if (fChanged & PLAYER_ANGLES_Y) + WriteFloat(MSG_ENTITY, angles[1]); + if (fChanged & PLAYER_ANGLES_Z) + WriteFloat(MSG_ENTITY, angles[2]); + if (fChanged & PLAYER_VELOCITY) { + WriteCoord(MSG_ENTITY, velocity[0]); + WriteCoord(MSG_ENTITY, velocity[1]); + } + if (fChanged & PLAYER_VELOCITY_Z) + WriteCoord(MSG_ENTITY, velocity[2]); + if (fChanged & PLAYER_FLAGS) { + WriteFloat(MSG_ENTITY, flags); + WriteFloat(MSG_ENTITY, gflags); + } + if (fChanged & PLAYER_WEAPON) + WriteByte(MSG_ENTITY, activeweapon); + if (fChanged & PLAYER_ITEMS) + WriteFloat(MSG_ENTITY, (__variant)g_items); + if (fChanged & PLAYER_HEALTH) + WriteByte(MSG_ENTITY, bound(0, health, 255)); + if (fChanged & PLAYER_ARMOR) + WriteByte(MSG_ENTITY, armor); + if (fChanged & PLAYER_MOVETYPE) + WriteByte(MSG_ENTITY, movetype); + if (fChanged & PLAYER_VIEWOFS) + WriteFloat(MSG_ENTITY, view_ofs[2]); + if (fChanged & PLAYER_BASEFRAME) + WriteByte(MSG_ENTITY, baseframe); + if (fChanged & PLAYER_FRAME) + WriteByte(MSG_ENTITY, frame); + + if (fChanged & PLAYER_AMMO1) { + WriteByte(MSG_ENTITY, bradnailer_mag); + WriteByte(MSG_ENTITY, nailgun_mag); + WriteByte(MSG_ENTITY, shotgun_mag); + WriteByte(MSG_ENTITY, cmlwbr_mag); + WriteByte(MSG_ENTITY, xs_mag); + WriteByte(MSG_ENTITY, satchel_chg); + } + + if (fChanged & PLAYER_AMMO2) { + WriteByte(MSG_ENTITY, ammo_nail); + WriteByte(MSG_ENTITY, ammo_buckshot); + WriteByte(MSG_ENTITY, ammo_bolts); + WriteByte(MSG_ENTITY, ammo_xencandy); + WriteByte(MSG_ENTITY, ammo_satchel); + } + + if (fChanged & PLAYER_AMMO3) { + } + + return TRUE; +} +#endif diff --git a/src/shared/w_bradnailer.qc b/src/shared/w_bradnailer.qc new file mode 100644 index 0000000..20060ef --- /dev/null +++ b/src/shared/w_bradnailer.qc @@ -0,0 +1,268 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * 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. + */ + +/*QUAKED weapon_bradnailer (0 0 1) (-16 -16 0) (16 16 32) +"model" "models/w_bradnailer.mdl" + +Poke646 (2001) ENTITY + +Handheld Nailgun that kills like a pistol + +*/ + +enum +{ + BNAIL_IDLE1, + BNAIL_IDLE2, + BNAIL_IDLE3, + BNAIL_SHOOT, + BNAIL_UNUSED1, + BNAIL_RELOAD, + BNAIL_UNUSED2, + BNAIL_DRAW, + BNAIL_HOLSTER, + BNAIL_UNUSED3, + BNAIL_TILT, + BNAIL_TILTBACK, + BNAIL_SHOOT2 +}; + +void +w_bradnailer_precache(void) +{ +#ifdef SERVER + Sound_Precache("weapon_bradnailer.fire"); + Sound_Precache("weapon_bradnailer.hitbody"); +#endif + + precache_model("models/nail.mdl"); + precache_model("models/v_bradnailer.mdl"); + precache_model("models/w_bradnailer.mdl"); +} + +void +w_bradnailer_updateammo(player pl) +{ + Weapons_UpdateAmmo(pl, pl.bradnailer_mag, pl.ammo_nail, -1); +} + +string +w_bradnailer_wmodel(void) +{ + return "models/w_bradnailer.mdl"; +} + +int +w_bradnailer_pickup(int new, int startammo) +{ +/* TODO */ + return TRUE; +} + +void +w_bradnailer_draw(void) +{ + Weapons_SetModel("models/v_bradnailer.mdl"); + Weapons_ViewAnimation(BNAIL_DRAW); +} + +void +w_bradnailer_holster(void) +{ + Weapons_ViewAnimation(BNAIL_HOLSTER); +} + +#ifdef SERVER +void +w_bradnailer_shootnail(void) +{ + player pl = (player)self; + static void Nail_Touch(void) { + FX_Spark(self.origin, trace_plane_normal); + if (other.takedamage == DAMAGE_YES) { + Damage_Apply(other, self.owner, 15, WEAPON_BRADNAILER, DMG_GENERIC); + Sound_Play(self, CHAN_WEAPON, "weapon_bradnailer.hitbody"); + } else { + Sound_Play(self, CHAN_WEAPON, "weapon_crossbow.hit"); + } + remove(self); + } + + Weapons_MakeVectors(); + entity nail = spawn(); + setmodel(nail, "models/nail.mdl"); + setorigin(nail, Weapons_GetCameraPos() + (v_forward * 16)); + nail.owner = self; + nail.velocity = v_forward * 2000; + nail.movetype = MOVETYPE_FLY; + nail.solid = SOLID_BBOX; + nail.angles = vectoangles(nail.velocity); + nail.avelocity[2] = 10; + nail.touch = Nail_Touch; + setsize(nail, [0,0,0], [0,0,0]); + + if (self.flags & FL_CROUCHING) + Animation_PlayerTopTemp(ANIM_SHOOT1HAND, 0.45f); + else + Animation_PlayerTopTemp(ANIM_CR_SHOOT1HAND, 0.45f); + + Sound_Play(pl, CHAN_WEAPON, "weapon_bradnailer.fire"); +} +#endif + +void +w_bradnailer_primary(void) +{ + player pl = (player)self; + + if (pl.w_attack_next > 0.0) { + return; + } + +#ifdef SERVER + w_bradnailer_shootnail(); +#else + Weapons_ViewPunchAngle([-2,0,0]); + Weapons_ViewAnimation(BNAIL_SHOOT); +#endif + + pl.w_attack_next = 0.3f; + pl.w_idle_next = 5.0f; +} + +void +w_bradnailer_secondary(void) +{ + player pl = (player)self; + + if (pl.w_attack_next > 0.0) { + return; + } + + /* Hack */ + if (pl.a_ammo3 == 0) { + pl.a_ammo3 = 1; + Weapons_ViewAnimation(BNAIL_TILT); + pl.w_attack_next = 0.4f; + pl.w_idle_next = pl.w_attack_next; + return; + } + +#ifdef SERVER + w_bradnailer_shootnail(); +#else + Weapons_ViewPunchAngle([-2,0,0]); + Weapons_ViewAnimation(BNAIL_SHOOT2); +#endif + + pl.w_attack_next = 0.2f; + pl.w_idle_next = pl.w_attack_next; +} + + +void +w_bradnailer_release(void) +{ + player pl = (player)self; + + if (pl.w_idle_next > 0.0) { + return; + } + + if (pl.a_ammo3 == 1) { + pl.a_ammo3 = 0; + Weapons_ViewAnimation(BNAIL_TILTBACK); + pl.w_attack_next = 0.4f; + pl.w_idle_next = pl.w_attack_next; + return; + } + + int r = (float)input_sequence % 3; + switch (r) { + case 0: + Weapons_ViewAnimation(BNAIL_IDLE1); + break; + case 1: + Weapons_ViewAnimation(BNAIL_IDLE2); + break; + case 2: + Weapons_ViewAnimation(BNAIL_IDLE3); + break; + } + pl.w_idle_next = 10.0f; +} + +void +w_bradnailer_hudpic(int selected, vector pos, float a) +{ +#ifdef CLIENT + if (selected) { + drawsubpic( + pos, + [170,45], + "sprites/hud640_01.spr_0.tga", + [0,45/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } else { + drawsubpic( + pos, + [170,45], + "sprites/hud640_01.spr_0.tga", + [0,45/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } +#endif +} + +weapon_t w_bradnailer = +{ + .name = "bradnailer", + .id = ITEM_BRADNAILER, + .slot = 1, + .slot_pos = 0, + .draw = w_bradnailer_draw, + .holster = w_bradnailer_holster, + .primary = w_bradnailer_primary, + .secondary = w_bradnailer_secondary, + .reload = __NULL__, + .release = w_bradnailer_release, + .crosshair = __NULL__, + .precache = w_bradnailer_precache, + .pickup = w_bradnailer_pickup, + .updateammo = w_bradnailer_updateammo, + .wmodel = w_bradnailer_wmodel, + .pmodel = __NULL__, + .deathmsg = __NULL__, + .aimanim = __NULL__, + .hudpic = w_bradnailer_hudpic +}; + +/* entity definitions for pickups */ +#ifdef SERVER +void +weapon_bradnailer(void) +{ + Weapons_InitItem(WEAPON_BRADNAILER); +} +#endif diff --git a/src/shared/w_cmlwbr.qc b/src/shared/w_cmlwbr.qc new file mode 100644 index 0000000..f9dfda3 --- /dev/null +++ b/src/shared/w_cmlwbr.qc @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * 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. + */ + +enum +{ + CML_IDLE1, + CML_IDLE2, + CML_IDLE3, + CML_IDLE4, + CML_FIRE1, + CML_RELOAD, + CML_DRAWBACK, + CML_UNDRAW, + CML_DRAW, + CML_UNUSED, + CML_HOLSTER +}; + +void +w_cmlwbr_precache(void) +{ + precache_sound("weapons/cmlwbr_drawback.wav"); + precache_sound("weapons/cmlwbr_fire.wav"); + precache_sound("weapons/cmlwbr_reload.wav"); + precache_sound("weapons/cmlwbr_undraw.wav"); + precache_sound("weapons/cmlwbr_zoom.wav"); + + precache_model("models/v_cmlwbr.mdl"); + precache_model("models/w_crossbow.mdl"); +} + +void +w_cmlwbr_updateammo(player pl) +{ +#ifdef SERVER + Weapons_UpdateAmmo(pl, __NULL__, __NULL__, __NULL__); +#endif +} + +string +w_cmlwbr_wmodel(void) +{ + return "models/w_crossbow.mdl"; +} + +void +w_cmlwbr_draw(void) +{ + Weapons_SetModel("models/v_cmlwbr.mdl"); + Weapons_ViewAnimation(CML_DRAW); +} + +void +w_cmlwbr_holster(void) +{ + Weapons_ViewAnimation(CML_HOLSTER); +} + +void +w_cmlwbr_primary(void) +{ +/* TODO, attack slows to crawl & player breathes */ +} + +void +w_cmlwbr_secondary(void) +{ + +} + + +void +w_cmlwbr_release(void) +{ + +} + +void +w_cmlwbr_hudpic(int selected, vector pos, float a) +{ +#ifdef CLIENT + if (selected) { + drawsubpic( + pos, + [170,45], + "sprites/hud640_03.spr_0.tga", + [0,45/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } else { + drawsubpic( + pos, + [170,45], + "sprites/hud640_03.spr_0.tga", + [0,45/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } +#endif +} + +weapon_t w_cmlwbr = +{ + .name = "cmlwbr", + .id = ITEM_CMLWBR, + .slot = 2, + .slot_pos = 1, + .draw = w_cmlwbr_draw, + .holster = w_cmlwbr_holster, + .primary = w_cmlwbr_primary, + .secondary = w_cmlwbr_secondary, + .reload = __NULL__, + .release = w_cmlwbr_release, + .crosshair = __NULL__, + .precache = w_cmlwbr_precache, + .pickup = __NULL__, + .updateammo = w_cmlwbr_updateammo, + .wmodel = w_cmlwbr_wmodel, + .pmodel = __NULL__, + .deathmsg = __NULL__, + .aimanim = __NULL__, + .hudpic = w_cmlwbr_hudpic +}; + +/* entity definitions for pickups */ +#ifdef SERVER +void +weapon_cmlwbr(void) +{ + Weapons_InitItem(WEAPON_CMLWBR); +} +#endif diff --git a/src/shared/w_heaterpipe.qc b/src/shared/w_heaterpipe.qc new file mode 100644 index 0000000..ff9557e --- /dev/null +++ b/src/shared/w_heaterpipe.qc @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * 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. + */ + +enum +{ + HPIPE_IDLE1, + HPIPE_DRAW, + HPIPE_HOLSTER, + HPIPE_ATTACK1, + HPIPE_ATTACK1MISS, + HPIPE_ATTACK2MISS, + HPIPE_ATTACK2, + HPIPE_ATTACK3MISS, + HPIPE_ATTACK3 +}; + +void +w_heaterpipe_precache(void) +{ + precache_sound("weapons/pipe_hit1.wav"); + precache_sound("weapons/pipe_hit2.wav"); + precache_sound("weapons/pipe_miss.wav"); + + precache_model("models/v_heaterpipe.mdl"); + precache_model("models/w_heaterpipe.mdl"); +} + +void +w_heaterpipe_updateammo(player pl) +{ +#ifdef SERVER + Weapons_UpdateAmmo(pl, __NULL__, __NULL__, __NULL__); +#endif +} + +string +w_heaterpipe_wmodel(void) +{ + return "models/w_heaterpipe.mdl"; +} + +void +w_heaterpipe_draw(void) +{ + Weapons_SetModel("models/v_heaterpipe.mdl"); + Weapons_ViewAnimation(HPIPE_DRAW); +} + +void +w_heaterpipe_holster(void) +{ + Weapons_ViewAnimation(HPIPE_HOLSTER); +} + +void +w_heaterpipe_primary(void) +{ +/* TODO, attack slows to crawl & player breathes */ +} + +void +w_heaterpipe_release(void) +{ + +} + +void +w_heaterpipe_hudpic(int selected, vector pos, float a) +{ +#ifdef CLIENT + if (selected) { + drawsubpic( + pos, + [170,45], + "sprites/hud640_01.spr_0.tga", + [0,45/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } else { + drawsubpic( + pos, + [170,45], + "sprites/hud640_01.spr_0.tga", + [0,45/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } +#endif +} + +weapon_t w_heaterpipe = +{ + .name = "heaterpipe", + .id = ITEM_HEATERPIPE, + .slot = 0, + .slot_pos = 0, + .draw = w_heaterpipe_draw, + .holster = w_heaterpipe_holster, + .primary = w_heaterpipe_primary, + .secondary = __NULL__, + .reload = __NULL__, + .release = w_heaterpipe_release, + .crosshair = __NULL__, + .precache = w_heaterpipe_precache, + .pickup = __NULL__, + .updateammo = w_heaterpipe_updateammo, + .wmodel = w_heaterpipe_wmodel, + .pmodel = __NULL__, + .deathmsg = __NULL__, + .aimanim = __NULL__, + .hudpic = w_heaterpipe_hudpic +}; + +/* entity definitions for pickups */ +#ifdef SERVER +void +weapon_heaterpipe(void) +{ + Weapons_InitItem(WEAPON_HEATERPIPE); +} +#endif diff --git a/src/shared/w_nailgun.qc b/src/shared/w_nailgun.qc new file mode 100644 index 0000000..bbe6d47 --- /dev/null +++ b/src/shared/w_nailgun.qc @@ -0,0 +1,196 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * 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. + */ + +enum +{ + NAIL_IDLE1, + NAIL_IDLE2, + NAIL_UNUSED1, + NAIL_RELOAD, + NAIL_DRAW, + NAIL_SHOOT +}; + +void +w_nailgun_precache(void) +{ + precache_sound("weapons/brad_hit1.wav"); + precache_sound("weapons/brad_hit2.wav"); + precache_sound("weapons/nailgun.wav"); + + precache_model("models/nail.mdl"); + precache_model("models/v_nailgun.mdl"); + precache_model("models/w_nailgun.mdl"); +} + +void +w_nailgun_updateammo(player pl) +{ +#ifdef SERVER + Weapons_UpdateAmmo(pl, __NULL__, __NULL__, __NULL__); +#endif +} + +string +w_nailgun_wmodel(void) +{ + return "models/w_nailgun.mdl"; +} + +void +w_nailgun_draw(void) +{ + Weapons_SetModel("models/v_nailgun.mdl"); + Weapons_ViewAnimation(NAIL_DRAW); +} + +void +w_nailgun_primary(void) +{ + player pl = (player)self; + + if (pl.w_attack_next > 0.0) { + return; + } + +#ifdef SERVER + static void Nail_Touch(void) { + FX_Spark(self.origin, trace_plane_normal); + if (other.takedamage == DAMAGE_YES) { + Damage_Apply(other, self.owner, 15, WEAPON_NAILGUN, DMG_GENERIC); + if (random() < 0.5) { + Weapons_PlaySound(self, CHAN_WEAPON, "weapons/brad_hit1.wav", 1, ATTN_NORM); + } else { + Weapons_PlaySound(self, CHAN_WEAPON, "weapons/brad_hit2.wav", 1, ATTN_NORM); + } + } else { + Weapons_PlaySound(self, CHAN_WEAPON, "weapons/xbow_hit1.wav", 1, ATTN_NORM); + } + remove(self); + } + + Weapons_MakeVectors(); + entity nail = spawn(); + setmodel(nail, "models/nail.mdl"); + setorigin(nail, Weapons_GetCameraPos() + (v_forward * 16)); + nail.owner = self; + nail.velocity = v_forward * 2000; + nail.movetype = MOVETYPE_FLY; + nail.solid = SOLID_BBOX; + nail.angles = vectoangles(nail.velocity); + nail.avelocity[2] = 10; + nail.touch = Nail_Touch; + setsize(nail, [0,0,0], [0,0,0]); + + if (self.flags & FL_CROUCHING) + Animation_PlayerTopTemp(ANIM_SHOOT1HAND, 0.45f); + else + Animation_PlayerTopTemp(ANIM_CR_SHOOT1HAND, 0.45f); + + Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/nailgun.wav", 1, ATTN_NORM); + +#else + + Weapons_ViewPunchAngle([-2,0,0]); + Weapons_ViewAnimation(NAIL_SHOOT); + + +#endif + + pl.w_attack_next = 0.1f; + pl.w_idle_next = 5.0f; +} + +void +w_nailgun_release(void) +{ + + player pl = (player)self; + if (pl.w_idle_next > 0) { + return; + } + + if (random() < 0.5) { + Weapons_ViewAnimation(NAIL_IDLE1); + } else { + Weapons_ViewAnimation(NAIL_IDLE2); + } + pl.w_idle_next = 10.0f; + +} + + +void +w_nailgun_hudpic(int selected, vector pos, float a) +{ +#ifdef CLIENT + if (selected) { + drawsubpic( + pos, + [170,45], + "sprites/hud640_01.spr_0.tga", + [0,45/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } else { + drawsubpic( + pos, + [170,45], + "sprites/hud640_01.spr_0.tga", + [0,45/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } +#endif +} + +weapon_t w_nailgun = +{ + .name = "nailgun", + .id = ITEM_NAILGUN, + .slot = 1, + .slot_pos = 1, + .draw = w_nailgun_draw, + .holster = __NULL__, + .primary = w_nailgun_primary, + .secondary = __NULL__, + .reload = __NULL__, + .release = w_nailgun_release, + .crosshair = __NULL__, + .precache = w_nailgun_precache, + .pickup = __NULL__, + .updateammo = w_nailgun_updateammo, + .wmodel = w_nailgun_wmodel, + .pmodel = __NULL__, + .deathmsg = __NULL__, + .aimanim = __NULL__, + .hudpic = w_nailgun_hudpic +}; + +/* entity definitions for pickups */ +#ifdef SERVER +void +weapon_nailgun(void) +{ + Weapons_InitItem(WEAPON_NAILGUN); +} +#endif diff --git a/src/shared/w_pipebomb.qc b/src/shared/w_pipebomb.qc new file mode 100644 index 0000000..0057631 --- /dev/null +++ b/src/shared/w_pipebomb.qc @@ -0,0 +1,276 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * Copyright (c) 2019-2020 Gethyn ThomasQuail + * + * 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. + */ + +/*QUAKED weapon_pipebomb (0 0 1) (-16 -16 0) (16 16 32) +"model" "models/w_pipebomb.mdl" + +Poke646 (2001) ENTITY + +Pipebomb Weapon, literal copy of Half-Life's Satchel Weapon + +*/ + +enum +{ + SATCHEL_IDLE, + SATCHEL_FIDGET, + SATCHEL_DRAW, + SATCHEL_THROW +}; + +enum +{ + RADIO_IDLE, + RADIO_FIDGET, + RADIO_DRAW, + RADIO_USE, + RADIO_HOLSTER +}; + +void w_pipebomb_updateammo(player pl) +{ + w_satchel_updateammo(pl); +} +string w_pipebomb_wmodel(void) +{ + return "models/w_pipebomb.mdl"; +} +string w_pipebomb_pmodel(void) +{ + return "models/p_pipebomb.mdl"; +} +string w_pipebomb_deathmsg(void) +{ + return "%s blew up %s with a pipebomb."; +} +void w_pipebomb_precache(void) +{ +#ifdef SERVER + Sound_Precache("weapon_satchel.bounce"); +#endif + precache_model("models/w_pipebomb.mdl"); + precache_model("models/v_pipebomb.mdl"); + precache_model("models/v_pipebomb_watch.mdl"); + precache_model("models/p_pipebomb.mdl"); +} + +int w_pipebomb_pickup(int new, int startammo) +{ + return w_satchel_pickup(new, startammo); +} + +void w_pipebomb_draw(void) +{ + Weapons_SetModel("models/v_pipebomb.mdl"); + Weapons_ViewAnimation(SATCHEL_DRAW); +#ifdef SERVER + player pl = (player)self; + Weapons_UpdateAmmo(pl, pl.satchel_chg, pl.ammo_satchel, __NULL__); +#endif +} + +void w_pipebomb_holster(void) +{ + +} + +#ifdef SERVER +void s_pipebomb_drop(entity master, vector src, vector vel) +{ + static void s_pipebomb_touch(void) + { + if (other == world) + Sound_Play(self, CHAN_BODY, "weapon_satchel.bounce"); + } + entity satch; + satch = spawn(); + satch.owner = master; + satch.classname = "satchel"; + satch.movetype = MOVETYPE_BOUNCE; + satch.solid = SOLID_BBOX; + satch.frame = 1; + satch.gravity = 0.5f; + satch.friction = 0.8f; + satch.velocity = vel; + satch.avelocity = [0,400,0]; + satch.touch = s_pipebomb_touch; + setmodel(satch, "models/w_satchel.mdl"); + setsize(satch, [-4,-4,-4], [4,4,4]); + setorigin(satch, src); +} +void s_pipebomb_detonate(entity master) +{ + for (entity b = world; (b = find(b, ::classname, "satchel"));) { + if (b.owner == master) { + float dmg = Skill_GetValue("plr_satchel", 150); + FX_Explosion(b.origin); + Damage_Radius(b.origin, master, dmg, dmg * 2.5f, TRUE, WEAPON_SATCHEL); + sound(b, CHAN_WEAPON, sprintf("weapons/explode%d.wav", floor(random() * 2) + 3), 1, ATTN_NORM); + remove(b); + } + } +} +#endif + +void w_pipebomb_primary(void) +{ + player pl = (player)self; + + if (pl.w_attack_next) { + return; + } + + /* Ammo check */ +#ifdef CLIENT + if (pl.satchel_chg <= 0 && pl.ammo_satchel <= 0) { + return; + } +#else + if (pl.satchel_chg <= 0 && pl.ammo_satchel <= 0) { + return; + } +#endif + + if (pl.satchel_chg <= 0) { + Weapons_ViewAnimation(RADIO_DRAW); + } else { + Weapons_ViewAnimation(RADIO_USE); + } + +#ifdef SERVER + if (!pl.satchel_chg) { + vector throw; + + Weapons_MakeVectors(); + throw = pl.velocity + (v_forward * 274); + s_pipebomb_drop(self, pl.origin, throw); + pl.satchel_chg++; + pl.ammo_satchel--; + } else { + s_pipebomb_detonate(pl); + pl.satchel_chg = 0; + + if (pl.ammo_satchel <= 0) { + Weapons_RemoveItem(pl, WEAPON_SATCHEL); + } + } + Weapons_UpdateAmmo(pl, pl.satchel_chg, pl.ammo_satchel, __NULL__); +#else + setmodel(pSeat->m_eViewModel, "models/v_pipebomb_watch.mdl"); + pl.satchel_chg++; + pl.ammo_satchel--; +#endif + + pl.w_attack_next = 1.0f; + pl.w_idle_next = 1.0f; +} +void w_pipebomb_secondary(void) +{ + player pl = (player)self; + + if (pl.w_attack_next) { + return; + } + + /* Ammo check */ +#ifdef CLIENT + if (pl.ammo_satchel <= 0) { + return; + } +#else + if (pl.ammo_satchel <= 0) { + return; + } +#endif + +#ifdef SERVER + vector throw; + Weapons_MakeVectors(); + throw = pl.velocity + (v_forward * 274); + s_pipebomb_drop(self, pl.origin, throw); + pl.satchel_chg++; + pl.ammo_satchel--; + Weapons_UpdateAmmo(pl, pl.satchel_chg, pl.ammo_satchel, __NULL__); +#else + pl.satchel_chg++; + pl.ammo_satchel--; + setmodel(pSeat->m_eViewModel, "models/v_pipebomb_watch.mdl"); +#endif + + Weapons_ViewAnimation(RADIO_DRAW); + + pl.w_attack_next = 1.0f; + pl.w_idle_next = 2.5f; +} +void w_pipebomb_reload(void) +{ + +} +void w_pipebomb_release(void) +{ + w_satchel_release(); +} + +float w_pipebomb_aimanim(void) +{ + return w_satchel_aimanim(); +} + +void w_pipebomb_hud(void) +{ + w_satchel_holster(); +} + +void w_pipebomb_hudpic(int selected, vector pos, float a) +{ +#ifdef CLIENT + if (selected) { + drawsubpic(pos, [170,45], "sprites/640hud6.spr_0.tga", [0,45/256], [170/256,45/256], g_hud_color, a, DRAWFLAG_ADDITIVE); + } else { + drawsubpic(pos, [170,45], "sprites/640hud3.spr_0.tga", [0,45/256], [170/256,45/256], g_hud_color, a, DRAWFLAG_ADDITIVE); + } +#endif +} + +weapon_t w_pipebomb = +{ + .name = "pipebomb", + .id = ITEM_SATCHEL, + .slot = 4, + .slot_pos = 1, + .draw = w_pipebomb_draw, + .holster = w_pipebomb_holster, + .primary = w_pipebomb_primary, + .secondary = w_pipebomb_secondary, + .reload = __NULL__, + .release = w_pipebomb_release, + .crosshair = w_pipebomb_hud, + .precache = w_pipebomb_precache, + .pickup = w_pipebomb_pickup, + .updateammo = w_pipebomb_updateammo, + .wmodel = w_pipebomb_wmodel, + .pmodel = __NULL__, + .deathmsg = __NULL__, + .aimanim = w_pipebomb_aimanim, + .hudpic = w_pipebomb_hudpic +}; + +#ifdef SERVER +void weapon_pipebomb(void) { + Weapons_InitItem(WEAPON_SATCHEL); +} +#endif diff --git a/src/shared/w_shotgun.qc b/src/shared/w_shotgun.qc new file mode 100644 index 0000000..5d4e6af --- /dev/null +++ b/src/shared/w_shotgun.qc @@ -0,0 +1,280 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * 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. + */ + +enum +{ + SHOTGUN_IDLE1, + SHOTGUN_FIRE1, + SHOTGUN_RELOAD, + SHOTGUN_PUMP, + SHOTGUN_START_RELOAD, + SHOTGUN_DRAW, + SHOTGUN_HOLSTER, + SHOTGUN_IDLE2 +}; + +enum +{ + SHOTTY_IDLE, + SHOTTY_RELOAD_START, + SHOTTY_RELOAD, + SHOTTY_RELOAD_END +}; + +void w_shotgun_precache(void) +{ + precache_model("models/v_shotgun.mdl"); + precache_model("models/w_shotgun.mdl"); + precache_model("models/p_shotgun.mdl"); + precache_sound("weapons/sbarrel1.wav"); + precache_sound("weapons/dbarrel1.wav"); + precache_sound("weapons/reload3.wav"); + precache_sound("weapons/scock1.wav"); +} +void w_shotgun_updateammo(player pl) +{ +#ifdef SERVER + Weapons_UpdateAmmo(pl, pl.shotgun_mag, pl.ammo_buckshot, __NULL__); +#endif +} +string w_shotgun_wmodel(void) +{ + return "models/w_shotgun.mdl"; +} +string w_shotgun_pmodel(void) +{ + return "models/p_shotgun.mdl"; +} +string w_shotgun_deathmsg(void) +{ + return ""; +} + +int w_shotgun_pickup(int new, int startammo) +{ +#ifdef SERVER + player pl = (player)self; + + if (new) { + pl.shotgun_mag = 8; + } else { + if (pl.ammo_buckshot < 125) { + pl.ammo_buckshot = bound(0, pl.ammo_buckshot + 8, 125); + } else { + return FALSE; + } + } +#endif + return TRUE; +} + +void w_shotgun_draw(void) +{ + Weapons_SetModel("models/v_shotgun.mdl"); + Weapons_ViewAnimation(SHOTGUN_DRAW); +#ifdef SERVER + player pl = (player)self; + Weapons_UpdateAmmo(pl, pl.shotgun_mag, pl.ammo_buckshot, __NULL__); +#endif +} + +void w_shotgun_holster(void) +{ + Weapons_ViewAnimation(SHOTGUN_HOLSTER); +} +void w_shotgun_primary(void) +{ + player pl = (player)self; + if (pl.w_attack_next) { + return; + } + + if (pl.a_ammo3 > SHOTTY_IDLE) { + return; + } + + /* Ammo check */ +#ifdef SERVER + if (pl.shotgun_mag <= 0) { + return; + } +#else + if (pl.a_ammo1 <= 0) { + return; + } +#endif + +#ifdef SERVER + /* Singleplayer is more accurate */ + if (cvar("sv_playerslots") == 1) { + TraceAttack_FireBullets(6, pl.origin + pl.view_ofs, 5, [0.08716,0.08716], WEAPON_SHOTGUN); + } else { + TraceAttack_FireBullets(4, pl.origin + pl.view_ofs, 5, [0.08716,0.04362], WEAPON_SHOTGUN); + } + Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/dbarrel1.wav", 1, ATTN_NORM); + pl.shotgun_mag--; + Weapons_UpdateAmmo(pl, pl.shotgun_mag, pl.ammo_buckshot, __NULL__); +#else + View_SetMuzzleflash(MUZZLE_WEIRD); + Weapons_ViewPunchAngle([-5,0,0]); + pl.a_ammo1--; +#endif + Weapons_ViewAnimation(SHOTGUN_FIRE1); + + pl.w_attack_next = 1.1f; + pl.w_idle_next = 2.5f; +} +void w_shotgun_reload(void) +{ + player pl = (player)self; +#ifdef CLIENT + if (pl.a_ammo1 >= 8) { + return; + } + if (pl.a_ammo2 <= 0) { + return; + } +#else + if (pl.shotgun_mag >= 8) { + return; + } + if (pl.ammo_buckshot <= 0) { + return; + } +#endif + + if (pl.a_ammo3 > SHOTTY_IDLE) { + return; + } + pl.a_ammo3 = SHOTTY_RELOAD_START; + pl.w_idle_next = 0.0f; +} +void w_shotgun_release(void) +{ + player pl = (player)self; + + /* auto-reload if need be */ + if (pl.w_attack_next <= 0.0) + if (pl.a_ammo3 == SHOTTY_IDLE && pl.a_ammo1 == 0 && pl.a_ammo2 > 0) { + Weapons_Reload(); + return; + } + + if (pl.w_idle_next > 0.0) { + return; + } + + if (pl.a_ammo3 == SHOTTY_IDLE) { + int r = floor(random(0,2)); + switch (r) { + case 0: + Weapons_ViewAnimation(SHOTGUN_IDLE1); + break; + case 1: + Weapons_ViewAnimation(SHOTGUN_IDLE2); + break; + } + pl.w_idle_next = 15.0f; + } else if (pl.a_ammo3 == SHOTTY_RELOAD_START) { + Weapons_ViewAnimation(SHOTGUN_START_RELOAD); + pl.a_ammo3 = SHOTTY_RELOAD; + pl.w_idle_next = 0.65f; + } else if (pl.a_ammo3 == SHOTTY_RELOAD) { + Weapons_ViewAnimation(SHOTGUN_RELOAD); +#ifdef CLIENT + pl.a_ammo1++; + pl.a_ammo2--; + + if (pl.a_ammo2 <= 0 || pl.a_ammo1 >= 8) { + pl.a_ammo3 = SHOTTY_RELOAD_END; + } +#else + pl.shotgun_mag++; + pl.ammo_buckshot--; + Weapons_UpdateAmmo(pl, pl.shotgun_mag, pl.ammo_buckshot, pl.a_ammo3); + sound(pl, CHAN_WEAPON, "weapons/reload3.wav", 1.0, ATTN_NORM); + if (pl.ammo_buckshot <= 0 || pl.shotgun_mag >= 8) { + pl.a_ammo3 = SHOTTY_RELOAD_END; + } +#endif + pl.w_idle_next = 0.5f; + } else if (pl.a_ammo3 == SHOTTY_RELOAD_END) { + Weapons_ViewAnimation(SHOTGUN_PUMP); +#ifdef SERVER + sound(pl, CHAN_WEAPON, "weapons/scock1.wav", 1.0, ATTN_NORM); +#endif + pl.a_ammo3 = SHOTTY_IDLE; + pl.w_idle_next = 10.0f; + pl.w_attack_next = 0.5f; + } +} +void w_shotgun_crosshair(void) +{ +#ifdef CLIENT + static vector cross_pos; + cross_pos = (g_hudres / 2) + [-12,-12]; + drawsubpic(cross_pos, [24,24], "sprites/crosshairs.spr_0.tga", [48/128,24/128], [0.1875, 0.1875], [1,1,1], 1, DRAWFLAG_NORMAL); + HUD_DrawAmmo1(); + HUD_DrawAmmo2(); + vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; + drawsubpic(aicon_pos, [24,24], "sprites/640hud7.spr_0.tga", [72/256,72/128], [24/256, 24/128], g_hud_color, pSeat->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); +#endif +} + +float w_shotgun_aimanim(void) +{ + return self.flags & FL_CROUCHING ? ANIM_CR_AIMSHOTGUN : ANIM_AIMSHOTGUN; +} + +void w_shotgun_hudpic(int s, vector pos, float a) +{ +#ifdef CLIENT + if (s) { + drawsubpic(pos, [170,45], "sprites/640hud4.spr_0.tga", [0,180/256], [170/256,45/256], g_hud_color, a, DRAWFLAG_ADDITIVE); + } else { + drawsubpic(pos, [170,45], "sprites/640hud1.spr_0.tga", [0,180/256], [170/256,45/256], g_hud_color, a, DRAWFLAG_ADDITIVE); + } +#endif +} + +weapon_t w_shotgun = +{ + .name = "shotgun", + .id = ITEM_SHOTGUN, + .slot = 2, + .slot_pos = 1, + .draw = w_shotgun_draw, + .holster = w_shotgun_holster, + .primary = w_shotgun_primary, + .secondary = __NULL__, + .reload = w_shotgun_reload, + .release = w_shotgun_release, + .crosshair = __NULL__, + .precache = w_shotgun_precache, + .pickup = w_shotgun_pickup, + .updateammo = w_shotgun_updateammo, + .wmodel = w_shotgun_wmodel, + .pmodel = __NULL__, + .deathmsg = __NULL__, + .aimanim = __NULL__, + .hudpic = w_shotgun_hudpic +}; + +#ifdef SERVER +void weapon_shotgun(void) { + Weapons_InitItem(WEAPON_SHOTGUN); +} +#endif diff --git a/src/shared/w_xs.qc b/src/shared/w_xs.qc new file mode 100644 index 0000000..a8dacdc --- /dev/null +++ b/src/shared/w_xs.qc @@ -0,0 +1,153 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * 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. + */ + +enum +{ + XS_IDLE1, + XS_IDLE2, + XS_IDLE3, + XS_SPINUP, + XS_SPIN, + XS_FIRE1, + XS_FIRE2, + XS_HOLSTER, + XS_DRAW, + XS_RELOAD +}; + +void +w_xs_precache(void) +{ + precache_sound("weapons/xs_moan1.wav"); + precache_sound("weapons/xs_moan2.wav"); + precache_sound("weapons/xs_moan3.wav"); + precache_sound("weapons/xs_reload.wav"); + precache_sound("weapons/xs_shot.wav"); + precache_sound("weapons/xs_windup.wav"); + + precache_model("models/v_xs.mdl"); + precache_model("models/w_xs.mdl"); +} + +void +w_xs_updateammo(player pl) +{ +#ifdef SERVER + Weapons_UpdateAmmo(pl, __NULL__, __NULL__, __NULL__); +#endif +} + +string +w_xs_wmodel(void) +{ + return "models/w_xs.mdl"; +} + +void +w_xs_draw(void) +{ + Weapons_SetModel("models/v_xs.mdl"); + Weapons_ViewAnimation(XS_DRAW); +} + +void +w_xs_holster(void) +{ + Weapons_ViewAnimation(XS_HOLSTER); +} + +void +w_xs_primary(void) +{ +/* TODO */ +} + +void +w_xs_secondary(void) +{ + +/* TODO Charge up, uses ammo similar to gauss */ + +} + + +void +w_xs_release(void) +{ + +} + +void +w_xs_hudpic(int selected, vector pos, float a) +{ +#ifdef CLIENT + if (selected) { + drawsubpic( + pos, + [170,45], + "sprites/hud640_01.spr_0.tga", + [0,45/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } else { + drawsubpic( + pos, + [170,45], + "sprites/hud640_01.spr_0.tga", + [0,45/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } +#endif +} + +weapon_t w_xs = +{ + .name = "xs", + .id = ITEM_XS, + .slot = 3, + .slot_pos = 0, + .draw = w_xs_draw, + .holster = w_xs_holster, + .primary = w_xs_primary, + .secondary = w_xs_secondary, + .reload = __NULL__, + .release = w_xs_release, + .crosshair = __NULL__, + .precache = w_xs_precache, + .pickup = __NULL__, + .updateammo = w_xs_updateammo, + .wmodel = w_xs_wmodel, + .pmodel = __NULL__, + .deathmsg = __NULL__, + .aimanim = __NULL__, + .hudpic = w_xs_hudpic +}; + +/* entity definitions for pickups */ +#ifdef SERVER +void +weapon_xs(void) +{ + Weapons_InitItem(WEAPON_XS); +} +#endif diff --git a/src/shared/weapons.h b/src/shared/weapons.h new file mode 100644 index 0000000..a61bcc6 --- /dev/null +++ b/src/shared/weapons.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * 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. + */ + +/* Weapon Indices for the weapon table */ +enum +{ + WEAPON_NONE, + WEAPON_HEATERPIPE, + WEAPON_BRADNAILER, + WEAPON_NAILGUN, + WEAPON_SHOTGUN, + WEAPON_CMLWBR, + WEAPON_XS, + WEAPON_SATCHEL +}; + +#define MAX_A_NAIL 250 +#define MAX_A_BUCKSHOT 125 +#define MAX_A_BOLT 50 +#define MAX_A_XENCANDY 15 +#define MAX_A_SATCHEL 5 diff --git a/src/shared/weapons.qc b/src/shared/weapons.qc new file mode 100644 index 0000000..df5ea85 --- /dev/null +++ b/src/shared/weapons.qc @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * 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. + */ + +weapon_t w_null = {}; +weapon_t g_weapons[] = { + w_null, + w_heaterpipe, + w_bradnailer, + w_nailgun, + w_shotgun, + w_cmlwbr, + w_xs, + w_pipebomb +};