:Release() to undo, and is auto-released on script unload (same as Overrides).
addTargetFilter
fn is called once per candidate player. Return false to exclude them. If multiple filters exist, a player has to pass all of them.
addShotGate
fn is called right before each shot. Return false to block it. All gates have to pass for the shot to fire.
addAimTransform
fn receives the planned aim point. Return a new Vector3 to use instead, or nil to leave it alone. Lower priorities run first; the highest priority runs last and has the final say.
forceTarget
Player, a player name, or a UserId. Returns nil if no matching player is in the server. Without a duration, it stays until you :Release() or your script unloads. Calling again replaces the previous force-target.