From 151c288bf236c50bf1fd958cb7b712b8ebc2673c Mon Sep 17 00:00:00 2001 From: MirceaKitsune Date: Mon, 1 Aug 2011 21:28:46 +0300 Subject: [PATCH] Allow prey to stay inside dead predators (long as they haven't been gibbed). Dead predators no longer digest you, but you still need to kick to get out. --- data/balanceVT.cfg | 1 + data/qcsrc/server/cl_client.qc | 3 ++- data/qcsrc/server/vore.qc | 9 +++++++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/data/balanceVT.cfg b/data/balanceVT.cfg index 87063129..e454f823 100644 --- a/data/balanceVT.cfg +++ b/data/balanceVT.cfg @@ -229,4 +229,5 @@ set g_balance_vore_kick_predator_punchangle 6 "your view gets tilted by this amo set g_balance_vore_kick_prey_punchangle 6 "your view gets tilted by this amount when dealing stomach kicks" set g_balance_vore_kick_cutregurgitate 0.75 "probability that a stomach kick will cause the predator to lose a scheduled regurgitation" set g_balance_vore_escapeprobability 0.003 "probability of getting regurgitated when the predator takes damage, based on the amount of damage dealt" +set g_balance_vore_deadpredator 1 "allow dead predators to keep their prey, as long as their body isn't gibbed" // }}} diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index 2522ec30..00849938 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -459,7 +459,7 @@ Client_customizeentityforclient void Client_setmodel(string applymodel) { local vector m1, m2; - if(self.classname != "player" || self.deadflag != DEAD_NO) // prevent some bugs + if(self.classname != "player") // prevent some bugs return; if(applymodel == self.model || self.spectatee_status) // no change to apply return; @@ -1747,6 +1747,7 @@ void respawn(void) if(self.predator.digesting && self.health > cvar("g_balance_vore_digestion_limit")) return; + setmodel(self, self.playermodel); // prevents an issue with dead predators if(self.alpha >= 0 && self.modelindex != 0 && cvar("g_respawn_ghosts")) { self.solid = SOLID_NOT; diff --git a/data/qcsrc/server/vore.qc b/data/qcsrc/server/vore.qc index e0534639..097792c0 100644 --- a/data/qcsrc/server/vore.qc +++ b/data/qcsrc/server/vore.qc @@ -441,7 +441,9 @@ void Vore_Digest() { // apply digestion to prey - if(self.health <= cvar("g_balance_vore_digestion_limit")) + if(self.predator.deadflag != DEAD_NO) // dead predators don't digest + return; + if(self.health <= cvar("g_balance_vore_digestion_limit")) // don't digest below this amount of health return; if(time > self.digestion_step) @@ -838,11 +840,14 @@ void Vore() return; } - if(self.predator.deadflag != DEAD_NO) // do we want to be in a dead furry x_x + // do we stick around inside dead furries? x_x + if(self.predator.deadflag != DEAD_NO) + if(!cvar("g_balance_vore_deadpredator") || !self.predator.modelindex) // if the predator is gibbed, we are out { Vore_Regurgitate(self); return; } + if(self.predator.stomach_load > self.predator.stomach_maxload) // the predator got beyond his capacity after eating, so some prey must pop out { Vore_Regurgitate(self); -- 2.39.2