SetCommonData("Boss", 0); SetCommonData("StgBkgd", 1); #include "./../FxnList.txt" let count = -150; //Counter let angle = 0; //Primary Angle let angle2 = 180; //Secondary Angle let angle3 = 180; let bullet = GetCurrentScriptDirectory~"./../sound/bullet.wav"; let laser = GetCurrentScriptDirectory~"./../sound/laser.wav"; let water = GetCurrentScriptDirectory~"./../sound/water.wav"; let charge = GetCurrentScriptDirectory~"./../sound/charge.wav"; let ZUNbullet = GetCurrentScriptDirectory~"./../ZUNshot.txt"; let objBoss; let objEnemy; let objScene=GetEnemyBossSceneObjectID(); //This is made, Dec 1, 2013 @Initialize { LoadTexture(ZUNbullet); LoadEnemyShotData(ZUNbullet); objBoss = ObjEnemy_Create(OBJ_ENEMY_BOSS); ObjEnemy_Regist(objBoss); SetDamageRateAtFrame(objBoss,80,50,90); ObjMove_SetDestAtFrame(objBoss, GetCenterX, GetCenterY-120, 60); objEnemy = ObjEnemy_Create(OBJ_ENEMY); ObjEnemy_Regist(objEnemy); SetDamageRateAtFrame(objEnemy,80,50,90); ObjRender_SetPosition(objEnemy, Obj_GetValueD(objScene,"NitoriX", 0), Obj_GetValueD(objScene,"NitoriY", 0), 1); //Above retrieves Nitori's X and Y ObjMove_SetDestAtFrame(objEnemy, GetCenterX-120, GetCenterY-120, 60); LoadSound(bullet); LoadSound(laser); LoadSound(water); LoadSound(charge); SetShotAutoDeleteClip(32,32,32,32); EnemySetup(objBoss,objEnemy); TDrawLoopR; TDrawLoopN; TFinalize; } @Event{ alternative(GetEventType()) case(EV_REQUEST_LIFE){SetScriptResult(2500);} case(EV_REQUEST_TIMER){SetScriptResult(40);} } @MainLoop { ObjEnemy_SetIntersectionCircleToShot(objBoss, ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 32); ObjEnemy_SetIntersectionCircleToPlayer(objBoss, ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 24); ObjEnemy_SetIntersectionCircleToShot(objBoss, ObjMove_GetX(objEnemy), ObjMove_GetY(objEnemy), 32); ObjEnemy_SetIntersectionCircleToPlayer(objBoss, ObjMove_GetX(objEnemy), ObjMove_GetY(objEnemy), 24); if(count > 0 && count % 240 == 0){ ObjMove_SetDestAtFrame(objEnemy, rand(GetCenterX,GetCenterX-80), rand(GetCenterY-60,GetCenterY-120), 60); } if(count > 0 && count % 240 == 120){ ObjMove_SetDestAtFrame(objBoss, rand(GetCenterX+80,GetCenterX), rand(GetCenterY-60,GetCenterY-120), 60); } if(count > 0 && count % 240 < 120 && count % 15 == 0){ loop(3){ ascent(i in 0..6){//Aqua CreateShotA1(GetEnemyX(objBoss)-3, GetEnemyY(objBoss)+15, 1.5+i/10, angle, 97, 5); angle+=1; } descent(i in 0..5){ CreateShotA1(GetEnemyX(objBoss)-3, GetEnemyY(objBoss)+15, 1.5+i/10, angle, 97, 5); angle+=1; } angle-=10; angle+=120; ascent(i in 0..6){//Orange CreateShotA1(GetEnemyX(objBoss)-3, GetEnemyY(objBoss)+15, 1.5+i/10, angle2, 104, 5); angle2-=1; } descent(i in 0..5){ CreateShotA1(GetEnemyX(objBoss)-3, GetEnemyY(objBoss)+15, 1.5+i/10, angle2, 104, 5); angle2-=1; } angle2+=10; angle2+=120; } PlaySE(bullet); angle+=23; angle2-=23; } if(count > 0 && count % 240 >= 120 && count % 30 == 0){ angle3 = GetAngleToPlayer(objEnemy); loop(3){ ascent(i in -3..4){ ascent(j in 0..3){ CreateShotA1(GetEnemyX(objEnemy), GetEnemyY(objEnemy), 3+j/6, angle3+15*i, 296, 5); } } } PlaySE(water); angle+=23; } count++; yield; } task TDrawLoopR{ let BossImage = GetCurrentScriptDirectory~"./../img/RaikoSprite.png"; //Define path let animframe = 1; ObjPrim_SetTexture(objBoss, BossImage); ObjRender_SetScaleXYZ(objBoss, 1, 1, 1); let bossAngle = ObjMove_GetAngle(objBoss); let bossSpeed = ObjMove_GetSpeed(objBoss); ObjSprite2D_SetSourceRect(objBoss, 0, 0, 80, 96); ObjSprite2D_SetDestCenter(objBoss); while(!Obj_IsDeleted(objBoss)){ bossAngle = ObjMove_GetAngle(objBoss); bossSpeed = ObjMove_GetSpeed(objBoss); ObjSprite2D_SetSourceRect(objBoss, 0+floor(animframe/7)*80, 0, 80+floor(animframe/7)*80, 96);//Use 2nd row if(bossSpeed>0){ ObjSprite2D_SetSourceRect(objBoss, 0, 96, 80, 192);//Use 3rd row } ObjSprite2D_SetDestCenter(objBoss); animframe++; if(animframe == 28){animframe = 0;} //Reset animframe after 28 frames. Change no. depending on num. sprites yield; } } task TDrawLoopN{ let BossImage = GetCurrentScriptDirectory~"./../img/NitoriSprite.png"; //Define path let animframe = 1; ObjPrim_SetTexture(objEnemy, BossImage); ObjRender_SetScaleXYZ(objEnemy, 1, 1, 1); let bossAngle = ObjMove_GetAngle(objEnemy); let bossSpeed = ObjMove_GetSpeed(objEnemy); ObjSprite2D_SetSourceRect(objEnemy, 0, 0, 64, 80); ObjSprite2D_SetDestCenter(objEnemy); while(!Obj_IsDeleted(objEnemy)){ bossAngle = ObjMove_GetAngle(objEnemy); bossSpeed = ObjMove_GetSpeed(objEnemy); ObjSprite2D_SetSourceRect(objEnemy, 0+floor(animframe/7)*64, 0, 64+floor(animframe/7)*64, 80);//Use 1st row if(bossSpeed>0){ ObjSprite2D_SetSourceRect(objEnemy, 0, 80, 64, 160);//Use 2nd row } ObjSprite2D_SetDestCenter(objEnemy); animframe++; if(animframe == 28){animframe = 0;} //Reset animframe after 28 frames. Change no. depending on num. sprites yield; } } task TFinalize{ while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0){yield;} Obj_SetValue(objScene,"NitoriX", ObjMove_GetX(objEnemy));//To pass on starting values Obj_SetValue(objScene,"NitoriY", ObjMove_GetY(objEnemy)); DeleteShotAll(TYPE_ALL,TYPE_ITEM); //Idk this Obj_Delete(objBoss); Obj_Delete(objEnemy); SetAutoDeleteObject(true); //Dangerous if used incorrectly DeleteShotAll(TYPE_ALL,TYPE_IMMEDIATE); CloseScript(GetOwnScriptID()); return; }