Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #TouhouDanmakufu[Single]
- #ScriptVersion[3]
- #Title["Test System Contest or not SPELL 4"]
- #Text["???"]
- // Example, definitely required for cut-in.
- let Cutin = GetCurrentScriptDirectory ~ "img/flan_cutin.png";
- let objBoss;
- let objScene=GetEnemyBossSceneObjectID();
- let size = 0.8;
- let type = true;
- let obj = 1;
- let bSpell = false;
- let l = 1024;
- let w = 40;
- let dt = 1000;
- let graph = 41;
- let delay = 10;
- #include "./System !/Default_Effect.txt"
- #include "./System !/Shot/AllStarShot_Const.txt"
- #include "./Cutin.txt"
- #include "./SoundFunctions.txt"
- @Initialize{
- objBoss = ObjEnemy_Create(OBJ_ENEMY_BOSS);
- ObjEnemy_Regist(objBoss);
- ObjMove_SetDestAtFrame(objBoss, GetCenterX, 100, 50);
- ObjEnemyBossScene_StartSpell(objScene);
- ObjCutin_SetSpellcardS4("Forbidden Danmaku 'Bloody Ruby Rings'", Cutin, YABUSAME, 6000, 10, 7000);
- ObjCutin_LaunchS3(KANAKO, Cutin, "Focuser");
- PlaySound("cardcall",100,0);
- TDrawLoop;
- TFinalize;
- MainTask;
- RenderBG;
- DrawName;
- Move;
- }
- @Event {
- alternative(GetEventType())
- case(EV_REQUEST_LIFE){
- SetScriptResult(4000);
- }
- case(EV_REQUEST_TIMER){
- SetScriptResult(60);
- }
- case(EV_REQUEST_SPELL_SCORE){
- SetScriptResult(900000);
- }
- case(EV_REQUEST_IS_DURABLE_SPELL){
- SetScriptResult(true);
- }
- }
- @MainLoop {
- let objScene = GetEnemyBossSceneObjectID();
- if(objScene != ID_INVALID && ObjEnemyBossScene_GetInfo(objScene, INFO_IS_SPELL))
- {
- bSpell = true;
- }
- else
- {
- bSpell = false;
- }
- yield;
- }
- task MainTask{
- wait(120);
- ObjMove_SetDestAtFrame(objBoss, GetCenterX, 150, 30);
- magiccircle(objBoss,size,type);
- wait(180);
- PlaySound("Charge2",100,0);
- fireA;
- }
- task fireA{
- let angleT1 = 0;
- let angleT2 = 0;
- let a1 = 180;
- let a2 = 180;
- let dir = 1.09;
- let count = 0;
- while(!Obj_IsDeleted(objBoss)){
- angleT2 = rand(0,360);
- PlaySound("Shot2",100,0);
- circle(16,2,12,25,1.6,19,angleT2,-dir,480,0);
- dir *= -1;
- wait(36);
- ObjMove_SetDestAtWeight(objBoss,rand(GetPlayerX()-12,GetPlayerX()+12),rand(100,130),9,8);
- wait(360);
- }
- task circle(num1,num2,num3,dist,speed,shotID,angle1,dir,area,intv){
- let angle2 = GetAngleToPlayer(objBoss);;
- loop(num3){
- loop(num2){
- loop(num1){
- PlaySound("Shot2",100,0);
- let obj = CreateShotA1(ObjMove_GetX(objBoss)+dist*cos(angle1),ObjMove_GetY(objBoss)+dist*sin(angle1),speed,angle2,shotID,12);
- angle1 += 360/num1;
- BOINGceiling(obj,angle2);
- }
- angle2 += 360/num2;
- }
- //dist += dist/24*dir;
- angle2 += area/num1*dir;
- wait(intv);
- }
- }
- }
- task BOINGceiling(obj,angle2){
- while(ObjMove_GetX(obj)>0&&ObjMove_GetX(obj)<GetStgFrameWidth&&ObjMove_GetY(obj)>0){yield;}
- if(ObjMove_GetX(obj)<=0){
- //ObjMoveSetX(obj,0)
- ObjMove_SetAngle(obj,180-ObjMove_GetAngle(obj));
- }else if(ObjMove_GetX(obj)>=GetStgFrameWidth){
- //ObjMoveSetX(obj),GetStgFrameWidth);
- ObjMove_SetAngle(obj,180-ObjMove_GetAngle(obj));
- }else if(ObjMove_GetY(obj)<=0){
- //ObjMoveSetY(obj,0);
- ObjMove_SetAngle(obj,-1*ObjMove_GetAngle(obj));
- }
- }
- task BOINGside(obj,angle2){
- while(ObjMove_GetX(obj)>0&&ObjMove_GetX(obj)<GetStgFrameWidth){yield;}
- if(ObjMove_GetX(obj)<=0){
- //ObjMoveSetX(obj,0)
- ObjMove_SetAngle(obj,180-ObjMove_GetAngle(obj));
- }
- if(ObjMove_GetX(obj)>=GetStgFrameWidth){
- //ObjMoveSetX(obj),GetStgFrameWidth);
- ObjMove_SetAngle(obj,180-ObjMove_GetAngle(obj));
- }
- }
- task Move{
- while(ObjEnemy_GetInfo(objBoss, INFO_LIFE) > 0){
- ObjMove_SetDestAtFrame(objBoss, GetCenterX, 120, 30);
- wait(300);
- }
- }
- task DrawName{
- let objText = ObjText_Create();
- let alpha = 255;
- ObjText_SetText(objText, "Eiki Shiki");
- ObjText_SetFontSize(objText, 12);
- ObjText_SetFontColorTop(objText, 255, 255, 255);
- ObjText_SetFontColorBottom(objText, 0, 255, 128);
- ObjText_SetFontBorderType(objText, BORDER_SHADOW);
- ObjText_SetFontBorderColor(objText,0, 128, 128);
- ObjText_SetFontBorderWidth(objText, 2);
- ObjRender_SetPosition(objText,0,12,0);
- while(!Obj_IsDeleted(objText)){
- if(GetPlayerY>80 && alpha<255){alpha+=10;}
- if(GetPlayerY<=80 && alpha>100){alpha-=10;}
- ObjRender_SetAlpha(objText,alpha);
- yield;
- }
- }
- task RenderBG{
- let path1 = GetCurrentScriptDirectory() ~ "img/RedMoon.png";
- let obj1 = ObjPrim_Create(OBJ_SPRITE_2D);
- ObjRender_SetBlendType(obj1, BLEND_ALPHA);
- Obj_SetRenderPriority(obj1, 0.20);
- ObjPrim_SetTexture(obj1, path1);
- ObjSprite2D_SetSourceRect(obj1, 0, 0, 512, 512);
- ObjSprite2D_SetDestRect(obj1, -256, -256, 256, 256);
- ObjRender_SetPosition(obj1, 384/2, 448/2, 1);
- let frame = 0;
- let alpha = 0;
- loop {
- if (bSpell) { //Transition from stage background
- alpha = 255;
- } else {
- alpha = 0; //If no longer spell
- }
- Obj_SetVisible(obj1, alpha > 0);
- frame++;
- yield;
- }
- }
- task magiccircle(objBoss,size,type){
- let obj=ObjPrim_Create(OBJ_SPRITE_2D);
- let GCSD = GetCurrentScriptDirectory;
- let img=GCSD~"img/MG (3).png";
- let spin = 0;
- let s = 0;
- LoadTexture(img);
- ObjPrim_SetTexture(obj,img);
- ObjSprite2D_SetSourceRect(obj,0,0,256,256);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetScaleXYZ(obj,size,size,size);
- ObjRender_SetAlpha(obj,230);
- Obj_SetRenderPriority(obj,0.35);
- while(!Obj_IsDeleted(objBoss)){
- spin += 3;
- ObjRender_SetAngleXYZ(obj,0,0,-spin*1.5);
- ObjRender_SetPosition(obj,ObjMove_GetX(objBoss),ObjMove_GetY(objBoss),0);
- if(type==true){
- ObjRender_SetScaleXYZ(obj,size+0.08*sin(spin),size+0.08*sin(spin),0);
- }
- ObjMove_SetPosition(obj,ObjMove_GetX(objBoss), ObjMove_GetY(objBoss));
- yield;
- }
- Obj_Delete(obj);
- }
- task TDrawLoop {
- let timer_anim = 0;
- let anim = 0;
- let imgBoss = GetCurrentScriptDirectory ~ "img/Flandre.png"; //file path to enemy image
- let bossAngle = ObjMove_GetAngle(objBoss);
- let bossSpeed = ObjMove_GetSpeed(objBoss);
- ObjPrim_SetTexture(objBoss, imgBoss); //Setting the above image file as a texture to the enemy object(objEnemy)
- ObjRender_SetScaleXYZ(objBoss, 1, 1, 1);
- ObjSprite2D_SetSourceRect(objBoss, 1, 1, 64, 64);
- ObjSprite2D_SetDestCenter(objBoss);
- while(!Obj_IsDeleted(objBoss)){
- timer_anim++;
- if(timer_anim == 0) {anim = 0;}
- if(timer_anim == 10) {anim = 1;}
- if(timer_anim == 2*10) {anim = 2;}
- if(timer_anim == 3*10) {
- anim = 3;
- timer_anim = -1;
- }
- bossAngle = ObjMove_GetAngle(objBoss);
- bossSpeed = ObjMove_GetSpeed(objBoss);
- if(bossSpeed < -1) {
- ObjSprite2D_SetSourceRect(objBoss, 1, 64, 64, 128); //Moving on left fast
- } else if(bossSpeed > 1) {
- ObjSprite2D_SetSourceRect(objBoss, 192, 64, 256, 128); //Moving on right fast
- } else if(bossSpeed < 0 && bossSpeed > -1) {
- ObjSprite2D_SetSourceRect(objBoss, 128, 64, 192, 128); //Moving on left slow
- } else if(bossSpeed > 0 && bossSpeed < 1) {
- ObjSprite2D_SetSourceRect(objBoss, 64, 64, 127, 128); //Moving on right slow
- } else if(bossSpeed == 0) {
- ObjSprite2D_SetSourceRect(objBoss, 1+anim*64, 1, 64+anim*64, 64); //Setting the rectangle coordinates in the enemy image to use(Left, Top, Right, Bottom).
- }
- yield;
- }
- }
- task TFinalize{
- while(ObjEnemy_GetInfo(objBoss, INFO_LIFE) > 0){yield;}
- if(ObjEnemyBossScene_GetInfo(objScene, INFO_PLAYER_SHOOTDOWN_COUNT)
- +ObjEnemyBossScene_GetInfo(objScene, INFO_PLAYER_SPELL_COUNT) == 0){
- AddScore(ObjEnemyBossScene_GetInfo(objScene, INFO_SPELL_SCORE));
- PlaySound("capture",100,0);
- } else {PlaySound("failed",100,0);}
- Obj_Delete(objBoss);
- DeleteShotAll(TYPE_ALL,TYPE_IMMEDIATE);
- loop(120) {
- yield;
- }
- SetAutoDeleteObject(true);
- CloseScript(GetOwnScriptID());
- return;
- }
- function GetCenterX(){
- return GetStgFrameWidth() / 2;
- }
- function GetCenterY(){
- return GetStgFrameWidth() / 2;
- }
- function wait(n){
- loop(n){yield;}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement