Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- TouhouDanmakufu[Single]
- #ScriptVersion[3]
- #Title ["Remilia's Second Challenge [Extra]"]
- #Text ["The end of the world."]
- #Background ["./Background.txt"]
- #BGM ["./bgm/UFO Nues Theme - Heian Alien.mp3"]
- #include "script/default_system/Default_ShotConst.txt"
- #include "./Cutin.txt"
- #include "./ExplosionEffect.txt"
- let objBoss;
- let objScene = GetEnemyBossSceneObjectID();
- let objBullet;
- let objPlasma;
- let shot_sound = GetCurrentScriptDirectory ~ "se_shot.wav";
- let spell_sound = GetCurrentScriptDirectory ~ "se_UseSpell.wav";
- let explosion = GetCurrentScriptDirectory ~ "se_explosion.wav";
- //Default dimension of Danmakufu's playing field is 384 * 448 pixels.
- @Event
- {
- alternative(GetEventType())
- case(EV_REQUEST_LIFE){
- SetScriptResult(21000);
- }
- case(EV_REQUEST_TIMER){
- SetScriptResult(999);
- }
- case(EV_REQUEST_SPELL_SCORE){
- SetScriptResult(10000000);
- }
- }
- @Initialize
- {
- objBoss = ObjEnemy_Create(OBJ_ENEMY_BOSS);
- ObjEnemy_Regist(objBoss);
- let imgRemilia = GetCurrentScriptDirectory ~ "Remilia.png";
- ObjPrim_SetTexture(objBoss, imgRemilia);
- ObjSprite2D_SetSourceRect(objBoss, 75, 0, 138, 80);
- ObjSprite2D_SetDestCenter(objBoss);
- ObjMove_SetDestAtFrame(objBoss, 90, 60, 60);
- StartSpell;
- LoadSound(shot_sound);
- LoadSound(spell_sound);
- LoadSound(explosion);
- ObjEnemyBossScene_StartSpell(objScene);
- SetPlayerLife(6);
- TDrawLoop;
- TFinalize;
- MainTask;
- }
- task TDrawLoop
- {
- let imgRemilia = GetCurrentScriptDirectory ~ "Remilia.png";
- ObjPrim_SetTexture(objBoss, imgRemilia);
- ObjSprite2D_SetSourceRect(objBoss, 75, 0, 138, 80);
- ObjSprite2D_SetDestCenter(objBoss);
- }
- task MainTask
- {
- Movement;
- PlaySE(spell_sound);
- wait(120);
- while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0)
- {
- let angleT = 0;
- let angleX = 0;
- let objcount = 0;
- let objregard = 0;
- loop
- {
- while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>14000)
- {
- loop(6)
- {
- objPlasma = CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 5, angleT, DS_BALL_M_A_BLUE, 30);
- objBullet = CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 2, angleX, DS_BALL_M_A_RED, 30);
- PlaySE(shot_sound);
- angleT+=360/6;
- angleX+=360/6;
- BulletChange;
- }
- angleT+=objcount;
- angleX+=objregard;
- objcount+=3;
- objregard-=3;
- wait(15);
- }
- while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>7000)
- {
- loop(8)
- {
- CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 2, angleX, DS_BALL_M_A_GREEN, 30);
- CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 4, angleT, DS_BALL_M_A_YELLOW, 30);
- PlaySE(shot_sound);
- angleT+=360/8;
- angleX+=360/8;
- }
- angleT+=objcount;
- angleX+=objregard;
- objcount+=2;
- objregard-=2;
- wait(15);
- }
- while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0)
- {
- loop(90)
- {
- objPlasma = CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 3, angleT, DS_BALL_M_A_BLUE, 30);
- objBullet = CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 4, angleX, DS_BALL_M_A_PURPLE, 30);
- PlaySE(shot_sound);
- angleT+=360/10;
- angleX+=360/10;
- BulletChangeII;
- }
- angleT+=objcount;
- angleX+=objregard;
- objcount+=4;
- objregard-=4;
- wait(60);
- }
- }
- }
- }
- task Movement
- {
- while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0)
- {
- ObjMove_SetDestAtFrame(objBoss, rand(GetCenterX+90,GetCenterX-90), rand(GetCenterY-60,GetCenterY-120), 60);
- wait(180);
- }
- }
- task BulletChange
- {
- ObjMove_SetAngularVelocity(objBullet, 0.2);
- ObjMove_SetAngularVelocity(objPlasma, -0.5);
- wait(10);
- }
- task BulletChangeII
- {
- ObjMove_SetAngle(objBullet, rand(0,360));
- ObjMove_SetAngle(objPlasma, rand(0,360));
- wait(60);
- }
- task StartSpell
- {
- loop(2){yield;}
- let sekibanki = GetCurrentScriptDirectory ~ "Remilia Cutin.png";
- ObjCutin_SetSpellcardS4("\"Remilia's Galaxy\"", sekibanki, MOKOU, 240, 104, 104);
- ObjCutin_LaunchS3(BYAKUREN, sekibanki, "Extra");
- }
- task TFinalize
- {
- while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0){yield;}
- Explosion(objBoss);
- }
- @MainLoop
- {
- ObjEnemy_SetIntersectionCircleToShot(objBoss, ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 32);
- ObjEnemy_SetIntersectionCircleToPlayer(objBoss, ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 24);
- yield;
- }
- function GetCenterX
- {
- return GetStgFrameWidth/2;
- }
- function GetCenterY
- {
- return GetStgFrameHeight/2;
- }
- function wait(n)
- {
- loop(n){yield;}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement