public bool StealthCheck() { if (GameManager.Instance.PlayerEnterExit.IsPlayerInsideDungeonCastle && !motor.IsHostile) { return(false); } if (!wouldBeSpawnedInClassic) { return(false); } if (distanceToTarget > 1024 * MeshReader.GlobalScale) { return(false); } uint gameMinutes = DaggerfallUnity.Instance.WorldTime.DaggerfallDateTime.ToClassicDaggerfallTime(); if (gameMinutes == timeOfLastStealthCheck) { return(detectedTarget); } if (target == player) { PlayerMotor playerMotor = GameManager.Instance.PlayerMotor; if (playerMotor.IsMovingLessThanHalfSpeed) { if ((gameMinutes & 1) == 1) { return(detectedTarget); } } else if (hasEncounteredPlayer) { return(true); } PlayerEntity player = GameManager.Instance.PlayerEntity; if (player.TimeOfLastStealthCheck != gameMinutes) { player.TallySkill(DFCareer.Skills.Stealth, 1); player.TimeOfLastStealthCheck = gameMinutes; } } timeOfLastStealthCheck = gameMinutes; int stealthChance = FormulaHelper.CalculateStealthChance(distanceToTarget, target); return(Dice100.FailedRoll(stealthChance)); }