Only battle modders will likely notice this.
script_unit:add_ping_icon() does not create a visible ping without adding script_ping_parent:SetVisible(true); to the script. This is easy enough for a modder to do once they figure out that's what the problem is, but this took me a while to track down.
(In Warhammer 2, add_ping_icon() works without needing to set visibility. I use it for my Find Idle Units mod, which I'm working on porting to Troy.)