Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #TouhouDanmakufu[Single]
- #ScriptVersion[3]
- #Title["JoJo's Bizarre Adventure"]
- #Text["It's an enemy Stand !"]
- let bossObj;
- let bossX = 0;
- let bossY = 0;
- let animFrame = 0;
- let animFrame2 = 0;
- let imgBoss = GetCurrentScriptDirectory ~ "jotarospritesheet.png";
- let bg = GetCurrentScriptDirectory ~ "jojobg.png";
- #include"script/default_system/ZUNShot_Const.txt"
- #include"script/default_system/Default_Effect.txt"
- #include"script/default_system/Default_ShotConst.txt"
- @Initialize {
- let objScene = GetEnemyBossSceneObjectID();
- ObjEnemyBossScene_StartSpell(objScene);
- // define a boss in bossObj and register it
- bossObj = ObjEnemy_Create(OBJ_ENEMY_BOSS);
- ObjEnemy_Regist(bossObj);
- // warp boss to this location when initialized.
- ObjMove_SetPosition(bossObj,192,-100);
- LoadSound(GetCurrentScriptDirectory ~ "jojost.mp3");
- PlayBGM(GetCurrentScriptDirectory ~ "jojost.mp3",5.3,171.8);
- // move boss to desired x y location at desired speed
- ObjMove_SetDestAtSpeed(bossObj,192,120,5);
- mainTask; // run mainTask
- }
- @Event {
- // setting the boss timer and life
- alternative(GetEventType())
- case(EV_REQUEST_LIFE) {
- SetScriptResult(4000);
- }
- case(EV_REQUEST_TIMER) {
- SetScriptResult(45);
- }
- case(EV_REQUEST_SPELL_SCORE) {
- SetScriptResult(30000);
- }
- }
- @MainLoop {
- bossX = ObjMove_GetX(bossObj);
- bossY = ObjMove_GetY(bossObj);
- // collision for shot and player
- ObjEnemy_SetIntersectionCircleToShot(bossObj,bossX,bossY,35);
- ObjEnemy_SetIntersectionCircleToPlayer(bossObj,bossX,bossY,35);
- yield;
- }
- @Finalize { }
- // your best friend, forever.
- function wait(w) { loop(w) { yield; } }
- task mainTask {
- renderBoss;
- renderBG;
- movement;
- TEnd;
- }
- task renderBG {
- let obj = ObjPrim_Create(OBJ_SPRITE_2D);
- Obj_SetRenderPriorityI(obj,21);
- ObjPrim_SetTexture(obj,bg);
- ObjSprite2D_SetSourceRect(obj,0,0,160,240);
- ObjSprite2D_SetDestRect(obj,0,0,GetStgFrameWidth,GetStgFrameHeight);
- }
- task renderBoss {
- let dir;
- let speed;
- // texture the boss, set centre as true centre.
- ObjPrim_SetTexture(bossObj,imgBoss);
- ObjSprite2D_SetSourceRect(bossObj,0,0,64,117);
- ObjSprite2D_SetDestCenter(bossObj);
- ObjRender_SetScaleXYZ(bossObj,1.0,1.0,0);
- while(!Obj_IsDeleted(bossObj)) {
- // animation handling
- ObjRender_SetAngleXYZ(bossObj,0,0,0);
- if(animFrame < 15) { ObjSprite2D_SetSourceRect(bossObj,0,1,64,117); }
- if(animFrame >= 15 && animFrame < 30) { ObjSprite2D_SetSourceRect(bossObj,64,1,128,117); }
- if(animFrame >= 30 && animFrame < 45) { ObjSprite2D_SetSourceRect(bossObj,128,1,192,117); }
- if(animFrame >= 45) { ObjSprite2D_SetSourceRect(bossObj,192,1,256,117); }
- animFrame2 = 0;
- animFrame++; // count animFrame. (++ is +1)
- if(animFrame > 60) { animFrame = 0; } // reset animFrame when it is higher than 60.
- yield;
- }
- }
- task movement {
- wait(60);
- while(!Obj_IsDeleted(bossObj)) {
- fire;
- wait(30);
- yield;
- }
- }
- task fire {
- CreateShotA1(192,-100,5,10,42,0);
- CreateShotA1(192,-100,5,20,42,0);
- CreateShotA1(192,-100,5,30,42,0);
- CreateShotA1(192,-100,5,40,42,0);
- CreateShotA1(192,-100,5,50,42,0);
- CreateShotA1(192,-100,5,60,42,0);
- CreateShotA1(192,-100,5,70,42,0);
- CreateShotA1(192,-100,5,80,42,0);
- CreateShotA1(192,-100,5,90,42,0);
- CreateShotA1(192,-100,5,100,42,0);
- CreateShotA1(192,-100,5,110,42,0);
- CreateShotA1(192,-100,5,120,42,0);
- CreateShotA1(192,-100,5,130,42,0);
- CreateShotA1(192,-100,5,140,42,0);
- CreateShotA1(192,-100,5,150,42,0);
- CreateShotA1(192,-100,5,160,42,0);
- CreateShotA1(192,-100,5,170,42,0);
- CreateShotA1(192,-100,5,180,42,0);
- CreateShotA1(192,-100,5,190,42,0);
- CreateShotA1(192,-100,5,200,42,0);
- CreateShotA1(192,-100,5,210,42,0);
- CreateShotA1(192,-100,5,220,42,0);
- CreateShotA1(192,-100,5,230,42,0);
- CreateShotA1(192,-100,5,240,42,0);
- CreateShotA1(192,-100,5,250,42,0);
- CreateShotA1(192,-100,5,260,42,0);
- CreateShotA1(192,-100,5,270,42,0);
- CreateShotA1(192,-100,5,280,42,0);
- CreateShotA1(192,-100,5,290,42,0);
- CreateShotA1(192,-100,5,300,42,0);
- CreateShotA1(192,-100,5,310,42,0);
- CreateShotA1(192,-100,5,320,42,0);
- CreateShotA1(192,-100,5,330,42,0);
- CreateShotA1(192,-100,5,340,42,0);
- CreateShotA1(192,-100,5,350,42,0);
- CreateShotA1(192,-100,5,360,42,0);
- CreateShotA1(192,-100,5,15,172,15);
- CreateShotA1(192,-100,5,25,172,15);
- CreateShotA1(192,-100,5,35,172,15);
- CreateShotA1(192,-100,5,45,172,15);
- CreateShotA1(192,-100,5,55,172,15);
- CreateShotA1(192,-100,5,65,172,15);
- CreateShotA1(192,-100,5,75,172,15);
- CreateShotA1(192,-100,5,85,172,15);
- CreateShotA1(192,-100,5,95,172,15);
- CreateShotA1(192,-100,5,105,172,15);
- CreateShotA1(192,-100,5,115,172,15);
- CreateShotA1(192,-100,5,125,172,15);
- CreateShotA1(192,-100,5,135,172,15);
- CreateShotA1(192,-100,5,145,172,15);
- CreateShotA1(192,-100,5,155,172,15);
- CreateShotA1(192,-100,5,165,172,15);
- CreateShotA1(192,-100,5,175,172,15);
- CreateShotA1(192,-100,5,185,172,15);
- CreateShotA1(192,-100,5,195,172,15);
- CreateShotA1(192,-100,5,205,172,15);
- CreateShotA1(192,-100,5,215,172,15);
- CreateShotA1(192,-100,5,225,172,15);
- CreateShotA1(192,-100,5,235,172,15);
- CreateShotA1(192,-100,5,245,172,15);
- CreateShotA1(192,-100,5,255,172,15);
- CreateShotA1(192,-100,5,265,172,15);
- CreateShotA1(192,-100,5,275,172,15);
- CreateShotA1(192,-100,5,285,172,15);
- CreateShotA1(192,-100,5,295,172,15);
- CreateShotA1(192,-100,5,305,172,15);
- CreateShotA1(192,-100,5,315,172,15);
- CreateShotA1(192,-100,5,325,172,15);
- CreateShotA1(192,-100,5,335,172,15);
- CreateShotA1(192,-100,5,345,172,15);
- CreateShotA1(192,-100,5,355,172,15);
- CreateShotA1(192,-100,5,365,172,15);
- loop(60) { yield; }
- }
- task TEnd
- {
- while(ObjEnemy_GetInfo(bossObj, INFO_LIFE) > 0) {
- yield;
- }
- TExplosionA(bossX,bossY,10,0.5);
- Obj_Delete(bossObj);
- DeleteShotAll(TYPE_ALL, TYPE_ITEM);
- wait(30);
- CloseScript(GetOwnScriptID());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement