]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into Mario/crouch
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

index 14981df2e24364dbea70652159a981fc0ae483ca,351725bc14698fe92da40c5aa533947e5a7e0381..1b80655026dcf4b2fdc00a7cf79b4bd5e628d7ed
@@@ -98,51 -98,42 +98,51 @@@ float GeomLerp(float a, float _lerp, fl
  
  void PM_ClientMovement_UpdateStatus(entity this)
  {
 -#ifdef CSQC
        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;
diff --combined qcsrc/server/client.qc
index f87a5b7657b405170afc8cdc06b3150bdaecba7c,7a4f82fc5b2c33d317204992b5973e987dc9181d..918f38b2d6d8c931730dc59431b0d4abfa024410
@@@ -308,6 -308,9 +308,9 @@@ void PutObserverInServer(entity this
        if(this.bot_attack)
                IL_REMOVE(g_bot_targets, this);
        this.bot_attack = false;
+       if(this.monster_attack)
+               IL_REMOVE(g_monster_targets, this);
+       this.monster_attack = false;
      STAT(HUD, this) = HUD_NORMAL;
        TRANSMUTE(Observer, this);
        this.iscreature = false;
        this.strength_finished = 0;
        this.invincible_finished = 0;
        this.superweapons_finished = 0;
+       this.dphitcontentsmask = 0;
        this.pushltime = 0;
        this.istypefrag = 0;
        setthink(this, func_null);
@@@ -1094,6 -1098,8 +1098,8 @@@ void FixClientCvars(entity e
        stuffcmd(e, sprintf("\ncl_jumpspeedcap_min \"%s\"\n", autocvar_sv_jumpspeedcap_min));
        stuffcmd(e, sprintf("\ncl_jumpspeedcap_max \"%s\"\n", autocvar_sv_jumpspeedcap_max));
  
+       stuffcmd(e, sprintf("\ncl_shootfromfixedorigin \"%s\"\n", autocvar_g_shootfromfixedorigin));
        MUTATOR_CALLHOOK(FixClientCvars, e);
  }
  
@@@ -2144,6 -2150,7 +2150,7 @@@ bool joinAllowed(entity this
  }
  
  .int items_added;
+ .string shootfromfixedorigin;
  bool PlayerThink(entity this)
  {
        if (game_stopped || intermission_running) {
                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)
        {
@@@ -2788,3 -2837,10 +2800,10 @@@ void PM_UpdateButtons(entity this, enti
        store.v_angle = this.v_angle;
        store.movement = this.movement;
  }
+ NET_HANDLE(fpsreport, bool)
+ {
+       int fps = ReadShort();
+       PlayerScore_Set(sender, SP_FPS, fps);
+       return true;
+ }