Update 1.01a Content Complete.
This commit is contained in:
parent
dba085c30f
commit
c6c87d7c2f
20 changed files with 698 additions and 59 deletions
|
@ -31,7 +31,7 @@ int[] enmGround = [];
|
|||
|
||||
int[] rankAvg = [];
|
||||
|
||||
let SYSTEMID_PTR_2 = LoadAreaCommonDataValuePointer("ScriptID", "SystemID", 0);
|
||||
//let SYSTEMID_PTR_2 = LoadAreaCommonDataValuePointer("ScriptID", "SystemID", 0);
|
||||
|
||||
// Includes ahoy
|
||||
|
||||
|
@ -69,6 +69,7 @@ let SYSTEMID_PTR_2 = LoadAreaCommonDataValuePointer("ScriptID", "SystemID", 0);
|
|||
bossTask();
|
||||
mainTask();
|
||||
groundTask();
|
||||
|
||||
curEnmManage();
|
||||
|
||||
//SetCommonData("Rank", 9);
|
||||
|
@ -134,8 +135,9 @@ task curEnmManage(){
|
|||
enmFly = [];
|
||||
allEnm = GetIntersectionRegistedEnemyID();
|
||||
for each (int enm in ref allEnm){
|
||||
if(Obj_GetRenderPriorityI(enm) <= 34){enmGround ~= [enm];}
|
||||
else if(Obj_GetRenderPriorityI(enm) >= 35){enmFly ~= [enm];}
|
||||
if(Obj_GetRenderPriorityI(enm) <= 35){enmGround ~= [enm];}
|
||||
else if(Obj_GetRenderPriorityI(enm) >= 36 && Obj_GetRenderPriorityI(enm) < 41){enmFly ~= [enm];}
|
||||
else{}
|
||||
}
|
||||
wait(30);
|
||||
}
|
||||
|
@ -559,13 +561,18 @@ task _BossExplosion(
|
|||
|
||||
//NotifyEventAll(EV_DROP_POINT_ENEMY, [enmX, enmY], timer, maxTimer, minPoint, maxPoint);
|
||||
|
||||
SetPlayerInvincibilityFrame(300);
|
||||
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){
|
||||
//LoadEx(bossBoom, "script/game/resourceLib/bigBoom.ogg", 30 * SFXVol);
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -582,7 +589,7 @@ task _BossExplosion(
|
|||
|
||||
_EndShake(120, 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);
|
||||
|
@ -640,6 +647,7 @@ task EndBonus(int ID, int IDship){
|
|||
|
||||
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-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)));
|
||||
|
@ -650,7 +658,7 @@ task EndBonus(int ID, int IDship){
|
|||
|
||||
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;
|
||||
|
||||
|
@ -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{
|
||||
while(ObjEnemy_GetInfo(bossObj, INFO_LIFE) > 0){
|
||||
rankAvg ~= [rank];
|
||||
|
@ -708,10 +728,10 @@ task testTask(){
|
|||
while(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) > 20){
|
||||
|
||||
//Wave4();
|
||||
WaveGround1();
|
||||
Wave6();
|
||||
|
||||
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);
|
||||
yield;
|
||||
}
|
||||
|
@ -722,16 +742,55 @@ task groundTask(){
|
|||
|
||||
wait(15);
|
||||
while(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) > 20){
|
||||
|
||||
WaveGround1();
|
||||
wait(max(0, 16-4*rank));
|
||||
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
||||
|
||||
WaveGround2();
|
||||
wait(max(0, 16-4*rank));
|
||||
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
||||
WaveGround3();
|
||||
|
||||
if(GetCommonData("Ground Loops Cleared", 0) % 2 != 0){
|
||||
|
||||
WaveGround3();
|
||||
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("Ground Loops Cleared", GetCommonData("Ground Loops Cleared", 0)+1);
|
||||
|
||||
yield;
|
||||
}
|
||||
|
||||
|
@ -747,20 +806,16 @@ task mainTask {
|
|||
task Flying(){
|
||||
while(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) > 20){
|
||||
Wave1();
|
||||
//wait(max(0, 5-1*rank));
|
||||
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
||||
Wave2();
|
||||
//wait(max(0, 5-1*rank));
|
||||
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
||||
//SetCommonData("Rank", clamp(GetCommonData("Rank", 1)+1, 1, 9));
|
||||
Wave3();
|
||||
//wait(max(0, 5-1*rank));
|
||||
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
||||
Wave4();
|
||||
//wait(max(0, 5-1*rank));
|
||||
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 20){break;}
|
||||
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("Flying Loops Cleared", GetCommonData("Flying Loops Cleared", 0)+1);
|
||||
yield;
|
||||
|
@ -769,10 +824,6 @@ task mainTask {
|
|||
|
||||
}
|
||||
|
||||
function <void> GetReady(){
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
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(){
|
||||
|
||||
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){
|
||||
|
||||
float baseintensity = intensity;
|
||||
|
@ -1090,4 +1280,25 @@ task _EndShake(shaketime, intensity){
|
|||
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(
|
||||
int renderPriority, int[] rect, int graphicBullet,
|
||||
float angSpiral, float delaySpiral, float speedSpiral,
|
||||
|
@ -429,7 +433,7 @@ task _CreateKingFrog(
|
|||
|
||||
float x, y;
|
||||
|
||||
wait(60);
|
||||
wait(60-GetCommonDataPtr(RANK_PTR, 1)*4);
|
||||
|
||||
while(ObjEnemy_GetInfo(enm, INFO_LIFE) > 0){
|
||||
x = ObjMove_GetX(enm);
|
||||
|
@ -437,14 +441,21 @@ task _CreateKingFrog(
|
|||
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);
|
||||
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(60);
|
||||
wait(60-GetCommonDataPtr(RANK_PTR, 1)*4);
|
||||
|
||||
ObjEnemy_SetAutoDelete(enm, true);
|
||||
|
||||
|
@ -540,7 +551,7 @@ task _LilypodWithKingFrog(
|
|||
|
||||
ObjEnemy_SetDamageRate(lilypad, 0, 0);
|
||||
|
||||
wait(15);
|
||||
wait(15-GetCommonDataPtr(RANK_PTR, 1)-1);
|
||||
|
||||
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(
|
||||
int renderFrog, int graphicBullet,
|
||||
|
@ -614,7 +839,6 @@ task _LilypodWith4Frogs(
|
|||
|
||||
}
|
||||
|
||||
|
||||
task _LilypodWith2Frog(
|
||||
int renderFrog, int graphicBullet,
|
||||
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.
|
||||
|
||||
task _CreateRybbShip(
|
||||
|
@ -817,10 +1079,18 @@ task _LargeFairyAimedFan(
|
|||
yield;
|
||||
}
|
||||
|
||||
DeleteShotInCircle(TYPE_SHOT, TYPE_ITEM, x, y, 256);
|
||||
ObjSound_Play(bossBoom);
|
||||
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);
|
||||
if(
|
||||
(-128 < x && x < STG_WIDTH+128)
|
||||
&&
|
||||
(-128 < y && y < STG_HEIGHT+128)
|
||||
)
|
||||
|
||||
{
|
||||
DeleteShotInCircle(TYPE_SHOT, TYPE_ITEM, x, y, 256);
|
||||
ObjSound_Play(bossBoom);
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -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){
|
||||
ObjShot_SetAutoDelete(shot, false);
|
||||
wait(timeWait);
|
||||
|
|
BIN
script/game/PackageLib/Manual_JP.png
Normal file
BIN
script/game/PackageLib/Manual_JP.png
Normal file
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 |
Loading…
Add table
Add a link
Reference in a new issue