Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #TouhouDanmakufu[Single]
- #ScriptVersion[3]
- #Title["Karina's Third Non-Spell"]
- #Text["By Karina, [r]Thank you Sparen, your tutorial helped quite alot."]
- #BGM[""]
- #include"script/default_system/Default_ShotConst.txt"
- let objBoss;
- let objScene=GetEnemyBossSceneObjectID();
- let count = 0;
- @Event{
- alternative(GetEventType())
- case(EV_REQUEST_LIFE){
- SetScriptResult(1650);
- }
- case(EV_REQUEST_TIMER){
- SetScriptResult(60);
- }
- }
- @Initialize{
- objBoss = ObjEnemy_Create(OBJ_ENEMY_BOSS);
- ObjEnemy_Regist(objBoss);
- let imgExRumia = GetCurrentScriptDirectory ~ "ExRumia.png";
- ObjPrim_SetTexture(objBoss, imgExRumia);
- ObjSprite2D_SetSourceRect(objBoss, 64, 1, 127, 64);
- ObjSprite2D_SetDestCenter(objBoss);
- ObjMove_SetDestAtFrame(objBoss, GetCenterX, 60, 60);
- if(count==0){
- movement;
- }
- TFinalize;
- }
- @MainLoop{
- ObjEnemy_SetIntersectionCircleToShot((objBoss), ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 32);
- ObjEnemy_SetIntersectionCircleToPlayer((objBoss), ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 24);
- if(count==0){
- TDrawLoop;}
- if(count%5==0&&count>=60){
- fire;
- }
- if(count%35==0&&count>=60){
- fireB;
- }
- if(count%140==0&&count>=60){
- homingring(3);
- }
- count++;
- yield;
- }
- task fire{
- if(ObjEnemy_GetInfo(objBoss, INFO_LIFE) <= 0){return;}
- let angleT = GetAngleToPlayer(objBoss);
- loop(25){
- CreateShotA2(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), -3.5, count,0.15, 3, DS_BALL_S_ORANGE, 5);
- CreateShotA2(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), -4, count+120,0.15, 3, DS_BALL_S_YELLOW, 5);
- CreateShotA2(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), -4.5, count-120, 0.15, 3, DS_BALL_S_WHITE, 5);
- angleT+=360/25;
- }
- }
- task fireB{
- if(ObjEnemy_GetInfo(objBoss, INFO_LIFE) <= 0){return;}
- let angle = 0;
- while(angle<360&&count%2==0){
- CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 2.5, angle, DS_BALL_S_A_PURPLE, 30);
- angle += 10;
- }
- while(angle<360&&!count%2==0){
- CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 2.5, angle+5, DS_BALL_S_A_PURPLE, 30);
- angle += 10;
- }
- }
- task homingring(i){
- if(ObjEnemy_GetInfo(objBoss, INFO_LIFE) <= 0){return;}
- let angle = 0;
- while(angle<360){
- let obj = CreateShotA2(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 5, angle, -0.10, 1, DS_ICE_RED+i, 30);
- ObjMove_AddPatternA4(obj, 60, 3, 0, 0, 0, 3+(i/3), GetPlayerObjectID, NO_CHANGE);
- angle += 15;
- if(i==7){
- i=0;
- }
- i++;
- }
- }
- task movement{
- while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0){
- ObjMove_SetDestAtFrame(objBoss, rand(GetCenterX+120,GetCenterX-120), rand(GetCenterY-120,GetCenterY-120), 60);
- wait(200);
- }
- }
- task TDrawLoop {
- let imgExRumia = GetCurrentScriptDirectory ~ "ExRumia.png";
- ObjPrim_SetTexture(objBoss, imgExRumia);
- ObjSprite2D_SetSourceRect(objBoss, 64, 1, 127, 64);
- }
- 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(true);
- CloseScript(GetOwnScriptID());
- return;
- }
- 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