]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/sv_main.qc
Merge branch 'Mario/falldamage_vertical' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / sv_main.qc
index 6580e22f9662478d3b6b5b32f1a213a6efff1d5c..71e4156b4528f43c56f85fb93c3a53ad434cbd7d 100644 (file)
@@ -101,7 +101,6 @@ void CreatureFrame_FallDamage(entity this)
                return; // if the entity hasn't moved and isn't moving, then don't do anything
 
        // check for falling damage
-       float velocity_len = vlen(this.velocity);
        bool have_hook = false;
        for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
        {
@@ -114,7 +113,11 @@ void CreatureFrame_FallDamage(entity this)
        }
        if(!have_hook)
        {
-               float dm = vlen(this.oldvelocity) - velocity_len; // dm is now the velocity DECREASE. Velocity INCREASE should never cause a sound or any damage.
+               float dm; // dm is the velocity DECREASE. Velocity INCREASE should never cause a sound or any damage.
+               if(autocvar_g_balance_falldamage_onlyvertical)
+                       dm = fabs(this.oldvelocity.z) - fabs(this.velocity.z);
+               else
+                       dm = vlen(this.oldvelocity) - vlen(this.velocity);
                if (IS_DEAD(this))
                        dm = (dm - autocvar_g_balance_falldamage_deadminspeed) * autocvar_g_balance_falldamage_factor;
                else
@@ -127,7 +130,7 @@ void CreatureFrame_FallDamage(entity this)
                }
        }
 
-       if(autocvar_g_maxspeed > 0 && velocity_len > autocvar_g_maxspeed)
+       if(autocvar_g_maxspeed > 0 && vdist(this.velocity, >, autocvar_g_maxspeed))
                Damage (this, NULL, NULL, 100000, DEATH_SHOOTING_STAR.m_id, DMG_NOWEP, this.origin, '0 0 0');
 }