## Circular healthbar problems

So i've been making a game with game maker but i have one problem:

This is at the start, the player is facing straight up. Notice the healthbar in the upper right corner.

I've moved the character now. Since its a planet game, the view rotates with the player. The healthbar rotates in the reverse direction though. That's not suppose to happen.

Since i'm using a custom circular healthbar script, this is not done easily, as i have basically no knowledge of trigonometry.

Here is the script (keep in mind that every point is on a coordinate grid):
Code:
//
/////////////////////////////////////////////
//  DRAWS THE DESIRED HEALTHBAR            //
//-----------------------------------------//
//  When using this function use the form  //
//  healthbar_draw( ID, x, y );            //
//  descriptions of each argument below.   //
/////////////////////////////////////////////

var ID, X, Y;
ID = argument0;     //ID of the healthbar to be drawn.
X = argument1;      //x position of healthbar
Y = argument2;      //y position of healthbar

var x1, x2, x3, x4, y1, y2, y3, y4;
var angle;

//DRAW THE BACKGROUND
if( global.back[ID] == 1 )
{
angle = global.maxAngle[ID];

draw_set_color( global.colBack[ID] );

for( i=0; i<global.numt[ID]; i+=1 )
{
x1 = X+cos( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*i) ) )*( global.outerRadius[ID]+1 );
y1 = Y-sin( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*i) ) )*( global.outerRadius[ID]+1 )*global.eccen[ID];
x2 = X+cos( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*(i+1)) ) )*( global.outerRadius[ID]+1 );
y2 = Y-sin( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*(i+1)) ) )*( global.outerRadius[ID]+1 )*global.eccen[ID];
x3 = X+cos( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*i) ) )*( global.innerRadius[ID]-1 );
y3 = Y-sin( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*i) ) )*( global.innerRadius[ID]-1 )*global.eccen[ID];
x4 = X+cos( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*(i+1)) ) )*( global.innerRadius[ID]-1 );
y4 = Y-sin( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*(i+1)) ) )*( global.innerRadius[ID]-1 )*global.eccen[ID];

draw_triangle( x1, y1, x2, y2, x3, y3, 0 );
draw_triangle( x2, y2, x3, y3, x4, y4, 0 );
}
}

//DRAW THE FILLED BAR
angle = global.maxAngle[ID]*global.percent[ID]/100;

draw_set_color( merge_color( global.colLow[ID], global.colHigh[ID], global.percent[ID]/100 ) );

for( i=0; i<global.numt[ID]; i+=1 )
{
x1 = X+cos( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*i) ) )*global.outerRadius[ID];
y1 = Y-sin( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*i) ) )*global.outerRadius[ID]*global.eccen[ID];
x2 = X+cos( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*(i+1)) ) )*global.outerRadius[ID];
y2 = Y-sin( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*(i+1)) ) )*global.outerRadius[ID]*global.eccen[ID];
x3 = X+cos( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*i) ) )*global.innerRadius[ID];
y3 = Y-sin( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*i) ) )*global.innerRadius[ID]*global.eccen[ID];
x4 = X+cos( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*(i+1)) ) )*global.innerRadius[ID];
y4 = Y-sin( degtorad( (global.bottomAngle[ID]-angle)+(angle/global.numt[ID]*(i+1)) ) )*global.innerRadius[ID]*global.eccen[ID];

draw_triangle( x1, y1, x2, y2, x3, y3, 0 );
draw_triangle( x2, y2, x3, y3, x4, y4, 0 );
}
Hopefully the code is not too hard to interpret.

Thanks!

//global.back[ID] = argument5;
//global.colBack[ID] = c_dkgray;