public void EnableRedAlert() { ChoreDriver component = GetComponent <ChoreDriver>(); if ((Object)component != (Object)null) { Chore currentChore = component.GetCurrentChore(); if (currentChore != null) { bool flag = false; for (int i = 0; i < currentChore.GetPreconditions().Count; i++) { Chore.PreconditionInstance preconditionInstance = currentChore.GetPreconditions()[i]; if (preconditionInstance.id == ChorePreconditions.instance.IsNotRedAlert.id) { flag = true; } } if (flag) { component.StopChore(); } } } }
private void OnSolidChanged(object data) { if (!((UnityEngine.Object) this == (UnityEngine.Object)null) && !((UnityEngine.Object)base.gameObject == (UnityEngine.Object)null)) { GameScenePartitioner.Instance.Free(ref unstableEntry); int num = Grid.PosToCell(this); int num2 = -1; UpdateColor(isReachable); if (Grid.Element[num].hardness >= 200) { bool flag = false; foreach (Chore.PreconditionInstance precondition in chore.GetPreconditions()) { Chore.PreconditionInstance current = precondition; if (current.id == ChorePreconditions.instance.HasSkillPerk.id) { flag = true; break; } } if (!flag) { chore.AddPrecondition(ChorePreconditions.instance.HasSkillPerk, Db.Get().SkillPerks.CanDigSupersuperhard); } requiredSkillPerk = Db.Get().SkillPerks.CanDigSupersuperhard.Id; materialDisplay.sharedMaterial = materials[3]; } else if (Grid.Element[num].hardness >= 150) { bool flag2 = false; foreach (Chore.PreconditionInstance precondition2 in chore.GetPreconditions()) { Chore.PreconditionInstance current2 = precondition2; if (current2.id == ChorePreconditions.instance.HasSkillPerk.id) { flag2 = true; break; } } if (!flag2) { chore.AddPrecondition(ChorePreconditions.instance.HasSkillPerk, Db.Get().SkillPerks.CanDigNearlyImpenetrable); } requiredSkillPerk = Db.Get().SkillPerks.CanDigNearlyImpenetrable.Id; materialDisplay.sharedMaterial = materials[2]; } else if (Grid.Element[num].hardness >= 50) { bool flag3 = false; foreach (Chore.PreconditionInstance precondition3 in chore.GetPreconditions()) { Chore.PreconditionInstance current3 = precondition3; if (current3.id == ChorePreconditions.instance.HasSkillPerk.id) { flag3 = true; break; } } if (!flag3) { chore.AddPrecondition(ChorePreconditions.instance.HasSkillPerk, Db.Get().SkillPerks.CanDigVeryFirm); } requiredSkillPerk = Db.Get().SkillPerks.CanDigVeryFirm.Id; materialDisplay.sharedMaterial = materials[1]; } else { requiredSkillPerk = null; chore.GetPreconditions().Remove(chore.GetPreconditions().Find((Chore.PreconditionInstance o) => o.id == ChorePreconditions.instance.HasSkillPerk.id)); } UpdateStatusItem(null); bool flag4 = false; if (!Grid.Solid[num]) { num2 = GetUnstableCellAbove(num); if (num2 == -1) { flag4 = true; } else { StartCoroutine("PeriodicUnstableFallingRecheck"); } } else if (Grid.Foundation[num]) { flag4 = true; } if (flag4) { isDigComplete = true; if (chore == null || !chore.InProgress()) { Util.KDestroyGameObject(base.gameObject); } else { GetComponentInChildren <MeshRenderer>().enabled = false; } } else if (num2 != -1) { Extents extents = default(Extents); Grid.CellToXY(num, out extents.x, out extents.y); extents.width = 1; extents.height = (num2 - num + Grid.WidthInCells - 1) / Grid.WidthInCells + 1; unstableEntry = GameScenePartitioner.Instance.Add("Diggable.OnSolidChanged", base.gameObject, extents, GameScenePartitioner.Instance.solidChangedLayer, OnSolidChanged); } } }