set g_balance_vore_kick_prey_punchangle 6 "your view gets tilted by this amount when dealing stomach kicks"\r
set g_balance_vore_kick_cutregurgitate 0.75 "probability that a stomach kick will cause the predator to lose a scheduled regurgitation"\r
set g_balance_vore_escapeprobability 0.003 "probability of getting regurgitated when the predator takes damage, based on the amount of damage dealt"\r
+set g_balance_vore_deadpredator 1 "allow dead predators to keep their prey, as long as their body isn't gibbed"\r
// }}}\r
void Client_setmodel(string applymodel)\r
{\r
local vector m1, m2;\r
- if(self.classname != "player" || self.deadflag != DEAD_NO) // prevent some bugs\r
+ if(self.classname != "player") // prevent some bugs\r
return;\r
if(applymodel == self.model || self.spectatee_status) // no change to apply\r
return;\r
if(self.predator.digesting && self.health > cvar("g_balance_vore_digestion_limit"))\r
return;\r
\r
+ setmodel(self, self.playermodel); // prevents an issue with dead predators\r
if(self.alpha >= 0 && self.modelindex != 0 && cvar("g_respawn_ghosts"))\r
{\r
self.solid = SOLID_NOT;\r
{\r
// apply digestion to prey\r
\r
- if(self.health <= cvar("g_balance_vore_digestion_limit"))\r
+ if(self.predator.deadflag != DEAD_NO) // dead predators don't digest\r
+ return;\r
+ if(self.health <= cvar("g_balance_vore_digestion_limit")) // don't digest below this amount of health\r
return;\r
\r
if(time > self.digestion_step)\r
return;\r
}\r
\r
- if(self.predator.deadflag != DEAD_NO) // do we want to be in a dead furry x_x\r
+ // do we stick around inside dead furries? x_x\r
+ if(self.predator.deadflag != DEAD_NO)\r
+ if(!cvar("g_balance_vore_deadpredator") || !self.predator.modelindex) // if the predator is gibbed, we are out\r
{\r
Vore_Regurgitate(self);\r
return;\r
}\r
+\r
if(self.predator.stomach_load > self.predator.stomach_maxload) // the predator got beyond his capacity after eating, so some prey must pop out\r
{\r
Vore_Regurgitate(self);\r