v1.00b2
|
@ -0,0 +1,53 @@
|
||||||
|
CONTROLS:
|
||||||
|
|
||||||
|
KEY (DEFAULT) ACTION
|
||||||
|
|
||||||
|
Arrow Keys Movement
|
||||||
|
Z/SHOT Select/Hold to Fire Blast (TYPE 1)
|
||||||
|
X/SPELL Cancel/Hold to use BULLET GOLEM (Limited Power, Refillable)
|
||||||
|
C/USER 1 Hold to use Fire Blast (TYPE 2)
|
||||||
|
Shift/SLOW Hold to slow player for precise movement
|
||||||
|
Esc Pause (in-game)
|
||||||
|
Esc+R Quick Retry (In-game)
|
||||||
|
Esc+Q Quick Exit to Title (In-game)
|
||||||
|
|
||||||
|
These controls can all be re-binded in config.exe.
|
||||||
|
You can also set the game window size and anti-aliasing level.
|
||||||
|
|
||||||
|
MANUAL:
|
||||||
|
|
||||||
|
READ THE IN-GAME MANUAL!!! PLEASE!!!!!!!!!!!
|
||||||
|
|
||||||
|
SCORE RANKINGS:
|
||||||
|
|
||||||
|
As the in-game manual mentions, your final score will get a letter ranking (from C to S).
|
||||||
|
The exact thresholds for each letter ranking are:
|
||||||
|
|
||||||
|
U-Rank (Unbeatable): 300,000,000
|
||||||
|
S-Rank: 240,000,000
|
||||||
|
A-Rank: 160,000,000
|
||||||
|
B-Rank: 100,000,000
|
||||||
|
C-Rank: Lower scores
|
||||||
|
|
||||||
|
CHANGELOG:
|
||||||
|
|
||||||
|
1.00b2 (QoL)
|
||||||
|
|
||||||
|
- No gameplay changes: old replays are flagged as compatible.
|
||||||
|
|
||||||
|
- Fixed the background opacity setting not working properly.
|
||||||
|
- Fixed misaccuracies in granting score rankings.
|
||||||
|
- Narumi character artwork revamped slightly.
|
||||||
|
- Added "Explosion Opacity" option to the Settings Menu. This option lets you set the opacity of enemy explosions.
|
||||||
|
- Added an additional ranking for obtaining 400 million points, because someone apparently got really close to that. seriously what the hell
|
||||||
|
|
||||||
|
1.00b
|
||||||
|
|
||||||
|
- Fixed a bug where you could continue to use BULLET GOLEM after running out of energy.
|
||||||
|
- Buffed Narumi's damage by 12.5%.
|
||||||
|
- Shrunk Narumi's hitbox size from 2px to 1px.
|
||||||
|
- Re-positioned some bullet hitboxes.
|
||||||
|
|
||||||
|
1.00a
|
||||||
|
|
||||||
|
- Initial release.
|
Before Width: | Height: | Size: 892 KiB |
Before Width: | Height: | Size: 506 KiB |
Before Width: | Height: | Size: 203 KiB |
Before Width: | Height: | Size: 270 KiB |
|
@ -41,7 +41,7 @@ let POINTER_CHAIN = LoadAreaCommonDataValuePointer("PIV", "ChainAmount", 1);
|
||||||
|
|
||||||
@Initialize {
|
@Initialize {
|
||||||
|
|
||||||
SetIntersectionVisualization(true);
|
//SetIntersectionVisualization(true);
|
||||||
|
|
||||||
SetAutoDeleteObject(true);
|
SetAutoDeleteObject(true);
|
||||||
|
|
||||||
|
@ -463,16 +463,18 @@ task EndBonus(){
|
||||||
|
|
||||||
string RANK_TITLE = "C";
|
string RANK_TITLE = "C";
|
||||||
|
|
||||||
if(scoreMilNum > 300) {RANK_TITLE = "UNBEATABLE!!!";}
|
if(scoreMilNum >= 400) {RANK_TITLE = "okay seriously what the fuck";}
|
||||||
else if(scoreMilNum > 240){RANK_TITLE = "RANK S!!";}
|
else if(scoreMilNum >= 300) {RANK_TITLE = "UNBEATABLE!!!";}
|
||||||
else if(scoreMilNum > 160){RANK_TITLE = "RANK A!";}
|
else if(scoreMilNum >= 240){RANK_TITLE = "RANK S!!";}
|
||||||
else if(scoreMilNum > 100){RANK_TITLE = "RANK B";}
|
else if(scoreMilNum >= 160){RANK_TITLE = "RANK A!";}
|
||||||
|
else if(scoreMilNum >= 100){RANK_TITLE = "RANK B";}
|
||||||
else {RANK_TITLE = "RANK C";}
|
else {RANK_TITLE = "RANK C";}
|
||||||
|
|
||||||
if(scoreMilNum > 300) {_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2+140, 40, 0xFF1B1B, RANK_TITLE);}
|
if(scoreMilNum >= 400) {_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2+140, 40, 0xFF1B1B, RANK_TITLE);}
|
||||||
else if(scoreMilNum > 240) {_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2+140, 40, 0xFFA31B, RANK_TITLE);}
|
else if(scoreMilNum >= 300) {_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2+140, 40, 0xFF1B1B, RANK_TITLE);}
|
||||||
else if(scoreMilNum > 160) {_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2+140, 40, 0x5CEB0F, RANK_TITLE);}
|
else if(scoreMilNum >= 240) {_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2+140, 40, 0xFFA31B, RANK_TITLE);}
|
||||||
else if(scoreMilNum > 100) {_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2+140, 40, 0x0F9BEB, RANK_TITLE);}
|
else if(scoreMilNum >= 160) {_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2+140, 40, 0x5CEB0F, RANK_TITLE);}
|
||||||
|
else if(scoreMilNum >= 100) {_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2+140, 40, 0x0F9BEB, RANK_TITLE);}
|
||||||
else {_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2+140, 40, 0xB10FEB, RANK_TITLE);}
|
else {_CreateBonusText(STG_WIDTH/2, STG_HEIGHT/2+140, 40, 0xB10FEB, RANK_TITLE);}
|
||||||
|
|
||||||
wait(60);
|
wait(60);
|
||||||
|
|
Before Width: | Height: | Size: 373 KiB After Width: | Height: | Size: 468 KiB |
After Width: | Height: | Size: 330 KiB |
After Width: | Height: | Size: 6.9 MiB |
|
@ -1,4 +1,5 @@
|
||||||
let bossBG = "script/Jam10/resourceLib/Jam10_BG.png";
|
let bossBG = "script/Jam10/resourceLib/Jam10_BG.png";
|
||||||
|
let overlayBG = "script/Jam10/resourceLib/Overlay.png";
|
||||||
let soundWarn = ObjSound_Create();
|
let soundWarn = ObjSound_Create();
|
||||||
let alphaMax = 255*((GetAreaCommonData("Config", "BGOpacity", 100))/100);
|
let alphaMax = 255*((GetAreaCommonData("Config", "BGOpacity", 100))/100);
|
||||||
let exVol = GetAreaCommonData("Config", "SEVol", 100) * 0.01;
|
let exVol = GetAreaCommonData("Config", "SEVol", 100) * 0.01;
|
||||||
|
@ -20,7 +21,14 @@ function <void> _ScrollBackground(){
|
||||||
ObjRender_SetScaleXYZ(BossImg, 1);
|
ObjRender_SetScaleXYZ(BossImg, 1);
|
||||||
ObjRender_SetPosition(BossImg, STG_WIDTH/2, STG_HEIGHT/2, 1);
|
ObjRender_SetPosition(BossImg, STG_WIDTH/2, STG_HEIGHT/2, 1);
|
||||||
Obj_SetRenderPriorityI(BossImg, 24);
|
Obj_SetRenderPriorityI(BossImg, 24);
|
||||||
|
|
||||||
|
int OverlayImg = _Create2DImage(overlayBG, [0, 0, 640*4, 720]);
|
||||||
|
ObjRender_SetScaleXYZ(OverlayImg, 1);
|
||||||
|
ObjRender_SetPosition(OverlayImg, STG_WIDTH/2, STG_HEIGHT/2, 1);
|
||||||
|
Obj_SetRenderPriorityI(OverlayImg, 23);
|
||||||
|
|
||||||
|
ObjRender_SetAlpha(OverlayImg, 255);
|
||||||
|
|
||||||
float scrollSpeed = 0;
|
float scrollSpeed = 0;
|
||||||
float maxscrollSpeed = 14;
|
float maxscrollSpeed = 14;
|
||||||
int curScroll = 0;
|
int curScroll = 0;
|
||||||
|
|
After Width: | Height: | Size: 5.2 KiB |
|
@ -60,6 +60,8 @@ task _ExplosionEffect(float enmX, float enmY, int targetList){
|
||||||
int effectNum = 5;
|
int effectNum = 5;
|
||||||
int dir = 1;
|
int dir = 1;
|
||||||
|
|
||||||
|
float maxAlpha = (GetAreaCommonData("Config", "ExplosionOpacity", 100) * 0.01) * 255;
|
||||||
|
|
||||||
Obj_SetRenderPriorityI(targetList, 40);
|
Obj_SetRenderPriorityI(targetList, 40);
|
||||||
//TExplosionA(enmX, enmY, 255/effectLength, 9/effectLength);
|
//TExplosionA(enmX, enmY, 255/effectLength, 9/effectLength);
|
||||||
|
|
||||||
|
@ -88,7 +90,7 @@ task _ExplosionEffect(float enmX, float enmY, int targetList){
|
||||||
let z_add = prand(-5, 5);
|
let z_add = prand(-5, 5);
|
||||||
|
|
||||||
ascent(i in 0..effectLength){
|
ascent(i in 0..effectLength){
|
||||||
_PetalMovement(Interpolate_Decelerate(2, 1, i/effectLength), Interpolate_Decelerate(255, 0, i/effectLength));
|
_PetalMovement(Interpolate_Decelerate(2, 1, i/effectLength), Interpolate_Decelerate(maxAlpha, 0, i/effectLength));
|
||||||
yield;
|
yield;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -128,7 +128,7 @@ task SpecialWeapon(){
|
||||||
|
|
||||||
SetCommonDataPtr(POINTER_SPECIALAMMO, max(0, GetCommonDataPtr(POINTER_SPECIALAMMO, 100)-(20/60)));
|
SetCommonDataPtr(POINTER_SPECIALAMMO, max(0, GetCommonDataPtr(POINTER_SPECIALAMMO, 100)-(20/60)));
|
||||||
|
|
||||||
if(ObjRender_GetAlpha(golem) >= 220){
|
if(ObjRender_GetAlpha(golem) >= 150){
|
||||||
|
|
||||||
ObjShot_SetIntersectionEnable(golem, true);
|
ObjShot_SetIntersectionEnable(golem, true);
|
||||||
|
|
||||||
|
|