I believe that setShotParents should be made into client executable command. As far as I understand it is limited to be server-only for security reasons and here are my arguments why it doesn't work:
- Cheaters already cheat-create shot messages with fake parents to frame innocent players without using this command (which doesn't work anyway by the time of this writing)
- Even if cheaters wanted to use the command they could already RE the server as many missions allow it by default or because mods like RHS need it (thought it has no effect right now because command is broken)
- If your mission won't need the command on clients or at all, you can disable it manually with CfgDisabledCommands on desired targets
Here are arguments on why it is beneficial to have it client executable:
- Its impossible to script-change parents for non-global shots like shotBullet as server cannot change your non-networked entity.
- Even if it was possible to change such shots through the server, but the time message goes to server and back the bullet would hit something anyway
- Opens a lot of possibilities for modders to create and attribute shots without having to setup the engine in a complicated way, example usages are:
- Attributing shots from UAV AI turrets in a vehicle to effective commander unit
- Easier implementation of melee weapons
- Attributing fake shots to feature user (Player calling scripted CAS, fake sniper shots, etc.)
- Custom submunition simulations with proper damage attribution (spalls, fragmentation, cook-offs, one bullet actually shooting another or several bullets, etc.)
Even more, I'd add an optional flag to make the effect local-only. This way you can correct JIP issues with RE queue and avoid needless traffic for non-global projectiles.
SHOT setShotParents [SOURCE, INSTIGATOR, LOCAL]
Alternatively have it as separate command so it can be filtered out with CfgDisabledCommands separately.