ThrustThing? That could work. Although, I've had issues with it in DECORATE, where it only thrusts in the direction the activator. I suppose this wouldn't be an issue for a weapon?
I mean, my specific scenario: I was trying to port Greenflower Zone 1 to ZDoom for the helluvit (since the software renderer supports 3D Floors now, and SRB2 goes crazy with them). I'd basically made the springs Inventory classes that would enter the Pickup state when enterred, thrust the player up the relevant amount (cribbed from the game's source code) and then terminate with "fail" so it wouldn't be removed from the world. For vertical springs, this much was fine, but for diagonal ones, I had no means of telling what direction the spring Thing was facing, as all values I could fetch would be based on the player that touched it instead. This meant you'd be thrusted in whichever direction you were facing and not the one the spring was facing, which... wasn't right. Worked great, otherwise.
Wasn't the only issue I'd run into, of course; there was an inescapable water pit, because SRB2's water physics are completely different (basically low-gravity sectors wherein your jump height is gimped to prevent super jumps and your movement speed gimped to simulate water pressure), but that's another matter entirely. Point is, if you use ThrustThing, expect to play around a lot with that angle number.
I was gonna suggest A_RadiusThrust with the flag RTF_NOIMPACTDAMAGE, personally, but that would thrust everything around you, even behind you, Disc of Repulsion-style, and I wasn't sure if that's what the OP wanted.