private static bool ProcessDamage(AttackerDamageHandler __instance, ReferenceHub ply) { try { var curClass = ply.characterClassManager.CurClass; if (__instance.CheckSpawnProtection(__instance.Attacker.Hub, ply)) { __instance.Damage = 0f; return(false); } if (ply.networkIdentity.netId == __instance.Attacker.NetId || __instance.ForceFullFriendlyFire) { if (!__instance.AllowSelfDamage && !__instance.ForceFullFriendlyFire) { __instance.Damage = 0f; return(false); } __instance.IsSuicide = true; } else if (!HitboxIdentity.CheckFriendlyFire(__instance.Attacker.Hub, ply)) { __instance.Damage *= AttackerDamageHandler._ffMultiplier; __instance.IsFriendlyFire = true; } return(false); } catch (Exception ex) { Logger.Get.Error($"Synapse-FF: ProcessDamage failed!!\n{ex}"); return(true); } }