Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #TouhouDanmakufu[Single]
- #ScriptVersion[3]
- #Title["Improvement C11"]
- #Text["???"]
- // Example, definitely required for cut-in.
- let cut = GetCurrentScriptDirectory ~ "CutIn.png";
- let objBoss;
- let objScene=GetEnemyBossSceneObjectID();
- let size = 0.8;
- let type = true;
- let obj = 1;
- let bSpell = false;
- let x = 1;
- let y = 1;
- let ang = 0;
- let l = 1024;
- let w = 2;
- let dt = 60;
- let graph = 2;
- let delay = 10;
- let i = 0.5;
- #include "script/function_cutin.txt"
- #include "script/default_system/Shot/ZUNShot_Const.txt"
- @Initialize {
- // Cutin call function! Add or remove double slashes to check them out.
- cutin(NAZRIN,cut,0,0,676,664);
- //cutin(BYAKUREN,cut,0,0,676,664);
- //cutin(KANAKO,cut,0,0,676,664);
- objBoss = ObjEnemy_Create(OBJ_ENEMY_BOSS);
- ObjEnemy_Regist(objBoss);
- ObjMove_SetDestAtFrame(objBoss, GetCenterX, 100, 100);
- ObjEnemyBossScene_StartSpell(objScene);
- TDrawLoop;
- TFinalize;
- MainTask;
- RenderBG;
- }
- @Event {
- alternative(GetEventType())
- case(EV_REQUEST_LIFE){
- SetScriptResult(4000);
- }
- case(EV_REQUEST_TIMER){
- SetScriptResult(150);
- }
- case(EV_REQUEST_SPELL_SCORE){
- SetScriptResult(1000000);
- }
- }
- @MainLoop {
- ObjEnemy_SetIntersectionCircleToShot(objBoss, ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 32);
- ObjEnemy_SetIntersectionCircleToPlayer(objBoss, ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 24);
- let objScene = GetEnemyBossSceneObjectID();
- if(objScene != ID_INVALID && ObjEnemyBossScene_GetInfo(objScene, INFO_IS_SPELL))
- {
- bSpell = true;
- }
- else
- {
- bSpell = false;
- }
- yield;
- }
- task MainTask{
- wait(120);
- magiccircle(objBoss,size,type);
- fireA;
- }
- task fireA{
- while(ObjEnemy_GetInfo(objBoss, INFO_LIFE) > 0){
- wait(380);
- let lpcnt = 0;
- loop(4){
- let laser = CreateStraightLaserA1(ObjMove_GetX(objBoss),ObjMove_GetY(objBoss),90*lpcnt,300,20,150,7,200);
- lasercontrol(laser);
- let x = ObjMove_GetX(laser);
- let y = ObjMove_GetY(laser);
- let a = ObjStLaser_GetAngle(laser);
- let len = ObjLaser_GetLength(laser);
- let num = 8;
- ascent(i in 0..num){
- let dist = i*len/num;
- let shot = bullet(x + cos(a)*dist, y + sin(a)*dist); // this is just the xy position
- }
- lpcnt++;
- }
- }
- }
- task lasercontrol(laser) {
- let lpcnt = 0;
- while(!Obj_IsDeleted(laser)){
- ObjStLaser_SetAngle(laser,ObjStLaser_GetAngle(laser)+0.7);
- lpcnt++;
- yield;
- }
- }
- task bullet(x, y){
- wait(40);
- loop(30){
- let obj = CreateShotA1(ObjMove_GetX(objBoss),ObjMove_GetY(objBoss),2,ang,45,10);
- let obj2 = CreateShotA1(ObjMove_GetX(objBoss),ObjMove_GetY(objBoss),1.5,ang,46,10);
- ang += 360/30;
- }
- }
- task RenderBG{
- let path1 = GetCurrentScriptDirectory() ~ "Muenzuka.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~"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 imgBoss = GetCurrentScriptDirectory() ~ "shikieiki.png.png";
- ObjPrim_SetTexture(objBoss, imgBoss);
- ObjSprite2D_SetSourceRect(objBoss, 0, 0, 148, 125);
- ObjSprite2D_SetDestCenter(objBoss);
- }
- 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));
- }
- Obj_Delete(objBoss);
- DeleteShotAll(TYPE_ALL,TYPE_IMMEDIATE);
- SetAutoDeleteObject(false);
- CloseScript(GetOwnScriptID());
- return;
- }
- function wait(n){
- loop(n){yield;}
- }
RAW Paste Data