If you're adding x in the XYs you're doing it wrong. You were doing the same thing wrong in the previous version too but I only just realized it since I saw trig in there and "abort-abort"-ed.
The XYs designate the vertices' coordinates relative to the object's position. The SetAngle also rotates the vertices around the object position. You've already set the object position to be (x,y). You want your XYs to theoretically draw your thing pointing rightwards (0 degrees), in order to rotate it using SetAngle, so your XYs should be something like
ObjEffect_SetVertexXY(objdwarf,0, 170, -10);
ObjEffect_SetVertexXY(objdwarf,1, 170, 10);
ObjEffect_SetVertexXY(objdwarf,2, 0, 10);
ObjEffect_SetVertexXY(objdwarf,3, 0, -10);
If this is really the problem, it's only really the one concept you're messing up. The XY vertices are not meant to precisely draw where the vertices should be on the screen, they're meant to take the graphic and UV coordinates, and turn it into a renderable image (and to skew the graphic if needed). For rectangular objects that are just drawn rectangular (i.e. most things), you set your XYs as if you were just drawing the object flatly on some random point with no modifications. The object position takes care of the drawing position, the angle takes care of rotating graphics, the scale takes care of making it bigger and smaller, etc.