]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
With noclip enabled don't toss the corpse, it can get stuck in solid (causing low...
authorterencehill <piuntn@gmail.com>
Wed, 8 Jul 2020 16:37:40 +0000 (18:37 +0200)
committerterencehill <piuntn@gmail.com>
Wed, 8 Jul 2020 16:37:40 +0000 (18:37 +0200)
qcsrc/server/g_damage.qc
qcsrc/server/player.qc

index 48aa78bcfba7ee17974aeb71a8f2ebb0c882653a..b7935a8cb1fc37d08831d137ccd3c819525b34aa 100644 (file)
@@ -842,7 +842,7 @@ void Damage(entity targ, entity inflictor, entity attacker, float damage, int de
                        farcent.nextthink = time + 0.1;
                        setthink(farcent, SUB_Remove);
                }
-               else
+               else if(targ.move_movetype != MOVETYPE_NOCLIP)
                {
                        targ.velocity = targ.velocity + farce;
                }
index e5a8f47f90f859908e0ba951776cbd71a3bbf854..1333b2386d81e59d4673858b5f1cac89a81bbc8c 100644 (file)
@@ -615,8 +615,17 @@ void PlayerDamage(entity this, entity inflictor, entity attacker, float damage,
                this.avelocity = '0 0 0';
                // view from the floor
                this.view_ofs = '0 0 -8';
-               // toss the corpse
-               set_movetype(this, MOVETYPE_TOSS);
+               if(this.move_movetype == MOVETYPE_NOCLIP)
+               {
+                       // don't toss the corpse in this case, it can get stuck in solid (causing low fps)
+                       // or fall indefinitely into the void if out of the map
+                       this.velocity = '0 0 0';
+               }
+               else
+               {
+                       // toss the corpse
+                       set_movetype(this, MOVETYPE_TOSS);
+               }
                // shootable corpse
                this.solid = SOLID_CORPSE;
                PS(this).ballistics_density = autocvar_g_ballistics_density_corpse;