From: MirceaKitsune Date: Thu, 9 Sep 2010 17:42:30 +0000 (+0300) Subject: Place an important code before the vore system delay X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=8ab251a80ddb5ea259689c9ce3caf50fdd730c1d;p=voretournament%2Fvoretournament.git Place an important code before the vore system delay --- diff --git a/data/qcsrc/server/vore.qc b/data/qcsrc/server/vore.qc index 63a7bb1c..ca583e67 100644 --- a/data/qcsrc/server/vore.qc +++ b/data/qcsrc/server/vore.qc @@ -321,7 +321,29 @@ void Vore() } self.stat_canleave = Vore_CanLeave(); - // skip the vore system under some circumstances + // don't allow a player inside a player inside another player :) + // prevent this by checking if such happened, and taking the proper measures + // this code has a high priority and must not be stopped by any delay, so run it here + if(self.predator.predator.classname == "player") + { + Vore_Regurgitate(self); + + // now steal our prey's prey if this probability applies + entity target_predator, oldself; + target_predator = self.predator.predator; + + if(random() < cvar("g_vore_stealprey")) + if(Swallow_condition_check(self)) + if not(teams_matter && self.predator.team == target_predator.team) // don't steal a team mate's prey + { + oldself = self; + self = target_predator; + Vore_Swallow(oldself); + self = oldself; + } + } + + // apply delays and skip the vore system under some circumstances if(time < game_starttime || (time < warmup && !inWarmupStage)) // don't allow vore before a round begins { Vore_Disconnect(); @@ -395,24 +417,8 @@ void Vore() if(self.predator.classname != "player") return; - if(self.predator.deadflag || self.deadflag) - Vore_Regurgitate(self); - else if(self.predator.predator.classname == "player") // don't allow a player inside a player inside another player :) - { - entity target_predator, oldself; - target_predator = self.predator.predator; - + if(self.deadflag || self.predator.deadflag) Vore_Regurgitate(self); - if(random() < cvar("g_vore_stealprey")) // steal our prey's prey if this probability returns true - if not(teams_matter && self.predator.team == target_predator.team) // don't steal a team mate's prey - if(Swallow_condition_check(self)) - { - oldself = self; - self = target_predator; - Vore_Swallow(oldself); - self = oldself; - } - } else if(vlen(self.predator.velocity) > cvar("g_balance_vore_regurgitate_speedcap")) Vore_Regurgitate(self);