public void Start() { if (!m_configured) { ConfigureOnPlacement(GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(transform.position.IntXY(VectorConversions.Ceil))); } PlayerController player = GameManager.Instance.PrimaryPlayer; PlayerController player2 = GameManager.Instance.SecondaryPlayer; if ((player && player.HasPassiveItem(CorruptedJunk.CorruptedJunkID)) | (player2 && player2.HasPassiveItem(CorruptedJunk.CorruptedJunkID))) { GlitchedEnemyMode = true; } if (GlitchedEnemyMode && UnityEngine.Random.value <= m_glitchOdds) { m_isGlitched = true; } transform.position = m_startingPos; specRigidbody.Reinitialize(); aiAnimator.LockFacingDirection = true; aiAnimator.FacingDirection = DungeonData.GetAngleFromDirection(m_facingDirection); if (!m_failedWallConfigure) { m_fakeWall = ExpandUtility.GenerateWallMesh(m_facingDirection, pos1, "Mimic Wall", null, true, m_isGlitched); if (aiActor.ParentRoom != null) { m_fakeWall.transform.parent = aiActor.ParentRoom.hierarchyParent; } m_fakeWall.transform.position = pos1.ToVector3().WithZ(pos1.y - 2) + Vector3.down; if (m_facingDirection == DungeonData.Direction.SOUTH) { StaticReferenceManager.AllShadowSystemDepthHavers.Add(m_fakeWall.transform); } else if (m_facingDirection == DungeonData.Direction.WEST) { m_fakeWall.transform.position = m_fakeWall.transform.position + new Vector3(-0.1875f, 0f); } m_fakeCeiling = ExpandUtility.GenerateRoomCeilingMesh(GetCeilingTileSet(pos1, pos2, m_facingDirection), "Mimic Ceiling", null, true, m_isGlitched); if (aiActor.ParentRoom != null) { m_fakeCeiling.transform.parent = aiActor.ParentRoom.hierarchyParent; } m_fakeCeiling.transform.position = pos1.ToVector3().WithZ(pos1.y - 4); if (m_facingDirection == DungeonData.Direction.NORTH) { m_fakeCeiling.transform.position += new Vector3(-1f, 0f); } else if (m_facingDirection == DungeonData.Direction.SOUTH) { m_fakeCeiling.transform.position += new Vector3(-1f, 2f); } else if (m_facingDirection == DungeonData.Direction.EAST) { m_fakeCeiling.transform.position += new Vector3(-1f, 0f); } m_fakeCeiling.transform.position = m_fakeCeiling.transform.position.WithZ(m_fakeCeiling.transform.position.y - 5f); for (int i = 0; i < specRigidbody.PixelColliders.Count; i++) { specRigidbody.PixelColliders[i].Enabled = false; } if (m_facingDirection == DungeonData.Direction.NORTH) { specRigidbody.PixelColliders.Add(PixelCollider.CreateRectangle(CollisionLayer.LowObstacle, 38, 38, 32, 8, true)); specRigidbody.PixelColliders.Add(PixelCollider.CreateRectangle(CollisionLayer.HighObstacle, 38, 54, 32, 8, true)); } else if (m_facingDirection == DungeonData.Direction.SOUTH) { specRigidbody.PixelColliders.Add(PixelCollider.CreateRectangle(CollisionLayer.LowObstacle, 38, 38, 32, 16, true)); specRigidbody.PixelColliders.Add(PixelCollider.CreateRectangle(CollisionLayer.HighObstacle, 38, 54, 32, 16, true)); } else if (m_facingDirection == DungeonData.Direction.WEST || m_facingDirection == DungeonData.Direction.EAST) { specRigidbody.PixelColliders.Add(PixelCollider.CreateRectangle(CollisionLayer.LowObstacle, 46, 38, 16, 32, true)); specRigidbody.PixelColliders.Add(PixelCollider.CreateRectangle(CollisionLayer.HighObstacle, 46, 38, 16, 32, true)); } specRigidbody.ForceRegenerate(null, null); } aiActor.HasDonePlayerEnterCheck = true; m_collisionKnockbackStrength = aiActor.CollisionKnockbackStrength; aiActor.CollisionKnockbackStrength = 0f; aiActor.CollisionDamage = 0f; m_goopDoer = GetComponent <GoopDoer>(); }