コード例 #1
0
        // lean in and eat bodies made out of flesh =================================================
        //
        public static bool Eat(this JobDriver_Stumble driver, Zombie zombie, PheromoneGrid grid)
        {
            if (zombie.hasTankyShield != -1f || zombie.hasTankyHelmet != -1f || zombie.hasTankySuit != -1f)
            {
                return(false);
            }

            if (driver.eatTarget != null && driver.eatTarget.Spawned == false)
            {
                driver.eatTarget       = null;
                driver.lastEatTarget   = null;
                driver.eatDelayCounter = 0;
            }
            if (driver.eatTarget == null && grid.GetZombieCount(zombie.Position) <= 2)
            {
                driver.eatTarget = CanIngest(zombie);
            }

            var eatTargetPawn = driver.eatTarget as Pawn ?? (driver.eatTarget as Corpse)?.InnerPawn;

            if (eatTargetPawn != null)
            {
                if (driver.LeanAndDelay(zombie, eatTargetPawn))
                {
                    return(true);
                }

                if (driver.EatBodyPart(zombie, eatTargetPawn))
                {
                    return(true);
                }
            }
            else
            {
                if (zombie.Drawer.leaner is ZombieLeaner zombieLeaner)
                {
                    zombieLeaner.extraOffset = Vector3.zero;
                }
            }

            return(false);
        }