Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #TouhouDanmakufu
- #ScriptVersion[3]
- #Title["MageS1_H"]
- #Text["Bullets"]
- let white = GetCurrentScriptDirectory~"sprites/white.png";
- #include"./lib/SHOT_REPLACE/shot_replace.dnh"
- #include"./Mageinclude.txt"
- let color2 = 1;
- let color = 0;
- let objEnemy;
- let duration = 0;
- let stopstuff = false;
- let angle = 0;
- let angle2 = 0;
- let one = 1;
- let type = 0;
- let animframe = 0;
- let frame = 0;
- let objlasers = [];
- let GetSpeedX = 0;
- let variable = 0;
- let thunder = GetCurrentScriptDirectory~"sfx/thunder.wav";
- let n = 0;
- @Event{
- alternative(GetEventType())
- case(EV_REQUEST_LIFE){
- SetScriptResult(1000);
- }
- case(EV_REQUEST_TIMER){
- SetScriptResult(999);
- }
- case(EV_REQUEST_SPELL_SCORE){
- SetScriptResult(10000000);
- }
- case(EV_GAIN_SPELL)
- {
- AddScore(ObjEnemyBossScene_GetInfo(objScene, INFO_SPELL_SCORE));
- }
- }
- @Initialize{
- //Resource Loading
- shotinit;
- LoadSound(shot);
- LoadSound(shot2);
- LoadSound(shot3);
- LoadSound(timeslow);
- LoadSound(shot4);
- LoadSound(slash);
- LoadSound(thunder);
- LoadSound(charge2);
- LoadSound(ping);
- LoadSound(counterspell);
- LoadSound(firecast);
- LoadSound(fireball);
- LoadSound(cardcall);
- objEnemy = ObjEnemy_Create(OBJ_ENEMY_BOSS);
- ObjEnemy_Regist(objEnemy);
- Invuln(360, 25, 25);
- //BottomEnemyMarker(objEnemy, objEnemy);
- let Kogasa = GetCurrentScriptDirectory~"sprites/kogasa.png";
- ObjPrim_SetTexture(objEnemy, Kogasa);
- ObjSprite2D_SetSourceRect(objEnemy, 0, 0, 128, 128);
- ObjAnim_AddFrameA2(objEnemy, ANIM_IDLE, 0, 0, 128, 128, 10, 1);
- ascent(x in 0..2){ObjAnim_AddFrameA2(objEnemy, ANIM_MOVE_LEFT, 256, 128*x, 256+128, 128*x+128, 10, 1);}
- ascent(x in 2..4){ObjAnim_AddFrameA2(objEnemy, ANIM_MOVE_RIGHT, 256, 128*x, 256+128, 128*x+128, 10, 1);}
- CheckForFlip;
- ObjAnim_AddFrameA2(objEnemy, ANIM_MOVEEND_RIGHT, 256, 128*2, 128*3, 128*2+128, 10, 1);
- ObjAnim_AddFrameA2(objEnemy, ANIM_MOVEEND_RIGHT, 0, 0, 128, 128, 10, 1);
- ObjAnim_AddFrameA2(objEnemy, ANIM_MOVEEND_LEFT, 256, 128*2, 256+128, 128*2+128, 10, 1);
- ascent(x in 0..4){ObjAnim_AddFrameA2(objEnemy, ANIM_ATTACK, 128*4, 128*x, 128*5, 128*x+128, 10, 1);}
- ascent(x in 0..4){ObjAnim_AddFrameA2(objEnemy, ANIM_ATTACKEND, 128*5, 128*x, 128*6, 128*x+128, 10, 1);}
- ObjAnim_SetSpeedA1(objEnemy, ANIM_IDLE, 9);
- ObjAnim_SetSpeedA1(objEnemy, ANIM_MOVE_LEFT, 6);
- ObjAnim_SetSpeedA1(objEnemy, ANIM_MOVE_RIGHT, 6);
- ObjAnim_SetSpeedA1(objEnemy, ANIM_ATTACK, 10);
- ObjAnim_SetLoopPointA1(objEnemy, ANIM_MOVE_RIGHT, 1);
- ObjAnim_SetLoopPointA1(objEnemy, ANIM_MOVE_LEFT, 1);
- ObjAnim_SetLoopPointA1(objEnemy, ANIM_ATTACK, 3);
- ObjAnim_StartAnimationA2(objEnemy, 0, 0);
- ObjSprite2D_SetDestCenter(objEnemy);
- LoadTexture(white);
- delayedstart;
- SetShotAutoDeleteClip(30, 100, 30, 20);
- }
- task delayedstart{
- ObjMove_SetDestAtFrame(objEnemy, GetCenterX, 120, 60);
- wait(60);
- ObjEnemyBossScene_StartSpell(objScene);
- ObjEnemyBossScene_SetSpellTimer(objScene, 60*47);
- PlaySE(cardcall);
- ObjCutin_SetSpellcardS4("Hot Streak "Pyroblast"", kogasacutin, "AYA", 255, 0, 0);
- ObjCutin_LaunchS3(AYA, kogasacutin, "Hard");
- wait(60);
- attack1;
- }
- task CheckForFlip{
- yield;
- loop{
- if(CheckDirectionAL1(objEnemy, "left")){
- SetCommonData("flipsprite", true);
- }
- else if(CheckDirectionAL1(objEnemy, "right")){
- SetCommonData("flipsprite", false);
- }
- if(GetCommonData("flipsprite", false)==true && CheckDirectionAL1(objEnemy, "none")){ ObjRender_SetScaleX(objEnemy, -1)}
- else{ ObjRender_SetScaleX(objEnemy, 1); }
- yield;
- }
- }
- @MainLoop{
- SetCommonData("kogasax", ObjMove_GetX(objEnemy));
- SetCommonData("kogasay", ObjMove_GetY(objEnemy));
- if(ObjEnemy_GetInfo(objEnemy, INFO_LIFE) <=0 && stopstuff==false){stopstuff=true;}
- if(stopstuff==true && popped==false){
- DestroyBoss;
- }
- GetEnemyX = ObjMove_GetX(objEnemy);
- GetEnemyY = ObjMove_GetY(objEnemy);
- ObjEnemy_SetIntersectionCircleToShot(objEnemy, GetEnemyX, GetEnemyY, 23);//当たり判定(自機弾用)登録
- ObjEnemy_SetIntersectionCircleToPlayer(objEnemy, GetEnemyX, GetEnemyY, 17);//当たり判定(体当たり用)登録
- frame++;
- yield;
- GetSpeedX = ObjMove_GetSpeed(objEnemy)*cos(ObjMove_GetAngle(objEnemy));
- }
- function castbar(seconds, spell, sound, size, width){
- PlaySE(sound);
- let alpha = 255;
- let angle = 0;
- let numcasts = 0;
- let green = 0;
- let string = "Casting:" ~ spell;
- let variable = 180;
- let obj = ObjPrim_Create(OBJ_SPRITE_2D);
- Obj_SetRenderPriority(obj, 0.9);
- ObjPrim_SetTexture(obj, GetCurrentScriptDirectory~"tricky_system/img/Default_System.png");
- ObjSprite2D_SetSourceRect(obj, 1, 1, 127, 7);
- ObjSprite2D_SetDestRect(obj, GetStgFrameWidth+60, GetStgFrameHeight/2+65, GetStgFrameWidth+70, GetStgFrameHeight/2+65);
- ObjRender_SetColor(obj, 255, 165, 0);
- ObjRender_SetAlpha(obj, 255);
- ObjMove_SetX(obj, GetStgFrameWidth/2);
- ObjMove_SetY(obj, GetStgFrameHeight/2);
- ObjRender_SetScaleXYZ(obj, 1, 1, 1);
- let objText = ObjText_Create();
- ObjText_SetFontType(objText, "Corbel");
- ObjText_SetText(objText, spell);
- ObjText_SetFontSize(objText, size);
- ObjText_SetFontBold(objText, true);
- ObjText_SetHorizontalAlignment(objText, ALIGNMENT_CENTER);
- ObjText_SetMaxWidth(objText, width);
- ObjText_SetFontColorTop(objText, 224, 255, 255);
- ObjText_SetFontColorBottom(objText, 128, 128, 255);
- ObjText_SetFontBorderType(objText, BORDER_FULL);
- ObjText_SetFontBorderColor(objText,0, 0, 0);
- ObjText_SetFontBorderWidth(objText, 1);
- Obj_SetRenderPriority(objText, 0.9);
- ObjRender_SetX(objText, GetStgFrameWidth/2+225);
- ObjRender_SetY(objText, GetStgFrameHeight/2+25);
- loop(seconds){
- variable-=180/seconds;
- ObjSprite2D_SetDestRect(obj, GetStgFrameWidth+60, GetStgFrameHeight/2+(180+65), GetStgFrameWidth+70, (GetStgFrameHeight/2+65)+variable);
- if(GetVirtualKeyState(VK_USER1)==KEY_PUSH && GetCommonData("interruptavail", false)==true){
- ObjRender_SetColor(obj, 0, 255, 0);
- PlaySE(counterspell);
- StopSound(sound);
- wait2(15);
- loop(30){
- alpha-=255/30;
- ObjRender_SetAlpha(objText, alpha);
- ObjRender_SetAlpha(obj, alpha);
- yield;
- }
- return true;
- Obj_Delete(obj); break; }
- wait2(1);
- }
- StopSound(sound);
- ObjRender_SetColor(obj, 255, 0, 0);
- if(sound == firecast){ PlaySE(fireball); }
- if(spell == "Fireball"){ loop(10){ ascent(i in 0..9){ CreateDNHShotA1(GetEnemyX, GetEnemyY, 0.5+(i/3.15), angletoplayer(objEnemy)+angle+rand((-(9-i))*2, (9-i)*2), SP01, 10); } angle+=360/10; }}
- if(spell == "Pyroblast"){ loop(10){ ascent(i in 0..25){ CreateDNHShotA1(GetEnemyX, GetEnemyY, 0.25+(i/8.3333333), angletoplayer(objEnemy)+rand(-i-10, i+10)+angle, SP01, 10); } angle+=360/10; }}
- wait2(15);
- loop(30){
- alpha-=255/30;
- ObjRender_SetAlpha(objText, alpha);
- ObjRender_SetAlpha(obj, alpha);
- wait2(1);
- }
- return false;
- Obj_Delete(obj);
- function wait2(w){ loop(w){ if (popped==true){ StopSound(sound); Obj_Delete(objText); Obj_Delete(obj); } yield; } }
- }
- task attack1{
- wait(120);
- let numcasts = 0;
- let one = 1;
- let angle2 = 0;
- let color = 0;
- let angle3 = 0;
- loop{
- numcasts++;
- if(castbar(15, "Fireball", firecast, 20, 60) == true){
- //wait(15);
- }
- else{
- //wait(15);
- }
- if(numcasts>=6){
- PlaySE(charge2);
- TCharge01(objEnemy, 3, 45, 255, 0, 0);
- wait(60);
- castbar(120, "Pyroblast", firecast, 18, 80);
- numcasts = 0;
- wait(60);
- }
- if(popped==true){break;}
- }
- }
- task DestroyBoss{
- SetCommonData("petals", false);
- popped=true;
- StopSlow(TARGET_ALL);
- loop(10){ yield; }
- Obj_Delete(objEnemy);
- loop(45){ yield; }
- CloseScript(GetOwnScriptID());
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement