diff --git a/src/client/defs.h b/src/client/defs.h new file mode 100644 index 0000000..ac6f10d --- /dev/null +++ b/src/client/defs.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2016-2022 Marco Cawthorne + * Copyright (c) 2022 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. + */ + +#define MAX_A_CELLS 200 + +var string g_dmsg_spr; +var string g_tfchud1_spr; +var string g_tfchud2_spr; +var string g_tfchud3_spr; +var string g_tfchud4_spr; +var string g_tfchud5_spr; +var string g_tfchud6_spr; +var string g_tfchud7_spr; diff --git a/src/client/init.qc b/src/client/init.qc index 6434920..6630c04 100644 --- a/src/client/init.qc +++ b/src/client/init.qc @@ -49,21 +49,15 @@ ClientGame_RendererRestart(string rstr) 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/tfc_dmsg.spr"); - precache_model("sprites/tfchud01.spr"); - precache_model("sprites/tfchud02.spr"); - precache_model("sprites/tfchud03.spr"); - precache_model("sprites/tfchud04.spr"); - precache_model("sprites/tfchud05.spr"); - precache_model("sprites/tfchud06.spr"); - precache_model("sprites/tfchud07.spr"); + /* HUD selection icons */ + g_dmsg_spr = spriteframe("sprites/tfc_dmsg.spr", 0, 0.0f); + g_tfchud1_spr = spriteframe("sprites/tfchud01.spr", 0, 0.0f); + g_tfchud2_spr = spriteframe("sprites/tfchud02.spr", 0, 0.0f); + g_tfchud3_spr = spriteframe("sprites/tfchud03.spr", 0, 0.0f); + g_tfchud4_spr = spriteframe("sprites/tfchud04.spr", 0, 0.0f); + g_tfchud5_spr = spriteframe("sprites/tfchud05.spr", 0, 0.0f); + g_tfchud6_spr = spriteframe("sprites/tfchud06.spr", 0, 0.0f); + g_tfchud7_spr = spriteframe("sprites/tfchud07.spr", 0, 0.0f); /* there's also muzzleflash.spr, but that's just MUZZLE_SMALL again */ MUZZLE_RIFLE = (int)getmodelindex("sprites/muzzleflash1.spr"); diff --git a/src/client/progs.src b/src/client/progs.src index 02a7b2b..edc0cf7 100644 --- a/src/client/progs.src +++ b/src/client/progs.src @@ -11,6 +11,7 @@ ../../../src/shared/defs.h ../../../valve/src/client/defs.h ../../../src/client/defs.h +defs.h ../../../src/vgui/include.src diff --git a/src/shared/w_wrench.qc b/src/shared/w_wrench.qc index 36507fe..283a5ff 100644 --- a/src/shared/w_wrench.qc +++ b/src/shared/w_wrench.qc @@ -1,5 +1,6 @@ /* * Copyright (c) 2016-2020 Marco Cawthorne + * Copyright (c) 2022 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 @@ -40,9 +41,7 @@ w_wrench_precache(void) void w_wrench_updateammo(player pl) { -#ifdef SERVER - Weapons_UpdateAmmo(pl, __NULL__, __NULL__, __NULL__); -#endif + Weapons_UpdateAmmo(pl, __NULL__, pl.m_iAmmoCells, __NULL__); } string @@ -127,26 +126,21 @@ w_wrench_primary(player pl) FX_Impact(IMPACT_MELEE, trace_endpos, trace_plane_normal); } + /* don't bother with decals, we got squibs */ + if (trace_ent.iBleeds) { + FX_Blood(trace_endpos, [1,0,0]); + } else { + FX_Impact(IMPACT_MELEE, trace_endpos, trace_plane_normal); + } + + /* Damage is between 12 - 20, so let's just do 15 for now */ if (trace_ent.takedamage) { - Damage_Apply(trace_ent, self, 10, WEAPON_WRENCH, DMG_BLUNT); - - if (!trace_ent.iBleeds) { - return; - } - - if (random() < 0.33) { - sound(pl, 8, "weapons/cbar_hitbod1.wav", 1, ATTN_NORM); - } else if (random() < 0.66) { - sound(pl, 8, "weapons/cbar_hitbod2.wav", 1, ATTN_NORM); - } else { - sound(pl, 8, "weapons/cbar_hitbod3.wav", 1, ATTN_NORM); + Damage_Apply(trace_ent, pl, Skill_GetValue("plr_crowbar", 15), WEAPON_WRENCH, DMG_BLUNT); + if (trace_ent.iBleeds) { + Sound_Play(self, CHAN_WEAPON, "weapon_crowbar.hitbody"); } } else { - if (random() < 0.5) { - sound(pl, 8, "weapons/cbar_hit1.wav", 1, ATTN_NORM); - } else { - sound(pl, 8, "weapons/cbar_hit2.wav", 1, ATTN_NORM); - } + Sound_Play(self, CHAN_WEAPON, "weapon_crowbar.hit"); } #endif } @@ -163,13 +157,36 @@ w_wrench_release(player pl) pl.w_idle_next = 15.0f; } +void +w_wrench_crosshair(player pl) +{ +#ifdef CLIENT + vector aicon_pos; + + aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; + + drawsubpic( + aicon_pos, + [24,24], + g_hud7_spr, + [0,96/128], + [24/256,24/128], + g_hud_color, + pSeatLocal->m_flAmmo2Alpha, + DRAWFLAG_ADDITIVE + ); + + HUD_DrawAmmo2(); +#endif +} + float w_wrench_aimanim(player pl) { return self.flags & FL_CROUCHING ? ANIM_CR_AIMCROWBAR : ANIM_AIMCROWBAR; } -void +void w_wrench_hudpic(player pl, int selected, vector pos, float a) { #ifdef CLIENT @@ -177,7 +194,7 @@ w_wrench_hudpic(player pl, int selected, vector pos, float a) drawsubpic( pos, [170,45], - "sprites/tfchud04.spr_0.tga", + g_tfchud4_spr, [0,180/256], [170/256,45/256], g_hud_color, @@ -188,7 +205,7 @@ w_wrench_hudpic(player pl, int selected, vector pos, float a) drawsubpic( pos, [170,45], - "sprites/tfchud03.spr_0.tga", + g_tfchud3_spr, [0,135/256], [170/256,45/256], g_hud_color, @@ -196,6 +213,8 @@ w_wrench_hudpic(player pl, int selected, vector pos, float a) DRAWFLAG_ADDITIVE ); } + + HUD_DrawAmmoBar(pos, pl.m_iAmmoCells, MAX_A_CELLS, a); #endif } @@ -211,7 +230,7 @@ weapon_t w_wrench = .secondary = __NULL__, .reload = __NULL__, .release = w_wrench_release, - .postdraw = __NULL__, + .postdraw = w_wrench_crosshair, .precache = w_wrench_precache, .pickup = __NULL__, .updateammo = w_wrench_updateammo,