}\r
self.stat_canleave = Vore_CanLeave();\r
\r
- // skip the vore system under some circumstances\r
+ // don't allow a player inside a player inside another player :)\r
+ // prevent this by checking if such happened, and taking the proper measures\r
+ // this code has a high priority and must not be stopped by any delay, so run it here\r
+ if(self.predator.predator.classname == "player")\r
+ {\r
+ Vore_Regurgitate(self);\r
+\r
+ // now steal our prey's prey if this probability applies\r
+ entity target_predator, oldself;\r
+ target_predator = self.predator.predator;\r
+\r
+ if(random() < cvar("g_vore_stealprey"))\r
+ if(Swallow_condition_check(self))\r
+ if not(teams_matter && self.predator.team == target_predator.team) // don't steal a team mate's prey\r
+ {\r
+ oldself = self;\r
+ self = target_predator;\r
+ Vore_Swallow(oldself);\r
+ self = oldself;\r
+ }\r
+ }\r
+\r
+ // apply delays and skip the vore system under some circumstances\r
if(time < game_starttime || (time < warmup && !inWarmupStage)) // don't allow vore before a round begins\r
{\r
Vore_Disconnect();\r
if(self.predator.classname != "player")\r
return;\r
\r
- if(self.predator.deadflag || self.deadflag)\r
- Vore_Regurgitate(self);\r
- else if(self.predator.predator.classname == "player") // don't allow a player inside a player inside another player :)\r
- {\r
- entity target_predator, oldself;\r
- target_predator = self.predator.predator;\r
-\r
+ if(self.deadflag || self.predator.deadflag)\r
Vore_Regurgitate(self);\r
- if(random() < cvar("g_vore_stealprey")) // steal our prey's prey if this probability returns true\r
- if not(teams_matter && self.predator.team == target_predator.team) // don't steal a team mate's prey\r
- if(Swallow_condition_check(self))\r
- {\r
- oldself = self;\r
- self = target_predator;\r
- Vore_Swallow(oldself);\r
- self = oldself;\r
- }\r
- }\r
else if(vlen(self.predator.velocity) > cvar("g_balance_vore_regurgitate_speedcap"))\r
Vore_Regurgitate(self);\r
\r