]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Partial fix for players getting crushed when they exit gunner slot of bumblebee
authorMario <zacjardine@y7mail.com>
Tue, 24 Feb 2015 09:31:05 +0000 (20:31 +1100)
committerMario <zacjardine@y7mail.com>
Tue, 24 Feb 2015 09:31:05 +0000 (20:31 +1100)
qcsrc/common/vehicles/sv_vehicles.qc
qcsrc/common/vehicles/unit/bumblebee.qc

index 557daaca484f2787224bf5454f98e513d8ca2b4b..ecc9066398394a7e77ebe5dcbe811ab9df1f3249 100644 (file)
@@ -847,6 +847,7 @@ void vehicles_exit(float eject)
                _player.switchweapon    = _vehicle.switchweapon;
                _player.last_vehiclecheck = time + 3;
                _player.vehicle_enter_delay = time + 2;
+               _player.spawnshieldtime = time + 0.5; // protect them long enough to escape the deadly vehicle
 
                CSQCVehicleSetup(_player, HUD_NORMAL);
        }
@@ -903,7 +904,7 @@ void vehicles_touch()
                if((self.origin_z + self.maxs_z) > (other.origin_z))
                if(vehicles_crushable(other))
                {
-                       if(vlen(self.velocity) != 0)
+                       if(vlen(self.velocity) >= 30)
                                Damage(other, self, self.owner, autocvar_g_vehicles_crush_dmg, DEATH_VH_CRUSH, '0 0 0', normalize(other.origin - self.origin) * autocvar_g_vehicles_crush_force);
 
                        return; // Dont do selfdamage when hitting "soft targets".
index ef02d6b839b51abe3503f83856a1de111bc01242..598fcd7a7d18e452eb469138db802cbeb832b3f0 100644 (file)
@@ -268,6 +268,7 @@ void bumblebee_gunner_exit(int _exitflag)
        player.teleportable       = TELEPORT_NORMAL;
        player.switchweapon   = gunner.switchweapon;
        player.vehicle_enter_delay = time + 2;
+       player.spawnshieldtime = time + 0.5;
 
        fixedmakevectors(vehic.angles);
 
@@ -275,9 +276,10 @@ void bumblebee_gunner_exit(int _exitflag)
        if(player == vehic.gunner2) { vehic.gunner2 = world; v_right *= -1; }
 
        vector spot = real_origin(gunner);
-       spot += v_up * 128 + v_forward * 300 + v_right * 150;
-       spot = vehicles_findgoodexit(spot);
-       //setorigin(player, spot);
+       spot = spot + v_up * 128 + v_forward * 300 + v_right * 150;
+       spot = bumblebee_gunner_findgoodexit(spot, gunner, player);
+
+       // TODO: figure a way to move player out of the gunner
 
        player.velocity = 0.75 * vehic.velocity + normalize(spot - vehic.origin) * 200;
        player.velocity_z += 10;