if(self.eater.classname != "player" && self.stomach_load < cvar("g_balance_vore_swallow_limit") && self.deadflag == DEAD_NO) // we can't swallow players while inside someone's stomach ourselves
if not(cvar("g_vore_biggergut") && prey.stomach_load > self.stomach_load)
if(self.health > cvar("g_balance_vore_kick_damage_max")) // explained below
- if not(teamplay && prey.team == self.team)
return TRUE;
return FALSE;
}
+void Vore_AI_Teamheal(entity prey)
+{
+ if not(teamplay)
+ return;
+
+ // check if we can heal a damaged team mate we came across, and if so swallow them
+ if(prey.classname == "player" && prey.team == self.team)
+ if(Swallow_condition_check_bot(prey))
+ if(prey.health < cvar("g_balance_vore_teamheal_stable"))
+ self.BUTTON_ATCK = TRUE; // swallow
+
+ // if we are holding a team mate that's been healed to the max, we can release them
+ entity head;
+ if(self.stomach_load)
+ {
+ FOR_EACH_PLAYER(head)
+ {
+ if(head.eater.classname == "player")
+ if(head.team == self.team)
+ if(head.health >= cvar("g_balance_vore_teamheal_stable"))
+ self.BUTTON_REGURGITATE = TRUE;
+ }
+ }
+}
+
.float swallow_retry, decide_delay1, decide_delay2;
void Vore_AI()
{
decide_prey = cvar("bot_ai_vore_decide_prey") / (skill * 2 + 1);
decide_pred = cvar("bot_ai_vore_decide_pred") / (skill * 2 + 1);
- if(Swallow_condition_check_bot(prey))
if(time > self.swallow_retry)
+ if(Swallow_condition_check_bot(prey))
{
// the greater the skill, the higher the chance bots will swallow someone each attempt
if(skill >= random_try)
+ if not(teamplay && prey.team == self.team)
{
self.BUTTON_ATCK = TRUE; // swallow
self.decide_delay1 = time + decide_pred; // time before the bot decides what to do with their prey
self.swallow_retry = time + 0.5; // bots retry swallowing every 0.5 seconds, otherwise each frame would be random chance
}
+ Vore_AI_Teamheal(prey);
+
// deciding what to do with a victim:
if(self.stomach_load > 0 && time > self.decide_delay1)