From 90f25d08eed7e0f0b35d5b0dcdb32a43be171189 Mon Sep 17 00:00:00 2001 From: div0 Date: Wed, 23 Sep 2009 05:58:57 +0000 Subject: [PATCH] camping rifle: in havoc balance, remove reload, instead support bursts for secondary, then a slower refire git-svn-id: svn://svn.icculus.org/nexuiz/trunk@7867 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/defaultNexuiz.cfg | 2 +- data/qcsrc/server/constants.qh | 4 +-- data/qcsrc/server/w_campingrifle.qc | 39 ++++++++++++++++++----------- data/weapons.cfg | 13 ++++++---- data/weapons25.cfg | 5 +++- data/weaponsHavoc.cfg | 13 ++++++---- 6 files changed, 48 insertions(+), 28 deletions(-) diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index 30482d6a2..12c47c2fb 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -26,7 +26,7 @@ if_dedicated alias if_client "" seta g_configversion 0 "Configuration file version (used to upgrade settings) 0: first run, or previous start was <2.4.1 Later, it's overridden by config.cfg, version ranges are defined in config_update.cfg" // default.cfg versioning (update using update-cvarcount.sh, run that every time after adding a new cvar) -set cvar_check_default 28459139144883d7da0c4033615e0b20 +set cvar_check_default 555b377d0ab22c70606023c3ff4c3beb // Nexuiz version (formatted for machines) // used to determine if a client version is compatible diff --git a/data/qcsrc/server/constants.qh b/data/qcsrc/server/constants.qh index 8e1a341a6..70ab1131a 100644 --- a/data/qcsrc/server/constants.qh +++ b/data/qcsrc/server/constants.qh @@ -1,5 +1,5 @@ -string CVAR_CHECK_DEFAULT = "28459139144883d7da0c4033615e0b20"; -string CVAR_CHECK_WEAPONS = "bc8154746bdc33b6ff517c0e19fa91e0"; +string CVAR_CHECK_DEFAULT = "555b377d0ab22c70606023c3ff4c3beb"; +string CVAR_CHECK_WEAPONS = "5278169134188aeb084c58d3ed3ed289"; float FALSE = 0; float TRUE = 1; diff --git a/data/qcsrc/server/w_campingrifle.qc b/data/qcsrc/server/w_campingrifle.qc index a4880e490..cce522916 100644 --- a/data/qcsrc/server/w_campingrifle.qc +++ b/data/qcsrc/server/w_campingrifle.qc @@ -2,18 +2,22 @@ //* Manually operating the bolt means that all the power of the gas is used to propell the bullet. In this mode the bolt is prevented from moving backwards in response to the firing of the bullet. //** In fully automatic mode some of the gas is used to extract and reload the next cartrige, thus there is less power and range. +.float campingrifle_accumulator; + float W_CampingRifle_CheckMaxBullets() { float maxbulls; maxbulls = cvar("g_balance_campingrifle_magazinecapacity"); + if(!maxbulls) + maxbulls = 8; if not(self.items & IT_UNLIMITED_WEAPON_AMMO) maxbulls = min(maxbulls, floor(self.ammo_nails / min(cvar("g_balance_campingrifle_primary_ammo"), cvar("g_balance_campingrifle_secondary_ammo")))); - if(self.campingrifle_bulletcounter > maxbulls) + if(self.campingrifle_bulletcounter > maxbulls || !cvar("g_balance_campingrifle_magazinecapacity")) self.campingrifle_bulletcounter = maxbulls; return (self.campingrifle_bulletcounter == maxbulls); } -void W_Campingrifle_ReloadedAndReady() +void W_CampingRifle_ReloadedAndReady() { float t; self.campingrifle_bulletcounter = cvar("g_balance_campingrifle_magazinecapacity"); @@ -23,10 +27,11 @@ void W_Campingrifle_ReloadedAndReady() w_ready(); } -void W_Campingrifle_Reload() +void W_CampingRifle_Reload() { float t; + W_CampingRifle_CheckMaxBullets(); if (self.campingrifle_bulletcounter >= cvar("g_balance_campingrifle_magazinecapacity")) return; @@ -50,16 +55,16 @@ void W_Campingrifle_Reload() t = max(time, ATTACK_FINISHED(self)) + cvar("g_balance_campingrifle_reloadtime") + 1; ATTACK_FINISHED(self) = t; - weapon_thinkf(WFRAME_RELOAD, cvar("g_balance_campingrifle_reloadtime"), W_Campingrifle_ReloadedAndReady); + weapon_thinkf(WFRAME_RELOAD, cvar("g_balance_campingrifle_reloadtime"), W_CampingRifle_ReloadedAndReady); self.campingrifle_bulletcounter = -1; } -void W_Campingrifle_CheckReloadAndReady() +void W_CampingRifle_CheckReloadAndReady() { w_ready(); if (self.campingrifle_bulletcounter <= 0) - W_Campingrifle_Reload(); + W_CampingRifle_Reload(); else w_ready(); } @@ -89,14 +94,15 @@ void W_CampingRifle_FireBullet(float pSpread, float pDamage, float pHeadshotAdde SpawnCasing (((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3, self); self.campingrifle_bulletcounter = self.campingrifle_bulletcounter - 1; + W_CampingRifle_CheckMaxBullets(); } -void W_Campingrifle_Attack() +void W_CampingRifle_Attack() { W_CampingRifle_FireBullet(cvar("g_balance_campingrifle_primary_spread"), cvar("g_balance_campingrifle_primary_damage"), cvar("g_balance_campingrifle_primary_headshotaddeddamage"), cvar("g_balance_campingrifle_primary_force"), cvar("g_balance_campingrifle_primary_speed"), cvar("g_balance_campingrifle_primary_lifetime"), cvar("g_balance_campingrifle_primary_ammo"), WEP_CAMPINGRIFLE, cvar("g_balance_campingrifle_primary_bulletconstant")); } -void W_Campingrifle_Attack2() +void W_CampingRifle_Attack2() { W_CampingRifle_FireBullet(cvar("g_balance_campingrifle_secondary_spread"), cvar("g_balance_campingrifle_secondary_damage"), cvar("g_balance_campingrifle_secondary_headshotaddeddamage"), cvar("g_balance_campingrifle_secondary_force"), cvar("g_balance_campingrifle_secondary_speed"), cvar("g_balance_campingrifle_secondary_lifetime"), cvar("g_balance_campingrifle_secondary_ammo"), WEP_CAMPINGRIFLE | HITTYPE_SECONDARY, cvar("g_balance_campingrifle_secondary_bulletconstant")); } @@ -139,21 +145,26 @@ float w_campingrifle(float req) { if(self.switchweapon == self.weapon) if(self.weaponentity.state == WS_READY) - W_Campingrifle_Reload(); + W_CampingRifle_Reload(); } else { + self.campingrifle_accumulator = bound(time - cvar("g_balance_campingrifle_bursttime"), self.campingrifle_accumulator, time); + if (time >= self.campingrifle_accumulator + cvar("g_balance_campingrifle_primary_burstcost")) if (self.BUTTON_ATCK) if (weapon_prepareattack(0, cvar("g_balance_campingrifle_primary_refire"))) { - W_Campingrifle_Attack(); - weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_campingrifle_primary_animtime"), W_Campingrifle_CheckReloadAndReady); + W_CampingRifle_Attack(); + weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_campingrifle_primary_animtime"), W_CampingRifle_CheckReloadAndReady); + self.campingrifle_accumulator += cvar("g_balance_campingrifle_primary_burstcost"); } + if (time >= self.campingrifle_accumulator + cvar("g_balance_campingrifle_secondary_burstcost")) if (self.BUTTON_ATCK2) if (weapon_prepareattack(1, cvar("g_balance_campingrifle_secondary_refire"))) { - W_Campingrifle_Attack2(); - weapon_thinkf(WFRAME_FIRE2, cvar("g_balance_campingrifle_secondary_animtime"), W_Campingrifle_CheckReloadAndReady); + W_CampingRifle_Attack2(); + weapon_thinkf(WFRAME_FIRE2, cvar("g_balance_campingrifle_secondary_animtime"), W_CampingRifle_CheckReloadAndReady); + self.campingrifle_accumulator += cvar("g_balance_campingrifle_secondary_burstcost"); } } } @@ -213,7 +224,7 @@ float w_campingrifle(float req) } else if (req == WR_RELOAD) { - W_Campingrifle_Reload(); + W_CampingRifle_Reload(); } return TRUE; }; diff --git a/data/weapons.cfg b/data/weapons.cfg index 69850025a..ee2ad454f 100644 --- a/data/weapons.cfg +++ b/data/weapons.cfg @@ -3,7 +3,7 @@ // // And... don't forget to edit weaponsHavoc.cfg too. -set cvar_check_weapons bc8154746bdc33b6ff517c0e19fa91e0 +set cvar_check_weapons 5278169134188aeb084c58d3ed3ed289 // NOTE: this only replaces weapons on the map // use g_start_weapon_* to also replace the on-startup weapons! @@ -340,21 +340,23 @@ set g_balance_hlac_secondary_animtime 0.3 set g_balance_hlac_secondary_ammo 10 set g_balance_hlac_secondary_shots 5 -set g_balance_campingrifle_magazinecapacity 8 +set g_balance_campingrifle_magazinecapacity 0 set g_balance_campingrifle_reloadtime 2 // matches reload anim set g_balance_campingrifle_auto_reload_after_changing_weapons 0 +set g_balance_campingrifle_bursttime 0.85 // 0.35 - 0.1 + 0.35 - 0.1 + 0.35 = three secondaries set g_balance_campingrifle_primary_damage 50 -set g_balance_campingrifle_primary_headshotaddeddamage 100 +set g_balance_campingrifle_primary_headshotaddeddamage 50 set g_balance_campingrifle_primary_spread 0 set g_balance_campingrifle_primary_force 2 set g_balance_campingrifle_primary_speed 35000 set g_balance_campingrifle_primary_lifetime 5 set g_balance_campingrifle_primary_refire 0.7 set g_balance_campingrifle_primary_animtime 0.3 -set g_balance_campingrifle_primary_ammo 5 +set g_balance_campingrifle_primary_ammo 15 set g_balance_campingrifle_primary_bulletconstant 130 // 56.3qu +set g_balance_campingrifle_primary_burstcost 0.35 // require same cooldown as secondary, note it's smaller than primary refire time set g_balance_campingrifle_secondary_damage 15 -set g_balance_campingrifle_secondary_headshotaddeddamage 15 // 50 damage only on head +set g_balance_campingrifle_secondary_headshotaddeddamage 25 set g_balance_campingrifle_secondary_spread 0.02 set g_balance_campingrifle_secondary_force 1 set g_balance_campingrifle_secondary_speed 20000 @@ -363,6 +365,7 @@ set g_balance_campingrifle_secondary_refire 0.1 set g_balance_campingrifle_secondary_animtime 0.1 set g_balance_campingrifle_secondary_ammo 5 set g_balance_campingrifle_secondary_bulletconstant 130 // 18.3qu +set g_balance_campingrifle_secondary_burstcost 0.35 set g_balance_tuba_refire 0.25 set g_balance_tuba_animtime 0.25 diff --git a/data/weapons25.cfg b/data/weapons25.cfg index ab9ce205d..7bf8ce0b4 100644 --- a/data/weapons25.cfg +++ b/data/weapons25.cfg @@ -3,7 +3,7 @@ // // And... don't forget to edit weaponsHavoc.cfg too. -set cvar_check_weapons bc8154746bdc33b6ff517c0e19fa91e0 +set cvar_check_weapons 5278169134188aeb084c58d3ed3ed289 // NOTE: this only replaces weapons on the map // use g_start_weapon_* to also replace the on-startup weapons! @@ -343,6 +343,7 @@ set g_balance_hlac_secondary_shots 6 set g_balance_campingrifle_magazinecapacity 8 set g_balance_campingrifle_reloadtime 2 // matches reload anim set g_balance_campingrifle_auto_reload_after_changing_weapons 0 +set g_balance_campingrifle_bursttime 0 set g_balance_campingrifle_primary_damage 60 set g_balance_campingrifle_primary_headshotaddeddamage 100 set g_balance_campingrifle_primary_spread 0 @@ -353,6 +354,7 @@ set g_balance_campingrifle_primary_refire 0.7 set g_balance_campingrifle_primary_animtime 0.3 set g_balance_campingrifle_primary_ammo 10 set g_balance_campingrifle_primary_bulletconstant 130 // 56.3qu +set g_balance_campingrifle_primary_burstcost 0 set g_balance_campingrifle_secondary_damage 35 set g_balance_campingrifle_secondary_headshotaddeddamage 15 // 50 damage only on head set g_balance_campingrifle_secondary_spread 0.008 @@ -363,6 +365,7 @@ set g_balance_campingrifle_secondary_refire 0.12 set g_balance_campingrifle_secondary_animtime 0.1 set g_balance_campingrifle_secondary_ammo 10 set g_balance_campingrifle_secondary_bulletconstant 130 // 18.3qu +set g_balance_campingrifle_secondary_burstcost 0 set g_balance_tuba_refire 0.25 set g_balance_tuba_animtime 0.25 diff --git a/data/weaponsHavoc.cfg b/data/weaponsHavoc.cfg index 2a22f7038..cb645eb43 100644 --- a/data/weaponsHavoc.cfg +++ b/data/weaponsHavoc.cfg @@ -1,4 +1,4 @@ -set cvar_check_weapons bc8154746bdc33b6ff517c0e19fa91e0 +set cvar_check_weapons 5278169134188aeb084c58d3ed3ed289 // NOTE: this only replaces weapons on the map // use g_start_weapon_* to also replace the on-startup weapons! @@ -335,21 +335,23 @@ set g_balance_hlac_secondary_animtime 0.3 set g_balance_hlac_secondary_ammo 10 set g_balance_hlac_secondary_shots 5 -set g_balance_campingrifle_magazinecapacity 8 +set g_balance_campingrifle_magazinecapacity 0 set g_balance_campingrifle_reloadtime 2 // matches reload anim set g_balance_campingrifle_auto_reload_after_changing_weapons 0 +set g_balance_campingrifle_bursttime 0.85 // 0.35 - 0.1 + 0.35 - 0.1 + 0.35 = three secondaries set g_balance_campingrifle_primary_damage 50 -set g_balance_campingrifle_primary_headshotaddeddamage 100 +set g_balance_campingrifle_primary_headshotaddeddamage 50 set g_balance_campingrifle_primary_spread 0 set g_balance_campingrifle_primary_force 2 set g_balance_campingrifle_primary_speed 35000 set g_balance_campingrifle_primary_lifetime 5 set g_balance_campingrifle_primary_refire 0.7 set g_balance_campingrifle_primary_animtime 0.3 -set g_balance_campingrifle_primary_ammo 5 +set g_balance_campingrifle_primary_ammo 15 set g_balance_campingrifle_primary_bulletconstant 130 // 56.3qu +set g_balance_campingrifle_primary_burstcost 0.35 // require same cooldown as secondary, note it's smaller than primary refire time set g_balance_campingrifle_secondary_damage 15 -set g_balance_campingrifle_secondary_headshotaddeddamage 15 // 50 damage only on head +set g_balance_campingrifle_secondary_headshotaddeddamage 25 set g_balance_campingrifle_secondary_spread 0.02 set g_balance_campingrifle_secondary_force 1 set g_balance_campingrifle_secondary_speed 20000 @@ -358,6 +360,7 @@ set g_balance_campingrifle_secondary_refire 0.1 set g_balance_campingrifle_secondary_animtime 0.1 set g_balance_campingrifle_secondary_ammo 5 set g_balance_campingrifle_secondary_bulletconstant 130 // 18.3qu +set g_balance_campingrifle_secondary_burstcost 0.35 set g_balance_tuba_refire 0.25 set g_balance_tuba_animtime 0.25 -- 2.39.2