#define functions
int main(){
int frame = getLocal("frames");
int explode = getLocal("explode");
int show = getLocal("show");
int health = getLocal("health");
int direction = getLocal("direction");
int x = getX();
int y = getY();
int dealdamage=getLocal("dealdamage");
setLocal("frames",frame+1);
int movex=(-3);
if(direction==1){
setX(x+movex);
if(getX()<-32){
destroySprite();
}
}else{
setX(x-movex);
if(getX()>1300){
destroySprite();
}
}
//setY(y+movey);
if(explode==0){
/*if(show>8)
setImage(13);
else
setImage(12);*/
int current = getFrame();
int new = current;
if(frame%10==0)
new = new+1;
if(new==8)
new=0;
int newShow = show+1;
if(newShow==16)
newShow=0;
//setLocal("show",newShow);
//setFrame(new);
setZRotation(getZRotation()+2);
while(getMessageCount()>0){
if(getFlag()=="damage"){
int damage=getMessage();
health=health-damage;
}
if(health<=0){
setLocal("explode",frame);
setImage(14);
setRenderType(0);
setGlobal("score",getGlobal("score")+20);
}
setLocal("health",health);
if(getFlag()=="damagedone"){
setLocal("dealdamage",0);
}
nextMessage();
}
while(getCollidedCount()>0&&dealdamage==0){
int target=collidedWith();
string type=getLocal(target,"type");
if(type=="player"){
int s=createSprite(11,7,x+16,y+16,2);
setFrame(s,2);
setLocal(s,"damage",0);
setLocal(s,"movey",movey);
setLocal(s,"movex",movex);
setLocal(s,"life",0);
setLocal(s,"explode",3);
setLocal(s,"parent",getID());
setLocal("dealdamage",1);
setLocal(s,"type","asteroidexplode");
messageSprite(target,"damage",20);
}
nextCollided();
}
}
else{
int image = getImage();
if(image==14)
explode(frame,explode,false);
else
explode(frame,explode,true);
}
}
int explode(int life,int explodestart,boolean destroy){
if(destroy==false){
drawText("20","courier",10,getX()-getViewportX()+32,getY()-getViewportY()+32-(life-explodestart),255,255,255,255);
}
if(life<explodestart+3){
setFrame(0);
}else if(life<explodestart+6){
setFrame(1);
}else if(life<explodestart+9){
setFrame(2);
}else if(life<explodestart+12){
setFrame(3);
}else if(life<explodestart+15){
setFrame(4);
}else if(life<explodestart+18){
setFrame(5);
}else if(life<explodestart+21){
if(destroy==true)
destroySprite();
else{
setImage(15);
setLocal("explode",life);
}
}
}