Basically what’s happening is that once the weapon aim is activated, the TargetEvaluation function in BPC_WeaponTargetingSystem is constantly checking for what it is hitting to update the laser, but also stores the target that is being hit as well. This information is stored in the component’s ActiveTarget variable. This variable is then used by the Event Fire interface function in the Weapon blueprint and then the damage is applied to this target actor as shown here:
So you can create a child class based on the BP_Weapon_Parent class for your rifle weapon and then implement this Fire interface function pretty much the same.
As for the actual damage itself, it is using a custom interface BPI_DamageEffects for standard weapon fire as well as other types of effects like stun, emp blast, etc.
For the rifle you can just call the ApplyDamage_Handgun function. It’s already implemented in the enemy AI parent blueprint.
As for the cover system, it’s not present at the moment since I’d have to draw two vision cones one for such scenarios which can be taxing on performance if there are many AI agents. I can look into how it can be added, but are you planning to use vision cones for AI in your project?