X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fw_hagar.qc;h=147613afb304f1774c564934a9769e7f0eb563cb;hb=23239f55697a9b18884b9857313c758dc95f4372;hp=26d2df69e89507ac3bc7bb8f10690ee96703884f;hpb=8336dd123d142283c8e6199589d64c53fcde8388;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/w_hagar.qc b/qcsrc/server/w_hagar.qc index 26d2df69e..147613afb 100644 --- a/qcsrc/server/w_hagar.qc +++ b/qcsrc/server/w_hagar.qc @@ -118,7 +118,7 @@ void W_Hagar_Attack2_Load_Release (void) // time to release the rockets we've loaded local entity missile; - local float counter, shots; + local float counter, shots, spread_pershot; local vector s; vector forward, right, up; @@ -153,7 +153,13 @@ void W_Hagar_Attack2_Load_Release (void) setorigin (missile, w_shotorg); setsize(missile, '0 0 0', '0 0 0'); missile.movetype = MOVETYPE_FLY; - + + // per-shot spread calculation: the more shots there are, the less spread is applied (based on the bias cvar) + spread_pershot = ((shots - 1) / (autocvar_g_balance_hagar_secondary_load_max - 1)); + spread_pershot = (1 - (spread_pershot * autocvar_g_balance_hagar_secondary_load_spread_bias)); + spread_pershot = (autocvar_g_balance_hagar_secondary_spread * spread_pershot * g_weaponspreadfactor); + + // pattern spread calculation s = '0 0 0'; if (counter == 0) s = '0 0 0'; @@ -163,8 +169,9 @@ void W_Hagar_Attack2_Load_Release (void) s_y = v_forward_x; s_z = v_forward_y; } - s = s * cvar("g_balance_hagar_secondary_spread") * g_weaponspreadfactor; - W_SetupProjectileVelocityEx(missile, w_shotdir + right * s_y + up * s_z, v_up, cvar("g_balance_hagar_secondary_speed"), 0, 0, 0, FALSE); + s = s * autocvar_g_balance_hagar_secondary_load_spread * g_weaponspreadfactor; + + W_SetupProjectileVelocityEx(missile, w_shotdir + right * s_y + up * s_z, v_up, autocvar_g_balance_hagar_secondary_speed, 0, 0, spread_pershot, FALSE); missile.angles = vectoangles (missile.velocity); missile.flags = FL_PROJECTILE; @@ -223,9 +230,12 @@ void W_Hagar_Attack2_Load (void) W_DecreaseAmmo(ammo_rockets, autocvar_g_balance_hagar_secondary_ammo, autocvar_g_balance_hagar_reload_ammo); self.weaponentity.state = WS_INUSE; self.hagar_load += 1; - sound(self, CH_WEAPON_B, "weapons/hagar_load.wav", VOL_BASE, ATTN_NORM); + sound(self, CH_WEAPON_B, "weapons/hagar_load.wav", VOL_BASE * 0.8, ATTN_NORM); // sound is too loud according to most - self.hagar_loadstep = time + autocvar_g_balance_hagar_secondary_load_speed * W_WeaponRateFactor(); + if (self.hagar_load >= autocvar_g_balance_hagar_secondary_load_max) + self.hagar_loadstep = time + autocvar_g_balance_hagar_secondary_load_hold * W_WeaponRateFactor(); + else + self.hagar_loadstep = time + autocvar_g_balance_hagar_secondary_load_speed * W_WeaponRateFactor(); } } else if(!self.hagar_loadbeep && self.hagar_load) // prevents the beep from playing each frame @@ -244,7 +254,7 @@ void W_Hagar_Attack2_Load (void) if(self.hagar_load) { - if(!self.BUTTON_ATCK2 || ((loaded || !enough_ammo) && self.hagar_loadstep < time && !autocvar_g_balance_hagar_secondary_load_hold)) + if(!self.BUTTON_ATCK2 || ((loaded || !enough_ammo) && self.hagar_loadstep < time && autocvar_g_balance_hagar_secondary_load_hold >= 0)) { self.weaponentity.state = WS_READY; W_Hagar_Attack2_Load_Release();