You'll still need to find the angle of the surface. This is often called the collision normal. Construct calculates that internally to some extent for the bounce and the push out. But besides that you'll have to calculate that yourself.
However, why not just use the bullet behaviors bounce? No need to replicate it. You can add it to the object but have it disabled. Move the object with custom and when you want to bounce do this:
1. bullet: enable
2. bullet: set speed to custom.speed
3. bullet: set angle of motion to custom.angleOfMotion
4. bullet: bounce
5. custom: set speed to bullet.speed
6. custom: set angle of motion to bullet.angleOfMotion
7. bullet:disable
Or at lest something along those lines.
You can go the other route of finding the normal of a collision, but you'll have to calculate that per shape type which can add up. Or you can guesstemate the angle by sampling a bunch of points around the object's edge and averaging the overlapping points, but that's a rough approximation.