Update 1.01a Content Complete.

This commit is contained in:
kevinmonitor 2022-09-22 19:37:16 +07:00
parent dba085c30f
commit c6c87d7c2f
20 changed files with 698 additions and 59 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -100,7 +100,7 @@ let pointerPIV = LoadAreaCommonDataValuePointer("PIV", "currentvalue", 10000);
float[] pos = GetEventArgument(0);
//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]);
else{_ExplosionEffect(pos[0], pos[1], PetalEffect);}

View File

@ -195,18 +195,11 @@ function <int> _CreateEnemy(
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){
enmX = ObjMove_GetX(enemyID);
enmY = ObjMove_GetY(enemyID);
if(ObjEnemy_GetInfo(enemyID, INFO_LIFE) <= 0){break;}
else{
ObjEnemy_SetIntersectionCircleToShot(enemyID, enmX, enmY, sizeHitbox);
}
ObjEnemy_SetIntersectionCircleToShot(enemyID, ObjMove_GetX(enemyID), ObjMove_GetY(enemyID), sizeHitbox);
//ObjEnemy_SetIntersectionCircleToPlayer(enemyID, ObjMove_GetX(enemyID), ObjMove_GetY(enemyID), sizeHurtbox);
yield;

View File

@ -22,16 +22,9 @@
// 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_HEIGHT = GetStgFrameHeight();
let texEnm = "script/game/resourceLib/EnmTexture.png";
let blipVol = GetAreaCommonData("Config", "SEVol", 100) * 0.01;
InstallFont("script/KevinSystem/font/Connecting Chain Handserif.ttf");

View File

@ -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);}
return;

View File

@ -9,7 +9,7 @@ function CreatePIVItem(itemtype, x, y){
ObjItem_SetAutoDelete(PIVItem, false);
ObjMove_SetAngle(PIVItem, 90);
ObjMove_SetSpeed(PIVItem, -20);
ObjMove_SetSpeed(PIVItem, -10);
ObjMove_SetAcceleration(PIVItem, 1);
ObjMove_SetMaxSpeed(PIVItem, 0);

View File

@ -7,5 +7,13 @@ const EV_DROP_EXTEND = EV_USER + 203i;
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 ITEMID_PTR = LoadAreaCommonDataValuePointer("ScriptID", "ItemID", 0);

View File

@ -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;
}

View File

@ -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);

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

View File

@ -8,6 +8,8 @@
#ReplayName["Cirno"]
#include "script/KevinSystem/kevin_system/Lib_Const.dnh"
#include "script/KevinSystem/Kevin_PlayerLib.txt"
#include "script/KevinSystem/PlayerSoundLib.dnh"
@ -96,6 +98,7 @@ const EV_PIV_2000 = EV_USER + 103i; // What.
//SetPlayerSpell(99);
_Countdown();
_CAVELaser();
_ShotType();
//UniversalAlphaHandle(_shotArray);
@ -120,7 +123,7 @@ const EV_PIV_2000 = EV_USER + 103i; // What.
// Delete effect
case(EV_DELETE_SHOT_PLAYER){
if(GetAreaCommonData("Config", "EffectCut", 0) >= 3){}
if(GetCommonDataPtr(EFFECTCUT_PTR, 0) >= 3){}
else{
let graphic = GetEventArgument(2);
@ -182,6 +185,7 @@ const EV_PIV_2000 = EV_USER + 103i; // What.
case(EV_PLAYER_REBIRTH){
ripplayer = false;
SetPlayerInvincibilityFrame(180);
//_Countdown();
_SigilCall(false, teamimg, 768+256, 512, 768+512, 768, objPlayer, 150);
}
@ -466,7 +470,7 @@ task _ShotType(){
task UpdateParam(){
loop{
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);
wait(60);
}
@ -692,7 +696,7 @@ task parameterrender(){
SetPlayerDownStateFrame(60);
SetPlayerAutoItemCollectLine(GetStgFrameHeight/3);
SetPlayerRebirthLossFrame(0);
ObjPlayer_AddIntersectionCircleA1(objPlayer, 0, 0, 1.25, 40);
ObjPlayer_AddIntersectionCircleA1(objPlayer, 0, 0, 0, 40);
}
@ -762,17 +766,19 @@ task _Bomb(){
// Preparation
SetForbidPlayerShot(true);
SetForbidPlayerSpell(true);
SetPlayerInvincibilityFrame(240);
SetPlayerInvincibilityFrame(270);
// Spell object
let manageObj = GetSpellManageObject(); // SPELL BEGINS
ObjSpell_Regist(manageObj);
//ObjSound_Play(bombsfx);
SetPlayerSpeed(PlayerSpd[0]*1.5, PlayerSpd[1]*1.5);
SetPlayerSpeed(PlayerSpd[0]*2, PlayerSpd[1]*2);
// 180 seconds DEATH LASER
//SetCommonData("IsBomb", true);
//_Countdown(270);
async{
loop(90){
Fire();
@ -782,7 +788,7 @@ task _Bomb(){
}
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);
ObjRender_SetAlpha(shotA, 255);
Fading(shotA);
@ -811,15 +817,41 @@ task _Bomb(){
SetPlayerSpeed(PlayerSpd[0], PlayerSpd[1]);
SetForbidPlayerShot(false);
//SetCommonData("IsBomb", false);
Obj_Delete(manageObj); // !!! IMPORTANT !!!
wait(60);
SetForbidPlayerSpell(false);
Obj_Delete(manageObj); // !!! IMPORTANT !!!
}
// 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){
float baseintensity = intensity;
@ -840,3 +872,27 @@ task _BombShake(shaketime, intensity){
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.