In the fps tutorial, you learn to transfer the velocity from a dieing object to the dead replacement in DamageReceiver.js, so that the dead barrel/turret gun flies in the direction of the force applied from the explosion or bullets that killed it.
However, in the CharacterDamage.js script provided by the tutorial assets, no velocity is transferred to the ragdoll dead replacement, so he just slumps over even if killed by a rocket (I also noticed that I had to add a rigidbody to the robot for rockets to even hurt him, which is not mentioned anywhere in the tutorial).
I’m guessing that the script does not transfer the velocity to the ragdoll because the robot is a character controller and thus not effected by forces.
What steps can I take to make it so the dead replacement of the enemy ai robot (the ragdoll) has explosion force transferred to it so it gets flung into the air?
I have not tried that tutorial, but before you destroy the original object copy its velocity component and then set the new ragdoll’s velocity to that value.
I have not tried that tutorial, but before you destroy the original object copy its velocity component and then set the new ragdoll’s velocity to that value.
Take a look at the 3rd person controller project. There is a script in there that is used to allow the CC to push rigid bodies, maybe that would be of some help 
That is what you would think, and that is exactly how the tutorial teaches you to do it with the DamageReceiver.js script.
The only problem is the DamageReceiver.js script is only meant to be used on inanimate objects with Rigidbody’s attached (because a rigidbody is required to have forces applied).
The problem with the AI controlled robot is the AI script requires that the robot have a CharacterController component to work, and CharacterControllers are not effected by forces. So even if I could transfer the velocity from the robot to the ragdoll replacement before destroying it and instantiating the ragdoll, there is no velocity to transfer, because the robot was not effected by the force.
On top of that, the ragdoll as created via the tutorial is a prefab containing the gun the robot is holding, the skin, and the ragdoll skeleton, with the skeleton being the only rigidbody… so even if there was velocity to transfer, it can’t be transferred to the prefab, but would have to find the skeleton inside the ragdoll prefab and transfer it to that… right? 
OHHHHH, I see how they solved this in the tutorial. They don’t mention it in the PDF but they have another explosion script called “explosion-advanced”.
In this script, it appears that after doing the first “explosion” (finding all the colliders inside an overlap sphere, seeing if those colliders have rigidbodies, and apply explosion force and reduce hitpoints to those objects),
they do it AGAIN, but without the hitpoint reducing part. That way, the first explosion killed the robot and replaced it with the ragdoll, and the ragdoll is getting force applied by the second “explosion”.
So simple!
My only question is… how come the rigidbodies that are getting blown up in the first “explosion” aren’t getting catapulted with double the force, since there’s 2 explosions happening now?
I know they aren’t because barrels and stuff aren’t flying any more than they were before, but I don’t understand why they’re not getting blown up twice.
There aren’t actually two explosions. There are two separate sweeps over the rigidbodies, but AddExplosion force is only called once on each object.