How do I force replication of property, even if value doesn't changed?

Make a struct that wraps the damage value and replicate the struct instead. The struct should have two vars:
-damage value
-replication counter

The damage value is whatever type of damage variable you were trying to replicate before - only now, its nested inside a struct.
The replication counter is a uint8 rolling counter that you increment each time you want to force a replication to occur. This way, it doesnt matter if the damage value is the same from one time to the next and you will always get your onreps.

Be warned of using RPCs - they are good for certain things, but if the client disconnects for ever a split second, the RPCs can be permanently lost. Replication on the other hand will always flood back in when they reconnect so it is much more robust.

Another problem with replication that you may have to deal with. Just because a replicated var changes during the frame doesn’t mean it gets sent over right away. It may have to wait in line behind higher priority reps. Or even if it does go out the same frame you made the change, it will only reflect the latest change. If the var changed twice during the frame, the first of those two changes will be lost. So you need a way of ensuring that every change made gets repped over, regardless of how many get bundled together. I’m sure there are a number of ways this could be done but one way that comes to mind is to use a map for collecting the changes and an array for replicating the changes. For this method, you’ll need to make the uint8 on the struct a UPROPERTY() - no other vars should be uproperties or they’ll also be used to check if the struct is dirty.

On the struct, make a map of uint8 to damage values and an array of damage values.
When damage occurs, you increment the uint8 counter and add a copy of the resulting uint8 and the damage value to the map.
In your structs custom NetSerialize fn, if the archive is saving you clear the array and add all the map’s damage values to the array.

To be continued…