From 2987db475466d02a2b28009aad289930a56ca238 Mon Sep 17 00:00:00 2001 From: div0 Date: Sun, 8 Nov 2009 09:14:31 +0000 Subject: [PATCH] add back the falloff curve that was MEANT to be linear before :P git-svn-id: svn://svn.icculus.org/nexuiz/trunk@8239 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/balance.cfg | 1 + data/balance25.cfg | 1 + data/balanceHavoc.cfg | 1 + data/balanceNexrun.cfg | 1 + data/balanceSamual.cfg | 1 + data/qcsrc/server/cl_weaponsystem.qc | 29 +++++++++++++++++++++++++++- 6 files changed, 33 insertions(+), 1 deletion(-) diff --git a/data/balance.cfg b/data/balance.cfg index 93857ab28..7b18e9ad1 100644 --- a/data/balance.cfg +++ b/data/balance.cfg @@ -186,6 +186,7 @@ set g_projectiles_spread_style 0 // 4: forward + normal distribution on a plane // 5: forward + circle with 1-r falloff // 6: forward + circle with 1-r^2 falloff +// 7: forward + circle with (1-r)(2-r) falloff set g_balance_falldamage_deadminspeed 150 set g_balance_falldamage_minspeed 1400 set g_balance_falldamage_factor 0.15 diff --git a/data/balance25.cfg b/data/balance25.cfg index 51edf6ffc..cc350319d 100644 --- a/data/balance25.cfg +++ b/data/balance25.cfg @@ -186,6 +186,7 @@ set g_projectiles_spread_style 0 // 4: forward + normal distribution on a plane // 5: forward + circle with 1-r falloff // 6: forward + circle with 1-r^2 falloff +// 7: forward + circle with (1-r)(2-r) falloff set g_balance_falldamage_deadminspeed 150 set g_balance_falldamage_minspeed 1400 set g_balance_falldamage_factor 0.15 diff --git a/data/balanceHavoc.cfg b/data/balanceHavoc.cfg index b4cd15d72..00140740c 100644 --- a/data/balanceHavoc.cfg +++ b/data/balanceHavoc.cfg @@ -186,6 +186,7 @@ set g_projectiles_spread_style 0 // 4: forward + normal distribution on a plane // 5: forward + circle with 1-r falloff // 6: forward + circle with 1-r^2 falloff +// 7: forward + circle with (1-r)(2-r) falloff set g_balance_falldamage_deadminspeed 150 set g_balance_falldamage_minspeed 1400 set g_balance_falldamage_factor 0.15 diff --git a/data/balanceNexrun.cfg b/data/balanceNexrun.cfg index 16c3d2abe..45d4da787 100644 --- a/data/balanceNexrun.cfg +++ b/data/balanceNexrun.cfg @@ -187,6 +187,7 @@ set g_projectiles_spread_style 4 // 4: forward + normal distribution on a plane // 5: forward + circle with 1-r falloff // 6: forward + circle with 1-r^2 falloff +// 7: forward + circle with (1-r)(2-r) falloff set g_balance_falldamage_deadminspeed 150 set g_balance_falldamage_minspeed 675 set g_balance_falldamage_factor 0.25 diff --git a/data/balanceSamual.cfg b/data/balanceSamual.cfg index 8827f55ba..2fd0bcdfc 100644 --- a/data/balanceSamual.cfg +++ b/data/balanceSamual.cfg @@ -187,6 +187,7 @@ set g_projectiles_spread_style 0 // 4: forward + normal distribution on a plane // 5: forward + circle with 1-r falloff // 6: forward + circle with 1-r^2 falloff +// 7: forward + circle with (1-r)(2-r) falloff set g_balance_falldamage_deadminspeed 150 set g_balance_falldamage_minspeed 1400 set g_balance_falldamage_factor 0.15 diff --git a/data/qcsrc/server/cl_weaponsystem.qc b/data/qcsrc/server/cl_weaponsystem.qc index 67a982373..761d78b83 100644 --- a/data/qcsrc/server/cl_weaponsystem.qc +++ b/data/qcsrc/server/cl_weaponsystem.qc @@ -1416,9 +1416,36 @@ vector W_CalculateProjectileSpread(vector forward, float spread) r = sqrt(1 - r); return normalize(forward + (v1 * dx + v2 * dy) * r * sigma); } + else if(sstyle == 7) // (1-r) (2-r) + { + sigma = spread * 1.224744871391589; // match baseline stddev + v1 = findperpendicular(forward); + v2 = cross(forward, v1); + // random point on unit circle + dx = random() * 2 * M_PI; + dy = sin(dx); + dx = cos(dx); + // radius in our dist function + r = random(); + r = 1 - sqrt(r); + r = 1 - sqrt(r); + return normalize(forward + (v1 * dx + v2 * dy) * r * sigma); + } else - error("g_projectiles_spread_style must be 0 (sphere), 1 (flattened sphere), 2 (circle), 3 (gauss 3D), 4 (gauss plane), 5 (linear falloff), 6 (quadratic falloff)!"); + error("g_projectiles_spread_style must be 0 (sphere), 1 (flattened sphere), 2 (circle), 3 (gauss 3D), 4 (gauss plane), 5 (linear falloff), 6 (quadratic falloff), 7 (stronger falloff)!"); return '0 0 0'; + /* + * how to derive falloff functions: + * rho(r) := (2-r) * (1-r); + * a : 0; + * b : 1; + * rhor(r) := r * rho(r); + * cr(t) := integrate(rhor(r), r, a, t); + * scr(t) := integrate(rhor(r) * r^2, r, a, t); + * variance : scr(b) / cr(b); + * solve(cr(r) = rand * cr(b), r), programmmode:false; + * sqrt(0.4 / variance), numer; + */ } void W_SetupProjectileVelocityEx(entity missile, vector dir, vector upDir, float pSpeed, float pUpSpeed, float spread) -- 2.39.2