public void Update() { if (CanAwaken) { Vector2 vector = specRigidbody.PixelColliders[0].UnitBottomLeft; Vector2 vector2 = vector; if (!m_failedWallConfigure) { vector = specRigidbody.PixelColliders[2].UnitBottomLeft; } if (m_facingDirection == DungeonData.Direction.SOUTH) { vector += new Vector2(0f, -1.5f); vector2 += new Vector2(2f, 0f); } else if (m_facingDirection == DungeonData.Direction.NORTH) { vector += new Vector2(0f, 1f); vector2 += new Vector2(2f, 3f); } else if (m_facingDirection == DungeonData.Direction.WEST) { vector += new Vector2(-1.5f, 0f); vector2 += new Vector2(0f, 2f); } else if (m_facingDirection == DungeonData.Direction.EAST) { vector += new Vector2(1f, 0f); vector2 += new Vector2(2.5f, 2f); } bool flag = false; foreach (PlayerController playerController in GameManager.Instance.AllPlayers) { if (playerController.CanDetectHiddenEnemies) { flag = true; if (!m_playerTrueSight) { m_playerTrueSight = true; aiActor.ToggleRenderers(true); } } if (playerController && playerController.healthHaver.IsAlive && !playerController.IsGhost) { Vector2 unitCenter = playerController.specRigidbody.GetUnitCenter(ColliderType.Ground); if (unitCenter.IsWithin(vector, vector2)) { if (m_goopDoer) { Vector2 vector3 = specRigidbody.PixelColliders[2].UnitCenter; if (m_facingDirection == DungeonData.Direction.NORTH) { vector3 += Vector2.up; } DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(m_goopDoer.goopDefinition); goopManagerForGoopType.TimedAddGoopArc(vector3, 3f, 90f, DungeonData.GetIntVector2FromDirection(m_facingDirection).ToVector2(), 0.2f, null); } StartCoroutine(BecomeMimic()); } } } if (!flag && m_playerTrueSight) { m_playerTrueSight = false; aiActor.ToggleRenderers(false); } } }