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); } } }
public void SendDamage(Damageable subDamageable, DamageMessage damageMessage) { bool deadFromDamage = false; if (health > 0) { float damage = damageMessage.baseDamage; if (damageModifier != null) { damage = damageModifier(subDamageable, damage); } health -= damage; // Debug.LogError(name + " DAMAGE +" + damage); deadFromDamage = health <= 0; if (damageMessage.damager != null) { damageMessage.damager.DamageDealtCallback(this, damage, health); } } if (onTakeDamage != null) { onTakeDamage(subDamageable, damageMessage); } if (deadFromDamage) { OnDeath(subDamageable, damageMessage); } }
public void SendDamage(DamageMessage damageMessage) { if (onDamageReceive != null) { onDamageReceive(this, damageMessage); } else { Debug.LogError(name + " Damageable isn't doing anything..."); } }
public void OnDeath(Damageable subDamageable, DamageMessage damageMessage) { health = 0; if (damageMessage.damager != null) { damageMessage.damager.DamageDeathCallback(this); } if (onDeath != null) { onDeath(subDamageable, damageMessage); } // Debug.LogError(name + " is DEAD"); StartCoroutine(DebugRevival()); }
void OnDeath(Damageable damageable, DamageMessage damageMessage) { // if (damageable != null) { // RagdollTransform damagedBone = null; // if ( ragdollController.ragdoll.Transform2HumanBone (damageable.transform, out 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); // } // } //make it go ragdoll ragdollController.GoRagdoll("death"); ragdollController.disableGetUp = true; }