ScarletBlackMarket/script/game/Spell4.dnh

219 lines
4.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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);
difficultySelect = _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), 180);
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 Chimatas 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);
}