From 1550f8cbe16f91f74fb6f8ebabd768bed0cb38ed Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Tue, 23 Jul 2024 17:54:58 -0700 Subject: [PATCH] Rebase against Nuclide Develop, convert most things over --- README.md | 2 +- manifest.fmf | 14 - radiant.game | 26 ++ radiant.xml | 76 ++++ src/client/Makefile | 4 +- src/client/cmds.qc | 2 +- src/client/crosshair.qc | 9 +- src/client/defs.h | 2 +- src/client/entities.qc | 6 + src/client/hud.qc | 28 +- src/client/hud_ammonotify.qc | 4 +- src/client/hud_weaponselect.qc | 20 +- src/client/init.qc | 4 + src/client/nightvision.qc | 12 +- src/client/progs.src | 4 +- src/client/radar.qc | 58 +-- src/client/textmenu.qc | 4 +- src/client/vgui_buymenu.qc | 2 +- src/client/vgui_buypages.qc | 26 +- src/client/vgui_changeclass_ct.qc | 2 +- src/client/vgui_changeclass_t.qc | 2 +- src/client/vgui_chooseteam.qc | 2 +- src/client/vgui_motd.qc | 2 +- src/server/Makefile | 4 +- src/server/ammo.qc | 26 +- src/server/armoury_entity.qc | 48 +- src/server/bot.qc | 58 +-- src/server/buy.qc | 12 +- src/server/func_bomb_target.qc | 2 +- src/server/func_buyzone.qc | 2 +- src/server/func_escapezone.qc | 4 +- src/server/func_hostage_rescue.qc | 6 +- src/server/func_vip_safetyzone.qc | 2 +- src/server/game_money.qc | 2 +- src/server/gamerules.h | 1 - src/server/gamerules.qc | 96 +--- src/server/gamerules_deathmatch.qc | 17 +- src/server/gamerules_multiplayer.qc | 272 ++++++------ src/server/gamerules_singleplayer.qc | 2 - src/server/hostage_entity.qc | 85 +--- src/server/info_buyzone.qc | 5 +- src/server/info_hostage_rescue.qc | 9 +- src/server/item_suit.qc | 5 +- src/server/player.qc | 9 - src/server/progs.src | 5 +- src/server/server.qc | 5 +- src/shared/CSProjectile.h | 8 + src/shared/CSProjectile.qc | 5 + src/shared/CSWeapon.qc | 220 ++++++++++ src/shared/animations.h | 6 +- src/shared/animations.qc | 16 +- src/shared/defs.h | 1 - src/shared/include.src | 36 +- src/shared/item_c4bomb.h | 4 - src/shared/item_c4bomb.qc | 66 ++- src/shared/items.h | 4 +- src/shared/player.h | 315 ++------------ src/shared/pmove.h | 19 - src/shared/pmove.qc | 38 +- src/shared/w_ak47.qc | 342 --------------- src/shared/w_aug.qc | 329 -------------- src/shared/w_awp.qc | 383 ---------------- src/shared/w_c4bomb.qc | 262 ----------- src/shared/w_deagle.qc | 339 --------------- src/shared/w_elites.qc | 410 ------------------ src/shared/w_fiveseven.qc | 309 ------------- src/shared/w_flashbang.qc | 307 ------------- src/shared/w_g3sg1.qc | 318 -------------- src/shared/w_glock18.qc | 395 ----------------- src/shared/w_hegrenade.qc | 310 ------------- src/shared/w_knife.qc | 323 -------------- src/shared/w_m3.qc | 378 ---------------- src/shared/w_m4a1.qc | 383 ---------------- src/shared/w_mac10.qc | 304 ------------- src/shared/w_mp5.qc | 302 ------------- src/shared/w_p228.qc | 310 ------------- src/shared/w_p90.qc | 302 ------------- src/shared/w_para.qc | 299 ------------- src/shared/w_scout.qc | 344 --------------- src/shared/w_sg550.qc | 321 -------------- src/shared/w_sg552.qc | 326 -------------- src/shared/w_smokegrenade.qc | 306 ------------- src/shared/w_tmp.qc | 302 ------------- src/shared/w_ump45.qc | 301 ------------- src/shared/w_usp45.qc | 376 ---------------- src/shared/w_xm1014.qc | 381 ---------------- src/shared/weapons.h | 4 + src/shared/weapons.qc | 64 --- src/shared/weapons_cstrike.qc | 29 +- zpak001.pk3dir/PAK_NAME | 1 + zpak001.pk3dir/cfg/skill_cstrike.cfg | 12 +- ...progs.dat.en.po => csprogs.dat.default.po} | 19 +- zpak001.pk3dir/def/ammo.def | 116 +++++ zpak001.pk3dir/def/bot.def | 4 - zpak001.pk3dir/def/hostage.def | 16 + zpak001.pk3dir/def/item_c4.def | 12 + zpak001.pk3dir/def/player.def | 4 + zpak001.pk3dir/def/spawns.def | 26 ++ zpak001.pk3dir/def/weapons.def | 76 ++++ zpak001.pk3dir/def/weapons/ak47.def | 54 +++ zpak001.pk3dir/def/weapons/aug.def | 54 +++ zpak001.pk3dir/def/weapons/awp.def | 64 +++ zpak001.pk3dir/def/weapons/c4.def | 33 ++ zpak001.pk3dir/def/weapons/deagle.def | 55 +++ zpak001.pk3dir/def/weapons/elites.def | 66 +++ zpak001.pk3dir/def/weapons/fiveseven.def | 57 +++ zpak001.pk3dir/def/weapons/flashbang.def | 46 ++ zpak001.pk3dir/def/weapons/g3sg1.def | 54 +++ zpak001.pk3dir/def/weapons/glock18.def | 65 +++ zpak001.pk3dir/def/weapons/hegrenade.def | 63 +++ zpak001.pk3dir/def/weapons/knife.def | 40 ++ zpak001.pk3dir/def/weapons/m249.def | 54 +++ zpak001.pk3dir/def/weapons/m3.def | 57 +++ zpak001.pk3dir/def/weapons/m4a1.def | 70 +++ zpak001.pk3dir/def/weapons/mac10.def | 55 +++ zpak001.pk3dir/def/weapons/mp5navy.def | 55 +++ zpak001.pk3dir/def/weapons/p228.def | 57 +++ zpak001.pk3dir/def/weapons/p90.def | 55 +++ zpak001.pk3dir/def/weapons/scout.def | 55 +++ zpak001.pk3dir/def/weapons/sg550.def | 54 +++ zpak001.pk3dir/def/weapons/sg552.def | 56 +++ zpak001.pk3dir/def/weapons/smokegrenade.def | 50 +++ zpak001.pk3dir/def/weapons/tmp.def | 56 +++ zpak001.pk3dir/def/weapons/ump45.def | 57 +++ zpak001.pk3dir/def/weapons/usp.def | 86 ++++ zpak001.pk3dir/def/weapons/xm1014.def | 59 +++ zpak001.pk3dir/scripts/bots.txt | 59 +++ zpak001.pk3dir/scripts/constants.txt | 29 -- zpak001.pk3dir/scripts/maptweaks.txt | 6 + zpak001.pk3dir/scripts/surfaceproperties.txt | 224 ++++++++++ zpak001.pk3dir/sound/player.sndshd | 5 + zpak001.pk3dir/sound/weapons_cstrike.sndshd | 91 ++-- 132 files changed, 2957 insertions(+), 10055 deletions(-) delete mode 100644 manifest.fmf create mode 100644 radiant.game create mode 100644 radiant.xml create mode 100644 src/shared/CSProjectile.h create mode 100644 src/shared/CSProjectile.qc create mode 100644 src/shared/CSWeapon.qc delete mode 100644 src/shared/pmove.h delete mode 100644 src/shared/w_ak47.qc delete mode 100644 src/shared/w_aug.qc delete mode 100644 src/shared/w_awp.qc delete mode 100644 src/shared/w_c4bomb.qc delete mode 100644 src/shared/w_deagle.qc delete mode 100644 src/shared/w_elites.qc delete mode 100644 src/shared/w_fiveseven.qc delete mode 100644 src/shared/w_flashbang.qc delete mode 100644 src/shared/w_g3sg1.qc delete mode 100644 src/shared/w_glock18.qc delete mode 100644 src/shared/w_hegrenade.qc delete mode 100644 src/shared/w_knife.qc delete mode 100644 src/shared/w_m3.qc delete mode 100644 src/shared/w_m4a1.qc delete mode 100644 src/shared/w_mac10.qc delete mode 100644 src/shared/w_mp5.qc delete mode 100644 src/shared/w_p228.qc delete mode 100644 src/shared/w_p90.qc delete mode 100644 src/shared/w_para.qc delete mode 100644 src/shared/w_scout.qc delete mode 100644 src/shared/w_sg550.qc delete mode 100644 src/shared/w_sg552.qc delete mode 100644 src/shared/w_smokegrenade.qc delete mode 100644 src/shared/w_tmp.qc delete mode 100644 src/shared/w_ump45.qc delete mode 100644 src/shared/w_usp45.qc delete mode 100644 src/shared/w_xm1014.qc delete mode 100644 src/shared/weapons.qc create mode 100644 zpak001.pk3dir/PAK_NAME rename zpak001.pk3dir/{csprogs.dat.en.po => csprogs.dat.default.po} (93%) mode change 100755 => 100644 create mode 100644 zpak001.pk3dir/def/ammo.def delete mode 100644 zpak001.pk3dir/def/bot.def create mode 100644 zpak001.pk3dir/def/hostage.def create mode 100644 zpak001.pk3dir/def/item_c4.def create mode 100644 zpak001.pk3dir/def/player.def create mode 100644 zpak001.pk3dir/def/spawns.def create mode 100644 zpak001.pk3dir/def/weapons/ak47.def create mode 100644 zpak001.pk3dir/def/weapons/aug.def create mode 100644 zpak001.pk3dir/def/weapons/awp.def create mode 100644 zpak001.pk3dir/def/weapons/c4.def create mode 100644 zpak001.pk3dir/def/weapons/deagle.def create mode 100644 zpak001.pk3dir/def/weapons/elites.def create mode 100644 zpak001.pk3dir/def/weapons/fiveseven.def create mode 100644 zpak001.pk3dir/def/weapons/flashbang.def create mode 100644 zpak001.pk3dir/def/weapons/g3sg1.def create mode 100644 zpak001.pk3dir/def/weapons/glock18.def create mode 100644 zpak001.pk3dir/def/weapons/hegrenade.def create mode 100644 zpak001.pk3dir/def/weapons/knife.def create mode 100644 zpak001.pk3dir/def/weapons/m249.def create mode 100644 zpak001.pk3dir/def/weapons/m3.def create mode 100644 zpak001.pk3dir/def/weapons/m4a1.def create mode 100644 zpak001.pk3dir/def/weapons/mac10.def create mode 100644 zpak001.pk3dir/def/weapons/mp5navy.def create mode 100644 zpak001.pk3dir/def/weapons/p228.def create mode 100644 zpak001.pk3dir/def/weapons/p90.def create mode 100644 zpak001.pk3dir/def/weapons/scout.def create mode 100644 zpak001.pk3dir/def/weapons/sg550.def create mode 100644 zpak001.pk3dir/def/weapons/sg552.def create mode 100644 zpak001.pk3dir/def/weapons/smokegrenade.def create mode 100644 zpak001.pk3dir/def/weapons/tmp.def create mode 100644 zpak001.pk3dir/def/weapons/ump45.def create mode 100644 zpak001.pk3dir/def/weapons/usp.def create mode 100644 zpak001.pk3dir/def/weapons/xm1014.def create mode 100644 zpak001.pk3dir/scripts/bots.txt create mode 100644 zpak001.pk3dir/scripts/maptweaks.txt create mode 100644 zpak001.pk3dir/scripts/surfaceproperties.txt diff --git a/README.md b/README.md index d2c0855..9760ff3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# FreeCS +# Tactical Retreat (FreeCS) [As seen on phoronix.com](https://phoronix.com/scan.php?page=news_item&px=FreeCS-Open-Counter-Strike) Clean-room reimplementation of Counter-Strike 1.5 (mod-version). diff --git a/manifest.fmf b/manifest.fmf deleted file mode 100644 index bde984f..0000000 --- a/manifest.fmf +++ /dev/null @@ -1,14 +0,0 @@ -FTEMANIFEST 1 -GAME cstrike -NAME "Counter-Strike" -BASEGAME platform -BASEGAME valve -BASEGAME cstrike - -// you don't really want to change these -RTCBROKER master.frag-net.com:27950 -PROTOCOLNAME "Nuclide" -MAINCONFIG game.cfg -DOWNLOADSURL "http://www.frag-net.com/dl/packages" - --exec platform_default.cfg diff --git a/radiant.game b/radiant.game new file mode 100644 index 0000000..bfc8b49 --- /dev/null +++ b/radiant.game @@ -0,0 +1,26 @@ + + diff --git a/radiant.xml b/radiant.xml new file mode 100644 index 0000000..84fafec --- /dev/null +++ b/radiant.xml @@ -0,0 +1,76 @@ + + + + "hlcsg" + "hlbsp" + "hlvis" + "hlrad" + + qbsp -hlbsp -basedir "[EnginePath]" -gamedir "[GameName]" -path "[UserEnginePath]" + qvis -basedir "[EnginePath]" -gamedir "[GameName]" -path "[UserEnginePath]" + qlight -basedir "[EnginePath]" -gamedir "[GameName]" -path "[UserEnginePath]" + + + [csg] "[MapFile]" + [bsp] "[MapFile]" + [vis] -full "[MapFile]" + [light] -extra "[MapFile]" + + + [csg] "[MapFile]" + [bsp] "[MapFile]" + [vis] "[MapFile]" + [light] "[MapFile]" + + + [csg] "[MapFile]" + [bsp] "[MapFile]" + [vis] -fast "[MapFile]" + [light] -fast "[MapFile]" + + + [csg] "[MapFile]" + [bsp] "[MapFile]" + [vis] -fast "[MapFile]" + + + [csg] "[MapFile]" + [bsp] "[MapFile]" + + + [csg] -onlyents "[MapFile]" + [bsp]"[MapFile]" + + + + + [qbsp] "[MapFile]" + [qvis] "[MapFile]" + [qlight] -extra "[MapFile]" + + + [qbsp] "[MapFile]" + [qvis] "[MapFile]" + [qlight] "[MapFile]" + + + [qbsp] "[MapFile]" + [qvis] -fast "[MapFile]" + [qlight] -fast "[MapFile]" + + + [qbsp] "[MapFile]" + [qvis] -fast "[MapFile]" + + + [qbsp] "[MapFile]" + + + [qbsp] -onlyents "[MapFile]" + + + diff --git a/src/client/Makefile b/src/client/Makefile index 627019a..2fe44a4 100644 --- a/src/client/Makefile +++ b/src/client/Makefile @@ -1,4 +1,4 @@ -CC=fteqcc +QCC=fteqcc all: - $(CC) progs.src + $(QCC) progs.src diff --git a/src/client/cmds.qc b/src/client/cmds.qc index bb9156b..76b3b01 100644 --- a/src/client/cmds.qc +++ b/src/client/cmds.qc @@ -33,7 +33,7 @@ CMD_ChooseTeam(void) void CMD_BuyMenu(void) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; /* only in buy zones... */ if (!(pl.gflags & GF_BUYZONE)) { diff --git a/src/client/crosshair.qc b/src/client/crosshair.qc index f06f0d1..92614c2 100644 --- a/src/client/crosshair.qc +++ b/src/client/crosshair.qc @@ -27,19 +27,18 @@ var bool autocvar_cl_crosshair_additive = true; #define CS_CROSS_THICKNESS autocvar_cl_crosshair_thickness void -Cstrike_DrawCrosshair(void) +Cstrike_DrawCrosshair(CSPlayer pl) { - player pl = (player)self; int cross_dist; int line_length; /* these are defined in the weapon-code files */ - float distance = pl.cs_cross_mindist; - float delta = pl.cs_cross_deltadist; + float distance = (float)pl.cs_cross_mindist; + float delta = (float)pl.cs_cross_deltadist; if (!(pl.flags & FL_ONGROUND)) { distance = distance * 2.0f; - } else if (pl.flags & FL_CROUCHING) { /* crouching... */ + } else if (pl.IsCrouching()) { /* crouching... */ distance = distance * 0.5f; } else if (vlen(pl.velocity) > 120) { /* running, not walking */ distance = distance * 1.5f; diff --git a/src/client/defs.h b/src/client/defs.h index ff4a016..cd6155a 100644 --- a/src/client/defs.h +++ b/src/client/defs.h @@ -17,6 +17,7 @@ #include "hud.h" #include "radio.h" #include "../../../valve/src/client/obituary.h" +#include "../../../valve/src/client/hud_sprite.h" var int autocvar_cl_autoweaponswitch = TRUE; @@ -87,7 +88,6 @@ void HUD_DrawAmmo3(void); void HUD_WeaponPickupNotify(int); void HUD_DrawAmmoBar(vector pos, float val, float max, float a); -void Cstrike_DrawCrosshair(void); void Cstrike_DrawSimpleCrosshair(void); void Cstrike_DrawScope(void); void Textmenu_Call(string); diff --git a/src/client/entities.qc b/src/client/entities.qc index d37263e..91f0140 100644 --- a/src/client/entities.qc +++ b/src/client/entities.qc @@ -21,6 +21,12 @@ ClientGame_EntityUpdate(float id, float new) case ENT_C4BOMB: w_c4bomb_parse(); break; + case ENT_PLAYER: + NSENTITY_READENTITY(CSPlayer, new) + break; + case ENT_WEAPON: + NSENTITY_READENTITY(CSWeapon, new) + break; default: return (0); } diff --git a/src/client/hud.qc b/src/client/hud.qc index 4732f44..13ad143 100644 --- a/src/client/hud.qc +++ b/src/client/hud.qc @@ -284,7 +284,7 @@ void HUD_DrawHealth(void) { vector pos; - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; if (pl.health != pSeatLocal->m_iHealthOld) { pSeatLocal->m_flHealthAlpha = 1.0; @@ -331,7 +331,7 @@ void HUD_DrawArmor(void) { vector pos; - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; pos = g_hudmins + [198, g_hudres[1] - 42]; @@ -405,7 +405,7 @@ HUD_DrawArmor(void) void HUD_DrawAmmo1(void) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; vector pos; if (pl.a_ammo1 != pSeatLocal->m_iAmmo1Old) { @@ -428,7 +428,7 @@ HUD_DrawAmmo1(void) void HUD_DrawAmmo2(void) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; vector pos; if (pl.a_ammo2 != pSeatLocal->m_iAmmo2Old) { @@ -450,7 +450,7 @@ HUD_DrawAmmo2(void) void HUD_DrawAmmo3(void) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; vector pos; if (pl.a_ammo3 != pSeatLocal->m_iAmmo3Old) { @@ -486,7 +486,7 @@ void HUD_DrawFlashlight(void) { vector pos; - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; pos = g_hudmins + [g_hudres[0] - 48, 16]; /* both on, draw both sprites at full intensity */ @@ -531,7 +531,7 @@ HUD_DrawZones(void) { int zc = 0; vector pos = [0,0,0]; - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; if (pl.gflags & GF_BUYZONE) { zc++; @@ -652,7 +652,7 @@ HUD_DrawProgress(void) void HUD_DrawNotify(void) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; vector pos; float a; @@ -666,7 +666,7 @@ HUD_DrawNotify(void) } a = bound(0.0, pSeatLocal->m_flPickupAlpha, 1.0); - Weapons_HUDPic(pl, pSeatLocal->m_iPickupWeapon, 1, pos, a); + //Weapons_HUDPic(pl, pSeatLocal->m_iPickupWeapon, 1, pos, a); pos[0] += 148; pos[1] -= 32; HUD_AmmoNotify_Draw(pos); @@ -720,12 +720,14 @@ HUD_PlayerNames(void) void HUD_Draw(void) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; g_hud_color = autocvar_con_color * (1 / 255); /* little point in not drawing these, even if you don't have a suit */ - Weapons_DrawCrosshair(pl); + if (pl.m_activeWeapon) + pl.m_activeWeapon.UpdateGUI(); + HUD_DrawWeaponSelect(); Obituary_Draw(); @@ -734,7 +736,7 @@ HUD_Draw(void) HUD_DrawMoney(); HUD_DrawTimer(0); - if (!(pl.g_items & ITEM_SUIT)) { + if (pl.HasItem("item_suit") == false) { return; } @@ -761,7 +763,7 @@ HUD_DrawSpectator(void) g_specHUD = spawn(CSSpectateHUD); g_specHUD.SetPos(video_mins); - g_specHUD.SetSize(video_res); + g_specHUD.SetSize(g_vidsize); g_specHUD.Draw(); } diff --git a/src/client/hud_ammonotify.qc b/src/client/hud_ammonotify.qc index 51fee30..08a5355 100644 --- a/src/client/hud_ammonotify.qc +++ b/src/client/hud_ammonotify.qc @@ -83,8 +83,9 @@ HUD_AmmoNotify_Insert(int type, int count) /* called whenever we should check for pickup updates */ void -HUD_AmmoNotify_Check(player pl) +HUD_AmmoNotify_Check(CSPlayer pl) { +#if 0 HUD_AmmoNotify_Insert(0, pl.ammo_50ae - pl.ammo_50ae_net); HUD_AmmoNotify_Insert(1, pl.ammo_762mm - pl.ammo_762mm_net); HUD_AmmoNotify_Insert(2, pl.ammo_556mm - pl.ammo_556mm_net); @@ -98,4 +99,5 @@ HUD_AmmoNotify_Check(player pl) HUD_AmmoNotify_Insert(10, pl.ammo_hegrenade - pl.ammo_hegrenade_net); HUD_AmmoNotify_Insert(11, pl.ammo_fbgrenade - pl.ammo_fbgrenade_net); HUD_AmmoNotify_Insert(12, pl.ammo_smokegrenade - pl.ammo_smokegrenade_net); +#endif } \ No newline at end of file diff --git a/src/client/hud_weaponselect.qc b/src/client/hud_weaponselect.qc index e072d74..d282fce 100644 --- a/src/client/hud_weaponselect.qc +++ b/src/client/hud_weaponselect.qc @@ -14,7 +14,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -void View_ForceChange(player pl, int targetWeapon); +void View_ForceChange(CSPlayer pl, int targetWeapon); vector g_vecHUDNums[6] = { @@ -29,7 +29,7 @@ vector g_vecHUDNums[6] = void HUD_DrawWeaponSelect_Forward(void) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; if (!pl.activeweapon) { return; @@ -57,7 +57,7 @@ HUD_DrawWeaponSelect_Forward(void) void HUD_DrawWeaponSelect_Back(void) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; if (!pl.activeweapon) { return; @@ -85,7 +85,7 @@ HUD_DrawWeaponSelect_Back(void) void HUD_DrawWeaponSelect_Trigger(void) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; if (pl.activeweapon != pSeat->m_iHUDWeaponSelected) View_ForceChange(pl, pSeat->m_iHUDWeaponSelected); @@ -98,7 +98,7 @@ HUD_DrawWeaponSelect_Trigger(void) void HUD_DrawWeaponSelect_Last(void) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; if (pl.g_items & g_weapons[pSeat->m_iOldWeapon].id) { pl.activeweapon = pSeat->m_iOldWeapon; sendevent("PlayerSwitchWeapon", "i", pSeat->m_iOldWeapon); @@ -114,7 +114,7 @@ HUD_DrawWeaponSelect_Num(vector vecPos, int val) int HUD_InSlotPos(int slot, int pos) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; for (int i = 1; i < g_weapons.length; i++) { if (g_weapons[i].slot == slot && g_weapons[i].slot_pos == pos) { if (pl.g_items & g_weapons[i].id) { @@ -130,7 +130,7 @@ HUD_InSlotPos(int slot, int pos) void HUD_SlotSelect(int slot) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; int curslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot; int i; @@ -184,7 +184,7 @@ HUD_SlotSelect(int slot) void HUD_DrawWeaponSelect(void) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; if (!pl.activeweapon) { return; } @@ -211,13 +211,13 @@ HUD_DrawWeaponSelect(void) slot_selected = TRUE; if (x == wantpos) { // Selected Sprite - Weapons_HUDPic(pl, pSeat->m_iHUDWeaponSelected, 1, vecPos, 1.0f); + //Weapons_HUDPic(pl, pSeat->m_iHUDWeaponSelected, 1, vecPos, 1.0f); drawsubpic(vecPos, [170,45], g_hud3_spr, [0,180/256], [170/256,45/256], g_hud_color, 1, DRAWFLAG_ADDITIVE); vecPos[1] += 50; } else if ((b=HUD_InSlotPos(i, x)) != -1) { // Unselected Sprite - Weapons_HUDPic(pl, b, 0, vecPos, 1.0f); + //Weapons_HUDPic(pl, b, 0, vecPos, 1.0f); vecPos[1] += 50; } } else if (HUD_InSlotPos(i, x) != -1) { diff --git a/src/client/init.qc b/src/client/init.qc index 300c683..8af4885 100644 --- a/src/client/init.qc +++ b/src/client/init.qc @@ -115,6 +115,9 @@ ClientGame_Init(float apilevel, string enginename, float engineversion) bool ClientGame_IsUsingVGUI(void) { +#if defined(CZERO) || defined(CSSOURCE) + return true; +#else /* FTE has a bug with _ infokeys, so we'll accept both formats in case that gets fixed in the future :/ */ if (getplayerkeyfloat(player_localnum, "vgui_menus") == 1) @@ -123,6 +126,7 @@ ClientGame_IsUsingVGUI(void) return true; return false; +#endif } void VGUI_ShowMOTD(void); diff --git a/src/client/nightvision.qc b/src/client/nightvision.qc index 1e6675e..bb6347d 100644 --- a/src/client/nightvision.qc +++ b/src/client/nightvision.qc @@ -17,12 +17,14 @@ void Nightvision_Toggle(void) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; +#if 0 if (!(pl.g_items & ITEM_NIGHTVISION)) { pSeatLocal->m_iNightvision = 0; return; } +#endif pSeatLocal->m_iNightvision = 1 - pSeatLocal->m_iNightvision; @@ -35,15 +37,17 @@ Nightvision_Toggle(void) void Nightvision_PreFrame(void) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; if (!pSeatLocal->m_iNightvision) return; +#if 0 if (!(pl.g_items & ITEM_NIGHTVISION)) { pSeatLocal->m_iNightvision = 0; return; } +#endif dynamiclight_add(pSeat->m_vecPredictedOrigin, 768, [1,1,1]); } @@ -51,15 +55,17 @@ Nightvision_PreFrame(void) void Nightvision_PostFrame(void) { - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; if (!pSeatLocal->m_iNightvision) return; +#if 0 if (!(pl.g_items & ITEM_NIGHTVISION)) { pSeatLocal->m_iNightvision = 0; return; } +#endif drawpic(video_mins, "fade_modulate", g_hudres, [0,1,0], 1.0f, 0); } diff --git a/src/client/progs.src b/src/client/progs.src index 28a8602..75e3b7c 100644 --- a/src/client/progs.src +++ b/src/client/progs.src @@ -1,6 +1,6 @@ #pragma target fte_5768 //#pragma flag enable assumeint -#pragma progs_dat "../../csprogs.dat" +#pragma progs_dat "../../zpak001.pk3dir/csprogs.dat" #define CSQC #define CLIENT @@ -36,8 +36,8 @@ crosshair.qc hud_ammonotify.qc vgui_spectator.qc hud.qc -hud_weaponselect.qc ../../../valve/src/client/hud_sprite.qc +../../../valve/src/client/hud_weaponselect.qc ../../../valve/src/client/scoreboard.qc radio.qc diff --git a/src/client/radar.qc b/src/client/radar.qc index f6472f5..dccac6d 100644 --- a/src/client/radar.qc +++ b/src/client/radar.qc @@ -17,69 +17,27 @@ #define CSRADAR_DISTANCE 1024 var string g_cs_radar; +var NSRadar g_csRadar; void Radar_Init(void) { g_cs_radar = spriteframe("sprites/radar640.spr", 0, 0.0f); + + g_csRadar = NSRadar::InitEmpty(); } void Radar_Draw(void) { - vector radpos = g_hudmins + [16,16]; + vector radpos = g_view.GetHUDCanvasPos() + [16,16]; drawpic(radpos, g_cs_radar, [128,128], [1,1,1], 0.25f, DRAWFLAG_ADDITIVE); - for (entity a = world; (a = find(a, ::classname, "player"));) { - vector color; - vector own_pos = pSeat->m_vecPredictedOrigin; - vector difference = (a.origin - own_pos); + /* these need constant adjustment for when the display changes */ + g_csRadar.SetViewPosition(radpos); + g_csRadar.SetViewSize([128,128]); + g_csRadar.UpdateView(); - /* don't draw when we're exceeding the view radius */ - if (vlen(difference) > CSRADAR_DISTANCE) - continue; - /* this is perhaps a bit too aggressive, so fix this and uncomment */ -#if 0 - /* test if we can actually see the player */ - traceline(a.origin, own_pos + pSeat->m_ePlayer.view_ofs, MOVE_NORMAL, pSeat->m_ePlayer); - if (trace_ent != a) { - traceline(a.origin + [0,0,a.maxs[2]], own_pos + pSeat->m_ePlayer.view_ofs, MOVE_OTHERONLY, pSeat->m_ePlayer); - if (trace_ent != a) { - traceline(a.origin + [0,0,a.mins[2]], own_pos + pSeat->m_ePlayer.view_ofs, MOVE_OTHERONLY, pSeat->m_ePlayer); - if (trace_ent != a) { - continue; - } - } - } -#endif - - vector matrix; - float ht; - makevectors([0,view_angles[1] - 90, 0]); - matrix[0] = dotproduct(difference, v_forward); - matrix[1] = dotproduct(difference, v_right); - matrix[2] = 0; - - /* we need to fit 1024 in-game units into the 64px radar image */ - vector apos = radpos + [62,62] + (matrix * (64/CSRADAR_DISTANCE)); - - if (getplayerkeyfloat(a.entnum-1, "*team") == TEAM_CT) - color = [115, 155, 205] / 255; - else - color = [190, 52, 57] / 255; - - drawfill(apos, [4,4], color, 1.0f, DRAWFLAG_NORMAL); - - /* do the line indicating the height of the player relative to us */ - ht = fabs(difference[2] * (64 / CSRADAR_DISTANCE)); - - if (difference[2] > 0) - drawfill(apos + [1,0], [2,ht], color, 1.0f, DRAWFLAG_NORMAL); - else if (difference[2] < 0) - drawfill(apos + [1,-ht], [2,ht], color, 1.0f, DRAWFLAG_NORMAL); - - //drawpic(apos, "fade_modulate", [4,4], color, 1.0f, 0); - } } diff --git a/src/client/textmenu.qc b/src/client/textmenu.qc index a943282..7bf41b0 100644 --- a/src/client/textmenu.qc +++ b/src/client/textmenu.qc @@ -85,8 +85,8 @@ CT_SELECT(int n) void BUY(int n) { - player pl; - pl = (player)pSeat->m_ePlayer; + CSPlayer pl; + pl = (CSPlayer)pSeat->m_ePlayer; int inteam = getplayerkeyfloat(pl.entnum-1, "*team"); switch (n) { diff --git a/src/client/vgui_buymenu.qc b/src/client/vgui_buymenu.qc index 3700adf..dcd7b16 100644 --- a/src/client/vgui_buymenu.qc +++ b/src/client/vgui_buymenu.qc @@ -220,5 +220,5 @@ VGUI_BuyMenu(void) } winBuyMenu.Show(); - winBuyMenu.SetPos((video_res / 2) - (winBuyMenu.GetSize() / 2)); + winBuyMenu.SetPos((g_vidsize / 2) - (winBuyMenu.GetSize() / 2)); } diff --git a/src/client/vgui_buypages.qc b/src/client/vgui_buypages.qc index 27e00b6..74e9ace 100644 --- a/src/client/vgui_buypages.qc +++ b/src/client/vgui_buypages.qc @@ -30,6 +30,10 @@ typedef enum BUYITEM_FIVESEVEN, BUYITEM_M3, BUYITEM_XM1014, +#if defined(CZERO) || defined(CSSOURCE) + BUYITEM_FAMAS, + BUYITEM_GALIL, +#endif BUYITEM_AK47, BUYITEM_SG552, BUYITEM_M4A1, @@ -62,7 +66,7 @@ typedef struct string titleName; /* the name of the titles.txt entry */ } buyItems_t; -const buyItems_t g_buyItemList [29] = { +const buyItems_t g_buyItemList [] = { { "BuyWeapon", WEAPON_USP45, "classes/usp.txt", "gfx/vgui/640_usp", "USP45" }, { "BuyWeapon", WEAPON_GLOCK18, "classes/glock18.txt", "gfx/vgui/640_glock18", "Glock18" }, { "BuyWeapon", WEAPON_DEAGLE, "classes/deagle.txt", "gfx/vgui/640_deagle", "DesertEagle" }, @@ -71,6 +75,10 @@ const buyItems_t g_buyItemList [29] = { { "BuyWeapon", WEAPON_FIVESEVEN, "classes/fiveseven.txt", "gfx/vgui/640_fiveseven", "FiveSeven" }, { "BuyWeapon", WEAPON_M3, "classes/m3.txt", "gfx/vgui/640_m3", "Super90" }, { "BuyWeapon", WEAPON_XM1014, "classes/xm1014.txt", "gfx/vgui/640_xm1014", "XM1014" }, +#if defined(CZERO) || defined(CSSOURCE) + { "BuyWeapon", WEAPON_FAMAS, "classes/famas.txt", "gfx/vgui/640_famas", "Famas" }, + { "BuyWeapon", WEAPON_GALIL, "classes/galil.txt", "gfx/vgui/640_galil", "Galil" }, +#endif { "BuyWeapon", WEAPON_AK47, "classes/ak47.txt", "gfx/vgui/640_ak47", "AK47" }, { "BuyWeapon", WEAPON_SG552, "classes/sg552.txt", "gfx/vgui/640_sg552", "SG552" }, { "BuyWeapon", WEAPON_M4A1, "classes/m4a1.txt", "gfx/vgui/640_m4a1", "M4A1" }, @@ -156,7 +164,7 @@ VGUI_BuyMenu_Page(int buyPage) static CSBuyItemButton btnBuyItem8; static CSBuyItemButton btnBuyItem9; - player pl = (player)pSeat->m_ePlayer; + CSPlayer pl = (CSPlayer)pSeat->m_ePlayer; int inTeam = getplayerkeyfloat(pl.entnum-1, "*team"); @@ -284,7 +292,7 @@ VGUI_BuyMenu_Page(int buyPage) imgBuyItemPic.SetImage(""); winBuyMenuPage.Show(); - winBuyMenuPage.SetPos((video_res / 2) - (winBuyMenuPage.GetSize() / 2)); + winBuyMenuPage.SetPos((g_vidsize / 2) - (winBuyMenuPage.GetSize() / 2)); switch (buyPage) { case BUYPAGE_PISTOLS: @@ -386,6 +394,18 @@ VGUI_BuyMenu_Page(int buyPage) btnBuyItem8.Show(); btnBuyItem9.Hide(); +#if defined(CZERO) || defined(CSSOURCE) + if (inTeam == TEAM_CT) { + btnBuyItem9.SetTitle(Titles_GetTextBody("Famas")); + btnBuyItem9.SetTag(BUYITEM_FAMAS); + btnBuyItem9.Show(); + } else { + btnBuyItem9.SetTitle(Titles_GetTextBody("Galil")); + btnBuyItem9.SetTag(BUYITEM_GALIL); + btnBuyItem9.Show(); + } +#endif + btnBuyItem1.SetTitle(Titles_GetTextBody("AK47")); btnBuyItem1.SetTag(BUYITEM_AK47); btnBuyItem2.SetTitle(Titles_GetTextBody("Krieg552")); diff --git a/src/client/vgui_changeclass_ct.qc b/src/client/vgui_changeclass_ct.qc index f53f3fd..5c532fa 100644 --- a/src/client/vgui_changeclass_ct.qc +++ b/src/client/vgui_changeclass_ct.qc @@ -192,5 +192,5 @@ VGUI_ChooseClassCT(void) } winClassSelectionCT.Show(); - winClassSelectionCT.SetPos((video_res / 2) - (winClassSelectionCT.GetSize() / 2)); + winClassSelectionCT.SetPos((g_vidsize / 2) - (winClassSelectionCT.GetSize() / 2)); } \ No newline at end of file diff --git a/src/client/vgui_changeclass_t.qc b/src/client/vgui_changeclass_t.qc index d0fad34..bbe07d3 100644 --- a/src/client/vgui_changeclass_t.qc +++ b/src/client/vgui_changeclass_t.qc @@ -193,5 +193,5 @@ VGUI_ChooseClassT(void) } winClassSelection.Show(); - winClassSelection.SetPos((video_res / 2) - (winClassSelection.GetSize() / 2)); + winClassSelection.SetPos((g_vidsize / 2) - (winClassSelection.GetSize() / 2)); } \ No newline at end of file diff --git a/src/client/vgui_chooseteam.qc b/src/client/vgui_chooseteam.qc index f3ed81d..e5cb099 100644 --- a/src/client/vgui_chooseteam.qc +++ b/src/client/vgui_chooseteam.qc @@ -163,5 +163,5 @@ VGUI_ChooseTeam(void) } winChooseTeam.Show(); - winChooseTeam.SetPos((video_res / 2) - (winChooseTeam.GetSize() / 2)); + winChooseTeam.SetPos((g_vidsize / 2) - (winChooseTeam.GetSize() / 2)); } diff --git a/src/client/vgui_motd.qc b/src/client/vgui_motd.qc index 26c022d..2293217 100644 --- a/src/client/vgui_motd.qc +++ b/src/client/vgui_motd.qc @@ -68,5 +68,5 @@ VGUI_ShowMOTD(void) } winMotd.Show(); - winMotd.SetPos((video_res / 2) - (winMotd.GetSize() / 2)); + winMotd.SetPos((g_vidsize / 2) - (winMotd.GetSize() / 2)); } diff --git a/src/server/Makefile b/src/server/Makefile index 627019a..2fe44a4 100644 --- a/src/server/Makefile +++ b/src/server/Makefile @@ -1,4 +1,4 @@ -CC=fteqcc +QCC=fteqcc all: - $(CC) progs.src + $(QCC) progs.src diff --git a/src/server/ammo.qc b/src/server/ammo.qc index 87d2565..3fa4ed6 100644 --- a/src/server/ammo.qc +++ b/src/server/ammo.qc @@ -108,11 +108,12 @@ ammoinfo_t cs_ammoinfo[11] = { }; int -Ammo_BuyCaliber(player pl, int cal, int free) +Ammo_BuyCaliber(CSPlayer pl, int cal, int free) { int *ptr_ammo = __NULL__; int rv = 0; +#if 0 while (pl.money - cs_ammoinfo[cal].price > 0 || free) { switch (cal) { case CALIBER_50AE: @@ -166,6 +167,7 @@ Ammo_BuyCaliber(player pl, int cal, int free) rv = 1; } +#endif return rv; } @@ -173,9 +175,10 @@ Ammo_BuyCaliber(player pl, int cal, int free) void Ammo_BuySecondary(NSClientPlayer pp, int free) { +#if 0 int cal = 0; int ps = 0; - player pl = (player)pp; + CSPlayer pl = (CSPlayer)pp; for (int i = 1; i < g_weapons.length; i++) { if ((pl.g_items & g_weapons[i].id) && (g_weapons[i].slot == 1)) { @@ -210,6 +213,7 @@ Ammo_BuySecondary(NSClientPlayer pp, int free) Sound_Play(pl, CHAN_ITEM, "buy.ammo"); } Weapons_RefreshAmmo(pl); +#endif } /* We want to loop through all the possible weapons in case the server @@ -217,7 +221,7 @@ Ammo_BuySecondary(NSClientPlayer pp, int free) void CSEv_AmmoBuySecondary(void) { - player pl = (player)self; + CSPlayer pl = (CSPlayer)self; CSGameRules rules = (CSGameRules)g_grMode; if (rules.BuyingPossible(pl) == FALSE) { @@ -230,9 +234,10 @@ CSEv_AmmoBuySecondary(void) void Ammo_BuyPrimary(NSClientPlayer pp, int free) { +#if 0 int ps = 0; int cal = 0; - player pl = (player)pp; + CSPlayer pl = (CSPlayer)pp; for (int i = 1; i < g_weapons.length; i++) { if ((pl.g_items & g_weapons[i].id) && (g_weapons[i].slot == 0)) { @@ -258,6 +263,14 @@ Ammo_BuyPrimary(NSClientPlayer pp, int free) case WEAPON_TMP: cal = CALIBER_9MM; break; +#if defined(CZERO) || defined(CSSOURCE) + case WEAPON_GALIL: + cal = CALIBER_762MM; + break; + case WEAPON_FAMAS: + cal = CALIBER_762MM; + break; +#endif case WEAPON_AK47: cal = CALIBER_762MM; break; @@ -298,12 +311,13 @@ Ammo_BuyPrimary(NSClientPlayer pp, int free) } Weapons_RefreshAmmo(pl); +#endif } void CSEv_AmmoBuyPrimary(void) { - player pl = (player)self; + CSPlayer pl = (CSPlayer)self; CSGameRules rules = (CSGameRules)g_grMode; if (rules.BuyingPossible(pl) == FALSE) { @@ -316,7 +330,7 @@ CSEv_AmmoBuyPrimary(void) void Ammo_AutoFill(NSClientPlayer pp) { - player pl = (player)pp; + CSPlayer pl = (CSPlayer)pp; if (autocvar_fcs_fillweapons == FALSE) { return; diff --git a/src/server/armoury_entity.qc b/src/server/armoury_entity.qc index d0148c4..83f6660 100644 --- a/src/server/armoury_entity.qc +++ b/src/server/armoury_entity.qc @@ -53,26 +53,26 @@ List of available items: var int autocvar_fcs_nopickups = FALSE; -int g_cstrike_armouryitems[19] = { - WEAPON_MP5, - WEAPON_TMP, - WEAPON_P90, - WEAPON_MAC10, - WEAPON_AK47, - WEAPON_SG552, - WEAPON_M4A1, - WEAPON_AUG, - WEAPON_SCOUT, - WEAPON_G3SG1, - WEAPON_AWP, - WEAPON_M3, - WEAPON_XM1014, - WEAPON_PARA, - WEAPON_FLASHBANG, - WEAPON_HEGRENADE, - 0,/*EQUIPMENT_KEVLAR,*/ - 0,/*EQUIPMENT_HELMET,*/ - WEAPON_SMOKEGRENADE +string g_cstrike_armouryitems[19] = { + "weapon_mp5navy", + "weapon_tmp", + "weapon_p90", + "weapon_max10", + "weapon_ak47", + "weapon_sg552", + "weapon_m4a1", + "weapon_aug", + "weapon_scout", + "weapon_g3sg1", + "weapon_awp", + "weapon_m3", + "weapon_xm1014", + "weapon_m249", + "weapon_flashbang", + "weapon_hegrenade", + "equipment_kevlar", + "equipment_helmet", + "weapon_smokegrenade" }; string g_cstrike_armourymodels[19] = { @@ -165,12 +165,12 @@ armoury_entity::Restore(string strKey, string strValue) void armoury_entity::Touch(entity eToucher) { - player pl; + CSPlayer pl; if (eToucher.classname != "player") { return; } - pl = (player)eToucher; + pl = (CSPlayer)eToucher; /* armor is separate from weapons */ if (m_iID == 17 || m_iID == 16) { @@ -194,7 +194,7 @@ armoury_entity::Touch(entity eToucher) sound(pl, CHAN_ITEM, "items/tr_kevlar.wav", 1, ATTN_NORM); } else { /* weapon pickup code */ - if (Weapons_AddItem(pl, g_cstrike_armouryitems[m_iID], -1) == FALSE) + if (pl.GiveItem(g_cstrike_armouryitems[m_iID]) == FALSE) return; sound(pl, CHAN_ITEM, "items/gunpickup2.wav", 1, ATTN_NORM); @@ -211,7 +211,7 @@ armoury_entity::Touch(entity eToucher) void armoury_entity::Respawn(void) { - SetOrigin(GetSpawnOrigin()); + super::Respawn(); SetSolid(SOLID_TRIGGER); SetModel(g_cstrike_armourymodels[m_iID]); SetSize([-16,-16,0], [16,16,16]); diff --git a/src/server/bot.qc b/src/server/bot.qc index 5ef69d6..360ea1b 100644 --- a/src/server/bot.qc +++ b/src/server/bot.qc @@ -159,31 +159,8 @@ void csbot::Roam(vector roamOrigin, int maxDistance) { randLoc.x += sin(radian) * distance; randLoc.y += cos(radian) * distance; - /* Find closest waypoint to our random location. */ - float flBestDist = COST_INFINITE; - int iBestNodeIndex = -1; - for (int i = 0; i < g_iNodes; i++) { - float fDist = vlen(g_pNodes[i].origin - randLoc) - g_pNodes[i].radius; - - if (fDist > (float)maxDistance) { - /* Distance is greater then our maxDistance */ - continue; - } - - if (fDist < flBestDist) { - flBestDist = fDist; - iBestNodeIndex = i; - } - } - - if (iBestNodeIndex == -1) { - /* TODO No waypoint in range found */ - print("WARNING!: Roaming failed, could not find waypoint in range.\n"); - return; - } - /* Go to the random waypoint. */ - RouteToPosition(g_pNodes[iBestNodeIndex].origin); + RouteToPosition(Nodes_PositionOfClosestNode(randLoc)); } void @@ -236,7 +213,7 @@ csbot::CreateObjective(void) } else { /* Aim at the bomb. */ input_buttons |= INPUT_BUTTON8; // duck - if ((flags & FL_ONUSABLE)) { + if ((HasVFlags(VFL_ONUSABLE))) { // Aimed at the bomb, ready to defuse! ChatSayTeam("Defusing!"); input_buttons |= INPUT_BUTTON5; @@ -262,13 +239,14 @@ csbot::CreateObjective(void) else { if (team == TEAM_T) { /* T-bot: plant bomb */ - if ((g_items & ITEM_C4BOMB)) { + if (HasItem("weapon_c4")) { /* We carry the bomb */ if (m_gflagsBackup & GF_BOMBZONE) { /* We are at a bombsite and ready to plant the bomb */ if (activeweapon != WEAPON_C4BOMB) { + /* TODO: REPLACE THIS WITH NSNAVAI METHOD */ activeweapon = WEAPON_C4BOMB; - Weapons_Draw((player)self); + //Weapons_Draw((CSPlayer)self); } if (!m_actionIsPlanting) { @@ -346,27 +324,17 @@ void csbot::AimLerp(vector aimpos, float flLerp) { vector oldAngle = v_angle; /* that's the old angle */ - makevectors(v_angle); - vecNewAngles = v_forward; + vecNewAngles = anglesToForward(v_angle); /* aimdir = new final angle */ - aimdir = vectoangles(aimpos - origin); - makevectors(aimdir); + aimdir = vectorToAngles(aimpos - origin); /* slowly lerp towards the final angle */ - vecNewAngles[0] = Math_Lerp(vecNewAngles[0], v_forward[0], flLerp); - vecNewAngles[1] = Math_Lerp(vecNewAngles[1], v_forward[1], flLerp); - vecNewAngles[2] = Math_Lerp(vecNewAngles[2], v_forward[2], flLerp); + vecNewAngles = vectorLerp(vecNewAngles, anglesToForward(aimdir), flLerp); /* make sure we're aiming tight */ - v_angle = vectoangles(vecNewAngles); - v_angle[0] = Math_FixDelta(v_angle[0]); - v_angle[1] = Math_FixDelta(v_angle[1]); - v_angle[2] = Math_FixDelta(v_angle[2]); - angles[0] = Math_FixDelta(v_angle[0]); - angles[1] = Math_FixDelta(v_angle[1]); - angles[2] = Math_FixDelta(v_angle[2]); - input_angles = v_angle; + v_angle = vectorToAngles(vecNewAngles); + input_angles = angles = v_angle = fixAngle(v_angle); } void @@ -386,6 +354,7 @@ csbot::WeaponThink(void) if (activeweapon == WEAPON_KNIFE) return; +#if FIXME /* clip empty */ if (a_ammo1 == 0) { /* still got ammo left, reload! */ @@ -396,6 +365,7 @@ csbot::WeaponThink(void) Weapons_SwitchBest(this); } } +#endif }; /** @brief Get entity by class name and index **/ @@ -491,7 +461,7 @@ CSBot_BuyStart_Shop(void) { int done = 0; int count = 0; - player pl = (player)self; + CSPlayer pl = (CSPlayer)self; pl.team = infokeyf(pl, "*team"); @@ -546,6 +516,7 @@ CSBot_BuyStart_Shop(void) CSEv_BuyEquipment_f(1); } +#if FIXME /* make SURE we switch to it */ for (int i = 0; i < g_weapons.length; i++) if (pl.g_items & g_weapons[i].id) { @@ -553,6 +524,7 @@ CSBot_BuyStart_Shop(void) Weapons_Draw(pl); return; } +#endif /* force buy right now */ CSEv_AmmoBuyPrimary(); diff --git a/src/server/buy.qc b/src/server/buy.qc index 4c773e8..85fb9ac 100644 --- a/src/server/buy.qc +++ b/src/server/buy.qc @@ -17,10 +17,11 @@ void CSEv_BuyWeapon_f(float fWeapon) { +#if 0 CSGameRules rules = (CSGameRules)g_grMode; int iWeapon; - player pl = (player)self; + CSPlayer pl = (CSPlayer)self; iWeapon = (int)fWeapon; if (rules.BuyingPossible(pl) == FALSE) { @@ -77,15 +78,17 @@ CSEv_BuyWeapon_f(float fWeapon) } else { //centerprint(pl, "You have insufficient funds!"); } +#endif } void CSEv_BuyEquipment_f(float fUtil) { +#if 0 CSGameRules rules = (CSGameRules)g_grMode; int iUtil; - player pl = (player)self; + CSPlayer pl = (CSPlayer)self; iUtil = (int)fUtil; if (rules.BuyingPossible(pl) == FALSE) { @@ -162,10 +165,10 @@ CSEv_BuyEquipment_f(float fUtil) Sound_Play(pl, CHAN_ITEM, "buy.weapon"); break; case 6: - if (pl.g_items & ITEM_NIGHTVISION) + if (pl.m_bHasNightvision == true) return; - pl.g_items |= ITEM_NIGHTVISION; + pl.m_bHasNightvision = true; Sound_Play(pl, CHAN_ITEM, "buy.weapon"); break; } @@ -173,4 +176,5 @@ CSEv_BuyEquipment_f(float fUtil) } else { centerprint(pl, "You have insufficient funds!"); } +#endif } diff --git a/src/server/func_bomb_target.qc b/src/server/func_bomb_target.qc index 6096b70..0462ee3 100644 --- a/src/server/func_bomb_target.qc +++ b/src/server/func_bomb_target.qc @@ -51,7 +51,7 @@ func_bomb_target::Respawn(void) void func_bomb_target::Touch(entity eToucher) { - player pl = (player)eToucher; + CSPlayer pl = (CSPlayer)eToucher; if (!(eToucher.flags & FL_CLIENT)) { return; diff --git a/src/server/func_buyzone.qc b/src/server/func_buyzone.qc index 3f1b457..f7f883c 100644 --- a/src/server/func_buyzone.qc +++ b/src/server/func_buyzone.qc @@ -76,7 +76,7 @@ func_buyzone::SpawnKey(string strKey, string strValue) void func_buyzone::Touch(entity eToucher) { - player pl = (player)eToucher; + CSPlayer pl = (CSPlayer)eToucher; if (!(eToucher.flags & FL_CLIENT)) return; diff --git a/src/server/func_escapezone.qc b/src/server/func_escapezone.qc index 136d6ce..cf1d6f3 100644 --- a/src/server/func_escapezone.qc +++ b/src/server/func_escapezone.qc @@ -61,7 +61,7 @@ func_escapezone::Touch(entity eToucher) if (to_escape > 3) to_escape = 3; - player pl = (player)eToucher; + CSPlayer pl = (CSPlayer)eToucher; /* don't matter when rules are not active */ if (g_cs_gamestate != GAME_ACTIVE) @@ -78,7 +78,7 @@ func_escapezone::Touch(entity eToucher) /* balancing tweak: for every escaped T, each and every CT will lose funds */ if (autocvar_fcs_escapepenalty != 0) { for (entity eFind = world; (eFind = find(eFind, ::classname, "player"));) { - player ct = (player)eFind; + CSPlayer ct = (CSPlayer)eFind; if (ct.team == TEAM_CT) { Money_AddMoney(ct, autocvar_fcs_escapepenalty); diff --git a/src/server/func_hostage_rescue.qc b/src/server/func_hostage_rescue.qc index ba5e17a..845f83a 100644 --- a/src/server/func_hostage_rescue.qc +++ b/src/server/func_hostage_rescue.qc @@ -52,7 +52,7 @@ void func_hostage_rescue::Touch(entity eToucher) { if (eToucher.flags & FL_CLIENT) { - player pl = (player)eToucher; + CSPlayer pl = (CSPlayer)eToucher; pl.gflags |= GF_RESCUEZONE; return; } @@ -61,7 +61,7 @@ func_hostage_rescue::Touch(entity eToucher) return; } - hostage_entity hosty = (hostage_entity)eToucher; + CSHostage hosty = (CSHostage)eToucher; if (hosty.GetSolid() == SOLID_NOT) { return; @@ -73,7 +73,7 @@ func_hostage_rescue::Touch(entity eToucher) Radio_BroadcastMessage(RADIO_RESCUED); g_cs_hostagesrescued++; - Money_AddMoney((player)hosty.m_eFollowing, 1000); + Money_AddMoney((CSPlayer)hosty.m_eFollowing, 1000); CSBot_HostageRescueNotify(); /* In Hostage Rescue, all Counter-Terrorists receive an $850 diff --git a/src/server/func_vip_safetyzone.qc b/src/server/func_vip_safetyzone.qc index f344562..f588375 100644 --- a/src/server/func_vip_safetyzone.qc +++ b/src/server/func_vip_safetyzone.qc @@ -52,7 +52,7 @@ func_vip_safetyzone::Touch(entity eToucher) { CSMultiplayerRules rule = (CSMultiplayerRules)g_grMode; - player pl = (player)eToucher; + CSPlayer pl = (CSPlayer)eToucher; if (pl.classname != "player") return; diff --git a/src/server/game_money.qc b/src/server/game_money.qc index a5932cf..b29ab41 100644 --- a/src/server/game_money.qc +++ b/src/server/game_money.qc @@ -17,7 +17,7 @@ void Money_AddMoney(NSClientPlayer pp, int iMoneyValue) { - player pl = (player)pp; + CSPlayer pl = (CSPlayer)pp; dprint(sprintf("^2Money_AddMoney^7: giving %s $%i\n", pl.netname, iMoneyValue)); pl.money += (float)iMoneyValue; diff --git a/src/server/gamerules.h b/src/server/gamerules.h index ecaf505..2988265 100644 --- a/src/server/gamerules.h +++ b/src/server/gamerules.h @@ -16,7 +16,6 @@ class CSGameRules:CGameRules { - virtual void PlayerKill(NSClientPlayer); virtual void PlayerPreFrame(NSClientPlayer); virtual void PlayerDeath(NSClientPlayer); virtual void PlayerPain(NSClientPlayer); diff --git a/src/server/gamerules.qc b/src/server/gamerules.qc index 4f9be0e..23f765e 100644 --- a/src/server/gamerules.qc +++ b/src/server/gamerules.qc @@ -49,7 +49,7 @@ CSGameRules::PlayerPreFrame(NSClientPlayer pp) void CSGameRules::LevelDecodeParms(NSClientPlayer pp) { - player pl = (player)pp; + CSPlayer pl = (CSPlayer)pp; g_landmarkpos[0] = parm1; g_landmarkpos[1] = parm2; g_landmarkpos[2] = parm3; @@ -62,45 +62,9 @@ CSGameRules::LevelDecodeParms(NSClientPlayer pp) pl.g_items = parm10; pl.activeweapon = parm11; pl.flags = parm64; - - pl.ammo_50ae = parm12; - pl.ammo_762mm = parm13; - pl.ammo_556mm = parm14; - pl.ammo_556mmbox = parm15; - pl.ammo_338mag = parm16; - pl.ammo_9mm = parm17; - pl.ammo_buckshot = parm18; - pl.ammo_45acp = parm19; - pl.ammo_357sig = parm20; - pl.ammo_57mm = parm21; - pl.ammo_hegrenade = parm22; - pl.ammo_fbgrenade = parm23; - pl.ammo_smokegrenade = parm24; - pl.usp45_mag = parm25; - pl.glock18_mag = parm26; - pl.deagle_mag = parm27; - pl.p228_mag = parm28; - pl.elites_mag = parm29; - pl.fiveseven_mag = parm30; - pl.m3_mag = parm31; - pl.xm1014_mag = parm32; - pl.mp5_mag = parm33; - pl.p90_mag = parm34; - pl.ump45_mag = parm35; - pl.mac10_mag = parm36; - pl.tmp_mag = parm37; - pl.ak47_mag = parm38; - pl.sg552_mag = parm39; - pl.m4a1_mag = parm40; - pl.aug_mag = parm41; - pl.scout_mag = parm42; - pl.awp_mag = parm43; - pl.g3sg1_mag = parm44; - pl.sg550_mag = parm45; - pl.para_mag = parm46; pl.gflags = parm63; - if (pl.flags & FL_CROUCHING) { + if (pl.IsCrouching()) { setsize(pl, VEC_CHULL_MIN, VEC_CHULL_MAX); } else { setsize(pl, VEC_HULL_MIN, VEC_HULL_MAX); @@ -110,7 +74,7 @@ CSGameRules::LevelDecodeParms(NSClientPlayer pp) void CSGameRules::LevelChangeParms(NSClientPlayer pp) { - player pl = (player)pp; + CSPlayer pl = (CSPlayer)pp; parm1 = g_landmarkpos[0]; parm2 = g_landmarkpos[1]; parm3 = g_landmarkpos[2]; @@ -124,42 +88,6 @@ CSGameRules::LevelChangeParms(NSClientPlayer pp) parm64 = pl.flags; parm10 = pl.g_items; parm11 = pl.activeweapon; - - parm12 = pl.ammo_50ae; - parm13 = pl.ammo_762mm; - parm14 = pl.ammo_556mm; - parm15 = pl.ammo_556mmbox; - parm16 = pl.ammo_338mag; - parm17 = pl.ammo_9mm; - parm18 = pl.ammo_buckshot; - parm19 = pl.ammo_45acp; - parm20 = pl.ammo_357sig; - parm21 = pl.ammo_57mm; - parm22 = pl.ammo_hegrenade; - parm23 = pl.ammo_fbgrenade; - parm24 = pl.ammo_smokegrenade; - parm25 = pl.usp45_mag; - parm26 = pl.glock18_mag; - parm27 = pl.deagle_mag; - parm28 = pl.p228_mag; - parm29 = pl.elites_mag; - parm30 = pl.fiveseven_mag; - parm31 = pl.m3_mag; - parm32 = pl.xm1014_mag; - parm33 = pl.mp5_mag; - parm34 = pl.p90_mag; - parm35 = pl.ump45_mag; - parm36 = pl.mac10_mag; - parm37 = pl.tmp_mag; - parm38 = pl.ak47_mag; - parm39 = pl.sg552_mag; - parm40 = pl.m4a1_mag; - parm41 = pl.aug_mag; - parm42 = pl.scout_mag; - parm43 = pl.awp_mag; - parm44 = pl.g3sg1_mag; - parm45 = pl.sg550_mag; - parm46 = pl.para_mag; } void @@ -175,28 +103,10 @@ CSGameRules::LevelNewParms(void) parm64 = FL_CLIENT; } -void -CSGameRules::PlayerKill(NSClientPlayer pl) -{ - 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 CSGameRules::ImpulseCommand(NSClient bp, float num) { switch (num) { - case 100: - TriggerFlashlight(bp); - break; default: return super::ImpulseCommand(bp, num); } diff --git a/src/server/gamerules_deathmatch.qc b/src/server/gamerules_deathmatch.qc index dbe7969..1b9cdba 100644 --- a/src/server/gamerules_deathmatch.qc +++ b/src/server/gamerules_deathmatch.qc @@ -119,7 +119,7 @@ CSDeathmatchRules::PlayerDeath(NSClientPlayer pl) /* explode all satchels */ s_satchel_detonate((entity)pl); /* drop their posessions into a weaponbox item */ - weaponbox_spawn((player)pl); + weaponbox_spawn((CSPlayer)pl); #endif /* either gib, or make a corpse */ @@ -128,12 +128,12 @@ CSDeathmatchRules::PlayerDeath(NSClientPlayer pl) float gibStrength = g_dmg_iDamage * 2.0f; BreakModel_Entity(pl, gibDir, gibStrength); } else { - FX_Corpse_Spawn((player)pl, ANIM_DEATH1); - //FX_Corpse_Spawn((player)pl, ANIM_DIESIMPLE); + FX_Corpse_Spawn((CSPlayer)pl, ANIM_DEATH1); + //FX_Corpse_Spawn((CSPlayer)pl, ANIM_DIESIMPLE); } /* now let's make the real client invisible */ - pl.Death(); + //pl.Death(); pl.SetTakedamage(DAMAGE_NO); pl.gflags &= ~GF_FLASHLIGHT; @@ -149,7 +149,7 @@ CSDeathmatchRules::PlayerDeath(NSClientPlayer pl) void CSDeathmatchRules::PlayerSpawn(NSClientPlayer pp) { - player pl = (player)pp; + CSPlayer pl = (CSPlayer)pp; /* this is where the mods want to deviate */ entity spot; @@ -223,7 +223,7 @@ CSDeathmatchRules::PlayerSpawn(NSClientPlayer pp) pl.SetInfoKey("*dead", "0"); pl.SetInfoKey("*deaths", ftos(pl.deaths)); pl.SetPropData("actor_human"); - pl.SetCanBleed(true); + pl.EnableBleeding(); LevelNewParms(); LevelDecodeParms(pl); @@ -232,9 +232,9 @@ CSDeathmatchRules::PlayerSpawn(NSClientPlayer pp) pl.activeweapon = WEAPON_KNIFE; int randomGun = (int)rint(random(WEAPON_USP45, WEAPON_FIVESEVEN)); - Weapons_AddItem(pl, randomGun, -1); + //Weapons_AddItem(pl, randomGun, -1); randomGun = (int)rint(random(WEAPON_M3, WEAPON_PARA)); - Weapons_AddItem(pl, randomGun, -1); + //Weapons_AddItem(pl, randomGun, -1); pl.activeweapon = randomGun; Ammo_BuyPrimary(pl, TRUE); @@ -242,7 +242,6 @@ CSDeathmatchRules::PlayerSpawn(NSClientPlayer pp) spot = Spawn_SelectRandom("info_player_deathmatch"); pl.Transport(spot.origin, spot.angles); - Weapons_RefreshAmmo(pl); Client_FixAngle(pl, pl.angles); } diff --git a/src/server/gamerules_multiplayer.qc b/src/server/gamerules_multiplayer.qc index 7215382..677bd2e 100644 --- a/src/server/gamerules_multiplayer.qc +++ b/src/server/gamerules_multiplayer.qc @@ -14,6 +14,14 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#ifdef CSSOURCE + #define SPAWNPOINT_CT "info_player_counterterrorist" + #define SPAWNPOINT_T "info_player_terrorist" +#else + #define SPAWNPOINT_CT "info_player_start" + #define SPAWNPOINT_T "info_player_deathmatch" +#endif + string CSMultiplayerRules::Title(void) { @@ -42,12 +50,12 @@ CSMultiplayerRules::PlayerDisconnect(NSClientPlayer pl) void CSMultiplayerRules::PlayerDeath(NSClientPlayer pl) { - player targ = (player)g_dmg_eTarget; - player attk = (player)g_dmg_eAttacker; + CSPlayer targ = (CSPlayer)g_dmg_eTarget; + CSPlayer attk = (CSPlayer)g_dmg_eAttacker; NSRenderableEntity newCorpse; float deathAnimation = ANIM_DEATH1; - if (targ.flags & FL_CROUCHING) { + if (targ.IsCrouching()) { deathAnimation = ANIM_CROUCH_DIE; } else { switch (g_dmg_iHitBody) { @@ -128,21 +136,25 @@ CSMultiplayerRules::PlayerDeath(NSClientPlayer pl) targ.SetInfoKey("*icon1_b", "0"); } - Weapon_DropCurrentWeapon(targ); + /* TODO: implement this in NSNavAI */ + //targ.DropActiveWeapon(); + + ///Weapon_DropCurrentWeapon(targ); /* if we're the bomb carrier, make sure we drop the bomb. */ - if (targ.g_items & ITEM_C4BOMB) { - targ.activeweapon = WEAPON_C4BOMB; - Weapon_DropCurrentWeapon(targ); + if (targ.HasItem("weapon_c4")) { + //targ.SwitchToWeapon("weapon_c4"); + //Weapon_DropCurrentWeapon(targ); } else { - targ.activeweapon = Cstrike_WeaponToDropUponDeath(targ); - Weapon_DropCurrentWeapon(targ); + //targ.activeweapon = Cstrike_WeaponToDropUponDeath(targ); + //Weapon_DropCurrentWeapon(targ); } /* clear all ammo and inventory... */ - PlayerClearWeaponry(targ); - targ.Death(); + targ.RemoveAllWeapons(); +// targ.Death(); targ.gflags &= ~GF_FLASHLIGHT; + targ.m_bHasNightvision = false; targ.StartSoundDef("Player.Death", CHAN_AUTO, true); @@ -170,7 +182,7 @@ CSMultiplayerRules::PlayerPreFrame(NSClientPlayer pl) happen here */ { vector sourcePos, destPos; - player p = (player)pl; + CSPlayer p = (CSPlayer)pl; sourcePos = pl.GetEyePos(); destPos = sourcePos + (pl.GetForward() * 512); @@ -235,7 +247,7 @@ CSMultiplayerRules::CreateRescueZones(void) return; /* hostage zones need to go somewhere */ - for (entity e = world; (e = find(e, ::classname, "info_player_start"));) { + for (entity e = world; (e = find(e, ::classname, SPAWNPOINT_CT));) { info_hostage_rescue newzone = spawn(info_hostage_rescue, origin: e.origin); newzone.Respawn(); } @@ -258,7 +270,7 @@ CSMultiplayerRules::CreateCTBuyzones(void) return; /* since no buyzones are available, let's create one around every CT spawn */ - for (entity e = world; (e = find(e, ::classname, "info_player_start"));) { + for (entity e = world; (e = find(e, ::classname, SPAWNPOINT_CT));) { info_buyzone newzone = spawn(info_buyzone, origin: e.origin); newzone.Respawn(); newzone.team = TEAM_CT; @@ -282,7 +294,7 @@ CSMultiplayerRules::CreateTBuyzones(void) return; /* since no buyzones are available, let's create one around every T spawn */ - for (entity e = world; (e = find(e, ::classname, "info_player_deathmatch"));) { + for (entity e = world; (e = find(e, ::classname, SPAWNPOINT_T));) { info_buyzone newzone = spawn(info_buyzone, origin: e.origin); newzone.Respawn(); newzone.team = TEAM_T; @@ -292,6 +304,39 @@ CSMultiplayerRules::CreateTBuyzones(void) void CSMultiplayerRules::InitPostEnts(void) { + EntityDef_Precache("CSBasePistol"); + EntityDef_Precache("CSBaseRifle"); + EntityDef_Precache("CSBaseShotgun"); + EntityDef_Precache("weapon_ak47"); + EntityDef_Precache("weapon_aug"); + EntityDef_Precache("weapon_awp"); + EntityDef_Precache("weapon_c4"); + EntityDef_Precache("weapon_deagle"); + EntityDef_Precache("weapon_elites"); + EntityDef_Precache("weapon_famas"); + EntityDef_Precache("weapon_fiveseven"); + EntityDef_Precache("weapon_flashbang"); + EntityDef_Precache("weapon_g3sg1"); + EntityDef_Precache("weapon_galil"); + EntityDef_Precache("weapon_glock18"); + EntityDef_Precache("weapon_hegrenade"); + EntityDef_Precache("weapon_knife"); + EntityDef_Precache("weapon_m249"); + EntityDef_Precache("weapon_m3"); + EntityDef_Precache("weapon_m4a1"); + EntityDef_Precache("weapon_mac10"); + EntityDef_Precache("weapon_mp5navy"); + EntityDef_Precache("weapon_p228"); + EntityDef_Precache("weapon_p90"); + EntityDef_Precache("weapon_scout"); + EntityDef_Precache("weapon_sg550"); + EntityDef_Precache("weapon_sg552"); + EntityDef_Precache("weapon_smokegrenade"); + EntityDef_Precache("weapon_tmp"); + EntityDef_Precache("weapon_ump45"); + EntityDef_Precache("weapon_usp"); + EntityDef_Precache("weapon_xm1014"); + MOTD_LoadDefault(); /* let's check if we need to create buyzones */ @@ -482,7 +527,7 @@ CSMultiplayerRules::BuyingPossible(NSClientPlayer pl) void CSMultiplayerRules::MakeBomber(NSClientPlayer pl) { - Weapons_AddItem(pl, WEAPON_C4BOMB, -1); + pl.GiveItem("weapon_c4"); env_message_single(pl, "Hint_you_have_the_bomb"); } @@ -511,7 +556,7 @@ CSMultiplayerRules::RestartRound(int iWipe) m_iSwapTeamRoundCounter = 0; for (entity eFind = world; (eFind = find(eFind, ::classname, "player"));) { - player pl = (player)eFind; + CSPlayer pl = (CSPlayer)eFind; if (pl.team == TEAM_T) { pl.team = TEAM_CT; /* temp for CT */ @@ -532,7 +577,7 @@ CSMultiplayerRules::RestartRound(int iWipe) if (!(eFind.flags & FL_CLIENT)) continue; - player pl = (player)eFind; + CSPlayer pl = (CSPlayer)eFind; if (pl.health > 0 && iWipe == FALSE) { PlayerRespawn(pl, pl.team); @@ -551,7 +596,7 @@ CSMultiplayerRules::RestartRound(int iWipe) if (!(eFind.flags & FL_CLIENT)) continue; - player pl = (player)eFind; + CSPlayer pl = (CSPlayer)eFind; if (pl.health > 0 && iWipe == FALSE) { PlayerRespawn(pl, pl.team); @@ -572,7 +617,7 @@ CSMultiplayerRules::RestartRound(int iWipe) if (!(eFind.flags & FL_CLIENT)) continue; - player pl = (player)eFind; + CSPlayer pl = (CSPlayer)eFind; pl.team = TEAM_CT; if (pl.health > 0 && iWipe == FALSE) { @@ -590,7 +635,7 @@ CSMultiplayerRules::RestartRound(int iWipe) } for (entity eFind = world; (eFind = find(eFind, ::classname, "tempdecal"));) { - decal dec = (decal)eFind; + NSDecal dec = (NSDecal)eFind; dec.m_strTexture = ""; dec.SendFlags = -1; } @@ -598,12 +643,6 @@ CSMultiplayerRules::RestartRound(int iWipe) NSEntity e = (NSEntity)eFind; e.Destroy(); } - // Remove potential bomb backpack model from the world, else bots will go - // chase a ghost. - entity e = find(world, ::model, "models/w_backpack.mdl"); - if (e != world) { - remove(e); - } WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET); WriteByte(MSG_MULTICAST, EV_CLEARDECALS); @@ -620,7 +659,7 @@ CSMultiplayerRules::RestartRound(int iWipe) iPickT++; if (iPickT == iRandomT) { - MakeBomber((player)eFind); + MakeBomber((CSPlayer)eFind); } } } @@ -635,7 +674,7 @@ CSMultiplayerRules::RestartRound(int iWipe) if (eFind.team == TEAM_CT) { iPickCT++; if (iPickCT == iRandomCT) { - MakeVIP((player)eFind); + MakeVIP((CSPlayer)eFind); } } } @@ -658,7 +697,10 @@ CSMultiplayerRules::RestartRound(int iWipe) } } +#ifdef BOT CSBot_BuyStart(); +#endif + TimerBegin(autocvar_mp_freezetime, GAME_FREEZE); Money_ResetTeamReward(); } @@ -751,7 +793,7 @@ CSMultiplayerRules::SwitchTeams(void) int iCTW, iTW; for (entity eFind = world; (eFind = find(eFind, ::classname, "player"));) { - player pl = (player)eFind; + CSPlayer pl = (CSPlayer)eFind; if (pl.team == TEAM_CT) { pl.team = TEAM_T; pl.charmodel -= 4; @@ -866,24 +908,24 @@ CSMultiplayerRules::PlayerFindSpawn(float t) entity point = world; if (t == TEAM_T) { - m_eLastTSpawn = find(m_eLastTSpawn, ::classname, "info_player_deathmatch"); + m_eLastTSpawn = find(m_eLastTSpawn, ::classname, SPAWNPOINT_T); if (m_eLastTSpawn == world) { - m_eLastTSpawn = find(m_eLastTSpawn, ::classname, "info_player_deathmatch"); + m_eLastTSpawn = find(m_eLastTSpawn, ::classname, SPAWNPOINT_T); } point = m_eLastTSpawn; } else if (t == TEAM_CT) { - m_eLastCTSpawn = find(m_eLastCTSpawn, ::classname, "info_player_start"); + m_eLastCTSpawn = find(m_eLastCTSpawn, ::classname, SPAWNPOINT_CT); if (m_eLastCTSpawn == world) { - m_eLastCTSpawn = find(m_eLastCTSpawn, ::classname, "info_player_start"); + m_eLastCTSpawn = find(m_eLastCTSpawn, ::classname, SPAWNPOINT_CT); } point = m_eLastCTSpawn; } else if (t == TEAM_VIP) { point = find(world, ::classname, "info_vip_start"); if (!point) - point = find(m_eLastTSpawn, ::classname, "info_player_start"); + point = find(m_eLastTSpawn, ::classname, SPAWNPOINT_CT); } if (point == world) { @@ -903,35 +945,29 @@ Called whenever a player survived a round and needs a basic respawn. void CSMultiplayerRules::PlayerRespawn(NSClientPlayer pp, int fTeam) { - player pl = (player)pp; - - entity eSpawn; - forceinfokey(pl, "*spec", "0"); - eSpawn = PlayerFindSpawn(pl.team); - - pl.classname = "player"; - pl.health = pl.max_health = 100; - forceinfokey(pl, "*dead", "0"); - CountPlayers(); - - pl.takedamage = DAMAGE_YES; - pl.solid = SOLID_SLIDEBOX; - pl.movetype = MOVETYPE_WALK; - pl.flags = FL_CLIENT; - pl.iBleeds = TRUE; - pl.viewzoom = 1.0; - pl.g_items &= ~ITEM_C4BOMB; + CSPlayer pl = (CSPlayer)pp; + NSEntity eSpawn = (NSEntity)PlayerFindSpawn(pl.team); + pl.MakePlayer(); + pl.GiveItem("item_suit"); pl.SetOrigin(eSpawn.origin); - pl.angles = eSpawn.angles; - pl.SendFlags = UPDATE_ALL; + pl.SetAngles(eSpawn.angles); Client_FixAngle(pl, pl.angles); + CountPlayers(); + pl.SetInfoKey("*icon1", ""); pl.SetInfoKey("*icon1_r", "1"); pl.SetInfoKey("*icon1_g", "1"); pl.SetInfoKey("*icon1_b", "1"); + /* VIP starts with 200 armor and an extra mag */ + if (pl.team == TEAM_VIP) { + pl.SetArmor(200); + pl.GiveItem("weapon_usp"); + } + +#ifndef CSSOURCE switch (pl.charmodel) { case 1: pl.model = "models/player/terror/terror.mdl"; @@ -960,118 +996,89 @@ CSMultiplayerRules::PlayerRespawn(NSClientPlayer pp, int fTeam) default: pl.model = "models/player/vip/vip.mdl"; } +#else + switch (pl.charmodel) { + case 1: + pl.model = "models/player/t_phoenix.mdl"; + break; + case 2: + pl.model = "models/player/t_leet.mdl"; + break; + case 3: + pl.model = "models/player/t_arctic.mdl"; + break; + case 4: + pl.model = "models/player/t_guerilla.mdl"; + break; + case 5: + pl.model = "models/player/ct_urban.mdl"; + break; + case 6: + pl.model = "models/player/ct_gsg9.mdl"; + break; + case 7: + pl.model = "models/player/ct_sas.mdl"; + break; + case 8: + pl.model = "models/player/ct_gign.mdl"; + break; + default: + pl.model = "models/player/vip/vip.mdl"; + } +#endif pl.SetModel(pl.model); pl.SetSize(VEC_HULL_MIN, VEC_HULL_MAX); - pl.velocity = [0,0,0]; + pl.ClearVelocity(); pl.progress = 0.0f; - Weapons_SwitchBest(pl); + /* TODO: Implement this in NSNavAI*/ + //Weapons_SwitchBest(pl); Ammo_AutoFill(pl); } void CSMultiplayerRules::PlayerClearWeaponry(NSClientPlayer pp) { - player pl = (player)pp; + CSPlayer pl = (CSPlayer)pp; pl.g_items = 0x0; pl.activeweapon = 0; - pl.ammo_50ae = 0; - pl.ammo_762mm = 0; - pl.ammo_556mm = 0; - pl.ammo_556mmbox = 0; - pl.ammo_338mag = 0; - pl.ammo_9mm = 0; - pl.ammo_buckshot = 0; - pl.ammo_45acp = 0; - pl.ammo_357sig = 0; - pl.ammo_57mm = 0; - pl.ammo_hegrenade = 0; - pl.ammo_fbgrenade = 0; - pl.ammo_smokegrenade = 0; - pl.usp45_mag = 0; - pl.glock18_mag = 0; - pl.deagle_mag = 0; - pl.p228_mag = 0; - pl.elites_mag = 0; - pl.fiveseven_mag = 0; - pl.m3_mag = 0; - pl.xm1014_mag = 0; - pl.mp5_mag = 0; - pl.p90_mag = 0; - pl.ump45_mag = 0; - pl.mac10_mag = 0; - pl.tmp_mag = 0; - pl.ak47_mag = 0; - pl.sg552_mag = 0; - pl.m4a1_mag = 0; - pl.aug_mag = 0; - pl.scout_mag = 0; - pl.awp_mag = 0; - pl.g3sg1_mag = 0; - pl.sg550_mag = 0; - pl.para_mag = 0; pl.viewzoom = 1.0f; - pl.mode_temp = 0; -} - -/* -================= -PlayerMakePlayable - -Called whenever need a full-reinit of a player. -This may be after a player had died or when the game starts for the first time. -================= -*/ - -static void -MakePlayable(entity targ) -{ - entity oself = self; - self = targ; - - if (clienttype(targ) != CLIENTTYPE_REAL) - spawnfunc_csbot(); - else - spawnfunc_player(); - - self = oself; + pl.m_bHasNightvision = false; } void CSMultiplayerRules::PlayerMakePlayable(NSClientPlayer pp, int chara) { - player pl = (player)pp; + CSPlayer pl = (CSPlayer)pp; /* spectator */ if (chara == 0) { PlayerSpawn(pl); return; } - MakePlayable(pp); - pl.g_items |= ITEM_SUIT; - Weapons_AddItem(pl, WEAPON_KNIFE, -1); + pl.ingame = TRUE; + forceinfokey(pl, "*team", ftos(pl.team)); + PlayerRespawn(pl, pl.team); /* terrorists */ if (chara < 5) { pl.team = TEAM_T; if (autocvar_fcs_knifeonly == FALSE) { - Weapons_AddItem(pl, WEAPON_GLOCK18, -1); - pl.ammo_9mm = 40; + pl.GiveItem("weapon_glock18"); + //pl.ammo_9mm = 40; } } else { pl.team = TEAM_CT; if (autocvar_fcs_knifeonly == FALSE) { - Weapons_AddItem(pl, WEAPON_USP45, -1); - pl.ammo_45acp = 24; + pl.GiveItem("weapon_usp"); + //pl.ammo_45acp = 24; } } - pl.ingame = TRUE; - forceinfokey(pl, "*team", ftos(pl.team)); - PlayerRespawn(pl, pl.team); + pl.GiveItem("weapon_knife"); } /* @@ -1084,7 +1091,7 @@ Force the player to become an observer. void CSMultiplayerRules::PlayerMakeSpectator(NSClientPlayer pp) { - player pl = (player)pp; + CSPlayer pl = (CSPlayer)pp; pl.MakeTempSpectator(); PlayerClearWeaponry(pl); pl.view_ofs = g_vec_null; @@ -1101,7 +1108,7 @@ another player joins and causes the game rules/scores to reset fully void CSMultiplayerRules::PlayerReset(NSClientPlayer pl) { - player p = (player)pl; + CSPlayer p = (CSPlayer)pl; /* give the initial server-joining money */ p.money = 0; @@ -1111,6 +1118,7 @@ CSMultiplayerRules::PlayerReset(NSClientPlayer pl) p.m_seenFriend = false; p.m_seenEnemy = false; p.m_seenHostage = false; + p.m_bHasNightvision = false; } /* @@ -1177,7 +1185,7 @@ void CSEv_JoinTeam_f(float flChar) { CSMultiplayerRules rules; - player pl; + CSPlayer pl; /* matches Game_InitRules() */ if (cvar("sv_playerslots") == 1 || cvar("coop") == 1) { @@ -1185,7 +1193,7 @@ CSEv_JoinTeam_f(float flChar) } rules = (CSMultiplayerRules)g_grMode; - pl = (player)self; + pl = (CSPlayer)self; if (pl.team == TEAM_VIP) { centerprint(pl, "You are the VIP!\nYou cannot switch roles now.\n"); diff --git a/src/server/gamerules_singleplayer.qc b/src/server/gamerules_singleplayer.qc index 0d6e5b7..dd685b2 100644 --- a/src/server/gamerules_singleplayer.qc +++ b/src/server/gamerules_singleplayer.qc @@ -52,7 +52,6 @@ CSSingleplayerRules::PlayerSpawn(NSClientPlayer pl) setmodel(pl, pl.model); setsize(pl, VEC_HULL_MIN, VEC_HULL_MAX); - pl.view_ofs = PHY_VIEWPOS; pl.velocity = [0,0,0]; pl.gravity = __NULL__; pl.frame = 1; @@ -75,6 +74,5 @@ CSSingleplayerRules::PlayerSpawn(NSClientPlayer pl) pl.angles = spot.angles; } - Weapons_RefreshAmmo(pl); Client_FixAngle(pl, pl.angles); } diff --git a/src/server/hostage_entity.qc b/src/server/hostage_entity.qc index e091439..b4557e4 100644 --- a/src/server/hostage_entity.qc +++ b/src/server/hostage_entity.qc @@ -14,7 +14,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/*!QUAKED hostage_entity (0 1 0) (-16 -16 0) (16 16 72) +/*!QUAKED CSHostage (0 1 0) (-16 -16 0) (16 16 72) # OVERVIEW Hostage NPC. Used in the Hostage Rescue mode (cs_* maps). @@ -79,23 +79,23 @@ enum HOSA_DEADTABLE3 }; -class hostage_entity:NSTalkMonster +class CSHostage:NSTalkMonster { int m_iUsedOnce; - void(void) hostage_entity; + void CSHostage(void); + + virtual void OnPlayerUse(void); + virtual void Pain(entity, entity, int, vector, int); + virtual void Death(entity, entity, int, vector, int); - virtual void(void) Respawn; - virtual void(void) OnPlayerUse; - virtual void(void) Pain; - virtual void(void) Death; }; void -hostage_entity::OnPlayerUse(void) +CSHostage::OnPlayerUse(void) { if (eActivator.team == TEAM_T) { - player pl = (player)eActivator; + CSPlayer pl = (CSPlayer)eActivator; if (g_csMode.ShowHints() == true) if (pl.m_hostMessageT == false) { @@ -110,7 +110,7 @@ hostage_entity::OnPlayerUse(void) /* CT reward, first time only */ if (m_iUsedOnce == FALSE) { - Money_AddMoney((player)eActivator, 150); + Money_AddMoney((CSPlayer)eActivator, 150); m_iUsedOnce = TRUE; } @@ -118,12 +118,14 @@ hostage_entity::OnPlayerUse(void) } void -hostage_entity::Pain(void) +CSHostage::Pain(entity inflictor, entity attacker, int damage, vector dir, int location) { + super::Pain(inflictor, attacker, damage, dir, location); + if (IsAlive() == false) return; - switch (g_dmg_iHitBody) { + switch (location) { case BODY_HEAD: case BODY_DEFAULT: case BODY_CHEST: @@ -145,19 +147,19 @@ hostage_entity::Pain(void) } /* penalties */ - if (g_dmg_eAttacker.classname != "player") + if (attacker.classname != "player") return; - Money_AddMoney((NSClientPlayer)g_dmg_eAttacker, -(g_dmg_iDamage * 25)); + Money_AddMoney((NSClientPlayer)attacker, -(damage * 25i)); } void -hostage_entity::Death(void) +CSHostage::Death(entity inflictor, entity attacker, int damage, vector dir, int location) { WarnAllies(); if (IsAlive() == true) { - switch (g_dmg_iHitBody) { + switch (location) { case BODY_HEAD: SetFrame(HOSA_DIE_HEADSHOT); break; @@ -169,11 +171,11 @@ hostage_entity::Death(void) break; } - if (g_dmg_eAttacker.classname == "player") { - if (g_dmg_iDamage >= 100) - Money_AddMoney((NSClientPlayer)g_dmg_eAttacker, -2500); + if (attacker.classname == "player") { + if (damage >= 100) + Money_AddMoney((NSClientPlayer)attacker, -2500); else - Money_AddMoney((NSClientPlayer)g_dmg_eAttacker, -500); + Money_AddMoney((NSClientPlayer)attacker, -500); Radio_BroadcastMessage(RADIO_HOSDOWN); } @@ -183,52 +185,13 @@ hostage_entity::Death(void) SetHealth(0); /* now mark our state as 'dead' */ - super::Death(); + super::Death(inflictor, attacker, damage, dir, location); SetSolid(SOLID_NOT); } void -hostage_entity::Respawn(void) -{ - spawnflags |= MSF_MULTIPLAYER; - model = "models/hostage.mdl"; - netname = "Hostage"; - base_health = 100; - base_mins = [-16,-16,0]; - base_maxs = [16,16,72]; - - super::Respawn(); - - m_iFlags |= MONSTER_CANFOLLOW; - m_iUsedOnce = FALSE; - PlayerUse = OnPlayerUse; -} - -void -hostage_entity::hostage_entity(void) +CSHostage::CSHostage(void) { Sound_Precache("hostage_entity.follow"); - - m_talkAnswer = ""; - m_talkAsk = ""; - m_talkAllyShot = ""; - m_talkGreet = ""; - m_talkIdle = ""; - m_talkHearing = ""; - m_talkSmelling = ""; - m_talkStare = ""; - m_talkSurvived = ""; - m_talkWounded = ""; - - m_talkPlayerAsk = ""; - m_talkPlayerGreet = ""; - m_talkPlayerIdle = ""; - m_talkPlayerWounded1 = ""; - m_talkPlayerWounded2 = ""; - m_talkPlayerWounded3 = ""; - m_talkUnfollow = ""; - m_talkFollow = ""; - m_talkStopFollow = ""; - g_cs_hostagestotal++; } diff --git a/src/server/info_buyzone.qc b/src/server/info_buyzone.qc index 8426744..dc20fc4 100644 --- a/src/server/info_buyzone.qc +++ b/src/server/info_buyzone.qc @@ -42,15 +42,14 @@ info_buyzone::info_buyzone(void) void info_buyzone::Respawn(void) { - SetSolid(SOLID_TRIGGER); + super::Respawn(); SetSize([-128,-128,-128], [128,128,128]); - SetOrigin(GetSpawnOrigin()); } void info_buyzone::Touch(entity eToucher) { - player pl = (player)eToucher; + CSPlayer pl = (CSPlayer)eToucher; if (!(eToucher.flags & FL_CLIENT)) return; diff --git a/src/server/info_hostage_rescue.qc b/src/server/info_hostage_rescue.qc index d205699..c5ca6af 100644 --- a/src/server/info_hostage_rescue.qc +++ b/src/server/info_hostage_rescue.qc @@ -45,16 +45,15 @@ info_hostage_rescue::info_hostage_rescue(void) void info_hostage_rescue::Respawn(void) { - SetSolid(SOLID_TRIGGER); + super::Respawn(); SetSize([-128,-128,-128], [128,128,128]); - SetOrigin(GetSpawnOrigin()); } void info_hostage_rescue::Touch(entity eToucher) { if (eToucher.flags & FL_CLIENT) { - player pl = (player)eToucher; + CSPlayer pl = (CSPlayer)eToucher; pl.gflags |= GF_RESCUEZONE; return; } @@ -70,14 +69,14 @@ info_hostage_rescue::Touch(entity eToucher) } /* some custom maps are very smart... */ - if (!((player)hosty.m_eFollowing)) + if (!((CSPlayer)hosty.m_eFollowing)) return; Radio_BroadcastMessage(RADIO_RESCUED); CSBot_HostageRescueNotify(); g_cs_hostagesrescued++; - Money_AddMoney((player)hosty.m_eFollowing, 1000); + Money_AddMoney((CSPlayer)hosty.m_eFollowing, 1000); /* In Hostage Rescue, all Counter-Terrorists receive an $850 * bonus for every hostage they rescue, even if they lose the round. */ diff --git a/src/server/item_suit.qc b/src/server/item_suit.qc index 1ace710..8d4e8eb 100644 --- a/src/server/item_suit.qc +++ b/src/server/item_suit.qc @@ -42,18 +42,17 @@ item_suit::Spawned(void) void item_suit::Respawn(void) { + super::Respawn(); SetSolid(SOLID_TRIGGER); SetMovetype(MOVETYPE_TOSS); - SetModel(GetSpawnModel()); SetSize(VEC_HULL_MIN, VEC_HULL_MAX); - SetOrigin(GetSpawnOrigin()); ReleaseThink(); } void item_suit::Touch(entity eToucher) { - player pl = (player)eToucher; + CSPlayer pl = (CSPlayer)eToucher; if (pl.classname != "player") { return; diff --git a/src/server/player.qc b/src/server/player.qc index 8706f8b..bfec853 100644 --- a/src/server/player.qc +++ b/src/server/player.qc @@ -14,15 +14,6 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -void Weapons_Draw(player); - -void -CSEv_PlayerSwitchWeapon_i(int w) -{ - player pl = (player)self; - pl.activeweapon = w; - Weapons_Draw(pl); -} void Player_Precache(void) diff --git a/src/server/progs.src b/src/server/progs.src index b4647a3..7bb0387 100644 --- a/src/server/progs.src +++ b/src/server/progs.src @@ -1,6 +1,6 @@ #pragma target fte_5768 //#pragma flag enable assumeint -#pragma progs_dat "../../progs.dat" +#pragma progs_dat "../../zpak001.pk3dir/progs.dat" #define QWSSQC #define SERVER @@ -34,7 +34,6 @@ info_hostage_rescue.qc func_vip_safetyzone.qc info_map_parameters.qc item_suit.qc -../../../valve/src/server/items.qc ../../../src/botlib/include.src bot.qc @@ -49,9 +48,7 @@ radio.qc ammo.qc buy.qc server.qc -../../../valve/src/server/damage.qc ../../../valve/src/server/flashlight.qc -../../../valve/src/server/modelevent.qc spawn.qc diff --git a/src/server/server.qc b/src/server/server.qc index 7fa75f9..fc586c7 100644 --- a/src/server/server.qc +++ b/src/server/server.qc @@ -60,11 +60,10 @@ Game_Worldspawn(void) Sound_Precache("item.respawn"); Sound_Precache("weapon.pickup"); - Weapons_Init(); FX_Corpse_Init(); - clientstat(STAT_MONEY, EV_INTEGER, player::money); - clientstat(STAT_PROGRESS, EV_FLOAT, player::progress); + clientstat(STAT_MONEY, EV_INTEGER, CSPlayer::money); + clientstat(STAT_PROGRESS, EV_FLOAT, CSPlayer::progress); pointerstat(STAT_GAMETIME, EV_FLOAT, &g_cs_gametime); pointerstat(STAT_GAMESTATE, EV_INTEGER, &g_cs_gamestate); diff --git a/src/shared/CSProjectile.h b/src/shared/CSProjectile.h new file mode 100644 index 0000000..a00110d --- /dev/null +++ b/src/shared/CSProjectile.h @@ -0,0 +1,8 @@ +class +CSProjectile:NSProjectile +{ + void CSProjectile(void); + + +}; + diff --git a/src/shared/CSProjectile.qc b/src/shared/CSProjectile.qc new file mode 100644 index 0000000..a62e885 --- /dev/null +++ b/src/shared/CSProjectile.qc @@ -0,0 +1,5 @@ +void +CSProjectile::CSProjectile(void) +{ + +} diff --git a/src/shared/CSWeapon.qc b/src/shared/CSWeapon.qc new file mode 100644 index 0000000..950d2b1 --- /dev/null +++ b/src/shared/CSWeapon.qc @@ -0,0 +1,220 @@ + +#ifdef CLIENT +void Cstrike_DrawCrosshair(CSPlayer); +#endif + +class +CSWeapon:NSWeapon +{ + void CSWeapon(void); + +#ifdef CLIENT + int m_iHudSlot; + int m_iHudSlotPos; + + string m_ammoIcon; + string m_crossHair; + NSWeapon m_nextWeapon; + virtual void AddedToInventory(void); + virtual void UpdateGUI(void); +#endif + + virtual void Draw(void); + virtual void PrimaryAttack(void); + virtual void SecondaryAttack(void); + virtual void Release(void); + virtual void HitscanAttack(string); + virtual void SwitchedToWeapon(void); +}; + +void +CSWeapon::CSWeapon(void) +{ + +} + +void +CSWeapon::SwitchedToWeapon(void) +{ + w_cstrke_switched((CSPlayer)owner); +} + +void +CSWeapon::PrimaryAttack(void) +{ + if (GetDefBool("altAlternates") == true) { + if (CanFire() == false) { + return; + } + + m_iMode = 1 - m_iMode; + } + + if (m_iMode) { + super::SecondaryAttack(); + return; + } + + super::PrimaryAttack(); +} + +void +CSWeapon::SecondaryAttack(void) +{ + if (GetDefBool("altSilences") == true) { + if (CanFire() == false) { + return; + } + + float silAnimation = 0; + float silTime; + + m_iMode = 1 - m_iMode; + + if (m_iMode) + silAnimation = GetDefAct("actAddSil"); + else + silAnimation = GetDefAct("actDetachSil"); + + SetWeaponFrame(silAnimation); + silTime = frameduration(m_viewModel, silAnimation); + SetAttackNext(silTime); + SetIdleNext(silTime + 1.0f); + return; + } + + super::SecondaryAttack(); +} + +void +CSWeapon::HitscanAttack(string defName) +{ + CSPlayer ourOwner = (CSPlayer)owner; + int numProjectiles = GetSubDefInt(defName, "numProjectiles"); + string traceInfo = GetSubDefString(defName, "def_projectile"); + float flAccuracyDivisor = GetSubDefFloat(defName,"accuracyDivisor"); + float flAccuracyMovementPenalty = GetSubDefFloat(defName,"accuracyMovementPenalty"); + float flAccuracyMultiplier = GetSubDefFloat(defName,"accuracyMultiplier"); + float flAccuracyAdd= GetSubDefFloat(defName,"accuracyAdd"); + float flRangeModifier = GetSubDefFloat(defName,"rangeModifier"); + float flPenetrationPower = GetSubDefFloat(defName,"penetrationPower"); + float flBulletStrength = GetSubDefFloat(defName,"bulletStrength"); + float flMultiplierShots = GetSubDefFloat(defName,"multiplierShots"); + float flMultiplierStrength = GetSubDefFloat(defName,"multiplierStrength"); + float flMultiplierInaccuracy = GetSubDefFloat(defName,"multiplierInaccuracy"); + float accuracy = Cstrike_CalculateAccuracy(ourOwner, flAccuracyDivisor, flAccuracyMovementPenalty) / flAccuracyMultiplier; + accuracy += flAccuracyAdd; + vector bulletSpread = [accuracy, accuracy]; + + /* always fire at least 1 */ + if (numProjectiles <= 0i) { + numProjectiles = 1i; + } + + if (flBulletStrength) { + Cstrike_BulletRecoil_ApplyPre(ourOwner, flBulletStrength); + } + +#ifdef SERVER + float traceDamage = GetSubDefFloat(traceInfo, "damage"); + + /* don't bother with shotguns */ + if (numProjectiles <= 3i) { + //TraceAttack_SetRangeModifier(flRangeModifier); + //TraceAttack_SetPenetrationPower(flPenetrationPower); + } else { + bulletSpread = [random(-1,1) * 0.1,random(-1,1) * 0.05]; + } + + for (int i = 0i; i < numProjectiles; i++) { + // TraceAttack_FireBulletsWithDecal(1, ourOwner.GetEyePos(), traceDamage, bulletSpread, 0, "Impact.BigShot", ourOwner); + } +#endif + + if (flBulletStrength) { + Cstrike_BulletRecoil_ApplyPost(ourOwner, flBulletStrength); + } + + /* don't bother with shotguns */ + if (numProjectiles <= 3i) { + Cstrike_ShotMultiplierAdd(ourOwner, flMultiplierShots, flMultiplierStrength,accuracy* flMultiplierInaccuracy); + } +} + +void +CSWeapon::Draw(void) +{ + super::Draw(); + +#ifdef CLIENT + CSPlayer ourOwner = (CSPlayer)owner; + ourOwner.cs_cross_mindist = GetDefInt("crossMinDist"); + ourOwner.cs_cross_deltadist = GetDefInt("crossDeltaDist"); + + CStrikeView_UpdateGeomset(ourOwner); +#endif +} + +void +CSWeapon::Release(void) +{ + owner.v_angle = input_angles; + w_cstrike_weaponrelease((CSPlayer)owner); + input_angles = owner.v_angle; + super::Release(); +} + +#ifdef CLIENT +void +CSWeapon::AddedToInventory(void) +{ + super::AddedToInventory(); + + m_ammoIcon = GetDefString("ammoIcon"); + + if (m_ammoIcon == "") { + m_ammoIcon = sprintf("%s.ammo", strtolower(classname)); + } + + m_crossHair = GetDefString("crosshair"); + + if (m_crossHair == "") { + m_crossHair = sprintf("%s.crosshair", strtolower(classname)); + } + + m_iHudSlot = GetDefInt("hudSlot"); + m_iHudSlotPos = GetDefInt("hudSlotPos"); +} + +void +CSWeapon::UpdateGUI(void) +{ + CSPlayer ourOwner = (CSPlayer)GetOwner(); + + /* draw crosshair */ + Cstrike_DrawCrosshair(ourOwner); + + /* draw ammo icon */ + if (m_ammoIcon) { + vector ammoPos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; + HLSprite_Draw_RGBA(m_ammoIcon, ammoPos, g_hud_color, pSeatLocal->m_flAmmo2Alpha, true); + } + + if (m_bAmmoRequired == false) { + return; + } + + if (m_iClipSize > 0i) { + ourOwner.a_ammo1 = m_iClip; + HUD_DrawAmmo1(); + } + + ourOwner.a_ammo2 = ourOwner.GetReserveAmmo(m_primaryAmmoType); + HUD_DrawAmmo2(); + + if (m_secondaryAmmoType && m_primaryAmmoType != m_secondaryAmmoType) { + ourOwner.a_ammo3 = ourOwner.GetReserveAmmo(m_secondaryAmmoType); + HUD_DrawAmmo3(); + } +} +#endif \ No newline at end of file diff --git a/src/shared/animations.h b/src/shared/animations.h index 81483a2..217517d 100644 --- a/src/shared/animations.h +++ b/src/shared/animations.h @@ -101,9 +101,9 @@ enum ANIM_RELOAD_AK47, ANIM_GUT_FLINCH, ANIM_HEAD_FLINCH, - ANIM_DEATH1, - ANIM_DEATH2, - ANIM_DEATH3, + ANIM_DEATH1, /* land on stomach */ + ANIM_DEATH2, /* land on back */ + ANIM_DEATH3, /* dramatic death */ ANIM_DIE_HEAD, ANIM_DIE_GUT, ANIM_DIE_LEFT, diff --git a/src/shared/animations.qc b/src/shared/animations.qc index daa8341..4c8daf5 100644 --- a/src/shared/animations.qc +++ b/src/shared/animations.qc @@ -40,7 +40,7 @@ void Animation_Print(string sWow) { } void -Animation_TimerUpdate(player pl, float ftime) +Animation_TimerUpdate(CSPlayer pl, float ftime) { makevectors([0, pl.v_angle[1], 0]); @@ -65,28 +65,28 @@ depending on what the player is doing ================= */ void -Animation_PlayerUpdate(player pl) +Animation_PlayerUpdate(CSPlayer pl) { pl.basebone = gettagindex(pl, "-- R shoulder outside"); if (pl.anim_top_delay <= 0.0f) { - pl.anim_top = Weapons_GetAim(pl, pl.activeweapon); + pl.anim_top = 0;//Weapons_GetAim(pl, pl.activeweapon); } if (vlen(pl.velocity) == 0) { - if (pl.flags & FL_CROUCHING) { + if (pl.IsCrouching()) { pl.anim_bottom = ANIM_IDLE_CROUCH; } else { pl.anim_bottom = ANIM_IDLE; } } else if (vlen(pl.velocity) < 150) { - if (pl.flags & FL_CROUCHING) { + if (pl.IsCrouching()) { pl.anim_bottom = ANIM_RUN_CROUCH; } else { pl.anim_bottom = ANIM_WALK; } } else if (vlen(pl.velocity) > 150) { - if (pl.flags & FL_CROUCHING) { + if (pl.IsCrouching()) { pl.anim_bottom = ANIM_RUN_CROUCH; } else { pl.anim_bottom = ANIM_RUN; @@ -128,7 +128,7 @@ Animation_PlayerUpdate(player pl) } void -Animation_PlayerTop(player pl, float topanim, float timer) +Animation_PlayerTop(CSPlayer pl, float topanim, float timer) { #if 0 pl.anim_top = topanim; @@ -138,7 +138,7 @@ Animation_PlayerTop(player pl, float topanim, float timer) } void -Animation_PlayerBottom(player pl, float botanim, float timer) +Animation_PlayerBottom(CSPlayer pl, float botanim, float timer) { pl.anim_bottom = botanim; } diff --git a/src/shared/defs.h b/src/shared/defs.h index ef1006a..9e9e14c 100644 --- a/src/shared/defs.h +++ b/src/shared/defs.h @@ -20,7 +20,6 @@ #include "items.h" #include "entities.h" #include "events.h" -#include "pmove.h" #define TEAM_SPECTATOR 0 #define TEAM_T 1 diff --git a/src/shared/include.src b/src/shared/include.src index 1cea513..b77e372 100644 --- a/src/shared/include.src +++ b/src/shared/include.src @@ -1,7 +1,6 @@ #includelist flags.h player.h -../../../valve/src/shared/weapon_common.h animations.h animations.qc @@ -11,37 +10,8 @@ item_c4bomb.h ../../../valve/src/shared/fx_corpse.qc fx_flashbang.qc fx_smokenade.qc - -weapons_cstrike.qc -w_ak47.qc -w_deagle.qc -w_knife.qc -w_usp45.qc -w_glock18.qc -w_p228.qc -w_elites.qc -w_fiveseven.qc -w_m3.qc -w_xm1014.qc -w_mp5.qc -w_p90.qc -w_ump45.qc -w_mac10.qc -w_tmp.qc -w_sg552.qc -w_m4a1.qc -w_aug.qc -w_scout.qc -w_awp.qc -w_g3sg1.qc -w_sg550.qc -w_para.qc -w_c4bomb.qc -w_flashbang.qc -w_hegrenade.qc -w_smokegrenade.qc -weapons.qc -../../../valve/src/shared/weapon_common.qc -pmove.qc item_c4bomb.qc +weapons_cstrike.qc +CSWeapon.qc +pmove.qc #endlist diff --git a/src/shared/item_c4bomb.h b/src/shared/item_c4bomb.h index 5cbdae3..de3d1ad 100644 --- a/src/shared/item_c4bomb.h +++ b/src/shared/item_c4bomb.h @@ -1,7 +1,3 @@ -#ifdef SERVER -void C4Bomb_Plant(NSClientPlayer); -#endif - #ifdef CLIENT string g_c4bombled_spr; void w_c4bomb_parse(void); diff --git a/src/shared/item_c4bomb.qc b/src/shared/item_c4bomb.qc index ce4c12e..87c6fde 100644 --- a/src/shared/item_c4bomb.qc +++ b/src/shared/item_c4bomb.qc @@ -14,7 +14,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -class item_c4:NSRenderableEntity +class CSBombEntity:NSRenderableEntity { #ifdef SERVER entity m_eUser; @@ -24,7 +24,7 @@ class item_c4:NSRenderableEntity #endif #ifdef SERVER - void item_c4(void); + void CSBombEntity(void); virtual void Spawned(void); virtual float SendEntity(entity, float); @@ -35,14 +35,14 @@ class item_c4:NSRenderableEntity #endif #ifdef CLIENT - void item_c4(void); + void CSBombEntity(void); virtual void DrawLED(void); virtual float predraw(void); #endif }; void -item_c4::item_c4(void) +CSBombEntity::CSBombEntity(void) { #ifdef SERVER m_eUser = __NULL__; @@ -54,7 +54,7 @@ item_c4::item_c4(void) #ifdef SERVER float -item_c4::SendEntity(entity pvsent, float flags) +CSBombEntity::SendEntity(entity pvsent, float flags) { WriteByte(MSG_ENTITY, ENT_C4BOMB); WriteCoord(MSG_ENTITY, origin[0]); @@ -68,19 +68,19 @@ item_c4::SendEntity(entity pvsent, float flags) } void -item_c4::ClearProgress(void) +CSBombEntity::ClearProgress(void) { if (m_eUser != world) { - player pl = (player)m_eUser; + CSPlayer pl = (CSPlayer)m_eUser; pl.progress = 0.0f; - pl.flags &= ~FL_FROZEN; + pl.RemoveVFlags(VFL_FROZEN); } } void -item_c4::OnPlayerUse(void) +CSBombEntity::OnPlayerUse(void) { - player pl = (player)eActivator; + CSPlayer pl = (CSPlayer)eActivator; /* obvious check */ if (pl.team != TEAM_CT) { @@ -95,13 +95,13 @@ item_c4::OnPlayerUse(void) } void -item_c4::Logic(void) +CSBombEntity::Logic(void) { CSMultiplayerRules rules = (CSMultiplayerRules)g_grMode; /* check if we're being used */ if (m_eUser != world) { - player pl = (player)m_eUser; + CSPlayer pl = (CSPlayer)m_eUser; /* we need to check if the user has changed every frame. */ if (!m_eUser.button5) { @@ -121,7 +121,7 @@ item_c4::Logic(void) /* tracked stat */ pl.progress = m_flDefusalState; - pl.flags |= FL_FROZEN; + pl.AddVFlags(VFL_FROZEN); g_cs_bombbeingdefused = TRUE; } @@ -143,7 +143,11 @@ item_c4::Logic(void) /* In Bomb Defusal, all Terrorists receive $3500 * if they won by detonating the bomb. */ rules.RoundOver(TEAM_T, 3500, FALSE); - Damage_Radius(origin, this.real_owner, 500, g_cstrike_bombradius, false, WEAPON_C4BOMB); + + radiusDamage(origin, -g_cstrike_bombradius, 0i, 500i, real_owner); + //Damage_Radius(origin, this.real_owner, 500, g_cstrike_bombradius, false, WEAPON_C4BOMB); + + StartSoundDef("weapon_c4bomb.explode", CHAN_VOICE, true); for (entity e = world; (e = find(e, ::classname, "func_bomb_target"));) { @@ -183,7 +187,7 @@ item_c4::Logic(void) } void -item_c4::OnRemoveEntity(void) +CSBombEntity::OnRemoveEntity(void) { ClearProgress(); m_flBeepTime = 0.0f; @@ -193,7 +197,7 @@ item_c4::OnRemoveEntity(void) } void -item_c4::Spawned(void) +CSBombEntity::Spawned(void) { super::Spawned(); @@ -208,33 +212,13 @@ item_c4::Spawned(void) customphysics = Logic; PlayerUse = OnPlayerUse; m_flExplodeTime = time + 45.0f; - StartSoundDef("weapon_c4bomb.plant", CHAN_WEAPON, true); -} - -void -C4Bomb_Plant(NSClientPlayer planter) -{ - item_c4 bomb = spawn(item_c4); - bomb.Spawned(); - bomb.real_owner = planter; - - /* place directly below */ - traceline(planter.origin, planter.origin + [0,0,-64], FALSE, planter); - setorigin(bomb, trace_endpos); - bomb.SendFlags = -1; - - /* push the player out if we're on top */ - setorigin_safe(planter, planter.origin); - - Radio_BroadcastMessage(RADIO_BOMBPL); - CSBot_BombPlantedNotify(); - g_cs_bombplanted = TRUE; + StartSoundDef("c4.plant", CHAN_WEAPON, true); } #endif #ifdef CLIENT void -item_c4::DrawLED(void) +CSBombEntity::DrawLED(void) { vector cameraPos = g_view.GetCameraOrigin(); float ledAlpha = 1.0 - (time - floor(time)); @@ -266,7 +250,7 @@ item_c4::DrawLED(void) } float -item_c4::predraw(void) +CSBombEntity::predraw(void) { DrawLED(); addentity(this); @@ -276,8 +260,8 @@ item_c4::predraw(void) void w_c4bomb_parse(void) { - item_c4 tm = (item_c4)self; - spawnfunc_item_c4(); + CSBombEntity tm = (CSBombEntity)self; + spawnfunc_CSBombEntity(); g_c4bombled_spr = spriteframe("sprites/ledglow.spr", 0, 0.0f); diff --git a/src/shared/items.h b/src/shared/items.h index 2974ed5..1dc336f 100644 --- a/src/shared/items.h +++ b/src/shared/items.h @@ -30,7 +30,7 @@ #define ITEM_MAC10 0x00001000i #define ITEM_TMP 0x00002000i #define ITEM_SUIT 0x00004000i -#define ITEM_LONGJUMP 0x00008000i +#define ITEM_FAMAS 0x00008000i #define ITEM_AK47 0x00010000i #define ITEM_SG552 0x00020000i @@ -47,5 +47,5 @@ #define ITEM_HEGRENADE 0x08000000i #define ITEM_SMOKEGRENADE 0x10000000i #define ITEM_DEFUSAL 0x20000000i -#define ITEM_NIGHTVISION 0x40000000i +#define ITEM_GALIL 0x40000000i #define ITEM_HELMET 0x80000000i diff --git a/src/shared/player.h b/src/shared/player.h index 7cf1c50..d7a595c 100644 --- a/src/shared/player.h +++ b/src/shared/player.h @@ -101,59 +101,14 @@ string g_pbones[] = enumflags { PLAYER_TOPFRAME = PLAYER_CUSTOMFIELDSTART, - PLAYER_BOTTOMFRAME, - PLAYER_AMMO1, - PLAYER_AMMO2, - PLAYER_AMMO3, - PLAYER_CSTIMERS + PLAYER_BOTTOMFRAME = PLAYER_CUSTOMFIELDSTART, + PLAYER_CSTIMERS = PLAYER_CUSTOMFIELDSTART }; -class player:NSClientPlayer +class CSPlayer:NSClientPlayer { int ingame; - PREDICTED_INT(usp45_mag) - PREDICTED_INT(glock18_mag) - PREDICTED_INT(deagle_mag) - PREDICTED_INT(p228_mag) - PREDICTED_INT(elites_mag) - PREDICTED_INT(fiveseven_mag) - PREDICTED_INT(m3_mag) - PREDICTED_INT(xm1014_mag) - PREDICTED_INT(mp5_mag) - PREDICTED_INT(p90_mag) - PREDICTED_INT(ump45_mag) - PREDICTED_INT(mac10_mag) - PREDICTED_INT(tmp_mag) - PREDICTED_INT(ak47_mag) - PREDICTED_INT(sg552_mag) - PREDICTED_INT(m4a1_mag) - PREDICTED_INT(aug_mag) - PREDICTED_INT(scout_mag) - PREDICTED_INT(awp_mag) - PREDICTED_INT(g3sg1_mag) - PREDICTED_INT(sg550_mag) - PREDICTED_INT(para_mag) - - PREDICTED_INT(ammo_50ae) - PREDICTED_INT(ammo_762mm) - PREDICTED_INT(ammo_556mm) - PREDICTED_INT(ammo_556mmbox) - PREDICTED_INT(ammo_338mag) - PREDICTED_INT(ammo_9mm) - PREDICTED_INT(ammo_buckshot) - PREDICTED_INT(ammo_45acp) - PREDICTED_INT(ammo_357sig) - PREDICTED_INT(ammo_57mm) - PREDICTED_INT(ammo_hegrenade) - PREDICTED_INT(ammo_fbgrenade) - PREDICTED_INT(ammo_smokegrenade) - - PREDICTED_INT(mode_usp45) - PREDICTED_INT(mode_m4a1) - PREDICTED_INT(mode_glock18) - PREDICTED_INT(mode_temp) - PREDICTED_FLOAT(cs_shotmultiplier) PREDICTED_FLOAT(cs_shottime) PREDICTED_FLOAT(cs_prev_hor_rec) @@ -200,6 +155,7 @@ class player:NSClientPlayer bool m_seenEnemy; bool m_seenHostage; bool m_seenBombSite; + bool m_bHasNightvision; #endif }; @@ -207,7 +163,7 @@ float punchangle_recovery(float punchangle) { return 0.05 * (-0.2 * pow(1.2, fabs(punchangle)) + 4); } void -player::Physics_InputPostMove(void) +CSPlayer::Physics_InputPostMove(void) { //start of this function is taken from super::Physics_InputPostMove float punch; @@ -224,15 +180,16 @@ player::Physics_InputPostMove(void) /* player animation code */ UpdatePlayerAnimation(input_timelength); - - RemoveFlags(FL_FROZEN); + RemoveVFlags(VFL_FROZEN); + RemoveVFlags(VFL_NOATTACK); #ifdef SERVER if (g_cs_gamestate == GAME_FREEZE) { #else if (getstati(STAT_GAMESTATE) == GAME_FREEZE) { #endif - flags |= FL_FROZEN; + AddVFlags(VFL_FROZEN); + AddVFlags(VFL_NOATTACK); if (input_buttons & INPUT_BUTTON0) { w_attack_next = (w_attack_next > 0.1) ? w_attack_next : 0.1f; @@ -242,11 +199,11 @@ player::Physics_InputPostMove(void) ProcessInput(); } -void Animation_PlayerUpdate(player); -void Animation_TimerUpdate(player, float); +void Animation_PlayerUpdate(CSPlayer); +void Animation_TimerUpdate(CSPlayer, float); void -player::UpdatePlayerAnimation(float timelength) +CSPlayer::UpdatePlayerAnimation(float timelength) { /* calculate our skeletal progression */ Animation_PlayerUpdate(this); @@ -260,7 +217,7 @@ void Camera_StrafeRoll(__inout vector camera_angle); void Shake_Update(NSClientPlayer); void -player::UpdateAliveCam(void) +CSPlayer::UpdateAliveCam(void) { vector cam_pos = GetEyePos(); Camera_RunPosBob(view_angles, cam_pos); @@ -289,10 +246,10 @@ player::UpdateAliveCam(void) } .string oldmodel; -string Weapons_GetPlayermodel(player, int); +///string Weapons_GetPlayermodel(NSClientPlayer, int); void -player::UpdatePlayerAttachments(bool visible) +CSPlayer::UpdatePlayerAttachments(bool visible) { /* draw the flashlight */ if (gflags & GF_FLASHLIGHT) { @@ -324,7 +281,7 @@ player::UpdatePlayerAttachments(bool visible) return; /* what's the current weapon model supposed to be anyway? */ - p_model.oldmodel = Weapons_GetPlayermodel(this, activeweapon); + p_model.oldmodel = 0;//Weapons_GetPlayermodel(this, activeweapon); /* we changed weapons, update skeletonindex */ if (p_model.model != p_model.oldmodel) { @@ -369,17 +326,16 @@ player::UpdatePlayerAttachments(bool visible) } } -void Weapons_AmmoUpdate(entity); -void HUD_AmmoNotify_Check(player pl); +void HUD_AmmoNotify_Check(CSPlayer pl); /* ================= -player::ReceiveEntity +CSPlayer::ReceiveEntity ================= */ void -player::ReceiveEntity(float flIsNew, float flChanged) +CSPlayer::ReceiveEntity(float flIsNew, float flChanged) { - NSClientPlayer::ReceiveEntity(flIsNew, flChanged); + super::ReceiveEntity(flIsNew, flChanged); /* animation */ READENTITY_BYTE(anim_top, PLAYER_TOPFRAME) @@ -387,110 +343,35 @@ player::ReceiveEntity(float flIsNew, float flChanged) READENTITY_FLOAT(anim_top_delay, PLAYER_TOPFRAME) READENTITY_BYTE(anim_bottom, PLAYER_BOTTOMFRAME) READENTITY_FLOAT(anim_bottom_time, PLAYER_BOTTOMFRAME) - READENTITY_BYTE(usp45_mag, PLAYER_AMMO1) - READENTITY_BYTE(glock18_mag, PLAYER_AMMO1) - READENTITY_BYTE(deagle_mag, PLAYER_AMMO1) - READENTITY_BYTE(p228_mag, PLAYER_AMMO1) - READENTITY_BYTE(elites_mag, PLAYER_AMMO1) - READENTITY_BYTE(fiveseven_mag, PLAYER_AMMO1) - READENTITY_BYTE(m3_mag, PLAYER_AMMO1) - READENTITY_BYTE(xm1014_mag, PLAYER_AMMO1) - READENTITY_BYTE(mp5_mag, PLAYER_AMMO1) - READENTITY_BYTE(p90_mag, PLAYER_AMMO1) - READENTITY_BYTE(ump45_mag, PLAYER_AMMO1) - READENTITY_BYTE(mac10_mag, PLAYER_AMMO1) - READENTITY_BYTE(tmp_mag, PLAYER_AMMO1) - READENTITY_BYTE(ak47_mag, PLAYER_AMMO1) - READENTITY_BYTE(sg552_mag, PLAYER_AMMO1) - READENTITY_BYTE(m4a1_mag, PLAYER_AMMO1) - READENTITY_BYTE(aug_mag, PLAYER_AMMO1) - READENTITY_BYTE(scout_mag, PLAYER_AMMO1) - READENTITY_BYTE(awp_mag, PLAYER_AMMO1) - READENTITY_BYTE(g3sg1_mag, PLAYER_AMMO1) - READENTITY_BYTE(sg550_mag, PLAYER_AMMO1) - READENTITY_BYTE(para_mag, PLAYER_AMMO1) - READENTITY_BYTE(ammo_50ae, PLAYER_AMMO2) - READENTITY_BYTE(ammo_762mm, PLAYER_AMMO2) - READENTITY_BYTE(ammo_556mm, PLAYER_AMMO2) - READENTITY_BYTE(ammo_556mmbox, PLAYER_AMMO2) - READENTITY_BYTE(ammo_338mag, PLAYER_AMMO2) - READENTITY_BYTE(ammo_9mm, PLAYER_AMMO2) - READENTITY_BYTE(ammo_buckshot, PLAYER_AMMO2) - READENTITY_BYTE(ammo_45acp, PLAYER_AMMO2) - READENTITY_BYTE(ammo_357sig, PLAYER_AMMO2) - READENTITY_BYTE(ammo_57mm, PLAYER_AMMO2) - READENTITY_BYTE(ammo_hegrenade, PLAYER_AMMO2) - READENTITY_BYTE(ammo_fbgrenade, PLAYER_AMMO2) - READENTITY_BYTE(ammo_smokegrenade, PLAYER_AMMO2) - READENTITY_BYTE(mode_usp45, PLAYER_AMMO3) - READENTITY_BYTE(mode_m4a1, PLAYER_AMMO3) - READENTITY_BYTE(mode_glock18, PLAYER_AMMO3) - READENTITY_BYTE(mode_temp, PLAYER_AMMO3) + READENTITY_BYTE(cs_shotmultiplier, PLAYER_CSTIMERS) READENTITY_FLOAT(cs_shottime, PLAYER_CSTIMERS) READENTITY_FLOAT(cs_prev_hor_rec, PLAYER_CSTIMERS) READENTITY_BYTE(cs_hor_rec_sign, PLAYER_CSTIMERS) READENTITY_FLOAT(cs_rec_reverse_chance, PLAYER_CSTIMERS) - if (flChanged & PLAYER_AMMO1 || flChanged & PLAYER_AMMO2 || flChanged & PLAYER_AMMO3) { - Weapons_AmmoUpdate(this); + +#if 0 + if (flChanged & PLAYER_AMMOTYPE) { HUD_AmmoNotify_Check(this); } +#endif setorigin(this, origin); } /* ================= -player::PredictPostFrame +CSPlayer::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) +CSPlayer::PredictPreFrame(void) { - NSClientPlayer::PredictPreFrame(); + super::PredictPreFrame(); - SAVE_STATE(usp45_mag) - SAVE_STATE(glock18_mag) - SAVE_STATE(deagle_mag) - SAVE_STATE(p228_mag) - SAVE_STATE(elites_mag) - SAVE_STATE(fiveseven_mag) - SAVE_STATE(m3_mag) - SAVE_STATE(xm1014_mag) - SAVE_STATE(mp5_mag) - SAVE_STATE(p90_mag) - SAVE_STATE(ump45_mag) - SAVE_STATE(mac10_mag) - SAVE_STATE(tmp_mag) - SAVE_STATE(ak47_mag) - SAVE_STATE(sg552_mag) - SAVE_STATE(m4a1_mag) - SAVE_STATE(aug_mag) - SAVE_STATE(scout_mag) - SAVE_STATE(awp_mag) - SAVE_STATE(g3sg1_mag) - SAVE_STATE(sg550_mag) - SAVE_STATE(para_mag) - SAVE_STATE(ammo_50ae) - SAVE_STATE(ammo_762mm) - SAVE_STATE(ammo_556mm) - SAVE_STATE(ammo_556mmbox) - SAVE_STATE(ammo_338mag) - SAVE_STATE(ammo_9mm) - SAVE_STATE(ammo_buckshot) - SAVE_STATE(ammo_45acp) - SAVE_STATE(ammo_357sig) - SAVE_STATE(ammo_57mm) - SAVE_STATE(ammo_hegrenade) - SAVE_STATE(ammo_fbgrenade) - SAVE_STATE(ammo_smokegrenade) - SAVE_STATE(mode_usp45) - SAVE_STATE(mode_m4a1) - SAVE_STATE(mode_glock18) - SAVE_STATE(mode_temp) SAVE_STATE(cs_shotmultiplier) SAVE_STATE(cs_shottime) SAVE_STATE(cs_prev_hor_rec) @@ -505,55 +386,16 @@ player::PredictPreFrame(void) /* ================= -player::PredictPostFrame +CSPlayer::PredictPostFrame Where we roll back our values to the ones last sent/verified by the server. ================= */ void -player::PredictPostFrame(void) +CSPlayer::PredictPostFrame(void) { - NSClientPlayer::PredictPostFrame(); + super::PredictPostFrame(); - ROLL_BACK(usp45_mag) - ROLL_BACK(glock18_mag) - ROLL_BACK(deagle_mag) - ROLL_BACK(p228_mag) - ROLL_BACK(elites_mag) - ROLL_BACK(fiveseven_mag) - ROLL_BACK(m3_mag) - ROLL_BACK(xm1014_mag) - ROLL_BACK(mp5_mag) - ROLL_BACK(p90_mag) - ROLL_BACK(ump45_mag) - ROLL_BACK(mac10_mag) - ROLL_BACK(tmp_mag) - ROLL_BACK(ak47_mag) - ROLL_BACK(sg552_mag) - ROLL_BACK(m4a1_mag) - ROLL_BACK(aug_mag) - ROLL_BACK(scout_mag) - ROLL_BACK(awp_mag) - ROLL_BACK(g3sg1_mag) - ROLL_BACK(sg550_mag) - ROLL_BACK(para_mag) - ROLL_BACK(ammo_50ae) - ROLL_BACK(ammo_762mm) - ROLL_BACK(ammo_556mm) - ROLL_BACK(ammo_556mmbox) - ROLL_BACK(ammo_338mag) - ROLL_BACK(ammo_9mm) - ROLL_BACK(ammo_buckshot) - ROLL_BACK(ammo_45acp) - ROLL_BACK(ammo_357sig) - ROLL_BACK(ammo_57mm) - ROLL_BACK(ammo_hegrenade) - ROLL_BACK(ammo_fbgrenade) - ROLL_BACK(ammo_smokegrenade) - ROLL_BACK(mode_usp45) - ROLL_BACK(mode_m4a1) - ROLL_BACK(mode_glock18) - ROLL_BACK(mode_temp) ROLL_BACK(cs_shotmultiplier) ROLL_BACK(cs_shottime) ROLL_BACK(cs_prev_hor_rec) @@ -568,60 +410,22 @@ player::PredictPostFrame(void) #else void -player::ServerInputFrame(void) +CSPlayer::ServerInputFrame(void) { super::ServerInputFrame(); } void -player::EvaluateEntity(void) +CSPlayer::EvaluateEntity(void) { - NSClientPlayer::EvaluateEntity(); + super::EvaluateEntity(); EVALUATE_FIELD(anim_top, PLAYER_TOPFRAME) EVALUATE_FIELD(anim_top_time, PLAYER_TOPFRAME) EVALUATE_FIELD(anim_top_delay, PLAYER_TOPFRAME) EVALUATE_FIELD(anim_bottom, PLAYER_BOTTOMFRAME) EVALUATE_FIELD(anim_bottom_time, PLAYER_BOTTOMFRAME) - EVALUATE_FIELD(usp45_mag, PLAYER_AMMO1) - EVALUATE_FIELD(glock18_mag, PLAYER_AMMO1) - EVALUATE_FIELD(deagle_mag, PLAYER_AMMO1) - EVALUATE_FIELD(p228_mag, PLAYER_AMMO1) - EVALUATE_FIELD(elites_mag, PLAYER_AMMO1) - EVALUATE_FIELD(fiveseven_mag, PLAYER_AMMO1) - EVALUATE_FIELD(m3_mag, PLAYER_AMMO1) - EVALUATE_FIELD(xm1014_mag, PLAYER_AMMO1) - EVALUATE_FIELD(mp5_mag, PLAYER_AMMO1) - EVALUATE_FIELD(p90_mag, PLAYER_AMMO1) - EVALUATE_FIELD(ump45_mag, PLAYER_AMMO1) - EVALUATE_FIELD(mac10_mag, PLAYER_AMMO1) - EVALUATE_FIELD(tmp_mag, PLAYER_AMMO1) - EVALUATE_FIELD(ak47_mag, PLAYER_AMMO1) - EVALUATE_FIELD(sg552_mag, PLAYER_AMMO1) - EVALUATE_FIELD(m4a1_mag, PLAYER_AMMO1) - EVALUATE_FIELD(aug_mag, PLAYER_AMMO1) - EVALUATE_FIELD(scout_mag, PLAYER_AMMO1) - EVALUATE_FIELD(awp_mag, PLAYER_AMMO1) - EVALUATE_FIELD(g3sg1_mag, PLAYER_AMMO1) - EVALUATE_FIELD(sg550_mag, PLAYER_AMMO1) - EVALUATE_FIELD(para_mag, PLAYER_AMMO1) - EVALUATE_FIELD(ammo_50ae, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_762mm, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_556mm, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_556mmbox, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_338mag, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_9mm, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_buckshot, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_45acp, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_357sig, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_57mm, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_hegrenade, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_fbgrenade, PLAYER_AMMO2) - EVALUATE_FIELD(ammo_smokegrenade, PLAYER_AMMO2) - EVALUATE_FIELD(mode_usp45, PLAYER_AMMO3) - EVALUATE_FIELD(mode_m4a1, PLAYER_AMMO3) - EVALUATE_FIELD(mode_glock18, PLAYER_AMMO3) - EVALUATE_FIELD(mode_temp, PLAYER_AMMO3) + EVALUATE_FIELD(cs_shotmultiplier, PLAYER_CSTIMERS) EVALUATE_FIELD(cs_shottime, PLAYER_CSTIMERS) EVALUATE_FIELD(cs_prev_hor_rec, PLAYER_CSTIMERS) @@ -631,11 +435,11 @@ player::EvaluateEntity(void) /* ================= -player::SendEntity +CSPlayer::SendEntity ================= */ float -player::SendEntity(entity ePEnt, float flChanged) +CSPlayer::SendEntity(entity ePEnt, float flChanged) { /* don't broadcast invisible players */ if (IsFakeSpectator() && ePEnt != this) @@ -645,55 +449,14 @@ player::SendEntity(entity ePEnt, float flChanged) flChanged = OptimiseChangedFlags(ePEnt, flChanged); - WriteByte(MSG_ENTITY, ENT_PLAYER); - WriteFloat(MSG_ENTITY, flChanged); - - NSClientPlayer::SendEntity(ePEnt, flChanged); + super::SendEntity(ePEnt, flChanged); SENDENTITY_BYTE(anim_top, PLAYER_TOPFRAME) SENDENTITY_FLOAT(anim_top_time, PLAYER_TOPFRAME) SENDENTITY_FLOAT(anim_top_delay, PLAYER_TOPFRAME) SENDENTITY_BYTE(anim_bottom, PLAYER_BOTTOMFRAME) SENDENTITY_FLOAT(anim_bottom_time, PLAYER_BOTTOMFRAME) - SENDENTITY_BYTE(usp45_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(glock18_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(deagle_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(p228_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(elites_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(fiveseven_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(m3_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(xm1014_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(mp5_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(p90_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(ump45_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(mac10_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(tmp_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(ak47_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(sg552_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(m4a1_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(aug_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(scout_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(awp_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(g3sg1_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(sg550_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(para_mag, PLAYER_AMMO1) - SENDENTITY_BYTE(ammo_50ae, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_762mm, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_556mm, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_556mmbox, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_338mag, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_9mm, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_buckshot, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_45acp, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_357sig, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_57mm, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_hegrenade, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_fbgrenade, PLAYER_AMMO2) - SENDENTITY_BYTE(ammo_smokegrenade, PLAYER_AMMO2) - SENDENTITY_BYTE(mode_usp45, PLAYER_AMMO3) - SENDENTITY_BYTE(mode_m4a1, PLAYER_AMMO3) - SENDENTITY_BYTE(mode_glock18, PLAYER_AMMO3) - SENDENTITY_BYTE(mode_temp, PLAYER_AMMO3) + SENDENTITY_BYTE(cs_shotmultiplier, PLAYER_CSTIMERS) SENDENTITY_FLOAT(cs_shottime, PLAYER_CSTIMERS) SENDENTITY_FLOAT(cs_prev_hor_rec, PLAYER_CSTIMERS) diff --git a/src/shared/pmove.h b/src/shared/pmove.h deleted file mode 100644 index bac8a3c..0000000 --- a/src/shared/pmove.h +++ /dev/null @@ -1,19 +0,0 @@ -#define PMOVE_STEPHEIGHT 18 -#define PMOVE_AIRSTEPHEIGHT 0 -#define PMOVE_FRICTION 4 -#define PMOVE_EDGEFRICTION 1 -#define PMOVE_STOPSPEED 75 -#define PMOVE_GRAVITY 800 -#define PMOVE_AIRACCELERATE 10 -#define PMOVE_WATERACCELERATE 8 -#define PMOVE_ACCELERATE 4 -#define PMOVE_MAXSPEED 250 - -/* Counter-Strike players are hunched over a little bit */ -#define PHY_VIEWPOS [0,0,18] -#define PHY_VIEWPOS_CROUCHED [0,0,12] - -#define PHY_HULL_MIN [-16,-16,-36] -#define PHY_HULL_MAX [16,16,36] -#define PHY_HULL_CROUCHED_MIN [-16,-16,-18] -#define PHY_HULL_CROUCHED_MAX [16,16,18] diff --git a/src/shared/pmove.qc b/src/shared/pmove.qc index 83b824e..420cfaa 100644 --- a/src/shared/pmove.qc +++ b/src/shared/pmove.qc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2021 Marco Cawthorne + * Copyright (c) 2016-2024 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 @@ -14,14 +14,36 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#define PMOVE_STEPHEIGHT 18 +#define PMOVE_AIRSTEPHEIGHT 0 +#define PMOVE_FRICTION 4 +#define PMOVE_EDGEFRICTION 1 +#define PMOVE_STOPSPEED 75 +#define PMOVE_GRAVITY 800 +#define PMOVE_AIRACCELERATE 10 +#define PMOVE_WATERACCELERATE 8 +#define PMOVE_ACCELERATE 4 +#define PMOVE_MAXSPEED 250 +#define PMOVE_STEP_WALKSPEED 270 +#define PMOVE_STEP_CROUCHSPEED 90 +#define PMOVE_BOXCENTER true +#define PMOVE_NORMAL_HEIGHT 72 +#define PMOVE_NORMAL_VIEWHEIGHT 54 +#define PMOVE_CROUCH_HEIGHT 36 +#define PMOVE_CROUCH_VIEWHEIGHT 30 + +/* disable prone, run and lean */ +#define PMOVE_STEP_RUNSPEED 0 +#define PMOVE_PRONE_HEIGHT 0 + .float waterlevel; .float watertype; /* values courtesy of https://wiki.alliedmods.net/Cs_weapons_information */ float -player::Physics_MaxSpeed(void) +CSPlayer::Physics_MaxSpeed(void) { - float spd = serverkeyfloat("phy_maxspeed"); + float spd = super::Physics_MaxSpeed(); switch (activeweapon) { @@ -109,21 +131,17 @@ player::Physics_MaxSpeed(void) default: } - if (flags & FL_CROUCHING) { - spd *= 0.5f; - } - return spd; } void -player::Physics_Fall(float impactspeed) +CSPlayer::Physics_Fall(float impactspeed) { impactspeed *= 1.25f; if (impactspeed > 580) { #ifdef SERVER float fFallDamage = (impactspeed - 580) * (100 / (1024 - 580)) * 0.75f; - Damage_Apply(this, world, fFallDamage, 0, DMG_FALL | DMG_SKIP_ARMOR); + //Damage_Apply(this, world, fFallDamage, 0, DMG_FALL | DMG_SKIP_ARMOR); if (random() < 0.5) sound(this, CHAN_AUTO, "player/pl_pain2.wav", 1.0, ATTN_NORM); @@ -134,7 +152,7 @@ player::Physics_Fall(float impactspeed) } void -player::Physics_Jump(void) +CSPlayer::Physics_Jump(void) { if (waterlevel >= 2) { if (watertype == CONTENT_WATER) { diff --git a/src/shared/w_ak47.qc b/src/shared/w_ak47.qc deleted file mode 100644 index 9f1eca1..0000000 --- a/src/shared/w_ak47.qc +++ /dev/null @@ -1,342 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_ak47 (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -AK-47 Weapon - -- Buy Menu - -Price: $2500 -Terrorists only weapon - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_ak47.mdl" -*/ - -#ifdef CLIENT -void -w_rifle_ejectshell(void) -{ - static void w_rifle_ejectshell_death(void) { - remove(self); - } - static void w_rifle_ejectshell_touch(void) { - if (other == world) - Sound_Play(self, CHAN_BODY, "modelevent_shell.land"); - } - entity eShell = spawn(); - setmodel(eShell, "models/rshell.mdl"); - eShell.solid = SOLID_BBOX; - eShell.movetype = MOVETYPE_BOUNCE; - eShell.drawmask = MASK_ENGINE; - eShell.angles = [pSeat->m_eViewModel.angles[0], pSeat->m_eViewModel.angles[1], 0]; - eShell.velocity = pSeat->m_vecPredictedVelocity; - - makevectors(pSeat->m_eViewModel.angles); - eShell.velocity += (v_forward * 0); - eShell.velocity += (v_right * -80); - eShell.velocity += (v_up * 80); - eShell.touch = w_rifle_ejectshell_touch; - - eShell.avelocity = [0,45,900]; - eShell.think = w_rifle_ejectshell_death; - eShell.nextthink = time + 2.5f; - setsize(eShell, [0,0,0], [0,0,0]); - setorigin(eShell, gettaginfo(pSeat->m_eViewModel, pSeat->m_iVMBones + 1)); -} -#endif - -enum -{ - AK47_IDLE, - AK47_RELOAD, - AK47_DRAW, - AK47_SHOOT1, - AK47_SHOOT2, - AK47_SHOOT3 -}; - -void -w_ak47_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_ak47.fire"); - precache_model("models/w_ak47.mdl"); -#else - Sound_Precache("modelevent_shell.land"); - precache_model("models/v_ak47.mdl"); - precache_model("models/p_ak47.mdl"); -#endif -} - -void -w_ak47_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.ak47_mag, pl.ammo_762mm, -1); -} - -string -w_ak47_wmodel(void) -{ - return "models/w_ak47.mdl"; -} - -string -w_ak47_pmodel(player pl) -{ - return "models/p_ak47.mdl"; -} - -string -w_ak47_deathmsg(void) -{ - return ""; -} - -int -w_ak47_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.ak47_mag = 30; - else - pl.ak47_mag = startammo; - } else { - if (pl.ammo_762mm < AMMO_MAX_762MM) { - pl.ammo_762mm = bound(0, pl.ammo_762mm + 30, AMMO_MAX_762MM); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_ak47_draw(player pl) -{ - Weapons_SetModel("models/v_ak47.mdl"); - Weapons_ViewAnimation(pl, AK47_DRAW); - -#ifdef CLIENT - pl.cs_cross_mindist = 4; - pl.cs_cross_deltadist = 4; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_ak47_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0) { - return; - } - if (!pl.ak47_mag) { - return; - } - - - float accuracy = Cstrike_CalculateAccuracy(pl, 30,3)/1.5; - pl.ak47_mag--; - - int r = (float)input_sequence % 3; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, AK47_SHOOT1); - break; - case 1: - Weapons_ViewAnimation(pl, AK47_SHOOT2); - break; - default: - Weapons_ViewAnimation(pl, AK47_SHOOT3); - break; - } - - if (self.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_AK47, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_AK47, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_rifle_ejectshell, 0.0f); -#else - dmg = Skill_GetValue("plr_ak47_dmg", 36); - TraceAttack_SetRangeModifier(2.375); /* 18 units!!! */ - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,1.2); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_AK47, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,1.2); - Sound_Play(pl, CHAN_WEAPON, "weapon_ak47.fire"); -#endif - - Cstrike_ShotMultiplierAdd(pl, 1.1f, 0.92f,accuracy*0.5); - pl.w_attack_next = 0.0975f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_ak47_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) { - return; - } - if (pl.ak47_mag >= 30) { - return; - } - if (!pl.ammo_762mm) { - return; - } - - Weapons_ViewAnimation(pl, AK47_RELOAD); - - pl.w_attack_next = 2.4f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::ak47_mag, player::ammo_762mm, 30); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_ak47_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.ak47_mag == 0 && pl.ammo_762mm > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_ak47_aimanim(player pl) -{ - return pl.flags & FL_CROUCHING ? ANIM_CROUCH_AIM_AK47 : ANIM_AIM_AK47; -} - -void -w_ak47_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [72/256,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_ak47_isempty(player pl) -{ - - if (pl.ak47_mag <= 0 && pl.ammo_762mm <= 0) - return 1; - - return 0; -} - -void -w_ak47_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_ak47_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_762mm, AMMO_MAX_762MM, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud11_spr, - [0,0], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud11_spr, - [0,0], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_ak47 = -{ - .name = "ak47", - .id = ITEM_AK47, - .slot = 0, - .slot_pos = 7, - .weight = 25, - .allow_drop = TRUE, - .draw = w_ak47_draw, - .holster = __NULL__, - .primary = w_ak47_primary, - .secondary = __NULL__, - .reload = w_ak47_reload, - .release = w_ak47_release, - .postdraw = w_ak47_hud, - .precache = w_ak47_precache, - .pickup = w_ak47_pickup, - .updateammo = w_ak47_updateammo, - .wmodel = w_ak47_wmodel, - .pmodel = w_ak47_pmodel, - .deathmsg = w_ak47_deathmsg, - .aimanim = w_ak47_aimanim, - .hudpic = w_ak47_hudpic, - .type = csweapon_ranged_type, - .isempty = w_ak47_isempty -}; - -#ifdef SERVER -void -weapon_ak47(void) -{ - Weapons_InitItem(WEAPON_AK47); -} -#endif diff --git a/src/shared/w_aug.qc b/src/shared/w_aug.qc deleted file mode 100644 index 705e5cb..0000000 --- a/src/shared/w_aug.qc +++ /dev/null @@ -1,329 +0,0 @@ -/* - * Copyright (c) 2016-2022 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. - */ - -/*!QUAKED weapon_aug (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Steyr AUG Weapon - -- Buy Menu - -Price: $3500 -Counter-Terrorists only weapon - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_aug.mdl" -*/ - -enum -{ - AUG_IDLE, - AUG_RELOAD, - AUG_DRAW, - AUG_SHOOT1, - AUG_SHOOT2, - AUG_SHOOT3 -}; - -void -w_aug_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_aug.fire"); - precache_model("models/w_aug.mdl"); -#else - precache_model("models/v_aug.mdl"); - precache_model("models/p_aug.mdl"); -#endif -} - -void -w_aug_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.aug_mag, pl.ammo_762mm, -1); -} - -string -w_aug_wmodel(void) -{ - return "models/w_aug.mdl"; -} - -string -w_aug_pmodel(player pl) -{ - return "models/p_aug.mdl"; -} - -string -w_aug_deathmsg(void) -{ - return ""; -} - -int -w_aug_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.aug_mag = 30; - else - pl.aug_mag = startammo; - } else { - if (pl.ammo_762mm < AMMO_MAX_762MM) { - pl.ammo_762mm = bound(0, pl.ammo_762mm + 30, AMMO_MAX_762MM); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_aug_draw(player pl) -{ - Weapons_SetModel("models/v_aug.mdl"); - Weapons_ViewAnimation(pl, AUG_DRAW); - -#ifdef CLIENT - pl.cs_cross_mindist = 3; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_aug_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0.0) { - return; - } - if (!pl.aug_mag) { - return; - } - - - float accuracy = Cstrike_CalculateAccuracy(pl, 35,2); - pl.aug_mag--; - - int r = (float)input_sequence % 3; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, AUG_SHOOT1); - break; - case 1: - Weapons_ViewAnimation(pl, AUG_SHOOT2); - break; - default: - Weapons_ViewAnimation(pl, AUG_SHOOT3); - break; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_rifle_ejectshell, 0.0f); -#else - dmg = Skill_GetValue("plr_aug_dmg", 32); - TraceAttack_SetRangeModifier(2.125); - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,1.03); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_AUG, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,1.03); - Sound_Play(pl, CHAN_WEAPON, "weapon_aug.fire"); -#endif - - Cstrike_ShotMultiplierAdd(pl, 0.7f, 1.1f,accuracy); - if (pl.viewzoom == 1.0f) { - pl.w_attack_next = 0.0825f; - } else { - pl.w_attack_next = 0.15f; - } - pl.w_idle_next = pl.w_attack_next; -} - -void -w_aug_secondary(player pl) -{ - if (pl.w_attack_next) { - return; - } - /* Simple toggle of fovs */ - if (pl.viewzoom == 1.0f) { - pl.viewzoom = 0.2f; - } else { - pl.viewzoom = 1.0f; - } - pl.w_attack_next = 0.5f; -} - -void -w_aug_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) { - return; - } - if (pl.aug_mag >= 30) { - return; - } - if (!pl.ammo_762mm) { - return; - } - Weapons_ViewAnimation(pl, AUG_RELOAD); - pl.w_attack_next = 3.3f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::aug_mag, player::ammo_762mm, 30); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_aug_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.aug_mag == 0 && pl.ammo_762mm > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_aug_aimanim(player pl) -{ - return w_ak47_aimanim(pl); -} - -void -w_aug_hud(player pl) -{ -#ifdef CLIENT - if (pl.viewzoom == 1.0f) { - Cstrike_DrawCrosshair(); - } else { - Cstrike_DrawSimpleCrosshair(); - } - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [72/256,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_aug_isempty(player pl) -{ - - if (pl.aug_mag <= 0 && pl.ammo_762mm <= 0) - return 1; - - return 0; -} - -void -w_aug_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_aug_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_762mm, AMMO_MAX_762MM, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud15_spr, - [0,45/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud14_spr, - [0,45/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_aug = -{ - .name = "aug", - .id = ITEM_AUG, - .slot = 0, - .slot_pos = 10, - .weight = 25, - .allow_drop = TRUE, - .draw = w_aug_draw, - .holster = __NULL__, - .primary = w_aug_primary, - .secondary = w_aug_secondary, - .reload = w_aug_reload, - .release = w_aug_release, - .postdraw = w_aug_hud, - .precache = w_aug_precache, - .pickup = w_aug_pickup, - .updateammo = w_aug_updateammo, - .wmodel = w_aug_wmodel, - .pmodel = w_aug_pmodel, - .deathmsg = w_aug_deathmsg, - .aimanim = w_aug_aimanim, - .hudpic = w_aug_hudpic, - .type = csweapon_ranged_type, - .isempty = w_aug_isempty -}; - -#ifdef SERVER -void -weapon_aug(void) -{ - Weapons_InitItem(WEAPON_AUG); -} -#endif diff --git a/src/shared/w_awp.qc b/src/shared/w_awp.qc deleted file mode 100644 index 3aa6ab4..0000000 --- a/src/shared/w_awp.qc +++ /dev/null @@ -1,383 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_awp (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -AWP (AI Arctic Warfare/Magnum) Weapon - -- Buy Menu - -Price: $4750 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_awp.mdl" -*/ - -#ifdef CLIENT -void -w_sniper_ejectshell(void) -{ - static void w_sniper_ejectshelldeath(void) { - remove(self); - } - static void w_sniper_ejectshell_touch(void) { - if (other == world) - Sound_Play(self, CHAN_BODY, "modelevent_shell.land"); - } - entity eShell = spawn(); - setmodel(eShell, "models/rshell_big.mdl"); - eShell.solid = SOLID_BBOX; - eShell.movetype = MOVETYPE_BOUNCE; - eShell.drawmask = MASK_ENGINE; - eShell.angles = [pSeat->m_eViewModel.angles[0], pSeat->m_eViewModel.angles[1], 0]; - eShell.velocity = pSeat->m_vecPredictedVelocity; - - makevectors(pSeat->m_eViewModel.angles); - eShell.velocity += (v_forward * 0); - eShell.velocity += (v_right * -80); - eShell.velocity += (v_up * 100); - eShell.touch = w_sniper_ejectshell_touch; - - eShell.avelocity = [0,45,900]; - eShell.think = w_sniper_ejectshelldeath; - eShell.nextthink = time + 2.5f; - setsize(eShell, [0,0,0], [0,0,0]); - setorigin(eShell, gettaginfo(pSeat->m_eViewModel, pSeat->m_iVMBones + 1)); -} -#endif - -enum -{ - AWP_IDLE, - AWP_SHOOT1, - AWP_SHOOT2, - AWP_SHOOT3, - AWP_RELOAD, - AWP_DRAW -}; - -void -w_awp_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_awp.fire"); - Sound_Precache("weapon_awp.zoom"); - precache_model("models/w_awp.mdl"); -#else - precache_model("models/v_awp.mdl"); - precache_model("models/p_awp.mdl"); -#endif -} - -void -w_awp_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.awp_mag, pl.ammo_338mag, pl.mode_temp); -} - -string -w_awp_wmodel(void) -{ - return "models/w_awp.mdl"; -} - -string -w_awp_pmodel(player pl) -{ - return "models/p_awp.mdl"; -} - -string -w_awp_deathmsg(void) -{ - return ""; -} - -int -w_awp_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.awp_mag = 10; - else - pl.awp_mag = startammo; - } else { - if (pl.ammo_338mag < 20) { - pl.ammo_338mag = bound(0, pl.ammo_338mag + 10, 20); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_awp_draw(player pl) -{ - Weapons_SetModel("models/v_awp.mdl"); - Weapons_ViewAnimation(pl, AWP_DRAW); - pl.mode_temp = 0; - -#ifdef CLIENT - pl.cs_cross_mindist = 8; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_awp_release(player pl) -{ - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.awp_mag == 0 && pl.ammo_338mag > 0) { - Weapons_Reload(pl); - return; - } - - if (pl.w_idle_next > 0.0f) { - pl.viewzoom = 1.0f; - Weapons_EnableModel(); - return; - } - - if (pl.mode_temp == 1) { - pl.viewzoom = 0.45f; - Weapons_DisableModel(); - } else if (pl.mode_temp == 2) { - pl.viewzoom = 0.1f; - Weapons_DisableModel(); - } else { - pl.viewzoom = 1.0f; - Weapons_EnableModel(); - } -} - -void -w_awp_secondary(player pl) -{ - if (pl.w_attack_next) { - return; - } - -#ifdef SSQC - Sound_Play(pl, CHAN_WEAPON, "weapon_awp.zoom"); -#endif - - /* Simple toggle of fovs */ - if (pl.mode_temp == 1) { - pl.mode_temp = 2; - } else if (pl.mode_temp == 2) { - pl.mode_temp = 0; - } else { - pl.mode_temp = 1; - } - - pl.w_attack_next = 0.3f; - pl.w_idle_next = 0.0f; - w_awp_release(pl); -} - -void -w_awp_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0.0) { - w_awp_release(pl); - return; - } - if (!pl.awp_mag) { - return; - } - - - float accuracy = Cstrike_CalculateAccuracy(pl, -1); - - pl.awp_mag--; - - int r = (float)input_sequence % 3; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, AWP_SHOOT1); - break; - case 1: - Weapons_ViewAnimation(pl, AWP_SHOOT2); - break; - default: - Weapons_ViewAnimation(pl, AWP_SHOOT3); - break; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_sniper_ejectshell, 0.9f); -#else - dmg = Skill_GetValue("plr_awp_dmg", 115); - TraceAttack_SetRangeModifier(1.375); - TraceAttack_SetPenetrationPower(2); /* however, we can only penetrate one wall if the first one is 5 units thick or higher */ - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_AWP, "Impact.BigShot"); - - Sound_Play(pl, CHAN_WEAPON, "weapon_awp.fire"); -#endif - - Cstrike_ShotMultiplierAdd(pl, 1, 1,accuracy); - pl.w_attack_next = 1.2f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_awp_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.awp_mag >= 10) - return; - if (!pl.ammo_338mag) - return; - - Weapons_ViewAnimation(pl, AWP_RELOAD); - - pl.w_attack_next = 2.9f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::awp_mag, player::ammo_338mag, 10); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -float -w_awp_aimanim(player pl) -{ - return w_ak47_aimanim(pl); -} - -void -w_awp_hud(player pl) -{ -#ifdef CLIENT - if (pl.viewzoom < 1.0f) { - Cstrike_DrawScope(); - } - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [24/256,96/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_awp_isempty(player pl) -{ - - if (pl.awp_mag <= 0 && pl.ammo_338mag <= 0) - return 1; - - return 0; -} - -void -w_awp_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_awp_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_338mag, AMMO_MAX_338MAG, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud5_spr, - [0,135/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud2_spr, - [0,135/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_awp = -{ - .name = "awp", - .id = ITEM_AWP, - .slot = 0, - .slot_pos = 12, - .weight = 30, - .allow_drop = TRUE, - .draw = w_awp_draw, - .holster = __NULL__, - .primary = w_awp_primary, - .secondary = w_awp_secondary, - .reload = w_awp_reload, - .release = w_awp_release, - .postdraw = w_awp_hud, - .precache = w_awp_precache, - .pickup = w_awp_pickup, - .updateammo = w_awp_updateammo, - .wmodel = w_awp_wmodel, - .pmodel = w_awp_pmodel, - .deathmsg = w_awp_deathmsg, - .aimanim = w_awp_aimanim, - .hudpic = w_awp_hudpic, - .type = csweapon_ranged_type, - .isempty = w_awp_isempty -}; - -#ifdef SERVER -void -weapon_awp(void) -{ - Weapons_InitItem(WEAPON_AWP); -} -#endif diff --git a/src/shared/w_c4bomb.qc b/src/shared/w_c4bomb.qc deleted file mode 100644 index 2768558..0000000 --- a/src/shared/w_c4bomb.qc +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_c4bomb (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -C4 Bomb Weapon, Bomb Defusal Gamemode Entity - -Default arsenal for Terrorists - -Can only be picked up by Terrorists and planted in -func_bombtarget brush entities. - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_c4.mdl" -*/ - -/* C4 weapon logic */ - -enum -{ - C4_IDLE, - C4_DRAW, - C4_DROP, - C4_ENTERCODE -}; - -enum -{ - C4S_NONE, - C4S_ENTERINGCODE, - C4S_DROPPING, - C4S_DONE -}; - -void -w_c4bomb_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_c4bomb.disarm"); - Sound_Precache("weapon_c4bomb.disarmed"); - Sound_Precache("weapon_c4bomb.explode"); - Sound_Precache("weapon_c4bomb.plant"); - Sound_Precache("weapon_c4bomb.beep1"); - Sound_Precache("weapon_c4bomb.beep2"); - Sound_Precache("weapon_c4bomb.beep3"); - Sound_Precache("weapon_c4bomb.beep4"); - Sound_Precache("weapon_c4bomb.beep5"); - precache_sound("weapons/c4_beep1.wav"); - precache_sound("weapons/c4_beep2.wav"); - precache_sound("weapons/c4_beep3.wav"); - precache_sound("weapons/c4_beep4.wav"); - precache_sound("weapons/c4_beep5.wav"); - precache_sound("weapons/c4_disarmed.wav"); - precache_sound("weapons/c4_disarm.wav"); - precache_model("models/w_c4.mdl"); - precache_model("models/w_backpack.mdl"); - precache_model("sprites/ledglow.spr"); -#else - precache_model("models/v_c4.mdl"); - precache_model("models/p_c4.mdl"); -#endif -} - -void -w_c4bomb_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, -1, 1, -1); -} - -string -w_c4bomb_wmodel(void) -{ - return "models/w_backpack.mdl"; -} - -string -w_c4bomb_pmodel(player pl) -{ - return "models/p_c4.mdl"; -} - -string -w_c4bomb_deathmsg(void) -{ - return ""; -} - -void -w_c4bomb_draw(player pl) -{ - Weapons_SetModel("models/v_c4.mdl"); - Weapons_ViewAnimation(pl, C4_DRAW); - pl.mode_temp = 0; - -#ifdef CLIENT - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_c4bomb_release(player pl) -{ - - w_cstrike_weaponrelease(); - - if (pl.mode_temp == C4S_DROPPING) { - if (pl.w_idle_next <= 0.0f) { - pl.mode_temp = C4S_DONE; -#ifdef SERVER - C4Bomb_Plant(pl); - Weapons_RemoveItem(pl, WEAPON_C4BOMB); -#endif - } - return; - } - - /* reset animation */ - if (pl.mode_temp != C4S_NONE) { - Weapons_ViewAnimation(pl, C4_IDLE); - } - pl.mode_temp = C4S_NONE; - pl.w_idle_next = 0.0f; -} - -void -w_c4bomb_primary(player pl) -{ - - if (!(pl.gflags & GF_BOMBZONE)) { - return; - } - - pl.flags |= FL_FROZEN; - input_movevalues = [0,0,0]; - - switch (pl.mode_temp) { - case C4S_NONE: - pl.mode_temp = C4S_ENTERINGCODE; - Weapons_ViewAnimation(pl, C4_ENTERCODE); - pl.w_idle_next = 3.0f; - break; - case C4S_ENTERINGCODE: - if (pl.w_idle_next <= 0.0f) { - pl.mode_temp = C4S_DROPPING; - Weapons_ViewAnimation(pl, C4_DROP); - pl.w_idle_next = 1.0f; - } - break; - case C4S_DROPPING: - w_c4bomb_release(pl); - return; - break; - default: - break; - } - - pl.w_attack_next = 0.0f; -} - -float -w_c4bomb_aimanim(player pl) -{ - return self.flags & FL_CROUCHING ? ANIM_CROUCH_AIM_C4 : ANIM_AIM_C4; -} - -void -w_c4bomb_hud(player pl) -{ -#ifdef CLIENT - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [96/256,96/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_c4bomb_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (pl.team != TEAM_T) - return (0); -#endif - return (1); -} - -void -w_c4bomb_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud4_spr, - [0,0], - [170/256,45/256], - g_hud_color, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud1_spr, - [0,0], - [170/256,45/256], - g_hud_color, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_c4bomb = -{ - .name = "c4", - .id = ITEM_C4BOMB, - .slot = 4, - .slot_pos = 0, - .allow_drop = TRUE, - .draw = w_c4bomb_draw, - .holster = __NULL__, - .primary = w_c4bomb_primary, - .secondary = __NULL__, - .reload = __NULL__, - .release = w_c4bomb_release, - .postdraw = w_c4bomb_hud, - .precache = w_c4bomb_precache, - .pickup = w_c4bomb_pickup, - .updateammo = w_c4bomb_updateammo, - .wmodel = w_c4bomb_wmodel, - .pmodel = w_c4bomb_pmodel, - .deathmsg = w_c4bomb_deathmsg, - .aimanim = w_c4bomb_aimanim, - .hudpic = w_c4bomb_hudpic -}; - -#ifdef SERVER -void -weapon_c4bomb(void) -{ - Weapons_InitItem(WEAPON_C4BOMB); -} -#endif diff --git a/src/shared/w_deagle.qc b/src/shared/w_deagle.qc deleted file mode 100644 index 1a60237..0000000 --- a/src/shared/w_deagle.qc +++ /dev/null @@ -1,339 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_deagle (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Desert Eagle .50 AE Weapon - -- Buy Menu - -Price: $650 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_deagle.mdl" -*/ - -#ifdef CLIENT -void -w_pistol_ejectshell(void) -{ - static void w_pistol_ejectshell_death(void) { - remove(self); - } - static void w_pistol_ejectshell_touch(void) { - if (other == world) - Sound_Play(self, CHAN_BODY, "modelevent_shell.land"); - } - entity eShell = spawn(); - setmodel(eShell, "models/pshell.mdl"); - eShell.solid = SOLID_BBOX; - eShell.movetype = MOVETYPE_BOUNCE; - eShell.drawmask = MASK_ENGINE; - eShell.angles = [pSeat->m_eViewModel.angles[0], pSeat->m_eViewModel.angles[1], 0]; - eShell.velocity = pSeat->m_vecPredictedVelocity; - - makevectors(pSeat->m_eViewModel.angles); - eShell.velocity += (v_forward * 0); - eShell.velocity += (v_right * -80); - eShell.velocity += (v_up * 100); - eShell.touch = w_pistol_ejectshell_touch; - - eShell.avelocity = [0,45,900]; - eShell.think = w_pistol_ejectshell_death; - eShell.nextthink = time + 2.5f; - setsize(eShell, [0,0,0], [0,0,0]); - setorigin(eShell, gettaginfo(pSeat->m_eViewModel, pSeat->m_iVMBones + 1)); -} -#endif - -enum -{ - DEAGLE_IDLE, - DEAGLE_SHOOT1, - DEAGLE_SHOOT2, - DEAGLE_SHOOT_EMPTY, - DEAGLE_RELOAD, - DEAGLE_DRAW -}; - -void -w_deagle_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_deagle.fire"); - precache_model("models/w_deagle.mdl"); -#else - precache_model("models/v_deagle.mdl"); - precache_model("models/p_deagle.mdl"); -#endif -} - -void -w_deagle_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.deagle_mag, pl.ammo_50ae, -1); -} - -string -w_deagle_wmodel(void) -{ - return "models/w_deagle.mdl"; -} - -string -w_deagle_pmodel(player pl) -{ - return "models/p_deagle.mdl"; -} - -string -w_deagle_deathmsg(void) -{ - return ""; -} - -int -w_deagle_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.deagle_mag = 7; - else - pl.deagle_mag = startammo; - } else { - if (pl.ammo_50ae < AMMO_MAX_50AE) { - pl.ammo_50ae = bound(0, pl.ammo_50ae + 7, AMMO_MAX_50AE); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_deagle_draw(player pl) -{ - Weapons_SetModel("models/v_deagle.mdl"); - Weapons_ViewAnimation(pl, DEAGLE_DRAW); - -#ifdef CLIENT - pl.cs_cross_mindist = 8; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_deagle_primary(player pl) -{ - if (pl.w_attack_next > 0.0) - return; - if (pl.gflags & GF_SEMI_TOGGLED) - return; - if (!pl.deagle_mag) - return; - - - float accuracy = Cstrike_CalculateAccuracy(pl, 55,1.5)+0.005; - pl.deagle_mag--; - - if (pl.deagle_mag <= 0) { - Weapons_ViewAnimation(pl, DEAGLE_SHOOT_EMPTY); - } else { - int r = (float)input_sequence % 2; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, DEAGLE_SHOOT1); - break; - default: - Weapons_ViewAnimation(pl, DEAGLE_SHOOT2); - break; - } - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_ONEHAND, 0.45f); - else - Animation_PlayerTop(pl, ANIM_SHOOT_ONEHAND, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - int dmg = Skill_GetValue("plr_deagle_dmg", 54); - TraceAttack_SetRangeModifier(1.875); /* 14 but not 15 */ - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,0.5); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_DEAGLE, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,0.5); - Sound_Play(pl, CHAN_WEAPON, "weapon_deagle.fire"); -#endif - - Cstrike_ShotMultiplierAdd(pl, 10, .35,accuracy*0.5); - pl.gflags |= GF_SEMI_TOGGLED; - pl.w_attack_next = 0.2f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_deagle_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) { - return; - } - if (pl.deagle_mag >= 7) { - return; - } - if (!pl.ammo_50ae) { - return; - } - Weapons_ViewAnimation(pl, DEAGLE_RELOAD); - - pl.w_attack_next = 2.1f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::deagle_mag, player::ammo_50ae, 7); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_deagle_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.deagle_mag == 0 && pl.ammo_50ae > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_deagle_aimanim(player pl) -{ - return pl.flags & FL_CROUCHING ? ANIM_CROUCH_AIM_ONEHAND : ANIM_AIM_ONEHAND; -} - -void -w_deagle_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [24/256,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_deagle_isempty(player pl) -{ - - if (pl.deagle_mag <= 0 && pl.ammo_50ae <= 0) - return 1; - - return 0; -} - -void -w_deagle_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_deagle_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_50ae, AMMO_MAX_50AE, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud11_spr, - [0,90/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud10_spr, - [0,90/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_deagle = -{ - .name = "deagle", - .id = ITEM_DEAGLE, - .slot = 1, - .slot_pos = 2, - .weight = 7, - .allow_drop = TRUE, - .draw = w_deagle_draw, - .holster = __NULL__, - .primary = w_deagle_primary, - .secondary = __NULL__, - .reload = w_deagle_reload, - .release = w_deagle_release, - .postdraw = w_deagle_hud, - .precache = w_deagle_precache, - .pickup = w_deagle_pickup, - .updateammo = w_deagle_updateammo, - .wmodel = w_deagle_wmodel, - .pmodel = w_deagle_pmodel, - .deathmsg = w_deagle_deathmsg, - .aimanim = w_deagle_aimanim, - .hudpic = w_deagle_hudpic, - .type = csweapon_ranged_type, - .isempty = w_deagle_isempty -}; - -#ifdef SERVER -void -weapon_deagle(void) -{ - Weapons_InitItem(WEAPON_DEAGLE); -} -#endif diff --git a/src/shared/w_elites.qc b/src/shared/w_elites.qc deleted file mode 100644 index 2248374..0000000 --- a/src/shared/w_elites.qc +++ /dev/null @@ -1,410 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_elites (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Dual Beretta 96G (Elites) Weapon - -- Buy Menu - -Price: $1000 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_elite.mdl" -*/ - -#ifdef CLIENT -void -w_elites_ejectshell(int side) -{ - static void w_elites_ejectshell_death(void) { - remove(self); - } - static void w_elites_ejectshell_touch(void) { - if (other == world) - Sound_Play(self, CHAN_BODY, "modelevent_shell.land"); - } - entity eShell = spawn(); - setmodel(eShell, "models/pshell.mdl"); - eShell.solid = SOLID_BBOX; - eShell.movetype = MOVETYPE_BOUNCE; - eShell.drawmask = MASK_ENGINE; - eShell.angles = [pSeat->m_eViewModel.angles[0], pSeat->m_eViewModel.angles[1], 0]; - eShell.velocity = pSeat->m_vecPredictedVelocity; - - makevectors(pSeat->m_eViewModel.angles); - eShell.velocity += (v_forward * 0); - eShell.velocity += (v_right * -80); - eShell.velocity += (v_up * 100); - eShell.touch = w_elites_ejectshell_touch; - - eShell.avelocity = [0,45,900]; - eShell.think = w_elites_ejectshell_death; - eShell.nextthink = time + 2.5f; - setsize(eShell, [0,0,0], [0,0,0]); - setorigin(eShell, gettaginfo(pSeat->m_eViewModel, pSeat->m_iVMBones + 1 + side)); -} - -void -w_pistol_ejectshell_left(void) -{ - w_elites_ejectshell(1); -} - -void -w_pistol_ejectshell_right(void) -{ - w_elites_ejectshell(0); -} -#endif - -enum -{ - ELITES_IDLE, - ELITES_IDLE_LEFTEMPTY, - ELITES_SHOOT_LEFT1, - ELITES_SHOOT_LEFT2, - ELITES_SHOOT_LEFT3, - ELITES_SHOOT_LEFT4, - ELITES_SHOOT_LEFT5, - ELITES_SHOOT_LEFTLAST, - ELITES_SHOOT_RIGHT1, - ELITES_SHOOT_RIGHT2, - ELITES_SHOOT_RIGHT3, - ELITES_SHOOT_RIGHT4, - ELITES_SHOOT_RIGHT5, - ELITES_SHOOT_RIGHTLAST, - ELITES_RELOAD, - ELITES_DRAW -}; - -void -w_elites_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_elites.fire"); - precache_model("models/w_elite.mdl"); -#else - precache_model("models/v_elite.mdl"); - precache_model("models/p_elite.mdl"); -#endif -} - -void -w_elites_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.elites_mag, pl.ammo_9mm, -1); -} - -string -w_elites_wmodel(void) -{ - return "models/w_elite.mdl"; -} - -string -w_elites_pmodel(player pl) -{ - return "models/p_elite.mdl"; -} - -string -w_elites_deathmsg(void) -{ - return ""; -} - -int -w_elites_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.elites_mag = 30; - else - pl.elites_mag = startammo; - } else { - if (pl.ammo_9mm < AMMO_MAX_9MM) { - pl.ammo_9mm = bound(0, pl.ammo_9mm + 30, AMMO_MAX_9MM); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_elites_draw(player pl) -{ - Weapons_SetModel("models/v_elite.mdl"); - Weapons_ViewAnimation(pl, ELITES_DRAW); - pl.mode_temp = 0; - -#ifdef CLIENT - pl.cs_cross_mindist = 4; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_elites_primary(player pl) -{ - - if (pl.w_attack_next > 0.0) { - return; - } - if (pl.gflags & GF_SEMI_TOGGLED) { - return; - } - if (!pl.elites_mag) { - return; - } - - pl.mode_temp = 1 - pl.mode_temp; - - - float accuracy = Cstrike_CalculateAccuracy(pl, 150,1)+0.002; - int dmg = 0; - pl.elites_mag--; - - int r = (float)input_sequence % 5; - if (pl.mode_temp) { - if (pl.elites_mag <= 0) { - Weapons_ViewAnimation(pl, ELITES_SHOOT_LEFTLAST); - } else { - switch (r) { - case 0: - Weapons_ViewAnimation(pl, ELITES_SHOOT_LEFT1); - break; - case 1: - Weapons_ViewAnimation(pl, ELITES_SHOOT_LEFT2); - break; - case 2: - Weapons_ViewAnimation(pl, ELITES_SHOOT_LEFT3); - break; - case 3: - Weapons_ViewAnimation(pl, ELITES_SHOOT_LEFT4); - break; - default: - Weapons_ViewAnimation(pl, ELITES_SHOOT_LEFT1); - break; - } - } - } else { - if (pl.elites_mag <= 0) { - Weapons_ViewAnimation(pl, ELITES_SHOOT_RIGHTLAST); - } else { - switch (r) { - case 0: - Weapons_ViewAnimation(pl, ELITES_SHOOT_RIGHT1); - break; - case 1: - Weapons_ViewAnimation(pl, ELITES_SHOOT_RIGHT2); - break; - case 2: - Weapons_ViewAnimation(pl, ELITES_SHOOT_RIGHT3); - break; - case 3: - Weapons_ViewAnimation(pl, ELITES_SHOOT_RIGHT4); - break; - default: - Weapons_ViewAnimation(pl, ELITES_SHOOT_RIGHT1); - break; - } - } - } - - if (pl.flags & FL_CROUCHING) { - if (pl.mode_temp) - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT2_DUALPISTOLS, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_DUALPISTOLS, 0.45f); - } else { - if (pl.mode_temp) - Animation_PlayerTop(pl, ANIM_SHOOT2_DUALPISTOLS, 0.45f); - else - Animation_PlayerTop(pl, ANIM_SHOOT_DUALPISTOLS, 0.45f); - } - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - - if (pl.mode_temp) - View_AddEvent(w_pistol_ejectshell_left, 0.0f); - else - View_AddEvent(w_pistol_ejectshell_right, 0.0f); -#else - dmg = Skill_GetValue("plr_elites_dmg", 45); - TraceAttack_SetRangeModifier(1.875); /* 14 but not 15 */ - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,.9f); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_ELITES, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,.9f); - Sound_Play(pl, CHAN_WEAPON, "weapon_elites.fire"); -#endif - Cstrike_ShotMultiplierAdd(pl, 3, .85,accuracy); - pl.gflags |= GF_SEMI_TOGGLED; - pl.w_attack_next = 0.13f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_elites_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.elites_mag >= 30) - return; - if (!pl.ammo_9mm) - return; - - Weapons_ViewAnimation(pl, ELITES_RELOAD); - - pl.w_attack_next = 4.6f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::elites_mag, player::ammo_9mm, 30); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_elites_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.elites_mag == 0 && pl.ammo_9mm > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_elites_aimanim(player pl) -{ - return pl.flags & FL_CROUCHING ? ANIM_CROUCH_AIM_DUALPISTOLS : ANIM_AIM_DUALPISTOLS; -} - -void -w_elites_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [48/256,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_elites_isempty(player pl) -{ - - if (pl.elites_mag <= 0 && pl.ammo_9mm <= 0) - return 1; - - return 0; -} - -void -w_elites_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_elites_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_9mm, AMMO_MAX_9MM, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud15_spr, - [0,90/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud14_spr, - [0,90/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_elites = -{ - .name = "elites", - .id = ITEM_ELITES, - .slot = 1, - .slot_pos = 4, - .weight = 5, - .allow_drop = TRUE, - .draw = w_elites_draw, - .holster = __NULL__, - .primary = w_elites_primary, - .secondary = __NULL__, - .reload = w_elites_reload, - .release = w_elites_release, - .postdraw = w_elites_hud, - .precache = w_elites_precache, - .pickup = w_elites_pickup, - .updateammo = w_elites_updateammo, - .wmodel = w_elites_wmodel, - .pmodel = w_elites_pmodel, - .deathmsg = w_elites_deathmsg, - .aimanim = w_elites_aimanim, - .hudpic = w_elites_hudpic, - .type = csweapon_ranged_type, - .isempty = w_elites_isempty -}; - -#ifdef SERVER -void -weapon_elites(void) -{ - Weapons_InitItem(WEAPON_ELITES); -} -#endif diff --git a/src/shared/w_fiveseven.qc b/src/shared/w_fiveseven.qc deleted file mode 100644 index 0edf9e5..0000000 --- a/src/shared/w_fiveseven.qc +++ /dev/null @@ -1,309 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_fiveseven (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Five-SeveN Weapon - -- Buy Menu - -Price: $750 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_fiveseven.mdl" -*/ - -enum -{ - FIVESEVEN_IDLE, - FIVESEVEN_SHOOT1, - FIVESEVEN_SHOOT2, - FIVESEVEN_SHOOT_EMPTY, - FIVESEVEN_RELOAD, - FIVESEVEN_DRAW -}; - -void -w_fiveseven_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_fiveseven.fire"); - precache_model("models/w_fiveseven.mdl"); -#else - precache_model("models/v_fiveseven.mdl"); - precache_model("models/p_fiveseven.mdl"); -#endif -} - -void -w_fiveseven_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.fiveseven_mag, pl.ammo_57mm, -1); -} - -string -w_fiveseven_wmodel(void) -{ - return "models/w_fiveseven.mdl"; -} - -string -w_fiveseven_pmodel(player pl) -{ - return "models/p_fiveseven.mdl"; -} - -string -w_fiveseven_deathmsg(void) -{ - return ""; -} - -int -w_fiveseven_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.fiveseven_mag = 20; - else - pl.fiveseven_mag = startammo; - } else { - if (pl.ammo_57mm < AMMO_MAX_57MM) { - pl.ammo_57mm = bound(0, pl.ammo_57mm + 20, AMMO_MAX_57MM); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_fiveseven_draw(player pl) -{ - Weapons_SetModel("models/v_fiveseven.mdl"); - Weapons_ViewAnimation(pl, FIVESEVEN_DRAW); - -#ifdef CLIENT - pl.cs_cross_mindist = 8; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_fiveseven_primary(player pl) -{ - - if (pl.w_attack_next > 0.0) { - return; - } - - if (pl.gflags & GF_SEMI_TOGGLED) { - return; - } - if (!pl.fiveseven_mag) { - return; - } - - - float accuracy = Cstrike_CalculateAccuracy(pl,200,1.4)+ 0.0055f; - int dmg = 0; - pl.fiveseven_mag--; - - if (pl.fiveseven_mag <= 0) { - Weapons_ViewAnimation(pl, FIVESEVEN_SHOOT_EMPTY); - } else { - int r = (float)input_sequence % 2; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, FIVESEVEN_SHOOT1); - break; - default: - Weapons_ViewAnimation(pl, FIVESEVEN_SHOOT2); - break; - } - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_ONEHAND, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_ONEHAND, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - dmg = Skill_GetValue("plr_fiveseven_dmg", 25); - TraceAttack_SetRangeModifier(1.875); /* 14 but not 15 */ - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,0.5f); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_FIVESEVEN, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,0.5f); - Sound_Play(pl, CHAN_WEAPON, "weapon_fiveseven.fire"); -#endif - Cstrike_ShotMultiplierAdd(pl, 10, .4,accuracy); - pl.gflags |= GF_SEMI_TOGGLED; - pl.w_attack_next = 0.155f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_fiveseven_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.fiveseven_mag >= 20) - return; - if (!pl.ammo_57mm) - return; - - Weapons_ViewAnimation(pl, FIVESEVEN_RELOAD); - - pl.w_attack_next = 3.1f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::fiveseven_mag, player::ammo_57mm, 20); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_fiveseven_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.fiveseven_mag == 0 && pl.ammo_57mm > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_fiveseven_aimanim(player pl) -{ - return pl.flags & FL_CROUCHING ? ANIM_CROUCH_AIM_ONEHAND : ANIM_AIM_ONEHAND; -} - -void -w_fiveseven_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [120/256,96/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_fiveseven_isempty(player pl) -{ - - if (pl.fiveseven_mag <= 0 && pl.ammo_57mm <= 0) - return 1; - - return 0; -} - -void -w_fiveseven_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_fiveseven_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_57mm, AMMO_MAX_57MM, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud15_spr, - [0,135/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud14_spr, - [0,135/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_fiveseven = -{ - .name = "fiveseven", - .id = ITEM_FIVESEVEN, - .slot = 1, - .slot_pos = 5, - .weight = 5, - .allow_drop = TRUE, - .draw = w_fiveseven_draw, - .holster = __NULL__, - .primary = w_fiveseven_primary, - .secondary = __NULL__, - .reload = w_fiveseven_reload, - .release = w_fiveseven_release, - .postdraw = w_fiveseven_hud, - .precache = w_fiveseven_precache, - .pickup = w_fiveseven_pickup, - .updateammo = w_fiveseven_updateammo, - .wmodel = w_fiveseven_wmodel, - .pmodel = w_fiveseven_pmodel, - .deathmsg = w_fiveseven_deathmsg, - .aimanim = w_fiveseven_aimanim, - .hudpic = w_fiveseven_hudpic, - .type = csweapon_ranged_type, - .isempty = w_fiveseven_isempty -}; - -#ifdef SERVER -void -weapon_fiveseven(void) -{ - Weapons_InitItem(WEAPON_FIVESEVEN); -} -#endif diff --git a/src/shared/w_flashbang.qc b/src/shared/w_flashbang.qc deleted file mode 100644 index afdd4de..0000000 --- a/src/shared/w_flashbang.qc +++ /dev/null @@ -1,307 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_flashbang (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Concussion (Flashbang) Grenade Weapon - -When thrown, nearby players become blinded temporarily from the blast. - -- Buy Menu - -Price: $200 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_flashbang.mdl" -*/ - -enum -{ - FLASHBANG_IDLE, - FLASHBANG_PULLPIN, - FLASHBANG_THROW, - FLASHBANG_DRAW, -}; - -void -w_flashbang_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_flashbang.bounce"); - Sound_Precache("weapon_flashbang.explode"); - precache_model("models/w_flashbang.mdl"); -#else - precache_model("models/v_flashbang.mdl"); - precache_model("models/p_flashbang.mdl"); -#endif -} - -void -w_flashbang_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, -1, pl.ammo_fbgrenade, pl.mode_temp); -} - -int -w_flashbang_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (pl.ammo_fbgrenade < AMMO_MAX_FLASHBANG) { - pl.ammo_fbgrenade = bound(0, pl.ammo_fbgrenade + 1, AMMO_MAX_FLASHBANG); - } else { - return (0); - } -#endif - return (1); -} - -string -w_flashbang_wmodel(void) -{ - return "models/w_flashbang.mdl"; -} - -string -w_flashbang_pmodel(player pl) -{ - return "models/p_flashbang.mdl"; -} - -string -w_flashbang_deathmsg(void) -{ - return ""; -} - -void -w_flashbang_draw(player pl) -{ - Weapons_SetModel("models/v_flashbang.mdl"); - Weapons_ViewAnimation(pl, FLASHBANG_DRAW); - pl.mode_temp = 0; - -#ifdef CLIENT - CStrikeView_UpdateGeomset(pl); -#endif -} - -#ifdef SERVER -void -w_flashbang_throw(player pl) -{ - static void flashbang_explode(void) - { - FX_Flashbang(self.origin); - Sound_Play(self, CHAN_BODY, "weapon_flashbang.explode"); - remove(self); - } - - static void flashbang_touch(void) - { - if (other.takedamage == DAMAGE_YES) { - Damage_Apply(other, self.owner, 15, WEAPON_FLASHBANG, DMG_BLUNT); - } else { - Sound_Play(self, CHAN_BODY, "weapon_flashbang.bounce"); - } - self.frame = 0; - } - - vector vPLAngle = pl.v_angle; - if (vPLAngle[0] < 0) { - vPLAngle[0] = -10 + vPLAngle[0] * ((90 - 10) / 90.0); - } else { - vPLAngle[0] = -10 + vPLAngle[0] * ((90 + 10) / 90.0); - } - - float flVel = (90 - vPLAngle[0]) * 5; - if (flVel > 1000) { - flVel = 1000; - } - - makevectors(vPLAngle); - vector vecSrc = pl.origin + pl.view_ofs + v_forward * 16; - vector vecThrow = v_forward * flVel + pl.velocity; - - entity eGrenade = spawn(); - eGrenade.owner = pl; - eGrenade.classname = "remove_me"; - eGrenade.solid = SOLID_BBOX; - eGrenade.frame = 1; - eGrenade.velocity = vecThrow; - eGrenade.movetype = MOVETYPE_BOUNCE; - eGrenade.think = flashbang_explode; - eGrenade.touch = flashbang_touch; - eGrenade.nextthink = time + 4.0f; - setmodel(eGrenade, "models/w_flashbang.mdl"); - setsize(eGrenade, [0,0,0], [0,0,0]); - setorigin(eGrenade, vecSrc); -} -#endif - -void -w_flashbang_primary(player pl) -{ - if (pl.w_attack_next > 0.0) { - return; - } - - /* We're abusing this network variable for the holding check */ - if (pl.mode_temp > 0) { - return; - } - - /* Ammo check */ - if (pl.ammo_fbgrenade <= 0) { -#ifdef SERVER - Weapons_RemoveItem(pl, WEAPON_FLASHBANG); -#endif - return; - } - - Weapons_ViewAnimation(pl, FLASHBANG_PULLPIN); - - pl.mode_temp = 1; - pl.w_attack_next = 0.975f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_flashbang_release(player pl) -{ - w_cstrike_weaponrelease(); - - if (pl.w_idle_next > 0.0) { - return; - } - - if (pl.mode_temp == 1) { - pl.ammo_fbgrenade--; -#ifdef CLIENT - Weapons_ViewAnimation(pl, FLASHBANG_THROW); -#else - w_flashbang_throw(pl); -#endif - pl.mode_temp = 2; - pl.w_attack_next = 1.0f; - pl.w_idle_next = 0.5f; - } else if (pl.mode_temp == 2) { -#ifdef CLIENT - Weapons_ViewAnimation(pl, FLASHBANG_DRAW); -#else - if (!pl.ammo_fbgrenade) { - Weapons_RemoveItem(pl, WEAPON_FLASHBANG); - } -#endif - pl.w_attack_next = 0.5f; - pl.w_idle_next = 0.5f; - pl.mode_temp = 0; - } -} - -float -w_flashbang_aimanim(player pl) -{ - return self.flags & FL_CROUCHING ? ANIM_CROUCH_AIM_GRENADE : ANIM_AIM_GRENADE; -} - -void -w_flashbang_hud(player pl) -{ -#ifdef CLIENT - - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [48/256,96/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_flashbang_isempty(player pl) -{ - - if (pl.ammo_fbgrenade <= 0) - return 1; - - return 0; -} - -void -w_flashbang_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - - HUD_DrawAmmoBar(pos, pl.ammo_fbgrenade, AMMO_MAX_FLASHBANG, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud6_spr, - [0,90/256], - [170/256,45/256], - g_hud_color, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud3_spr, - [0,90/256], - [170/256,45/256], - g_hud_color, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_flashbang = -{ - .name = "flashbang", - .id = ITEM_FLASHBANG, - .slot = 3, - .slot_pos = 1, - .allow_drop = FALSE, - .draw = w_flashbang_draw, - .holster = __NULL__, - .primary = w_flashbang_primary, - .secondary = __NULL__, - .reload = __NULL__, - .release = w_flashbang_release, - .postdraw = w_flashbang_hud, - .precache = w_flashbang_precache, - .pickup = w_flashbang_pickup, - .updateammo = w_flashbang_updateammo, - .wmodel = w_flashbang_wmodel, - .pmodel = w_flashbang_pmodel, - .deathmsg = w_flashbang_deathmsg, - .aimanim = w_flashbang_aimanim, - .hudpic = w_flashbang_hudpic, - .isempty = w_flashbang_isempty -}; - -#ifdef SERVER -void -weapon_flashbang(void) -{ - Weapons_InitItem(WEAPON_FLASHBANG); -} -#endif diff --git a/src/shared/w_g3sg1.qc b/src/shared/w_g3sg1.qc deleted file mode 100644 index c2e1c58..0000000 --- a/src/shared/w_g3sg1.qc +++ /dev/null @@ -1,318 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_g3sg1 (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Heckler & Koch G3/SG-1 Weapon - -- Buy Menu - -Price: $5000 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_g3sg1.mdl"*/ - -enum -{ - G3SG1_IDLE, - G3SG1_SHOOT1, - G3SG1_SHOOT2, - G3SG1_RELOAD, - G3SG1_DRAW -}; - -void -w_g3sg1_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_g3sg1.fire"); - precache_model("models/w_g3sg1.mdl"); -#else - precache_model("models/v_g3sg1.mdl"); - precache_model("models/p_g3sg1.mdl"); -#endif -} - -void -w_g3sg1_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.g3sg1_mag, pl.ammo_762mm, -1); -} - -string -w_g3sg1_wmodel(void) -{ - return "models/w_g3sg1.mdl"; -} - -string -w_g3sg1_pmodel(player pl) -{ - return "models/p_g3sg1.mdl"; -} - -string -w_g3sg1_deathmsg(void) -{ - return ""; -} - -int -w_g3sg1_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.g3sg1_mag = 20; - else - pl.g3sg1_mag = startammo; - } else { - if (pl.ammo_762mm < AMMO_MAX_762MM) { - pl.ammo_762mm = bound(0, pl.ammo_762mm + 20, AMMO_MAX_762MM); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_g3sg1_draw(player pl) -{ - Weapons_SetModel("models/v_g3sg1.mdl"); - Weapons_ViewAnimation(pl, G3SG1_DRAW); - -#ifdef CLIENT - pl.cs_cross_mindist = 6; - pl.cs_cross_deltadist = 4; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_g3sg1_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0.0) { - return; - } - if (!pl.g3sg1_mag) { - return; - } - - - float accuracy = Cstrike_CalculateAccuracy(pl, 200); - Cstrike_ShotMultiplierAdd(pl, 1, 1,accuracy); - pl.g3sg1_mag--; - - int r = (float)input_sequence % 2; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, SCOUT_SHOOT1); - break; - default: - Weapons_ViewAnimation(pl, SCOUT_SHOOT2); - break; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_rifle_ejectshell, 0.0f); -#else - dmg = Skill_GetValue("plr_g3sg1_dmg", 80); - TraceAttack_SetRangeModifier(2.375); - TraceAttack_SetPenetrationPower(1); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_G3SG1, "Impact.BigShot"); - Sound_Play(pl, CHAN_WEAPON, "weapon_g3sg1.fire"); -#endif - - pl.w_attack_next = 0.25f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_g3sg1_secondary(player pl) -{ - if (pl.w_attack_next) { - return; - } - /* Simple toggle of fovs */ - if (pl.viewzoom == 1.0f) { - pl.viewzoom = 0.45f; - Weapons_DisableModel(); - } else if (pl.viewzoom == 0.45f) { - pl.viewzoom = 0.1f; - Weapons_DisableModel(); - } else { - pl.viewzoom = 1.0f; - Weapons_EnableModel(); - } - pl.w_attack_next = 0.5f; -} - -void -w_g3sg1_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.g3sg1_mag >= 20) - return; - if (!pl.ammo_762mm) - return; - - Weapons_ViewAnimation(pl, G3SG1_RELOAD); - pl.w_attack_next = 4.6f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::g3sg1_mag, player::ammo_762mm, 20); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_g3sg1_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.g3sg1_mag == 0 && pl.ammo_762mm > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_g3sg1_aimanim(player pl) -{ - return w_ak47_aimanim(pl); -} - -void -w_g3sg1_hud(player pl) -{ -#ifdef CLIENT - if (pl.viewzoom < 1.0f) { - Cstrike_DrawScope(); - } - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [72/256,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_g3sg1_isempty(player pl) -{ - - if (pl.g3sg1_mag <= 0 && pl.ammo_762mm <= 0) - return 1; - - return 0; -} - -void -w_g3sg1_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_g3sg1_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_762mm, AMMO_MAX_762MM, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud5_spr, - [0,180/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud2_spr, - [0,180/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_g3sg1 = -{ - .name = "g3sg1", - .id = ITEM_G3SG1, - .slot = 0, - .slot_pos = 13, - .weight = 25, - .allow_drop = TRUE, - .draw = w_g3sg1_draw, - .holster = __NULL__, - .primary = w_g3sg1_primary, - .secondary = w_g3sg1_secondary, - .reload = w_g3sg1_reload, - .release = w_g3sg1_release, - .postdraw = w_g3sg1_hud, - .precache = w_g3sg1_precache, - .pickup = w_g3sg1_pickup, - .updateammo = w_g3sg1_updateammo, - .wmodel = w_g3sg1_wmodel, - .pmodel = w_g3sg1_pmodel, - .deathmsg = w_g3sg1_deathmsg, - .aimanim = w_g3sg1_aimanim, - .hudpic = w_g3sg1_hudpic, - .type = csweapon_ranged_type, - .isempty = w_g3sg1_isempty -}; - -#ifdef SERVER -void -weapon_g3sg1(void) -{ - Weapons_InitItem(WEAPON_G3SG1); -} -#endif diff --git a/src/shared/w_glock18.qc b/src/shared/w_glock18.qc deleted file mode 100644 index b1fd973..0000000 --- a/src/shared/w_glock18.qc +++ /dev/null @@ -1,395 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_glock18 (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Glock 18 Select Fire Weapon - -Default arsenal for Terrorists - -- Buy Menu - -Price: $400 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_glock18.mdl" -*/ - -enum -{ - GLOCK_IDLE1, - GLOCK_IDLE2, - GLOCK_IDLE3, - GLOCK_SHOOT_BURST1, - GLOCK_SHOOT_BURST2, - GLOCK_SHOOT, - GLOCK_SHOOT_EMPTY, - GLOCK_RELOAD1, - GLOCK_DRAW1, - GLOCK_UNUSED1, - GLOCK_UNUSED2, - GLOCK_DRAW2, - GLOCK_RELOAD2 -}; - -void -w_glock18_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_glock18.fire"); - Sound_Precache("weapon_glock18.burstfire"); - precache_model("models/w_glock18.mdl"); -#else - precache_model("models/v_glock18.mdl"); - precache_model("models/p_glock18.mdl"); -#endif -} - -void -w_glock18_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.glock18_mag, pl.ammo_9mm, -1); -} - -string -w_glock18_wmodel(void) -{ - return "models/w_glock18.mdl"; -} - -string -w_glock18_pmodel(player pl) -{ - return "models/p_glock18.mdl"; -} - -string -w_glock18_deathmsg(void) -{ - return ""; -} - -int -w_glock18_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.glock18_mag = 20; - else - pl.glock18_mag = startammo; - } else { - if (pl.ammo_9mm < AMMO_MAX_9MM) { - pl.ammo_9mm = bound(0, pl.ammo_9mm + 20, AMMO_MAX_9MM); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_glock18_draw(player pl) -{ - Weapons_SetModel("models/v_glock18.mdl"); - - int r = (float)input_sequence % 2; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, GLOCK_DRAW1); - break; - default: - Weapons_ViewAnimation(pl, GLOCK_DRAW2); - break; - } - -#ifdef CLIENT - pl.cs_cross_mindist = 8; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_glock18_primary(player pl) -{ - if (pl.w_attack_next > 0.0) - return; - if (pl.gflags & GF_SEMI_TOGGLED) - return; - if (!pl.glock18_mag) - return; - - float accuracy = Cstrike_CalculateAccuracy(pl, (pl.mode_glock18) ? 75 : 120,1.2); - int shotcount = (pl.mode_glock18) ? 3 : 1; - int dmg = 0; - - /* fix shotcount if we're < 3 in burst mode */ - if (pl.glock18_mag < 3 && pl.mode_glock18) - shotcount = pl.glock18_mag; - - for (int i = 0; i < shotcount; i ++) { - - - accuracy += 0.0035; - pl.glock18_mag--; -#ifdef SERVER - dmg = Skill_GetValue("plr_glock18_dmg", 25); - TraceAttack_SetRangeModifier(1.25); /* penetrates 9 units, but not 10 */ - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,0.6); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_GLOCK18, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,0.6); -#endif - } - - if (pl.mode_glock18) { - int r = (float)input_sequence % 2; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, GLOCK_SHOOT_BURST1); - break; - default: - Weapons_ViewAnimation(pl, GLOCK_SHOOT_BURST2); - break; - } - pl.w_attack_next = 0.5f; - } else { - if (pl.glock18_mag <= 0) { - Weapons_ViewAnimation(pl, GLOCK_SHOOT_EMPTY); - } else { - Weapons_ViewAnimation(pl, GLOCK_SHOOT); - } - pl.w_attack_next = 0.13f; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_ONEHAND, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_ONEHAND, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - if (pl.mode_glock18) { - Sound_Play(pl, CHAN_WEAPON, "weapon_glock18.burstfire"); - } else { - Sound_Play(pl, CHAN_WEAPON, "weapon_glock18.fire"); - } -#endif - - Cstrike_ShotMultiplierAdd(pl, 2, .7,accuracy); - pl.gflags |= GF_SEMI_TOGGLED; - pl.w_idle_next = pl.w_attack_next + 1.0f; -} - -void -w_glock18_secondary(player pl) -{ - - if (pl.w_attack_next > 0) { - return; - } - - /* toggle burst-fire */ - pl.mode_glock18 = 1 - pl.mode_glock18; - -#ifdef CLIENT - if (pl.mode_glock18) { - CSQC_Parse_CenterPrint("Switched to Burst-Fire mode"); - } else { - CSQC_Parse_CenterPrint("Switched to Semi-Automatic mode"); - } -#endif - - pl.w_attack_next = 0.5f; - pl.w_idle_next = pl.w_attack_next + 1.0f; -} - -void -w_glock18_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.glock18_mag >= 20) - return; - if (!pl.ammo_9mm) - return; - - int r = (float)input_sequence % 2; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, GLOCK_RELOAD1); - break; - default: - Weapons_ViewAnimation(pl, GLOCK_RELOAD2); - break; - } - - pl.w_attack_next = 2.1f; - pl.w_idle_next = pl.w_attack_next + 1.0f; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::glock18_mag, player::ammo_9mm, 20); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_glock18_release(player pl) -{ - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.glock18_mag == 0 && pl.ammo_9mm > 0) { - Weapons_Reload(pl); - return; - } - - if (pl.w_idle_next) - return; - - int r = floor(pseudorandom() * 3); - - switch (r) { - case 0: - Weapons_ViewAnimation(pl, GLOCK_IDLE1); - pl.w_idle_next = 2.8125f; - break; - case 1: - Weapons_ViewAnimation(pl, GLOCK_IDLE2); - pl.w_idle_next = 2.25f; - break; - case 2: - Weapons_ViewAnimation(pl, GLOCK_IDLE3); - pl.w_idle_next = 2.5f; - break; - } -} - -float -w_glock18_aimanim(player pl) -{ - return w_deagle_aimanim(pl); -} - -void -w_glock18_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [48/256,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_glock18_isempty(player pl) -{ - - if (pl.glock18_mag <= 0 && pl.ammo_9mm <= 0) - return 1; - - return 0; -} - -void -w_glock18_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_glock18_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_9mm, AMMO_MAX_9MM, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud4_spr, - [0,45/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud1_spr, - [0,45/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_glock18 = -{ - .name = "glock18", - .id = ITEM_GLOCK18, - .slot = 1, - .slot_pos = 1, - .weight = 5, - .allow_drop = TRUE, - .draw = w_glock18_draw, - .holster = __NULL__, - .primary = w_glock18_primary, - .secondary = w_glock18_secondary, - .reload = w_glock18_reload, - .release = w_glock18_release, - .postdraw = w_glock18_hud, - .precache = w_glock18_precache, - .pickup = w_glock18_pickup, - .updateammo = w_glock18_updateammo, - .wmodel = w_glock18_wmodel, - .pmodel = w_glock18_pmodel, - .deathmsg = w_glock18_deathmsg, - .aimanim = w_glock18_aimanim, - .hudpic = w_glock18_hudpic, - .type = csweapon_ranged_type, - .isempty = w_glock18_isempty -}; - -#ifdef SERVER -void -weapon_glock18(void) -{ - Weapons_InitItem(WEAPON_GLOCK18); -} -#endif diff --git a/src/shared/w_hegrenade.qc b/src/shared/w_hegrenade.qc deleted file mode 100644 index 909671f..0000000 --- a/src/shared/w_hegrenade.qc +++ /dev/null @@ -1,310 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_hegrenade (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -HE (High Explosive) Grenade Weapon - -When thrown, explodes with a fairly deadly blast radius to players. - -- Buy Menu - -Price: $300 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_hegrenade.mdl" -*/ - -enum -{ - HEGRENADE_IDLE, - HEGRENADE_PULLPIN, - HEGRENADE_THROW, - HEGRENADE_DRAW, -}; - -void -w_hegrenade_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_hegrenade.bounce"); - Sound_Precache("weapon_hegrenade.explode"); - precache_model("models/w_hegrenade.mdl"); -#else - precache_model("models/v_hegrenade.mdl"); - precache_model("models/p_hegrenade.mdl"); -#endif -} - -void -w_hegrenade_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, -1, pl.ammo_hegrenade, pl.mode_temp); -} - -int -w_hegrenade_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (pl.ammo_hegrenade < AMMO_MAX_HENADE) { - pl.ammo_hegrenade = bound(0, pl.ammo_hegrenade + 1, AMMO_MAX_HENADE); - } else { - return (0); - } -#endif - return (1); -} - -string -w_hegrenade_wmodel(void) -{ - return "models/w_hegrenade.mdl"; -} - -string -w_hegrenade_pmodel(player pl) -{ - return "models/p_hegrenade.mdl"; -} - -string -w_hegrenade_deathmsg(void) -{ - return ""; -} - -void -w_hegrenade_draw(player pl) -{ - Weapons_SetModel("models/v_hegrenade.mdl"); - Weapons_ViewAnimation(pl, HEGRENADE_DRAW); - pl.mode_temp = 0; - -#ifdef CLIENT - CStrikeView_UpdateGeomset(pl); -#endif -} - -#ifdef SERVER -void -w_hegrenade_throw(player pl) -{ - static void hegrenade_explode(void) - { - float dmg = 100; - pointparticles(particleeffectnum("fx_explosion.main"), self.origin, [0,0,0], 1); - Damage_Radius(self.origin, self.owner, dmg, dmg * 2.5f, TRUE, WEAPON_HEGRENADE); - Sound_Play(self, CHAN_BODY, "weapon_hegrenade.explode"); - remove(self); - } - - static void hegrenade_touch(void) - { - if (other.takedamage == DAMAGE_YES) { - Damage_Apply(other, self.owner, 15, WEAPON_HEGRENADE, DMG_BLUNT); - } else { - Sound_Play(self, CHAN_BODY, "weapon_hegrenade.bounce"); - } - self.frame = 0; - } - - vector vPLAngle = pl.v_angle; - if (vPLAngle[0] < 0) { - vPLAngle[0] = -10 + vPLAngle[0] * ((90 - 10) / 90.0); - } else { - vPLAngle[0] = -10 + vPLAngle[0] * ((90 + 10) / 90.0); - } - - float flVel = (90 - vPLAngle[0]) * 5; - if (flVel > 1000) { - flVel = 1000; - } - - makevectors(vPLAngle); - vector vecSrc = pl.origin + pl.view_ofs + v_forward * 16; - vector vecThrow = v_forward * flVel + pl.velocity; - - entity eGrenade = spawn(); - eGrenade.owner = pl; - eGrenade.classname = "remove_me"; - eGrenade.solid = SOLID_BBOX; - eGrenade.frame = 1; - eGrenade.velocity = vecThrow; - eGrenade.movetype = MOVETYPE_BOUNCE; - eGrenade.think = hegrenade_explode; - eGrenade.touch = hegrenade_touch; - eGrenade.nextthink = time + 4.0f; - setmodel(eGrenade, "models/w_hegrenade.mdl"); - setsize(eGrenade, [0,0,0], [0,0,0]); - setorigin(eGrenade, vecSrc); -} -#endif - -void -w_hegrenade_primary(player pl) -{ - if (pl.w_attack_next > 0.0) { - return; - } - - /* We're abusing this network variable for the holding check */ - if (pl.mode_temp > 0) { - return; - } - - /* Ammo check */ - if (pl.ammo_hegrenade <= 0) { -#ifdef SERVER - Weapons_RemoveItem(pl, WEAPON_HEGRENADE); -#endif - return; - } - - Weapons_ViewAnimation(pl, HEGRENADE_PULLPIN); - - pl.mode_temp = 1; - pl.w_attack_next = 0.975f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_hegrenade_release(player pl) -{ - - w_cstrike_weaponrelease(); - - if (pl.w_idle_next > 0.0) { - return; - } - - if (pl.mode_temp == 1) { - pl.ammo_hegrenade--; -#ifdef CLIENT - Weapons_ViewAnimation(pl, HEGRENADE_THROW); -#else - w_hegrenade_throw(pl); -#endif - pl.mode_temp = 2; - pl.w_attack_next = 1.0f; - pl.w_idle_next = 0.5f; - } else if (pl.mode_temp == 2) { -#ifdef CLIENT - Weapons_ViewAnimation(pl, HEGRENADE_DRAW); -#else - if (!pl.ammo_hegrenade) { - Weapons_RemoveItem(pl, WEAPON_HEGRENADE); - } -#endif - pl.w_attack_next = 0.5f; - pl.w_idle_next = 0.5f; - pl.mode_temp = 0; - } -} - -float -w_hegrenade_aimanim(player pl) -{ - return w_flashbang_aimanim(pl); -} - -void -w_hegrenade_hud(player pl) -{ -#ifdef CLIENT - - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [72/256,96/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_hegrenade_isempty(player pl) -{ - - if (pl.ammo_hegrenade <= 0) - return 1; - - return 0; -} - -void -w_hegrenade_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - - HUD_DrawAmmoBar(pos, pl.ammo_hegrenade, AMMO_MAX_HENADE, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud6_spr, - [0,45/256], - [170/256,45/256], - g_hud_color, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud3_spr, - [0,45/256], - [170/256,45/256], - g_hud_color, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_hegrenade = -{ - .name = "hegrenade", - .id = ITEM_HEGRENADE, - .slot = 3, - .slot_pos = 0, - .allow_drop = FALSE, - .draw = w_hegrenade_draw, - .holster = __NULL__, - .primary = w_hegrenade_primary, - .secondary = __NULL__, - .reload = __NULL__, - .release = w_hegrenade_release, - .postdraw = w_hegrenade_hud, - .precache = w_hegrenade_precache, - .pickup = w_hegrenade_pickup, - .updateammo = w_hegrenade_updateammo, - .wmodel = w_hegrenade_wmodel, - .pmodel = w_hegrenade_pmodel, - .deathmsg = w_hegrenade_deathmsg, - .aimanim = w_hegrenade_aimanim, - .hudpic = w_hegrenade_hudpic, - .isempty = w_hegrenade_isempty -}; - -#ifdef SERVER -void -weapon_hegrenade(void) -{ - Weapons_InitItem(WEAPON_HEGRENADE); -} -#endif diff --git a/src/shared/w_knife.qc b/src/shared/w_knife.qc deleted file mode 100644 index c2b363b..0000000 --- a/src/shared/w_knife.qc +++ /dev/null @@ -1,323 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_knife (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Knife Weapon - -Default arsenal on both teams - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_knife.mdl" -*/ - -enum -{ - KNIFE_IDLE1, - KNIFE_SLASH1, - KNIFE_SLASH2, - KNIFE_DRAW, - KNIFE_STAB, - KNIFE_STAB_MISS, - KNIFE_MIDSLASH1, - KNIFE_MIDSLASH2 -}; - -void -w_knife_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_knife.hit"); - Sound_Precache("weapon_knife.hitbody"); - Sound_Precache("weapon_knife.hithard"); - Sound_Precache("weapon_knife.miss"); - precache_model("models/w_knife.mdl"); -#else - precache_model("models/v_knife.mdl"); - precache_model("models/p_knife.mdl"); -#endif -} - -void -w_knife_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, -1, -1, -1); -} - -string -w_knife_wmodel(void) -{ - return "models/w_knife.mdl"; -} - -string -w_knife_pmodel(player pl) -{ - return "models/p_knife.mdl"; -} - -string -w_knife_deathmsg(void) -{ - return ""; -} - -void -w_knife_draw(player pl) -{ - Weapons_SetModel("models/v_knife.mdl"); - Weapons_ViewAnimation(pl, KNIFE_DRAW); - -#ifdef CLIENT - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_knife_primary(player pl) -{ - - if (pl.w_attack_next > 0.0) { - return; - } - pl.w_attack_next = 0.7f; - - int r = (float)input_sequence % 2; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, KNIFE_SLASH1); - break; - default: - Weapons_ViewAnimation(pl, KNIFE_SLASH2); - break; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_KNIFE, 1.33f); - else - Animation_PlayerTop(pl, ANIM_SHOOT_KNIFE, 1.33f); - -#ifdef SERVER - vector src; - int range = Skill_GetValue("plr_knife_range", 48); - - Weapons_MakeVectors(pl); - src = pl.origin + pl.view_ofs; - traceline(src, src + (v_forward * range), MOVE_HITMODEL, pl); - - Sound_Play(pl, CHAN_WEAPON, "weapon_knife.miss"); - - if (trace_fraction >= 1.0) { - return; - } - - if (trace_ent.iBleeds) { - FX_Blood(trace_endpos, [1,0,0]); - Sound_Play(pl, CHAN_WEAPON, "weapon_knife.hitbody"); - } else { - Sound_Play(pl, CHAN_WEAPON, "weapon_knife.hit"); - } - - /* let's calculate damage! */ - if (trace_ent.takedamage) { - /* values taken from https://counterstrike.fandom.com/wiki/Knife */ - int dmg = 0; - - switch (trace_surface_id) { - case BODY_HEAD: - dmg = Skill_GetValue("plr_knife_dmghead", 60); - break; - case BODY_STOMACH: - dmg = Skill_GetValue("plr_knife_dmgstomach", 18); - break; - case BODY_LEGLEFT: - case BODY_LEGRIGHT: - dmg = Skill_GetValue("plr_knife_dmglegs", 11); - break; - case BODY_CHEST: - dmg = Skill_GetValue("plr_knife_dmgchest", 15); - break; - case BODY_ARMLEFT: - case BODY_ARMRIGHT: - dmg = Skill_GetValue("plr_knife_dmgarms", 15); - break; - case BODY_DEFAULT: - default: - dmg = Skill_GetValue("plr_knife_dmg", 15); - break; - } - Damage_Apply(trace_ent, pl, dmg, WEAPON_KNIFE, DMG_SLASH); - } -#endif -} - -void -w_knife_secondary(player pl) -{ - - if (pl.w_attack_next > 0.0) { - return; - } - pl.w_attack_next = 1.2f; - - - Weapons_ViewAnimation(pl, KNIFE_STAB); - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_KNIFE, 1.33f); - else - Animation_PlayerTop(pl, ANIM_SHOOT_KNIFE, 1.33f); - -#ifdef SERVER - vector src; - int range = Skill_GetValue("plr_knife_altrange", 48); - - Weapons_MakeVectors(pl); - src = pl.origin + pl.view_ofs; - traceline(src, src + (v_forward * range), MOVE_HITMODEL, pl); - - Sound_Play(pl, CHAN_WEAPON, "weapon_knife.miss"); - - if (trace_fraction >= 1.0) { - return; - } - - /* don't bother with decals, we got squibs */ - if (trace_ent.iBleeds) { - FX_Blood(trace_endpos, [1,0,0]); - Sound_Play(pl, CHAN_WEAPON, "weapon_knife.hitbody"); - } else { - Sound_Play(pl, CHAN_WEAPON, "weapon_knife.hit"); - } - - /* let's calculate damage! */ - if (trace_ent.takedamage) { - /* values taken from https://counterstrike.fandom.com/wiki/Knife */ - int dmg = 0; - switch (trace_surface_id) { - case BODY_HEAD: - dmg = Skill_GetValue("plr_knife_altdmghead", 260); - break; - case BODY_STOMACH: - dmg = Skill_GetValue("plr_knife_altdmgstomach", 81); - break; - case BODY_LEGLEFT: - case BODY_LEGRIGHT: - dmg = Skill_GetValue("plr_knife_altdmglegs", 48); - break; - case BODY_CHEST: - dmg = Skill_GetValue("plr_knife_altdmgchest", 65); - break; - case BODY_ARMLEFT: - case BODY_ARMRIGHT: - dmg = Skill_GetValue("plr_knife_altdmgarms", 65); - break; - case BODY_DEFAULT: - default: - dmg = Skill_GetValue("plr_knife_altdmg", 65); - break; - } - - /* secondary can do a backstab */ - if (trace_ent.classname == "player") { - player otherpl = (player)trace_ent; - if (otherpl.IsFacing(pl) == false) { - dmg *= 3; - } - } - - Damage_Apply(trace_ent, pl, dmg, WEAPON_KNIFE, DMG_SLASH); - } -#endif -} - -float -w_knife_aimanim(player pl) -{ - return pl.flags & FL_CROUCHING ? ANIM_CROUCH_AIM_KNIFE : ANIM_AIM_KNIFE; -} - -int -w_knife_isempty(player pl) -{ - return 0; -} - -void -w_knife_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud11_spr, - [0,135/256], - [170/256,45/256], - g_hud_color, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud10_spr, - [0,135/256], - [170/256,45/256], - g_hud_color, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_knife = -{ - .name = "knife", - .id = ITEM_KNIFE, - .slot = 2, - .slot_pos = 0, - .allow_drop = FALSE, - .draw = w_knife_draw, - .holster = __NULL__, - .primary = w_knife_primary, - .secondary = w_knife_secondary, - .reload = __NULL__, - .release = __NULL__, - .postdraw = __NULL__, - .precache = w_knife_precache, - .pickup = __NULL__, - .updateammo = w_knife_updateammo, - .wmodel = w_knife_wmodel, - .pmodel = w_knife_pmodel, - .deathmsg = w_knife_deathmsg, - .aimanim = w_knife_aimanim, - .hudpic = w_knife_hudpic, - .type = csweapon_melee_type, - .isempty = w_knife_isempty -}; - -#ifdef SERVER -void -weapon_knife(void) -{ - Weapons_InitItem(WEAPON_KNIFE); -} -#endif diff --git a/src/shared/w_m3.qc b/src/shared/w_m3.qc deleted file mode 100644 index 1de567b..0000000 --- a/src/shared/w_m3.qc +++ /dev/null @@ -1,378 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_m3 (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Benneli M3 Super90 Weapon - -- Buy Menu - -Price: $1700 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_m3.mdl" -*/ - -#ifdef CLIENT -void -w_m3_ejectshell(void) -{ - static void w_m3_ejectshell_death(void) { - remove(self); - } - static void w_m3_ejectshell_touch(void) { - if (other == world) - Sound_Play(self, CHAN_BODY, "modelevent_shotgunshell.land"); - } - entity eShell = spawn(); - setmodel(eShell, "models/shotgunshell.mdl"); - eShell.solid = SOLID_BBOX; - eShell.movetype = MOVETYPE_BOUNCE; - eShell.drawmask = MASK_ENGINE; - eShell.angles = [pSeat->m_eViewModel.angles[0], pSeat->m_eViewModel.angles[1] + 20, 0]; - eShell.velocity = pSeat->m_vecPredictedVelocity; - - makevectors(pSeat->m_eViewModel.angles); - eShell.velocity += (v_forward * 0); - eShell.velocity += (v_right * -80); - eShell.velocity += (v_up * 100); - eShell.touch = w_m3_ejectshell_touch; - - eShell.avelocity = [0,45,900]; - eShell.think = w_m3_ejectshell_death; - eShell.renderflags |= RF_DEPTHHACK; - eShell.nextthink = time + 2.5f; - setsize(eShell, [0,0,0], [0,0,0]); - setorigin(eShell, pSeat->m_eViewModel.origin + (v_forward * 10) + (v_right * 10) + (v_up * -8)); -} -#endif - -enum -{ - M3_IDLE, - M3_SHOOT1, - M3_SHOOT2, - M3_INSERT, - M3_RELOAD_END, - M3_RELOAD_START, - M3_DRAW -}; - -enum -{ - M3S_IDLE, - M3S_RELOAD_START, - M3S_RELOAD, - M3S_RELOAD_END -}; - -void -w_m3_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_m3.fire"); - precache_model("models/w_m3.mdl"); -#else - precache_model("models/v_m3.mdl"); - precache_model("models/p_m3.mdl"); - Sound_Precache("modelevent_shotgunshell.land"); -#endif -} - -void -w_m3_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.m3_mag, pl.ammo_buckshot, -1); -} - -string -w_m3_wmodel(void) -{ - return "models/w_m3.mdl"; -} - -string -w_m3_pmodel(player pl) -{ - return "models/p_m3.mdl"; -} - -string -w_m3_deathmsg(void) -{ - return ""; -} - -int -w_m3_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.m3_mag = 8; - else - pl.m3_mag = startammo; - } else { - if (pl.ammo_buckshot < AMMO_MAX_BUCKSHOT) { - pl.ammo_buckshot = bound(0, pl.ammo_buckshot + 8, AMMO_MAX_BUCKSHOT); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_m3_draw(player pl) -{ - Weapons_SetModel("models/v_m3.mdl"); - Weapons_ViewAnimation(pl, M3_DRAW); - pl.mode_temp = 0; - -#ifdef CLIENT - pl.cs_cross_mindist = 8; - pl.cs_cross_deltadist = 6; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void w_m3_release(player pl); - -void -w_m3_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0.0) { - w_m3_release(pl); - return; - } - - /* interrupt reloading if no longer empty */ - if (pl.mode_temp == M3S_RELOAD && pl.m3_mag >= 1) { - pl.mode_temp = M3S_RELOAD_END; - w_m3_release(pl); - return; - } else if (pl.mode_temp > M3S_IDLE) { - w_m3_release(pl); - return; - } - - /* Ammo check */ - if (pl.m3_mag <= 0) { - w_m3_release(pl); - return; - } - - pl.m3_mag--; - - int r = (float)input_sequence % 2; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, M3_SHOOT1); - break; - default: - Weapons_ViewAnimation(pl, M3_SHOOT2); - break; - } - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_m3_ejectshell, 0.6f); -#else - dmg = Skill_GetValue("plr_m3_dmg", 26); - TraceAttack_SetPenetrationPower(0); /* shotties can't wallbang?! */ - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_SHOTGUN, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_SHOTGUN, 0.45f); - - Sound_Play(pl, CHAN_WEAPON, "weapon_m3.fire"); -#endif - - for (int i = 0; i < 9; i++) { - Cstrike_ShotMultiplierAdd(pl, 1, 1,1); - pl.punchangle[0] = -4 * (9 / 6); -#ifdef SERVER - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [random(-1,1) * 0.1,random(-1,1) * 0.05], WEAPON_M3, "Impact.BigShot"); -#endif - } - - pl.w_attack_next = 1.0f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_m3_reload(player pl) -{ - - if (pl.m3_mag >= 8) { - return; - } - if (pl.ammo_buckshot <= 0) { - return; - } - - if (pl.mode_temp > M3S_IDLE) { - return; - } - pl.mode_temp = M3S_RELOAD_START; - pl.w_idle_next = 0.0f; -} - -void -w_m3_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.mode_temp == M3S_IDLE && pl.m3_mag == 0 && pl.ammo_buckshot > 0) { - Weapons_Reload(pl); - return; - } - - if (pl.w_idle_next > 0.0) { - return; - } - - if (pl.mode_temp == M3S_RELOAD_START) { - Weapons_ViewAnimation(pl, M3_RELOAD_START); - pl.mode_temp = M3S_RELOAD; - pl.w_idle_next = 0.65f; - } else if (pl.mode_temp == M3S_RELOAD) { - Weapons_ViewAnimation(pl, M3_INSERT); - pl.m3_mag++; - pl.ammo_buckshot--; - w_m3_updateammo(pl); - if (pl.ammo_buckshot <= 0 || pl.m3_mag >= 8) { - pl.mode_temp = M3S_RELOAD_END; - } - pl.w_idle_next = 0.5f; - } else if (pl.mode_temp == M3S_RELOAD_END) { - Weapons_ViewAnimation(pl, M3_RELOAD_END); - pl.mode_temp = M3S_IDLE; - pl.w_idle_next = 10.0f; - pl.w_attack_next = 0.5f; - } -} - -float -w_m3_aimanim(player pl) -{ - return w_ak47_aimanim(pl); -} - -void -w_m3_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [0,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_m3_isempty(player pl) -{ - - if (pl.m3_mag <= 0 && pl.ammo_buckshot <= 0) - return 1; - - return 0; -} - -void -w_m3_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_m3_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_buckshot, AMMO_MAX_BUCKSHOT, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud4_spr, - [0,135/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud1_spr, - [0,135/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_m3 = -{ - .name = "m3", - .id = ITEM_M3, - .slot = 0, - .slot_pos = 0, - .weight = 20, - .allow_drop = TRUE, - .draw = w_m3_draw, - .holster = __NULL__, - .primary = w_m3_primary, - .secondary = __NULL__, - .reload = w_m3_reload, - .release = w_m3_release, - .postdraw = w_m3_hud, - .precache = w_m3_precache, - .pickup = w_m3_pickup, - .updateammo = w_m3_updateammo, - .wmodel = w_m3_wmodel, - .pmodel = w_m3_pmodel, - .deathmsg = w_m3_deathmsg, - .aimanim = w_m3_aimanim, - .hudpic = w_m3_hudpic, - .type = csweapon_ranged_type, - .isempty = w_m3_isempty -}; - -#ifdef SERVER -void -weapon_m3(void) -{ - Weapons_InitItem(WEAPON_M3); -} -#endif diff --git a/src/shared/w_m4a1.qc b/src/shared/w_m4a1.qc deleted file mode 100644 index 632b099..0000000 --- a/src/shared/w_m4a1.qc +++ /dev/null @@ -1,383 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_m4a1 (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Colt M4A1 Carbine Weapon - -- Buy Menu - -Price: $3100 -Counter-Terrorists only weapon - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_m4a1.mdl" -*/ - -enum -{ - M4A1_IDLE, - M4A1_SHOOT1, - M4A1_SHOOT2, - M4A1_SHOOT3, - M4A1_RELOAD, - M4A1_DRAW, - M4A1_ADDSIL, - M4A1_IDLEUNSIL, - M4A1_SHOOT1UNSIL, - M4A1_SHOOT2UNSIL, - M4A1_SHOOT3UNSIL, - M4A1_RELOADUNSIL, - M4A1_DRAWUNSIL, - M4A1_DETACHSIL -}; - -void -w_m4a1_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_m4a1.fire"); - Sound_Precache("weapon_m4a1.silenced"); - precache_model("models/w_m4a1.mdl"); -#else - precache_model("models/v_m4a1.mdl"); - precache_model("models/p_m4a1.mdl"); -#endif -} - -void -w_m4a1_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.m4a1_mag, pl.ammo_556mm, -1); -} - -string -w_m4a1_wmodel(void) -{ - return "models/w_m4a1.mdl"; -} - -string -w_m4a1_pmodel(player pl) -{ - return "models/p_m4a1.mdl"; -} - -string -w_m4a1_deathmsg(void) -{ - return ""; -} - -int -w_m4a1_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - Cstrike_ShotMultiplierUpdate(pl); - if (new) { - if (startammo == -1) - pl.m4a1_mag = 30; - else - pl.m4a1_mag = startammo; - } else { - if (pl.ammo_556mm < AMMO_MAX_556MM) { - pl.ammo_556mm = bound(0, pl.ammo_556mm + 30, AMMO_MAX_556MM); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_m4a1_draw(player pl) -{ - - Weapons_SetModel("models/v_m4a1.mdl"); - - if (pl.mode_m4a1 == 1) { - Weapons_ViewAnimation(pl, M4A1_DRAW); - } else { - Weapons_ViewAnimation(pl, M4A1_DRAWUNSIL); - } - -#ifdef CLIENT - pl.cs_cross_mindist = 4; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_m4a1_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0.0) { - return; - } - if (!pl.m4a1_mag) { - return; - } - - - float accuracy = Cstrike_CalculateAccuracy(pl, 60, 3); -// accuracy += pl.cs_shotmultiplier*pl.cs_shotmultiplier / 500; - pl.m4a1_mag--; - - int r = (float)input_sequence % 3; - if (pl.mode_m4a1 == 1) { - switch (r) { - case 0: - Weapons_ViewAnimation(pl, M4A1_SHOOT1); - break; - case 1: - Weapons_ViewAnimation(pl, M4A1_SHOOT2); - break; - default: - Weapons_ViewAnimation(pl, M4A1_SHOOT3); - break; - } - } else { - switch (r) { - case 0: - Weapons_ViewAnimation(pl, M4A1_SHOOT1UNSIL); - break; - case 1: - Weapons_ViewAnimation(pl, M4A1_SHOOT2UNSIL); - break; - default: - Weapons_ViewAnimation(pl, M4A1_SHOOT3UNSIL); - break; - } - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); - - /* actual firing */ -#ifdef CLIENT - if (pl.mode_m4a1 == 1) { - View_SetMuzzleflash(0); - } else { - View_SetMuzzleflash(MUZZLE_RIFLE); - } - View_AddEvent(w_rifle_ejectshell, 0.0f); -#else - /* Different sounds without silencer */ - if (pl.mode_m4a1 == 1) { - Sound_Play(pl, CHAN_WEAPON, "weapon_m4a1.silenced"); - } else { - Sound_Play(pl, CHAN_WEAPON, "weapon_m4a1.fire"); - } - - dmg = Skill_GetValue("plr_m4a1_dmg", 33); - TraceAttack_SetRangeModifier(2.125); - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,.96f); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_M4A1, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,.96f); -#endif - - Cstrike_ShotMultiplierAdd(pl, 0.8f, 1.025f,accuracy*0.8); - pl.w_attack_next = 0.0875f; - pl.w_idle_next = 2.0f; -} - -void -w_m4a1_secondary(player pl) -{ - - if (pl.w_attack_next > 0) { - return; - } - - /* toggle silencer */ - pl.mode_m4a1 = 1 - pl.mode_m4a1; - - /* play the animation */ - if (pl.mode_m4a1) { - Weapons_ViewAnimation(pl, M4A1_ADDSIL); - } else { - Weapons_ViewAnimation(pl, M4A1_DETACHSIL); - } - - pl.w_attack_next = 2.0f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_m4a1_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.m4a1_mag >= 30) - return; - if (!pl.ammo_556mm) - return; - Cstrike_ShotMultiplierUpdate(pl); - - if (pl.mode_m4a1 == 1) - Weapons_ViewAnimation(pl, M4A1_RELOAD); - else - Weapons_ViewAnimation(pl, M4A1_RELOADUNSIL); - - pl.w_attack_next = 3.1f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::m4a1_mag, player::ammo_556mm, 30); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -float -w_m4a1_aimanim(player pl) -{ - return pl.flags & FL_CROUCHING ? ANIM_CROUCH_AIM_RIFLE : ANIM_AIM_RIFLE; -} - -void -w_m4a1_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [0,96/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -void -w_m4a1_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.m4a1_mag == 0 && pl.ammo_556mm > 0) { - Weapons_Reload(pl); - return; - } - - if (pl.w_idle_next > 0.0) { - return; - } - - if (pl.mode_m4a1) { - Weapons_ViewAnimation(pl, M4A1_IDLE); - } else { - Weapons_ViewAnimation(pl, M4A1_IDLEUNSIL); - } - pl.w_idle_next = 5.0f; -} - -int -w_m4a1_isempty(player pl) -{ - - if (pl.m4a1_mag <= 0 && pl.ammo_556mm <= 0) - return 1; - - return 0; -} - -void -w_m4a1_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_m4a1_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_556mm, AMMO_MAX_556MM, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud5_spr, - [0,45/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud2_spr, - [0,45/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_m4a1 = -{ - .name = "m4a1", - .id = ITEM_M4A1, - .slot = 0, - .slot_pos = 9, - .weight = 25, - .allow_drop = TRUE, - .draw = w_m4a1_draw, - .holster = __NULL__, - .primary = w_m4a1_primary, - .secondary = w_m4a1_secondary, - .reload = w_m4a1_reload, - .release = w_m4a1_release, - .postdraw = w_m4a1_hud, - .precache = w_m4a1_precache, - .pickup = w_m4a1_pickup, - .updateammo = w_m4a1_updateammo, - .wmodel = w_m4a1_wmodel, - .pmodel = w_m4a1_pmodel, - .deathmsg = w_m4a1_deathmsg, - .aimanim = w_m4a1_aimanim, - .hudpic = w_m4a1_hudpic, - .type = csweapon_ranged_type, - .isempty = w_m4a1_isempty -}; - -#ifdef SERVER -void -weapon_m4a1(void) -{ - Weapons_InitItem(WEAPON_M4A1); -} -#endif diff --git a/src/shared/w_mac10.qc b/src/shared/w_mac10.qc deleted file mode 100644 index 71dc2eb..0000000 --- a/src/shared/w_mac10.qc +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_mac10 (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Ingram MAC-10 Weapon - -- Buy Menu - -Price: $1400 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_mac10.mdl" -*/ - -enum -{ - MAC10_IDLE, - MAC10_RELOAD, - MAC10_DRAW, - MAC10_SHOOT1, - MAC10_SHOOT2, - MAC10_SHOOT3 -}; - -void -w_mac10_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_mac10.fire"); - precache_model("models/w_mac10.mdl"); -#else - precache_model("models/v_mac10.mdl"); - precache_model("models/p_mac10.mdl"); -#endif -} - -void -w_mac10_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.mac10_mag, pl.ammo_45acp, -1); -} - -string -w_mac10_wmodel(void) -{ - return "models/w_mac10.mdl"; -} - -string -w_mac10_pmodel(player pl) -{ - return "models/p_mac10.mdl"; -} - -string -w_mac10_deathmsg(void) -{ - return ""; -} - -int -w_mac10_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.mac10_mag = 30; - else - pl.mac10_mag = startammo; - } else { - if (pl.ammo_45acp < AMMO_MAX_45ACP) { - pl.ammo_45acp = bound(0, pl.ammo_45acp + 30, AMMO_MAX_45ACP); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_mac10_draw(player pl) -{ - Weapons_SetModel("models/v_mac10.mdl"); - Weapons_ViewAnimation(pl, MAC10_DRAW); - -#ifdef CLIENT - pl.cs_cross_mindist = 9; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_mac10_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0.0) { - return; - } - if (!pl.mac10_mag) { - return; - } - - - float accuracy = Cstrike_CalculateAccuracy(pl, 50,0.8)+0.0095f; - pl.mac10_mag--; - - int r = (float)input_sequence % 3; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, MAC10_SHOOT1); - break; - case 1: - Weapons_ViewAnimation(pl, MAC10_SHOOT2); - break; - default: - Weapons_ViewAnimation(pl, MAC10_SHOOT3); - break; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_MP5, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_MP5, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - dmg = Skill_GetValue("plr_mac10_dmg", 29); - TraceAttack_SetRangeModifier(1.25); /* 9, but not 10 */ - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,1.115); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_MAC10, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,1.115); - Sound_Play(pl, CHAN_WEAPON, "weapon_mac10.fire"); -#endif - - Cstrike_ShotMultiplierAdd(pl, 2, 0.7f,accuracy); - pl.w_attack_next = 0.07f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_mac10_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.mac10_mag >= 30) - return; - if (!pl.ammo_45acp) - return; - - Weapons_ViewAnimation(pl, MAC10_RELOAD); - - pl.w_attack_next = 3.2f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::mac10_mag, player::ammo_45acp, 30); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_mac10_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.mac10_mag == 0 && pl.ammo_45acp > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_mac10_aimanim(player pl) -{ - return w_deagle_aimanim(pl); -} - -void -w_mac10_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [96/256,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_mac10_isempty(player pl) -{ - - if (pl.mac10_mag <= 0 && pl.ammo_45acp <= 0) - return 1; - - return 0; -} - -void -w_mac10_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_mac10_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_45acp, AMMO_MAX_45ACP, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud15_spr, - [0,0], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud14_spr, - [0,0], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_mac10 = -{ - .name = "mac10", - .id = ITEM_MAC10, - .slot = 0, - .slot_pos = 5, - .weight = 25, - .allow_drop = TRUE, - .draw = w_mac10_draw, - .holster = __NULL__, - .primary = w_mac10_primary, - .secondary = __NULL__, - .reload = w_mac10_reload, - .release = w_mac10_release, - .postdraw = w_mac10_hud, - .precache = w_mac10_precache, - .pickup = w_mac10_pickup, - .updateammo = w_mac10_updateammo, - .wmodel = w_mac10_wmodel, - .pmodel = w_mac10_pmodel, - .deathmsg = w_mac10_deathmsg, - .aimanim = w_mac10_aimanim, - .hudpic = w_mac10_hudpic, - .type = csweapon_ranged_type, - .isempty = w_mac10_isempty -}; - -#ifdef SERVER -void -weapon_mac10(void) -{ - Weapons_InitItem(WEAPON_MAC10); -} -#endif diff --git a/src/shared/w_mp5.qc b/src/shared/w_mp5.qc deleted file mode 100644 index 81124a4..0000000 --- a/src/shared/w_mp5.qc +++ /dev/null @@ -1,302 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_mp5navy (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Heckler & Koch MP5-Navy Weapon - -- Buy Menu - -Price: $1500 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_mp5.mdl" -*/ - -enum -{ - MP5_IDLE, - MP5_RELOAD, - MP5_DRAW, - MP5_SHOOT1, - MP5_SHOOT2, - MP5_SHOOT3 -}; - -void -w_mp5_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_mp5.fire"); - precache_model("models/w_mp5.mdl"); -#else - precache_model("models/v_mp5.mdl"); - precache_model("models/p_mp5.mdl"); -#endif -} - -void -w_mp5_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.mp5_mag, pl.ammo_9mm, -1); -} - -string -w_mp5_wmodel(void) -{ - return "models/w_mp5.mdl"; -} - -string -w_mp5_pmodel(player pl) -{ - return "models/p_mp5.mdl"; -} - -string -w_mp5_deathmsg(void) -{ - return ""; -} - -int -w_mp5_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.mp5_mag = 30; - else - pl.mp5_mag = startammo; - } else { - if (pl.ammo_9mm < AMMO_MAX_9MM) { - pl.ammo_9mm = bound(0, pl.ammo_9mm + 30, AMMO_MAX_9MM); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_mp5_draw(player pl) -{ - Weapons_SetModel("models/v_mp5.mdl"); - Weapons_ViewAnimation(pl, MP5_DRAW); - -#ifdef CLIENT - pl.cs_cross_mindist = 5; - pl.cs_cross_deltadist = 2; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_mp5_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0.0) - return; - if (!pl.mp5_mag) - return; - - - float accuracy = Cstrike_CalculateAccuracy(pl,60,1.25)+0.0045f; - pl.mp5_mag--; - - int r = (float)input_sequence % 3; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, MP5_SHOOT1); - break; - case 1: - Weapons_ViewAnimation(pl, MP5_SHOOT2); - break; - default: - Weapons_ViewAnimation(pl, MP5_SHOOT3); - break; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_MP5, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_MP5, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - dmg = Skill_GetValue("plr_mp5_dmg", 26); - TraceAttack_SetRangeModifier(1.25); /* 9 units but not 10 */ - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,.825f); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_MP5, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,.825f); - Sound_Play(pl, CHAN_WEAPON, "weapon_mp5.fire"); -#endif - - Cstrike_ShotMultiplierAdd(pl, .5f, 1.25f,accuracy); - pl.w_attack_next = 0.08f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_mp5_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.mp5_mag >= 30) - return; - if (!pl.ammo_9mm) - return; - - Weapons_ViewAnimation(pl, MP5_RELOAD); - - pl.w_attack_next = 2.6f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::mp5_mag, player::ammo_9mm, 30); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_mp5_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.mp5_mag == 0 && pl.ammo_9mm > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_mp5_aimanim(player pl) -{ - return w_ak47_aimanim(pl); -} - -void -w_mp5_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [48/256,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_mp5_isempty(player pl) -{ - - if (pl.mp5_mag <= 0 && pl.ammo_9mm <= 0) - return 1; - - return 0; -} - -void -w_mp5_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_mp5_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_9mm, AMMO_MAX_9MM, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud4_spr, - [0,180/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud1_spr, - [0,180/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_mp5 = -{ - .name = "mp5navy", - .id = ITEM_MP5, - .slot = 0, - .slot_pos = 2, - .weight = 25, - .allow_drop = TRUE, - .draw = w_mp5_draw, - .holster = __NULL__, - .primary = w_mp5_primary, - .secondary = __NULL__, - .reload = w_mp5_reload, - .release = w_mp5_release, - .postdraw = w_mp5_hud, - .precache = w_mp5_precache, - .pickup = w_mp5_pickup, - .updateammo = w_mp5_updateammo, - .wmodel = w_mp5_wmodel, - .pmodel = w_mp5_pmodel, - .deathmsg = w_mp5_deathmsg, - .aimanim = w_mp5_aimanim, - .hudpic = w_mp5_hudpic, - .type = csweapon_ranged_type, - .isempty = w_mp5_isempty -}; - -#ifdef SERVER -void -weapon_mp5navy(void) -{ - Weapons_InitItem(WEAPON_MP5); -} -#endif diff --git a/src/shared/w_p228.qc b/src/shared/w_p228.qc deleted file mode 100644 index a52d64b..0000000 --- a/src/shared/w_p228.qc +++ /dev/null @@ -1,310 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_p228 (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -SIG P228 Weapon - -- Buy Menu - -Price: $600 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_p228.mdl" -*/ - -enum -{ - P228_IDLE, - P228_SHOOT1, - P228_SHOOT2, - P228_SHOOT3, - P228_SHOOT_EMPTY, - P228_RELOAD, - P228_DRAW -}; - -void -w_p228_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_p228.fire"); - precache_model("models/w_p228.mdl"); -#else - precache_model("models/v_p228.mdl"); - precache_model("models/p_p228.mdl"); -#endif -} - -void -w_p228_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.p228_mag, pl.ammo_357sig, -1); -} - -string -w_p228_wmodel(void) -{ - return "models/w_p228.mdl"; -} - -string -w_p228_pmodel(player pl) -{ - return "models/p_p228.mdl"; -} - -string -w_p228_deathmsg(void) -{ - return ""; -} - -int -w_p228_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.p228_mag = 13; - else - pl.p228_mag = startammo; - } else { - if (pl.ammo_357sig < AMMO_MAX_357SIG) { - pl.ammo_357sig = bound(0, pl.ammo_357sig + 13, AMMO_MAX_357SIG); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_p228_draw(player pl) -{ - Weapons_SetModel("models/v_p228.mdl"); - Weapons_ViewAnimation(pl, P228_DRAW); - -#ifdef CLIENT - pl.cs_cross_mindist = 8; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_p228_primary(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.gflags & GF_SEMI_TOGGLED) - return; - if (!pl.p228_mag) - return; - - - float accuracy = Cstrike_CalculateAccuracy(pl, 200,1.6) + 0.004f; - int dmg = 0; - pl.p228_mag--; - - if (pl.p228_mag <= 0) { - Weapons_ViewAnimation(pl, P228_SHOOT_EMPTY); - } else { - int r = (float)input_sequence % 3; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, P228_SHOOT1); - break; - case 1: - Weapons_ViewAnimation(pl, P228_SHOOT2); - break; - default: - Weapons_ViewAnimation(pl, P228_SHOOT3); - break; - } - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_ONEHAND, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_ONEHAND, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - dmg = Skill_GetValue("plr_p228_dmg", 40); - TraceAttack_SetRangeModifier(1.5); /* penetrates 11, but not 12 units */ - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,1.05); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_P228, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,1.05); - Sound_Play(pl, CHAN_WEAPON, "weapon_p228.fire"); -#endif - Cstrike_ShotMultiplierAdd(pl, 6, 0.5f,accuracy); - - pl.gflags |= GF_SEMI_TOGGLED; - pl.w_attack_next = 0.1425f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_p228_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.p228_mag >= 13) - return; - if (!pl.ammo_357sig) - return; - - Weapons_ViewAnimation(pl, P228_RELOAD); - - pl.w_attack_next = 2.7f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::p228_mag, player::ammo_357sig, 13); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_p228_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.p228_mag == 0 && pl.ammo_357sig > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_p228_aimanim(player pl) -{ - return w_deagle_aimanim(pl); -} - -void -w_p228_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [120/256,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_p228_isempty(player pl) -{ - - if (pl.p228_mag <= 0 && pl.ammo_357sig <= 0) - return 1; - - return 0; -} - -void -w_p228_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_p228_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_357sig, AMMO_MAX_357SIG, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud13_spr, - [0,90/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud12_spr, - [0,90/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_p228 = -{ - .name = "p228", - .id = ITEM_P228, - .slot = 1, - .slot_pos = 3, - .weight = 5, - .allow_drop = TRUE, - .draw = w_p228_draw, - .holster = __NULL__, - .primary = w_p228_primary, - .secondary = __NULL__, - .reload = w_p228_reload, - .release = w_p228_release, - .postdraw = w_p228_hud, - .precache = w_p228_precache, - .pickup = w_p228_pickup, - .updateammo = w_p228_updateammo, - .wmodel = w_p228_wmodel, - .pmodel = w_p228_pmodel, - .deathmsg = w_p228_deathmsg, - .aimanim = w_p228_aimanim, - .hudpic = w_p228_hudpic, - .type = csweapon_ranged_type, - .isempty = w_p228_isempty -}; - -#ifdef SERVER -void -weapon_p228(void) -{ - Weapons_InitItem(WEAPON_P228); -} -#endif diff --git a/src/shared/w_p90.qc b/src/shared/w_p90.qc deleted file mode 100644 index 1d4a362..0000000 --- a/src/shared/w_p90.qc +++ /dev/null @@ -1,302 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_p90 (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -FN P90 Weapon - -- Buy Menu - -Price: $2350 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_p90.mdl" -*/ - -enum -{ - P90_IDLE, - P90_RELOAD, - P90_DRAW, - P90_SHOOT1, - P90_SHOOT2, - P90_SHOOT3 -}; - -void -w_p90_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_p90.fire"); - precache_model("models/w_p90.mdl"); -#else - precache_model("models/v_p90.mdl"); - precache_model("models/p_p90.mdl"); -#endif -} - -void -w_p90_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.p90_mag, pl.ammo_57mm, -1); -} - -string -w_p90_wmodel(void) -{ - return "models/w_p90.mdl"; -} - -string -w_p90_pmodel(player pl) -{ - return "models/p_p90.mdl"; -} - -string -w_p90_deathmsg(void) -{ - return ""; -} - -int -w_p90_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.p90_mag = 50; - else - pl.p90_mag = startammo; - } else { - if (pl.ammo_57mm < AMMO_MAX_57MM) { - pl.ammo_57mm = bound(0, pl.ammo_57mm + 50, AMMO_MAX_57MM); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_p90_draw(player pl) -{ - Weapons_SetModel("models/v_p90.mdl"); - Weapons_ViewAnimation(pl, P90_DRAW); - -#ifdef CLIENT - pl.cs_cross_mindist = 7; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_p90_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0.0) - return; - if (!pl.p90_mag) - return; - - - float accuracy = Cstrike_CalculateAccuracy(pl, 50,1.125)+0.0055; - pl.p90_mag--; - - int r = (float)input_sequence % 3; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, P90_SHOOT1); - break; - case 1: - Weapons_ViewAnimation(pl, P90_SHOOT2); - break; - default: - Weapons_ViewAnimation(pl, P90_SHOOT3); - break; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_MP5, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_MP5, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - dmg = Skill_GetValue("plr_p90_dmg", 26); - TraceAttack_SetRangeModifier(1.875); /* 9 but not 10 */ - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,.9); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_P90, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,.9); - Sound_Play(pl, CHAN_WEAPON, "weapon_p90.fire"); -#endif - - Cstrike_ShotMultiplierAdd(pl, 1.1, 1.3,accuracy); - pl.w_attack_next = 0.07f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_p90_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.p90_mag >= 50) - return; - if (!pl.ammo_57mm) - return; - - Weapons_ViewAnimation(pl, P90_RELOAD); - - pl.w_attack_next = 3.3f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::p90_mag, player::ammo_57mm, 50); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_p90_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.p90_mag == 0 && pl.ammo_57mm > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_p90_aimanim(player pl) -{ - return w_ak47_aimanim(pl); -} - -void -w_p90_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [120/256,96/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_p90_isempty(player pl) -{ - - if (pl.p90_mag <= 0 && pl.ammo_57mm <= 0) - return 1; - - return 0; -} - -void -w_p90_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_p90_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_57mm, AMMO_MAX_57MM, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud13_spr, - [0,0], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud12_spr, - [0,0], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_p90 = -{ - .name = "p90", - .id = ITEM_P90, - .slot = 0, - .slot_pos = 3, - .weight = 26, - .allow_drop = TRUE, - .draw = w_p90_draw, - .holster = __NULL__, - .primary = w_p90_primary, - .secondary = __NULL__, - .reload = w_p90_reload, - .release = w_p90_release, - .postdraw = w_p90_hud, - .precache = w_p90_precache, - .pickup = w_p90_pickup, - .updateammo = w_p90_updateammo, - .wmodel = w_p90_wmodel, - .pmodel = w_p90_pmodel, - .deathmsg = w_p90_deathmsg, - .aimanim = w_p90_aimanim, - .hudpic = w_p90_hudpic, - .type = csweapon_ranged_type, - .isempty = w_p90_isempty -}; - -#ifdef SERVER -void -weapon_p90(void) -{ - Weapons_InitItem(WEAPON_P90); -} -#endif diff --git a/src/shared/w_para.qc b/src/shared/w_para.qc deleted file mode 100644 index 1d8af98..0000000 --- a/src/shared/w_para.qc +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_m249 (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -FN M249 Para Weapon - -- Buy Menu - -Price: $5750 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_m249.mdl" -*/ - -enum -{ - PARA_IDLE, - PARA_SHOOT1, - PARA_SHOOT2, - PARA_RELOAD, - PARA_DRAW -}; - -void -w_para_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_para.fire"); - precache_model("models/w_m249.mdl"); -#else - precache_model("models/v_m249.mdl"); - precache_model("models/p_m249.mdl"); -#endif -} - -void -w_para_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.para_mag, pl.ammo_556mmbox, -1); -} - -string -w_para_wmodel(void) -{ - return "models/w_m249.mdl"; -} - -string -w_para_pmodel(player pl) -{ - return "models/p_m249.mdl"; -} - -string -w_para_deathmsg(void) -{ - return ""; -} - -int -w_para_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.para_mag = 100; - else - pl.para_mag = startammo; - } else { - if (pl.ammo_556mmbox < AMMO_MAX_556MMBOX) { - pl.ammo_556mmbox = bound(0, pl.ammo_556mmbox + 100, AMMO_MAX_556MMBOX); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_para_draw(player pl) -{ - Weapons_SetModel("models/v_m249.mdl"); - Weapons_ViewAnimation(pl, PARA_DRAW); - -#ifdef CLIENT - pl.cs_cross_mindist = 6; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_para_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0.0) - return; - if (!pl.para_mag) - return; - - - float accuracy = Cstrike_CalculateAccuracy(pl, 70, 3); - - pl.para_mag--; - - int r = (float)input_sequence % 2; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, SCOUT_SHOOT1); - break; - default: - Weapons_ViewAnimation(pl, SCOUT_SHOOT2); - break; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_PARA, 0.45f); - else - Animation_PlayerTop(pl, ANIM_SHOOT_PARA, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_rifle_ejectshell, 0.0f); -#else - dmg = Skill_GetValue("plr_para_dmg", 35); - TraceAttack_SetRangeModifier(2.125); - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,1); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_PARA, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,1); - Sound_Play(pl, CHAN_WEAPON, "weapon_para.fire"); -#endif - - Cstrike_ShotMultiplierAdd(pl, 1, 1,accuracy); - pl.w_attack_next = 0.1f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_para_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.para_mag >= 100) - return; - if (!pl.ammo_556mmbox) - return; - - Weapons_ViewAnimation(pl, PARA_RELOAD); - - pl.w_attack_next = 3.0f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::para_mag, player::ammo_556mmbox, 100); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_para_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.para_mag == 0 && pl.ammo_556mmbox > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_para_aimanim(player pl) -{ - return w_ak47_aimanim(pl); -} - -void -w_para_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [0,96/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_para_isempty(player pl) -{ - - if (pl.para_mag <= 0 && pl.ammo_556mmbox <= 0) - return 1; - - return 0; -} - -void -w_para_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_para_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_556mmbox, AMMO_MAX_556MMBOX, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud6_spr, - [0,0], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud3_spr, - [0,0], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_para = -{ - .name = "m249", - .id = ITEM_PARA, - .slot = 0, - .slot_pos = 15, - .weight = 25, - .allow_drop = TRUE, - .draw = w_para_draw, - .holster = __NULL__, - .primary = w_para_primary, - .secondary = __NULL__, - .reload = w_para_reload, - .release = w_para_release, - .postdraw = w_para_hud, - .precache = w_para_precache, - .pickup = w_para_pickup, - .updateammo = w_para_updateammo, - .wmodel = w_para_wmodel, - .pmodel = w_para_pmodel, - .deathmsg = w_para_deathmsg, - .aimanim = w_para_aimanim, - .hudpic = w_para_hudpic, - .type = csweapon_ranged_type, - .isempty = w_para_isempty -}; - -#ifdef SERVER -void -weapon_m249(void) -{ - Weapons_InitItem(WEAPON_PARA); -} -#endif diff --git a/src/shared/w_scout.qc b/src/shared/w_scout.qc deleted file mode 100644 index 183e69f..0000000 --- a/src/shared/w_scout.qc +++ /dev/null @@ -1,344 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_scout (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Steyr Scout Weapon - -- Buy Menu - -Price: $1250 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_scout.mdl" -*/ - -enum -{ - SCOUT_IDLE, - SCOUT_SHOOT1, - SCOUT_SHOOT2, - SCOUT_RELOAD, - SCOUT_DRAW -}; - -void -w_scout_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_scout.fire"); - precache_model("models/w_scout.mdl"); -#else - precache_model("models/v_scout.mdl"); - precache_model("models/p_scout.mdl"); -#endif -} - -void -w_scout_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.scout_mag, pl.ammo_762mm, -1); -} - -string -w_scout_wmodel(void) -{ - return "models/w_scout.mdl"; -} - -string -w_scout_pmodel(player pl) -{ - return "models/p_scout.mdl"; -} - -string -w_scout_deathmsg(void) -{ - return ""; -} - -int -w_scout_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.scout_mag = 10; - else - pl.scout_mag = startammo; - } else { - if (pl.ammo_762mm < AMMO_MAX_762MM) { - pl.ammo_762mm = bound(0, pl.ammo_762mm + 10, AMMO_MAX_762MM); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_scout_draw(player pl) -{ - Weapons_SetModel("models/v_scout.mdl"); - Weapons_ViewAnimation(pl, SCOUT_DRAW); - pl.mode_temp = 0; - -#ifdef CLIENT - pl.cs_cross_mindist = 5; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - - -void -w_scout_release(player pl) -{ - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.scout_mag == 0 && pl.ammo_762mm > 0) { - Weapons_Reload(pl); - return; - } - - if (pl.w_idle_next > 0.0f) { - pl.viewzoom = 1.0f; - Weapons_EnableModel(); - return; - } - - if (pl.mode_temp == 1) { - pl.viewzoom = 0.45f; - Weapons_DisableModel(); - } else if (pl.mode_temp == 2) { - pl.viewzoom = 0.1f; - Weapons_DisableModel(); - } else { - pl.viewzoom = 1.0f; - Weapons_EnableModel(); - } -} - -void -w_scout_secondary(player pl) -{ - - if (pl.w_attack_next) - return; - -#ifdef SSQC - Sound_Play(pl, CHAN_WEAPON, "weapon_awp.zoom"); -#endif - - /* Simple toggle of fovs */ - if (pl.mode_temp == 1) - pl.mode_temp = 2; - else if (pl.mode_temp == 2) - pl.mode_temp = 0; - else - pl.mode_temp = 1; - - pl.w_attack_next = 0.3f; - pl.w_idle_next = 0.0f; - w_scout_release(pl); -} - -void -w_scout_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0.0) { - w_scout_release(pl); - return; - } - if (!pl.scout_mag) { - return; - } - - - float accuracy = Cstrike_CalculateAccuracy(pl, 200); - - pl.scout_mag--; - - int r = (float)input_sequence % 2; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, SCOUT_SHOOT1); - break; - default: - Weapons_ViewAnimation(pl, SCOUT_SHOOT2); - break; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_rifle_ejectshell, 0.5f); -#else - dmg = Skill_GetValue("plr_scout_dmg", 75); - TraceAttack_SetRangeModifier(2.375); - TraceAttack_SetPenetrationPower(1); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_SCOUT, "Impact.BigShot"); - Sound_Play(pl, CHAN_WEAPON, "weapon_scout.fire"); -#endif - - Cstrike_ShotMultiplierAdd(pl, 1, 1,accuracy); - pl.w_attack_next = 1.25f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_scout_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.scout_mag >= 10) - return; - if (!pl.ammo_762mm) - return; - - Weapons_ViewAnimation(pl, SCOUT_RELOAD); - - pl.w_attack_next = 2.0f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::scout_mag, player::ammo_762mm, 10); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -float -w_scout_aimanim(player pl) -{ - return w_ak47_aimanim(pl); -} - -void -w_scout_hud(player pl) -{ -#ifdef CLIENT - if (pl.viewzoom < 1.0f) { - Cstrike_DrawScope(); - } - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [72/256,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_scout_isempty(player pl) -{ - - if (pl.scout_mag <= 0 && pl.ammo_762mm <= 0) - return 1; - - return 0; -} - -void -w_scout_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_scout_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_762mm, AMMO_MAX_762MM, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud13_spr, - [0,45/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud12_spr, - [0,45/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_scout = -{ - .name = "scout", - .id = ITEM_SCOUT, - .slot = 0, - .slot_pos = 11, - .weight = 30, - .allow_drop = TRUE, - .draw = w_scout_draw, - .holster = __NULL__, - .primary = w_scout_primary, - .secondary = w_scout_secondary, - .reload = w_scout_reload, - .release = w_scout_release, - .postdraw = w_scout_hud, - .precache = w_scout_precache, - .pickup = w_scout_pickup, - .updateammo = w_scout_updateammo, - .wmodel = w_scout_wmodel, - .pmodel = w_scout_pmodel, - .deathmsg = w_scout_deathmsg, - .aimanim = w_scout_aimanim, - .hudpic = w_scout_hudpic, - .type = csweapon_ranged_type, - .isempty = w_scout_isempty -}; - -#ifdef SERVER -void -weapon_scout(void) -{ - Weapons_InitItem(WEAPON_SCOUT); -} -#endif diff --git a/src/shared/w_sg550.qc b/src/shared/w_sg550.qc deleted file mode 100644 index 0c41b5a..0000000 --- a/src/shared/w_sg550.qc +++ /dev/null @@ -1,321 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_sg550 (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -SIG SG 550 Weapon - -- Buy Menu - -Price: $4200 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_sg550.mdl" -*/ - -enum -{ - SG550_IDLE, - SG550_SHOOT1, - SG550_SHOOT2, - SG550_RELOAD, - SG550_DRAW, -}; - -void -w_sg550_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_sg550.fire"); - precache_model("models/w_sg550.mdl"); -#else - precache_model("models/v_sg550.mdl"); - precache_model("models/p_sg550.mdl"); -#endif -} - -void -w_sg550_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.sg550_mag, pl.ammo_556mm, -1); -} - -string -w_sg550_wmodel(void) -{ - return "models/w_sg550.mdl"; -} - -string -w_sg550_pmodel(player pl) -{ - return "models/p_sg550.mdl"; -} - -string -w_sg550_deathmsg(void) -{ - return ""; -} - -int -w_sg550_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.sg550_mag = 30; - else - pl.sg550_mag = startammo; - } else { - if (pl.ammo_556mm < AMMO_MAX_556MM) { - pl.ammo_556mm = bound(0, pl.ammo_556mm + 30, AMMO_MAX_556MM); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_sg550_draw(player pl) -{ - Weapons_SetModel("models/v_sg550.mdl"); - Weapons_ViewAnimation(pl, SG550_DRAW); - -#ifdef CLIENT - pl.cs_cross_mindist = 5; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_sg550_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0.0) - return; - if (!pl.sg550_mag) - return; - - - float accuracy = Cstrike_CalculateAccuracy(pl, 200); - Cstrike_ShotMultiplierAdd(pl, 1, 1,accuracy); - pl.sg550_mag--; - - int r = (float)input_sequence % 2; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, SCOUT_SHOOT1); - break; - default: - Weapons_ViewAnimation(pl, SCOUT_SHOOT2); - break; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); - - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_rifle_ejectshell, 0.0f); -#else - dmg = Skill_GetValue("plr_sg550_dmg", 70); - TraceAttack_SetRangeModifier(2.125); - TraceAttack_SetPenetrationPower(1); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_SG550, "Impact.BigShot"); - Sound_Play(pl, CHAN_WEAPON, "weapon_sg550.fire"); -#endif - - pl.w_attack_next = 0.25f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_sg550_secondary(player pl) -{ - - if (pl.w_attack_next) - return; - - /* Simple toggle of fovs */ - if (pl.viewzoom == 1.0f) { - pl.viewzoom = 0.45f; - Weapons_DisableModel(); - } else if (pl.viewzoom == 0.45f) { - pl.viewzoom = 0.1f; - Weapons_DisableModel(); - } else { - pl.viewzoom = 1.0f; - Weapons_EnableModel(); - } - - pl.w_attack_next = 0.5f; -} - -void -w_sg550_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.sg550_mag >= 30) - return; - if (!pl.ammo_556mm) - return; - - Weapons_ViewAnimation(pl, SG550_RELOAD); - - pl.w_attack_next = 3.8f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::sg550_mag, player::ammo_556mm, 30); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_sg550_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.sg550_mag == 0 && pl.ammo_556mm > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_sg550_aimanim(player pl) -{ - return w_ak47_aimanim(pl); -} - -void -w_sg550_hud(player pl) -{ -#ifdef CLIENT - if (pl.viewzoom < 1.0f) { - Cstrike_DrawScope(); - } - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [0,96/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_sg550_isempty(player pl) -{ - - if (pl.sg550_mag <= 0 && pl.ammo_556mm <= 0) - return 1; - - return 0; -} - -void -w_sg550_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_sg550_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_556mm, AMMO_MAX_556MM, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud15_spr, - [0,180/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud14_spr, - [0,180/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_sg550 = -{ - .name = "sg550", - .id = ITEM_SG550, - .slot = 0, - .slot_pos = 14, - .weight = 20, - .allow_drop = TRUE, - .draw = w_sg550_draw, - .holster = __NULL__, - .primary = w_sg550_primary, - .secondary = w_sg550_secondary, - .reload = w_sg550_reload, - .release = w_sg550_release, - .postdraw = w_sg550_hud, - .precache = w_sg550_precache, - .pickup = w_sg550_pickup, - .updateammo = w_sg550_updateammo, - .wmodel = w_sg550_wmodel, - .pmodel = w_sg550_pmodel, - .deathmsg = w_sg550_deathmsg, - .aimanim = w_sg550_aimanim, - .hudpic = w_sg550_hudpic, - .type = csweapon_ranged_type, - .isempty = w_sg550_isempty -}; - -#ifdef SERVER -void -weapon_sg550(void) -{ - Weapons_InitItem(WEAPON_SG550); -} -#endif diff --git a/src/shared/w_sg552.qc b/src/shared/w_sg552.qc deleted file mode 100644 index 0e046af..0000000 --- a/src/shared/w_sg552.qc +++ /dev/null @@ -1,326 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_sg552 (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -SIG SG 552 Commando Weapon - -- Buy Menu - -Price: $3500 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_sg552.mdl" -*/ - -enum -{ - SG552_IDLE, - SG552_RELOAD, - SG552_DRAW, - SG552_SHOOT1, - SG552_SHOOT2, - SG552_SHOOT3 -}; - -void -w_sg552_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_sg552.fire"); - precache_model("models/w_sg552.mdl"); -#else - precache_model("models/v_sg552.mdl"); - precache_model("models/p_sg552.mdl"); -#endif -} - -void -w_sg552_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.sg552_mag, pl.ammo_556mm, -1); -} - -string -w_sg552_wmodel(void) -{ - return "models/w_sg552.mdl"; -} - -string -w_sg552_pmodel(player pl) -{ - return "models/p_sg552.mdl"; -} - -string -w_sg552_deathmsg(void) -{ - return ""; -} - -int -w_sg552_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.sg552_mag = 30; - else - pl.sg552_mag = startammo; - } else { - if (pl.ammo_556mm < AMMO_MAX_556MM) { - pl.ammo_556mm = bound(0, pl.ammo_556mm + 30, AMMO_MAX_556MM); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_sg552_draw(player pl) -{ - Weapons_SetModel("models/v_sg552.mdl"); - Weapons_ViewAnimation(pl, SG552_DRAW); - -#ifdef CLIENT - pl.cs_cross_mindist = 5; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_sg552_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0.0) - return; - if (!pl.sg552_mag) - return; - - - float accuracy = Cstrike_CalculateAccuracy(pl, 75,3)*pl.viewzoom; - pl.sg552_mag--; - - int r = (float)input_sequence % 3; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, SG552_SHOOT1); - break; - case 1: - Weapons_ViewAnimation(pl, SG552_SHOOT2); - break; - default: - Weapons_ViewAnimation(pl, SG552_SHOOT3); - break; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_rifle_ejectshell, 0.0f); -#else - dmg = Skill_GetValue("plr_sg552_dmg", 33); - TraceAttack_SetRangeModifier(2.125); - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,0.726f); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_SG552, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,0.725f); - Sound_Play(pl, CHAN_WEAPON, "weapon_sg552.fire"); -#endif - - Cstrike_ShotMultiplierAdd(pl, 2.2, 0.9,accuracy); - if (pl.viewzoom == 1.0f) - pl.w_attack_next = 0.0825f; - else - pl.w_attack_next = 0.15f; - - pl.w_idle_next = pl.w_attack_next; -} - -void -w_sg552_secondary(player pl) -{ - - if (pl.w_attack_next) - return; - - /* Simple toggle of fovs */ - if (pl.viewzoom == 1.0f) - pl.viewzoom = 0.2f; - else - pl.viewzoom = 1.0f; - - pl.w_attack_next = 0.5f; -} - -void -w_sg552_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.sg552_mag >= 30) - return; - if (!pl.ammo_556mm) - return; - - Weapons_ViewAnimation(pl, SG552_RELOAD); - - pl.w_attack_next = 3.2f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::sg552_mag, player::ammo_556mm, 30); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_sg552_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.sg552_mag == 0 && pl.ammo_556mm > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_sg552_aimanim(player pl) -{ - return w_ak47_aimanim(pl); -} - -void -w_sg552_hud(player pl) -{ -#ifdef CLIENT - if (pl.viewzoom == 1.0f) { - Cstrike_DrawCrosshair(); - } else { - Cstrike_DrawSimpleCrosshair(); - } - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [0,96/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_sg552_isempty(player pl) -{ - - if (pl.sg552_mag <= 0 && pl.ammo_556mm <= 0) - return 1; - - return 0; -} - -void -w_sg552_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_sg552_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_556mm, AMMO_MAX_556MM, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud11_spr, - [0,45/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud10_spr, - [0,45/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_sg552 = -{ - .name = "sg552", - .id = ITEM_SG552, - .slot = 0, - .slot_pos = 8, - .weight = 25, - .allow_drop = TRUE, - .draw = w_sg552_draw, - .holster = __NULL__, - .primary = w_sg552_primary, - .secondary = w_sg552_secondary, - .reload = w_sg552_reload, - .release = w_sg552_release, - .postdraw = w_sg552_hud, - .precache = w_sg552_precache, - .pickup = w_sg552_pickup, - .updateammo = w_sg552_updateammo, - .wmodel = w_sg552_wmodel, - .pmodel = w_sg552_pmodel, - .deathmsg = w_sg552_deathmsg, - .aimanim = w_sg552_aimanim, - .hudpic = w_sg552_hudpic, - .type = csweapon_ranged_type, - .isempty = w_sg552_isempty -}; - -#ifdef SERVER -void -weapon_sg552(void) -{ - Weapons_InitItem(WEAPON_SG552); -} -#endif diff --git a/src/shared/w_smokegrenade.qc b/src/shared/w_smokegrenade.qc deleted file mode 100644 index 6dba00a..0000000 --- a/src/shared/w_smokegrenade.qc +++ /dev/null @@ -1,306 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_smokegrenade (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Smoke Grenade Weapon - -When thrown, the explosion casts view-blocking smoke in that radius. - -- Buy Menu - -Price: $300 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_smokegrenade.mdl" -*/ - -enum -{ - SMOKEGRENADE_IDLE, - SMOKEGRENADE_PULLPIN, - SMOKEGRENADE_THROW, - SMOKEGRENADE_DRAW, -}; - -void -w_smokegrenade_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_smokegrenade.bounce"); - Sound_Precache("weapon_smokegrenade.explode"); - precache_model("models/w_smokegrenade.mdl"); -#else - precache_model("models/v_smokegrenade.mdl"); - precache_model("models/p_smokegrenade.mdl"); -#endif -} - -void -w_smokegrenade_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, -1, pl.ammo_smokegrenade, pl.mode_temp); -} - -int -w_smokegrenade_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (pl.ammo_smokegrenade < AMMO_MAX_SMOKE) { - pl.ammo_smokegrenade = bound(0, pl.ammo_smokegrenade + 1, AMMO_MAX_SMOKE); - } else { - return (0); - } -#endif - return (1); -} - -string -w_smokegrenade_wmodel(void) -{ - return "models/w_smokegrenade.mdl"; -} - -string -w_smokegrenade_pmodel(player pl) -{ - return "models/p_smokegrenade.mdl"; -} - -string -w_smokegrenade_deathmsg(void) -{ - return ""; -} - -void -w_smokegrenade_draw(player pl) -{ - Weapons_SetModel("models/v_smokegrenade.mdl"); - Weapons_ViewAnimation(pl, SMOKEGRENADE_DRAW); - pl.mode_temp = 0; - -#ifdef CLIENT - CStrikeView_UpdateGeomset(pl); -#endif -} - -#ifdef SERVER -void -w_smokegrenade_throw(player pl) -{ - static void smokegrenade_explode(void) - { - FX_Smokenade(self.origin); - Sound_Play(self, CHAN_BODY, "weapon_smokegrenade.explode"); - remove(self); - } - - static void smokegrenade_touch(void) - { - if (other.takedamage == DAMAGE_YES) { - Damage_Apply(other, self.owner, 15, WEAPON_SMOKEGRENADE, DMG_BLUNT); - } else { - Sound_Play(self, CHAN_BODY, "weapon_smokegrenade.bounce"); - } - self.frame = 0; - } - - vector vPLAngle = pl.v_angle; - if (vPLAngle[0] < 0) { - vPLAngle[0] = -10 + vPLAngle[0] * ((90 - 10) / 90.0); - } else { - vPLAngle[0] = -10 + vPLAngle[0] * ((90 + 10) / 90.0); - } - - float flVel = (90 - vPLAngle[0]) * 5; - if (flVel > 1000) { - flVel = 1000; - } - - makevectors(vPLAngle); - vector vecSrc = pl.origin + pl.view_ofs + v_forward * 16; - vector vecThrow = v_forward * flVel + pl.velocity; - - entity eGrenade = spawn(); - eGrenade.owner = pl; - eGrenade.classname = "remove_me"; - eGrenade.solid = SOLID_BBOX; - eGrenade.frame = 1; - eGrenade.velocity = vecThrow; - eGrenade.movetype = MOVETYPE_BOUNCE; - eGrenade.think = smokegrenade_explode; - eGrenade.touch = smokegrenade_touch; - eGrenade.nextthink = time + 4.0f; - setmodel(eGrenade, "models/w_smokegrenade.mdl"); - setsize(eGrenade, [0,0,0], [0,0,0]); - setorigin(eGrenade, vecSrc); -} -#endif - -void -w_smokegrenade_primary(player pl) -{ - if (pl.w_attack_next > 0.0) { - return; - } - - /* We're abusing this network variable for the holding check */ - if (pl.mode_temp > 0) { - return; - } - - /* Ammo check */ - if (pl.ammo_smokegrenade <= 0) { -#ifdef SERVER - Weapons_RemoveItem(pl, WEAPON_SMOKEGRENADE); -#endif - return; - } - - Weapons_ViewAnimation(pl, SMOKEGRENADE_PULLPIN); - pl.mode_temp = 1; - pl.w_attack_next = 0.975f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_smokegrenade_release(player pl) -{ - - w_cstrike_weaponrelease(); - - if (pl.w_idle_next > 0.0) { - return; - } - - if (pl.mode_temp == 1) { - pl.ammo_smokegrenade--; -#ifdef CLIENT - Weapons_ViewAnimation(pl, SMOKEGRENADE_THROW); -#else - w_smokegrenade_throw(pl); -#endif - pl.mode_temp = 2; - pl.w_attack_next = 1.0f; - pl.w_idle_next = 0.5f; - } else if (pl.mode_temp == 2) { -#ifdef CLIENT - Weapons_ViewAnimation(pl, SMOKEGRENADE_DRAW); -#else - if (!pl.ammo_smokegrenade) { - Weapons_RemoveItem(pl, WEAPON_SMOKEGRENADE); - } -#endif - pl.w_attack_next = 0.5f; - pl.w_idle_next = 0.5f; - pl.mode_temp = 0; - } -} - -float -w_smokegrenade_aimanim(player pl) -{ - return w_flashbang_aimanim(pl); -} - -void -w_smokegrenade_hud(player pl) -{ -#ifdef CLIENT - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [144/256,96/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_smokegrenade_isempty(player pl) -{ - - if (pl.ammo_smokegrenade <= 0) - return 1; - - return 0; -} - -void -w_smokegrenade_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - - HUD_DrawAmmoBar(pos, pl.ammo_smokegrenade, AMMO_MAX_SMOKE, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud6_spr, - [0,135/256], - [170/256,45/256], - g_hud_color, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud3_spr, - [0,135/256], - [170/256,45/256], - g_hud_color, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_smokegrenade = -{ - .name = "smokegrenade", - .id = ITEM_SMOKEGRENADE, - .slot = 3, - .slot_pos = 2, - .allow_drop = FALSE, - .draw = w_smokegrenade_draw, - .holster = __NULL__, - .primary = w_smokegrenade_primary, - .secondary = __NULL__, - .reload = __NULL__, - .release = w_smokegrenade_release, - .postdraw = w_smokegrenade_hud, - .precache = w_smokegrenade_precache, - .pickup = w_smokegrenade_pickup, - .updateammo = w_smokegrenade_updateammo, - .wmodel = w_smokegrenade_wmodel, - .pmodel = w_smokegrenade_pmodel, - .deathmsg = w_smokegrenade_deathmsg, - .aimanim = w_smokegrenade_aimanim, - .hudpic = w_smokegrenade_hudpic, - .isempty = w_smokegrenade_isempty -}; - -#ifdef SERVER -void -weapon_smokegrenade(void) -{ - Weapons_InitItem(WEAPON_SMOKEGRENADE); -} -#endif diff --git a/src/shared/w_tmp.qc b/src/shared/w_tmp.qc deleted file mode 100644 index 2c1a56a..0000000 --- a/src/shared/w_tmp.qc +++ /dev/null @@ -1,302 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_tmp (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Steyr Tactical Weapon - -- Buy Menu - -Price: $1250 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_tmp.mdl" -*/ - -enum -{ - TMP_IDLE, - TMP_RELOAD, - TMP_DRAW, - TMP_SHOOT1, - TMP_SHOOT2, - TMP_SHOOT3 -}; - -void -w_tmp_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_tmp.fire"); - precache_model("models/w_tmp.mdl"); -#else - precache_model("models/v_tmp.mdl"); - precache_model("models/p_tmp.mdl"); -#endif -} - -void -w_tmp_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.tmp_mag, pl.ammo_9mm, -1); -} - -string -w_tmp_wmodel(void) -{ - return "models/w_tmp.mdl"; -} - -string -w_tmp_pmodel(player pl) -{ - return "models/p_tmp.mdl"; -} - -string -w_tmp_deathmsg(void) -{ - return ""; -} - -int -w_tmp_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.tmp_mag = 30; - else - pl.tmp_mag = startammo; - } else { - if (pl.ammo_9mm < AMMO_MAX_9MM) { - pl.ammo_9mm = bound(0, pl.ammo_9mm + 30, AMMO_MAX_9MM); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_tmp_draw(player pl) -{ - Weapons_SetModel("models/v_tmp.mdl"); - Weapons_ViewAnimation(pl, TMP_DRAW); - -#ifdef CLIENT - pl.cs_cross_mindist = 7; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_tmp_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0.0) - return; - if (!pl.tmp_mag) - return; - - - float accuracy = Cstrike_CalculateAccuracy(pl, 30,0.95)+0.0035; - pl.tmp_mag--; - - int r = (float)input_sequence % 3; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, TMP_SHOOT1); - break; - case 1: - Weapons_ViewAnimation(pl, TMP_SHOOT2); - break; - default: - Weapons_ViewAnimation(pl, TMP_SHOOT3); - break; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_MP5, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_MP5, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - dmg = Skill_GetValue("plr_tmp_dmg", 26); - TraceAttack_SetRangeModifier(1.25); /* 9 but not 10 */ - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,0.8); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_TMP, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,0.8); - Sound_Play(pl, CHAN_WEAPON, "weapon_tmp.fire"); -#endif - - Cstrike_ShotMultiplierAdd(pl, 0.95, 1.25,accuracy); - pl.w_attack_next = 0.07f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_tmp_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.tmp_mag >= 30) - return; - if (!pl.ammo_9mm) - return; - - Weapons_ViewAnimation(pl, TMP_RELOAD); - - pl.w_attack_next = 2.1f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::tmp_mag, player::ammo_9mm, 30); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_tmp_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.tmp_mag == 0 && pl.ammo_9mm > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_tmp_aimanim(player pl) -{ - return w_ak47_aimanim(pl); -} - -void -w_tmp_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [48/256,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_tmp_isempty(player pl) -{ - - if (pl.tmp_mag <= 0 && pl.ammo_9mm <= 0) - return 1; - - return 0; -} - -void -w_tmp_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_tmp_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_9mm, AMMO_MAX_9MM, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud5_spr, - [0,0], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud2_spr, - [0,0], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_tmp = -{ - .name = "tmp", - .id = ITEM_TMP, - .slot = 0, - .slot_pos = 6, - .weight = 25, - .allow_drop = TRUE, - .draw = w_tmp_draw, - .holster = __NULL__, - .primary = w_tmp_primary, - .secondary = __NULL__, - .reload = w_tmp_reload, - .release = w_tmp_release, - .postdraw = w_tmp_hud, - .precache = w_tmp_precache, - .pickup = w_tmp_pickup, - .updateammo = w_tmp_updateammo, - .wmodel = w_tmp_wmodel, - .pmodel = w_tmp_pmodel, - .deathmsg = w_tmp_deathmsg, - .aimanim = w_tmp_aimanim, - .hudpic = w_tmp_hudpic, - .type = csweapon_ranged_type, - .isempty = w_tmp_isempty -}; - -#ifdef SERVER -void -weapon_tmp(void) -{ - Weapons_InitItem(WEAPON_TMP); -} -#endif diff --git a/src/shared/w_ump45.qc b/src/shared/w_ump45.qc deleted file mode 100644 index 7713624..0000000 --- a/src/shared/w_ump45.qc +++ /dev/null @@ -1,301 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_ump45 (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Heckler & Koch UMP .45 ACP Weapon - -- Buy Menu - -Price: $1700 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_ump45.mdl" -*/ - -enum -{ - UMP45_IDLE, - UMP45_RELOAD, - UMP45_DRAW, - UMP45_SHOOT1, - UMP45_SHOOT2, - UMP45_SHOOT3 -}; - -void -w_ump45_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_ump45.fire"); - precache_model("models/w_ump45.mdl"); -#else - precache_model("models/v_ump45.mdl"); - precache_model("models/p_ump45.mdl"); -#endif -} - -void -w_ump45_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.ump45_mag, pl.ammo_45acp, -1); -} - -string -w_ump45_wmodel(void) -{ - return "models/w_ump45.mdl"; -} - -string -w_ump45_pmodel(player pl) -{ - return "models/p_ump45.mdl"; -} - -string -w_ump45_deathmsg(void) -{ - return ""; -} - -int -w_ump45_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.ump45_mag = 25; - else - pl.ump45_mag = startammo; - } else { - if (pl.ammo_45acp < AMMO_MAX_45ACP) { - pl.ammo_45acp = bound(0, pl.ammo_45acp + 25, AMMO_MAX_45ACP); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_ump45_draw(player pl) -{ - Weapons_SetModel("models/v_ump45.mdl"); - Weapons_ViewAnimation(pl, UMP45_DRAW); - -#ifdef CLIENT - pl.cs_cross_mindist = 6; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_ump45_primary(player pl) -{ - int dmg = 0; - - if (pl.w_attack_next > 0.0) - return; - if (!pl.ump45_mag) - return; - - - float accuracy = Cstrike_CalculateAccuracy(pl, 100,1)+0.003; - pl.ump45_mag--; - - int r = (float)input_sequence % 3; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, UMP45_SHOOT1); - break; - case 1: - Weapons_ViewAnimation(pl, UMP45_SHOOT2); - break; - default: - Weapons_ViewAnimation(pl, UMP45_SHOOT3); - break; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_MP5, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_MP5, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - dmg = Skill_GetValue("plr_ump45_dmg", 30); - TraceAttack_SetRangeModifier(0.875); /* 6, but not 7 */ - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,1.2); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_UMP45, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,1.2); - Sound_Play(pl, CHAN_WEAPON, "weapon_ump45.fire"); -#endif - Cstrike_ShotMultiplierAdd(pl, 1, .9,accuracy); - pl.w_attack_next = 0.105f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_ump45_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.ump45_mag >= 25) - return; - if (!pl.ammo_45acp) - return; - - Weapons_ViewAnimation(pl, UMP45_RELOAD); - - pl.w_attack_next = 3.5f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::ump45_mag, player::ammo_45acp, 25); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_ump45_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.ump45_mag == 0 && pl.ammo_45acp > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_ump45_aimanim(player pl) -{ - return w_ak47_aimanim(pl); -} - -void -w_ump45_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [96/256,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_ump45_isempty(player pl) -{ - - if (pl.ump45_mag <= 0 && pl.ammo_45acp <= 0) - return 1; - - return 0; -} - -void -w_ump45_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_ump45_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_45acp, AMMO_MAX_45ACP, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud16_spr, - [0,0], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud16_spr, - [0,0], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_ump45 = -{ - .name = "ump45", - .id = ITEM_UMP45, - .slot = 0, - .slot_pos = 4, - .weight = 25, - .allow_drop = TRUE, - .draw = w_ump45_draw, - .holster = __NULL__, - .primary = w_ump45_primary, - .secondary = __NULL__, - .reload = w_ump45_reload, - .release = w_ump45_release, - .postdraw = w_ump45_hud, - .precache = w_ump45_precache, - .pickup = w_ump45_pickup, - .updateammo = w_ump45_updateammo, - .wmodel = w_ump45_wmodel, - .pmodel = w_ump45_pmodel, - .deathmsg = w_ump45_deathmsg, - .aimanim = w_ump45_aimanim, - .hudpic = w_ump45_hudpic, - .type = csweapon_ranged_type, - .isempty = w_ump45_isempty -}; - -#ifdef SERVER -void -weapon_ump45(void) -{ - Weapons_InitItem(WEAPON_UMP45); -} -#endif diff --git a/src/shared/w_usp45.qc b/src/shared/w_usp45.qc deleted file mode 100644 index 333575c..0000000 --- a/src/shared/w_usp45.qc +++ /dev/null @@ -1,376 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_usp45 (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Heckler & Koch USP .45 Tactical Weapon - -Default arsenal for Counter-Terrorists - -- Buy Menu - -Price: $500 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_usp45.mdl" -*/ - -enum -{ - USP45_IDLE, - USP45_SHOOT1, - USP45_SHOOT2, - USP45_SHOOT3, - USP45_SHOOTLAST, - USP45_RELOAD, - USP45_DRAW, - USP45_ADDSIL, - USP45_IDLEUNSIL, - USP45_SHOOT1UNSIL, - USP45_SHOOT2UNSIL, - USP45_SHOOT3UNSIL, - USP45_SHOOTLASTUNSIL, - USP45_RELOADUNSIL, - USP45_DRAWUNSIL, - USP45_DETACHSIL -}; - -void -w_usp45_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_usp45.fire"); - Sound_Precache("weapon_usp45.silenced"); - precache_model("models/w_usp.mdl"); -#else - precache_model("models/v_usp.mdl"); - precache_model("models/p_usp.mdl"); -#endif -} - -void -w_usp45_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.usp45_mag, pl.ammo_45acp, -1); -} - -string -w_usp45_wmodel(void) -{ - return "models/w_usp.mdl"; -} - -string -w_usp45_pmodel(player pl) -{ - return "models/p_usp.mdl"; -} - -string -w_usp45_deathmsg(void) -{ - return ""; -} - -int -w_usp45_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.usp45_mag = 12; - else - pl.usp45_mag = startammo; - } else { - if (pl.ammo_45acp < AMMO_MAX_45ACP) { - pl.ammo_45acp = bound(0, pl.ammo_45acp + 12, AMMO_MAX_45ACP); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_usp45_draw(player pl) -{ - - Weapons_SetModel("models/v_usp.mdl"); - if (pl.mode_usp45 == 1) { - Weapons_ViewAnimation(pl, USP45_DRAW); - } else { - Weapons_ViewAnimation(pl, USP45_DRAWUNSIL); - } - -#ifdef CLIENT - pl.cs_cross_mindist = 8; - pl.cs_cross_deltadist = 3; - CStrikeView_UpdateGeomset(pl); -#endif -} - -void -w_usp45_primary(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.gflags & GF_SEMI_TOGGLED) - return; - if (!pl.usp45_mag) - return; - - - float accuracy = Cstrike_CalculateAccuracy(pl,25,2.2); - int dmg = 0; - pl.usp45_mag--; - - /* this stuff is predicted */ - int r = (float)input_sequence % 3; - if (pl.mode_usp45 == 1) { - if (pl.usp45_mag <= 0) { - Weapons_ViewAnimation(pl, USP45_SHOOTLAST); - } else { - switch (r) { - case 0: - Weapons_ViewAnimation(pl, USP45_SHOOT1); - break; - case 1: - Weapons_ViewAnimation(pl, USP45_SHOOT2); - break; - default: - Weapons_ViewAnimation(pl, USP45_SHOOT3); - break; - } - } - } else { - if (pl.usp45_mag <= 0) { - Weapons_ViewAnimation(pl, USP45_SHOOTLASTUNSIL); - } else { - switch (r) { - case 0: - Weapons_ViewAnimation(pl, USP45_SHOOT1UNSIL); - break; - case 1: - Weapons_ViewAnimation(pl, USP45_SHOOT2UNSIL); - break; - default: - Weapons_ViewAnimation(pl, USP45_SHOOT3UNSIL); - break; - } - } - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_ONEHAND, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_ONEHAND, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_SMALL); - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - /* Different sounds without silencer */ - if (pl.mode_usp45 == 1) { - Sound_Play(pl, CHAN_WEAPON, "weapon_usp45.silenced"); - } else { - Sound_Play(pl, CHAN_WEAPON, "weapon_usp45.fire"); - } - - /* actual firing */ - dmg = Skill_GetValue("plr_usp45_dmg", 33); - TraceAttack_SetRangeModifier(0.79); /* can penetrate 6 but not 7 units */ - TraceAttack_SetPenetrationPower(1); - Cstrike_BulletRecoil_ApplyPre(pl,0.625); - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [accuracy,accuracy], WEAPON_USP45, "Impact.BigShot"); - Cstrike_BulletRecoil_ApplyPost(pl,0.625); -#endif - Cstrike_ShotMultiplierAdd(pl, 2.5, .5,accuracy*0.5); - - pl.gflags |= GF_SEMI_TOGGLED; - pl.w_attack_next = 0.15f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_usp45_secondary(player pl) -{ - - if (pl.w_attack_next > 0) - return; - - /* toggle silencer */ - pl.mode_usp45 = 1 - pl.mode_usp45; - - /* play the animation */ - if (pl.mode_usp45) - Weapons_ViewAnimation(pl, USP45_ADDSIL); - else - Weapons_ViewAnimation(pl, USP45_DETACHSIL); - - pl.w_attack_next = 3.1f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_usp45_reload(player pl) -{ - - if (pl.w_attack_next > 0.0) - return; - if (pl.usp45_mag >= 12) - return; - if (!pl.ammo_45acp) - return; - - if (pl.mode_usp45 == 1) - Weapons_ViewAnimation(pl, USP45_RELOAD); - else - Weapons_ViewAnimation(pl, USP45_RELOADUNSIL); - - pl.w_attack_next = 2.5f; - pl.w_idle_next = pl.w_attack_next; - -#ifdef SERVER - static void w_weapon_reload_done(void) { - player pl = (player)self; - Weapons_ReloadWeapon(pl, player::usp45_mag, player::ammo_45acp, 12); - Cstrike_ShotReset(pl); - } - - pl.think = w_weapon_reload_done; - pl.nextthink = time + pl.w_attack_next - 0.1f; -#endif -} - -void -w_usp45_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.usp45_mag == 0 && pl.ammo_45acp > 0) { - Weapons_Reload(pl); - return; - } -} - -float -w_usp45_aimanim(player pl) -{ - return w_deagle_aimanim(pl); -} - -void -w_usp45_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [96/256,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_usp45_isempty(player pl) -{ - - if (pl.usp45_mag <= 0 && pl.ammo_45acp <= 0) - return 1; - - return 0; -} - -void -w_usp45_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_usp45_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_45acp, AMMO_MAX_45ACP, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud4_spr, - [0,90/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud1_spr, - [0,90/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_usp45 = -{ - .name = "usp", - .id = ITEM_USP45, - .slot = 1, - .slot_pos = 0, - .weight = 5, - .allow_drop = TRUE, - .draw = w_usp45_draw, - .holster = __NULL__, - .primary = w_usp45_primary, - .secondary = w_usp45_secondary, - .reload = w_usp45_reload, - .release = w_usp45_release, - .postdraw = w_usp45_hud, - .precache = w_usp45_precache, - .pickup = w_usp45_pickup, - .updateammo = w_usp45_updateammo, - .wmodel = w_usp45_wmodel, - .pmodel = w_usp45_pmodel, - .deathmsg = w_usp45_deathmsg, - .aimanim = w_usp45_aimanim, - .hudpic = w_usp45_hudpic, - .type = csweapon_ranged_type, - .isempty = w_usp45_isempty -}; - -#ifdef SERVER -void -weapon_usp45(void) -{ - Weapons_InitItem(WEAPON_USP45); -} -#endif diff --git a/src/shared/w_xm1014.qc b/src/shared/w_xm1014.qc deleted file mode 100644 index 04779ca..0000000 --- a/src/shared/w_xm1014.qc +++ /dev/null @@ -1,381 +0,0 @@ -/* - * Copyright (c) 2016-2021 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. - */ - -/*!QUAKED weapon_xm1014 (0 0 1) (-16 -16 0) (16 16 32) - -COUNTER-STRIKE (1999) ENTITY - -Benneli XM1014 Weapon - -- Buy Menu - -Price: $3000 - --------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY -------- -model="models/w_xm1014.mdl" -*/ - -#ifdef CLIENT -void -w_xm1014_ejectshell(void) -{ - static void w_xm1014_ejectshell_death(void) { - remove(self); - } - static void w_xm1014_ejectshell_touch(void) { - if (other == world) - Sound_Play(self, CHAN_BODY, "modelevent_shotgunshell.land"); - } - entity eShell = spawn(); - setmodel(eShell, "models/shotgunshell.mdl"); - eShell.solid = SOLID_BBOX; - eShell.movetype = MOVETYPE_BOUNCE; - eShell.drawmask = MASK_ENGINE; - eShell.angles = [pSeat->m_eViewModel.angles[0], pSeat->m_eViewModel.angles[1], 0]; - eShell.velocity = pSeat->m_vecPredictedVelocity; - - makevectors(pSeat->m_eViewModel.angles); - eShell.velocity += (v_forward * 0); - eShell.velocity += (v_right * 80); - eShell.velocity += (v_up * 100); - eShell.touch = w_xm1014_ejectshell_touch; - - eShell.avelocity = [0,45,900]; - eShell.think = w_xm1014_ejectshell_death; - eShell.nextthink = time + 2.5f; - setsize(eShell, [0,0,0], [0,0,0]); - setorigin(eShell, pSeat->m_eViewModel.origin + (v_forward * 26) + (v_right * 8) + (v_up * -8)); -} -#endif - -enum -{ - XM1014_IDLE, - XM1014_SHOOT1, - XM1014_SHOOT2, - XM1014_INSERT, - XM1014_RELOAD_END, - XM1014_RELOAD_START, - XM1014_DRAW -}; - -enum -{ - XM1014S_IDLE, - XM1014S_RELOAD_START, - XM1014S_RELOAD, - XM1014S_RELOAD_END -}; - -void -w_xm1014_precache(void) -{ -#ifdef SERVER - Sound_Precache("weapon_xm1014.fire"); - Sound_Precache("weapon_xm1014.insertshell"); - precache_model("models/w_xm1014.mdl"); -#else - precache_model("models/v_xm1014.mdl"); - precache_model("models/p_xm1014.mdl"); -#endif -} - -void -w_xm1014_updateammo(player pl) -{ - Weapons_UpdateAmmo(pl, pl.xm1014_mag, pl.ammo_buckshot, -1); -} - -string -w_xm1014_wmodel(void) -{ - return "models/w_xm1014.mdl"; -} - -string -w_xm1014_pmodel(player pl) -{ - return "models/p_xm1014.mdl"; -} - -string -w_xm1014_deathmsg(void) -{ - return ""; -} - -int -w_xm1014_pickup(player pl, int new, int startammo) -{ -#ifdef SERVER - - if (new) { - if (startammo == -1) - pl.xm1014_mag = 7; - else - pl.xm1014_mag = startammo; - } else { - if (pl.ammo_buckshot < AMMO_MAX_BUCKSHOT) { - pl.ammo_buckshot = bound(0, pl.ammo_buckshot + 7, AMMO_MAX_BUCKSHOT); - } else { - return (0); - } - } -#endif - return (1); -} - -void -w_xm1014_draw(player pl) -{ - Weapons_SetModel("models/v_xm1014.mdl"); - Weapons_ViewAnimation(pl, XM1014_DRAW); - pl.mode_temp = 0; - -#ifdef CLIENT - pl.cs_cross_mindist = 9; - pl.cs_cross_deltadist = 4; - CStrikeView_UpdateGeomset(pl); -#endif -} - - -void w_xm1014_release(player pl); - -void -w_xm1014_primary(player pl) -{ - int dmg = 0; - int r = 0; - - if (pl.w_attack_next > 0.0) { - w_xm1014_release(pl); - return; - } - - /* interrupt reloading if no longer empty */ - if (pl.mode_temp == XM1014S_RELOAD && pl.xm1014_mag >= 1) { - pl.mode_temp = XM1014S_RELOAD_END; - w_xm1014_release(pl); - return; - } else if (pl.mode_temp > XM1014S_IDLE) { - w_xm1014_release(pl); - return; - } - - /* Ammo check */ - if (pl.xm1014_mag <= 0) { - w_xm1014_release(pl); - return; - } - - pl.xm1014_mag--; - - r = (float)input_sequence % 3; - switch (r) { - case 0: - Weapons_ViewAnimation(pl, XM1014_SHOOT1); - break; - default: - Weapons_ViewAnimation(pl, XM1014_SHOOT2); - break; - } - - if (pl.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_SHOTGUN, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_SHOTGUN, 0.45f); - -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_xm1014_ejectshell, 0.0f); -#else - dmg = Skill_GetValue("plr_xm1014_dmg", 22); - TraceAttack_SetPenetrationPower(0); /* shotties can't wallbang?! */ - Sound_Play(pl, CHAN_WEAPON, "weapon_xm1014.fire"); -#endif - - for (int i = 0; i < 6; i++) { - Cstrike_ShotMultiplierAdd(pl, 1, 1,1); - pl.punchangle[0] = -4 * (6 / 6); -#ifdef SERVER - TraceAttack_FireBulletsWithDecal(1, pl.origin + pl.view_ofs, dmg, [random(-1,1) * 0.1,random(-1,1) * 0.05], WEAPON_M3, "Impact.BigShot"); -#endif - } - - pl.w_attack_next = 0.25f; - pl.w_idle_next = pl.w_attack_next; -} - -void -w_xm1014_reload(player pl) -{ - - if (pl.xm1014_mag >= 7) { - return; - } - if (pl.ammo_buckshot <= 0) { - return; - } - - if (pl.mode_temp > XM1014S_IDLE) { - return; - } - pl.mode_temp = XM1014S_RELOAD_START; - pl.w_idle_next = 0.0f; -} - -void -w_xm1014_release(player pl) -{ - - w_cstrike_weaponrelease(); - - /* auto-reload if need be */ - if (pl.w_attack_next <= 0.0) - if (pl.mode_temp == XM1014S_IDLE && pl.xm1014_mag == 0 && pl.ammo_buckshot > 0) { - Weapons_Reload(pl); - return; - } - - if (pl.w_idle_next > 0.0) { - return; - } - - if (pl.mode_temp == XM1014S_RELOAD_START) { - Weapons_ViewAnimation(pl, XM1014_RELOAD_START); - pl.mode_temp = XM1014S_RELOAD; - pl.w_idle_next = 0.65f; - } else if (pl.mode_temp == XM1014S_RELOAD) { - Weapons_ViewAnimation(pl, XM1014_INSERT); - pl.xm1014_mag++; - pl.ammo_buckshot--; - w_xm1014_updateammo(pl); -#ifdef SERVER - Sound_Play(pl, CHAN_WEAPON, "weapon_xm1014.insertshell"); -#endif - if (pl.ammo_buckshot <= 0 || pl.xm1014_mag >= 7) { - pl.mode_temp = XM1014S_RELOAD_END; - } - pl.w_idle_next = 0.5f; - } else if (pl.mode_temp == XM1014S_RELOAD_END) { - Weapons_ViewAnimation(pl, XM1014_RELOAD_END); - pl.mode_temp = XM1014S_IDLE; - pl.w_idle_next = 10.0f; - pl.w_attack_next = 0.5f; - } -} - -float -w_xm1014_aimanim(player pl) -{ - return w_ak47_aimanim(pl); -} - -void -w_xm1014_hud(player pl) -{ -#ifdef CLIENT - Cstrike_DrawCrosshair(); - HUD_DrawAmmo1(); - HUD_DrawAmmo2(); - vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; - drawsubpic(aicon_pos, [24,24], g_hud7_spr, [0,72/256], [24/256, 24/256], g_hud_color, pSeatLocal->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); -#endif -} - -int -w_xm1014_isempty(player pl) -{ - - if (pl.xm1014_mag <= 0 && pl.ammo_buckshot <= 0) - return 1; - - return 0; -} - -void -w_xm1014_hudpic(player pl, int selected, vector pos, float a) -{ -#ifdef CLIENT - vector hud_col; - - if (w_xm1014_isempty(pl)) - hud_col = [1,0,0]; - else - hud_col = g_hud_color; - - HUD_DrawAmmoBar(pos, pl.ammo_buckshot, AMMO_MAX_BUCKSHOT, a); - - if (selected) { - drawsubpic( - pos, - [170,45], - g_hud13_spr, - [0,135/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } else { - drawsubpic( - pos, - [170,45], - g_hud12_spr, - [0,135/256], - [170/256,45/256], - hud_col, - a, - DRAWFLAG_ADDITIVE - ); - } -#endif -} - -weapon_t w_xm1014 = -{ - .name = "xm1014", - .id = ITEM_XM1014, - .slot = 0, - .slot_pos = 1, - .weight = 20, - .allow_drop = TRUE, - .draw = w_xm1014_draw, - .holster = __NULL__, - .primary = w_xm1014_primary, - .secondary = __NULL__, - .reload = w_xm1014_reload, - .release = w_xm1014_release, - .postdraw = w_xm1014_hud, - .precache = w_xm1014_precache, - .pickup = w_xm1014_pickup, - .updateammo = w_xm1014_updateammo, - .wmodel = w_xm1014_wmodel, - .pmodel = w_xm1014_pmodel, - .deathmsg = w_xm1014_deathmsg, - .aimanim = w_xm1014_aimanim, - .hudpic = w_xm1014_hudpic, - .type = csweapon_ranged_type, - .isempty = w_xm1014_isempty -}; - -#ifdef SERVER -void -weapon_xm1014(void) -{ - Weapons_InitItem(WEAPON_XM1014); -} -#endif diff --git a/src/shared/weapons.h b/src/shared/weapons.h index 0ccf943..facea3f 100644 --- a/src/shared/weapons.h +++ b/src/shared/weapons.h @@ -25,6 +25,10 @@ enum WEAPON_UMP45, WEAPON_MAC10, WEAPON_TMP, +#if defined(CZERO) || defined(CSSOURCE) + WEAPON_FAMAS, + WEAPON_GALIL, +#endif WEAPON_AK47, WEAPON_SG552, WEAPON_M4A1, diff --git a/src/shared/weapons.qc b/src/shared/weapons.qc deleted file mode 100644 index 09e9e08..0000000 --- a/src/shared/weapons.qc +++ /dev/null @@ -1,64 +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. - */ - -weapon_t w_null = {}; -weapon_t g_weapons[] = { - w_null, - w_m3, - w_xm1014, - w_mp5, - w_p90, - w_ump45, - w_mac10, - w_tmp, - w_ak47, - w_sg552, - w_m4a1, - w_aug, - w_scout, - w_awp, - w_g3sg1, - w_sg550, - w_para, - w_usp45, - w_glock18, - w_deagle, - w_p228, - w_elites, - w_fiveseven, - w_knife, - w_hegrenade, - w_flashbang, - w_smokegrenade, - w_c4bomb -}; - -int -Cstrike_WeaponToDropUponDeath(player pl) -{ - int best_weapon = WEAPON_KNIFE; /* this will never drop, so an okay default */ - - for (int i = 0; i < g_weapons.length; i++) { - if (pl.g_items & g_weapons[i].id) { - if (g_weapons[i].slot == 0) - return i; /* immediately choose this primary weapon */ - - best_weapon = i; - } - } - - return best_weapon; -} \ No newline at end of file diff --git a/src/shared/weapons_cstrike.qc b/src/shared/weapons_cstrike.qc index 5f1e4af..d53cefa 100644 --- a/src/shared/weapons_cstrike.qc +++ b/src/shared/weapons_cstrike.qc @@ -34,19 +34,19 @@ var float autocvar_fcs_guns_movement_inaccuracy = 1.0f; var float autocvar_fcs_guns_firing_inaccuracy = 1.0f; weapontype_t -csweapon_ranged_type(player pl) +csweapon_ranged_type(CSPlayer pl) { return WPNTYPE_RANGED; } weapontype_t -csweapon_melee_type(player pl) +csweapon_melee_type(CSPlayer pl) { return WPNTYPE_CLOSE; } float -Cstrike_CalculateMovementInaccuracy(player pl) { +Cstrike_CalculateMovementInaccuracy(CSPlayer pl) { float m = 1.0f; float maxspeed = 250; float speedlimit_low = maxspeed/3; @@ -61,7 +61,7 @@ Cstrike_CalculateMovementInaccuracy(player pl) { } if (!(pl.flags & FL_ONGROUND)) { m = 2.5f; - }else if (pl.flags & FL_CROUCHING) { + }else if (pl.IsCrouching()) { m *= 0.6f; } return bound(0.75f,m,2.5f); @@ -69,7 +69,7 @@ Cstrike_CalculateMovementInaccuracy(player pl) { /* called whenever a cstrike gun fires a successful shot */ void -Cstrike_ShotMultiplierAdd(player pl, float shots, float strength, float inaccuracy) +Cstrike_ShotMultiplierAdd(CSPlayer pl, float shots, float strength, float inaccuracy) { int r; inaccuracy = bound(.95,inaccuracy*50+0.1,1.6); @@ -154,7 +154,7 @@ Cstrike_ShotMultiplierAdd(player pl, float shots, float strength, float inaccura /* generate an accuracy value that we'll pass onto TraceAttack */ float -Cstrike_CalculateAccuracy(player pl, float divisor, float movement_penalty=1) +Cstrike_CalculateAccuracy(CSPlayer pl, float divisor, float movement_penalty=1) { float inacc = 0; float m = Cstrike_CalculateMovementInaccuracy(pl); @@ -179,12 +179,12 @@ Cstrike_CalculateAccuracy(player pl, float divisor, float movement_penalty=1) void -Cstrike_BulletRecoil_ApplyPre(player pl, float strength) { +Cstrike_BulletRecoil_ApplyPre(CSPlayer pl, float strength) { strength *= autocvar_fcs_guns_recoil_strength; pl.v_angle += strength*pl.punchangle*(2 - pl.cs_shotmultiplier/100*0.2); } void -Cstrike_BulletRecoil_ApplyPost(player pl, float strength) { +Cstrike_BulletRecoil_ApplyPost(CSPlayer pl, float strength) { strength *= autocvar_fcs_guns_recoil_strength; pl.v_angle -= strength*pl.punchangle*(2 - pl.cs_shotmultiplier/100*0.2); } @@ -192,7 +192,7 @@ Cstrike_BulletRecoil_ApplyPost(player pl, float strength) { /* called whenever cstrike guns aren't firing */ void -Cstrike_ShotMultiplierUpdate(player pl) +Cstrike_ShotMultiplierUpdate(CSPlayer pl) { if ((pl.cs_shotmultiplier > 0) && (pl.cs_shottime <= 0.0f)) { pl.cs_shottime = pl.w_attack_next + 0.01; @@ -203,29 +203,28 @@ Cstrike_ShotMultiplierUpdate(player pl) } void -Cstrike_ShotReset(player pl) +Cstrike_ShotReset(CSPlayer pl) { pl.cs_shottime = 0.0f; pl.cs_shotmultiplier = 0; } void -w_cstrike_weaponrelease(void) +w_cstrike_weaponrelease(CSPlayer pl) { - player pl = (player)self; - pl.punchangle[1] *= 0.95; + //pl.punchangle[1] *= 0.95; Cstrike_ShotMultiplierUpdate(pl); } void -w_cstrke_switched(player pl) +w_cstrke_switched(CSPlayer pl) { Cstrike_ShotReset(pl); } #ifdef CLIENT void -CStrikeView_UpdateGeomset(player pl) +CStrikeView_UpdateGeomset(CSPlayer pl) { if (getplayerkeyfloat(pl.entnum-1, "*team") == TEAM_CT) { setcustomskin(pSeat->m_eViewModel, "", "geomset 0 2\ngeomset 1 1\n"); diff --git a/zpak001.pk3dir/PAK_NAME b/zpak001.pk3dir/PAK_NAME new file mode 100644 index 0000000..94f8520 --- /dev/null +++ b/zpak001.pk3dir/PAK_NAME @@ -0,0 +1 @@ +package_cstrike.pk3 diff --git a/zpak001.pk3dir/cfg/skill_cstrike.cfg b/zpak001.pk3dir/cfg/skill_cstrike.cfg index 196a170..2afe7e7 100644 --- a/zpak001.pk3dir/cfg/skill_cstrike.cfg +++ b/zpak001.pk3dir/cfg/skill_cstrike.cfg @@ -2,6 +2,10 @@ // this is so that users can tweak all the stuff we mostly guessed // and can make it more like how they want it to behave. +set sk_hostage_health1 100 +set sk_hostage_health2 100 +set sk_hostage_health3 100 + // knife: primary attack range set sk_plr_knife_range1 48 set sk_plr_knife_range2 48 @@ -177,7 +181,7 @@ set sk_plr_awp_dmg1 115 set sk_plr_awp_dmg2 115 set sk_plr_awp_dmg3 115 -// para: bullet damage -set sk_plr_para_dmg1 35 -set sk_plr_para_dmg2 35 -set sk_plr_para_dmg3 35 \ No newline at end of file +// m249: bullet damage +set sk_plr_m249_dmg1 35 +set sk_plr_m249_dmg2 35 +set sk_plr_m249_dmg3 35 diff --git a/zpak001.pk3dir/csprogs.dat.en.po b/zpak001.pk3dir/csprogs.dat.default.po old mode 100755 new mode 100644 similarity index 93% rename from zpak001.pk3dir/csprogs.dat.en.po rename to zpak001.pk3dir/csprogs.dat.default.po index 36dad96..240e4e8 --- a/zpak001.pk3dir/csprogs.dat.en.po +++ b/zpak001.pk3dir/csprogs.dat.default.po @@ -1,21 +1,4 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-06-21 15:30+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" +# English (Default) Locale file msgid "VGUI_TITLE_MOTD" msgstr "Message Of The Day" diff --git a/zpak001.pk3dir/def/ammo.def b/zpak001.pk3dir/def/ammo.def new file mode 100644 index 0000000..f4bc7ee --- /dev/null +++ b/zpak001.pk3dir/def/ammo.def @@ -0,0 +1,116 @@ +// these have to be defined by the game. +entityDef ammo_types { + "ammo_none" "0" + "ammo_338magnum" "1" + "ammo_357sig" "2" + "ammo_45acp" "3" + "ammo_50ae" "4" + "ammo_556nato" "5" + "ammo_556natobox" "6" + "ammo_57mm" "7" + "ammo_762nato" "8" + "ammo_9mm" "9" + "ammo_buckshot" "10" + "ammo_hegrenade" "11" + "ammo_smokegrenade" "12" + "ammo_flashbang" "13" +} + +entityDef ammo_names { + "ammo_none" "None" + "ammo_338magnum" ".338 Lapua Magnum" + "ammo_357sig" ".357 SIG" + "ammo_45acp" ".45 ACP" + "ammo_50ae" ".50 Action Express" + "ammo_556nato" "5.56×45mm NATO" + "ammo_556natobox" "5.56×45mm NATO BOX" + "ammo_57mm" "FN 5.7×28mm" + "ammo_762nato" "7.62×51mm NATO" + "ammo_9mm" "9×19mm Parabellum" + "ammo_buckshot" "Buckshot" + "ammo_hegrenade" "HE Grenade" + "ammo_smokegrenade" "Smoke Grenade" + "ammo_flashbang" "Flashbang" +} + +entityDef ammo_base +{ + "spawnclass" "NSItem" + "snd_acquire" "ammo.pickup" + "snd_respawn" "ammo.respawn" + "mins" "-16 -16 0" + "maxs" "16 16 16" + "model" "models/w_backpack.mdl" +} + +// these don't exist as pickups in the game, but +// might be helpful nonetheless +entityDef ammo_338magnum +{ + "editor_usage" "Ammo used by weapon_awp" + "inherit" "ammo_base" + "inv_ammo_338magnum" "10" +} + +entityDef ammo_357sig +{ + "editor_usage" "Ammo used by weapon_p228" + "inherit" "ammo_base" + "inv_ammo_357sig" "13" +} + +entityDef ammo_45acp +{ + "editor_usage" "Ammo used by weapon_mac10, weapon_ump45, weapon_usp45" + "inherit" "ammo_base" + "inv_ammo_45acp" "12" +} + +entityDef ammo_50ae +{ + "editor_usage" "Ammo used by weapon_deagle" + "inherit" "ammo_base" + "inv_ammo_50ae" "7" +} + +entityDef ammo_556nato +{ + "editor_usage" "Ammo used by weapon_m4a1, weapon_sg550, weapon_sg552" + "inherit" "ammo_base" + "inv_ammo_556nato" "30" +} + +entityDef ammo_556natobox +{ + "editor_usage" "Ammo used by weapon_m249" + "inherit" "ammo_base" + "inv_ammo_556natobox" "30" +} + +entityDef ammo_57mm +{ + "editor_usage" "Ammo used by weapon_fiveseven, weapon_p90" + "inherit" "ammo_base" + "inv_ammo_57mm" "50" +} + +entityDef ammo_762nato +{ + "editor_usage" "Ammo used by weapon_aug, weapon_famas, weapon_g3sg1, weapon_galil, weapon_ak47, weapon_scout" + "inherit" "ammo_base" + "inv_ammo_762nato" "30" +} + +entityDef ammo_9mm +{ + "editor_usage" "Ammo used by weapon_elites, weapon_glock18, weapon_mp5navy, weapon_tmp" + "inherit" "ammo_base" + "inv_ammo_9mm" "30" +} + +entityDef ammo_buckshot +{ + "editor_usage" "Ammo used by weapon_m3, weapon_xm1014" + "inherit" "ammo_base" + "inv_ammo_buckshot" "8" +} diff --git a/zpak001.pk3dir/def/bot.def b/zpak001.pk3dir/def/bot.def deleted file mode 100644 index 7fbc892..0000000 --- a/zpak001.pk3dir/def/bot.def +++ /dev/null @@ -1,4 +0,0 @@ -entityDef bot -{ - spawnclass csbot -} \ No newline at end of file diff --git a/zpak001.pk3dir/def/hostage.def b/zpak001.pk3dir/def/hostage.def new file mode 100644 index 0000000..5d92a55 --- /dev/null +++ b/zpak001.pk3dir/def/hostage.def @@ -0,0 +1,16 @@ +entityDef hostage_entity +{ + "spawnclass" "CSHostage" + "model" "models/hostage.mdl" + "netname" "Hostage" + "health" "skill:hostage_health" + "mins" "-16 -16 0" + "maxs" "16 16 72" + "eye_height" "64" + "team" "0" + "propdata" "actor_human" + + "follow_on_use" "1" + "speed_walk" "64" + "speed_run" "364" +} diff --git a/zpak001.pk3dir/def/item_c4.def b/zpak001.pk3dir/def/item_c4.def new file mode 100644 index 0000000..5f3bf2b --- /dev/null +++ b/zpak001.pk3dir/def/item_c4.def @@ -0,0 +1,12 @@ +entityDef item_c4 +{ + "spawnclass" "CSBombEntity" + "model" "models/w_c4.mdl" + "model_led" "sprites/ledglow.spr" + "snd_beep1" "weapon_c4bomb.beep1" + "snd_beep2" "weapon_c4bomb.beep2" + "snd_beep3" "weapon_c4bomb.beep3" + "snd_beep4" "weapon_c4bomb.beep4" + "snd_beep5" "weapon_c4bomb.beep5" + "snd_planted" "c4.plant" +} diff --git a/zpak001.pk3dir/def/player.def b/zpak001.pk3dir/def/player.def new file mode 100644 index 0000000..bb234ef --- /dev/null +++ b/zpak001.pk3dir/def/player.def @@ -0,0 +1,4 @@ +entityDef player +{ + "spawnclass" "CSPlayer" +} diff --git a/zpak001.pk3dir/def/spawns.def b/zpak001.pk3dir/def/spawns.def new file mode 100644 index 0000000..7ca23f6 --- /dev/null +++ b/zpak001.pk3dir/def/spawns.def @@ -0,0 +1,26 @@ +entityDef info_player_start +{ + "editor_mins" "-16 -16 -36" + "editor_maxs" "16 16 36" + "editor_description" "Singleplayer Spawn Point" + "editor_color" "1 0 0" + "spawnclass" "NSSpawnPoint" +} + +entityDef info_player_deathmatch +{ + "editor_mins" "-16 -16 -36" + "editor_maxs" "16 16 36" + "editor_description" "Deathmatch Spawn Point" + "editor_color" "1 0 0" + "spawnclass" "NSSpawnPoint" +} + +entityDef info_player_coop +{ + "editor_mins" "-16 -16 -36" + "editor_maxs" "16 16 36" + "editor_description" "Cooperative Spawn Point" + "editor_color" "1 0 0" + "spawnclass" "NSSpawnPoint" +} \ No newline at end of file diff --git a/zpak001.pk3dir/def/weapons.def b/zpak001.pk3dir/def/weapons.def index e69de29..62590c0 100644 --- a/zpak001.pk3dir/def/weapons.def +++ b/zpak001.pk3dir/def/weapons.def @@ -0,0 +1,76 @@ +#include "weapons/ak47.def" +#include "weapons/aug.def" +#include "weapons/awp.def" +#include "weapons/c4.def" +#include "weapons/deagle.def" +#include "weapons/elites.def" +#include "weapons/famas.def" +#include "weapons/fiveseven.def" +#include "weapons/flashbang.def" +#include "weapons/g3sg1.def" +#include "weapons/galil.def" +#include "weapons/glock18.def" +#include "weapons/hegrenade.def" +#include "weapons/knife.def" +#include "weapons/m249.def" +#include "weapons/m3.def" +#include "weapons/m4a1.def" +#include "weapons/mac10.def" +#include "weapons/mp5navy.def" +#include "weapons/p228.def" +#include "weapons/p90.def" +#include "weapons/scout.def" +#include "weapons/sg550.def" +#include "weapons/sg552.def" +#include "weapons/smokegrenade.def" +#include "weapons/tmp.def" +#include "weapons/ump45.def" +#include "weapons/usp.def" +#include "weapons/xm1014.def" + +entityDef CSBaseMelee +{ + "spawnclass" "CSWeapon" + "editor_color" ".3 .3 1" + "editor_mins" "-16 -16 -16" + "editor_maxs" "16 16 16" + "editor_rotatable" "1" + + "snd_acquire" "Player.PickupWeapon" +} + +entityDef CSBasePistol +{ + "spawnclass" "CSWeapon" + "editor_color" ".3 .3 1" + "editor_mins" "-16 -16 -16" + "editor_maxs" "16 16 16" + "editor_rotatable" "1" + + "semiAuto" "1" + "snd_acquire" "Player.PickupWeapon" + "snd_empty" "Default.ClipEmpty_Pistol" +} + +entityDef CSBaseRifle +{ + "spawnclass" "CSWeapon" + "editor_color" ".3 .3 1" + "editor_mins" "-16 -16 -16" + "editor_maxs" "16 16 16" + "editor_rotatable" "1" + + "snd_acquire" "Player.PickupWeapon" + "snd_empty" "Default.ClipEmpty_Rifle" +} + +entityDef CSBaseShotgun +{ + "spawnclass" "CSWeapon" + "editor_color" ".3 .3 1" + "editor_mins" "-16 -16 -16" + "editor_maxs" "16 16 16" + "editor_rotatable" "1" + + "snd_acquire" "Player.PickupWeapon" +} diff --git a/zpak001.pk3dir/def/weapons/ak47.def b/zpak001.pk3dir/def/weapons/ak47.def new file mode 100644 index 0000000..d14fd50 --- /dev/null +++ b/zpak001.pk3dir/def/weapons/ak47.def @@ -0,0 +1,54 @@ +entityDef weapon_ak47 +{ + "inherit" "CSBaseRifle" + "editor_usage" "AK-47 Weapon - Uses ammo_762nato" + + "model" "models/w_ak47.mdl" + "model_view" "models/v_ak47.mdl" + + "inv_name" "AK-47 Weapon" + "def_fireInfo" "fireInfo_ak47" + "clipSize" "30" + + "actFire" "3,4,5" + "actReload" "1" + "actDraw" "2" + "actIdle" "0" + + "snd_fire" "Weapon_AK47.Single" + + "speed_mod" "0.884" + "price" "2500" + "crossMinDist" "4" + "crossDeltaDist" "4" + "accuracyDivisor" "30" + "accuracyMovementPenalty" "3" + "accuracyMultiplier" "1.5" + "rangeModifier" "2.375" + "penetrationPower" "1.0" + "bulletStrength" "1.2" + "multiplierShots" "1.1" + "multiplierStrength" "0.92" + "multiplierInaccuracy" "0.5" + + "hudSlot" "0" + "hudSlotPos" "7" + "weight" "25" +} + +entityDef projectile_ak47 +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_ak47_dmg" +} + +entityDef fireInfo_ak47 +{ + "def_onFire" "projectile_ak47" + "ammoType" "ammo_762nato" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" ".0975" + "punchAngle" "-2 0 0" + "model_flash" "sprites/muzzleflash2.spr" +} diff --git a/zpak001.pk3dir/def/weapons/aug.def b/zpak001.pk3dir/def/weapons/aug.def new file mode 100644 index 0000000..795c19b --- /dev/null +++ b/zpak001.pk3dir/def/weapons/aug.def @@ -0,0 +1,54 @@ +entityDef weapon_aug +{ + "inherit" "CSBaseRifle" + "editor_usage" "Steyr AUG Weapon - Uses ammo_762nato" + + "model" "models/w_aug.mdl" + "model_view" "models/v_aug.mdl" + + "inv_name" "Steyr AUG Weapon" + "def_fireInfo" "fireInfo_aug" + "clipSize" "30" + + "actFire" "3,4,5" + "actReload" "1" + "actDraw" "2" + "actIdle" "0" + + "snd_fire" "Weapon_AUG.Single" + + "speed_mod" "0.96" + "price" "3500" + "crossMinDist" "3" + "crossDeltaDist" "3" + "accuracyDivisor" "35" + "accuracyMovementPenalty" "2" + "accuracyMultiplier" "1" + "rangeModifier" "2.125" + "penetrationPower" "1.0" + "bulletStrength" "1.03" + "multiplierShots" "1.1" + "multiplierStrength" "1.1" + "multiplierInaccuracy" "1.0" + + "hudSlot" "0" + "hudSlotPos" "10" + "weight" "25" +} + +entityDef projectile_aug +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_aug_dmg" +} + +entityDef fireInfo_aug +{ + "def_onFire" "projectile_aug" + "ammoType" "ammo_762nato" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.0825f" + "punchAngle" "-2 0 0" + "model_flash" "sprites/muzzleflash2.spr" +} diff --git a/zpak001.pk3dir/def/weapons/awp.def b/zpak001.pk3dir/def/weapons/awp.def new file mode 100644 index 0000000..3cb1a50 --- /dev/null +++ b/zpak001.pk3dir/def/weapons/awp.def @@ -0,0 +1,64 @@ +entityDef weapon_awp +{ + "inherit" "CSBaseRifle" + "editor_usage" "AWP (AI Arctic Warfare/Magnum) Weapon - Uses ammo_338magnum" + + "model" "models/w_awp.mdl" + "model_view" "models/v_awp.mdl" + + "inv_name" "AWP (AI Arctic Warfare/Magnum) Weapon" + "def_fireInfo" "fireInfo_awp" + "clipSize" "5" + + "actFire" "1,2,3" + "actAltFire" "" + "actHolster" "" + "actReload" "4" + "actDraw" "5" + "actIdle" "0" + + "snd_fire" "Weapon_AWP.Single" + + "speed_mod" "0.84" + "price" "4750" + "crossMinDist" "8" + "crossDeltaDist" "3" + "accuracyDivisor" "-1" + "accuracyMovementPenalty" "1" + "accuracyMultiplier" "1" + "rangeModifier" "1.375" + "penetrationPower" "2.0" + "bulletStrength" "1" + "multiplierShots" "1.0" + "multiplierStrength" "1.0" + "multiplierInaccuracy" "1.0" + + "hudSlot" "0" + "hudSlotPos" "12" + "weight" "30" + + "zoomDuration" "0.075" + "zoomFov" "20" + "zoomFovStep" "5" + "zoomFovMin" "5" + "zoomFovMax" "40" + "snd_raise_scope" "Default.Zoom" + "snd_lower_scope" "Default.Zoom" +} + +entityDef projectile_awp +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_awp_dmg" +} + +entityDef fireInfo_awp +{ + "def_onFire" "projectile_awp" + "ammoType" "ammo_338magnum" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "1.2" + "punchAngle" "-5 0 0" + "model_flash" "sprites/muzzleflash2.spr" +} diff --git a/zpak001.pk3dir/def/weapons/c4.def b/zpak001.pk3dir/def/weapons/c4.def new file mode 100644 index 0000000..52ceac3 --- /dev/null +++ b/zpak001.pk3dir/def/weapons/c4.def @@ -0,0 +1,33 @@ +entityDef weapon_c4 +{ + "editor_color" ".3 .3 1" + "editor_mins" "-16 -16 -16" + "editor_maxs" "16 16 16" + "editor_usage" "C4 Bomb Weapon, Bomb Defusal Gamemode Entity" + "editor_rotatable" "1" + + "spawnclass" "CSWeapon" + "model" "models/w_backpack.mdl" + "model_view" "models/v_c4.mdl" + "snd_acquire" "weapon.pickup" + "snd_respawn" "item.respawn" + + "def_plant" "item_c4" + "inv_name" "C4 Bomb Weapon" + "clipSize" "1" + "trigger_delay" "3" // takes three seconds to charge + + "actFire" "2" + "actDraw" "1" + "actIdle" "0" + "actDelay" "3" + + "snd_fire" "C4.PlantSound" + + "speed_mod" "1.0" + + "hudSlot" "4" + "hudSlotPos" "0" + "weight" "0" + "team" "1" // Terrorists only! +} diff --git a/zpak001.pk3dir/def/weapons/deagle.def b/zpak001.pk3dir/def/weapons/deagle.def new file mode 100644 index 0000000..9ff23a9 --- /dev/null +++ b/zpak001.pk3dir/def/weapons/deagle.def @@ -0,0 +1,55 @@ +entityDef weapon_deagle +{ + "inherit" "CSBasePistol" + "editor_usage" "Desert Eagle .50 AE Weapon - Uses ammo_50ae" + "model" "models/w_deagle.mdl" + "model_view" "models/v_deagle.mdl" + + "inv_name" "Desert Eagle .50 AE Weapon" + "def_fireInfo" "fireInfo_deagle" + "clipSize" "7" + + "actFire" "1,2" + "actFireLast" "3" + "actReload" "4" + "actDraw" "5" + "actIdle" "0" + + "snd_fire" "Weapon_DEagle.Single" + + "speed_mod" "1.0" + "price" "650" + + "crossMinDist" "8" + "crossDeltaDist" "3" + "accuracyDivisor" "55" + "accuracyMovementPenalty" "1.5" + "accuracyMultiplier" "1.0" + "accuracyAdd" "0.005" + "rangeModifier" "1.875" + "penetrationPower" "1.0" + "bulletStrength" "0.5" + "multiplierShots" "10" + "multiplierStrength" "0.35" + "multiplierInaccuracy" "0.5" + + "hudSlot" "1" + "hudSlotPos" "2" + "weight" "7" +} + +entityDef projectile_deagle +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_deagle_dmg" +} + +entityDef fireInfo_deagle +{ + "def_onFire" "projectile_deagle" + "ammoType" "ammo_50ae" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.2" + "model_flash" "sprites/muzzleflash2.spr" +} \ No newline at end of file diff --git a/zpak001.pk3dir/def/weapons/elites.def b/zpak001.pk3dir/def/weapons/elites.def new file mode 100644 index 0000000..45a2e36 --- /dev/null +++ b/zpak001.pk3dir/def/weapons/elites.def @@ -0,0 +1,66 @@ +entityDef weapon_elites +{ + "inherit" "CSBasePistol" + "editor_usage" "Dual Beretta 96G (Elites) Weapon - Uses ammo_9mm" + + "model" "models/w_elite.mdl" + "model_view" "models/v_elite.mdl" + + "inv_name" "Dual Beretta 96G (Elites) Weapon" + "def_fireInfo" "fireInfo_elites" + "def_altFireInfo" "fireInfo_elites_alt" + "clipSize" "30" + + "actFire" "2,3,4,5,6" + "actFireLast" "7" + "actReload" "14" + "actDraw" "15" + "actIdle" "0" + + "snd_fire" "Weapon_ELITE.Single" + "snd_altfire" "Weapon_ELITE.Single" + + "altAlternates" "1" + "speed_mod" "1.0" + "price" "1000" + "crossMinDist" "4" + "crossDeltaDist" "3" + "accuracyDivisor" "150" + "accuracyMovementPenalty" "1" + "accuracyMultiplier" "1" + "accuracyAdd" "0.002" + "rangeModifier" "1.875" + "penetrationPower" "1.0" + "bulletStrength" "0.9" + "multiplierShots" "3" + "multiplierStrength" "0.85" + "multiplierInaccuracy" "1.0" + + "hudSlot" "1" + "hudSlotPos" "4" + "weight" "5" +} + +entityDef projectile_elites +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_elites_dmg" +} + +entityDef fireInfo_elites +{ + "def_onFire" "projectile_elites" + "ammoType" "ammo_9mm" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.13" + "punchAngle" "-2 0 0" + "model_flash" "sprites/muzzleflash2.spr" +} + +entityDef fireInfo_elites_alt +{ + "inherit" "fireInfo_elites" + "actFire" "8,9,10,11,12" + "actFireLast" "13" +} diff --git a/zpak001.pk3dir/def/weapons/fiveseven.def b/zpak001.pk3dir/def/weapons/fiveseven.def new file mode 100644 index 0000000..6bc86de --- /dev/null +++ b/zpak001.pk3dir/def/weapons/fiveseven.def @@ -0,0 +1,57 @@ +entityDef weapon_fiveseven +{ + "inherit" "CSBasePistol" + "editor_usage" "Five-SeveN Weapon - Uses ammo_57mm" + + "model" "models/w_fiveseven.mdl" + "model_view" "models/v_fiveseven.mdl" + + "inv_name" "Five-SeveN Weapon" + "def_fireInfo" "fireInfo_fiveseven" + "clipSize" "20" + + "actFire" "1,2" + "actFireLast" "3" + "actReload" "4" + "actDraw" "5" + "actIdle" "0" + + + "snd_fire" "Weapon_FiveSeven.Single" + + "speed_mod" "1.0" + "price" "750" + "crossMinDist" "8" + "crossDeltaDist" "3" + "accuracyDivisor" "200" + "accuracyMovementPenalty" "1.4" + "accuracyMultiplier" "1" + "accuracyAdd" "0.0055" + "rangeModifier" "1.875" + "penetrationPower" "1.0" + "bulletStrength" "0.5" + "multiplierShots" "10" + "multiplierStrength" "0.4" + "multiplierInaccuracy" "1.0" + + "hudSlot" "1" + "hudSlotPos" "5" + "weight" "5" +} + +entityDef projectile_fiveseven +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_fiveseven_dmg" +} + +entityDef fireInfo_fiveseven +{ + "def_onFire" "projectile_fiveseven" + "ammoType" "ammo_57mm" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.155" + "punchAngle" "-2 0 0" + "model_flash" "sprites/muzzleflash2.spr" +} diff --git a/zpak001.pk3dir/def/weapons/flashbang.def b/zpak001.pk3dir/def/weapons/flashbang.def new file mode 100644 index 0000000..a026c1b --- /dev/null +++ b/zpak001.pk3dir/def/weapons/flashbang.def @@ -0,0 +1,46 @@ +entityDef weapon_flashbang +{ + "editor_color" ".3 .3 1" + "editor_mins" "-16 -16 -16" + "editor_maxs" "16 16 16" + "editor_usage" "Flashbang" + "editor_rotatable" "1" + + "spawnclass" "CSWeapon" + "model" "models/w_flashbang.mdl" + "model_view" "models/v_flashbang.mdl" + "snd_acquire" "weapon.pickup" + "snd_respawn" "item.respawn" + + "def_onFire" "projectile_flashgrenade" + "inv_name" "Flashbang" + "ammoType" "ammo_flashbang" + "ammoRequired" "1" + "silent_fire" "1" + "primed_fuse" "4" + + "actIdle" "0" + "actDraw" "3" + "actPull" "1" + "actThrow" "2" + + "hudSlot" "3" + "hudSlotPos" "1" +} + +entityDef projectile_flashgrenade +{ + "spawnclass" "CSProjectile" + "model" "models/w_smokegrenade.mdl" + "frame" "1" + "fuse" "4" + "detonate_on_fuse" "1" + "bounce" "1" + "angular_velocity" "-350 0 0" + + "snd_explode" "Flashbang.Explode" + "snd_bounce" "Flashbang.Bounce" + "decal_detonate" "ExplosionScorch" + + "flashTime" "4" +} diff --git a/zpak001.pk3dir/def/weapons/g3sg1.def b/zpak001.pk3dir/def/weapons/g3sg1.def new file mode 100644 index 0000000..924149b --- /dev/null +++ b/zpak001.pk3dir/def/weapons/g3sg1.def @@ -0,0 +1,54 @@ +entityDef weapon_g3sg1 +{ + "inherit" "CSBaseRifle" + "editor_usage" "Heckler & Koch G3/SG-1 Weapon - Uses ammo_762nato" + + "model" "models/w_g3sg1.mdl" + "model_view" "models/v_g3sg1.mdl" + + "inv_name" "Heckler & Koch G3/SG-1 Weapon" + "def_fireInfo" "fireInfo_g3sg1" + "clipSize" "20" + + "actFire" "1,2" + "actReload" "3" + "actDraw" "4" + "actIdle" "0" + + "snd_fire" "Weapon_G3SG1.Single" + + "speed_mod" "0.84" + "price" "5000" + + "crossMinDist" "6" + "crossDeltaDist" "4" + "accuracyDivisor" "200" + "accuracyMovementPenalty" "1" + "accuracyMultiplier" "1" + "rangeModifier" "2.375" + "penetrationPower" "1.0" + "bulletStrength" "" + "multiplierShots" "1.0" + "multiplierStrength" "1.0" + "multiplierInaccuracy" "1.0" + + "hudSlot" "0" + "hudSlotPos" "13" + "weight" "25" +} + +entityDef projectile_g3sg1 +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_g3sg1_dmg" +} + +entityDef fireInfo_g3sg1 +{ + "def_onFire" "projectile_g3sg1" + "ammoType" "ammo_762nato" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.25" + "model_flash" "sprites/muzzleflash2.spr" +} diff --git a/zpak001.pk3dir/def/weapons/glock18.def b/zpak001.pk3dir/def/weapons/glock18.def new file mode 100644 index 0000000..7a6d8c7 --- /dev/null +++ b/zpak001.pk3dir/def/weapons/glock18.def @@ -0,0 +1,65 @@ +entityDef weapon_glock18 +{ + "inherit" "CSBasePistol" + "editor_usage" "Glock 18 Select Fire Weapon - Uses ammo_9mm" + + "model" "models/w_glock18.mdl" + "model_view" "models/v_glock18.mdl" + + "inv_name" "Glock 18 Select Fire Weapon" + "def_fireInfo" "fireInfo_glock18" + "def_altFireInfo" "fireInfo_altglock18" + "clipSize" "20" + "ammoRequired" "1" + "model_flash" "sprites/muzzleflash2.spr" + + "actFire" "5" + "actFireLast" "6" + "actHolster" "9" + "actReload" "7,12" + "actDraw" "9,11" + "actIdle" "0,1,2" + + "snd_fire" "Weapon_Glock.Single" + + "speed_mod" "1.0" + "price" "400" + + "crossMinDist" "8.0" + "crossDeltaDist" "3.0" + "accuracyMovementPenalty" "1.2" + "accuracyMultiplier" "1" + "rangeModifier" "1.25" + "penetrationPower" "1.0" + "bulletStrength" "0.6" + "multiplierShots" "2.0" + "multiplierStrength" "0.7" + "multiplierInaccuracy" "1.0" +} + +entityDef projectile_glock +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_glock18_dmg" +} + +entityDef fireInfo_glock18 +{ + "def_onFire" "projectile_glock" + "ammoType" "ammo_9mm" + "ammoPerShot" "1" + "fireRate" "0.13" + "accuracyDivisor" "120" +} + +entityDef fireInfo_altglock18 +{ + "def_onFire" "projectile_glock" + "ammoType" "ammo_9mm" + "ammoPerShot" "3" + "numProjectiles" "3" + "fireRate" "0.5" + "accuracyDivisor" "75" + "actFire" "3,4" + "snd_fire" "Weapon_Glock.Burst" +} diff --git a/zpak001.pk3dir/def/weapons/hegrenade.def b/zpak001.pk3dir/def/weapons/hegrenade.def new file mode 100644 index 0000000..8dc0d46 --- /dev/null +++ b/zpak001.pk3dir/def/weapons/hegrenade.def @@ -0,0 +1,63 @@ + +entityDef weapon_hegrenade +{ + "inherit" "CSBasePistol" + "editor_usage" "HE Grenade" + + "model" "models/w_hegrenade.mdl" + "model_view" "models/v_hegrenade.mdl" + + "inv_name" "HE Grenade" + "inv_ammo_hegrenade" "5" + "def_onFire" "projectile_handgrenade" + "def_explode_inhand" "env_handgrenade_explodeinhand" + "def_damage_inhand" "damage_handgrenadeSplash" + "ammoType" "ammo_hegrenade" + "ammoRequired" "1" + "silent_fire" "1" + "primed_fuse" "4" + + "actIdle" "0" + "actDraw" "3" + "actPull" "1" + "actThrow" "2" + + // HLWeapon specific + "hudSlot" "3" + "hudSlotPos" "0" +} + +entityDef projectile_handgrenade +{ + "spawnclass" "NSProjectile" + "model" "models/w_grenade.mdl" + "frame" "1" + "fuse" "4" + "detonate_on_fuse" "1" + "bounce" "1" + "angular_velocity" "-350 0 0" + "model_detonate" "fx_explosion.main" + "snd_explode" "fx.explosion" + "snd_bounce" "weapon_handgrenade.bounce" + "decal_detonate" "ExplosionScorch" + + "def_damage" "damage_handgrenadeDirect" + "def_splash_damage" "damage_handgrenadeSplash" +} + +entityDef damage_handgrenadeDirect +{ + "damage" "1" +} + +entityDef damage_handgrenadeSplash +{ + "damage" "skill:plr_hand_grenade" + "radius" "250" +} + +entityDef env_handgrenade_explodeinhand +{ + "spawnclass" "idAnimatedEntity" + "model" "grenadeExplosion.prt" +} diff --git a/zpak001.pk3dir/def/weapons/knife.def b/zpak001.pk3dir/def/weapons/knife.def new file mode 100644 index 0000000..5cb2118 --- /dev/null +++ b/zpak001.pk3dir/def/weapons/knife.def @@ -0,0 +1,40 @@ +entityDef weapon_knife +{ + "inherit" "CSBaseMelee" + "editor_usage" "Knife Weapon" + + "model" "models/w_knife.mdl" + "model_view" "models/v_knife.mdl" + + // weapon specific + "def_melee" "damage_knife" + "melee_distance" "48" + "inv_name" "Knife Weapon" + "clipSize" "6" + "ammoType" "" + "ammoRequired" "0" + "clipSize" "0" + "silent_fire" "1" + + "meleeRateMiss" "0.7" + "meleeRateHit" "0.7" + + "actIdle" "0" + "actDraw" "3" + "actMeleeMiss" "1,2" + "actMeleeHit" "1,2" + + "hudSlot" "2" + "hudSlotPos" "0" +} + +entityDef damage_knife +{ + "damage" "skill:plr_knife" +// "kickDir" "-1 0 0" +// "knockback" "20" +// "push" "20000" + + "snd_hit" "Weapon_Knife.Hit" + "snd_miss" "Weapon_Knife.Slash" +} diff --git a/zpak001.pk3dir/def/weapons/m249.def b/zpak001.pk3dir/def/weapons/m249.def new file mode 100644 index 0000000..1605b0d --- /dev/null +++ b/zpak001.pk3dir/def/weapons/m249.def @@ -0,0 +1,54 @@ +entityDef weapon_m249 +{ + "inherit" "CSBaseRifle" + "editor_usage" "FN M249 Para Weapon - Uses ammo_556natobox" + + "model" "models/w_m249.mdl" + "model_view" "models/v_m249.mdl" + + "inv_name" "FN M249 Para Weapon" + "def_fireInfo" "fireInfo_m249" + "clipSize" "100" + + "actFire" "1,2" + "actReload" "3" + "actDraw" "4" + "actIdle" "0" + + "snd_fire" "Weapon_M249.Single" + + "speed_mod" "0.88" + "price" "5750" + + "crossMinDist" "6" + "crossDeltaDist" "3" + "accuracyDivisor" "70" + "accuracyMovementPenalty" "3" + "accuracyMultiplier" "1" + "rangeModifier" "2.125" + "penetrationPower" "1.0" + "bulletStrength" "1.0" + "multiplierShots" "1.0" + "multiplierStrength" "1.0" + "multiplierInaccuracy" "1.0" + + "hudSlot" "0" + "hudSlotPos" "15" + "weight" "25" +} + +entityDef projectile_m249 +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_m249_dmg" +} + +entityDef fireInfo_m249 +{ + "def_onFire" "projectile_m249" + "ammoType" "ammo_556natobox" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.1" + "model_flash" "sprites/muzzleflash2.spr" +} diff --git a/zpak001.pk3dir/def/weapons/m3.def b/zpak001.pk3dir/def/weapons/m3.def new file mode 100644 index 0000000..5f2a50c --- /dev/null +++ b/zpak001.pk3dir/def/weapons/m3.def @@ -0,0 +1,57 @@ +entityDef weapon_m3 +{ + "inherit" "CSBaseShotgun" + "editor_usage" "Benneli M3 Super90 Weapon - Uses ammo_buckshot" + + "model" "models/w_m3.mdl" + "model_view" "models/v_m3.mdl" + + "inv_name" "Benneli M3 Super90 Weapon" + "def_fireInfo" "fireInfo_m3" + "clipSize" "8" + + "actFire" "1,2" + "actReloadStart" "5" + "actReload" "3" + "actReloadEnd" "4" + "actDraw" "6" + "actIdle" "0" + + "snd_fire" "Weapon_M3.Single" + + "speed_mod" "0.92" + "price" "1700" + "crossMinDist" "" + "crossDeltaDist" "" + "accuracyDivisor" "" + "accuracyMovementPenalty" "" + "accuracyMultiplier" "" + "rangeModifier" "" + "penetrationPower" "0" + "bulletStrength" "" + "multiplierShots" "" + "multiplierStrength" "" + "multiplierInaccuracy" "" + + "hudSlot" "0" + "hudSlotPos" "0" + "weight" "20" +} + +entityDef projectile_m3 +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_m3_dmg" +} + +entityDef fireInfo_m3 +{ + "def_onFire" "projectile_m3" + "ammoType" "ammo_buckshot" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "1.0" + "punchAngle" "-2 0 0" + "model_flash" "sprites/muzzleflash2.spr" + "numProjectiles" "9" +} diff --git a/zpak001.pk3dir/def/weapons/m4a1.def b/zpak001.pk3dir/def/weapons/m4a1.def new file mode 100644 index 0000000..0b01711 --- /dev/null +++ b/zpak001.pk3dir/def/weapons/m4a1.def @@ -0,0 +1,70 @@ +entityDef weapon_m4a1 +{ + "inherit" "CSBaseRifle" + "editor_usage" "Colt M4A1 Carbine Weapon - Uses ammo_556nato" + + "model" "models/w_m4a1.mdl" + "model_view" "models/v_m4a1.mdl" + + "inv_name" "Colt M4A1 Carbine Weapon" + "def_fireInfo" "fireInfo_m4a1" + "def_altFireInfo" "fireInfo_m4a1_silenced" + "clipSize" "30" + "ammoType" "ammo_556nato" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.0875" + + "altSilences" "1" + "actAddSil" "6" + "actDetachSil" "13" + + // Unsilenced + "actFire" "8,9,10" + "actReload" "11" + "actDraw" "12" + "actIdle" "7" + "snd_fire" "Weapon_M4A1.Single" + + + "speed_mod" "0.92" + "price" "3100" + + "crossMinDist" "4.0" + "crossDeltaDist" "3.0" + "accuracyDivisor" "60" + "accuracyMovementPenalty" "3" + "accuracyMultiplier" "1" + "rangeModifier" "2.125" + "penetrationPower" "1.0" + "bulletStrength" "0.96" + "multiplierShots" "0.8" + "multiplierStrength" "1.025" + "multiplierInaccuracy" "0.8" + + "hudSlot" "0" + "hudSlotPos" "9" + "weight" "25" +} + +entityDef projectile_m4a1 +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_m4a1_dmg" +} + +entityDef fireInfo_m4a1 +{ + "def_onFire" "projectile_m4a1" + "model_flash" "sprites/muzzleflash2.spr" +} + +entityDef fireInfo_m4a1_silenced +{ + "inherit" "fireInfo_m4a1" + "actFire" "1,2,3" + "actReload" "4" + "actDraw" "5" + "actIdle" "0" + "snd_fire" "Weapon_M4A1.Silenced" +} diff --git a/zpak001.pk3dir/def/weapons/mac10.def b/zpak001.pk3dir/def/weapons/mac10.def new file mode 100644 index 0000000..eb7d2ea --- /dev/null +++ b/zpak001.pk3dir/def/weapons/mac10.def @@ -0,0 +1,55 @@ +entityDef weapon_mac10 +{ + "inherit" "CSBaseRifle" + "editor_usage" "Ingram MAC-10 Weapon - Used ammo_45acp" + + "model" "models/w_mac10.mdl" + "model_view" "models/v_mac10.mdl" + + "inv_name" "Ingram MAC-10 Weapon" + "def_fireInfo" "fireInfo_mac10" + "clipSize" "30" + + "actFire" "3,4,5" + "actReload" "1" + "actDraw" "2" + "actIdle" "0" + + "snd_fire" "Weapon_MAC10.Single" + + "speed_mod" "1.0" + "price" "1400" + + "crossMinDist" "9" + "crossDeltaDist" "3" + "accuracyDivisor" "50" + "accuracyMovementPenalty" "0.8" + "accuracyMultiplier" "1" + "accuracyAdd" "0.0095" + "rangeModifier" "1.25" + "penetrationPower" "1.0" + "bulletStrength" "1.115" + "multiplierShots" "2.0" + "multiplierStrength" "0.7" + "multiplierInaccuracy" "1.0" + + "hudSlot" "0" + "hudSlotPos" "5" + "weight" "25" +} + +entityDef projectile_mac10 +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_mac10_dmg" +} + +entityDef fireInfo_mac10 +{ + "def_onFire" "projectile_mac10" + "ammoType" "ammo_45acp" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.07" + "model_flash" "sprites/muzzleflash2.spr" +} diff --git a/zpak001.pk3dir/def/weapons/mp5navy.def b/zpak001.pk3dir/def/weapons/mp5navy.def new file mode 100644 index 0000000..89179ea --- /dev/null +++ b/zpak001.pk3dir/def/weapons/mp5navy.def @@ -0,0 +1,55 @@ +entityDef weapon_mp5navy +{ + "inherit" "CSBaseRifle" + "editor_usage" "Heckler & Koch MP5-Navy Weapon - Uses ammo_9mm" + + "model" "models/w_mp5.mdl" + "model_view" "models/v_mp5.mdl" + + "inv_name" "Heckler & Koch MP5-Navy Weapon" + "def_fireInfo" "fireInfo_mp5navy" + "clipSize" "30" + + "actFire" "3,4,5" + "actReload" "1" + "actDraw" "2" + "actIdle" "0" + + "snd_fire" "Weapon_MP5Navy.Single" + + "speed_mod" "1.0" + "price" "1500" + + "crossMinDist" "5.0" + "crossDeltaDist" "2.0" + "accuracyDivisor" "60" + "accuracyMovementPenalty" "1.25" + "accuracyMultiplier" "1" + "accuracyAdd" "0.0045" + "rangeModifier" "1.25" + "penetrationPower" "1.0" + "bulletStrength" "0.825" + "multiplierShots" "0.5" + "multiplierStrength" "1.25" + "multiplierInaccuracy" "1.0" + + "hudSlot" "0" + "hudSlotPos" "2" + "weight" "25" +} + +entityDef projectile_mp5navy +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_mp5_dmg" +} + +entityDef fireInfo_mp5navy +{ + "def_onFire" "projectile_mp5navy" + "ammoType" "ammo_9mm" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.08" + "model_flash" "sprites/muzzleflash2.spr" +} diff --git a/zpak001.pk3dir/def/weapons/p228.def b/zpak001.pk3dir/def/weapons/p228.def new file mode 100644 index 0000000..4b70c1c --- /dev/null +++ b/zpak001.pk3dir/def/weapons/p228.def @@ -0,0 +1,57 @@ +entityDef weapon_p228 +{ + "inherit" "CSBasePistol" + "editor_usage" "SIG P228 Weapon - Uses ammo_357sig" + + "model" "models/w_p228.mdl" + "model_view" "models/v_p228.mdl" + + "inv_name" "SIG P228 Weapon" + "def_fireInfo" "fireInfo_p228" + "clipSize" "13" + + + "actFire" "1,2,3" + "actFireLast" "4" + "actReload" "5" + "actDraw" "6" + "actIdle" "0" + + "snd_fire" "Weapon_P228.Single" + + "speed_mod" "1.0" + "price" "600" + + "crossMinDist" "8.0" + "crossDeltaDist" "3.0" + "accuracyDivisor" "200" + "accuracyMovementPenalty" "1.6" + "accuracyMultiplier" "1" + "accuracyAdd" "0.004" + "rangeModifier" "1.5" + "penetrationPower" "1.0" + "bulletStrength" "1.05" + "multiplierShots" "6.0" + "multiplierStrength" "0.5" + "multiplierInaccuracy" "1.0" + + "hudSlot" "1" + "hudSlotPos" "3" + "weight" "5" +} + +entityDef projectile_p228 +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_p228_dmg" +} + +entityDef fireInfo_p228 +{ + "def_onFire" "projectile_p228" + "ammoType" "ammo_357sig" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.1425" + "model_flash" "sprites/muzzleflash2.spr" +} diff --git a/zpak001.pk3dir/def/weapons/p90.def b/zpak001.pk3dir/def/weapons/p90.def new file mode 100644 index 0000000..afc2c1e --- /dev/null +++ b/zpak001.pk3dir/def/weapons/p90.def @@ -0,0 +1,55 @@ +entityDef weapon_p90 +{ + "inherit" "CSBaseRifle" + "editor_usage" "FN P90 Weapon - Uses ammo_57mm" + + "model" "models/w_p90.mdl" + "model_view" "models/v_p90.mdl" + + "inv_name" "FN P90 Weapon" + "def_fireInfo" "fireInfo_p90" + "clipSize" "50" + + "actFire" "3,4,5" + "actReload" "1" + "actDraw" "2" + "actIdle" "0" + + "snd_fire" "Weapon_P90.Single" + + "speed_mod" "0.98" + "price" "2350" + + "crossMinDist" "7" + "crossDeltaDist" "3" + "accuracyDivisor" "50" + "accuracyMovementPenalty" "1.125" + "accuracyMultiplier" "1" + "accuracyAdd" "0.0055" + "rangeModifier" "1.875" + "penetrationPower" "1.0" + "bulletStrength" "0.9" + "multiplierShots" "1.1" + "multiplierStrength" "1.3" + "multiplierInaccuracy" "1.0" + + "hudSlot" "0" + "hudSlotPos" "3" + "weight" "26" +} + +entityDef projectile_p90 +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_p90_dmg" +} + +entityDef fireInfo_p90 +{ + "def_onFire" "projectile_p90" + "ammoType" "ammo_57mm" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.07" + "model_flash" "sprites/muzzleflash2.spr" +} diff --git a/zpak001.pk3dir/def/weapons/scout.def b/zpak001.pk3dir/def/weapons/scout.def new file mode 100644 index 0000000..8c65233 --- /dev/null +++ b/zpak001.pk3dir/def/weapons/scout.def @@ -0,0 +1,55 @@ +entityDef weapon_scout +{ + "inherit" "CSBaseRifle" + "editor_usage" "Steyr Scout Weapon - Uses ammo_762nato" + + "model" "models/w_scout.mdl" + "model_view" "models/v_scout.mdl" + + "inv_name" "Steyr Scout Weapon" + "def_fireInfo" "fireInfo_scout" + "clipSize" "10" + + + "actFire" "1,2" + "actReload" "3" + "actDraw" "4" + "actIdle" "0" + + "snd_fire" "Weapon_Scout.Single" + + "speed_mod" "1.04" + "price" "1250" + + "crossMinDist" "5.0" + "crossDeltaDist" "3.0" + "accuracyDivisor" "200" + "accuracyMovementPenalty" "1" + "accuracyMultiplier" "1" + "rangeModifier" "2.375" + "penetrationPower" "1.0" + "bulletStrength" "" + "multiplierShots" "1.0" + "multiplierStrength" "1.0" + "multiplierInaccuracy" "1.0" + + "hudSlot" "0" + "hudSlotPos" "11" + "weight" "30" +} + +entityDef projectile_scout +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_scout_dmg" +} + +entityDef fireInfo_scout +{ + "def_onFire" "projectile_scout" + "ammoType" "ammo_762nato" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.3" + "model_flash" "sprites/muzzleflash2.spr" +} diff --git a/zpak001.pk3dir/def/weapons/sg550.def b/zpak001.pk3dir/def/weapons/sg550.def new file mode 100644 index 0000000..a4b190d --- /dev/null +++ b/zpak001.pk3dir/def/weapons/sg550.def @@ -0,0 +1,54 @@ +entityDef weapon_sg550 +{ + "inherit" "CSBaseRifle" + "editor_usage" "SIG SG 550 Weapon - Uses ammo_556nato" + + "model" "models/w_sg550.mdl" + "model_view" "models/v_sg550.mdl" + + "inv_name" "SIG SG 550 Weapon" + "def_fireInfo" "fireInfo_sg550" + "clipSize" "30" + + "actFire" "1,2" + "actReload" "3" + "actDraw" "4" + "actIdle" "0" + + "snd_fire" "Weapon_SG550.Single" + + "speed_mod" "0.84" + "price" "4200" + + "crossMinDist" "5.0" + "crossDeltaDist" "3.0" + "accuracyDivisor" "200" + "accuracyMovementPenalty" "1" + "accuracyMultiplier" "1" + "rangeModifier" "2.125" + "penetrationPower" "1.0" + "bulletStrength" "" + "multiplierShots" "1.0" + "multiplierStrength" "1.0" + "multiplierInaccuracy" "1.0" + + "hudSlot" "0" + "hudSlotPos" "14" + "weight" "20" +} + +entityDef projectile_sg550 +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_sg550_dmg" +} + +entityDef fireInfo_sg550 +{ + "def_onFire" "projectile_sg550" + "ammoType" "ammo_556nato" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.25" + "model_flash" "sprites/muzzleflash2.spr" +} diff --git a/zpak001.pk3dir/def/weapons/sg552.def b/zpak001.pk3dir/def/weapons/sg552.def new file mode 100644 index 0000000..4b23007 --- /dev/null +++ b/zpak001.pk3dir/def/weapons/sg552.def @@ -0,0 +1,56 @@ +entityDef weapon_sg552 +{ + "inherit" "CSBaseRifle" + "editor_usage" "SIG SG 552 Commando Weapon - Uses ammo_556nato" + + "model" "models/w_sg552.mdl" + "model_view" "models/v_sg552.mdl" + + "inv_name" "SIG SG 552 Commando Weapon" + "def_fireInfo" "fireInfo_sg552" + "clipSize" "30" + + + "actFire" "3,4,5" + "actReload" "1" + "actDraw" "2" + "actIdle" "0" + + "snd_fire" "Weapon_SG552.Single" + + "speed_mod" "0.94" + "price" "3500" + + "crossMinDist" "5.0" + "crossDeltaDist" "3.0" + "accuracyDivisor" "75" + "accuracyMovementPenalty" "3" + // we actually want to * viewzoom here... + "accuracyMultiplier" "1" + "rangeModifier" "2.125" + "penetrationPower" "1.0" + "bulletStrength" "0.726" + "multiplierShots" "2.2" + "multiplierStrength" "0.9" + "multiplierInaccuracy" "1.0" + + "hudSlot" "0" + "hudSlotPos" "8" + "weight" "25" +} + +entityDef projectile_sg552 +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_sg552_dmg" +} + +entityDef fireInfo_sg552 +{ + "def_onFire" "projectile_sg552" + "ammoType" "ammo_556nato" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.0825" + "model_flash" "sprites/muzzleflash2.spr" +} diff --git a/zpak001.pk3dir/def/weapons/smokegrenade.def b/zpak001.pk3dir/def/weapons/smokegrenade.def new file mode 100644 index 0000000..5de28d5 --- /dev/null +++ b/zpak001.pk3dir/def/weapons/smokegrenade.def @@ -0,0 +1,50 @@ +entityDef weapon_smokegrenade +{ + "editor_color" ".3 .3 1" + "editor_mins" "-16 -16 -16" + "editor_maxs" "16 16 16" + "editor_usage" "smokegrenade" + "editor_rotatable" "1" + + "spawnclass" "CSWeapon" + "model" "models/w_smokegrenade.mdl" + "model_view" "models/v_smokegrenade.mdl" + "snd_acquire" "weapon.pickup" + "snd_respawn" "item.respawn" + + "def_onFire" "projectile_smokegrenade" + "inv_name" "smokegrenade" + "clipSize" "50" + "clipSizeDefault" "25" + + "actFire" "5,6,7" + "actAltFire" "2" + "actHolster" "4" + "actReload" "3" + "actDraw" "4" + "actIdle" "0,1" + + "snd_fire" "weapon_smokegrenade.shoot" + "snd_altfire" "weapon_smokegrenade.gl" + "snd_empty" "weapon_smokegrenade.empty" + + "hudSlot" "3" + "hudSlotPos" "2" +} + +entityDef projectile_smokegrenade +{ + "spawnclass" "CSProjectile" + "model" "models/w_smokegrenade.mdl" + "frame" "1" + "fuse" "4" + "detonate_on_fuse" "1" + "bounce" "1" + "angular_velocity" "-350 0 0" + + "snd_explode" "BaseSmokeEffect.Sound" + "snd_bounce" "SmokeGrenade.Bounce" + "decal_detonate" "ExplosionScorch" + + "smokeTime" "4" +} diff --git a/zpak001.pk3dir/def/weapons/tmp.def b/zpak001.pk3dir/def/weapons/tmp.def new file mode 100644 index 0000000..c00050e --- /dev/null +++ b/zpak001.pk3dir/def/weapons/tmp.def @@ -0,0 +1,56 @@ +entityDef weapon_tmp +{ + "inherit" "CSBaseRifle" + "editor_usage" "Steyr Tactical Weapon - Uses ammo_9mm" + + "model" "models/w_tmp.mdl" + "model_view" "models/v_tmp.mdl" + + "inv_name" "Steyr Tactical Weapon" + "def_fireInfo" "fireInfo_tmp" + "clipSize" "30" + + + "actFire" "3,4,5" + "actReload" "1" + "actDraw" "2" + "actIdle" "0" + + "snd_fire" "Weapon_TMP.Single" + + "speed_mod" "1.0" + "price" "1250" + + "crossMinDist" "7" + "crossDeltaDist" "3" + "accuracyDivisor" "30" + "accuracyMovementPenalty" "0.95" + "accuracyMultiplier" "1" + "accuracyAdd" "0.0035" + "rangeModifier" "1.25" + "penetrationPower" "1.0" + "bulletStrength" "0.8" + "multiplierShots" "0.95" + "multiplierStrength" "1.25" + "multiplierInaccuracy" "1.0" + + "hudSlot" "0" + "hudSlotPos" "6" + "weight" "25" +} + +entityDef projectile_tmp +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_tmp_dmg" +} + +entityDef fireInfo_tmp +{ + "def_onFire" "projectile_tmp" + "ammoType" "ammo_9mm" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.07" + "model_flash" "sprites/muzzleflash2.spr" +} diff --git a/zpak001.pk3dir/def/weapons/ump45.def b/zpak001.pk3dir/def/weapons/ump45.def new file mode 100644 index 0000000..71655b0 --- /dev/null +++ b/zpak001.pk3dir/def/weapons/ump45.def @@ -0,0 +1,57 @@ +entityDef weapon_ump45 +{ + "inherit" "CSBaseRifle" + "editor_usage" "Heckler & Koch UMP .45 ACP Weapon - Uses ammo_45acp" + + "model" "models/w_ump45.mdl" + "model_view" "models/v_ump45.mdl" + + "inv_name" "Heckler & Koch UMP .45 ACP Weapon" + "def_fireInfo" "fireInfo_ump45" + "clipSize" "25" + + + "actFire" "3,4,5" + "actReload" "1" + "actDraw" "2" + "actIdle" "0" + + "snd_fire" "Weapon_UMP45.Single" + + "speed_mod" "1.0" + "price" "1700" + + "crossMinDist" "6.0" + "crossDeltaDist" "3.0" + "accuracyDivisor" "100" + "accuracyMovementPenalty" "1" + "accuracyMultiplier" "1" + "accuracyAdd" "0.003" + "rangeModifier" "0.875" + "penetrationPower" "1.0" + "bulletStrength" "1.2" + "multiplierShots" "1.0" + "multiplierStrength" "0.9" + "multiplierInaccuracy" "1.0" + + "hudSlot" "0" + "hudSlotPos" "4" + "weight" "25" +} + +entityDef projectile_ump45 +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_ump45_dmg" +} + +entityDef fireInfo_ump45 +{ + "def_onFire" "projectile_ump45" + "ammoType" "ammo_45acp" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.105" + "model_flash" "sprites/muzzleflash2.spr" +} + diff --git a/zpak001.pk3dir/def/weapons/usp.def b/zpak001.pk3dir/def/weapons/usp.def new file mode 100644 index 0000000..60cc9fd --- /dev/null +++ b/zpak001.pk3dir/def/weapons/usp.def @@ -0,0 +1,86 @@ +#define USP45_IDLE 0 +#define USP45_SHOOT1 1 +#define USP45_SHOOT2 2 +#define USP45_SHOOT3 3 +#define USP45_SHOOTLAST 4 +#define USP45_RELOAD 5 +#define USP45_DRAW 6 +#define USP45_ADDSIL 7 +#define USP45_IDLEUNSIL 8 +#define USP45_SHOOT1UNSIL 9 +#define USP45_SHOOT2UNSIL 10 +#define USP45_SHOOT3UNSIL 11 +#define USP45_SHOOTLASTUNSIL 12 +#define USP45_RELOADUNSIL 13 +#define USP45_DRAWUNSIL 14 +#define USP45_DETACHSIL 15 + +entityDef weapon_usp +{ + "inherit" "CSBasePistol" + "editor_usage" "usp45" + + "model" "models/w_usp.mdl" + "model_view" "models/v_usp.mdl" + + "def_fireInfo" "fireInfo_usp45_unsil" + "def_altFireInfo" "fireInfo_usp45_sil" + "inv_name" "USP .45" + "clipSize" "12" + "ammoType" "ammo_45acp" + "fireRate" ".15" + "semiAuto" "1" + "ammoRequired" "1" + + "altSilences" "1" + "actAddSil" "7" + "actDetachSil" "15" + + "crossMinDist" "4" + "crossDeltaDist" "4" + "accuracyDivisor" "25" + "accuracyMovementPenalty" "2.2" + "accuracyMultiplier" "1" + "rangeModifier" "0.79" + "penetrationPower" "1.0" + "bulletStrength" "0.625" + "multiplierShots" "2.5" + "multiplierStrength" "0.5" + "multiplierInaccuracy" "0.5" + + // Unsilenced + "actDraw" "14" + "actIdle" "8" + "actFire" "9,10,11" + "actFireLast" "12" + "actReload" "13" + "snd_fire" "Weapon_USP.Single" + + "hudSlot" "1" + "hudSlotPos" "0" + "weight" "5" +} + +entityDef projectile_usp45 +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_usp45_dmg" +} + +entityDef fireInfo_usp45_unsil +{ + "def_onFire" "projectile_usp45" + "model_flash" "sprites/muzzleflash2.spr" +} + +entityDef fireInfo_usp45_sil +{ + "def_onFire" "projectile_usp45" + "model_flash" "sprites/muzzleflash2.spr" + "actDraw" "6" + "actIdle" "0" + "actReload" "5" + "actFire" "1,2,3" + "actFireLast" "4" + "snd_fire" "Weapon_USP.SilencedShot" +} diff --git a/zpak001.pk3dir/def/weapons/xm1014.def b/zpak001.pk3dir/def/weapons/xm1014.def new file mode 100644 index 0000000..b1b570c --- /dev/null +++ b/zpak001.pk3dir/def/weapons/xm1014.def @@ -0,0 +1,59 @@ +entityDef weapon_xm1014 +{ + "inherit" "CSBaseShotgun" + "editor_usage" "Benneli XM1014 Weapon - Uses ammo_buckshot" + + "model" "models/w_xm1014.mdl" + "model_view" "models/v_xm1014.mdl" + + "inv_name" "Benneli XM1014 Weapon" + "def_fireInfo" "fireInfo_xm1014" + "clipSize" "7" + + "ammoType" "ammo_buckshot" + + "actFire" "1,2" + "actReloadStart" "5" + "actReload" "3" + "actReloadEnd" "4" + "actDraw" "6" + "actIdle" "0" + + "snd_fire" "Weapon_XM1014.Single" + + "speed_mod" "0.96" + "price" "3000" + "crossMinDist" "" + "crossDeltaDist" "" + "accuracyDivisor" "" + "accuracyMovementPenalty" "" + "accuracyMultiplier" "" + "rangeModifier" "" + "penetrationPower" "0" + "bulletStrength" "" + "multiplierShots" "" + "multiplierStrength" "" + "multiplierInaccuracy" "" + + "hudSlot" "0" + "hudSlotPos" "1" + "weight" "20" +} + +entityDef projectile_xm1014 +{ + "inherit" "projectile_bullet_base" + "damage" "skill:plr_xm1014_dmg" +} + +entityDef fireInfo_xm1014 +{ + "def_onFire" "projectile_xm1014" + "ammoType" "ammo_buckshot" + "ammoRequired" "1" + "ammoPerShot" "1" + "fireRate" "0.25" + "punchAngle" "-2 0 0" + "model_flash" "sprites/muzzleflash2.spr" + "numProjectiles" "6" +} diff --git a/zpak001.pk3dir/scripts/bots.txt b/zpak001.pk3dir/scripts/bots.txt new file mode 100644 index 0000000..b127b78 --- /dev/null +++ b/zpak001.pk3dir/scripts/bots.txt @@ -0,0 +1,59 @@ +{ + name nothing + funname n0things +} +{ + name goose + funname ^2Goose +} +{ + name marco + funname "]I[ M4RC0 ]I[" +} +{ + name rich + funname "Rich" +} +{ + name Getman +} +{ + name pod + funname p0d +} +{ + name leet + funname ^3l33t +} +{ + name max + funname ^4Max^1well +} +{ + name spike +} +{ + name jub +} +{ + name funkyboi +} +{ + name error + funname ^1Error +} +{ + name Shazbot +} +{ + name BombGoBoom +} +{ + name SgtMajor +} +{ + name happy_camper +} +{ + name DEViL +} \ No newline at end of file diff --git a/zpak001.pk3dir/scripts/constants.txt b/zpak001.pk3dir/scripts/constants.txt index 0438b01..e69de29 100644 --- a/zpak001.pk3dir/scripts/constants.txt +++ b/zpak001.pk3dir/scripts/constants.txt @@ -1,29 +0,0 @@ -// weapon constants -WEAPON_NONE 0 -WEAPON_M3 1 -WEAPON_XM1014 2 -WEAPON_MP5 3 -WEAPON_P90 4 -WEAPON_UMP45 5 -WEAPON_MAC10 6 -WEAPON_TMP 7 -WEAPON_AK47 8 -WEAPON_SG552 9 -WEAPON_M4A1 10 -WEAPON_AUG 11 -WEAPON_SCOUT 12 -WEAPON_AWP 13 -WEAPON_G3SG1 14 -WEAPON_SG550 15 -WEAPON_PARA 16 -WEAPON_USP45 17 -WEAPON_GLOCK18 18 -WEAPON_DEAGLE 19 -WEAPON_P228 20 -WEAPON_ELITES 21 -WEAPON_FIVESEVEN 22 -WEAPON_KNIFE 23 -WEAPON_HEGRENADE 24 -WEAPON_FLASHBANG 25 -WEAPON_SMOKEGRENADE 26 -WEAPON_C4BOMB 27 \ No newline at end of file diff --git a/zpak001.pk3dir/scripts/maptweaks.txt b/zpak001.pk3dir/scripts/maptweaks.txt new file mode 100644 index 0000000..ebdfb63 --- /dev/null +++ b/zpak001.pk3dir/scripts/maptweaks.txt @@ -0,0 +1,6 @@ +// allows you to play Counter-Strike: Source levels (needs hl2 engine plugin) +css_tweaks +{ + replace info_player_counterterrorist info_player_start + replace info_player_terrorist info_player_deathmatch +} diff --git a/zpak001.pk3dir/scripts/surfaceproperties.txt b/zpak001.pk3dir/scripts/surfaceproperties.txt new file mode 100644 index 0000000..5c051e2 --- /dev/null +++ b/zpak001.pk3dir/scripts/surfaceproperties.txt @@ -0,0 +1,224 @@ +default +{ + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.default" + stepleft "step_default.left" + stepright "step_default.right" + scraperough "scrape.default" + scrapesmooth "scrape.default" +} + +gs_material_glass +{ + gamematerial Y + part_bulletimpact "impact_glass.main" + bulletimpact "sfx_impact.glass" + stepleft "step_glass.left" + stepright "step_glass.right" + break "func_breakable.break_glass" +} + +gs_material_wood +{ + gamematerial W + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.wood" + stepleft "step_wood.left" + stepright "step_wood.right" + break "func_breakable.break_wood" +} + +gs_material_metal +{ + gamematerial M + part_bulletimpact "impact_unbreakable.main" + bulletimpact "sfx_impact.metal" + stepleft "step_metal.left" + stepright "step_metal.right" + break "func_breakable.break_metal" +} + +gs_material_ladder +{ + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.metal" + stepleft "step_ladder.left" + stepright "step_ladder.right" +} + +gs_material_flesh +{ + gamematerial F + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.flesh" + stepleft "step_flesh.left" + stepright "step_flesh.right" + break "func_breakable.break_flesh" +} + +gs_material_cinderblock +{ + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.concrete" + stepleft "step_default.left" + stepright "step_default.right" + break "func_breakable.break_cinder" +} + +gs_material_tile +{ + gamematerial T + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.tile" + stepleft "step_tile.left" + stepright "step_tile.right" + break "func_breakable.break_cinder" +} + +gs_material_computer +{ + gamematerial P + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.computer" + stepleft "step_computer.left" + stepright "step_computer.right" + break "func_breakable.break_computer" +} + +gs_material_unbreakableglass +{ + part_bulletimpact "impact_unbreakable.main" + bulletimpact "sfx_impact.glass" + stepleft "step_glass.left" + stepright "step_glass.right" + break "func_breakable.break_glass" +} + +gs_material_rocks +{ + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.concrete" + stepleft "step_default.left" + stepright "step_default.right" + break "func_breakable.break_cinder" +} + +gs_material_flesh +{ + gamematerial F + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.flesh" + stepleft "step_flesh.left" + stepright "step_flesh.right" + break "func_breakable.break_flesh" +} + +gs_material_concrete +{ + gamematerial C + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.concrete" + stepleft "step_concrete.left" + stepright "step_concrete.right" + break "func_breakable.break_cinder" +} + +gs_material_dirt +{ + gamematerial D + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.dirt" + stepleft "step_dirt.left" + stepright "step_dirt.right" + break "func_breakable.break_rocks" +} + +gs_material_grate +{ + gamematerial G + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.grate" + stepleft "step_grate.left" + stepright "step_grate.right" + break "func_breakable.break_metal" +} + +gs_material_alien +{ + gamematerial H + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.alien" + stepleft "step_alien.left" + stepright "step_alien.right" + break "func_breakable.break_flesh" +} + +gs_material_snow +{ + gamematerial K + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.snow" + stepleft "step_snow.left" + stepright "step_snow.right" +} + +gs_material_sand +{ + gamematerial N + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.sand" + stepleft "step_sand.left" + stepright "step_sand.right" +} + +gs_material_foliage +{ + gamematerial O + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.foliage" + stepleft "step_foliage.left" + stepright "step_foliage.right" +} + +gs_material_slosh +{ + gamematerial S + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.slosh" + stepleft "step_slosh.left" + stepright "step_slosh.right" +} + +gs_material_vent +{ + gamematerial V + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.snow" + stepleft "step_vent.left" + stepright "step_vent.right" + break "func_breakable.break_metal" +} + +water +{ + part_bulletimpact "fx_impact.water" + bulletimpact "sfx_impact.slosh" + stepleft "step_slosh.left" + stepright "step_slosh.right" +} + +lava +{ + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.slosh" + stepleft "step_slosh.left" + stepright "step_slosh.right" +} + +slime +{ + part_bulletimpact "impact_default.main" + bulletimpact "sfx_impact.slosh" + stepleft "step_slosh.left" + stepright "step_slosh.right" +} \ No newline at end of file diff --git a/zpak001.pk3dir/sound/player.sndshd b/zpak001.pk3dir/sound/player.sndshd index 01661d6..361afd2 100644 --- a/zpak001.pk3dir/sound/player.sndshd +++ b/zpak001.pk3dir/sound/player.sndshd @@ -134,4 +134,9 @@ Player.Swim sample player/pl_swim2.wav sample player/pl_swim3.wav sample player/pl_swim4.wav +} + +Player.PickupWeapon +{ + sample items/gunpickup2.wav } \ No newline at end of file diff --git a/zpak001.pk3dir/sound/weapons_cstrike.sndshd b/zpak001.pk3dir/sound/weapons_cstrike.sndshd index 5067656..f27cff4 100644 --- a/zpak001.pk3dir/sound/weapons_cstrike.sndshd +++ b/zpak001.pk3dir/sound/weapons_cstrike.sndshd @@ -1,42 +1,52 @@ -weapon_ak47.fire +Default.ClipEmpty_Rifle +{ + sample weapons/dryfire_rifle.wav +} + +Default.ClipEmpty_Pistol +{ + sample weapons/dryfire_pistol.wav +} + +Weapon_AK47.Single { sample weapons/ak47-1.wav sample weapons/ak47-2.wav } -weapon_aug.fire +Weapon_AUG.Single { sample weapons/aug-1.wav } -weapon_awp.fire +Weapon_AWP.Single { sample weapons/awp1.wav } -weapon_awp.zoom +Default.Zoom { sample weapons/zoom.wav } -weapon_c4bomb.disarm +c4.disarmstart { attenuation none sample weapons/c4_disarm.wav } -weapon_c4bomb.disarmed +c4.disarmfinish { sample weapons/c4_disarmed.wav } -weapon_c4bomb.explode +c4.explode { attenuation none sample weapons/c4_explode1.wav } -weapon_c4bomb.plant +c4.plant { sample weapons/c4_plant.wav } @@ -67,19 +77,19 @@ weapon_c4bomb.beep5 sample weapons/c4_beep5.wav } -weapon_deagle.fire +Weapon_DEagle.Single { sample weapons/deagle-1.wav sample weapons/deagle-2.wav } -weapon_elites.fire +Weapon_ELITE.Single { sample weapons/elite_fire.wav sample weapons/elite_fire.wav } -weapon_fiveseven.fire +Weapon_FiveSeven.Single { sample weapons/fiveseven-1.wav } @@ -89,17 +99,27 @@ weapon_flashbang.explode sample weapons/flashbang-1.wav } -weapon_g3sg1.fire +Weapon_FAMAS.Single +{ + sample weapons/famas-1.wav +} + +Weapon_G3SG1.Single { sample weapons/g3sg1-1.wav } -weapon_glock18.fire +Weapon_Galil.Single +{ + sample weapons/galil-1.wav +} + +Weapon_Glock.Single { sample weapons/glock18-2.wav } -weapon_glock18.burstfire +Weapon_Glock.Burst { sample weapons/glock18-1.wav } @@ -140,12 +160,12 @@ weapon_flashbang.explode sample weapons/flashbang-2.wav } -weapon_knife.hit +Weapon_Knife.HitWall { sample weapons/knife_hitwall1.wav } -weapon_knife.hitbody +Weapon_Knife.Hit { sample weapons/knife_hit1.wav sample weapons/knife_hit2.wav @@ -153,70 +173,69 @@ weapon_knife.hitbody sample weapons/knife_hit4.wav } -weapon_knife.hithard +Weapon_Knife.Stab { sample weapons/knife_stab.wav } -weapon_knife.miss +Weapon_Knife.Slash { sample weapons/knife_slash1.wav } -weapon_m3.fire +Weapon_M3.Single { sample weapons/m3-1.wav } -weapon_m4a1.fire +Weapon_M4A1.Single { sample weapons/m4a1_unsil-1.wav sample weapons/m4a1_unsil-2.wav } -weapon_m4a1.silenced +Weapon_M4A1.Silenced { sample weapons/m4a1-1.wav } -weapon_mac10.fire +Weapon_MAC10.Single { sample weapons/mac10-1.wav } -weapon_mp5.fire +Weapon_MP5Navy.Single { sample weapons/mp5-1.wav } -weapon_p228.fire +Weapon_P228.Single { sample weapons/p228-1.wav } -weapon_p90.fire +Weapon_P90.Single { sample weapons/p90-1.wav } - -weapon_para.fire +Weapon_M249.Single { sample weapons/m249-1.wav sample weapons/m249-2.wav } -weapon_scout.fire +Weapon_Scout.Single { sample weapons/scout_fire-1.wav } -weapon_sg550.fire +Weapon_SG550.Single { sample weapons/sg550-1.wav } -weapon_sg552.fire +Weapon_SG552.Single { sample weapons/sg552-1.wav } @@ -226,34 +245,34 @@ weapon_smokegrenade.explode sample weapons/sg_explode.wav } -weapon_tmp.fire +Weapon_TMP.Single { sample weapons/tmp-1.wav sample weapons/tmp-2.wav } -weapon_ump45.fire +Weapon_UMP45.Single { sample weapons/ump45-1.wav } -weapon_usp45.fire +Weapon_USP.Single { sample weapons/usp_unsil-1.wav } -weapon_usp45.silenced +Weapon_USP.SilencedShot { sample weapons/usp1.wav sample weapons/usp2.wav } -weapon_xm1014.fire +Weapon_XM1014.Single { sample weapons/xm1014-1.wav } -weapon_xm1014.insertshell +Weapon_XM1014.InsertShell { sample weapons/m3_insertshell.wav }