Merge branch 'master' into Mario/crouch 540/head
authorMario <mario@smbclan.net>
Thu, 8 Mar 2018 05:33:47 +0000 (15:33 +1000)
committerMario <mario@smbclan.net>
Thu, 8 Mar 2018 05:33:47 +0000 (15:33 +1000)
# Conflicts:
# qcsrc/common/physics/player.qc
# qcsrc/server/client.qc

1  2 
qcsrc/common/physics/player.qc
qcsrc/server/client.qc

@@@ -101,48 -101,39 +101,48 @@@ void PM_ClientMovement_UpdateStatus(ent
        if(!IS_PLAYER(this))
                return;
  
 -      // set crouched
 -      bool do_crouch = PHYS_INPUT_BUTTON_CROUCH(this);
 +      bool have_hook = false;
        for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
        {
 -              entity wep = viewmodels[slot];
 -              if(wep.hook && !wasfreed(wep.hook))
 +      #if defined(CSQC)
 +              entity wepent = viewmodels[slot];
 +      #elif defined(SVQC)
 +              .entity weaponentity = weaponentities[slot];
 +              entity wepent = this.(weaponentity);
 +      #endif
 +              if(wepent.hook && !wasfreed(wepent.hook))
                {
 -                      do_crouch = false;
 -                      break; // don't bother checking the others
 +                      have_hook = true;
 +                      break;
                }
        }
 -      //if(this.waterlevel >= WATERLEVEL_SWIMMING)
 +      bool do_crouch = PHYS_INPUT_BUTTON_CROUCH(this);
 +      if (have_hook) {
 +              do_crouch = false;
-       } else if (this.waterlevel >= WATERLEVEL_SWIMMING) {
-               do_crouch = false;
++      //} else if (this.waterlevel >= WATERLEVEL_SWIMMING) {
+               //do_crouch = false;
 -      if(hud != HUD_NORMAL)
 +      } else if (PHYS_INVEHICLE(this)) {
                do_crouch = false;
 -      if(STAT(FROZEN, this))
 +      } else if (STAT(FROZEN, this)) {
                do_crouch = false;
 -
 -      if (do_crouch)
 -      {
 -              // wants to crouch, this always works
 -              if (!IS_DUCKED(this)) SET_DUCKED(this);
 -      }
 -      else
 -      {
 -              // wants to stand, if currently crouching we need to check for a low ceiling first
 -              if (IS_DUCKED(this))
 -              {
 -                      tracebox(this.origin, STAT(PL_MIN, this), STAT(PL_MAX, this), this.origin, MOVE_NORMAL, this);
 -                      if (!trace_startsolid) UNSET_DUCKED(this);
 +    }
 +
 +      if (do_crouch) {
 +              if (!IS_DUCKED(this)) {
 +                      SET_DUCKED(this);
 +                      this.view_ofs = STAT(PL_CROUCH_VIEW_OFS, this);
 +                      setsize(this, STAT(PL_CROUCH_MIN, this), STAT(PL_CROUCH_MAX, this));
 +                      // setanim(this, this.anim_duck, false, true, true); // this anim is BROKEN anyway
                }
 +      } else if (IS_DUCKED(this)) {
 +        tracebox(this.origin, STAT(PL_MIN, this), STAT(PL_MAX, this), this.origin, false, this);
 +        if (!trace_startsolid) {
 +            UNSET_DUCKED(this);
 +            this.view_ofs = STAT(PL_VIEW_OFS, this);
 +            setsize(this, STAT(PL_MIN, this), STAT(PL_MAX, this));
 +        }
        }
 +#ifdef CSQC
  
        if (IS_ONGROUND(this) || this.velocity.z <= 0 || PHYS_WATERJUMP_TIME(this) <= 0)
                PHYS_WATERJUMP_TIME(this) = 0;
@@@ -2239,8 -2246,50 +2246,13 @@@ bool PlayerThink(entity this
                return false;
        }
  
 -      bool have_hook = false;
 -      for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
 -      {
 -              .entity weaponentity = weaponentities[slot];
 -              if(this.(weaponentity).hook.state)
 -              {
 -                      have_hook = true;
 -                      break;
 -              }
 -      }
 -      bool do_crouch = PHYS_INPUT_BUTTON_CROUCH(this);
 -      if (have_hook) {
 -              do_crouch = false;
 -      //} else if (this.waterlevel >= WATERLEVEL_SWIMMING) {
 -              //do_crouch = false;
 -      } else if (this.vehicle) {
 -              do_crouch = false;
 -      } else if (STAT(FROZEN, this)) {
 -              do_crouch = false;
 -    }
 -
 -      if (do_crouch) {
 -              if (!this.crouch) {
 -                      this.crouch = true;
 -                      this.view_ofs = STAT(PL_CROUCH_VIEW_OFS, this);
 -                      setsize(this, STAT(PL_CROUCH_MIN, this), STAT(PL_CROUCH_MAX, this));
 -                      // setanim(this, this.anim_duck, false, true, true); // this anim is BROKEN anyway
 -              }
 -      } else if (this.crouch) {
 -        tracebox(this.origin, STAT(PL_MIN, this), STAT(PL_MAX, this), this.origin, false, this);
 -        if (!trace_startsolid) {
 -            this.crouch = false;
 -            this.view_ofs = STAT(PL_VIEW_OFS, this);
 -            setsize(this, STAT(PL_MIN, this), STAT(PL_MAX, this));
 -        }
 -      }
 -
        FixPlayermodel(this);
  
+       if (this.shootfromfixedorigin != autocvar_g_shootfromfixedorigin) {
+               this.shootfromfixedorigin = autocvar_g_shootfromfixedorigin;
+               stuffcmd(this, sprintf("\ncl_shootfromfixedorigin \"%s\"\n", autocvar_g_shootfromfixedorigin));
+       }
        // LordHavoc: allow firing on move frames (sub-ticrate), this gives better timing on slow servers
        //if(frametime)
        {