#TouhouDanmakufu[Single] #ScriptVersion[3] #Title["Remilia Spell 4 (Meiling Card)"] #Text["yassification"] #System["script/KevinSystem/Kevin_System.txt"] int difficultySelect = 0; let objScene = GetEnemyBossSceneObjectID(); let csd = GetCurrentScriptDirectory(); let bossObj; float bossX = 0; float bossY = 0; float playerY = 0; float playerX = 0; let aniframe = 0; let aniframe2 = 0; let spellsnd = ObjSound_Create(); let bossdiesnd = ObjSound_Create(); /*Parameters: // Trail Burst - Density of red bubble spiral - Angular velocity of bubbles - Speed of bubbles - Density of each bullet curve left behind - Delay between each bullet in curve - Delay between each bullet curve - Movement speed of bullet curve - Delay between trail and aimed burst */ int[] denseTrailSpiral = [7, 8, 10]; float[] wvelTrailBubble = [3, 4, 5]; float[] spdTrailBubble = [13, 14, 16]; int[] denseTrailCurve = [1, 1, 1]; int[] delayCurveIndividual = [0, 0, 0]; int[] delayCurve = [8, 7, 6]; float[] speedCurve = [5, 6, 7]; int[] delayTrailAimed = [110, 100, 90]; /* // Aimed Burst - Density of red bubble spiral - Angular velocity of bubbles - Speed of bubbles - Delay between each bullet left behind - Bullet acceleration - Bullet max speed // Final Trail Burst See trail burst above but x2. - Delay between the two trail burst */ int[] denseAimedSpiral = [9, 10, 11]; float[] wvelAimedBubble = [1.25, 1.4, 1.75]; float[] spdAimedBubble = [12, 14, 16]; int[] delayAimed = [11, 9, 7]; float[] accelAimed = [6/60, 8/50, 10/40]; float[] maxspdAimed = [7, 8, 9]; int[] delayBeforeAim = [40, 30, 20]; int[] delayFinalBurst = [45, 35, 30]; int[] thresholdStopSpin = [80, 70, 60]; // Includes ahoy #include "script/KevinSystem/Universal_Lib.txt" // The library to include all libraries :sans: :nail_care: @Initialize { //SetIntersectionVisualization(true); SetAutoDeleteObject(true); _InitDifficulty(difficultySelect); //difficultySelect = 1; // debug SetShotAutoDeleteClip(64, 64, 64, 64); if(!IsCommonDataAreaExists("PIV")){ CreateCommonDataArea("PIV"); SetAreaCommonData("PIV", "currentvalue", 10000); } else{} // Create the boss object itself bossObj = ObjEnemy_Create(OBJ_ENEMY_BOSS); ObjEnemy_Regist(bossObj); ObjMove_SetPosition(bossObj, GetCommonData("Boss Position X", STG_WIDTH/2), GetCommonData("Boss Position Y", STG_HEIGHT/2)); ObjEnemy_SetMaximumDamage(bossObj, 999); // PLACEHOLDER! let imgExRumia = GetModuleDirectory() ~ "script/ExRumia/ExRumia.png"; ObjPrim_SetTexture(bossObj, imgExRumia); ObjSprite2D_SetSourceRect(bossObj, 64, 1, 127, 64); ObjSprite2D_SetDestCenter(bossObj); ObjRender_SetScaleXYZ(bossObj, 2, 2, 1); ObjRender_SetColor(bossObj, 0xB93C3C); ObjMove_SetDestAtFrame(bossObj, STG_WIDTH/2, 550, 1); // PLACEHOLDER! /*_SoloCutin( "script/invalid.png", 0, 0, 1, 1, bossObj, objScene, "\"Euphoric Blooming of a New Market\"", 40, 4, 0x2868B9, 0x1D115D, 10, STG_HEIGHT*1/10-30, 41 );*/ //WriteLog(spellPIV); WriteLog(ObjEnemyBossScene_GetInfo(objScene, INFO_SPELL_SCORE)); mainTask(); _FadeInvincibility(bossObj, 150, 150, 1); endingnew(); } @Event { alternative(GetEventType()) case(EV_REQUEST_LIFE) { SetScriptResult(3000); } case(EV_REQUEST_TIMER) { SetScriptResult(25); } } @MainLoop { playerY = GetPlayerY(); playerX = GetPlayerX(); //The player position is ALWAYS UPDATED bossX = ObjMove_GetX(bossObj); bossY = ObjMove_GetY(bossObj); ObjEnemy_SetIntersectionCircleToShot(bossObj, ObjMove_GetX(bossObj), ObjMove_GetY(bossObj), 100); yield; } @Finalize { } /* Red rain bullets start falling from above in an oscillating/sine wave pattern. Remilia herself fires rainbow bullet bursts that are gravity-manipulated (see Chimata’s first or third spell in my Pride Jam script) Parameters: // Red Rain - Number of rain spawners - Start x - End x - Angle offset value for oscillation - Delay between bullet spawns - Bullet acceleration - Bullet maxspeed // Rainbow Burst (see Meiling's Colorful Light Chaos Dance) -> how the hell do I do this????? - Spiral density - Number of spiral "arms" - y speed acceleration - max y speed */ task mainTask { while(ObjEnemy_GetInfo(bossObj, INFO_LIFE) > 0){ yield; } } task endingnew(){ while(ObjEnemy_GetInfo(bossObj, INFO_LIFE)>0){ yield; } _GoToBrazil(objScene, bossObj, 12, 24); wait(120); ObjSound_SetVolumeRate(fire2, 20); CloseScript(GetOwnScriptID); }