From: unknown Date: Thu, 11 Nov 2010 22:12:00 +0000 (+0100) Subject: Merge remote branch 'origin/master' into tzork/balance-tzork X-Git-Tag: xonotic-v0.1.0preview~153^2~2^2~2 X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=50fae2ffe748fce0c54b20ef168a702f9607b8db;hp=e3449b33968c2562dcb06287b4a06562de8dcb67 Merge remote branch 'origin/master' into tzork/balance-tzork Conflicts: balancetZork.cfg --- diff --git a/balance25.cfg b/balance25.cfg index 1427df5d7..8569fc85c 100644 --- a/balance25.cfg +++ b/balance25.cfg @@ -407,6 +407,8 @@ set g_balance_crylink_primary_animtime 0.3 set g_balance_crylink_primary_ammo 2 set g_balance_crylink_primary_bouncedamagefactor 0.5 set g_balance_crylink_primary_joinspeed 0 +set g_balance_crylink_primary_jointime 0 +set g_balance_crylink_primary_linkexplode 1 set g_balance_crylink_primary_middle_lifetime 5 // range: 35000 full, fades to 70000 set g_balance_crylink_primary_middle_fadetime 5 @@ -427,6 +429,8 @@ set g_balance_crylink_secondary_animtime 0.3 set g_balance_crylink_secondary_ammo 2 set g_balance_crylink_secondary_bouncedamagefactor 0.5 set g_balance_crylink_secondary_joinspeed 0 +set g_balance_crylink_secondary_jointime 0 +set g_balance_crylink_secondary_linkexplode 1 set g_balance_crylink_secondary_middle_lifetime 5 // range: 35000 full, fades to 70000 set g_balance_crylink_secondary_middle_fadetime 5 diff --git a/balanceLeeStricklin.cfg b/balanceLeeStricklin.cfg index 4317a9da6..144843191 100644 --- a/balanceLeeStricklin.cfg +++ b/balanceLeeStricklin.cfg @@ -418,6 +418,8 @@ set g_balance_crylink_primary_animtime 0.30008 set g_balance_crylink_primary_ammo 3 set g_balance_crylink_primary_bouncedamagefactor 0.2 set g_balance_crylink_primary_joinspeed 0 +set g_balance_crylink_primary_jointime 0 +set g_balance_crylink_primary_linkexplode 1 set g_balance_crylink_primary_middle_lifetime 5 // range: 10000 full, fades to 20000 set g_balance_crylink_primary_middle_fadetime 5 @@ -438,6 +440,8 @@ set g_balance_crylink_secondary_animtime 0.3 set g_balance_crylink_secondary_ammo 3 set g_balance_crylink_secondary_bouncedamagefactor 0.5 set g_balance_crylink_secondary_joinspeed 0 +set g_balance_crylink_secondary_jointime 0 +set g_balance_crylink_secondary_linkexplode 1 set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to 10000 set g_balance_crylink_secondary_middle_fadetime 5 diff --git a/balanceNexSVN.cfg b/balanceNexSVN.cfg index f3b149572..59c506c6a 100644 --- a/balanceNexSVN.cfg +++ b/balanceNexSVN.cfg @@ -406,6 +406,8 @@ set g_balance_crylink_primary_animtime 0.3 set g_balance_crylink_primary_ammo 2 set g_balance_crylink_primary_bouncedamagefactor 0.5 set g_balance_crylink_primary_joinspeed 0 +set g_balance_crylink_primary_jointime 0 +set g_balance_crylink_primary_linkexplode 1 set g_balance_crylink_primary_middle_lifetime 5 // range: 35000 full, fades to 70000 set g_balance_crylink_primary_middle_fadetime 5 @@ -426,6 +428,8 @@ set g_balance_crylink_secondary_animtime 0.3 set g_balance_crylink_secondary_ammo 2 set g_balance_crylink_secondary_bouncedamagefactor 0.5 set g_balance_crylink_secondary_joinspeed 0 +set g_balance_crylink_secondary_jointime 0 +set g_balance_crylink_secondary_linkexplode 1 set g_balance_crylink_secondary_middle_lifetime 5 // range: 35000 full, fades to 70000 set g_balance_crylink_secondary_middle_fadetime 5 diff --git a/balanceSamual.cfg b/balanceSamual.cfg index 6e105fb99..555c231d5 100644 --- a/balanceSamual.cfg +++ b/balanceSamual.cfg @@ -407,6 +407,8 @@ set g_balance_crylink_primary_animtime 0.3 set g_balance_crylink_primary_ammo 2 set g_balance_crylink_primary_bouncedamagefactor 0.5 set g_balance_crylink_primary_joinspeed 0 +set g_balance_crylink_primary_jointime 0 +set g_balance_crylink_primary_linkexplode 1 set g_balance_crylink_primary_middle_lifetime 5 // range: 35000 full, fades to 70000 set g_balance_crylink_primary_middle_fadetime 5 @@ -427,6 +429,8 @@ set g_balance_crylink_secondary_animtime 0.1 set g_balance_crylink_secondary_ammo 2 set g_balance_crylink_secondary_bouncedamagefactor 0.5 set g_balance_crylink_secondary_joinspeed 0 +set g_balance_crylink_secondary_jointime 0 +set g_balance_crylink_secondary_linkexplode 1 set g_balance_crylink_secondary_middle_lifetime 5 // range: 35000 full, fades to 70000 set g_balance_crylink_secondary_middle_fadetime 5 diff --git a/balanceTest.cfg b/balanceTest.cfg index dfae96042..8abc27fe8 100644 --- a/balanceTest.cfg +++ b/balanceTest.cfg @@ -406,7 +406,9 @@ set g_balance_crylink_primary_refire 1 set g_balance_crylink_primary_animtime 0.4 set g_balance_crylink_primary_ammo 2 set g_balance_crylink_primary_bouncedamagefactor 0.2 -set g_balance_crylink_primary_joinspeed 150 +set g_balance_crylink_primary_joinspeed 250 +set g_balance_crylink_primary_jointime 0 +set g_balance_crylink_primary_linkexplode 0 set g_balance_crylink_primary_middle_lifetime 5 // range: 10000 full, fades to 20000 set g_balance_crylink_primary_middle_fadetime 5 @@ -426,7 +428,9 @@ set g_balance_crylink_secondary_refire 0.15 set g_balance_crylink_secondary_animtime 0.15 set g_balance_crylink_secondary_ammo 1 set g_balance_crylink_secondary_bouncedamagefactor 0.5 -set g_balance_crylink_secondary_joinspeed 150 +set g_balance_crylink_secondary_joinspeed 250 +set g_balance_crylink_secondary_jointime 0 +set g_balance_crylink_secondary_linkexplode 0 set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to 10000 set g_balance_crylink_secondary_middle_fadetime 5 diff --git a/balanceXonotic.cfg b/balanceXonotic.cfg index 8c4ad5529..eb72b126d 100644 --- a/balanceXonotic.cfg +++ b/balanceXonotic.cfg @@ -406,7 +406,9 @@ set g_balance_crylink_primary_refire 0.8 set g_balance_crylink_primary_animtime 0.4 set g_balance_crylink_primary_ammo 2 set g_balance_crylink_primary_bouncedamagefactor 0.2 -set g_balance_crylink_primary_joinspeed 150 +set g_balance_crylink_primary_joinspeed 250 +set g_balance_crylink_primary_jointime 0 +set g_balance_crylink_primary_linkexplode 0 set g_balance_crylink_primary_middle_lifetime 5 // range: 10000 full, fades to 20000 set g_balance_crylink_primary_middle_fadetime 5 @@ -427,6 +429,8 @@ set g_balance_crylink_secondary_animtime 0.15 set g_balance_crylink_secondary_ammo 1 set g_balance_crylink_secondary_bouncedamagefactor 0.5 set g_balance_crylink_secondary_joinspeed 0 +set g_balance_crylink_secondary_jointime 0 +set g_balance_crylink_secondary_linkexplode 1 set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to 10000 set g_balance_crylink_secondary_middle_fadetime 5 diff --git a/balancetZork.cfg b/balancetZork.cfg index 0386e1dd5..4de12ee5c 100644 --- a/balancetZork.cfg +++ b/balancetZork.cfg @@ -428,8 +428,9 @@ set g_balance_crylink_primary_refire 1 set g_balance_crylink_primary_animtime 0.4 set g_balance_crylink_primary_ammo 2 set g_balance_crylink_primary_bouncedamagefactor 0.2 -set g_balance_crylink_primary_joinspeed 2000 -set g_balance_crylink_primary_joinboost 2 +set g_balance_crylink_primary_joinspeed 0 +set g_balance_crylink_primary_jointime 0 +set g_balance_crylink_secondary_linkexplode 1 set g_balance_crylink_primary_middle_lifetime 5 set g_balance_crylink_primary_middle_fadetime 5 @@ -450,7 +451,9 @@ set g_balance_crylink_secondary_refire 0.15 set g_balance_crylink_secondary_animtime 0.15 set g_balance_crylink_secondary_ammo 1 set g_balance_crylink_secondary_bouncedamagefactor 0.5 -set g_balance_crylink_secondary_joinspeed 1000 +set g_balance_crylink_secondary_joinspeed 0 +set g_balance_crylink_secondary_jointime 0 +set g_balance_crylink_primary_linkexplode 1 set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to 10000 set g_balance_crylink_secondary_middle_fadetime 5 diff --git a/qcsrc/server/w_crylink.qc b/qcsrc/server/w_crylink.qc index f3d9a6cbf..592582749 100644 --- a/qcsrc/server/w_crylink.qc +++ b/qcsrc/server/w_crylink.qc @@ -44,8 +44,10 @@ void W_Crylink_LinkExplode (entity e, entity e2) // stored in w_crylink_linkjoin_time. // could possibly network this origin and time, and display a special particle // effect when projectiles meet there :P +// jspeed: MINIMUM jing speed +// jtime: MAXIMUM jing time (0: none) float w_crylink_linkjoin_time; -vector W_Crylink_LinkJoin(entity e, float joinspeed) +vector W_Crylink_LinkJoin(entity e, float jspeed, float jtime) { vector avg_origin, avg_velocity; vector targ_origin; @@ -59,8 +61,8 @@ vector W_Crylink_LinkJoin(entity e, float joinspeed) n = 1; for(p = e; (p = p.queuenext) != e; ) { - avg_origin += p.origin; - avg_velocity += p.velocity; + avg_origin += WarpZone_RefSys_TransformOrigin(p, e, p.origin); + avg_velocity += WarpZone_RefSys_TransformVelocity(p, e, p.velocity); ++n; } avg_origin *= (1.0 / n); @@ -72,46 +74,54 @@ vector W_Crylink_LinkJoin(entity e, float joinspeed) // yes, mathematically we can do this in ONE step, but beware of 32bit floats... avg_dist = pow(vlen(e.origin - avg_origin), 2); for(p = e; (p = p.queuenext) != e; ) - avg_dist += pow(vlen(e.origin - avg_origin), 2); + avg_dist += pow(vlen(WarpZone_RefSys_TransformOrigin(p, e, p.origin) - avg_origin), 2); avg_dist *= (1.0 / n); avg_dist = sqrt(avg_dist); if(avg_dist == 0) return avg_origin; // no change needed - if(joinspeed == 0) + if(jspeed == 0 && jtime == 0) { e.velocity = avg_velocity; UpdateCSQCProjectile(e); for(p = e; (p = p.queuenext) != e; ) { - p.velocity = avg_velocity; + p.velocity = WarpZone_RefSys_TransformVelocity(e, p, avg_velocity); UpdateCSQCProjectile(p); } } else { - w_crylink_linkjoin_time = avg_dist / joinspeed; + if(jtime) + { + if(jspeed) + w_crylink_linkjoin_time = min(jtime, avg_dist / jspeed); + else + w_crylink_linkjoin_time = jtime; + } + else + w_crylink_linkjoin_time = avg_dist / jspeed; targ_origin = avg_origin + w_crylink_linkjoin_time * avg_velocity; - e.velocity = (targ_origin - e.origin) * (joinspeed / avg_dist); + e.velocity = (targ_origin - e.origin) * (1.0 / w_crylink_linkjoin_time); UpdateCSQCProjectile(e); for(p = e; (p = p.queuenext) != e; ) { - p.velocity = (targ_origin - p.origin) * (joinspeed / avg_dist); + p.velocity = WarpZone_RefSys_TransformVelocity(e, p, (targ_origin - WarpZone_RefSys_TransformOrigin(p, e, p.origin)) * (1.0 / w_crylink_linkjoin_time)); UpdateCSQCProjectile(p); } // analysis: - // joinspeed -> +infinity: + // jspeed -> +infinity: // w_crylink_linkjoin_time -> +0 // targ_origin -> avg_origin // p->velocity -> HUEG towards center - // joinspeed -> 0: + // jspeed -> 0: // w_crylink_linkjoin_time -> +/- infinity // targ_origin -> avg_velocity * +/- infinity // p->velocity -> avg_velocity - // joinspeed -> -infinity: + // jspeed -> -infinity: // w_crylink_linkjoin_time -> -0 // targ_origin -> avg_origin // p->velocity -> HUEG away from center @@ -173,7 +183,7 @@ void W_Crylink_Touch (void) f = cvar("g_balance_crylink_primary_bouncedamagefactor"); if(a) f *= a; - if (RadiusDamage (self, self.realowner, cvar("g_balance_crylink_primary_damage") * f, cvar("g_balance_crylink_primary_edgedamage") * f, cvar("g_balance_crylink_primary_radius"), world, cvar("g_balance_crylink_primary_force") * f, self.projectiledeathtype, other)) + if (RadiusDamage (self, self.realowner, cvar("g_balance_crylink_primary_damage") * f, cvar("g_balance_crylink_primary_edgedamage") * f, cvar("g_balance_crylink_primary_radius"), world, cvar("g_balance_crylink_primary_force") * f, self.projectiledeathtype, other) && cvar("g_balance_crylink_primary_linkexplode")) { W_Crylink_LinkExplode(self.queuenext, self); remove (self); @@ -221,7 +231,7 @@ void W_Crylink_Touch2 (void) f = cvar("g_balance_crylink_secondary_bouncedamagefactor"); if(a) f *= a; - if (RadiusDamage (self, self.realowner, cvar("g_balance_crylink_secondary_damage") * f, cvar("g_balance_crylink_secondary_edgedamage") * f, cvar("g_balance_crylink_secondary_radius"), world, cvar("g_balance_crylink_secondary_force") * f, self.projectiledeathtype, other)) + if (RadiusDamage (self, self.realowner, cvar("g_balance_crylink_secondary_damage") * f, cvar("g_balance_crylink_secondary_edgedamage") * f, cvar("g_balance_crylink_secondary_radius"), world, cvar("g_balance_crylink_secondary_force") * f, self.projectiledeathtype, other) && cvar("g_balance_crylink_secondary_linkexplode")) { W_Crylink_LinkExplode(self.queuenext, self); remove (self); @@ -443,7 +453,7 @@ float w_crylink(float req) { W_Crylink_Attack(); weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_crylink_primary_animtime"), w_ready); - if(cvar("g_balance_crylink_primary_joinspeed") != 0) + if(cvar("g_balance_crylink_primary_joinspeed") != 0 || cvar("g_balance_crylink_primary_jointime") != 0) self.crylink_waitrelease = 1; } } @@ -454,7 +464,7 @@ float w_crylink(float req) { W_Crylink_Attack2(); weapon_thinkf(WFRAME_FIRE2, cvar("g_balance_crylink_secondary_animtime"), w_ready); - if(cvar("g_balance_crylink_secondary_joinspeed") != 0) + if(cvar("g_balance_crylink_secondary_joinspeed") != 0 || cvar("g_balance_crylink_secondary_jointime") != 0) self.crylink_waitrelease = 2; } } @@ -468,11 +478,11 @@ float w_crylink(float req) vector pos; if(self.crylink_waitrelease == 1) { - pos = W_Crylink_LinkJoin(self.crylink_lastgroup, cvar("g_balance_crylink_primary_joinspeed")); + pos = W_Crylink_LinkJoin(self.crylink_lastgroup, cvar("g_balance_crylink_primary_joinspeed"), cvar("g_balance_crylink_primary_jointime")); } else { - pos = W_Crylink_LinkJoin(self.crylink_lastgroup, cvar("g_balance_crylink_secondary_joinspeed")); + pos = W_Crylink_LinkJoin(self.crylink_lastgroup, cvar("g_balance_crylink_secondary_joinspeed"), cvar("g_balance_crylink_secondary_jointime")); } entity linkjoineffect; @@ -562,4 +572,4 @@ float w_crylink(float req) return TRUE; } #endif -#endif \ No newline at end of file +#endif