From 20b960761e3f7a21811d8283f9b8a7aa01d99066 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Thu, 28 Apr 2022 10:52:13 -0700 Subject: [PATCH] Gamerules: Fix kill rewards or something. Add cvar fcs_penalty_teamkill. --- src/server/ammo.h | 1 + src/server/ammo.qc | 4 +++- src/server/defs.h | 1 + src/server/gamerules_multiplayer.qc | 17 ++++++++++------- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/server/ammo.h b/src/server/ammo.h index a36c50b..8523a4f 100644 --- a/src/server/ammo.h +++ b/src/server/ammo.h @@ -1,2 +1,3 @@ void Ammo_BuyPrimary(base_player pl, int free); void Ammo_BuySecondary(base_player pl, int free); +void Ammo_AutoFill(base_player); diff --git a/src/server/ammo.qc b/src/server/ammo.qc index 215fb71..1af0dae 100644 --- a/src/server/ammo.qc +++ b/src/server/ammo.qc @@ -314,8 +314,10 @@ CSEv_AmmoBuyPrimary(void) } void -Ammo_AutoFill(player pl) +Ammo_AutoFill(base_player pp) { + player pl = (player)pp; + if (autocvar_fcs_fillweapons == FALSE) { return; } diff --git a/src/server/defs.h b/src/server/defs.h index bc0d763..e2ceb4b 100644 --- a/src/server/defs.h +++ b/src/server/defs.h @@ -74,6 +74,7 @@ var int autocvar_fcs_nopickups = FALSE; /* Disable weapon items */ var int autocvar_fcs_reward_kill = 300; var int autocvar_fcs_penalty_pain = -150; var int autocvar_fcs_penalty_kill = -1500; +var int autocvar_fcs_penalty_teamkill = -3300; var int autocvar_fcs_maxmoney = 16000; var int autocvar_fcs_fillweapons = FALSE; /* This will automatically get ammo for the weapon you buy */ var int autocvar_fcs_fix_bombtimer = TRUE; /* If true, the bomb-timer will dictate the round-end */ diff --git a/src/server/gamerules_multiplayer.qc b/src/server/gamerules_multiplayer.qc index 7adf36c..1867bee 100644 --- a/src/server/gamerules_multiplayer.qc +++ b/src/server/gamerules_multiplayer.qc @@ -63,10 +63,17 @@ CSMultiplayerRules::PlayerDeath(base_player pl) /* update score-counter */ if (g_dmg_eTarget.flags & FL_CLIENT || g_dmg_eTarget.flags & FL_MONSTER) if (g_dmg_eAttacker.flags & FL_CLIENT) { - if (g_dmg_eTarget == g_dmg_eAttacker || g_dmg_eTarget.team == g_dmg_eAttacker.team) + float vip = (g_dmg_eTarget.team == TEAM_VIP && g_dmg_eAttacker.team == TEAM_CT); + + if (g_dmg_eTarget == g_dmg_eAttacker) { g_dmg_eAttacker.frags--; - else + } else if (g_dmg_eTarget.team == g_dmg_eAttacker.team || vip) { + g_dmg_eAttacker.frags--; + Money_AddMoney((base_player)g_dmg_eAttacker, autocvar_fcs_penalty_teamkill); + } else { g_dmg_eAttacker.frags++; + Money_AddMoney((base_player)g_dmg_eAttacker, autocvar_fcs_reward_kill); + } } Weapon_DropCurrentWeapon(targ); @@ -792,11 +799,7 @@ CSMultiplayerRules::PlayerRespawn(base_player pp, int fTeam) pl.velocity = [0,0,0]; pl.progress = 0.0f; Weapons_SwitchBest(pl); - - if (autocvar_fcs_fillweapons) { - Ammo_BuyPrimary(pl, TRUE); - Ammo_BuySecondary(pl, TRUE); - } + Ammo_AutoFill(pl); } void