private void HandlePreCollision(SpeculativeRigidbody myRigidbody, PixelCollider myPixelCollider, SpeculativeRigidbody otherRigidbody, PixelCollider otherPixelCollider) { try { if (otherRigidbody) { foreach (MajorBreakable breakable in otherRigidbody.GetComponentsInChildren <MajorBreakable>()) { breakable.TemporarilyInvulnerable = true; //ETGModConsole.Log(breakable.sprite.CurrentSprite.name); if (breakable.HitPoints < breakable.MaxHitPoints) { float missingHP = breakable.MaxHitPoints - breakable.HitPoints; breakable.HitPoints += (missingHP * 0.2f); if (breakable.GetComponent <Chest>()) { breakable.GetComponent <Chest>().ForceKillFuse(); int idleID = OMITBReflectionHelpers.ReflectGetField <int>(typeof(Chest), "m_cachedSpriteForCoop", breakable.GetComponent <Chest>()); OMITBReflectionHelpers.ReflectSetField <bool>(typeof(MajorBreakable), "m_inZeroHPState", false, breakable); breakable.sprite.SetSprite(idleID); } } breakable.StartCoroutine(ResetInvul(breakable)); } } } catch (Exception e) { ETGModConsole.Log(e.Message); ETGModConsole.Log(e.StackTrace); } }