// Token: 0x0600000A RID: 10 RVA: 0x000023A8 File Offset: 0x000005A8 public static void JobFailIfHid(Pawn seer, Pawn target, Job cur) { if (seer != null && target != null && cur != null && cur.def != CamoAIUtility.CamoPauseJobDef() && seer.Spawned && target.Spawned && (seer?.Map) != null && (target?.Map) != null && seer.Map == target.Map) { bool flag; if (seer == null) { flag = (null != null); } else { Pawn_MindState mindState = seer.mindState; flag = ((mindState?.meleeThreat) != null); } if (!flag) { if (CamoAIUtility.CanSeeSimply(seer, target)) { if (CamoUtility.IsTargetHidden(target, seer)) { CamoAIUtility.CorrectLordForCamo(seer, target); return; } } else { CamoAIUtility.CorrectLordForCamo(seer, target); } } } }
// Token: 0x06000016 RID: 22 RVA: 0x000028CC File Offset: 0x00000ACC public static bool IsTargetHidden(Pawn target, Pawn seer) { if (target == null || seer == null) { Log.Message("Target/Seer Null"); return(false); } if (target == seer) { return(false); } if (TryGetCamoHidValue(seer, target, out var result)) { return(result); } if (!target.Spawned) { return(false); } var isCamoActive = false; Apparel apparel = null; if (!IsDebugMode() || !Controller.Settings.forcePassive) { isCamoActive = IsCamoActive(target, out var apparel2); if (apparel2 != null) { apparel = apparel2; } } if ((!isCamoActive || seer.CurrentEffectiveVerb.IsMeleeAttack) && SimplyTooClose(seer, target)) { TryAddCamoHidValue(seer, target, false); return(false); } if (isCamoActive || IsDebugMode() && Controller.Settings.forceActive) { if (!seer.Spawned) { return(false); } if (target.Map == null || seer.Map == null || target.Map != seer.Map || seer.InMentalState && target.InMentalState) { TryAddCamoHidValue(seer, target, false); return(false); } if (!GenSight.LineOfSight(seer.Position, target.Position, seer.Map)) { return(true); } var num = 0.75f; var num2 = 0; bool settingsForceStealth; if (IsDebugMode() && Controller.Settings.forceActive) { apparel = null; settingsForceStealth = Controller.Settings.forceStealth; if (settingsForceStealth) { num2 = 5; } } else { num = apparel.TryGetComp <CompGearCamo>().Props.ActiveCamoEff; num2 = apparel.TryGetComp <CompGearCamo>().Props.StealthCamoChance; settingsForceStealth = num2 > 0 && num > 0f; } if (CamoEffectWorked(target, seer, apparel, num, true, settingsForceStealth, num2, out var chance, out var scaler)) { DoCamoMote(seer, target, true, chance, num, scaler); TryAddCamoHidValue(seer, target, true); CamoAIUtility.CorrectLordForCamo(seer, target); return(true); } DoCamoMote(seer, target, false, chance, num, scaler); TryAddCamoHidValue(seer, target, false); return(false); } if (!seer.Spawned) { return(false); } if (!CamoGearUtility.GetCurCamoEff(target, out var str, out var camoEff)) { TryAddCamoHidValue(seer, target, false); return(false); } if (IsDebugMode()) { if (Controller.Settings.forcePassive) { camoEff = 0.75f; } Log.Message("Camo: " + str + " : " + camoEff.ToString("F2")); } if (target.Map == null || seer.Map == null || target.Map != seer.Map || seer.InMentalState && target.InMentalState) { TryAddCamoHidValue(seer, target, false); return(false); } if (!GenSight.LineOfSight(seer.Position, target.Position, seer.Map)) { return(true); } if (CamoEffectWorked(target, seer, null, camoEff, false, false, 0, out var chance2, out var scaler2)) { DoCamoMote(seer, target, true, chance2, camoEff, scaler2); TryAddCamoHidValue(seer, target, true); CamoAIUtility.CorrectLordForCamo(seer, target); return(true); } DoCamoMote(seer, target, false, chance2, camoEff, scaler2); TryAddCamoHidValue(seer, target, false); return(false); }
// Token: 0x06000016 RID: 22 RVA: 0x000028CC File Offset: 0x00000ACC public static bool IsTargetHidden(Pawn target, Pawn seer) { if (target == null || seer == null) { Log.Message("Target/Seer Null", false); return(false); } if (target != null && seer != null) { if (target == seer) { return(false); } if (CamoUtility.TryGetCamoHidValue(seer, target, out bool result)) { return(result); } } if (target != null && target.Spawned) { bool flag = false; Apparel apparel = null; if (!CamoUtility.IsDebugMode() || !Controller.Settings.forcePassive) { flag = CamoUtility.IsCamoActive(target, out Apparel apparel2); if (apparel2 != null) { apparel = apparel2; } } if ((!flag || (flag && seer.CurrentEffectiveVerb.IsMeleeAttack)) && CamoUtility.SimplyTooClose(seer, target)) { CamoUtility.TryAddCamoHidValue(seer, target, false); return(false); } if (flag || (CamoUtility.IsDebugMode() && Controller.Settings.forceActive)) { if (seer == null || !seer.Spawned) { return(false); } if ((target?.Map) == null || (seer?.Map) == null || target.Map != seer.Map || (seer.InMentalState && target.InMentalState)) { CamoUtility.TryAddCamoHidValue(seer, target, false); return(false); } if (!GenSight.LineOfSight(seer.Position, target.Position, seer.Map, false, null, 0, 0)) { return(true); } float num = 0.75f; int num2 = 0; bool flag2; if (CamoUtility.IsDebugMode() && Controller.Settings.forceActive) { apparel = null; flag2 = Controller.Settings.forceStealth; if (flag2) { num2 = 5; } } else { num = ThingCompUtility.TryGetComp <CompGearCamo>(apparel).Props.ActiveCamoEff; num2 = ThingCompUtility.TryGetComp <CompGearCamo>(apparel).Props.StealthCamoChance; flag2 = (num2 > 0 && num > 0f); } if (CamoUtility.CamoEffectWorked(target, seer, apparel, num, true, flag2, num2, out int chance, out float scaler)) { CamoUtility.DoCamoMote(seer, target, true, chance, num, scaler); CamoUtility.TryAddCamoHidValue(seer, target, true); CamoAIUtility.CorrectLordForCamo(seer, target); return(true); } CamoUtility.DoCamoMote(seer, target, false, chance, num, scaler); CamoUtility.TryAddCamoHidValue(seer, target, false); return(false); } else if (seer != null && seer.Spawned) { if (!CamoGearUtility.GetCurCamoEff(target, out string str, out float camoEff)) { CamoUtility.TryAddCamoHidValue(seer, target, false); return(false); } if (CamoUtility.IsDebugMode()) { if (Controller.Settings.forcePassive) { camoEff = 0.75f; } Log.Message("Camo: " + str + " : " + camoEff.ToString("F2"), false); } if ((target?.Map) == null || (seer?.Map) == null || target.Map != seer.Map || (seer.InMentalState && target.InMentalState)) { CamoUtility.TryAddCamoHidValue(seer, target, false); return(false); } if (!GenSight.LineOfSight(seer.Position, target.Position, seer.Map, false, null, 0, 0)) { return(true); } if (CamoUtility.CamoEffectWorked(target, seer, null, camoEff, false, false, 0, out int chance2, out float scaler2)) { CamoUtility.DoCamoMote(seer, target, true, chance2, camoEff, scaler2); CamoUtility.TryAddCamoHidValue(seer, target, true); CamoAIUtility.CorrectLordForCamo(seer, target); return(true); } CamoUtility.DoCamoMote(seer, target, false, chance2, camoEff, scaler2); CamoUtility.TryAddCamoHidValue(seer, target, false); return(false); } } return(false); }