Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #TouhouDanmakufu[Single]
- #ScriptVersion[3]
- #Title["Sandbox File"]
- #Text["This is where you experiment various new things"]
- // #BGM ["./conflict.mp3"]
- // Note: Default game field is 384 x 448
- //Variables, constants and inclusions
- let objBoss;
- let objScene = GetEnemyBossSceneObjectID();
- let objPlayer =GetPlayerObjectID();
- #include"script/default_system/Default_ShotConst.txt"
- #include"script/default_system/Default_Effect.txt"
- @Event{
- alternative(GetEventType())
- case(EV_REQUEST_LIFE){
- SetScriptResult(500);
- }
- case(EV_REQUEST_TIMER){
- SetScriptResult(60);
- }
- case(EV_REQUEST_SPELL_SCORE){
- SetScriptResult(1000000);
- }
- }
- @Initialize{
- objBoss = ObjEnemy_Create(OBJ_ENEMY_BOSS);
- ObjEnemy_Regist(objBoss);
- ObjMove_SetDestAtFrame(objBoss, GetCenterX, 60, 60);
- ObjEnemyBossScene_StartSpell(objScene);
- TDrawLoop;
- TFinalize;
- MainTask;
- }
- @MainLoop{
- ObjEnemy_SetIntersectionCircleToShot(objBoss, ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 32);
- ObjEnemy_SetIntersectionCircleToPlayer(objBoss, ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 24);
- yield;
- }
- // Tasks ###############
- task TDrawLoop {
- let imgExRumia = GetCurrentScriptDirectory ~ "ExRumia.png";
- ObjPrim_SetTexture(objBoss, imgExRumia);
- ObjSprite2D_SetSourceRect(objBoss, 64, 1, 127, 64);
- ObjSprite2D_SetDestCenter(objBoss);
- }
- task MainTask {
- movement;
- fireA;
- fireB;
- fireC;
- }
- task movement{
- while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0){
- ObjMove_SetDestAtFrame(objBoss, rand(GetCenterX+90,GetCenterX-90), rand(GetCenterY-60,GetCenterY-120), 60);
- wait(240);
- }
- }
- task fireA{
- while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0){
- let angleT = GetAngleToPlayer(objBoss);
- ascent(i in -1..2){
- ascent(j in 0..3){
- CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 3-j/6, angleT+i*15, DS_RICE_M_SKY, 5);
- }
- }
- wait(60);
- }
- }
- task fireB{
- while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0){
- let angleT = GetAngleToPlayer(objBoss);
- loop(13){
- ascent(i in 0..3){
- CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 2.5-i/3, angleT, DS_BALL_S_RED+i, 5);
- }
- angleT+=360/13;
- }
- wait(30);
- }
- }
- task fireC {
- while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0){
- let angleToPlayer = atan2(GetPlayerY() - ObjMove_GetY(objBoss), GetPlayerX() - ObjMove_GetX(objBoss));
- // let obj = CreateShotA2(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 4, GetAngleToPlayer(objBoss), -0.001, 0, 25, 5);
- let obj = CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 1, angleToPlayer, 25, 5);
- BulletBurst1(obj);
- wait(120);
- }
- }
- task BulletBurst1(obj){
- // while(ObjMove_GetSpeed(obj)>0){yield;}
- wait(120);
- let angleT = rand(0,360);
- loop(15){
- CreateShotA1(ObjMove_GetX(obj), ObjMove_GetY(obj), 3, angleT, 6, 0);
- angleT+=360/15;
- }
- Obj_Delete(obj);
- }
- 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));
- }
- let ex = ObjMove_GetX(objBoss);
- let ey = ObjMove_GetY(objBoss);
- TExplosionA(ex, ey, 10, 0.6);
- Obj_Delete(objBoss);
- DeleteShotAll(TYPE_ALL,TYPE_ITEM);
- SetAutoDeleteObject(true);
- CloseScript(GetOwnScriptID());
- return;
- }
- // Functions ###############
- function GetCenterX{
- return GetStgFrameWidth/2;
- }
- function GetCenterY{
- return GetStgFrameHeight/2;
- }
- function wait(n){
- loop(n){yield;}
- }
- function rand_int(min, max){
- return round(rand(min, max));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement