A couple months ago I did tests to determine how exactly suppression works. There are still some questions, but here’s what I can say for sure:
When a unit is hit, it takes suppression damage equal to the suppression value of the weapon. It also takes 50 suppression damage for each point of damage caused by the hit. The thresholds for the different morale states come in 200pt increments:
worried = 200
shaken = 400
panic = 600
max = 800
For example, suppose an M1A2 were hit by a Vampyr with 420 base suppression value. The hit also causes the tank to lose two health. This amounts to 420 + 50×2 = 520 total suppression. The tank now has taken 520 suppression damage and is shaken. If it takes 80 more, it will panic.
These morale thresholds are valid accross all unit types and veterancies. It has been commonly thought that higher vet units panic less easily; this is false. Elite SAS, elite m1a2, rookie militia infantry, they will all panic at 600 suppression damage.
Morale starts regenerating if you don’t take any more suppression damage for twenty seconds. (EDIT: conflicting reports of units regenerating morale under fire)
Amount of suppression damage taken is affected by the forest damage modifier, but with armor it seems to be an all-or-nothing deal: a CEV doesn’t change the morale state of an m1a2 from the front, even with multiple shots, but it takes it to shaken in one rear shot (if armor modifiers applied, 4 rear armor should still be enough to significantly decrease the base 380 suppression of a CEV).
The conditions for inflicting a stun remain a mystery. Taking a lot of suppression damage in a short period of time seems to be the cause, and the mod tools say that the required suppression in 300, but it’s also tied with taking damage in some way – smerch panics infantry without stunning, and I had issues getting CEVs to stun each other from the front.
I mentioned that elite units panic just as easily as everyone else. There is actually a small bug that shifts the morale thresholds by 20 for units of trained veterancy. Yes, your trained m1a2 will panic less easily than a hardened m1a2. I didn’t write them down at the time because it’s only an interesting tidbit, but if I remember correctly the thresholds for trained veterancy are:
worried = 220
shaken = 420
panic = 620
max = 820
Take this side note with a grain of salt; I’m sure the shift is there, but I didn’t do any exact testing, so I may just be misinterpreting something