Damage Pipeline
#
Data Driven Damage PipelineThe basic idea is that we divide the damage process into data, you can modify them to change the result.
For example if you want to make a weapon that can knockdown each enemy when hitted their head. All you need to do is to listen to the event from the hitinfo of your weapon, then check if we hit enemy's head(DamageBasicData.beHittedMu.muscleName == "Head"), then modify the DamageEffectData.knockout to true.
#
Damage Pipelinehere's the damage pipeline, and we'll inject our code to modify the data though to pipeline to get the result we want
#
How we register the phase eventfor local event, such as for specific hit, you can get the RagdollHitInfo structure, then register the functions below
OnInteractRoleHitPhase1Event // used for hit detetion, built-in function will fill those data here
OnInteractRoleHitPhase2Event // you can modify the damage effect here
OnInteractRoleHitPhase3Event // we can do extra stuff, such as recover hp from attack
Basic collision data, such as collider, point, normal, rigidbody, impact... You can read the data from here to know what's going on in this hit.
Determines the damage calculation, such as you can set the damage larger or smaller.
Behaviour by this damage, such as knockdown, dizzy, floating... You can set this data to apply different hit effect.