From: MirceaKitsune Date: Sun, 27 Feb 2011 18:21:47 +0000 (+0200) Subject: Finally, remove the last known bugs, and nail the last known issues in the fulldigest... X-Git-Url: http://de.git.xonotic.org/?p=voretournament%2Fvoretournament.git;a=commitdiff_plain;h=4f95b781634dfd647f12bdc7f08a3069cab384fc Finally, remove the last known bugs, and nail the last known issues in the fulldigest feature --- diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index 47f27497..fe30cae7 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -516,7 +516,7 @@ float Client_customizeentityforclient() if(other.cvar_chase_active > 0 || other.classname == "observer") // the classname check prevents a bug { Client_setmodel(setmodel_state()); - if not(self.predator.classname == "player" || self.fakepredator.classname == "player") + if not(self.predator.classname == "player" || self.fakeprey) self.alpha = default_player_alpha; return TRUE; } @@ -530,7 +530,7 @@ float Client_customizeentityforclient() return TRUE; } Client_setmodel(setmodel_state()); - if not(self.predator.classname == "player" || self.fakepredator.classname == "player") + if not(self.predator.classname == "player" || self.fakeprey) self.alpha = default_player_alpha; return TRUE; } @@ -828,8 +828,6 @@ void PutClientInServer (void) RemoveGrabber(self); // Wazat's Grabber - Vore_DeadPrey_Detach(self); - self.classname = "player"; self.wasplayer = TRUE; self.iscreature = TRUE; @@ -924,6 +922,8 @@ void PutClientInServer (void) SetCustomizer(self, Client_customizeentityforclient, Client_uncustomizeentityforclient); + Vore_DeadPrey_Detach(self); + self.model = ""; FixPlayermodel(); diff --git a/data/qcsrc/server/cl_player.qc b/data/qcsrc/server/cl_player.qc index af48331f..120c6d2f 100644 --- a/data/qcsrc/server/cl_player.qc +++ b/data/qcsrc/server/cl_player.qc @@ -104,7 +104,7 @@ void WeaponStats_LogKill(float awep, float vwep) void CopyBody(float keepvelocity) { local entity oldself; - if (self.fakepredator.classname == "player") + if (self.fakeprey) return; if (self.effects & EF_NODRAW || self.alpha < 0) return; diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index f175727d..d1834f65 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -70,6 +70,7 @@ float maxclients; .float digesting; .float stomach_load; .float weapon_delay; +.float fakeprey; .float stat_eaten, stat_stomachload, stat_digesting, stat_canleave; // Fields diff --git a/data/qcsrc/server/vore.qc b/data/qcsrc/server/vore.qc index f8f98631..c29dc252 100644 --- a/data/qcsrc/server/vore.qc +++ b/data/qcsrc/server/vore.qc @@ -231,11 +231,12 @@ void Vore_DeadPrey_Configure(entity e) { // ran when the fulldigest feature is enabled and prey stays inside the stomach after dying - if(e.fakepredator.classname == "player" || e.predator.classname != "player") // already configured + if(e.fakeprey || e.predator.classname != "player") // already configured return; // this entity is like e.predator but for dead prey, to avoid conflicts e.fakepredator = e.predator; + e.fakeprey = TRUE; // first release the prey from the predator, as dead prey needs to be attached differently // the predator's stomach load is also decreased, as dead prey doesn't count any more @@ -251,7 +252,6 @@ void Vore_DeadPrey_Configure(entity e) // completely remove the dead body e.alpha = -1; - setmodel(e, ""); } void Vore_DeadPrey_Detach(entity e) @@ -264,6 +264,9 @@ void Vore_DeadPrey_Detach(entity e) e.fakepredator = world; e.aiment = world; + + if(!e.deadflag) + e.fakeprey = FALSE; } void Vore_PreyRelease(entity e)