if (this.com_phys_water) {
// water jump only in certain situations
// this mimics quakeworld code
- if (this.com_in_jump && this.waterlevel == WATERLEVEL_SWIMMING && this.velocity_z >= -180 && !this.viewloc) {
+ if (this.com_in_jump && this.waterlevel == WATERLEVEL_SWIMMING && this.velocity_z >= -180 && !this.viewloc && !PHYS_FROZEN(this)) {
vector yawangles = '0 1 0' * this.v_angle.y;
vector forward, right, up;
MAKE_VECTORS(yawangles, forward, right, up);
+ right * PHYS_CS(this).movement.y
+ '0 0 1' * PHYS_CS(this).movement.z * (this.com_phys_vel_2d ? 0 : 1);
if (this.com_phys_water) {
- if (PHYS_INPUT_BUTTON_CROUCH(this)) {
- wishvel.z = -PHYS_MAXSPEED(this);
+ if (PHYS_FROZEN(this))
+ {
+ if(this.waterlevel >= WATERLEVEL_SUBMERGED)
+ wishvel = '0 0 160'; // resurface
}
- if (this.viewloc) {
- wishvel.z = -160; // drift anyway
- } else if (wishvel == '0 0 0') {
- wishvel = '0 0 -60'; // drift towards bottom
+ else
+ {
+ if (PHYS_INPUT_BUTTON_CROUCH(this)) {
+ wishvel.z = -PHYS_MAXSPEED(this);
+ }
+ if (this.viewloc) {
+ wishvel.z = -160; // drift anyway
+ } else if (wishvel == '0 0 0') {
+ wishvel = '0 0 -60'; // drift towards bottom
+ }
}
}
if (this.com_phys_ladder) {
}
// holding jump button swims upward slowly
- if (this.com_in_jump && !this.viewloc) {
+ if (this.com_in_jump && !this.viewloc && !PHYS_FROZEN(this)) {
// was:
// lava: 50
// slime: 80