Update 1.01a Content Complete.
This commit is contained in:
parent
dba085c30f
commit
c6c87d7c2f
BIN
LogWindow.dat
BIN
LogWindow.dat
Binary file not shown.
BIN
config.dat
BIN
config.dat
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -100,7 +100,7 @@ let pointerPIV = LoadAreaCommonDataValuePointer("PIV", "currentvalue", 10000);
|
||||||
float[] pos = GetEventArgument(0);
|
float[] pos = GetEventArgument(0);
|
||||||
//int listTarget = GetEventArgument(1);
|
//int listTarget = GetEventArgument(1);
|
||||||
|
|
||||||
if(GetAreaCommonData("Config", "EffectCut", 0) >= 2){ObjSound_Play(sfxBoom);}
|
if(GetCommonDataPtr(EFFECTCUT_PTR, 0) >= 2){ObjSound_Play(sfxBoom);}
|
||||||
//_EffectListPreRender(PetalEffect, imgEffect, [0, 0, 256, 256]);
|
//_EffectListPreRender(PetalEffect, imgEffect, [0, 0, 256, 256]);
|
||||||
else{_ExplosionEffect(pos[0], pos[1], PetalEffect);}
|
else{_ExplosionEffect(pos[0], pos[1], PetalEffect);}
|
||||||
|
|
||||||
|
|
|
@ -195,18 +195,11 @@ function <int> _CreateEnemy(
|
||||||
|
|
||||||
task _HandleEnemyWellbeing(int enemyID, float sizeHitbox, float sizeHurtbox){
|
task _HandleEnemyWellbeing(int enemyID, float sizeHitbox, float sizeHurtbox){
|
||||||
|
|
||||||
float enmX = 0, enmY = 0;
|
//float enmX = 0, enmY = 0;
|
||||||
|
|
||||||
while(ObjEnemy_GetInfo(enemyID, INFO_LIFE) > 0){
|
while(ObjEnemy_GetInfo(enemyID, INFO_LIFE) > 0){
|
||||||
|
|
||||||
enmX = ObjMove_GetX(enemyID);
|
ObjEnemy_SetIntersectionCircleToShot(enemyID, ObjMove_GetX(enemyID), ObjMove_GetY(enemyID), sizeHitbox);
|
||||||
enmY = ObjMove_GetY(enemyID);
|
|
||||||
|
|
||||||
if(ObjEnemy_GetInfo(enemyID, INFO_LIFE) <= 0){break;}
|
|
||||||
|
|
||||||
else{
|
|
||||||
ObjEnemy_SetIntersectionCircleToShot(enemyID, enmX, enmY, sizeHitbox);
|
|
||||||
}
|
|
||||||
//ObjEnemy_SetIntersectionCircleToPlayer(enemyID, ObjMove_GetX(enemyID), ObjMove_GetY(enemyID), sizeHurtbox);
|
//ObjEnemy_SetIntersectionCircleToPlayer(enemyID, ObjMove_GetX(enemyID), ObjMove_GetY(enemyID), sizeHurtbox);
|
||||||
yield;
|
yield;
|
||||||
|
|
||||||
|
|
|
@ -22,16 +22,9 @@
|
||||||
|
|
||||||
// Convenience constants
|
// Convenience constants
|
||||||
|
|
||||||
let ITEMID_PTR = LoadAreaCommonDataValuePointer("ScriptID", "ItemID", 0);
|
|
||||||
let SYSTEMID_PTR = LoadAreaCommonDataValuePointer("ScriptID", "SystemID", 0);
|
|
||||||
|
|
||||||
let FLYINGENM_PTR = LoadCommonDataValuePointer("Flying Defeated", 0);
|
|
||||||
let GROUNDENM_PTR = LoadCommonDataValuePointer("Ground Defeated", 0);
|
|
||||||
|
|
||||||
const STG_WIDTH = GetStgFrameWidth();
|
const STG_WIDTH = GetStgFrameWidth();
|
||||||
const STG_HEIGHT = GetStgFrameHeight();
|
const STG_HEIGHT = GetStgFrameHeight();
|
||||||
|
|
||||||
let texEnm = "script/game/resourceLib/EnmTexture.png";
|
|
||||||
let blipVol = GetAreaCommonData("Config", "SEVol", 100) * 0.01;
|
let blipVol = GetAreaCommonData("Config", "SEVol", 100) * 0.01;
|
||||||
|
|
||||||
InstallFont("script/KevinSystem/font/Connecting Chain Handserif.ttf");
|
InstallFont("script/KevinSystem/font/Connecting Chain Handserif.ttf");
|
||||||
|
|
|
@ -194,7 +194,7 @@ task _DropPIVItemEnemy(int IDPlayer, float[] posEnm, int pointMin, int pointMax,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(GetAreaCommonData("Config", "EffectCut", 0) >= 1){}
|
if(GetCommonDataPtr(EFFECTCUT_PTR, 0) >= 1){}
|
||||||
else{_ScorePopup(posEnm[0], posEnm[1], "PIV", pointFinal);}
|
else{_ScorePopup(posEnm[0], posEnm[1], "PIV", pointFinal);}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -9,7 +9,7 @@ function CreatePIVItem(itemtype, x, y){
|
||||||
ObjItem_SetAutoDelete(PIVItem, false);
|
ObjItem_SetAutoDelete(PIVItem, false);
|
||||||
|
|
||||||
ObjMove_SetAngle(PIVItem, 90);
|
ObjMove_SetAngle(PIVItem, 90);
|
||||||
ObjMove_SetSpeed(PIVItem, -20);
|
ObjMove_SetSpeed(PIVItem, -10);
|
||||||
ObjMove_SetAcceleration(PIVItem, 1);
|
ObjMove_SetAcceleration(PIVItem, 1);
|
||||||
ObjMove_SetMaxSpeed(PIVItem, 0);
|
ObjMove_SetMaxSpeed(PIVItem, 0);
|
||||||
|
|
||||||
|
|
|
@ -7,5 +7,13 @@ const EV_DROP_EXTEND = EV_USER + 203i;
|
||||||
|
|
||||||
const EV_EXPLODE = EV_USER + 300i;
|
const EV_EXPLODE = EV_USER + 300i;
|
||||||
|
|
||||||
|
const EFFECTCUT_PTR = LoadAreaCommonDataValuePointer("Config", "EffectCut", 0);
|
||||||
|
|
||||||
|
const ITEMID_PTR = LoadAreaCommonDataValuePointer("ScriptID", "ItemID", 0);
|
||||||
|
const SYSTEMID_PTR = LoadAreaCommonDataValuePointer("ScriptID", "SystemID", 0);
|
||||||
|
|
||||||
|
const FLYINGENM_PTR = LoadCommonDataValuePointer("Flying Defeated", 0);
|
||||||
|
const GROUNDENM_PTR = LoadCommonDataValuePointer("Ground Defeated", 0);
|
||||||
|
|
||||||
//const SYSTEMID_PTR = LoadAreaCommonDataValuePointer("ScriptID", "SystemID", 0);
|
//const SYSTEMID_PTR = LoadAreaCommonDataValuePointer("ScriptID", "SystemID", 0);
|
||||||
//const ITEMID_PTR = LoadAreaCommonDataValuePointer("ScriptID", "ItemID", 0);
|
//const ITEMID_PTR = LoadAreaCommonDataValuePointer("ScriptID", "ItemID", 0);
|
Binary file not shown.
|
@ -31,7 +31,7 @@ int[] enmGround = [];
|
||||||
|
|
||||||
int[] rankAvg = [];
|
int[] rankAvg = [];
|
||||||
|
|
||||||
let SYSTEMID_PTR_2 = LoadAreaCommonDataValuePointer("ScriptID", "SystemID", 0);
|
//let SYSTEMID_PTR_2 = LoadAreaCommonDataValuePointer("ScriptID", "SystemID", 0);
|
||||||
|
|
||||||
// Includes ahoy
|
// Includes ahoy
|
||||||
|
|
||||||
|
@ -69,6 +69,7 @@ let SYSTEMID_PTR_2 = LoadAreaCommonDataValuePointer("ScriptID", "SystemID", 0);
|
||||||
bossTask();
|
bossTask();
|
||||||
mainTask();
|
mainTask();
|
||||||
groundTask();
|
groundTask();
|
||||||
|
|
||||||
curEnmManage();
|
curEnmManage();
|
||||||
|
|
||||||
//SetCommonData("Rank", 9);
|
//SetCommonData("Rank", 9);
|
||||||
|
@ -134,8 +135,9 @@ task curEnmManage(){
|
||||||
enmFly = [];
|
enmFly = [];
|
||||||
allEnm = GetIntersectionRegistedEnemyID();
|
allEnm = GetIntersectionRegistedEnemyID();
|
||||||
for each (int enm in ref allEnm){
|
for each (int enm in ref allEnm){
|
||||||
if(Obj_GetRenderPriorityI(enm) <= 34){enmGround ~= [enm];}
|
if(Obj_GetRenderPriorityI(enm) <= 35){enmGround ~= [enm];}
|
||||||
else if(Obj_GetRenderPriorityI(enm) >= 35){enmFly ~= [enm];}
|
else if(Obj_GetRenderPriorityI(enm) >= 36 && Obj_GetRenderPriorityI(enm) < 41){enmFly ~= [enm];}
|
||||||
|
else{}
|
||||||
}
|
}
|
||||||
wait(30);
|
wait(30);
|
||||||
}
|
}
|
||||||
|
@ -559,13 +561,18 @@ task _BossExplosion(
|
||||||
|
|
||||||
//NotifyEventAll(EV_DROP_POINT_ENEMY, [enmX, enmY], timer, maxTimer, minPoint, maxPoint);
|
//NotifyEventAll(EV_DROP_POINT_ENEMY, [enmX, enmY], timer, maxTimer, minPoint, maxPoint);
|
||||||
|
|
||||||
|
SetPlayerInvincibilityFrame(300);
|
||||||
ObjSound_Play(bossBoom);
|
ObjSound_Play(bossBoom);
|
||||||
NotifyEvent(GetCommonDataPtr(SYSTEMID_PTR_2, 0), EV_EXPLODE, [enmX, enmY]);
|
NotifyEvent(GetCommonDataPtr(SYSTEMID_PTR, 0), EV_EXPLODE, [enmX, enmY]);
|
||||||
|
|
||||||
|
_ObjShake(IDship, 190, 120);
|
||||||
|
|
||||||
|
ObjSprite2D_SetSourceRect(IDship, [1280, 1536, 2048, 2048]);
|
||||||
|
|
||||||
loop(30){
|
loop(30){
|
||||||
//LoadEx(bossBoom, "script/game/resourceLib/bigBoom.ogg", 30 * SFXVol);
|
//LoadEx(bossBoom, "script/game/resourceLib/bigBoom.ogg", 30 * SFXVol);
|
||||||
ObjSound_Play(bossBoom);
|
ObjSound_Play(bossBoom);
|
||||||
NotifyEvent(GetCommonDataPtr(SYSTEMID_PTR_2, 0), EV_EXPLODE, [shipX+rand(-240, 240), shipY+rand(-150, 150)]);
|
NotifyEvent(GetCommonDataPtr(SYSTEMID_PTR, 0), EV_EXPLODE, [shipX+rand(-240, 240), shipY+rand(-150, 150)]);
|
||||||
wait(6);
|
wait(6);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -582,7 +589,7 @@ task _BossExplosion(
|
||||||
|
|
||||||
_EndShake(120, 120);
|
_EndShake(120, 120);
|
||||||
loop(120){
|
loop(120){
|
||||||
NotifyEvent(GetCommonDataPtr(SYSTEMID_PTR_2, 0), EV_EXPLODE, [shipX+rand(-240, 240), STG_HEIGHT+rand(0, -150)]);
|
NotifyEvent(GetCommonDataPtr(SYSTEMID_PTR, 0), EV_EXPLODE, [shipX+rand(-240, 240), STG_HEIGHT+rand(0, -150)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjSound_Play(bossBoom);
|
ObjSound_Play(bossBoom);
|
||||||
|
@ -640,6 +647,7 @@ task EndBonus(int ID, int IDship){
|
||||||
|
|
||||||
rankAvgFinal = rankSum/length(rankAvg);
|
rankAvgFinal = rankSum/length(rankAvg);
|
||||||
|
|
||||||
|
_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2-220, 30, 0xFF5555, "LIVES REMAINING: " ~ IntToString(GetPlayerLife()));
|
||||||
_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2-180, 30, 0x397FFF, "TIME REMAINING: " ~ vtos("5.2f", timer/60));
|
_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2-180, 30, 0x397FFF, "TIME REMAINING: " ~ vtos("5.2f", timer/60));
|
||||||
_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2-140, 30, 0x00CC00, "GROUND ENEMIES DEFEATED: " ~ IntToString(GetCommonDataPtr(GROUNDENM_PTR, 0)));
|
_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2-140, 30, 0x00CC00, "GROUND ENEMIES DEFEATED: " ~ IntToString(GetCommonDataPtr(GROUNDENM_PTR, 0)));
|
||||||
_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2-100, 30, 0x8400CC, "FLYING ENEMIES DEFEATED: " ~ IntToString(GetCommonDataPtr(FLYINGENM_PTR, 0)));
|
_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2-100, 30, 0x8400CC, "FLYING ENEMIES DEFEATED: " ~ IntToString(GetCommonDataPtr(FLYINGENM_PTR, 0)));
|
||||||
|
@ -650,7 +658,7 @@ task EndBonus(int ID, int IDship){
|
||||||
|
|
||||||
wait(120);
|
wait(120);
|
||||||
|
|
||||||
float multiplierBonus = timer/60 * 5 + GetCommonDataPtr(GROUNDENM_PTR, 0)/5 + GetCommonDataPtr(FLYINGENM_PTR, 0)/5 + rankAvgFinal * 5;
|
float multiplierBonus = GetPlayerLife() * 5 + timer/60 * 5 + GetCommonDataPtr(GROUNDENM_PTR, 0)/5 + GetCommonDataPtr(FLYINGENM_PTR, 0)/5 + rankAvgFinal * 5;
|
||||||
|
|
||||||
int scoreBonus = trunc ( (multiplierBonus * GetAreaCommonData("PIV", "currentvalue", 0)) / 10 ) * 10;
|
int scoreBonus = trunc ( (multiplierBonus * GetAreaCommonData("PIV", "currentvalue", 0)) / 10 ) * 10;
|
||||||
|
|
||||||
|
@ -692,6 +700,18 @@ task RankManagement(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async{
|
||||||
|
while(true){
|
||||||
|
if(ObjMove_GetY(GetPlayerObjectID()) < GetStgFrameHeight()/6){
|
||||||
|
ObjRender_SetAlpha(textRank, 60);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
ObjRender_SetAlpha(textRank, 255);
|
||||||
|
}
|
||||||
|
yield;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async{
|
async{
|
||||||
while(ObjEnemy_GetInfo(bossObj, INFO_LIFE) > 0){
|
while(ObjEnemy_GetInfo(bossObj, INFO_LIFE) > 0){
|
||||||
rankAvg ~= [rank];
|
rankAvg ~= [rank];
|
||||||
|
@ -708,10 +728,10 @@ task testTask(){
|
||||||
while(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) > 20){
|
while(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) > 20){
|
||||||
|
|
||||||
//Wave4();
|
//Wave4();
|
||||||
WaveGround1();
|
Wave6();
|
||||||
|
|
||||||
wait(15);
|
wait(15);
|
||||||
//SetCommonData("Rank", clamp(GetCommonData("Rank", 1)+1, 1, 9));
|
SetCommonData("Rank", clamp(GetCommonData("Rank", 1)+1, 1, 9));
|
||||||
//SetCommonData("Ground Loops Cleared", GetCommonData("Ground Loops Cleared", 0)+1);
|
//SetCommonData("Ground Loops Cleared", GetCommonData("Ground Loops Cleared", 0)+1);
|
||||||
yield;
|
yield;
|
||||||
}
|
}
|
||||||
|
@ -722,16 +742,55 @@ task groundTask(){
|
||||||
|
|
||||||
wait(15);
|
wait(15);
|
||||||
while(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) > 20){
|
while(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) > 20){
|
||||||
|
|
||||||
WaveGround1();
|
WaveGround1();
|
||||||
wait(max(0, 16-4*rank));
|
wait(max(0, 16-4*rank));
|
||||||
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
||||||
|
|
||||||
WaveGround2();
|
WaveGround2();
|
||||||
wait(max(0, 16-4*rank));
|
wait(max(0, 16-4*rank));
|
||||||
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
||||||
|
|
||||||
|
if(GetCommonData("Ground Loops Cleared", 0) % 2 != 0){
|
||||||
|
|
||||||
WaveGround3();
|
WaveGround3();
|
||||||
wait(max(0, 16-4*rank));
|
wait(max(0, 16-4*rank));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else{
|
||||||
|
|
||||||
|
WaveGround6();
|
||||||
|
wait(max(0, 16-4*rank));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//if (rank < 3) {SetCommonData("Rank", clamp(GetCommonData("Rank", 1)+1, 1, 9));}
|
||||||
|
|
||||||
|
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
||||||
|
|
||||||
|
if((GetCommonData("Ground Loops Cleared", 0) % 3 == 0 && GetCommonData("Ground Loops Cleared", 0) != 0)){
|
||||||
|
|
||||||
|
if(rank > 6){
|
||||||
|
|
||||||
|
WaveGround5();
|
||||||
|
wait(max(0, 16-4*rank));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else{
|
||||||
|
|
||||||
|
WaveGround4();
|
||||||
|
wait(max(0, 16-4*rank));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
wait(max(0, 16-4*rank));
|
||||||
SetCommonData("Rank", clamp(GetCommonData("Rank", 1)+1, 1, 9));
|
SetCommonData("Rank", clamp(GetCommonData("Rank", 1)+1, 1, 9));
|
||||||
SetCommonData("Ground Loops Cleared", GetCommonData("Ground Loops Cleared", 0)+1);
|
SetCommonData("Ground Loops Cleared", GetCommonData("Ground Loops Cleared", 0)+1);
|
||||||
|
|
||||||
yield;
|
yield;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -747,20 +806,16 @@ task mainTask {
|
||||||
task Flying(){
|
task Flying(){
|
||||||
while(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) > 20){
|
while(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) > 20){
|
||||||
Wave1();
|
Wave1();
|
||||||
//wait(max(0, 5-1*rank));
|
|
||||||
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
||||||
Wave2();
|
Wave2();
|
||||||
//wait(max(0, 5-1*rank));
|
|
||||||
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
||||||
//SetCommonData("Rank", clamp(GetCommonData("Rank", 1)+1, 1, 9));
|
|
||||||
Wave3();
|
Wave3();
|
||||||
//wait(max(0, 5-1*rank));
|
|
||||||
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
||||||
Wave4();
|
Wave4();
|
||||||
//wait(max(0, 5-1*rank));
|
|
||||||
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
||||||
Wave5();
|
Wave5();
|
||||||
//wait(max(0, 5-1*rank));
|
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
||||||
|
Wave6();
|
||||||
SetCommonData("Rank", clamp(GetCommonData("Rank", 1)+1, 1, 9));
|
SetCommonData("Rank", clamp(GetCommonData("Rank", 1)+1, 1, 9));
|
||||||
SetCommonData("Flying Loops Cleared", GetCommonData("Flying Loops Cleared", 0)+1);
|
SetCommonData("Flying Loops Cleared", GetCommonData("Flying Loops Cleared", 0)+1);
|
||||||
yield;
|
yield;
|
||||||
|
@ -769,10 +824,6 @@ task mainTask {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function <void> GetReady(){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
Enemy Waves (Ground):
|
Enemy Waves (Ground):
|
||||||
|
@ -908,6 +959,84 @@ function <void> WaveGround3(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function <void> WaveGround4(){
|
||||||
|
|
||||||
|
ascent(i in 0..2){
|
||||||
|
_LilyWithFairy(
|
||||||
|
35, KEV_AURABALL_GREEN,
|
||||||
|
STG_WIDTH/7 + i*5*STG_WIDTH/7, -256, 6.25+0.2*rank,
|
||||||
|
10-(1+rank/5), 7+0.25*rank, 25-rank, 0.9
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
wait(max(25, 75-8*rank));
|
||||||
|
|
||||||
|
while(length(enmGround) > 1){yield;}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function <void> WaveGround5(){
|
||||||
|
|
||||||
|
ascent(i in 0..2){
|
||||||
|
_LilyWithFairy(
|
||||||
|
35, KEV_AURABALL_GREEN,
|
||||||
|
STG_WIDTH/7 + i*5*STG_WIDTH/7, -256, 6.25+0.2*rank,
|
||||||
|
10-(1+rank/5), 7+0.4*rank, 25-rank, 0.9
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
wait(max(25, 45-5*rank));
|
||||||
|
|
||||||
|
_LilyWithFairy(
|
||||||
|
35, KEV_AURABALL_GREEN,
|
||||||
|
STG_WIDTH/2, -256, 6.25+0.2*rank,
|
||||||
|
10-(1+rank/5), 7+0.4*rank, 25-rank, 0.9
|
||||||
|
);
|
||||||
|
|
||||||
|
wait(max(25, 45-5*rank));
|
||||||
|
|
||||||
|
ascent(i in 0..2){
|
||||||
|
_LilyWithFairy(
|
||||||
|
35, KEV_AURABALL_GREEN,
|
||||||
|
STG_WIDTH/7 + i*5*STG_WIDTH/7, -256, 6.25+0.2*rank,
|
||||||
|
10-(1+rank/5), 7+0.4*rank, 25-rank, 0.9
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
while(length(enmGround) > 1){yield;}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function <void> WaveGround6(){
|
||||||
|
|
||||||
|
float spd = 6.2*(1.4+rank/9);
|
||||||
|
|
||||||
|
ascent(i in 0..max(6, rank+2)){
|
||||||
|
|
||||||
|
ascent(i in 0..2){
|
||||||
|
_LilypodWith1Frog(
|
||||||
|
34, KEV_BALL_GREEN,
|
||||||
|
STG_WIDTH/7+5*i*STG_WIDTH/7, -256,
|
||||||
|
[1, 1.25, 1.65][clamp((rank/2)-1, 0, 2)], 7*(1.25+rank/10), 7*(1.25+rank/10)/4, [1, 3][clamp((rank/2)-1, 0, 1)], 1, max(15, trunc(35-(3*rank))), 0.6,
|
||||||
|
spd
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
wait(max(12, 26-4*rank));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//wait(max(20, 40-8*rank));
|
||||||
|
|
||||||
|
while(length(enmGround) > 1){yield;}
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function Wave1(){
|
function Wave1(){
|
||||||
|
|
||||||
task SpawnLine(x){
|
task SpawnLine(x){
|
||||||
|
@ -1070,6 +1199,67 @@ function Wave5(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Wave6(){
|
||||||
|
|
||||||
|
async{
|
||||||
|
|
||||||
|
wait(max(12*2, (24-4*rank)*2));
|
||||||
|
|
||||||
|
if(rank > 5){
|
||||||
|
|
||||||
|
_LargeDragonGuy(
|
||||||
|
39, [0, 512, 256, 768],
|
||||||
|
STG_WIDTH/5, -128, 8+0.7*rank, 90, max(25, 45-5*rank), 150-10*rank, KEV_LEAF_PURPLE,
|
||||||
|
[3, 4, 5][clamp((rank/2)-1, 0, 2)], 1.15624*4+(1.15624*rank), 6+rank, 6*(1.25+rank/10), 30, 0.9
|
||||||
|
);
|
||||||
|
|
||||||
|
_LargeDragonGuy(
|
||||||
|
39, [256, 512, 512, 768],
|
||||||
|
4*STG_WIDTH/5, -128, 8+0.7*rank, 90, max(25, 45-5*rank), 150-10*rank, KEV_LEAF_ORANGE,
|
||||||
|
[3, 4, 5][clamp((rank/2)-1, 0, 2)], 1.15624*4+(1.15624*rank), 6+rank, 6*(1.25+rank/10),30, 0.9
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else{
|
||||||
|
|
||||||
|
_LargeDragonGuy(
|
||||||
|
39, [0, 512, 256, 768],
|
||||||
|
STG_WIDTH/2, -128, 8+0.7*rank, 90, max(25, 45-5*rank), 150-10*rank, KEV_LEAF_PURPLE,
|
||||||
|
[3, 4, 5][clamp((rank/2)-1, 0, 2)], 1.15624*4+(1.15624*rank), 12+rank, 7.25*(1.25+rank/9), max(15, 40-5*rank), 0.9
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
loop(4){
|
||||||
|
|
||||||
|
_SmallFairyRing(
|
||||||
|
40, KEV_BALL_PINK,
|
||||||
|
-128, 2.5*STG_HEIGHT/8,
|
||||||
|
round(5+1.5*rank), trunc(61.5-(2.5*rank)), 7.5*(1.25+rank/10),
|
||||||
|
6.4*(1.15+rank/9), 0, 0.6
|
||||||
|
);
|
||||||
|
|
||||||
|
_SmallFairyRing(
|
||||||
|
40, KEV_BALL_PINK,
|
||||||
|
STG_WIDTH+128, 2.5*STG_HEIGHT/8,
|
||||||
|
round(5+1.5*rank), trunc(61.5-(2.5*rank)), 6.5*(1.25+rank/10),
|
||||||
|
6.4*(1.15+rank/9), 180, 0.6
|
||||||
|
);
|
||||||
|
|
||||||
|
wait(max(24, 48-4*rank));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
wait(max(12, 24-4*rank));
|
||||||
|
|
||||||
|
while(length(enmFly) > 1){yield;}
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
task _EndShake(shaketime, intensity){
|
task _EndShake(shaketime, intensity){
|
||||||
|
|
||||||
float baseintensity = intensity;
|
float baseintensity = intensity;
|
||||||
|
@ -1090,4 +1280,25 @@ task _EndShake(shaketime, intensity){
|
||||||
yield;
|
yield;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task _ObjShake(objID, shaketime, intensity){
|
||||||
|
|
||||||
|
float baseX = ObjMove_GetX(objID);
|
||||||
|
float baseY = ObjMove_GetY(objID);
|
||||||
|
float baseintensity = intensity;
|
||||||
|
float shakeno = shaketime;
|
||||||
|
|
||||||
|
ascent(i in 0..shakeno){
|
||||||
|
ObjMove_SetPosition(objID, baseX + rand(-intensity, intensity), baseY + rand(-intensity, intensity)/2);
|
||||||
|
intensity = Interpolate_Decelerate(0, baseintensity, 1-i/shakeno);
|
||||||
|
shaketime--;
|
||||||
|
yield;
|
||||||
|
}
|
||||||
|
|
||||||
|
while(shaketime > 0){yield;}
|
||||||
|
|
||||||
|
ObjMove_SetPosition(objID, baseX, baseY);
|
||||||
|
|
||||||
|
yield;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
let texEnm = "script/game/resourceLib/EnmTexture.png";
|
||||||
|
LoadTextureEx(texEnm, true, true);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
@ -385,6 +387,8 @@ task _CreateFrog(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
task _CreateKingFrog(
|
task _CreateKingFrog(
|
||||||
int renderPriority, int[] rect, int graphicBullet,
|
int renderPriority, int[] rect, int graphicBullet,
|
||||||
float angSpiral, float delaySpiral, float speedSpiral,
|
float angSpiral, float delaySpiral, float speedSpiral,
|
||||||
|
@ -429,7 +433,7 @@ task _CreateKingFrog(
|
||||||
|
|
||||||
float x, y;
|
float x, y;
|
||||||
|
|
||||||
wait(60);
|
wait(60-GetCommonDataPtr(RANK_PTR, 1)*4);
|
||||||
|
|
||||||
while(ObjEnemy_GetInfo(enm, INFO_LIFE) > 0){
|
while(ObjEnemy_GetInfo(enm, INFO_LIFE) > 0){
|
||||||
x = ObjMove_GetX(enm);
|
x = ObjMove_GetX(enm);
|
||||||
|
@ -437,14 +441,21 @@ task _CreateKingFrog(
|
||||||
yield;
|
yield;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(
|
||||||
|
(-128 < x && x < STG_WIDTH+128)
|
||||||
|
&&
|
||||||
|
(-128 < y && y < STG_HEIGHT+128)
|
||||||
|
)
|
||||||
|
{
|
||||||
DeleteShotInCircle(TYPE_SHOT, TYPE_ITEM, x, y, 384);
|
DeleteShotInCircle(TYPE_SHOT, TYPE_ITEM, x, y, 384);
|
||||||
ObjSound_Play(bossBoom);
|
ObjSound_Play(bossBoom);
|
||||||
if(GetCommonData("Ground Loops Cleared", 0) % 2 == 0 && GetCommonData("Ground Loops Cleared", 0) != 0){CreateExtendItem(EXTEND_SPELL, x, y);}
|
if(GetCommonData("Ground Loops Cleared", 0) % 2 == 0 && GetCommonData("Ground Loops Cleared", 0) != 0){CreateExtendItem(EXTEND_SPELL, x, y);}
|
||||||
TExplosionA(x, y, 10, 0.5);
|
TExplosionA(x, y, 10, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wait(60);
|
wait(60-GetCommonDataPtr(RANK_PTR, 1)*4);
|
||||||
|
|
||||||
ObjEnemy_SetAutoDelete(enm, true);
|
ObjEnemy_SetAutoDelete(enm, true);
|
||||||
|
|
||||||
|
@ -540,7 +551,7 @@ task _LilypodWithKingFrog(
|
||||||
|
|
||||||
ObjEnemy_SetDamageRate(lilypad, 0, 0);
|
ObjEnemy_SetDamageRate(lilypad, 0, 0);
|
||||||
|
|
||||||
wait(15);
|
wait(15-GetCommonDataPtr(RANK_PTR, 1)-1);
|
||||||
|
|
||||||
ObjEnemy_SetAutoDelete(lilypad, true);
|
ObjEnemy_SetAutoDelete(lilypad, true);
|
||||||
|
|
||||||
|
@ -556,6 +567,220 @@ task _LilypodWithKingFrog(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _CreateLilyFairy(
|
||||||
|
int renderPriority, int[] rect, int graphicBullet,
|
||||||
|
float delayBullet, float speedBullet, float acceltimeBullet,
|
||||||
|
float frogX, frogY, speedMoveFrog, scaleBullet
|
||||||
|
){
|
||||||
|
|
||||||
|
// Enemy has NO GRAPHIC
|
||||||
|
|
||||||
|
int enm = _CreateEnemy(
|
||||||
|
frogX, frogY, frogX, frogY, 5,
|
||||||
|
largeEnemyScale, largeEnemyScale,
|
||||||
|
smallEnemyHP, largeEnemyHitbox, 0,
|
||||||
|
texEnm,
|
||||||
|
0, 0, 0, 0);
|
||||||
|
|
||||||
|
Obj_SetRenderPriorityI(enm, renderPriority);
|
||||||
|
|
||||||
|
ObjMove_SetSpeed(enm, speedMoveFrog);
|
||||||
|
ObjMove_SetAngle(enm, 90);
|
||||||
|
|
||||||
|
ObjEnemy_SetDamageRate(enm, 0, 0);
|
||||||
|
|
||||||
|
async{
|
||||||
|
|
||||||
|
async{
|
||||||
|
|
||||||
|
float x = 0, y = 0;
|
||||||
|
|
||||||
|
wait(max(25, 60-GetCommonData("Rank", 1)*5));
|
||||||
|
|
||||||
|
while(ObjEnemy_GetInfo(enm, INFO_LIFE) > 0){
|
||||||
|
x = ObjMove_GetX(enm);
|
||||||
|
y = ObjMove_GetY(enm);
|
||||||
|
yield;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(
|
||||||
|
(-128 < x && x < STG_WIDTH+128)
|
||||||
|
&&
|
||||||
|
(-128 < y && y < STG_HEIGHT+128)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
DeleteShotInCircle(TYPE_SHOT, TYPE_ITEM, x, y, 384);
|
||||||
|
ObjSound_Play(bossBoom);
|
||||||
|
//if(GetCommonData("Ground Loops Cleared", 0) % 2 == 0 && GetCommonData("Ground Loops Cleared", 0) != 0){CreateExtendItem(EXTEND_SPELL, x, y);}
|
||||||
|
TExplosionA(x, y, 10, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
wait(max(25, 60-GetCommonData("Rank", 1)*5));
|
||||||
|
|
||||||
|
ObjEnemy_SetAutoDelete(enm, true);
|
||||||
|
|
||||||
|
async{
|
||||||
|
|
||||||
|
wait(5);
|
||||||
|
|
||||||
|
while(ObjEnemy_GetInfo(enm, INFO_LIFE) > 0){
|
||||||
|
|
||||||
|
if(ObjMove_GetY(enm) < 11*STG_HEIGHT/12 && ObjMove_GetY(enm) > STG_HEIGHT/12){
|
||||||
|
|
||||||
|
float xspd = rand(-(2+GetCommonDataPtr(RANK_PTR, 1)*0.5), 2+GetCommonDataPtr(RANK_PTR, 1)*0.5);
|
||||||
|
int bullet = CreateShotB2(ObjMove_GetX(enm), ObjMove_GetY(enm), xspd, -speedBullet, 0, speedBullet/(acceltimeBullet/2), xspd, speedBullet*1.5, graphicBullet, 10);
|
||||||
|
|
||||||
|
if(Obj_IsDeleted(enm)){Obj_Delete(bullet); break;}
|
||||||
|
|
||||||
|
else{
|
||||||
|
|
||||||
|
Shoot1;
|
||||||
|
_BulletRescale(bullet, scaleBullet, true, 1);
|
||||||
|
_Delay(bullet, 10);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
wait(delayBullet);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else{yield;}
|
||||||
|
|
||||||
|
yield;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
_EnemyItemDrop(
|
||||||
|
enm, false,
|
||||||
|
4, 6,
|
||||||
|
round(5+(GetCommonDataPtr(RANK_PTR, 1)-1)*1.25), round(8+(GetCommonDataPtr(RANK_PTR, 1)-1)*2),
|
||||||
|
180, largeEnemyHitbox*2.5
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return enm;
|
||||||
|
//ObjEnemy_SetDamageRate(enm, 100, 150);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
task _LilyWithFairy(
|
||||||
|
int renderFrog, int graphicBullet,
|
||||||
|
float lilyX, lilyY, speedMove,
|
||||||
|
float delayBullet, float speedBullet, float acceltimeBullet, float scaleBullet
|
||||||
|
){
|
||||||
|
|
||||||
|
float offsetX = 80;
|
||||||
|
float offsetY = 70;
|
||||||
|
|
||||||
|
int lilypad = _CreateEnemy(
|
||||||
|
false,
|
||||||
|
lilyX, lilyY, lilyX, lilyY, 5,
|
||||||
|
0.75, 0.75,
|
||||||
|
largeEnemyAltHP, 0, 0,
|
||||||
|
texEnm,
|
||||||
|
2304, 0, 2880, 512);
|
||||||
|
|
||||||
|
Obj_SetRenderPriorityI(lilypad, renderFrog-4);
|
||||||
|
|
||||||
|
ObjMove_SetSpeed(lilypad, speedMove);
|
||||||
|
ObjMove_SetAngle(lilypad, 90);
|
||||||
|
|
||||||
|
ObjEnemy_SetDamageRate(lilypad, 0, 0);
|
||||||
|
|
||||||
|
wait(15-GetCommonDataPtr(RANK_PTR, 1)-1);
|
||||||
|
|
||||||
|
ObjEnemy_SetAutoDelete(lilypad, true);
|
||||||
|
|
||||||
|
async{
|
||||||
|
|
||||||
|
float x = 0, y = 0;
|
||||||
|
|
||||||
|
wait(60);
|
||||||
|
|
||||||
|
while(ObjEnemy_GetInfo(lilypad, INFO_LIFE) > 0){
|
||||||
|
x = ObjMove_GetX(lilypad);
|
||||||
|
y = ObjMove_GetY(lilypad);
|
||||||
|
yield;
|
||||||
|
}
|
||||||
|
|
||||||
|
DeleteShotInCircle(TYPE_SHOT, TYPE_ITEM, x, y, 384);
|
||||||
|
ObjSound_Play(bossBoom);
|
||||||
|
//if(GetCommonData("Ground Loops Cleared", 0) % 2 == 0 && GetCommonData("Ground Loops Cleared", 0) != 0){CreateExtendItem(EXTEND_SPELL, x, y);}
|
||||||
|
TExplosionA(x, y, 10, 0.5);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
async{
|
||||||
|
|
||||||
|
int fairy = _CreateLilyFairy(
|
||||||
|
renderFrog, [0, 0, 0, 0], graphicBullet,
|
||||||
|
delayBullet, speedBullet, acceltimeBullet,
|
||||||
|
lilyX, lilyY, speedMove, scaleBullet
|
||||||
|
);
|
||||||
|
|
||||||
|
float x = 0, y = 0;
|
||||||
|
|
||||||
|
while(!Obj_IsDeleted(fairy)){
|
||||||
|
x = ObjMove_GetX(fairy);
|
||||||
|
y = ObjMove_GetY(fairy);
|
||||||
|
yield;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(
|
||||||
|
(-128 < x && x < STG_WIDTH+128)
|
||||||
|
&&
|
||||||
|
(-128 < y && y < STG_HEIGHT+128)
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
_PostDeath();
|
||||||
|
|
||||||
|
ObjMove_AddPatternA2(lilypad, 0, -speedMove*2, NO_CHANGE, speedMove/30, speedMove*1.25, 0);
|
||||||
|
ObjSprite2D_SetSourceRect(lilypad, 2304, 512, 2880, 1024);
|
||||||
|
_HandleEnemyWellbeing(lilypad, largeEnemyHitbox*2, 0);
|
||||||
|
ObjEnemy_SetDamageRate(lilypad, 100, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
task _PostDeath(){
|
||||||
|
|
||||||
|
async{
|
||||||
|
float spinRate = 9;
|
||||||
|
int i = 0;
|
||||||
|
while(!Obj_IsDeleted(lilypad)){
|
||||||
|
ObjRender_SetAngleZ(lilypad, ObjRender_GetAngleZ(lilypad)+spinRate);
|
||||||
|
spinRate = Interpolate_Decelerate(9, 4, i/240);
|
||||||
|
i = max(240, i+1);
|
||||||
|
yield;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ObjMove_AddPatternA2(lilypad, 0, -speedMove*3, NO_CHANGE, speedMove/15, speedMove*1.25, 0);
|
||||||
|
ObjSprite2D_SetSourceRect(lilypad, 2304, 512, 2880, 1024);
|
||||||
|
Obj_SetRenderPriorityI(lilypad, 41);
|
||||||
|
|
||||||
|
wait(90);
|
||||||
|
|
||||||
|
_HandleEnemyWellbeing(lilypad, largeEnemyHitbox*2, 0);
|
||||||
|
ObjEnemy_SetDamageRate(lilypad, 100, 100);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
_EnemyItemDrop(
|
||||||
|
lilypad, false,
|
||||||
|
6, 12,
|
||||||
|
round(12+(GetCommonDataPtr(RANK_PTR, 1)-1)*1.25), round(14+(GetCommonDataPtr(RANK_PTR, 1)-1)),
|
||||||
|
180, largeEnemyHitbox*3
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
task _LilypodWith4Frogs(
|
task _LilypodWith4Frogs(
|
||||||
int renderFrog, int graphicBullet,
|
int renderFrog, int graphicBullet,
|
||||||
|
@ -614,7 +839,6 @@ task _LilypodWith4Frogs(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
task _LilypodWith2Frog(
|
task _LilypodWith2Frog(
|
||||||
int renderFrog, int graphicBullet,
|
int renderFrog, int graphicBullet,
|
||||||
float lilyX, float lilyY,
|
float lilyX, float lilyY,
|
||||||
|
@ -658,6 +882,44 @@ task _LilypodWith2Frog(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task _LilypodWith1Frog(
|
||||||
|
int renderFrog, int graphicBullet,
|
||||||
|
float lilyX, float lilyY,
|
||||||
|
float angspaceFan, float speedFan1, float speedFan2, int widthFan, int stackFan, int delayFan, float scaleBullet,
|
||||||
|
float speedMove
|
||||||
|
){
|
||||||
|
|
||||||
|
int lilypad = _CreateEnemy(
|
||||||
|
false,
|
||||||
|
lilyX, lilyY, lilyX, lilyY, 5,
|
||||||
|
0.6, 0.6,
|
||||||
|
999, 0, 0,
|
||||||
|
texEnm,
|
||||||
|
1536, 256, 2048, 768);
|
||||||
|
|
||||||
|
Obj_SetRenderPriorityI(lilypad, renderFrog-4);
|
||||||
|
|
||||||
|
ObjMove_SetSpeed(lilypad, speedMove);
|
||||||
|
ObjMove_SetAngle(lilypad, 90);
|
||||||
|
|
||||||
|
ObjEnemy_SetDamageRate(lilypad, 0, 0);
|
||||||
|
|
||||||
|
wait(1);
|
||||||
|
|
||||||
|
ObjEnemy_SetAutoDelete(lilypad, true);
|
||||||
|
|
||||||
|
async{
|
||||||
|
|
||||||
|
_CreateFrog(
|
||||||
|
renderFrog, [1280, 512, 1536, 768], graphicBullet,
|
||||||
|
angspaceFan, speedFan1, speedFan2, widthFan, stackFan, delayFan,
|
||||||
|
lilyX, lilyY, speedMove, scaleBullet
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Leave this for the boss.
|
// Leave this for the boss.
|
||||||
|
|
||||||
task _CreateRybbShip(
|
task _CreateRybbShip(
|
||||||
|
@ -817,10 +1079,18 @@ task _LargeFairyAimedFan(
|
||||||
yield;
|
yield;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(
|
||||||
|
(-128 < x && x < STG_WIDTH+128)
|
||||||
|
&&
|
||||||
|
(-128 < y && y < STG_HEIGHT+128)
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
DeleteShotInCircle(TYPE_SHOT, TYPE_ITEM, x, y, 256);
|
DeleteShotInCircle(TYPE_SHOT, TYPE_ITEM, x, y, 256);
|
||||||
ObjSound_Play(bossBoom);
|
ObjSound_Play(bossBoom);
|
||||||
if(checkBomb){if(GetCommonData("Flying Loops Cleared", 0) % 4 == 0 && GetCommonData("Flying Loops Cleared", 0) != 0){CreateExtendItem(EXTEND_SPELL, x, y);}}
|
if(checkBomb){if(GetCommonData("Flying Loops Cleared", 0) % 4 == 0 && GetCommonData("Flying Loops Cleared", 0) != 0){CreateExtendItem(EXTEND_SPELL, x, y);}}
|
||||||
TExplosionA(x, y, 10, 0.5);
|
TExplosionA(x, y, 10, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -866,6 +1136,114 @@ task _LargeFairyAimedFan(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task _LargeDragonGuy(
|
||||||
|
int renderPriority, int[] rect,
|
||||||
|
float enmX, float enmY, float spdMove, float angMove, int timeDecel, int timeStay, int graphicBullet,
|
||||||
|
int stackLine, float angOffset, float denseRing, float speedBullet, int delayRing, float scaleBullet
|
||||||
|
){
|
||||||
|
|
||||||
|
// Spawns enemy.
|
||||||
|
|
||||||
|
int enm = _CreateEnemy(
|
||||||
|
enmX, enmY, enmX, enmY, 5,
|
||||||
|
largeEnemyScale*1.1, largeEnemyScale*1.1,
|
||||||
|
largeEnemyHP*1.25, largeEnemyHitbox*1.1, 0,
|
||||||
|
texEnm,
|
||||||
|
rect[0], rect[1], rect[2], rect[3]);
|
||||||
|
|
||||||
|
Obj_SetRenderPriorityI(enm, renderPriority);
|
||||||
|
|
||||||
|
ObjMove_SetSpeed(enm, spdMove*2);
|
||||||
|
ObjMove_SetAngle(enm, angMove);
|
||||||
|
|
||||||
|
ObjEnemy_SetDamageRate(enm, 0, 0);
|
||||||
|
|
||||||
|
async{
|
||||||
|
|
||||||
|
ObjMove_AddPatternA2(enm, 0, NO_CHANGE, NO_CHANGE, -spdMove*2/timeDecel, 0, 0);
|
||||||
|
wait(30+timeStay);
|
||||||
|
ObjMove_AddPatternA2(enm, 0, NO_CHANGE, NO_CHANGE, spdMove/timeDecel, spdMove, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
async{
|
||||||
|
float x = 0, y = 0;
|
||||||
|
|
||||||
|
wait(max(10, 30-GetCommonData("Rank", 0)*5));
|
||||||
|
|
||||||
|
while(ObjEnemy_GetInfo(enm, INFO_LIFE) > 0){
|
||||||
|
x = ObjMove_GetX(enm);
|
||||||
|
y = ObjMove_GetY(enm);
|
||||||
|
yield;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(
|
||||||
|
(-128 < x && x < STG_WIDTH+128)
|
||||||
|
&&
|
||||||
|
(-128 < y && y < STG_HEIGHT+128)
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
DeleteShotAll(TYPE_SHOT, TYPE_ITEM);
|
||||||
|
ObjSound_Play(bossBoom);
|
||||||
|
TExplosionA(x, y, 10, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
wait(max(10, 30-GetCommonData("Rank", 0)*5));
|
||||||
|
|
||||||
|
ObjEnemy_SetAutoDelete(enm, true);
|
||||||
|
|
||||||
|
async{
|
||||||
|
|
||||||
|
//wait(5);
|
||||||
|
float baseAng = GetAngleToPlayer(enm);
|
||||||
|
int delay = 0;
|
||||||
|
|
||||||
|
while(ObjEnemy_GetInfo(enm, INFO_LIFE) > 0){
|
||||||
|
|
||||||
|
int delay = 10;
|
||||||
|
|
||||||
|
if(ObjMove_GetY(enm) < 10*STG_HEIGHT/12-100 && ObjMove_GetY(enm) > 1*STG_HEIGHT/12-100){
|
||||||
|
|
||||||
|
ascent(i in 0..stackLine){
|
||||||
|
ascent(j in 0..denseRing){
|
||||||
|
int bullet = CreateShotA1(ObjMove_GetX(enm), ObjMove_GetY(enm), speedBullet, baseAng+j*360/denseRing, graphicBullet, delay);
|
||||||
|
|
||||||
|
_BulletRescale(bullet, scaleBullet, true, 1);
|
||||||
|
_Delay(bullet, 10+delay);
|
||||||
|
|
||||||
|
if(ObjEnemy_GetInfo(enm, INFO_LIFE) <= 0){Obj_Delete(bullet);}
|
||||||
|
else{
|
||||||
|
Shoot2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delay += 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
wait(delayRing);
|
||||||
|
baseAng += angOffset;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else{yield;}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
_EnemyItemDrop(
|
||||||
|
enm, true,
|
||||||
|
15, 6,
|
||||||
|
round(20+(GetCommonDataPtr(RANK_PTR, 1)-1)*2.25), round(12+(GetCommonDataPtr(RANK_PTR, 1)-1)*2),
|
||||||
|
210, largeEnemyHitbox*3
|
||||||
|
);
|
||||||
|
|
||||||
|
//ObjEnemy_SetDamageRate(enm, 100, 150);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
task _WaitForAutoDelete(int shot, int timeWait){
|
task _WaitForAutoDelete(int shot, int timeWait){
|
||||||
ObjShot_SetAutoDelete(shot, false);
|
ObjShot_SetAutoDelete(shot, false);
|
||||||
wait(timeWait);
|
wait(timeWait);
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 597 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.4 MiB |
|
@ -8,6 +8,8 @@
|
||||||
|
|
||||||
#ReplayName["Cirno"]
|
#ReplayName["Cirno"]
|
||||||
|
|
||||||
|
#include "script/KevinSystem/kevin_system/Lib_Const.dnh"
|
||||||
|
|
||||||
#include "script/KevinSystem/Kevin_PlayerLib.txt"
|
#include "script/KevinSystem/Kevin_PlayerLib.txt"
|
||||||
#include "script/KevinSystem/PlayerSoundLib.dnh"
|
#include "script/KevinSystem/PlayerSoundLib.dnh"
|
||||||
|
|
||||||
|
@ -96,6 +98,7 @@ const EV_PIV_2000 = EV_USER + 103i; // What.
|
||||||
|
|
||||||
//SetPlayerSpell(99);
|
//SetPlayerSpell(99);
|
||||||
|
|
||||||
|
_Countdown();
|
||||||
_CAVELaser();
|
_CAVELaser();
|
||||||
_ShotType();
|
_ShotType();
|
||||||
//UniversalAlphaHandle(_shotArray);
|
//UniversalAlphaHandle(_shotArray);
|
||||||
|
@ -120,7 +123,7 @@ const EV_PIV_2000 = EV_USER + 103i; // What.
|
||||||
// Delete effect
|
// Delete effect
|
||||||
case(EV_DELETE_SHOT_PLAYER){
|
case(EV_DELETE_SHOT_PLAYER){
|
||||||
|
|
||||||
if(GetAreaCommonData("Config", "EffectCut", 0) >= 3){}
|
if(GetCommonDataPtr(EFFECTCUT_PTR, 0) >= 3){}
|
||||||
|
|
||||||
else{
|
else{
|
||||||
let graphic = GetEventArgument(2);
|
let graphic = GetEventArgument(2);
|
||||||
|
@ -182,6 +185,7 @@ const EV_PIV_2000 = EV_USER + 103i; // What.
|
||||||
case(EV_PLAYER_REBIRTH){
|
case(EV_PLAYER_REBIRTH){
|
||||||
ripplayer = false;
|
ripplayer = false;
|
||||||
SetPlayerInvincibilityFrame(180);
|
SetPlayerInvincibilityFrame(180);
|
||||||
|
//_Countdown();
|
||||||
_SigilCall(false, teamimg, 768+256, 512, 768+512, 768, objPlayer, 150);
|
_SigilCall(false, teamimg, 768+256, 512, 768+512, 768, objPlayer, 150);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -466,7 +470,7 @@ task _ShotType(){
|
||||||
task UpdateParam(){
|
task UpdateParam(){
|
||||||
loop{
|
loop{
|
||||||
shotDamage = 2.4+(GetCommonData("Rank", 1)*0.3);
|
shotDamage = 2.4+(GetCommonData("Rank", 1)*0.3);
|
||||||
shotScale = 0.6+(GetCommonData("Rank", 1)*0.125);
|
shotScale = 0.55+(GetCommonData("Rank", 1)*0.1);
|
||||||
shotSpeed = 50+(GetCommonData("Rank", 1)*1.25);
|
shotSpeed = 50+(GetCommonData("Rank", 1)*1.25);
|
||||||
wait(60);
|
wait(60);
|
||||||
}
|
}
|
||||||
|
@ -692,7 +696,7 @@ task parameterrender(){
|
||||||
SetPlayerDownStateFrame(60);
|
SetPlayerDownStateFrame(60);
|
||||||
SetPlayerAutoItemCollectLine(GetStgFrameHeight/3);
|
SetPlayerAutoItemCollectLine(GetStgFrameHeight/3);
|
||||||
SetPlayerRebirthLossFrame(0);
|
SetPlayerRebirthLossFrame(0);
|
||||||
ObjPlayer_AddIntersectionCircleA1(objPlayer, 0, 0, 1.25, 40);
|
ObjPlayer_AddIntersectionCircleA1(objPlayer, 0, 0, 0, 40);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -762,17 +766,19 @@ task _Bomb(){
|
||||||
// Preparation
|
// Preparation
|
||||||
SetForbidPlayerShot(true);
|
SetForbidPlayerShot(true);
|
||||||
SetForbidPlayerSpell(true);
|
SetForbidPlayerSpell(true);
|
||||||
SetPlayerInvincibilityFrame(240);
|
SetPlayerInvincibilityFrame(270);
|
||||||
// Spell object
|
// Spell object
|
||||||
let manageObj = GetSpellManageObject(); // SPELL BEGINS
|
let manageObj = GetSpellManageObject(); // SPELL BEGINS
|
||||||
ObjSpell_Regist(manageObj);
|
ObjSpell_Regist(manageObj);
|
||||||
//ObjSound_Play(bombsfx);
|
//ObjSound_Play(bombsfx);
|
||||||
SetPlayerSpeed(PlayerSpd[0]*1.5, PlayerSpd[1]*1.5);
|
SetPlayerSpeed(PlayerSpd[0]*2, PlayerSpd[1]*2);
|
||||||
|
|
||||||
// 180 seconds DEATH LASER
|
// 180 seconds DEATH LASER
|
||||||
|
|
||||||
//SetCommonData("IsBomb", true);
|
//SetCommonData("IsBomb", true);
|
||||||
|
|
||||||
|
//_Countdown(270);
|
||||||
|
|
||||||
async{
|
async{
|
||||||
loop(90){
|
loop(90){
|
||||||
Fire();
|
Fire();
|
||||||
|
@ -782,7 +788,7 @@ task _Bomb(){
|
||||||
}
|
}
|
||||||
|
|
||||||
task Fire(){
|
task Fire(){
|
||||||
let shotA = CreatePlayerShotA1(playerX, playerY, 25, rand(-15, 195), shotDamage/10, 25, 2);
|
let shotA = CreatePlayerShotA1(playerX, playerY, 25, rand(-15, 195), shotDamage/20, 25, 2);
|
||||||
_BulletRescalePlayer(shotA, 1.25, true, 1);
|
_BulletRescalePlayer(shotA, 1.25, true, 1);
|
||||||
ObjRender_SetAlpha(shotA, 255);
|
ObjRender_SetAlpha(shotA, 255);
|
||||||
Fading(shotA);
|
Fading(shotA);
|
||||||
|
@ -811,15 +817,41 @@ task _Bomb(){
|
||||||
|
|
||||||
SetPlayerSpeed(PlayerSpd[0], PlayerSpd[1]);
|
SetPlayerSpeed(PlayerSpd[0], PlayerSpd[1]);
|
||||||
SetForbidPlayerShot(false);
|
SetForbidPlayerShot(false);
|
||||||
//SetCommonData("IsBomb", false);
|
Obj_Delete(manageObj); // !!! IMPORTANT !!!
|
||||||
wait(60);
|
wait(60);
|
||||||
SetForbidPlayerSpell(false);
|
SetForbidPlayerSpell(false);
|
||||||
Obj_Delete(manageObj); // !!! IMPORTANT !!!
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Screenshake function for bomb's duration - adapted from Sparen's tutorials
|
// Screenshake function for bomb's duration - adapted from Sparen's tutorials
|
||||||
|
|
||||||
|
task _Countdown(){
|
||||||
|
|
||||||
|
//int timer = time;
|
||||||
|
int counter = CreateTextObject(
|
||||||
|
playerX, playerY, 58,
|
||||||
|
"", "Origami Mommy",
|
||||||
|
0xFFFFFF, 0xFFFFFF,
|
||||||
|
0x1AEC8C, 10,
|
||||||
|
Obj_GetRenderPriorityI(objPlayer)+1
|
||||||
|
);
|
||||||
|
|
||||||
|
ObjText_SetHorizontalAlignment(counter, ALIGNMENT_CENTER);
|
||||||
|
|
||||||
|
while(true){
|
||||||
|
|
||||||
|
if(GetPlayerInvincibilityFrame() <= 0){Obj_SetVisible(counter, false);}
|
||||||
|
else{Obj_SetVisible(counter, true);}
|
||||||
|
ObjRender_SetPosition(counter, playerX, playerY - 140, 1);
|
||||||
|
ObjText_SetText(counter, IntToString(GetPlayerInvincibilityFrame()));
|
||||||
|
yield;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//Obj_Delete(counter);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
task _BombShake(shaketime, intensity){
|
task _BombShake(shaketime, intensity){
|
||||||
|
|
||||||
float baseintensity = intensity;
|
float baseintensity = intensity;
|
||||||
|
@ -840,3 +872,27 @@ task _BombShake(shaketime, intensity){
|
||||||
yield;
|
yield;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function CreateTextObject(
|
||||||
|
float mx, my, size,
|
||||||
|
string text, font,
|
||||||
|
int colorTop, colorBottom,
|
||||||
|
int borderColor, borderWidth,
|
||||||
|
int renderPriority
|
||||||
|
){
|
||||||
|
|
||||||
|
let obj = ObjText_Create();
|
||||||
|
ObjText_SetText(obj, text);
|
||||||
|
ObjText_SetFontSize(obj, size);
|
||||||
|
ObjText_SetFontType(obj, font);
|
||||||
|
ObjText_SetFontColorTop(obj, colorTop);
|
||||||
|
ObjText_SetFontColorBottom(obj, colorBottom);
|
||||||
|
ObjText_SetFontBorderType(obj, BORDER_FULL);
|
||||||
|
ObjText_SetFontBorderColor(obj, borderColor);
|
||||||
|
ObjText_SetFontBorderWidth(obj, borderWidth);
|
||||||
|
Obj_SetRenderPriorityI(obj, renderPriority);
|
||||||
|
ObjRender_SetX(obj, mx);
|
||||||
|
ObjRender_SetY(obj, my);
|
||||||
|
return obj;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
BIN
th_dnh_ph3sx.log
BIN
th_dnh_ph3sx.log
Binary file not shown.
Loading…
Reference in New Issue