X-Git-Url: https://de.git.xonotic.org/?p=voretournament%2Fvoretournament.git;a=blobdiff_plain;f=data%2Fqcsrc%2Fserver%2Fcl_client.qc;h=c26a5530cbeb73f436dee938ef2fc799e28accef;hp=2bbc265bc4d591e7d0fee36d540cc66eee29e7cc;hb=08643f840d0ed0cca03e5810c0af02d28972ca08;hpb=8285ca603f72377a7f72cc26d07188efe3158023 diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index 2bbc265b..c26a5530 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -522,20 +522,14 @@ float Client_customizeentityforclient() if not(other.cvar_chase_active || other.classname == "observer") // the observer check prevents a bug if(other.predator == self || other.fakepredator == self) { - if(self.model != stomachmodel) // don't execute each frame - { - Client_setmodel(stomachmodel); - self.alpha = other.cvar_cl_vore_stomachmodel; - } + Client_setmodel(stomachmodel); + self.alpha = other.cvar_cl_vore_stomachmodel; return TRUE; } - if(self.model != setmodel_state()) // don't execute each frame - { - Client_setmodel(setmodel_state()); - if not(self.predator.classname == "player" || self.fakeprey) - self.alpha = default_player_alpha; - } + Client_setmodel(setmodel_state()); + if not(self.predator.classname == "player" || self.fakeprey) + self.alpha = default_player_alpha; return TRUE; } @@ -2252,6 +2246,37 @@ float vercmp(string v1, string v2) return vercmp_recursive(v1, v2); } +void ApplyHealthSize() +{ + if not(cvar("g_healthsize")) + return; + + if(self.predator.classname == "player" || self.fakeprey) + { + self.view_ofs = PL_CROUCH_VIEW_OFS * self.predator.scale; + self.scale = 0; + } + else + { + self.scale = bound(cvar("g_healthsize_min"), self.health, cvar("g_healthsize_max")) / cvar("g_healthsize"); + + // The following code sets the bounding box to match the player's size. + // It is currently disabled because of issues with engine movement prediction (cl_movement). + // The engine expects the bounding box to be default size, and changing it will cause glitches. + // This code may be enabled once the engine has the ability to use different bbox sizes for movement prediction. + if(self.crouch) + { + //setsize (self, PL_CROUCH_MIN * self.scale, PL_CROUCH_MAX * self.scale); + self.view_ofs = PL_CROUCH_VIEW_OFS * self.scale; + } + else + { + //setsize (self, PL_MIN * self.scale, PL_MAX * self.scale); + self.view_ofs = PL_VIEW_OFS * self.scale; + } + } +} + void ObserverThink() { if (self.flags & FL_JUMPRELEASED) { @@ -2574,6 +2599,9 @@ void PlayerPreThink (void) } } + // health based player size + ApplyHealthSize(); + FixPlayermodel(); GrabberFrame();