Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- script_enemy_main{
- let CSD = GetCurrentScriptDirectory;
- let imgboss = CSD ~ "system\imgboss.png";
- let f = 0;
- let f2 = 0;
- let charge0 = CSD ~ "sfx\se_ch00.wav";
- let start = GetArgument;
- let phase = 0;
- let exist = false;
- @Initialize{
- SetLife(20000);
- SetDamageRateEx(100,100,100,100);
- SetShotAutoDeleteClip(0,0,0,0);
- mainTask;
- }
- @MainLoop{
- SetCollisionA(GetX,GetY,32);
- SetCollisionB(GetX,GetY,16);
- if(GetEnemyLife<start){ phase = 1;}
- yield;
- }
- @DrawLoop{
- SetTexture(imgboss);
- SetRenderState(ALPHA);
- SetAlpha(255);
- SetGraphicRect(0,0,64,86);
- SetGraphicScale(0.7,0.7);
- SetGraphicAngle(0,0,0);
- SetColor(64,64,255);
- //no movement
- if(int(GetSpeedX())==0){
- if(f<10){SetGraphicRect(0,0,64,86);}
- if(f>=10 && f<20){SetGraphicRect(64,0,128,86);}
- if(f>=20 && f<30){SetGraphicRect(128,0,192,86);}
- if(f>=30){SetGraphicRect(192,0,256,86);}
- f2 = 0;
- }
- //to the right
- if(GetSpeedX()>0){
- if(f2<5){SetGraphicRect(0,86,64,172);}
- if(f2>=5 && f2<10){SetGraphicRect(64,86,128,172);}
- if(f2>=10 && f2<15){SetGraphicRect(128,86,192,172);}
- if(f2>=15){SetGraphicRect(192,86,256,172);}
- f2++;
- }
- //to the left
- if(GetSpeedX()<0){
- SetGraphicAngle(180,0,0);
- if(f2<5){SetGraphicRect(0,86,64,172);}
- if(f2>=5 && f2<10){SetGraphicRect(64,86,128,172);}
- if(f2>=10 && f2<15){SetGraphicRect(128,86,192,172);}
- if(f2>=15){SetGraphicRect(192,86,256,172);}
- f2++;
- }
- DrawGraphic(GetX,GetY);
- f++;
- if(f==40){f=0;}
- }
- @Finalize{
- }
- task mainTask{
- SetMovePosition03(GetCenterX-180,GetCenterY,10,60);
- wait(60);
- Concentration01(120);
- PlaySE(charge0);
- wait(120);
- fire;
- }
- task fire{
- loop{
- if(phase==1 && exist==false){
- curve(GetX,GetY,90,4);
- wait(300);
- }
- yield;
- }
- }
- task curve(x,y,angle,graphic){
- let obj = Obj_Create(OBJ_SINUATE_LASER);
- Obj_SetPosition(obj,x,y);
- Obj_SetAngle(obj,angle);
- ObjShot_SetGraphic(obj,graphic);
- ObjShot_SetBombResist(obj,true);
- Obj_SetSpeed(obj,0.5);
- ObjSinuateLaser_SetLength(obj,30);
- ObjSinuateLaser_SetWidth(obj,15);
- while(!Obj_BeDeleted(obj)){
- let playerangle = atan2(GetPlayerY-Obj_GetY(obj),GetPlayerX-Obj_GetX(obj));
- TurnToAngle(obj,2,playerangle);
- Obj_SetSpeed(obj,Obj_GetSpeed(obj)+0.005);
- yield;
- }
- if(!Obj_BeDeleted(obj)){ exist = true}
- else{ exist = false}
- }
- function NormalizeAngle(angle){
- angle %= 360;
- if(angle<0){ angle += 360; }
- return angle;
- }
- function AngularDistance(angle1, angle2){
- let distance = NormalizeAngle(angle2 - angle1);
- if(distance>180){ distance-=360; }
- return distance;
- }
- function TurnToAngle(id, speed, angle){
- let current_angle = Obj_GetAngle(id);
- let target_angle = angle;
- let adist = AngularDistance(current_angle, target_angle);
- if(absolute(adist) < speed){
- Obj_SetAngle(id, target_angle);
- }
- else {
- if(adist > 0){
- Obj_SetAngle(id, Obj_GetAngle(id)+speed);
- }
- else if(adist < 0){
- Obj_SetAngle(id, Obj_GetAngle(id)-speed);
- }
- }
- }
- function wait(w){ loop(w){ yield;}}
- }
Advertisement
Add Comment
Please, Sign In to add comment