void OnTakeDamage(Damageable damageable, DamageMessage damageMessage) { // if we're dead and passed in a damageable that's part of our ragdoll // maybe dismember it if (damageable != null) { RagdollTransform damagedBone; if (ragdollController.ragdoll.Transform2HumanBone(damageable.transform, out damagedBone)) { if (damageMessage.severity >= minSeverityForDismember) { float dismemberChance = boneData[damagedBone.bone.bone].chanceDismember; if (Random.value <= dismemberChance) { ragdollController.ragdoll.DismemberBone("damage", damagedBone); } } // set bone decay for the hit bone, so the physics will affect it // (slightly lower for neighbor bones) float mainDecay = 1; float neighborMultiplier = .75f; ragdollController.AddBoneDecay(damagedBone.bone.bone, mainDecay, neighborMultiplier); } } }