commit 1
245
script/ExRumia/DPS.dnh
Normal file
|
@ -0,0 +1,245 @@
|
|||
#TouhouDanmakufu[Single]
|
||||
#ScriptVersion[3]
|
||||
#Title["DPS Test"]
|
||||
#Text["thank you Daniel WishMakers"]
|
||||
#System["script/KevinSystem/Kevin_System.txt"]
|
||||
|
||||
//let shotSheet = GetCurrentScriptDirectory() ~ "./../shot/shot.txt";
|
||||
|
||||
int bossObj; // This is enemy 1
|
||||
|
||||
int enm2, enm3; // This is enemy 2 and 3
|
||||
|
||||
let timer = 0;
|
||||
let timer2 = 0;
|
||||
let timer3 = 0;
|
||||
let timer4 = 0;
|
||||
|
||||
//let phase = 0;
|
||||
let angle = 0;
|
||||
let angle2 = 0;
|
||||
let angle3 = 0;
|
||||
let angle4 = 0;
|
||||
|
||||
let x = 0;
|
||||
let y = 0;
|
||||
|
||||
let image_angle = 0;
|
||||
let HP = 10000000; //- (100 * difficulty);
|
||||
|
||||
// This is for the damage showing
|
||||
let gl_curDPS = 0;
|
||||
let gl_curDPS2 = 0;
|
||||
let gl_curDPS3 = 0;
|
||||
|
||||
let gl_TimeSpent = 0;
|
||||
let gl_TutorialStr = "";
|
||||
const let STR_START = "Release SHOT before testing DPS.";
|
||||
const let STR_GO = "Press and hold SHOT to start testing DPS.";
|
||||
const let STR_FINISH = "Release SHOT when you are finished testing DPS.";
|
||||
|
||||
//#include "script/BHA5/script/Lib/BHA5_Lib.txt"
|
||||
|
||||
#include "script/KevinSystem/Universal_Lib.txt" // The library to include all libraries :sans: :nail_care:
|
||||
|
||||
@Event{
|
||||
alternative(GetEventType())
|
||||
case(EV_REQUEST_LIFE){
|
||||
SetScriptResult(HP);
|
||||
}
|
||||
case(EV_REQUEST_TIMER){
|
||||
SetScriptResult(9999);
|
||||
}
|
||||
case(EV_REQUEST_SPELL_SCORE){
|
||||
SetScriptResult(1000000);
|
||||
}
|
||||
}
|
||||
|
||||
@Initialize{
|
||||
//Shot sheet
|
||||
//LoadTexture(shotSheet);
|
||||
//LoadEnemyShotData(shotSheet);
|
||||
|
||||
SetPlayerLife(20);
|
||||
|
||||
//Boss registration
|
||||
bossObj = ObjEnemy_Create(OBJ_ENEMY_BOSS);
|
||||
ObjEnemy_Regist(bossObj);
|
||||
//SetIntersectionVisualization(true);
|
||||
|
||||
let imgExRumia = GetModuleDirectory() ~ "script/ExRumia/ExRumia.png";
|
||||
ObjPrim_SetTexture(bossObj, imgExRumia);
|
||||
ObjSprite2D_SetSourceRect(bossObj, 64, 1, 127, 64);
|
||||
ObjSprite2D_SetDestCenter(bossObj);
|
||||
ObjRender_SetScaleXYZ(bossObj, 1.5, 1.5, 1);
|
||||
ObjRender_SetColor(bossObj, 0xB93C3C);
|
||||
ObjMove_SetDestAtFrame(bossObj, STG_WIDTH/2, 550, 1);
|
||||
|
||||
enm2 = ObjEnemy_Create(OBJ_ENEMY);
|
||||
ObjEnemy_Regist(enm2);
|
||||
//SetIntersectionVisualization(true);
|
||||
|
||||
//let imgExRumia = GetModuleDirectory() ~ "script/ExRumia/ExRumia.png";
|
||||
ObjPrim_SetTexture(enm2, imgExRumia);
|
||||
ObjSprite2D_SetSourceRect(enm2, 64, 1, 127, 64);
|
||||
ObjSprite2D_SetDestCenter(enm2);
|
||||
ObjRender_SetScaleXYZ(enm2, 1.5, 1.5, 1);
|
||||
ObjRender_SetColor(enm2, 0xDC5959);
|
||||
ObjMove_SetDestAtFrame(enm2, STG_WIDTH/2, 300, 1);
|
||||
|
||||
ObjEnemy_SetMaximumDamage(enm2, 2000);
|
||||
|
||||
enm3 = ObjEnemy_Create(OBJ_ENEMY);
|
||||
ObjEnemy_Regist(enm3);
|
||||
//SetIntersectionVisualization(true);
|
||||
|
||||
//let imgExRumia = GetModuleDirectory() ~ "script/ExRumia/ExRumia.png";
|
||||
ObjPrim_SetTexture(enm3, imgExRumia);
|
||||
ObjSprite2D_SetSourceRect(enm3, 64, 1, 127, 64);
|
||||
ObjSprite2D_SetDestCenter(enm3);
|
||||
ObjRender_SetScaleXYZ(enm3, 1.5, 1.5, 1);
|
||||
ObjRender_SetColor(enm3, 0xFF8383);
|
||||
ObjMove_SetDestAtFrame(enm3, STG_WIDTH/2, 50, 1);
|
||||
|
||||
ObjEnemy_SetMaximumDamage(enm3, 2000);
|
||||
|
||||
ObjEnemy_SetMaximumDamage(bossObj, 2000);
|
||||
|
||||
main;
|
||||
display;
|
||||
TFinalize;
|
||||
}
|
||||
|
||||
@MainLoop{
|
||||
|
||||
ObjEnemy_SetIntersectionCircleToShot(bossObj,ObjMove_GetX(bossObj),ObjMove_GetY(bossObj),128);
|
||||
ObjEnemy_SetIntersectionCircleToShot(enm2,ObjMove_GetX(enm2),ObjMove_GetY(enm2),128);
|
||||
ObjEnemy_SetIntersectionCircleToShot(enm3,ObjMove_GetX(enm3),ObjMove_GetY(enm3),128);
|
||||
|
||||
//ObjEnemy_SetIntersectionCircleToPlayer(bossObj,ObjMove_GetX(bossObj),ObjMove_GetY(bossObj),32);
|
||||
|
||||
timer++;
|
||||
timer2++;
|
||||
x = ObjMove_GetX(bossObj);
|
||||
y = ObjMove_GetY(bossObj);
|
||||
ObjRender_SetAngleZ(bossObj,image_angle);
|
||||
|
||||
//main;
|
||||
yield;
|
||||
}
|
||||
|
||||
task TFinalize {
|
||||
while(ObjEnemy_GetInfo(bossObj, INFO_LIFE) > 0){yield;}
|
||||
Obj_Delete(bossObj);
|
||||
DeleteShotAll(TYPE_ALL, TYPE_IMMEDIATE);
|
||||
SetAutoDeleteObject(true);
|
||||
CloseScript(GetOwnScriptID());
|
||||
return;
|
||||
}
|
||||
|
||||
task display {
|
||||
let objText = CreateTextObject(100,300, 24, "Release SHOT to start testing DPS.");
|
||||
let objMain = CreateTextObject(100,400, 24, "Avg DPS (Front): [r]Frames: ");
|
||||
let objMain2 = CreateTextObject(100,500, 24, "Avg DPS (Middle): ");
|
||||
let objMain3 = CreateTextObject(100,600, 24, "Avg DPS (Back): ");
|
||||
|
||||
loop {
|
||||
ObjText_SetText(objText, gl_TutorialStr);
|
||||
ObjText_SetText(objMain, StringFormat("Avg DPS (Front): %f[r]Frames: %d", "fd", gl_curDPS, gl_TimeSpent));
|
||||
ObjText_SetText(objMain2, StringFormat("Avg DPS (Middle): %f", "f", gl_curDPS2));
|
||||
ObjText_SetText(objMain3, StringFormat("Avg DPS (Back): %f", "f", gl_curDPS3));
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
// thanks wish
|
||||
|
||||
task main {
|
||||
let count = 0;
|
||||
let damage = 0;
|
||||
let damage2 = 0;
|
||||
let damage3 = 0;
|
||||
|
||||
loop {
|
||||
//Reinitialize
|
||||
count = 0;
|
||||
damage = 0;
|
||||
damage2 = 0;
|
||||
damage3 = 0;
|
||||
ObjEnemy_SetLife(bossObj, HP);
|
||||
ObjEnemy_SetLife(enm2, HP);
|
||||
ObjEnemy_SetLife(enm3, HP);
|
||||
gl_TutorialStr = STR_START;
|
||||
|
||||
//Wait for shot to not be held.
|
||||
while(count < 60) {
|
||||
if (CheckShotRelease) {
|
||||
count++;
|
||||
}
|
||||
else {
|
||||
count = 0;
|
||||
}
|
||||
yield;
|
||||
}
|
||||
|
||||
//Wait until player starts pressing SHOT.
|
||||
count = 0;
|
||||
gl_TutorialStr = STR_GO;
|
||||
|
||||
while(!CheckShotHeld) {
|
||||
yield;
|
||||
}
|
||||
|
||||
while(CheckShotHeld) {
|
||||
count++;
|
||||
damage += (HP - ObjEnemy_GetInfo(bossObj, INFO_LIFE));
|
||||
damage2 += (HP - ObjEnemy_GetInfo(enm2, INFO_LIFE));
|
||||
damage3 += (HP - ObjEnemy_GetInfo(enm3, INFO_LIFE));
|
||||
ObjEnemy_SetLife(bossObj, HP);
|
||||
ObjEnemy_SetLife(enm2, HP);
|
||||
ObjEnemy_SetLife(enm3, HP);
|
||||
gl_TimeSpent = count;
|
||||
if (count % 60 == 0) {
|
||||
gl_curDPS = damage;
|
||||
gl_curDPS2 = damage2;
|
||||
gl_curDPS3 = damage3;
|
||||
gl_TutorialStr = STR_FINISH;
|
||||
damage = 0;
|
||||
damage2 = 0;
|
||||
damage3 = 0;
|
||||
}
|
||||
yield;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function CheckShotRelease {
|
||||
return ((GetVirtualKeyState(VK_SHOT) == KEY_PULL) || (GetVirtualKeyState(VK_SHOT) == KEY_FREE));
|
||||
}
|
||||
|
||||
function CheckShotHeld {
|
||||
return ((GetVirtualKeyState(VK_SHOT) == KEY_PUSH) || (GetVirtualKeyState(VK_SHOT) == KEY_HOLD));
|
||||
}
|
||||
|
||||
//mkm fxn
|
||||
function CreateTextObject(let mx, let my, let size, let text)
|
||||
{
|
||||
let obj = ObjText_Create();
|
||||
ObjText_SetText(obj, text);
|
||||
ObjText_SetFontSize(obj, size);
|
||||
ObjText_SetFontBold(obj, true);
|
||||
ObjText_SetFontColorTop(obj, 128, 128, 255);
|
||||
ObjText_SetFontColorBottom(obj, 64, 64, 255);
|
||||
ObjText_SetFontBorderType(obj, BORDER_FULL);
|
||||
ObjText_SetFontBorderColor(obj,255, 255, 255);
|
||||
ObjText_SetFontBorderWidth(obj, 2);
|
||||
Obj_SetRenderPriorityI(obj, 10);
|
||||
ObjRender_SetX(obj, mx);
|
||||
ObjRender_SetY(obj, my);
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
BIN
script/ExRumia/ExRumia(星符「ミッドナイトレヴァリエ」).jpg
Normal file
After Width: | Height: | Size: 83 KiB |
BIN
script/ExRumia/ExRumia.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
script/ExRumia/ExRumia01.txt
Normal file
BIN
script/ExRumia/ExRumiaSpell01.txt
Normal file
BIN
script/ExRumia/ExRumia_Package_Main.txt
Normal file
BIN
script/ExRumia/ExRumia_Package_ReplaySelectScene.txt
Normal file
BIN
script/ExRumia/ExRumia_Plural.txt
Normal file
BIN
script/ExRumia/ExRumia_Stage.txt
Normal file
BIN
script/ExRumia/Title.png
Normal file
After Width: | Height: | Size: 324 KiB |
BIN
script/GayGunner_Package.dnh
Normal file
BIN
script/Gay_Package.dnh
Normal file
BIN
script/GunnerParade/config.dat
Normal file
208
script/Jam10/Game_Plural.dnh
Normal file
|
@ -0,0 +1,208 @@
|
|||
#TouhouDanmakufu[Plural]
|
||||
#ScriptVersion[3]
|
||||
#Title["Game Plural"]
|
||||
#Text["pilk"]
|
||||
#System["script/KevinSystem/Kevin_System.txt"]
|
||||
//#Player["script/KevinPackage/KevinScript_Players/PankevKouda/KevKou_Main.dnh", "script/KevinPackage/KevinScript_Players/MariHousui/MariHousui_Main.dnh"]
|
||||
|
||||
let csd = GetCurrentScriptDirectory();
|
||||
|
||||
let obj = ObjEnemyBossScene_Create();
|
||||
int objBGM = ObjSound_Create();
|
||||
int objBGMBoss = ObjSound_Create();
|
||||
|
||||
#include "script/KevinSystem/Universal_Lib.txt"
|
||||
#include "script/KevinSystem/kevin_system/Lib_Const.dnh"
|
||||
#include "script/Jam10/Stage_Background.dnh"
|
||||
|
||||
int LifeStart = GetCommonData("Starting Lives", 3);
|
||||
|
||||
bool stageStart = false;
|
||||
bool bossStart = false;
|
||||
float BGMRate = GetAreaCommonData("Config", "BGMVol", 100) * 0.01;
|
||||
|
||||
let POINTER_CHAIN = LoadAreaCommonDataValuePointer("PIV", "ChainAmount", 1);
|
||||
let POINTER_CHAINGAUGE = LoadAreaCommonDataValuePointer("PIV", "ChainGauge", 0);
|
||||
let POINTER_SPECIALAMMO = LoadAreaCommonDataValuePointer("PIV", "SpecialAmmo", 100);
|
||||
let POINTER_SPECIALCHECK = LoadAreaCommonDataValuePointer("PIV", "IsUsingSpecial", false);
|
||||
let POINTER_CHAINCHECK = LoadAreaCommonDataValuePointer("PIV", "IsChaining", false);
|
||||
|
||||
string DATA_PLAYER = "";
|
||||
string DATA_DIFFICULTY = "";
|
||||
|
||||
@Event{
|
||||
|
||||
alternative (GetEventType())
|
||||
|
||||
case(EV_START_MUSIC){
|
||||
stageStart = true;
|
||||
ObjSound_Play(objBGM);
|
||||
}
|
||||
|
||||
case(EV_BOSS_MUSIC){
|
||||
bossStart = true;
|
||||
ObjSound_Stop(objBGM);
|
||||
ObjSound_Play(objBGMBoss);
|
||||
}
|
||||
|
||||
case(EV_PAUSE_ENTER){
|
||||
|
||||
if (stageStart) {
|
||||
if(bossStart){
|
||||
ObjSound_Stop(objBGMBoss);
|
||||
}
|
||||
else{
|
||||
ObjSound_Stop(objBGM);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
case(EV_PAUSE_LEAVE){
|
||||
|
||||
if (stageStart) {
|
||||
if(bossStart){
|
||||
ObjSound_Play(objBGMBoss);
|
||||
}
|
||||
else{
|
||||
ObjSound_Play(objBGM);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Initialize{
|
||||
|
||||
SetCommonDataPtr(POINTER_CHAIN, 1);
|
||||
SetCommonDataPtr(POINTER_CHAINGAUGE, 0);
|
||||
SetCommonDataPtr(POINTER_SPECIALAMMO, 100);
|
||||
SetCommonDataPtr(POINTER_SPECIALCHECK, false);
|
||||
SetCommonDataPtr(POINTER_CHAINCHECK, false);
|
||||
|
||||
SetCommonData("Flying Defeated", 0);
|
||||
SetCommonData("Ground Defeated", 0);
|
||||
//SetCommonData("IsBomb", false);
|
||||
SetCommonData("Rank", 1);
|
||||
|
||||
if(!IsCommonDataAreaExists("PIV")){
|
||||
CreateCommonDataArea("PIV");
|
||||
SetAreaCommonData("PIV", "currentvalue", 1000);
|
||||
SetAreaCommonData("PIV", "ChainAmount", 1);
|
||||
}
|
||||
else{
|
||||
SetAreaCommonData("PIV", "ChainAmount", 1);
|
||||
SetAreaCommonData("PIV", "currentvalue", 1000);
|
||||
}
|
||||
|
||||
SetPlayerLife(GetAreaCommonData("Config", "StartingLife", 3));
|
||||
|
||||
SetAutoDeleteObject(true);
|
||||
|
||||
// 0: Yal, 1: Wareya
|
||||
//SetAreaCommonData("Config", "BGMSelect", "Wareya");
|
||||
|
||||
/*
|
||||
if(GetAreaCommonData("Config", "BGMSelect", 0) == 1){
|
||||
ObjSound_Load(objBGM, "script/game/resourceLib/BossTheme_Wareya1.ogg");
|
||||
ObjSound_SetLoopTime(objBGM, 1.644, 51.110);
|
||||
}
|
||||
|
||||
else{
|
||||
ObjSound_Load(objBGM, "script/game/resourceLib/BossTheme_Yal.ogg");
|
||||
ObjSound_SetLoopTime(objBGM, 0.001, 92.81);
|
||||
}
|
||||
*/
|
||||
|
||||
InitiateData();
|
||||
|
||||
ObjSound_Load(objBGM, "script/Jam10/resourceLib/StageTheme.mp3");
|
||||
ObjSound_SetSoundDivision(objBGM, SOUND_BGM);
|
||||
ObjSound_SetResumeEnable(objBGM, true);
|
||||
ObjSound_SetLoopEnable(objBGM, true);
|
||||
ObjSound_SetLoopTime(objBGM, 22.72, 79.52);
|
||||
|
||||
ObjSound_Load(objBGMBoss, "script/Jam10/resourceLib/BossTheme.mp3");
|
||||
ObjSound_SetSoundDivision(objBGMBoss, SOUND_BGM);
|
||||
ObjSound_SetResumeEnable(objBGMBoss, true);
|
||||
ObjSound_SetLoopEnable(objBGMBoss, false);
|
||||
|
||||
ObjSound_SetVolumeRate(objBGMBoss, 100*BGMRate);
|
||||
ObjSound_SetVolumeRate(objBGM, 100*BGMRate);
|
||||
|
||||
PluralTask();
|
||||
|
||||
}
|
||||
|
||||
@MainLoop{
|
||||
yield;
|
||||
}
|
||||
|
||||
@Finalize
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
task InitiateData(){
|
||||
|
||||
DATA_PLAYER = GetPlayerReplayName();
|
||||
DATA_DIFFICULTY = GetCommonData("Difficulty", "Standard");
|
||||
|
||||
}
|
||||
|
||||
/* TO DO:
|
||||
|
||||
+ Single *syncing* - ensure that the boss stays at the same position
|
||||
*/
|
||||
// Task to handle the plural's boss scene
|
||||
|
||||
task PluralTask(){
|
||||
// Registering individual singles
|
||||
|
||||
ObjEnemyBossScene_Add(obj, 0, csd ~ "NarumiSTG.dnh");
|
||||
ObjEnemyBossScene_LoadInThread(obj);
|
||||
|
||||
_ScrollBackground();
|
||||
|
||||
// Loading and registering the boss scene
|
||||
ObjEnemyBossScene_Regist(obj);
|
||||
|
||||
async{
|
||||
while(GetPlayerState() != STATE_END){yield;}
|
||||
ObjSound_Stop(objBGM);
|
||||
ObjSound_Stop(objBGMBoss);
|
||||
}
|
||||
|
||||
while(!Obj_IsDeleted(obj)){
|
||||
yield;
|
||||
}
|
||||
|
||||
ObjSound_Stop(objBGM);
|
||||
ObjSound_Stop(objBGMBoss);
|
||||
stageStart = false;
|
||||
bossStart = false;
|
||||
|
||||
//_ExplosionEffect(GetCommonData("Boss Position X", STG_WIDTH/2), GetCommonData("Boss Position Y", STG_WIDTH/2), PetalEffect);
|
||||
|
||||
if(!IsReplay() & LifeStart <= 3){
|
||||
|
||||
int highScore = GetAreaCommonData("Data_" ~ DATA_PLAYER, "HighScore_" ~ DATA_DIFFICULTY, 0);
|
||||
int curScore = trunc(GetCommonData("Run Score", 0)/10)*10;
|
||||
|
||||
if(curScore > highScore){SetAreaCommonData("Data_" ~ DATA_PLAYER, "HighScore_" ~ DATA_DIFFICULTY, curScore);}
|
||||
else{}
|
||||
|
||||
}
|
||||
|
||||
string savefile = "";
|
||||
|
||||
if (DATA_PLAYER == "Narumi") {savefile = "data_Pl0.dat";}
|
||||
else if (DATA_PLAYER == "Kouryuu") {savefile = "data_Pl1.dat";}
|
||||
else {savefile = "data_ERROR.dat";}
|
||||
|
||||
SaveCommonDataAreaA2("Data_" ~ DATA_PLAYER, "script/Jam10/" ~ savefile);
|
||||
|
||||
SetAutoDeleteObject(true);
|
||||
CloseScript(GetOwnScriptID());
|
||||
}
|
1972
script/Jam10/GunnerParade.dnh
Normal file
414
script/Jam10/GunnerParade_ConstLib.dnh
Normal file
|
@ -0,0 +1,414 @@
|
|||
// Constants
|
||||
|
||||
int difficulty = 0;
|
||||
|
||||
int STAGE_LENGTH = 90;
|
||||
int BOSS_LENGTH = 30;
|
||||
|
||||
int HP_MAX = 4500;
|
||||
int PHASE1_LIMIT = 2250;
|
||||
int PHASE2_LIMIT = 0;
|
||||
int PHASE3_LIMIT = 0;
|
||||
|
||||
// Rank min/max
|
||||
|
||||
local{
|
||||
|
||||
alternative(GetCommonData("Difficulty", "Standard"))
|
||||
|
||||
case("Novice"){difficulty = 0;}
|
||||
case("Standard"){difficulty = 1;}
|
||||
case("Extra"){difficulty = 2;}
|
||||
others{difficulty = 0;}
|
||||
|
||||
}
|
||||
|
||||
|
||||
float RANK_MIN = [1, 1, 9][difficulty];
|
||||
float RANK_MAX = 9; // Since Novice locks Rank to a lower level, this distinction is necessary
|
||||
float RANK_MAX_TRUE = [6, 9, 9][difficulty]; // Can be changed
|
||||
|
||||
SetCommonData("MinRank", RANK_MIN);
|
||||
SetCommonData("MaxRank", RANK_MAX_TRUE);
|
||||
|
||||
// Enemy parameters
|
||||
|
||||
int smallEnemyHitbox = 32;
|
||||
int medEnemyHitbox = 64;
|
||||
int largeEnemyHitbox = 100;
|
||||
int spiritHitbox = 48;
|
||||
|
||||
float smallEnemyHP = 45;
|
||||
float mediumEnemyHP = 80;
|
||||
float largeEnemyHP = 120;
|
||||
float largeEnemyAltHP = 150;
|
||||
float popcornHP = 25;
|
||||
|
||||
float smallEnemyScale = 1;
|
||||
float largeEnemyScale = 1;
|
||||
float popcornScale = 1;
|
||||
|
||||
// Enemy rects
|
||||
|
||||
int[] smallfairyRect = [0, 128, 128, 256];
|
||||
int[] spiritRect = [0, 0, 128, 128];
|
||||
int[] mushroomfairyRect = [0, 256, 192, 448];
|
||||
int[] yukionnaRect = [0, 448, 192, 640];
|
||||
int[] bossRect = [192, 448, 384, 704];
|
||||
|
||||
// Universal
|
||||
|
||||
// MOVEMENT SPEED RELATED
|
||||
|
||||
// Very low speed (ground, large enemies)
|
||||
float baseMoveSpeedVL = 5.5;
|
||||
|
||||
// Low speed (ground, large enemies)
|
||||
float baseMoveSpeed1L= 7;
|
||||
|
||||
// Medium speed
|
||||
float baseMoveSpeedM = 8;
|
||||
|
||||
// High speed
|
||||
float baseMoveSpeedH = 10;
|
||||
|
||||
// Very high speed
|
||||
float baseMoveSpeedVH = 11.5;
|
||||
|
||||
// Speed multiplier per rank - speed increases by 0.02/0.03x per rank increase up to a max of 0.18/0.27x
|
||||
|
||||
float MoveSpeedRankMultiplierVL = 0.015;
|
||||
float MoveSpeedRankMultiplierL = 0.025;
|
||||
float MoveSpeedRankMultiplierH = 0.035;
|
||||
float MoveSpeedRankMultiplierVH = 0.05;
|
||||
|
||||
// ITEM RELATED
|
||||
|
||||
float smallFlyingEnm_itemPointMin = 8;
|
||||
float smallFlyingEnm_itemPointMax = 12;
|
||||
|
||||
float medFlyingEnm_itemPointMin = 12;
|
||||
float medFlyingEnm_itemPointMax = 18;
|
||||
|
||||
float largeFlyingEnm_itemPointMin = 20;
|
||||
float largeFlyingEnm_itemPointMax = 30;
|
||||
|
||||
float verylargeFlyingEnm_itemPointMin = 35;
|
||||
float verylargeFlyingEnm_itemPointMax = 45;
|
||||
|
||||
// 1 ammo item = 2 ammo
|
||||
|
||||
float smallGroundEnm_itemAmmoMin = 2;
|
||||
float smallGroundEnm_itemAmmoMax = 4;
|
||||
|
||||
float medGroundEnm_itemAmmoMin = 4;
|
||||
float medGroundEnm_itemAmmoMax = 6;
|
||||
|
||||
float largeGroundEnm_itemAmmoMin = 12;
|
||||
float largeGroundEnm_itemAmmoMax = 18;
|
||||
|
||||
float verylargeGroundEnm_itemAmmoMin = 40;
|
||||
float verylargeGroundEnm_itemAmmoMax = 60;
|
||||
|
||||
float smallEnm_itemChainMin = 6;
|
||||
float smallEnm_itemChainMax = 12;
|
||||
|
||||
float mediumEnm_itemChainMin = 9;
|
||||
float mediumEnm_itemChainMax = 16;
|
||||
|
||||
float largeEnm_itemChainMin = 12;
|
||||
float largeEnm_itemChainMax = 20;
|
||||
|
||||
float itemMultiplier = 0.03; // For point items only
|
||||
|
||||
// INVINCIBILITY TIME
|
||||
|
||||
// Short, medium, long
|
||||
int[] invinTimeArr = [20, 40, 60];
|
||||
int[] invinTimeDecrease = [1, 2, 3]; // Per rank increase
|
||||
|
||||
// Wave 1
|
||||
|
||||
// Graphic: fairy
|
||||
|
||||
// Uses high speed, fires aimed bullets
|
||||
|
||||
int W1_spawnDelayMin = 4;
|
||||
int W1_spawnDelayMax = 8;
|
||||
|
||||
int W1_fairyNumMin = 5;
|
||||
int W1_fairyNumMax = 8;
|
||||
|
||||
int W1_decelTimeMin = 20;
|
||||
int W1_decelTimeMax = 30;
|
||||
|
||||
int W1_bulletDelayMin = 40;
|
||||
int W1_bulletDelayMax = 50;
|
||||
|
||||
float W1_bulletSpdMin = 9;
|
||||
float W1_bulletSpdMax = 12;
|
||||
|
||||
// Wave 2
|
||||
|
||||
// Graphic: spirit
|
||||
|
||||
// Sin-wave movement, fires aimed small-fire fans
|
||||
|
||||
int W2_fairyNumMin = 3;
|
||||
int W2_fairyNumMax = 5;
|
||||
|
||||
int W2_bulletDelayMin = 65;
|
||||
int W2_bulletDelayMax = 90;
|
||||
|
||||
float W2_bulletSpdMin = 10;
|
||||
float W2_bulletSpdMax = 13;
|
||||
|
||||
float W2_rangeMin = 2;
|
||||
float W2_rangeMax = 3.25;
|
||||
|
||||
int W2_bulletfanNumMin = 3;
|
||||
int W2_bulletfanNumMax = 5;
|
||||
|
||||
int W2_spawnDelayMin = 10;
|
||||
int W2_spawnDelayMax = 15;
|
||||
|
||||
// Wave 3: Mushroom fairy, fires large fireballs
|
||||
|
||||
int W3_spawnDelayMin = 15;
|
||||
int W3_spawnDelayMax = 30;
|
||||
|
||||
int W3_fairyNumMin = 3;
|
||||
int W3_fairyNumMax = 9;
|
||||
|
||||
float W3_rangeMin = 1;
|
||||
float W3_rangeMax = 2.5;
|
||||
|
||||
int W3_bulletfanNumMin = 1;
|
||||
int W3_bulletfanNumMax = 1;
|
||||
|
||||
int W3_bulletDelayMin = 15;
|
||||
int W3_bulletDelayMax = 20;
|
||||
|
||||
float W3_bulletSpdMin = 11;
|
||||
float W3_bulletSpdMax = 13;
|
||||
|
||||
// Wave 4: Mushroom fairy, fires small fireball lines
|
||||
|
||||
int W4_spawnDelayMin = 18;
|
||||
int W4_spawnDelayMax = 35;
|
||||
|
||||
int W4_fairyNumMin = 2;
|
||||
int W4_fairyNumMax = 5;
|
||||
|
||||
int W4_bulletNumMin = 3;
|
||||
int W4_bulletNumMax = 5;
|
||||
|
||||
int W4_bulletDelayMin = 2;
|
||||
int W4_bulletDelayMax = 4;
|
||||
|
||||
int W4_stopTimeMin = 20;
|
||||
int W4_stopTimeMax = 30;
|
||||
|
||||
float W4_bulletSpdMin = 10;
|
||||
float W4_bulletSpdMax = 12.25;
|
||||
|
||||
// Wave 5: Clumped small fairy lines come from both sides to attack you.
|
||||
|
||||
int W5_spawnDelayMin = 20;
|
||||
int W5_spawnDelayMax = 40;
|
||||
|
||||
int W5_fairyNumMin = 3;
|
||||
int W5_fairyNumMax = 6;
|
||||
|
||||
// Angles
|
||||
|
||||
int W5_moveTimeMin = 40;
|
||||
int W5_moveTimeMax = 50;
|
||||
|
||||
float W5_bulletSpdMin = 11;
|
||||
float W5_bulletSpdMax = 13;
|
||||
|
||||
// Wave 6: Alt mushroom fairies (2 OR 3) spawns sparse rings (counts as ground)
|
||||
|
||||
int WG1_ringDenseMin = 10;
|
||||
int WG1_ringDenseMax = 14;
|
||||
|
||||
float WG1_bulletSpdMin = 8;
|
||||
float WG1_bulletSpdMax = 11;
|
||||
|
||||
int WG1_bulletDelayMin = 30;
|
||||
int WG1_bulletDelayMax = 45;
|
||||
|
||||
// Wave 7: Yukionna with spiral (counts as ground)
|
||||
|
||||
int WG2_spiralDenseMin = 6;
|
||||
int WG2_spiralDenseMax = 9;
|
||||
|
||||
int WG2_spiralNumMin = 3;
|
||||
int WG2_spiralNumMax = 5;
|
||||
|
||||
float WG2_spiralSpdMin = 7.5;
|
||||
float WG2_spiralSpdMax = 9.5;
|
||||
|
||||
int WG2_spiralDelayMax = 40;
|
||||
int WG2_spiralDelayMin = 25;
|
||||
|
||||
/*
|
||||
// Wave Ground 1
|
||||
|
||||
int[] sign1Rect = [1024, 512, 1280, 768];
|
||||
int[] platformRect = [1536, 256, 2304, 768];
|
||||
|
||||
int WG1_invinTimeMin = 15;
|
||||
int WG1_invinTimeMax = 25;
|
||||
|
||||
// Wave Ground 2
|
||||
|
||||
int[] cannonRect = [2048, 768, 2304, 1024];
|
||||
int[] bushRect = [512, 1024, 1280, 1536];
|
||||
|
||||
int WG2_bulletNumMin = 3;
|
||||
int WG2_bulletNumMax = 5;
|
||||
|
||||
float WG2_angRangeMin = 1.4;
|
||||
float WG2_angRangeMax = 2;
|
||||
|
||||
float WG2_bulletSpdMin = 9;
|
||||
float WG2_bulletSpdMax = 11;
|
||||
|
||||
int WG2_bulletDelayMin = 30;
|
||||
int WG2_bulletDelayMax = 40;
|
||||
|
||||
int WG2_invinTimeMin = 45;
|
||||
int WG2_invinTimeMax = 60;
|
||||
|
||||
// Wave Ground 1A
|
||||
|
||||
// Graphic: fairy
|
||||
|
||||
// Uses high speed
|
||||
|
||||
int WG1A_bulletNumMin = 1;
|
||||
int WG1A_bulletNumMax = 3;
|
||||
|
||||
int WG1A_bulletDelayMin = 45;
|
||||
int WG1A_bulletDelayMax = 60;
|
||||
|
||||
float WG1A_bulletSpdMin = 12;
|
||||
float WG1A_bulletSpdMax = 15;
|
||||
|
||||
int[] sign2Rect = [1280, 512, 1536, 768];
|
||||
|
||||
int WG1A_invinTimeMin = 25;
|
||||
int WG1A_invinTimeMax = 40;
|
||||
|
||||
// Wave Ground 3 (Rybb) -> orange line spirals
|
||||
|
||||
int WG3_spiralDenseMin = 5;
|
||||
int WG3_spiralDenseMax = 8;
|
||||
|
||||
int WG3_spiralNumMin = 3;
|
||||
int WG3_spiralNumMax = 6;
|
||||
|
||||
float WG3_spiralSpdMin = 7.5;
|
||||
float WG3_spiralSpdMax = 9.5;
|
||||
|
||||
int WG3_spiralDelayMax = 40;
|
||||
int WG3_spiralDelayMin = 30;
|
||||
|
||||
int[] rybbRect = [1280, 1024, 1792, 1536];
|
||||
|
||||
// Wave Ground 4 (ITS THE FUCKING BUSSY FAIRIES)
|
||||
// Number of fairies affected by RANK and KILL SPEED
|
||||
|
||||
int[] bush2Rect = [512, 1536, 1280, 2048];
|
||||
int[] bush2ARect = [256, 1536, 512, 1792];
|
||||
|
||||
int WG4_enmNumMin = 4;
|
||||
int WG4_enmNumMax = 6;
|
||||
|
||||
int WG4_bulletDelayMin = 45;
|
||||
int WG4_bulletDelayMax = 60;
|
||||
|
||||
float WG4_bulletSpdMin = 11;
|
||||
float WG4_bulletSpdMax = 14;
|
||||
|
||||
int WG4_invinTimeMin = 100;
|
||||
int WG4_invinTimeMax = 120;
|
||||
|
||||
// Wave Ground 5 (Decker) -> Line bullets.
|
||||
|
||||
int WG5_bulletNumMin = 4;
|
||||
int WG5_bulletNumMax = 6;
|
||||
|
||||
int WG5_bulletDelayMin = 12;
|
||||
int WG5_bulletDelayMax = 15;
|
||||
|
||||
float WG5_bulletSpdMin = 7;
|
||||
float WG5_bulletSpdMax = 9;
|
||||
|
||||
int[] deckerRect = [1792, 1024, 1792+512, 1536];
|
||||
|
||||
// Wave Ground 6 -> Your ass is our base
|
||||
*/
|
||||
|
||||
task UpdateDrops(){
|
||||
|
||||
// According to rank
|
||||
|
||||
while(true){
|
||||
|
||||
smallFlyingEnm_itemPointMax = FUNC_LERP_LINEAR(12, 18, rank/RANK_MAX);
|
||||
medFlyingEnm_itemPointMax = FUNC_LERP_LINEAR(16, 24, rank/RANK_MAX);
|
||||
largeFlyingEnm_itemPointMax = FUNC_LERP_LINEAR(30, 40, rank/RANK_MAX);
|
||||
verylargeFlyingEnm_itemPointMax = FUNC_LERP_LINEAR(45, 60, rank/RANK_MAX);
|
||||
|
||||
smallGroundEnm_itemAmmoMax = FUNC_LERP_LINEAR(4, 6, rank/RANK_MAX);
|
||||
medGroundEnm_itemAmmoMax = FUNC_LERP_LINEAR(6, 8, rank/RANK_MAX);
|
||||
largeGroundEnm_itemAmmoMax = FUNC_LERP_LINEAR(18, 25, rank/RANK_MAX);
|
||||
verylargeGroundEnm_itemAmmoMax = FUNC_LERP_LINEAR(60, 75, rank/RANK_MAX);
|
||||
|
||||
smallEnm_itemChainMax = FUNC_LERP_LINEAR(12, 16, rank/RANK_MAX);
|
||||
mediumEnm_itemChainMax = FUNC_LERP_LINEAR(16, 20, rank/RANK_MAX);
|
||||
largeEnm_itemChainMax = FUNC_LERP_LINEAR(20, 24, rank/RANK_MAX);
|
||||
|
||||
wait(5);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference:
|
||||
|
||||
task SpawnSpiral(float angStart, int spinDir){
|
||||
|
||||
async{
|
||||
ascent(i in -1..linespiralNum[diff]){
|
||||
|
||||
if(ObjEnemy_GetInfo(bossObj, INFO_LIFE) <= 0){break;}
|
||||
|
||||
int shot = CreateFan(bossObj, 1, KEV_LEAF_ORANGE, linespiralLineCount[diff],
|
||||
angStart+i*spinDir*linespiralAngOffset[diff], 0, linespiralSpd2[diff], linespiralSpd1[diff],
|
||||
0.6,
|
||||
0, 0,
|
||||
PATTERN_FAN, false
|
||||
);
|
||||
int shot2 = CreateFan(bossObj, 1, KEV_LEAF_ORANGE, linespiralLineCount[diff],
|
||||
angStart+(180+angStart)-i*spinDir*linespiralAngOffset[diff], 0, linespiralSpd2[diff], linespiralSpd1[diff], 0.6,
|
||||
0, 0,
|
||||
PATTERN_FAN, false
|
||||
);
|
||||
|
||||
if(ObjEnemy_GetInfo(bossObj, INFO_LIFE) <= 0){Obj_Delete(shot); Obj_Delete(shot2);}
|
||||
|
||||
else{Shoot1;}
|
||||
|
||||
wait([4, 4, 3, 3][diff]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
*/
|
1618
script/Jam10/GunnerParade_EnmLib.dnh
Normal file
2161
script/Jam10/NarumiSTG.dnh
Normal file
BIN
script/Jam10/PackageLib/Img.png
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
script/Jam10/PackageLib/MusicTitle.mp3
Normal file
BIN
script/Jam10/PackageLib/NarumiSTG_Manual.png
Normal file
After Width: | Height: | Size: 216 KiB |
113
script/Jam10/Stage_Background.dnh
Normal file
|
@ -0,0 +1,113 @@
|
|||
let bossBG = "script/Jam10/resourceLib/Jam10_BG.png";
|
||||
let soundWarn = ObjSound_Create();
|
||||
let alphaMax = 255*((GetAreaCommonData("Config", "BGOpacity", 100))/100);
|
||||
let exVol = GetAreaCommonData("Config", "SEVol", 100) * 0.01;
|
||||
|
||||
//ObjSound_Load(sound, "script/game/resourceLib/dialogueblip.wav");
|
||||
ObjSound_Load(soundWarn, "script/game/resourceLib/warnSound.wav");
|
||||
//ObjSound_SetVolumeRate(sound, 100 * blipVol);
|
||||
ObjSound_SetVolumeRate(soundWarn, 100 * blipVol);
|
||||
//ObjSound_SetSoundDivision(sound, SOUND_SE);
|
||||
ObjSound_SetSoundDivision(soundWarn, SOUND_SE);
|
||||
|
||||
//LoadSound("script/game/StageLib/dialogueblip.wav");
|
||||
|
||||
LoadTextureEx(bossBG, true, true);
|
||||
|
||||
function <void> _ScrollBackground(){
|
||||
|
||||
int BossImg = _Create2DImage(bossBG, [0, 0, 640*4, 720]);
|
||||
ObjRender_SetScaleXYZ(BossImg, 1);
|
||||
ObjRender_SetPosition(BossImg, STG_WIDTH/2, STG_HEIGHT/2, 1);
|
||||
Obj_SetRenderPriorityI(BossImg, 24);
|
||||
|
||||
float scrollSpeed = 0;
|
||||
float maxscrollSpeed = 14;
|
||||
int curScroll = 0;
|
||||
|
||||
async{
|
||||
loop{
|
||||
maxscrollSpeed = 9+GetCommonData("Rank", 1)*1.25;
|
||||
wait(60);
|
||||
}
|
||||
}
|
||||
|
||||
async{
|
||||
|
||||
loop{
|
||||
|
||||
//ObjSprite2D_SetDestRect(BossImg, 0, 0, STG_WIDTH/2, STG_HEIGHT/2);
|
||||
ObjSprite2D_SetSourceRect(BossImg, curScroll, 0, curScroll+640*4, 720);
|
||||
curScroll += scrollSpeed;
|
||||
|
||||
scrollSpeed = min(maxscrollSpeed, scrollSpeed+0.05);
|
||||
yield;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ascent(i in 0..90){
|
||||
ObjRender_SetAlpha(BossImg, Interpolate_Decelerate(0, alphaMax, i/90));
|
||||
yield;
|
||||
}
|
||||
|
||||
NotifyEventAll(EV_START_MUSIC, 0);
|
||||
|
||||
//Dialogue();
|
||||
//ObjRender_SetAlpha(BossImg, 255*((GetAreaCommonData("Config", "BGOpacity", 100))/100));
|
||||
|
||||
}
|
||||
|
||||
function <void> Dialogue(){
|
||||
|
||||
//ObjSound_Play(soundWarn);
|
||||
|
||||
wait(30);
|
||||
|
||||
int objText3 = CreateTextObject(
|
||||
|
||||
STG_WIDTH/2, STG_HEIGHT/3-60, 80,
|
||||
" ", "Origami Mommy",
|
||||
0x72CBFF, 0x72CBFF,
|
||||
0x08007C, 10,
|
||||
71
|
||||
|
||||
);
|
||||
|
||||
int objText = CreateTextObject(
|
||||
|
||||
STG_WIDTH/2, STG_HEIGHT/2-60, 36,
|
||||
" ", "Origami Mommy",
|
||||
0x72CBFF, 0x72CBFF,
|
||||
0x08007C, 6,
|
||||
71
|
||||
|
||||
);
|
||||
|
||||
int objText2 = CreateTextObject(
|
||||
|
||||
STG_WIDTH/2, STG_HEIGHT/2, 36,
|
||||
" ", "Origami Mommy",
|
||||
0x72CBFF, 0x72CBFF,
|
||||
0x08007C, 6,
|
||||
71
|
||||
|
||||
);
|
||||
|
||||
ObjText_SetHorizontalAlignment(objText, ALIGNMENT_CENTER);
|
||||
ObjText_SetHorizontalAlignment(objText2, ALIGNMENT_CENTER);
|
||||
ObjText_SetHorizontalAlignment(objText3, ALIGNMENT_CENTER);
|
||||
|
||||
TTextScroll(objText3, "GET READY!");
|
||||
TTextScroll(objText, "IN 99 SECONDS");
|
||||
//wait(60);
|
||||
TTextScroll(objText2, "BECOME THE STRONGEST!");
|
||||
|
||||
wait(60);
|
||||
|
||||
Obj_Delete(objText);
|
||||
Obj_Delete(objText2);
|
||||
Obj_Delete(objText3);
|
||||
|
||||
}
|
BIN
script/Jam10/resourceLib/BossTheme.mp3
Normal file
BIN
script/Jam10/resourceLib/Jam10.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
script/Jam10/resourceLib/Jam10_BG.png
Normal file
After Width: | Height: | Size: 71 KiB |
BIN
script/Jam10/resourceLib/Spritesheet_StationJam.png
Normal file
After Width: | Height: | Size: 444 KiB |
BIN
script/Jam10/resourceLib/StageTheme.mp3
Normal file
BIN
script/KevinSound/RaspberryTickle_Giggle.wav
Normal file
BIN
script/KevinSound/bfxr_Charge.wav
Normal file
BIN
script/KevinSound/bfxr_EnemyBoom.wav
Normal file
BIN
script/KevinSound/bfxr_ExtendLegacy.wav
Normal file
BIN
script/KevinSound/bfxr_Pause.wav
Normal file
BIN
script/KevinSound/bfxr_PlayerFire1.wav
Normal file
BIN
script/KevinSound/bfxr_RinnoBomb.wav
Normal file
BIN
script/KevinSound/bfxr_Select.wav
Normal file
BIN
script/KevinSound/bfxr_Shoot1.wav
Normal file
BIN
script/KevinSound/bfxr_Shoot2.wav
Normal file
BIN
script/KevinSound/bossBoom.wav
Normal file
BIN
script/KevinSystem/Default_Background_IceMountain.txt
Normal file
BIN
script/KevinSystem/Default_Effect.txt
Normal file
BIN
script/KevinSystem/Default_EndScene.txt
Normal file
BIN
script/KevinSystem/Default_Pause.txt
Normal file
BIN
script/KevinSystem/Default_ReplaySaveScene.txt
Normal file
BIN
script/KevinSystem/Default_ShotConst.txt
Normal file
BIN
script/KevinSystem/Default_ShotData.txt
Normal file
BIN
script/KevinSystem/Default_System_MagicCircle.txt
Normal file
120
script/KevinSystem/GeneralSoundLib.txt
Normal file
|
@ -0,0 +1,120 @@
|
|||
// Sound effects for boss go here.
|
||||
|
||||
let lib = GetModuleDirectory() ~ "./script/KevinSystem/RyannSFX/ryannlib/";
|
||||
let libKev = "script/KevinSound/";
|
||||
|
||||
let SFXVol = GetAreaCommonData("Config", "SEVol", 100) * 0.01;
|
||||
|
||||
// Sound paths
|
||||
|
||||
let defeatsnd = lib ~ "../bossdie.wav";
|
||||
let lw = lib ~ "sp_lastword.wav";
|
||||
|
||||
let bullet1 = libKev ~ "bfxr_Shoot1.wav"; // Regular bullet sound
|
||||
let bullet2 = libKev ~ "bfxr_Shoot2.wav"; // Shiny bullet sound
|
||||
|
||||
let bullet3 = lib ~ "se_explode.wav";
|
||||
let lightning1 = lib ~ "se_don00.wav"; // Lightning sound 1/Explosion sound
|
||||
let lightning2 = lib ~ "se_kira02.wav"; // Lightning sound 2
|
||||
let laze = lib ~ "se_lazer01.wav"; // Laser sound
|
||||
let lazeB = lib ~ "se_lazer00.wav";
|
||||
let slash = lib ~ "se_slash.ogg";
|
||||
|
||||
let pause = libKev ~ "bfxr_Pause.wav";
|
||||
let chargeA = libKev ~ "bfxr_Charge.wav";
|
||||
|
||||
let selection = libKev ~ "se_select00.wav";
|
||||
let thunder = lib ~ "se_boon00.wav"; // Thunder/delay laser sound
|
||||
let bomb = lib ~ "se_nep00.wav";
|
||||
|
||||
let extend = libKev ~ "bfxr_ExtendLegacy.wav"; // Clear game!
|
||||
|
||||
let lenenwarn = lib ~ "../lenenwarning.wav";
|
||||
let chargeB = lib ~ "se_ch01.wav";
|
||||
|
||||
// Sound objects declarations
|
||||
|
||||
let warnsfx = ObjSound_Create();
|
||||
let lwmusic = ObjSound_Create();
|
||||
let fire1 = ObjSound_Create();
|
||||
let fire2 = ObjSound_Create();
|
||||
let fire3 = ObjSound_Create();
|
||||
let light1 = ObjSound_Create();
|
||||
let light2 = ObjSound_Create();
|
||||
let laser = ObjSound_Create();
|
||||
let laserB = ObjSound_Create();
|
||||
let charge = ObjSound_Create();
|
||||
let phase = ObjSound_Create();
|
||||
let grz = ObjSound_Create();
|
||||
let swing = ObjSound_Create();
|
||||
let pausesfx = ObjSound_Create();
|
||||
let choose = ObjSound_Create();
|
||||
let thundersfx = ObjSound_Create();
|
||||
let bombsfx = ObjSound_Create();
|
||||
let extendsfx = ObjSound_Create();
|
||||
let icebreak = ObjSound_Create();
|
||||
let entrance = ObjSound_Create();
|
||||
|
||||
int sfxBoom = ObjSound_Create();
|
||||
int bossBoom = ObjSound_Create();
|
||||
int bossLaugh = ObjSound_Create();
|
||||
|
||||
// Merge function that loads sounds and significantly decreases volume
|
||||
// so the ears do not die from SFX overload.
|
||||
|
||||
function LoadEx(targetobj, targetpath, targetvol){
|
||||
|
||||
ObjSound_Load(targetobj, targetpath);
|
||||
ObjSound_SetVolumeRate(targetobj, targetvol * SFXVol);
|
||||
ObjSound_SetSoundDivision(targetobj, SOUND_SE);
|
||||
}
|
||||
|
||||
task _SoundTask{
|
||||
|
||||
//LoadEx(lwmusic, lw, 80);
|
||||
LoadEx(fire1, bullet1, 65);
|
||||
LoadEx(fire2, bullet2, 65);
|
||||
LoadEx(pausesfx, pause, 40);
|
||||
LoadEx(extendsfx, extend, 60);
|
||||
|
||||
LoadEx(light1, lightning1, 20);
|
||||
LoadEx(light2, lightning2, 20);
|
||||
LoadEx(laser, laze, 20);
|
||||
LoadEx(laserB, lazeB, 20);
|
||||
//LoadEx(grz, graze, 20);
|
||||
LoadEx(swing, slash, 20);
|
||||
|
||||
LoadEx(choose, selection, 30);
|
||||
LoadEx(thundersfx, thunder, 25);
|
||||
LoadEx(charge, chargeA, 75);
|
||||
LoadEx(phase, chargeB, 75);
|
||||
LoadEx(fire3, bullet3, 35);
|
||||
LoadEx(bombsfx, bomb, 50);
|
||||
|
||||
LoadEx(warnsfx, lenenwarn, 30);
|
||||
LoadEx(icebreak, lib ~ "se_don00.wav", 60);
|
||||
LoadEx(entrance, lib ~ "se_gun00.wav", 60);
|
||||
|
||||
LoadEx(sfxBoom, libKev ~ "bfxr_EnemyBoom.wav", 60);
|
||||
LoadEx(bossBoom, libKev ~ "bossBoom.wav", 60);
|
||||
LoadEx(bossLaugh, libKev ~ "RaspberryTickle_Giggle.wav", 60);
|
||||
}
|
||||
|
||||
// Functions to load sounds in scripts
|
||||
|
||||
task Shoot1{ObjSound_Play(fire1); return;}
|
||||
task Shoot2{ObjSound_Play(fire2); return;}
|
||||
task Shoot3{ObjSound_Play(fire3); return;}
|
||||
task Lit1{ObjSound_Play(light1); return;}
|
||||
task Lit2{ObjSound_Play(light2); return;}
|
||||
task GrazeSFX{ObjSound_Play(grz); return;}
|
||||
task SwordSlashSFX{ObjSound_Play(swing); return;}
|
||||
task PauseGameSFX{ObjSound_Play(pausesfx); return;}
|
||||
task SelectOptionSFX{ObjSound_Play(choose); return;}
|
||||
task LaserSFX{ObjSound_Play(laser); return;}
|
||||
task LaserBSFX{ObjSound_Play(laserB); return;}
|
||||
task ThunderSFX{ObjSound_Play(thundersfx); return;}
|
||||
task ChargeSFX{ObjSound_Play(charge); return;}
|
||||
task ChargeBreakSFX{ObjSound_Play(phase); return;}
|
||||
task BombSFX{ObjSound_Play(bombsfx); return;}
|
||||
task ExtendSFX{ObjSound_Play(extendsfx); return;}
|
22
script/KevinSystem/Init.dnh
Normal file
|
@ -0,0 +1,22 @@
|
|||
|
||||
if(IsCommonDataAreaExists("PIV") == false){
|
||||
CreateCommonDataArea("PIV");
|
||||
SetAreaCommonData("PIV", "currentvalue", 10000);
|
||||
SetAreaCommonData("PIV", "ChainAmount", 1);
|
||||
}
|
||||
else{}
|
||||
|
||||
if(IsCommonDataAreaExists("ScriptID") == false){
|
||||
CreateCommonDataArea("ScriptID");
|
||||
SetAreaCommonData("ScriptID", "SystemID", 0);
|
||||
SetAreaCommonData("ScriptID", "ItemID", 0);
|
||||
}
|
||||
else{}
|
||||
|
||||
if(IsCommonDataAreaExists("ChainChecks") == false){
|
||||
CreateCommonDataArea("ChainChecks");
|
||||
SetAreaCommonData("ChainChecks", "IsChaining", false);
|
||||
}
|
||||
else{}
|
||||
|
||||
|
BIN
script/KevinSystem/KevinShot/KevinShot_Alt_HD.png
Normal file
After Width: | Height: | Size: 997 KiB |
BIN
script/KevinSystem/KevinShot/KevinShot_Alt_HD_2.png
Normal file
After Width: | Height: | Size: 1 MiB |
BIN
script/KevinSystem/KevinShot/KevinShot_Alt_HD_Fireball.png
Normal file
After Width: | Height: | Size: 810 KiB |
BIN
script/KevinSystem/KevinShot/KevinShot_Alt_HD_Fireball_Inv.png
Normal file
After Width: | Height: | Size: 630 KiB |
BIN
script/KevinSystem/KevinShot/KevinShot_Alt_HD_Inv.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
script/KevinSystem/KevinShot/KevinShot_FireballPxEdit.ase
Normal file
BIN
script/KevinSystem/KevinShot/KevinShot_PxEdit.ase
Normal file
BIN
script/KevinSystem/KevinShot/KevinShot_PxEdit_A.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
script/KevinSystem/KevinShot/KevinShot_PxEdit_B.png
Normal file
After Width: | Height: | Size: 871 KiB |
BIN
script/KevinSystem/KevinShot/KevinShot_PxEdit_C.png
Normal file
After Width: | Height: | Size: 242 KiB |
BIN
script/KevinSystem/KevinShot/KevinShot_PxEdit_D.png
Normal file
After Width: | Height: | Size: 255 KiB |
33
script/KevinSystem/KevinShot/misc.txt
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
For Danmakufu users.
|
||||
|
||||
These functions are meant to be used alongside my pastel shotsheet due to the very high native resolution.
|
||||
*/
|
||||
|
||||
// Bullet rescaling task, also has functionality for setting a new hitbox size relative to the new bullet graphic size. I highly recommend leaving hitboxscale to true.
|
||||
|
||||
task _BulletRescale(target, float scale, bool hitboxscale, hitboxlevel){
|
||||
|
||||
ObjRender_SetScaleXYZ(target, scale, scale, 1);
|
||||
|
||||
if (hitboxscale){
|
||||
ObjShot_SetIntersectionScaleXY(target, scale*hitboxlevel, scale*hitboxlevel); // Note the formula. The hitbox will have been scaled accordingly along with the bullet graphic, but you can use hitboxlevel to adjust the scale further.
|
||||
return;
|
||||
}
|
||||
|
||||
else{return;}
|
||||
|
||||
}
|
||||
|
||||
// Delay task, provided by Naudiz (@Naudogs). For best effects, ensure destscale is equal to the resized scale of the bullet graphic, and orgscale be larger than it.
|
||||
|
||||
task _Delay(target, del, orgscale, destscale, orgalpha, destalpha){
|
||||
|
||||
ObjShot_SetDelay(target, del);
|
||||
ObjShot_SetDelayGraphic(target, ObjShot_GetImageID(target)); // unless you already have the ID in the function somewhere, in which case you can just use that, or use any other graphic
|
||||
ObjShot_SetDelayMode(target, DELAY_LERP, LERP_ACCELERATE, LERP_DECELERATE); // delay mode, scale lerp, alpha lerp. Check ph3sx's New Functions Documentation.txt for more details.
|
||||
ObjShot_SetDelayScaleParameter(target, destscale, orgscale, del); // lerps from orgscale to destscale scale in del frames (use the value from ObjShot_SetDelay for del)
|
||||
ObjShot_SetDelayAlphaParameter(target, destalpha, orgalpha, del); // lerps from orgalpha to destalpha scale in del frames (use the value from ObjShot_SetDelay for del)
|
||||
return;
|
||||
|
||||
}
|
28
script/KevinSystem/KevinShot/readme.txt
Normal file
|
@ -0,0 +1,28 @@
|
|||
Kevin's Ultra HD/4K Pastel Shotsheet
|
||||
|
||||
0.10a
|
||||
|
||||
--------
|
||||
|
||||
Thank you for downloading and using my pastel shotsheet!
|
||||
|
||||
This shotsheet features various common bullet types in a variety of "pastel" colors - colors lighter than your usual bullet graphics, but they should hopefully still be just as visible nonetheless. It has a *very* big native resolution (the first sheet is 4096x4096, with each bullet graphic being 256x256), and therefore is meant to be used with a similarly large game resolution and/or bullet rescaling functions. (See misc.txt for information regarding the latter in Danmakufu). It comes pre-packed with shot data and shot constant sheets meant for instant use in Danmakufu.
|
||||
|
||||
The shotsheet is still heavily incomplete. In the works is a second sheet (4096x2048) featuring more bullet types (fireballs, lasers, bubbles), some changes to existing bullet graphics to improve aesthetic and visibility, and half-size versions for regular HD reoslutions.
|
||||
|
||||
How to use:
|
||||
|
||||
Extract the directory to an appropriate location in your project and to load them, just include the shot constant text file in your script file (shotconst_4K.txt).
|
||||
--------
|
||||
The shot sheet images can be used in other engines as well. However it is the responsibility of the user to port the shot sheet data themselves.
|
||||
|
||||
The shot sheet images are free to use NON-COMMERCIALLY. Please credit me (Kevinmonitor/Kevin Mink) fully!
|
||||
|
||||
You are free to modify the shot sheets. Please state so if you do so however (for example, in the credits for your project you put a "modified by the author with permission" next to my attribution).
|
||||
|
||||
Please do not redistribute these shotsheets on your own.
|
||||
--------
|
||||
CONTACT:
|
||||
|
||||
Discord: Kevinmonitor#6745
|
||||
Twitter: @kevinminh_alt
|
142
script/KevinSystem/KevinShot/shotconst_HD.txt
Normal file
|
@ -0,0 +1,142 @@
|
|||
|
||||
local
|
||||
{
|
||||
LoadTextureEx(GetCurrentScriptDirectory ~ "./KevinShot_Alt_HD.png", true, true);
|
||||
LoadTextureEx(GetCurrentScriptDirectory ~ "./KevinShot_Alt_HD_Fireball.png", true, true);
|
||||
LoadTextureEx(GetCurrentScriptDirectory ~ "./KevinShot_Alt_HD_Inv.png", true, true);
|
||||
LoadTextureEx(GetCurrentScriptDirectory ~ "./KevinShot_Alt_HD_Fireball_Inv.png", true, true);
|
||||
LoadEnemyShotData(GetCurrentScriptDirectory ~ "shotdata_HD.txt");
|
||||
LoadEnemyShotData(GetCurrentScriptDirectory ~ "shotdata_HD_2.txt");
|
||||
LoadEnemyShotData(GetCurrentScriptDirectory ~ "shotdata_HD_3.txt");
|
||||
LoadEnemyShotData(GetCurrentScriptDirectory ~ "shotdata_HD_4.txt");
|
||||
}
|
||||
|
||||
const KEV_BALL_RED = 2000;
|
||||
const KEV_BALL_ORANGE = 2001;
|
||||
const KEV_BALL_YELLOW = 2002;
|
||||
const KEV_BALL_GREEN = 2003;
|
||||
const KEV_BALL_AQUA = 2004;
|
||||
const KEV_BALL_LAVENDER = 2005;
|
||||
const KEV_BALL_PURPLE = 2006;
|
||||
const KEV_BALL_PINK = 2007;
|
||||
const KEV_BALL_WHITE = 2008;
|
||||
|
||||
const KEV_FIRESMALL_RED = 2011;
|
||||
const KEV_FIRESMALL_ORANGE = 2012;
|
||||
const KEV_FIRESMALL_YELLOW = 2013;
|
||||
const KEV_FIRESMALL_GREEN = 2014;
|
||||
const KEV_FIRESMALL_AQUA = 2015;
|
||||
const KEV_FIRESMALL_LAVENDER = 2016;
|
||||
const KEV_FIRESMALL_PURPLE = 2017;
|
||||
const KEV_FIRESMALL_PINK = 2018;
|
||||
const KEV_FIRESMALL_WHITE = 2019;
|
||||
|
||||
const KEV_LEAF_RED = 2022;
|
||||
const KEV_LEAF_ORANGE = 2023;
|
||||
const KEV_LEAF_YELLOW = 2024;
|
||||
const KEV_LEAF_GREEN = 2025;
|
||||
const KEV_LEAF_AQUA = 2026;
|
||||
const KEV_LEAF_LAVENDER = 2027;
|
||||
const KEV_LEAF_PURPLE = 2028;
|
||||
const KEV_LEAF_PINK = 2029;
|
||||
const KEV_LEAF_WHITE = 2030;
|
||||
|
||||
const KEV_FIRELARGE_RED = 2033;
|
||||
const KEV_FIRELARGE_ORANGE = 2034;
|
||||
const KEV_FIRELARGE_YELLOW = 2035;
|
||||
const KEV_FIRELARGE_GREEN = 2036;
|
||||
const KEV_FIRELARGE_AQUA = 2037;
|
||||
const KEV_FIRELARGE_LAVENDER = 2038;
|
||||
const KEV_FIRELARGE_PURPLE = 2039;
|
||||
const KEV_FIRELARGE_PINK = 2040;
|
||||
const KEV_FIRELARGE_WHITE = 2041;
|
||||
|
||||
const KEV_ARROW_RED = 2044;
|
||||
const KEV_ARROW_ORANGE = 2045;
|
||||
const KEV_ARROW_YELLOW = 2046;
|
||||
const KEV_ARROW_GREEN = 2047;
|
||||
const KEV_ARROW_AQUA = 2048;
|
||||
const KEV_ARROW_LAVENDER = 2049;
|
||||
const KEV_ARROW_PURPLE = 2050;
|
||||
const KEV_ARROW_PINK = 2051;
|
||||
const KEV_ARROW_WHITE = 2052;
|
||||
|
||||
const KEV_BUTTERFLY_RED = 2055;
|
||||
const KEV_BUTTERFLY_ORANGE = 2056;
|
||||
const KEV_BUTTERFLY_YELLOW = 2057;
|
||||
const KEV_BUTTERFLY_GREEN = 2058;
|
||||
const KEV_BUTTERFLY_AQUA = 2059;
|
||||
const KEV_BUTTERFLY_LAVENDER = 2060;
|
||||
const KEV_BUTTERFLY_PURPLE = 2061;
|
||||
const KEV_BUTTERFLY_PINK = 2062;
|
||||
const KEV_BUTTERFLY_WHITE = 2063;
|
||||
|
||||
const KEV_AURABALL_RED = 2066;
|
||||
const KEV_AURABALL_ORANGE = 2067;
|
||||
const KEV_AURABALL_YELLOW = 2068;
|
||||
const KEV_AURABALL_GREEN = 2069;
|
||||
const KEV_AURABALL_AQUA = 2070;
|
||||
const KEV_AURABALL_LAVENDER = 2071;
|
||||
const KEV_AURABALL_PURPLE = 2072;
|
||||
const KEV_AURABALL_PINK = 2073;
|
||||
const KEV_AURABALL_WHITE = 2074;
|
||||
|
||||
const KEV_FIRE_RED = 2075;
|
||||
const KEV_FIRE_ORANGE = 2076;
|
||||
const KEV_FIRE_YELLOW = 2077;
|
||||
const KEV_FIRE_GREEN = 2078;
|
||||
const KEV_FIRE_AQUA = 2079;
|
||||
const KEV_FIRE_LAVENDER = 2080;
|
||||
const KEV_FIRE_PURPLE = 2081;
|
||||
const KEV_FIRE_PINK = 2082;
|
||||
const KEV_FIRE_WHITE = 2083;
|
||||
|
||||
const KEV_BUBBLE_RED = 2086;
|
||||
const KEV_BUBBLE_ORANGE = 2087;
|
||||
const KEV_BUBBLE_YELLOW = 2088;
|
||||
const KEV_BUBBLE_GREEN = 2089;
|
||||
const KEV_BUBBLE_AQUA = 2090;
|
||||
const KEV_BUBBLE_LAVENDER = 2091;
|
||||
const KEV_BUBBLE_PURPLE = 2092;
|
||||
const KEV_BUBBLE_PINK = 2093;
|
||||
|
||||
const KEV_KNIFE_RED = 2096;
|
||||
const KEV_KNIFE_ORANGE = 2097;
|
||||
const KEV_KNIFE_YELLOW = 2098;
|
||||
const KEV_KNIFE_GREEN = 2099;
|
||||
const KEV_KNIFE_AQUA = 2100;
|
||||
const KEV_KNIFE_LAVENDER = 2101;
|
||||
const KEV_KNIFE_PURPLE = 2102;
|
||||
const KEV_KNIFE_PINK = 2103;
|
||||
|
||||
const KEV_BITCHKILLER_ARROW = 3000;
|
||||
|
||||
// Inverted colours
|
||||
|
||||
const KEV_BALL_RED_INV = 2200; const KEV_PEOPLE_RED_INV = 2211; const KEV_LEAF_RED_INV = 2222; const KEV_AMULET_RED_INV = 2233; const KEV_ARROW_RED_INV = 2244; const KEV_BUTTERFLY_RED_INV = 2255; const KEV_AURABALL_RED_INV = 2266; const KEV_BUBBLE_RED_INV = 2286; const KEV_KNIFE_RED_INV = 2296;
|
||||
|
||||
const KEV_BALL_ORANGE_INV = 2201; const KEV_PEOPLE_ORANGE_INV = 2212; const KEV_LEAF_ORANGE_INV = 2223; const KEV_AMULET_ORANGE_INV = 2234; const KEV_ARROW_ORANGE_INV = 2245; const KEV_BUTTERFLY_ORANGE_INV = 2256; const KEV_AURABALL_ORANGE_INV = 2267; const KEV_BUBBLE_ORANGE_INV = 2287; const KEV_KNIFE_ORANGE_INV = 2297;
|
||||
|
||||
const KEV_BALL_YELLOW_INV = 2202; const KEV_PEOPLE_YELLOW_INV = 2213; const KEV_LEAF_YELLOW_INV = 2224; const KEV_AMULET_YELLOW_INV = 2235; const KEV_ARROW_YELLOW_INV = 2246; const KEV_BUTTERFLY_YELLOW_INV = 2257; const KEV_AURABALL_YELLOW_INV = 2268; const KEV_BUBBLE_YELLOW_INV = 2288; const KEV_KNIFE_YELLOW_INV = 2298;
|
||||
|
||||
const KEV_BALL_GREEN_INV = 2203; const KEV_PEOPLE_GREEN_INV = 2214; const KEV_LEAF_GREEN_INV = 2225; const KEV_AMULET_GREEN_INV = 2236; const KEV_ARROW_GREEN_INV = 2247; const KEV_BUTTERFLY_GREEN_INV = 2258; const KEV_AURABALL_GREEN_INV = 2269; const KEV_BUBBLE_GREEN_INV = 2289; const KEV_KNIFE_GREEN_INV = 2299;
|
||||
|
||||
const KEV_BALL_AQUA_INV = 2204; const KEV_PEOPLE_AQUA_INV = 2215; const KEV_LEAF_AQUA_INV = 2226; const KEV_AMULET_AQUA_INV = 2237; const KEV_ARROW_AQUA_INV = 2248; const KEV_BUTTERFLY_AQUA_INV = 2259; const KEV_AURABALL_AQUA_INV = 2270; const KEV_BUBBLE_AQUA_INV = 2290; const KEV_KNIFE_AQUA_INV = 2300;
|
||||
|
||||
const KEV_BALL_LAVENDER_INV = 2205; const KEV_PEOPLE_LAVENDER_INV = 2216; const KEV_LEAF_LAVENDER_INV = 2227; const KEV_AMULET_LAVENDER_INV = 2238; const KEV_ARROW_LAVENDER_INV = 2249; const KEV_BUTTERFLY_LAVENDER_INV = 2260; const KEV_AURABALL_LAVENDER_INV = 2271; const KEV_BUBBLE_LAVENDER_INV = 2291; const KEV_KNIFE_LAVENDER_INV = 2301;
|
||||
|
||||
const KEV_BALL_PURPLE_INV = 2206; const KEV_PEOPLE_PURPLE_INV = 2217; const KEV_LEAF_PURPLE_INV = 2228; const KEV_AMULET_PURPLE_INV = 2239; const KEV_ARROW_PURPLE_INV = 2250; const KEV_BUTTERFLY_PURPLE_INV = 2261; const KEV_AURABALL_PURPLE_INV = 2272; const KEV_BUBBLE_PURPLE_INV = 2292; const KEV_KNIFE_PURPLE_INV = 2302;
|
||||
|
||||
const KEV_BALL_PINK_INV = 2207; const KEV_PEOPLE_PINK_INV = 2218; const KEV_LEAF_PINK_INV = 2229; const KEV_AMULET_PINK_INV = 2240; const KEV_ARROW_PINK_INV = 2251; const KEV_BUTTERFLY_PINK_INV = 2262; const KEV_AURABALL_PINK_INV = 2273; const KEV_BUBBLE_PINK_INV = 2293; const KEV_KNIFE_PINK_INV = 2303;
|
||||
|
||||
const KEV_BALL_WHITE_INV = 2208; const KEV_PEOPLE_WHITE_INV = 2219; const KEV_LEAF_WHITE_INV = 2230; const KEV_AMULET_WHITE_INV = 2241; const KEV_ARROW_WHITE_INV = 2252; const KEV_BUTTERFLY_WHITE_INV = 2263; const KEV_AURABALL_WHITE_INV = 2274; const KEV_BUBBLE_WHITE_INV = 2294; const KEV_KNIFE_WHITE_INV = 2304;
|
||||
|
||||
const KEV_FIRE_RED_INV = 2275;
|
||||
const KEV_FIRE_ORANGE_INV = 2276;
|
||||
const KEV_FIRE_YELLOW_INV = 2277;
|
||||
const KEV_FIRE_GREEN_INV = 2278;
|
||||
const KEV_FIRE_AQUA_INV = 2279;
|
||||
const KEV_FIRE_LAVENDER_INV = 2280;
|
||||
const KEV_FIRE_PURPLE_INV = 2281;
|
||||
const KEV_FIRE_PINK_INV = 2282;
|
||||
const KEV_FIRE_WHITE_INV = 2283;
|
108
script/KevinSystem/KevinShot/shotdata_HD.txt
Normal file
|
@ -0,0 +1,108 @@
|
|||
#UserShotData
|
||||
|
||||
shot_image = "./KevinShot_PxEdit_A.png"
|
||||
|
||||
// BALL
|
||||
|
||||
ShotData { id = 2000 rect = (0,0,128,128) collision = 12 delay_color = (255,255,255) angular_velocity = 5} //RED
|
||||
ShotData { id = 2001 rect = (128,0,256,128) collision = 12 delay_color = (255,255,255) angular_velocity = 5} //ORANGE
|
||||
ShotData { id = 2002 rect = (256,0,384,128) collision = 12 delay_color = (255,255,255) angular_velocity = 5} //YELLOW
|
||||
ShotData { id = 2003 rect = (384,0,512,128) collision = 12 delay_color = (255,255,255) angular_velocity = 5} //GREEN
|
||||
ShotData { id = 2004 rect = (512,0,640,128) collision = 12 delay_color = (255,255,255) angular_velocity = 5} //AQUA
|
||||
ShotData { id = 2005 rect = (640,0,768,128) collision = 12 delay_color = (255,255,255) angular_velocity = 5} //LAVENDER
|
||||
ShotData { id = 2006 rect = (768,0,896,128) collision = 12 delay_color = (255,255,255) angular_velocity = 5} //PURPLE
|
||||
ShotData { id = 2007 rect = (896,0,1024,128) collision = 12 delay_color = (255,255,255) angular_velocity = 5} //PINK
|
||||
ShotData { id = 2008 rect = (1024,0,1152,128) collision = 12 delay_color = (255,255,255) angular_velocity = 5} //WHITE
|
||||
|
||||
// FIRE SMALL
|
||||
|
||||
ShotData { id = 2011 rect = (0,128,128,256) collision = (12,0,-8) delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2012 rect = (128,128,256,256) collision = (12,0,-8) delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2013 rect = (256,128,384,256) collision = (12,0,-8) delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2014 rect = (384,128,512,256) collision = (12,0,-8) delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2015 rect = (512,128,640,256) collision = (12,0,-8) delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2016 rect = (640,128,768,256) collision = (12,0,-8) delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2017 rect = (768,128,896,256) collision = (12,0,-8) delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2018 rect = (896,128,1024,256) collision = (12,0,-8) delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2019 rect = (1024,128,1152,256) collision = (12,0,-8) delay_color = (255,255,255) } //WHITE
|
||||
|
||||
// LEAF
|
||||
|
||||
ShotData { id = 2022 rect = (0,256,128,384) collision = 8 delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2023 rect = (128,256,256,384) collision = 8 delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2024 rect = (256,256,384,384) collision = 8 delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2025 rect = (384,256,512,384) collision = 8 delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2026 rect = (512,256,640,384) collision = 8 delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2027 rect = (640,256,768,384) collision = 8 delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2028 rect = (768,256,896,384) collision = 8 delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2029 rect = (896,256,1024,384) collision = 8 delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2030 rect = (1024,256,1152,384) collision = 8 delay_color = (255,255,255) } //WHITE
|
||||
|
||||
// FIRE BIG
|
||||
|
||||
ShotData { id = 2033 rect = (0,384,128,512) collision = (20,0,-12) delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2034 rect = (128,384,256,512) collision = (20,0,-12) delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2035 rect = (256,384,384,512) collision = (20,0,-12) delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2036 rect = (384,384,512,512) collision = (20,0,-12) delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2037 rect = (512,384,640,512) collision = (20,0,-12) delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2038 rect = (640,384,768,512) collision = (20,0,-12) delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2039 rect = (768,384,896,512) collision = (20,0,-12) delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2040 rect = (896,384,1024,512) collision = (20,0,-12) delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2041 rect = (1024,384,1152,512) collision = (20,0,-12) delay_color = (255,255,255) } //WHITE
|
||||
|
||||
ShotData { id = 2044 rect = (0,512,128,640) collision = (6,0,20) delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2045 rect = (128,512,256,640) collision = (6,0,20) delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2046 rect = (256,512,384,640) collision = (6,0,20) delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2047 rect = (384,512,512,640) collision = (6,0,20) delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2048 rect = (512,512,640,640) collision = (6,0,20) delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2049 rect = (640,512,768,640) collision = (6,0,20) delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2050 rect = (768,512,896,640) collision = (6,0,20) delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2051 rect = (896,512,1024,640) collision = (6,0,20) delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2052 rect = (1024,512,1152,640) collision = (6,0,20) delay_color = (255,255,255) } //WHITE
|
||||
|
||||
ShotData { id = 2055 rect = (0,640,128,768) collision = 12 delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2056 rect = (128,640,256,768) collision = 12 delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2057 rect = (256,640,384,768) collision = 12 delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2058 rect = (384,640,512,768) collision = 12 delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2059 rect = (512,640,640,768) collision = 12 delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2060 rect = (640,640,768,768) collision = 12 delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2061 rect = (768,640,896,768) collision = 12 delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2062 rect = (896,640,1024,768) collision = 12 delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2063 rect = (1024,640,1152,768) collision = 12 delay_color = (255,255,255) } //WHITE
|
||||
|
||||
ShotData { id = 2066 rect = (0,768,128,896) collision = 18 delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2067 rect = (128,768,256,896) collision = 18 delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2068 rect = (256,768,384,896) collision = 18 delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2069 rect = (384,768,512,896) collision = 18 delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2070 rect = (512,768,640,896) collision = 18 delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2071 rect = (640,768,768,896) collision = 18 delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2072 rect = (768,768,896,896) collision = 18 delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2073 rect = (896,768,1024,896) collision = 18 delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2074 rect = (1024,768,1152,896) collision = 18 delay_color = (255,255,255) } //WHITE
|
||||
|
||||
75 -> 83: fireballs
|
||||
|
||||
ShotData { id = 2086 rect = (0,896,256,1152) collision = 48 delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2087 rect = (256,896,512,1152) collision = 48 delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2088 rect = (512,896,768,1152) collision = 48 delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2089 rect = (768,896,1024,1152) collision = 48 delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2090 rect = (1024,896,1280,1152) collision = 48 delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2091 rect = (1280,896,1536,1152) collision = 48 delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2092 rect = (1536,896,1792,1152) collision = 48 delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2093 rect = (1792,896,2048,1152) collision = 48 delay_color = (255,255,255) } //PINK
|
||||
|
||||
ShotData { id = 2096 rect = (0,1152,128,1280) collision = (8.5,0,-9.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (6.5,0,32.5) delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2097 rect = (128,1152,256,1280) collision = (8.5,0,-9.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (6.5,0,32.5) delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2098 rect = (256,1152,384,1280) collision = (8.5,0,-9.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (6.5,0,32.5) delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2099 rect = (384,1152,512,1280) collision = (8.5,0,-9.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (6.5,0,32.5) delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2100 rect = (512,1152,640,1280) collision = (8.5,0,-9.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (6.5,0,32.5) delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2101 rect = (640,1152,768,1280) collision = (8.5,0,-9.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (6.5,0,32.5) delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2102 rect = (768,1152,896,1280) collision = (8.5,0,-9.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (6.5,0,32.5) delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2103 rect = (896,1152,1024,1280) collision = (8.5,0,-9.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (6.5,0,32.5) delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2104 rect = (1024,1152,1152,1280) collision = (8.5,0,-9.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (6.5,0,32.5) delay_color = (255,255,255) } //WHITE
|
||||
ShotData { id = 2105 rect = (1152,1152,1280,1280) collision = (8.5,0,-9.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (6.5,0,32.5) delay_color = (255,255,255) } //
|
||||
ShotData { id = 2106 rect = (1280,1152,1408,1280) collision = (8.5,0,-9.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (6.5,0,32.5) delay_color = (255,255,255) } //
|
||||
|
||||
|
||||
|
||||
|
24
script/KevinSystem/KevinShot/shotdata_HD_2.txt
Normal file
|
@ -0,0 +1,24 @@
|
|||
#UserShotData
|
||||
|
||||
shot_image = "./KevinShot_PxEdit_C.png"
|
||||
|
||||
ShotData { id = 2075 AnimationData { animation_data = ( 6, 0, 0, 128, 128); animation_data = ( 6, 128, 0, 256, 128); animation_data = ( 6, 256, 0, 384, 128); animation_data = ( 6, 384, 0, 512, 128); } render = ALPHA collision = (13, 0, 24) delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2076 AnimationData { animation_data = ( 6, 0, 128, 128, 256); animation_data = ( 6, 128, 128, 256, 256); animation_data = ( 6, 256, 128, 384, 256); animation_data = ( 6, 384, 128, 512, 256); } render = ALPHA collision = (13, 0, 24) delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2077 AnimationData { animation_data = ( 6, 0, 256, 128, 384); animation_data = ( 6, 128, 256, 256, 384); animation_data = ( 6, 256, 256, 384, 384); animation_data = ( 6, 384, 256, 512, 384); } render = ALPHA collision = (13, 0, 24) delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2078 AnimationData { animation_data = ( 6, 0, 384, 128, 512); animation_data = ( 6, 128, 384, 256, 512); animation_data = ( 6, 256, 384, 384, 512); animation_data = ( 6, 384, 384, 512, 512); } render = ALPHA collision = (13, 0, 24) delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2079 AnimationData { animation_data = ( 6, 0, 512, 128, 640); animation_data = ( 6, 128, 512, 256, 640); animation_data = ( 6, 256, 512, 384, 640); animation_data = ( 6, 384, 512, 512, 640); } render = ALPHA collision = (13, 0, 24) delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2080 AnimationData { animation_data = ( 6, 0, 640, 128, 768); animation_data = ( 6, 128, 640, 256, 768); animation_data = ( 6, 256, 640, 384, 768); animation_data = ( 6, 384, 640, 512, 768); } render = ALPHA collision = (13, 0, 24) delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2081 AnimationData { animation_data = ( 6, 0, 768, 128, 896); animation_data = ( 6, 128, 768, 256, 896); animation_data = ( 6, 256, 768, 384, 896); animation_data = ( 6, 384, 768, 512, 896); } render = ALPHA collision = (13, 0, 24) delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2082 AnimationData { animation_data = ( 6, 0, 896, 128, 1024); animation_data = ( 6, 128, 896, 256, 1024); animation_data = ( 6, 256, 896, 384, 1024); animation_data = ( 6, 384, 896, 512, 1024); } render = ALPHA collision = (13, 0, 24) delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2083 AnimationData { animation_data = ( 6, 0, 1024, 128, 1152); animation_data = ( 6, 128, 1024, 256, 1152); animation_data = ( 6, 256, 1024, 384, 1152); animation_data = ( 6, 384, 1024, 512, 1152); } render = ALPHA collision = (13, 0, 24) delay_color = (255,255,255) } //WHITE
|
||||
|
||||
// Bitchkiller Arrow
|
||||
|
||||
ShotData {
|
||||
id = 3000
|
||||
rect = (1024, 0, 1536, 1280)
|
||||
collision = (102, 0, 256)
|
||||
collision = (50, 0, 352)
|
||||
delay_color = (255, 255, 255)
|
||||
}
|
||||
|
103
script/KevinSystem/KevinShot/shotdata_HD_3.txt
Normal file
|
@ -0,0 +1,103 @@
|
|||
#UserShotData
|
||||
|
||||
// Inverted colors
|
||||
|
||||
shot_image = "./KevinShot_PxEdit_B.png"
|
||||
|
||||
ShotData { id = 2200 rect = (0,0,128,128) collision = 26 delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2201 rect = (128,0,256,128) collision = 26 delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2202 rect = (256,0,384,128) collision = 26 delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2203 rect = (384,0,512,128) collision = 26 delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2204 rect = (512,0,640,128) collision = 26 delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2205 rect = (640,0,768,128) collision = 26 delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2206 rect = (768,0,896,128) collision = 26 delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2207 rect = (896,0,1024,128) collision = 26 delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2208 rect = (1024,0,1152,128) collision = 26 delay_color = (255,255,255) } //WHITE
|
||||
|
||||
ShotData { id = 2211 rect = (0,128,128,256) collision = (17,0,7) delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2212 rect = (128,128,256,256) collision = (17,0,7) delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2213 rect = (256,128,384,256) collision = (17,0,7) delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2214 rect = (384,128,512,256) collision = (17,0,7) delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2215 rect = (512,128,640,256) collision = (17,0,7) delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2216 rect = (640,128,768,256) collision = (17,0,7) delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2217 rect = (768,128,896,256) collision = (17,0,7) delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2218 rect = (896,128,1024,256) collision = (17,0,7) delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2219 rect = (1024,128,1152,256) collision = (17,0,7) delay_color = (255,255,255) } //WHITE
|
||||
|
||||
ShotData { id = 2222 rect = (0,256,128,384) collision = (8,0,6) collision = (8,0,-6) delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2223 rect = (128,256,256,384) collision = (8,0,6) collision = (8,0,-6) delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2224 rect = (256,256,384,384) collision = (8,0,6) collision = (8,0,-6) delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2225 rect = (384,256,512,384) collision = (8,0,6) collision = (8,0,-6) delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2226 rect = (512,256,640,384) collision = (8,0,6) collision = (8,0,-6) delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2227 rect = (640,256,768,384) collision = (8,0,6) collision = (8,0,-6) delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2228 rect = (768,256,896,384) collision = (8,0,6) collision = (8,0,-6) delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2229 rect = (896,256,1024,384) collision = (8,0,6) collision = (8,0,-6) delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2230 rect = (1024,256,1152,384) collision = (8,0,6) collision = (8,0,-6) delay_color = (255,255,255) } //WHITE
|
||||
|
||||
ShotData { id = 2233 rect = (0,384,256,512) collision = (28,0,0) delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2234 rect = (128,384,256,512) collision = (28,0,0) delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2235 rect = (256,384,384,512) collision = (28,0,0) delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2236 rect = (384,384,512,512) collision = (28,0,0) delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2237 rect = (512,384,640,512) collision = (28,0,0) delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2238 rect = (640,384,768,512) collision = (28,0,0) delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2239 rect = (768,384,896,512) collision = (28,0,0) delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2240 rect = (896,384,1024,512) collision = (28,0,0) delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2241 rect = (1024,384,1152,512) collision = (28,0,0) delay_color = (255,255,255) } //WHITE
|
||||
|
||||
ShotData { id = 2244 rect = (0,512,128,640) collision = (8,0,20) delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2245 rect = (128,512,256,640) collision = (8,0,20) delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2246 rect = (256,512,384,640) collision = (8,0,20) delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2247 rect = (384,512,512,640) collision = (8,0,20) delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2248 rect = (512,512,640,640) collision = (8,0,20) delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2249 rect = (640,512,768,640) collision = (8,0,20) delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2250 rect = (768,512,896,640) collision = (8,0,20) delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2251 rect = (896,512,1024,640) collision = (8,0,20) delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2252 rect = (1024,512,1152,640) collision = (8,0,20) delay_color = (255,255,255) } //WHITE
|
||||
|
||||
ShotData { id = 2255 rect = (0,640,128,768) collision = 12 delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2256 rect = (128,640,256,768) collision = 12 delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2257 rect = (256,640,384,768) collision = 12 delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2258 rect = (384,640,512,768) collision = 12 delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2259 rect = (512,640,640,768) collision = 12 delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2260 rect = (640,640,768,768) collision = 12 delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2261 rect = (768,640,896,768) collision = 12 delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2262 rect = (896,640,1024,768) collision = 12 delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2263 rect = (1024,640,1152,768) collision = 12 delay_color = (255,255,255) } //WHITE
|
||||
|
||||
ShotData { id = 2266 rect = (0,768,128,896) collision = 18 delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2267 rect = (128,768,256,896) collision = 18 delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2268 rect = (256,768,384,896) collision = 18 delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2269 rect = (384,768,512,896) collision = 18 delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2270 rect = (512,768,640,896) collision = 18 delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2271 rect = (640,768,768,896) collision = 18 delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2272 rect = (768,768,896,896) collision = 18 delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2273 rect = (896,768,1024,896) collision = 18 delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2274 rect = (1024,768,1152,896) collision = 18 delay_color = (255,255,255) } //WHITE
|
||||
|
||||
/*
|
||||
75 -> 83: fireballs
|
||||
|
||||
ShotData { id = 2086 rect = (0,896,256,1152) collision = 48 delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2087 rect = (256,896,512,1152) collision = 48 delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2088 rect = (512,896,768,1152) collision = 48 delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2089 rect = (768,896,1024,1152) collision = 48 delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2090 rect = (1024,896,1280,1152) collision = 48 delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2091 rect = (1280,896,1536,1152) collision = 48 delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2092 rect = (1536,896,1792,1152) collision = 48 delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2093 rect = (1792,896,2048,1152) collision = 48 delay_color = (255,255,255) } //PINK
|
||||
*/
|
||||
|
||||
ShotData { id = 2296 rect = (0,1152,128,1280) collision = (8.5,0,-5.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (7.5,0,32.5) delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2097 rect = (128,1152,256,1280) collision = (8.5,0,-5.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (7.5,0,32.5) delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2098 rect = (256,1152,384,1280) collision = (8.5,0,-5.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (7.5,0,32.5) delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2099 rect = (384,1152,512,1280) collision = (8.5,0,-5.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (7.5,0,32.5) delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2100 rect = (512,1152,640,1280) collision = (8.5,0,-5.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (7.5,0,32.5) delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2101 rect = (640,1152,768,1280) collision = (8.5,0,-5.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (7.5,0,32.5) delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2102 rect = (768,1152,896,1280) collision = (8.5,0,-5.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (7.5,0,32.5) delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2103 rect = (896,1152,1024,1280) collision = (8.5,0,-5.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (7.5,0,32.5) delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2104 rect = (1024,1152,1152,1280) collision = (8.5,0,-5.5) collision = (8.5,0,6.5) collision = (8.5,0,19.5) collision = (7.5,0,32.5) delay_color = (255,255,255) } //WHITE
|
||||
|
||||
|
||||
|
||||
|
||||
|
15
script/KevinSystem/KevinShot/shotdata_HD_4.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
#UserShotData
|
||||
|
||||
shot_image = "./KevinShot_Alt_HD_Fireball_Inv.png"
|
||||
|
||||
ShotData { id = 2275 AnimationData { animation_data = ( 4, 0, 0, 128, 128); animation_data = ( 4, 128, 0, 256, 128); animation_data = ( 4, 256, 0, 384, 128); animation_data = ( 4, 384, 0, 512, 128); animation_data = ( 4, 512, 0, 640, 128); } render = ALPHA collision = 13 delay_color = (255,255,255) } //RED
|
||||
ShotData { id = 2276 AnimationData { animation_data = ( 4, 0, 128, 128, 256); animation_data = ( 4, 128, 128, 256, 256); animation_data = ( 4, 256, 128, 384, 256); animation_data = ( 4, 384, 128, 512, 256); animation_data = ( 4, 512, 128, 640, 256); } render = ALPHA collision = 13 delay_color = (255,255,255) } //ORANGE
|
||||
ShotData { id = 2277 AnimationData { animation_data = ( 4, 0, 256, 128, 384); animation_data = ( 4, 128, 256, 256, 384); animation_data = ( 4, 256, 256, 384, 384); animation_data = ( 4, 384, 256, 512, 384); animation_data = ( 4, 512, 256, 640, 384); } render = ALPHA collision = 13 delay_color = (255,255,255) } //YELLOW
|
||||
ShotData { id = 2278 AnimationData { animation_data = ( 4, 0, 384, 128, 512); animation_data = ( 4, 128, 384, 256, 512); animation_data = ( 4, 256, 384, 384, 512); animation_data = ( 4, 384, 384, 512, 512); animation_data = ( 4, 512, 384, 640, 512); } render = ALPHA collision = 13 delay_color = (255,255,255) } //GREEN
|
||||
ShotData { id = 2279 AnimationData { animation_data = ( 4, 0, 512, 128, 640); animation_data = ( 4, 128, 512, 256, 640); animation_data = ( 4, 256, 512, 384, 640); animation_data = ( 4, 384, 512, 512, 640); animation_data = ( 4, 512, 512, 640, 640); } render = ALPHA collision = 13 delay_color = (255,255,255) } //AQUA
|
||||
ShotData { id = 2280 AnimationData { animation_data = ( 4, 0, 640, 128, 768); animation_data = ( 4, 128, 640, 256, 768); animation_data = ( 4, 256, 640, 384, 768); animation_data = ( 4, 384, 640, 512, 768); animation_data = ( 4, 512, 640, 640, 768); } render = ALPHA collision = 13 delay_color = (255,255,255) } //LAVENDER
|
||||
ShotData { id = 2281 AnimationData { animation_data = ( 4, 0, 768, 128, 896); animation_data = ( 4, 128, 768, 256, 896); animation_data = ( 4, 256, 768, 384, 896); animation_data = ( 4, 384, 768, 512, 896); animation_data = ( 4, 512, 768, 640, 896); } render = ALPHA collision = 13 delay_color = (255,255,255) } //PURPLE
|
||||
ShotData { id = 2282 AnimationData { animation_data = ( 4, 0, 896, 128, 1024); animation_data = ( 4, 128, 896, 256, 1024); animation_data = ( 4, 256, 896, 384, 1024); animation_data = ( 4, 384, 896, 512, 1024); animation_data = ( 4, 512, 896, 640, 1024); } render = ALPHA collision = 13 delay_color = (255,255,255) } //PINK
|
||||
ShotData { id = 2283 AnimationData { animation_data = ( 4, 0, 1024, 128, 1152); animation_data = ( 4, 128, 1024, 256, 1152); animation_data = ( 4, 256, 1024, 384, 1152); animation_data = ( 4, 384, 1024, 512, 1152); animation_data = ( 4, 512, 1024, 640, 1152); } render = ALPHA collision = 13 delay_color = (255,255,255) } //WHITE
|
||||
ShotData { id = 2283 AnimationData { animation_data = ( 4, 0, 1024, 128, 1152); animation_data = ( 4, 128, 1024, 256, 1152); animation_data = ( 4, 256, 1024, 384, 1152); animation_data = ( 4, 384, 1024, 512, 1152); animation_data = ( 4, 512, 1024, 640, 1152); } render = ALPHA collision = 13 delay_color = (255,255,255) } //WHITE
|
||||
|
829
script/KevinSystem/Kevin_PlayerLib.txt
Normal file
|
@ -0,0 +1,829 @@
|
|||
/* --------------------------------------------------------------------
|
||||
|
||||
UNIVERSAL/GENERAL FUNCTIONS USED FOR PLAYERS
|
||||
|
||||
These functions may/will be reused for future scripts as well.
|
||||
|
||||
--------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "script/KevinSystem/kevin_system/Kevin_ItemConst.txt"
|
||||
#include "script/KevinSystem/kevin_system/Kevin_ItemLib.txt"
|
||||
#include "script/KevinSystem/kevin_system/Lib_Const.dnh"
|
||||
#include "script/KevinSystem/Kevin_PlayerLib_HUD.dnh"
|
||||
//#include "script/KevinSystem/Universal_Lib.txt"
|
||||
|
||||
float universalAlpha = GetAreaCommonData("Config", "PlayerShotOpacity", 60);
|
||||
|
||||
let POINTER_PIV = LoadAreaCommonDataValuePointer("PIV", "currentvalue", 1000);
|
||||
let POINTER_CHAIN = LoadAreaCommonDataValuePointer("PIV", "ChainAmount", 1);
|
||||
let POINTER_CHAINGAUGE = LoadAreaCommonDataValuePointer("PIV", "ChainGauge", 0);
|
||||
let POINTER_SPECIALAMMO = LoadAreaCommonDataValuePointer("PIV", "SpecialAmmo", 100);
|
||||
let POINTER_SPECIALCHECK = LoadAreaCommonDataValuePointer("PIV", "IsUsingSpecial", false);
|
||||
let POINTER_CHAINCHECK = LoadAreaCommonDataValuePointer("PIV", "IsChaining", false);
|
||||
|
||||
//universalAlpha = 255; // Debug
|
||||
|
||||
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;
|
||||
|
||||
}
|
||||
|
||||
function <int> _Create2DImage(imgpath, int[] rectarray){
|
||||
|
||||
int imgname = ObjPrim_Create(OBJ_SPRITE_2D);
|
||||
ObjPrim_SetTexture(imgname, imgpath);
|
||||
ObjSprite2D_SetSourceRect(imgname, rectarray);
|
||||
ObjSprite2D_SetDestCenter(imgname);
|
||||
//ObjRender_SetPosition(imgname, positionstart)
|
||||
|
||||
return imgname;
|
||||
}
|
||||
|
||||
// thanks ttbd owo
|
||||
|
||||
function CreateEffectObject(px, py, img, blendtype, left, top, right, bottom)
|
||||
{
|
||||
let obj = ObjPrim_Create(OBJ_SPRITE_2D);
|
||||
ObjPrim_SetTexture(obj, img);
|
||||
ObjSprite2D_SetSourceRect(obj, left, top, right, bottom);
|
||||
ObjSprite2D_SetDestCenter(obj);
|
||||
|
||||
if(blendtype=="ALPHA"){ObjRender_SetBlendType(obj, BLEND_ALPHA);}
|
||||
else if(blendtype=="MULTIPLY"){ObjRender_SetBlendType(obj, BLEND_MULTIPLY);}
|
||||
else if(blendtype=="SUBTRACT"){ObjRender_SetBlendType(obj, BLEND_SUBTRACT);}
|
||||
else if(blendtype=="SHADOW"){ObjRender_SetBlendType(obj, BLEND_SHADOW);}
|
||||
else if(blendtype=="RGB"){ObjRender_SetBlendType(obj, BLEND_ADD_RGB);}
|
||||
else if(blendtype=="ARGB"){ObjRender_SetBlendType(obj, BLEND_ADD_ARGB);}
|
||||
else if(blendtype=="INVERT"){ObjRender_SetBlendType(obj, BLEND_INV_DESTRGB);}
|
||||
|
||||
ObjRender_SetPosition(obj, px, py, 0);
|
||||
ObjRender_SetTextureFilter(obj, FILTER_POINT, FILTER_POINT, FILTER_POINT);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
CHAIN SYSTEM: Crystals fill up your chain amount and refill your chain gauge, up to a max of 64x
|
||||
Gauge starts to go down when you don't collect crystals: it resets the entire chain after 3 seconds
|
||||
|
||||
*/
|
||||
|
||||
task _HandleChainGauge(){
|
||||
|
||||
// Gauge maxes at 100.
|
||||
// If gauge reaches 0, reset the chain
|
||||
float rateReduceNormal = 100/120;
|
||||
|
||||
float rateReduceCashin = 100/180; // x48-64
|
||||
|
||||
float rateReduceCashin_MED = 100/90; // x32-48
|
||||
float rateReduceCashin_LOW = 100/60; // x16-32
|
||||
float rateReduceCashin_PLACEBO = 100/30; // under x16
|
||||
|
||||
while(true){
|
||||
|
||||
if(GetCommonDataPtr(POINTER_SPECIALCHECK, false) == false && GetCommonDataPtr(POINTER_CHAIN, 1) >= 64 && !isChain){NotifyEventAll(EV_CHAIN_MAX, 1);}
|
||||
|
||||
else{}
|
||||
|
||||
if(GetCommonDataPtr(POINTER_SPECIALCHECK, false) == true){
|
||||
|
||||
if(GetCommonDataPtr(POINTER_CHAINGAUGE, 0) <= 1){NotifyEventAll(EV_CHAIN_END, 1);}
|
||||
|
||||
if(GetCommonDataPtr(POINTER_CHAIN, 1) >= 48)
|
||||
{SetCommonDataPtr(POINTER_CHAINGAUGE, max(0, GetCommonDataPtr(POINTER_CHAINGAUGE, 0)-rateReduceCashin));}
|
||||
|
||||
else if(GetCommonDataPtr(POINTER_CHAIN, 1) >= 32 && GetCommonDataPtr(POINTER_CHAIN, 1) < 48)
|
||||
{SetCommonDataPtr(POINTER_CHAINGAUGE, max(0, GetCommonDataPtr(POINTER_CHAINGAUGE, 0)-rateReduceCashin_MED));}
|
||||
|
||||
else if(GetCommonDataPtr(POINTER_CHAIN, 1) >= 16 && GetCommonDataPtr(POINTER_CHAIN, 1) < 32)
|
||||
{SetCommonDataPtr(POINTER_CHAINGAUGE, max(0, GetCommonDataPtr(POINTER_CHAINGAUGE, 0)-rateReduceCashin_LOW));}
|
||||
|
||||
else
|
||||
{SetCommonDataPtr(POINTER_CHAINGAUGE, max(0, GetCommonDataPtr(POINTER_CHAINGAUGE, 0)-rateReduceCashin_PLACEBO));}
|
||||
|
||||
}
|
||||
|
||||
else{
|
||||
SetCommonDataPtr(POINTER_CHAINGAUGE, max(0, GetCommonDataPtr(POINTER_CHAINGAUGE, 0)-rateReduceNormal));
|
||||
}
|
||||
|
||||
if(
|
||||
GetCommonDataPtr(POINTER_CHAINGAUGE, 0) <= 0
|
||||
&& GetCommonDataPtr(POINTER_CHAIN, 1) > 1
|
||||
)
|
||||
{
|
||||
SetCommonDataPtr(POINTER_CHAIN, 1);
|
||||
SetCommonDataPtr(POINTER_SPECIALCHECK, false);
|
||||
}
|
||||
|
||||
yield;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
task _ShowChain(){
|
||||
|
||||
// HUD
|
||||
|
||||
//_ShowChainHUD();
|
||||
|
||||
// Playfield
|
||||
|
||||
let objPIVNum = ObjText_Create();
|
||||
|
||||
ObjText_SetFontSize(objPIVNum, 40);
|
||||
ObjText_SetFontBold(objPIVNum, true);
|
||||
ObjText_SetFontType(objPIVNum, "GravityRegular5");
|
||||
ObjText_SetFontColorTop(objPIVNum, 0xFFFFFF);
|
||||
ObjText_SetFontColorBottom(objPIVNum, 0xFFFFFF);
|
||||
ObjText_SetFontBorderType(objPIVNum, BORDER_FULL);
|
||||
ObjText_SetFontBorderColor(objPIVNum, 0xFF9A4F);
|
||||
ObjText_SetFontBorderWidth(objPIVNum, 4);
|
||||
ObjText_SetHorizontalAlignment(objPIVNum, ALIGNMENT_LEFT);
|
||||
//ObjText_SetFontWeight(objPIVNum, 1000);
|
||||
Obj_SetRenderPriorityI(objPIVNum, 60);
|
||||
ObjText_SetSidePitch(objPIVNum, -3);
|
||||
ObjRender_SetPosition(objPIVNum, STG_WIDTH * 1/2 + 96, STG_HEIGHT * 10/11, 0);
|
||||
// DEBUG
|
||||
//Obj_SetVisible(objPIV, false);
|
||||
|
||||
float value = 0;
|
||||
|
||||
//todo: change params
|
||||
let objI = CreateEffectObject(STG_WIDTH/60, STG_HEIGHT/7, "script/KevinSystem/img/lol.png", "ALPHA", 0, 0, 244, 12);
|
||||
ObjSprite2D_SetDestRect(objI, 0, 0, 122, 6);
|
||||
Obj_SetRenderPriorityI(objI, 60);
|
||||
|
||||
while(true){
|
||||
value = min(GetCommonDataPtr(POINTER_SPECIALAMMO, 1), 100);
|
||||
ObjText_SetText(objPIVNum, IntToString(GetCommonDataPtr(POINTER_PIV, 1000)));
|
||||
|
||||
//PIVMultiplierValue = value/1000;
|
||||
let yass = rtos("00.00", value);
|
||||
|
||||
let mx = 60*5;
|
||||
ObjSprite2D_SetDestRect(objI, 0, 0, (GetCommonDataPtr(POINTER_SPECIALAMMO, 100)/100)*mx, 32);
|
||||
|
||||
ObjRender_SetPosition(objI, STG_WIDTH/60+160, STG_HEIGHT * 11/12, 1);
|
||||
|
||||
if (GetPlayerY() >= STG_HEIGHT * 7/8){
|
||||
ObjRender_SetAlpha(objI, 125);
|
||||
ObjRender_SetAlpha(objPIVNum, 125);
|
||||
}
|
||||
|
||||
else{
|
||||
ObjRender_SetAlpha(objI, 255);
|
||||
ObjRender_SetAlpha(objPIVNum, 255);
|
||||
}
|
||||
|
||||
if (GetCommonDataPtr(POINTER_CHAINCHECK, false) == true) {
|
||||
ObjRender_SetColor(objI, 0xFFAF1E);
|
||||
}
|
||||
else {
|
||||
if(value >= 100){
|
||||
ObjRender_SetColor(objI, 255, 90, 46);
|
||||
}
|
||||
else{
|
||||
ObjRender_SetColor(objI, 255, 145, 115);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
if(GetCommonDataPtr(POINTER_SPECIALCHECK, false) == false){
|
||||
|
||||
ObjText_SetFontBorderWidth(objPIVNum, 3);
|
||||
|
||||
if(value < CHAIN_MAX){
|
||||
|
||||
ObjText_SetFontColorTop(objPIVNum, 0x9DEFFF);
|
||||
ObjText_SetFontBorderColor(objPIVNum, 42, 0, 237);
|
||||
ObjText_SetText(objPIVNum,
|
||||
"[font size=23 oy=-8]FUN MODE CHARGING[r]" ~ yass ~ "[font size=25 oy=32]x[r]"
|
||||
~ "[r][font size=21 oc=(172, 50, 50) oy=32]AMMO: " ~ rtos("00.00", GetCommonDataPtr(POINTER_SPECIALAMMO, 100))
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
else{
|
||||
|
||||
ObjText_SetFontColorTop(objPIVNum, 0x9DFFBC);
|
||||
ObjText_SetFontBorderColor(objPIVNum, 0x39C832);
|
||||
ObjText_SetText(objPIVNum,
|
||||
"[font size=23 oy=-8]FUN MODE READY![r]" ~ yass ~ "[font size=25 oy=32]x[r]"
|
||||
~ "[r][font size=21 oc=(172, 50, 50) oy=32]AMMO: " ~ rtos("00.00", GetCommonDataPtr(POINTER_SPECIALAMMO, 100))
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else{
|
||||
|
||||
ObjText_SetFontColorTop(objPIVNum, 0xFFED9D);
|
||||
ObjText_SetFontBorderColor(objPIVNum, 0xFF9A00);
|
||||
ObjText_SetFontBorderWidth(objPIVNum, 4);
|
||||
NotifyEvent(GetPlayerScriptID(), EV_CHAIN_MAX, 0);
|
||||
ObjText_SetText(objPIVNum,
|
||||
"[font size=23 oc=(241, 180, 0) oy=-8]CASH-IN[r]" ~ yass ~ "[font size=25 oy=32]x[r]"
|
||||
~ "[r][font size=21 oc=(172, 50, 50) oy=32]AMMO: " ~ rtos("00.00", GetCommonDataPtr(POINTER_SPECIALAMMO, 100))
|
||||
);
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
yield;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Self-explanatory
|
||||
|
||||
task _DeleteEffect(obj, scale){
|
||||
ObjRender_SetBlendType(obj, BLEND_ADD_ARGB);
|
||||
Obj_SetRenderPriorityI(obj, 49);
|
||||
ascent(i in 0..30){
|
||||
ObjRender_SetAlpha(obj, Interpolate_Decelerate(100*(universalAlpha/100), 0, i/30));
|
||||
ObjRender_SetScaleXYZ(obj, Interpolate_Decelerate(scale, scale*1.5, i/20));
|
||||
ObjMove_SetSpeed(obj, 12);
|
||||
yield;
|
||||
}
|
||||
Obj_Delete(obj);
|
||||
}
|
||||
|
||||
// Renders player movement. Assumes that all sprites are ORGANIZED HORIZONTALLY IN THE SHEET.
|
||||
// flipscale can only be 1 or -1.
|
||||
|
||||
task _RenderPlayerMovement(int obj, int frame, int offsetleft, int offsettop, int width, int height, float flipscale, int frameno, int speed){
|
||||
|
||||
ObjSprite2D_SetSourceRect(obj, offsetleft+width*floor(frame/speed), offsettop, width+width*floor(frame/speed), offsettop+height);
|
||||
ObjRender_SetScaleX(objPlayer, flipscale);
|
||||
|
||||
}
|
||||
|
||||
// Bullet rescaling... for player shots.
|
||||
task _BulletRescalePlayer(int target, float scale, bool hitboxscale, float hitboxlevel){
|
||||
ObjRender_SetScaleXYZ(target, scale, scale, 1);
|
||||
if (hitboxscale){
|
||||
ObjShot_SetIntersectionScaleXY(target, scale*hitboxlevel, scale*hitboxlevel);
|
||||
}
|
||||
}
|
||||
|
||||
// Handles death/respawn sigil. Assumes sigils are 512x512 in size.
|
||||
// If death is true (the player dies), the circle expands outwards. Otherwise (the player bombs/respawns), it shrinks inwards.
|
||||
|
||||
task _SigilCall(bool death, texture, int rectleft, int recttop, int rectright, int rectbottom, int objPlayer, int time){
|
||||
|
||||
let DeathCircle = ObjPrim_Create(OBJ_SPRITE_2D);
|
||||
|
||||
ObjPrim_SetTexture(DeathCircle,teamimg);
|
||||
ObjSprite2D_SetSourceRect(DeathCircle, rectleft, recttop, rectright, rectbottom);
|
||||
ObjSprite2D_SetDestCenter(DeathCircle);
|
||||
ObjRender_SetBlendType(DeathCircle,BLEND_ALPHA);
|
||||
ObjRender_SetAlpha(DeathCircle,255);
|
||||
|
||||
ObjRender_SetPosition(DeathCircle,GetPlayerX(),GetPlayerY(),1);
|
||||
Obj_SetRenderPriorityI(DeathCircle,Obj_GetRenderPriorityI(objPlayer)-10);
|
||||
|
||||
alternative(death)
|
||||
case(true){
|
||||
ascent(i in 0..time){
|
||||
float scaliealpha = Interpolate_Decelerate(255, 0, i/time);
|
||||
float scaliesize = Interpolate_Decelerate(0.1, 3, i/time);
|
||||
ObjRender_SetAlpha(DeathCircle, scaliealpha);
|
||||
ObjRender_SetPosition(DeathCircle,GetPlayerX(),GetPlayerY(),1);
|
||||
ObjRender_SetScaleXYZ(DeathCircle, scaliesize, scaliesize, 1);
|
||||
yield;
|
||||
}
|
||||
}
|
||||
case(false){
|
||||
ascent(i in 0..time){
|
||||
float scaliealpha = Interpolate_Accelerate(255, 0, i/time);
|
||||
float scaliesize = Interpolate_Accelerate(3, 0.1, i/time);
|
||||
ObjRender_SetAlpha(DeathCircle, scaliealpha);
|
||||
ObjRender_SetPosition(DeathCircle,GetPlayerX(),GetPlayerY(),1);
|
||||
ObjRender_SetScaleXYZ(DeathCircle, scaliesize, scaliesize, 1);
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
while(ObjRender_GetAlpha(DeathCircle) > 0){yield;}
|
||||
Obj_Delete(DeathCircle);
|
||||
|
||||
}
|
||||
|
||||
// Handles the hitbox and its aura. What the fuck.
|
||||
|
||||
task _HitboxRender(
|
||||
bool playerdeathbool, int objPlayer, texture_hbox, texture_aura,
|
||||
int rectleft_hbox, int recttop_hbox, int rectright_hbox, int rectbottom_hbox,
|
||||
int rectleft_aura, int recttop_aura, int rectright_aura, int rectbottom_aura,
|
||||
float scale_hbox, float scale_aura){
|
||||
|
||||
// Handle hitbox
|
||||
bool visible = false;
|
||||
int hitbox = ObjPrim_Create(OBJ_SPRITE_2D);
|
||||
|
||||
ObjPrim_SetTexture(hitbox, texture_hbox);
|
||||
ObjSprite2D_SetSourceRect(hitbox, rectleft_hbox, recttop_hbox, rectright_hbox, rectbottom_hbox);
|
||||
ObjSprite2D_SetDestCenter(hitbox);
|
||||
ObjRender_SetScaleXYZ(hitbox, scale_hbox, scale_hbox, 1);
|
||||
ObjRender_SetBlendType(hitbox, BLEND_ALPHA);
|
||||
Obj_SetRenderPriorityI(hitbox, 79);
|
||||
|
||||
Obj_SetVisible(hitbox, false);
|
||||
|
||||
// Handle hitbox's aura
|
||||
|
||||
int aura = ObjPrim_Create(OBJ_SPRITE_2D);
|
||||
|
||||
ObjPrim_SetTexture(aura, texture_aura);
|
||||
ObjSprite2D_SetSourceRect(aura, rectleft_aura, recttop_aura, rectright_aura, rectbottom_aura);
|
||||
ObjSprite2D_SetDestCenter(aura);
|
||||
ObjRender_SetScaleXYZ(aura, scale_aura, scale_aura, 1);
|
||||
ObjRender_SetAlpha(aura, 70);
|
||||
//ObjRender_SetBlendType(aura, BLEND_ADD_ARGB);
|
||||
Obj_SetRenderPriorityI(aura, Obj_GetRenderPriorityI(objPlayer)+3);
|
||||
|
||||
Obj_SetVisible(aura, false);
|
||||
|
||||
loop{
|
||||
if (visible && (!Obj_IsVisible(objPlayer) || GetVirtualKeyState(VK_SLOWMOVE) != KEY_HOLD)){
|
||||
visible = false;
|
||||
Obj_SetVisible(hitbox, false);
|
||||
Obj_SetVisible(aura, false);
|
||||
}
|
||||
else if (!visible && (Obj_IsVisible(objPlayer) && (GetVirtualKeyState(VK_SLOWMOVE) == KEY_HOLD || GetVirtualKeyState(VK_SLOWMOVE) == KEY_PUSH))){
|
||||
visible = true;
|
||||
Obj_SetVisible(aura, true);
|
||||
Obj_SetVisible(hitbox, true);
|
||||
async{
|
||||
while(Obj_IsVisible(aura)){
|
||||
float[] curang = [ObjRender_GetAngleZ(hitbox), ObjRender_GetAngleZ(aura)];
|
||||
ObjRender_SetAngleZ(hitbox, curang[0]+1.5);
|
||||
ObjRender_SetAngleZ(aura, curang[1]+1.5);
|
||||
yield;
|
||||
}
|
||||
}
|
||||
async{
|
||||
ascent(i in 0..20){
|
||||
float scalie = Interpolate_Decelerate(scale_aura*1.5, scale_aura, i/20);
|
||||
ObjRender_SetScaleXYZ(aura, scalie, scalie, 1);
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
async{
|
||||
ascent(i in 0..20){
|
||||
float scalie = Interpolate_Decelerate(0, 80, i/20);
|
||||
ObjRender_SetAlpha(aura, scalie);
|
||||
yield;
|
||||
}
|
||||
}
|
||||
}
|
||||
ObjRender_SetPosition(hitbox, ObjMove_GetX(objPlayer), ObjMove_GetY(objPlayer), 1);
|
||||
ObjRender_SetPosition(aura, ObjMove_GetX(objPlayer), ObjMove_GetY(objPlayer), 1);
|
||||
yield;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
Simple function that handles player options. These options simply follow the player at an offset - they do not have any trajectories of their own like spinning around the player, etc.
|
||||
If the options have animations, set triggeranimation to true and adjust the number of frames + speed using delay and frameno.
|
||||
If the options rotate (in place), set triggerspin to true and adjust spinning speed using spinspeed.
|
||||
If the options only appear unfocused or focused, set either onlyFocus or onlyUnfocus to true. Setting both to true or false makes the options always visible.
|
||||
*/
|
||||
|
||||
function PlayerOption(
|
||||
float offsetx, float offsety,
|
||||
texture,
|
||||
int left, int top, int right, int bottom, float scale,
|
||||
int width, int animdelay, int frameno, bool triggeranimation,
|
||||
bool triggerspin, float spinspeed,
|
||||
bool onlyFocus, bool onlyUnfocus
|
||||
){
|
||||
|
||||
let option = ObjPrim_Create(OBJ_SPRITE_2D);
|
||||
bool visible;
|
||||
int animate = 0;
|
||||
float optx;
|
||||
float opty;
|
||||
|
||||
ObjPrim_SetTexture(option, texture);
|
||||
ObjSprite2D_SetSourceRect(option, left, top, right-1, bottom-1); // Allows the options to spin smoothly should the user choose to do so.
|
||||
ObjSprite2D_SetDestCenter(option);
|
||||
ObjRender_SetScaleXYZ(option, scale);
|
||||
ObjRender_SetBlendType(option, BLEND_ALPHA);
|
||||
ObjRender_SetAlpha(option, 255);
|
||||
Obj_SetRenderPriorityI(option, 41);
|
||||
ObjRender_SetPosition(option, offsetx, offsety, 1);
|
||||
|
||||
// Animation
|
||||
async{
|
||||
while(triggeranimation){
|
||||
ObjSprite2D_SetSourceRect(option, left+width*floor(animate/animdelay), top, right+width*floor(animate/animdelay)-1, bottom-1);
|
||||
animate++;
|
||||
if (animate >= animdelay*frameno){animate = 0;}
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
// Rotation
|
||||
async{
|
||||
float i = 0;
|
||||
while(triggerspin){
|
||||
//ObjRender_SetPosition(option, GetPlayerX()+offsetx, GetPlayerY()+offsety, 1);
|
||||
ObjRender_SetAngleZ(option, i);
|
||||
i += spinspeed;
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
// Follow
|
||||
async{
|
||||
while(true){
|
||||
ObjRender_SetPosition(option, GetPlayerX()+offsetx, GetPlayerY()+offsety, 1);
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
// Visibility
|
||||
async{
|
||||
// Always visible
|
||||
if((onlyFocus && onlyUnfocus) || (!onlyFocus && !onlyUnfocus)) {
|
||||
loop
|
||||
{
|
||||
if(GetPlayerState != STATE_NORMAL && GetPlayerState != STATE_HIT){ObjRender_SetAlpha(option, max(0, ObjRender_GetAlpha(option)-15)); visible = false;}
|
||||
else {ObjRender_SetAlpha(option, min(225, ObjRender_GetAlpha(option)+15)); visible = true;}
|
||||
yield;
|
||||
}
|
||||
}
|
||||
// Visible when focused only
|
||||
else if(onlyFocus && !onlyUnfocus){
|
||||
loop
|
||||
{
|
||||
if((GetPlayerState != STATE_NORMAL && GetPlayerState != STATE_HIT) || GetVirtualKeyState(VK_SLOWMOVE) == KEY_FREE){ObjRender_SetAlpha(option, max(0, ObjRender_GetAlpha(option)-15)); visible = false;}
|
||||
else {ObjRender_SetAlpha(option, min(225, ObjRender_GetAlpha(option)+15)); visible = true;}
|
||||
yield;
|
||||
}
|
||||
}
|
||||
// Visible when unfocused only
|
||||
else if(!onlyFocus && onlyUnfocus){
|
||||
loop
|
||||
{
|
||||
if((GetPlayerState != STATE_NORMAL && GetPlayerState != STATE_HIT) || GetVirtualKeyState(VK_SLOWMOVE) != KEY_FREE){ObjRender_SetAlpha(option, max(0, ObjRender_GetAlpha(option)-15)); visible = false;}
|
||||
else {ObjRender_SetAlpha(option, min(225, ObjRender_GetAlpha(option)+15)); visible = true;}
|
||||
yield;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _FadeIn(){
|
||||
ascent(i in 0..15){
|
||||
ObjRender_SetAlpha(option, Interpolate_Decelerate(0, 225, i/15));
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
function _FadeOut(){
|
||||
ascent(i in 0..15){
|
||||
ObjRender_SetAlpha(option, Interpolate_Decelerate(225, 0, i/15));
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
return option;
|
||||
}
|
||||
|
||||
/*
|
||||
A form of PlayerOption that handles basic movement towards different positionings based on whether the player is focusing or unfocusing.
|
||||
If the options have animations, set triggeranimation to true and adjust the number of frames + speed using delay and frameno.
|
||||
If the options rotate (in place), set triggerspin to true and adjust spinning speed using spinspeed.
|
||||
If the options only appear unfocused or focused, set either onlyFocus or onlyUnfocus to true. Setting both to true or false makes the options always visible.
|
||||
*/
|
||||
|
||||
function PlayerOption_LinearMove(
|
||||
float offsetX_uf, offsetY_uf, offsetX_f, offsetY_f,
|
||||
bool angchange, float ang_uf, ang_f,
|
||||
texture,
|
||||
int graphic, float texScale, int priorityRender,
|
||||
int texWidth, int animDelay, int animFrameNo, bool animMode,
|
||||
bool spinMode, float spinSpeed,
|
||||
bool onlyFocus, bool onlyUnfocus
|
||||
){
|
||||
|
||||
int option = CreatePlayerShotA1(0, 0, 0, 0, 0, 9999999, graphic);
|
||||
bool visible;
|
||||
int animate = 0;
|
||||
float optx;
|
||||
float opty;
|
||||
|
||||
float playerX = 0, playerY = 0;
|
||||
|
||||
/*
|
||||
ObjPrim_SetTexture(option, texture);
|
||||
ObjSprite2D_SetSourceRect(option, texRect[0], texRect[1], texRect[2]-1, texRect[3]-1); // Allows the options to spin smoothly should the user choose to do so.
|
||||
ObjSprite2D_SetDestCenter(option);
|
||||
*/
|
||||
|
||||
ObjShot_SetAutoDelete(option, false);
|
||||
ObjRender_SetScaleXYZ(option, texScale);
|
||||
ObjRender_SetBlendType(option, BLEND_ALPHA);
|
||||
//ObjRender_SetAlpha(option, 255);
|
||||
Obj_SetRenderPriorityI(option, priorityRender);
|
||||
ObjRender_SetPosition(option, playerX+offsetX_uf, playerY+offsetY_uf, 1);
|
||||
|
||||
///// MISC /////
|
||||
async{
|
||||
while(true){
|
||||
playerX = ObjRender_GetX(GetPlayerObjectID());
|
||||
playerY = ObjRender_GetY(GetPlayerObjectID());
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
///// ANIMATION /////
|
||||
|
||||
/*
|
||||
async{
|
||||
while(animMode){
|
||||
ObjSprite2D_SetSourceRect(option, texRect[0]+texWidth*floor(animate/animDelay), texRect[1], texRect[2]+texWidth*floor(animate/animDelay)-1, texRect[3]-1);
|
||||
animate++;
|
||||
if (animate >= animDelay*animFrameNo){animate = 0;}
|
||||
yield;
|
||||
}
|
||||
}*/
|
||||
|
||||
///// ROTATION /////
|
||||
async{
|
||||
float i = 0;
|
||||
while(spinMode){
|
||||
//ObjRender_SetPosition(option, GetPlayerX()+offsetx, GetPlayerY()+offsety, 1);
|
||||
ObjRender_SetAngleZ(option, i);
|
||||
i += spinSpeed;
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
///// VISIBILITY /////
|
||||
async{
|
||||
// Always visible
|
||||
if((onlyFocus && onlyUnfocus) || (!onlyFocus && !onlyUnfocus)) {
|
||||
loop
|
||||
{
|
||||
if(GetPlayerState != STATE_NORMAL && GetPlayerState != STATE_HIT){ObjRender_SetAlpha(option, max(0, ObjRender_GetAlpha(option)-15)); visible = false;}
|
||||
else {ObjRender_SetAlpha(option, min(255, ObjRender_GetAlpha(option)+15)); visible = true;}
|
||||
yield;
|
||||
}
|
||||
}
|
||||
// Visible when focused only
|
||||
else if(onlyFocus && !onlyUnfocus){
|
||||
loop
|
||||
{
|
||||
if((GetPlayerState != STATE_NORMAL && GetPlayerState != STATE_HIT) || GetVirtualKeyState(VK_SLOWMOVE) == KEY_FREE){ObjRender_SetAlpha(option, max(0, ObjRender_GetAlpha(option)-15)); visible = false;}
|
||||
else {ObjRender_SetAlpha(option, min(255, ObjRender_GetAlpha(option)+15)); visible = true;}
|
||||
yield;
|
||||
}
|
||||
}
|
||||
// Visible when unfocused only
|
||||
else if(!onlyFocus && onlyUnfocus){
|
||||
loop
|
||||
{
|
||||
if((GetPlayerState != STATE_NORMAL && GetPlayerState != STATE_HIT) || GetVirtualKeyState(VK_SLOWMOVE) != KEY_FREE){ObjRender_SetAlpha(option, max(0, ObjRender_GetAlpha(option)-15)); visible = false;}
|
||||
else {ObjRender_SetAlpha(option, min(255, ObjRender_GetAlpha(option)+15)); visible = true;}
|
||||
yield;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///// MOVEMENT /////
|
||||
async{
|
||||
|
||||
loop{
|
||||
|
||||
if(GetVirtualKeyState(VK_SLOWMOVE) != KEY_FREE){
|
||||
|
||||
async{
|
||||
|
||||
ascent(i in 0..15){
|
||||
if(angchange){ObjRender_SetAngleZ(option, Interpolate_Decelerate(ObjRender_GetAngleZ(option), ang_f, i/15));}
|
||||
ObjRender_SetX(option, Interpolate_Decelerate(ObjRender_GetX(option), playerX+offsetX_f, i/15));
|
||||
ObjRender_SetY(option, Interpolate_Decelerate(ObjRender_GetY(option), playerY+offsetY_f, i/15));
|
||||
yield;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else{
|
||||
|
||||
async{
|
||||
|
||||
ascent(i in 0..15){
|
||||
if(angchange){ObjRender_SetAngleZ(option, Interpolate_Decelerate(ObjRender_GetAngleZ(option), ang_uf, i/15));}
|
||||
ObjRender_SetX(option, Interpolate_Decelerate(ObjRender_GetX(option), playerX+offsetX_uf, i/15));
|
||||
ObjRender_SetY(option, Interpolate_Decelerate(ObjRender_GetY(option), playerY+offsetY_uf, i/15));
|
||||
yield;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
yield;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function _FadeIn(){
|
||||
ascent(i in 0..15){
|
||||
ObjRender_SetAlpha(option, Interpolate_Decelerate(0, 225, i/15));
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
function _FadeOut(){
|
||||
ascent(i in 0..15){
|
||||
ObjRender_SetAlpha(option, Interpolate_Decelerate(225, 0, i/15));
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
return option;
|
||||
}
|
||||
|
||||
/*
|
||||
------------------------------------------------------
|
||||
|
||||
POINTBLANK-PIV MECHANIC FUNCTIONS
|
||||
Will be optimized somewhere down the line.
|
||||
|
||||
------------------------------------------------------
|
||||
*/
|
||||
|
||||
// Selects an enemy in the @MainLoop-updated _enemyArray, executes _PetalDrop, and adds it to _existArray so the task isn't called again for the same enemy. maxX and maxY are the bounds of the playing field.
|
||||
|
||||
task _Mechanic(bool playerdeathbool, int[] _enemyArray, int [] _existArray, float maxX, float maxY, int objPlayer, int bossScene, int maxrate, int addrate, float adddist){
|
||||
while(!playerdeathbool){
|
||||
_enemyArray = GetIntersectionRegistedEnemyID();
|
||||
bossScene = GetEnemyBossSceneObjectID();
|
||||
for each (int enemy in ref _enemyArray){
|
||||
float enemyX = ObjMove_GetX(enemy);
|
||||
float enemyY = ObjMove_GetY(enemy);
|
||||
if (0 < enemyX && enemyX < maxX && 0 < enemyY && enemyY < maxY && !contains(_existArray, enemy)){
|
||||
_PetalDrop(enemy, playerdeathbool, objPlayer, bossScene, maxrate, addrate, adddist);
|
||||
_existArray = _existArray ~ [enemy];
|
||||
}
|
||||
else{continue;}
|
||||
}
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
// Checks the boss scene type (nonspell/spell/last spell/invalid), the ID of the player object, and the target enemy. Drops petals with a type and drop rate that depends on the boss scene type and how close the player is to the target enemy.
|
||||
|
||||
task _PetalDrop(int target, bool playerdeathbool, int objPlayer, int bossScene, int maxrate, int addrate, float adddist){
|
||||
|
||||
while(!Obj_IsDeleted(target) && !playerdeathbool){
|
||||
float dist = hypot(ObjMove_GetX(target)-ObjMove_GetX(objPlayer), ObjMove_GetY(target)-ObjMove_GetY(objPlayer));
|
||||
let atktype = GetEnemyBossSceneObjectID();
|
||||
if(dist <= (GetStgFrameHeight()-100) && atktype != ID_INVALID && ObjEnemy_GetInfo(target, INFO_SHOT_HIT_COUNT) >= 1 && ObjEnemy_GetInfo(target, INFO_DAMAGE_PREVIOUS_FRAME) > 0){
|
||||
|
||||
wait(maxrate + addrate*floor(dist/adddist));
|
||||
|
||||
}
|
||||
else{yield;}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
task _DeathbombWarning(imgpath, int[] imgrectarray, int deathbombframes, float basescale){
|
||||
|
||||
int circle = _Create2DImage(imgpath, imgrectarray);
|
||||
Obj_SetRenderPriorityI(circle, 75);
|
||||
ObjRender_SetAlpha(circle, 255);
|
||||
ObjRender_SetPosition(circle, ObjRender_GetX(GetPlayerObjectID()), ObjRender_GetY(GetPlayerObjectID()), 1);
|
||||
ObjRender_SetBlendType(circle, BLEND_INV_DESTRGB);
|
||||
|
||||
ascent(i in 0..deathbombframes-1){
|
||||
ObjRender_SetScaleXYZ(circle, Interpolate_Accelerate(basescale, 0, i/(deathbombframes-1)));
|
||||
yield;
|
||||
}
|
||||
|
||||
Obj_Delete(circle);
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
task _BombShake(shaketime, intensity){
|
||||
|
||||
float baseintensity = intensity;
|
||||
float shakeno = shaketime;
|
||||
|
||||
ascent(i in 0..shakeno){
|
||||
Set2DCameraFocusX(GetStgFrameWidth/2 + rand(-intensity, intensity));
|
||||
Set2DCameraFocusY(GetStgFrameHeight/2 + rand(-intensity, intensity));
|
||||
intensity = Interpolate_Decelerate(0, baseintensity, 1-i/shakeno);
|
||||
shaketime--;
|
||||
yield;
|
||||
}
|
||||
|
||||
while(shaketime > 0){yield;}
|
||||
|
||||
Set2DCameraFocusX(GetStgFrameWidth/2);
|
||||
Set2DCameraFocusY(GetStgFrameHeight/2);
|
||||
yield;
|
||||
}
|
||||
|
||||
task _Countdown(){
|
||||
|
||||
//_FunIndicator;
|
||||
|
||||
//int timer = time;
|
||||
int counter = CreateTextObject(
|
||||
playerX, playerY, 45,
|
||||
"", "GravityRegular5",
|
||||
0xFFFFFF, 0xFFFFFF,
|
||||
0x1AEC8C, 8,
|
||||
51
|
||||
);
|
||||
|
||||
int counter2 = CreateTextObject(
|
||||
1720, 870, 40,
|
||||
"", "Unispace",
|
||||
0xFFFFFF, 0xFFFFFF,
|
||||
0x1AEC8C, 2,
|
||||
19
|
||||
);
|
||||
|
||||
ObjText_SetHorizontalAlignment(counter, ALIGNMENT_CENTER);
|
||||
|
||||
while(true){
|
||||
|
||||
if(GetPlayerInvincibilityFrame() <= 0){Obj_SetVisible(counter, false);}
|
||||
else{Obj_SetVisible(counter, true);}
|
||||
ObjRender_SetPosition(counter, playerX, playerY - 96, 1);
|
||||
ObjText_SetText(counter, IntToString(GetPlayerInvincibilityFrame()));
|
||||
ObjText_SetText(counter2, IntToString(GetPlayerInvincibilityFrame()));
|
||||
yield;
|
||||
|
||||
}
|
||||
|
||||
//Obj_Delete(counter);
|
||||
|
||||
}
|
||||
|
||||
task _FunIndicator(){
|
||||
|
||||
int counter = CreateTextObject(
|
||||
1720, 910, 41,
|
||||
"FUN IS PREPARED", "Origami Mommy",
|
||||
0xFFD9B8, 0xFFFFFF,
|
||||
0xD96600, 4,
|
||||
39
|
||||
);
|
||||
|
||||
ObjText_SetHorizontalAlignment(counter, ALIGNMENT_CENTER);
|
||||
|
||||
while(true){
|
||||
|
||||
if(GetCommonDataPtr(POINTER_CHAIN, 1) >= 64 && GetCommonDataPtr(POINTER_SPECIALCHECK, false) == false)
|
||||
|
||||
{Obj_SetVisible(counter, true);}
|
||||
|
||||
else{Obj_SetVisible(counter, false);}
|
||||
|
||||
ObjRender_SetPosition(counter, playerX, playerY + 128, 1);
|
||||
|
||||
yield;
|
||||
|
||||
}
|
||||
|
||||
//Obj_Delete(counter);
|
||||
|
||||
}
|
133
script/KevinSystem/Kevin_PlayerLib_HUD.dnh
Normal file
|
@ -0,0 +1,133 @@
|
|||
task _ShowChainHUD(){
|
||||
|
||||
// Playfield
|
||||
|
||||
// Multiplier
|
||||
|
||||
async{
|
||||
|
||||
let objPIVNum = ObjText_Create();
|
||||
|
||||
// AAAAAAA WHYYYYYYY
|
||||
|
||||
ObjText_SetFontSize(objPIVNum, 60);
|
||||
ObjText_SetFontBold(objPIVNum, true);
|
||||
ObjText_SetFontType(objPIVNum, "Origami Mommy");
|
||||
ObjText_SetFontColorTop(objPIVNum, 0xFFFFFF);
|
||||
ObjText_SetFontColorBottom(objPIVNum, 0xFFFFFF);
|
||||
ObjText_SetFontBorderType(objPIVNum, BORDER_FULL);
|
||||
ObjText_SetFontBorderColor(objPIVNum, 95, 209, 255);
|
||||
ObjText_SetFontBorderWidth(objPIVNum, 4);
|
||||
ObjText_SetHorizontalAlignment(objPIVNum, ALIGNMENT_LEFT);
|
||||
Obj_SetRenderPriorityI(objPIVNum, 19);
|
||||
ObjText_SetSidePitch(objPIVNum, -3);
|
||||
ObjRender_SetPosition(objPIVNum, 32, 128, 0);
|
||||
// DEBUG
|
||||
//Obj_SetVisible(objPIV, false);
|
||||
|
||||
float value = 0;
|
||||
|
||||
while(true){
|
||||
value = min(GetCommonDataPtr(POINTER_CHAIN, 1), CHAIN_MAX);
|
||||
//PIVMultiplierValue = value/1000;
|
||||
let yass = rtos("00.00", value);
|
||||
|
||||
if(GetCommonDataPtr(POINTER_SPECIALCHECK, false) == false){
|
||||
|
||||
ObjText_SetFontBorderWidth(objPIVNum, 3);
|
||||
|
||||
if(value < CHAIN_MAX){
|
||||
|
||||
ObjText_SetFontBorderColor(objPIVNum, 42, 0, 237);
|
||||
ObjText_SetText(objPIVNum,
|
||||
yass ~ "[font size=25 oy=32]x"
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
else{
|
||||
|
||||
ObjText_SetFontBorderColor(objPIVNum, 0, 240, 117);
|
||||
ObjText_SetText(objPIVNum,
|
||||
yass ~ "[font size=25 oy=32]x"
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else{
|
||||
|
||||
ObjText_SetFontBorderColor(objPIVNum, 0xFF9A00);
|
||||
ObjText_SetText(objPIVNum,
|
||||
yass ~ "[font size=25 oy=32]x"
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
yield;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Chain Timer
|
||||
|
||||
async{
|
||||
|
||||
let timerText = CreateTextObject(
|
||||
275, 210, 32,
|
||||
"", "Unispace",
|
||||
0xB5FFEE, 0xFFFFFF,
|
||||
0x397D88, 2,
|
||||
19
|
||||
);
|
||||
|
||||
while(true){
|
||||
ObjText_SetText(timerText, IntToString(GetCommonDataPtr(POINTER_CHAINGAUGE, 100)));
|
||||
yield;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Chain Status
|
||||
|
||||
async{
|
||||
|
||||
let timerText = CreateTextObject(
|
||||
275, 255, 32,
|
||||
"", "Unispace",
|
||||
0xFFE0A2, 0xFFFFFF,
|
||||
0xCB6D00, 2,
|
||||
19
|
||||
);
|
||||
|
||||
while(true){
|
||||
ObjText_SetText(timerText, GetCommonDataPtr(POINTER_SPECIALCHECK, false) ? "ACTIVE" : "INACTIVE");
|
||||
ObjText_SetFontBorderColor(timerText, GetCommonDataPtr(POINTER_SPECIALCHECK, false) ? 0xCB6D00 : 0x67A41E);
|
||||
ObjText_SetFontColorTop(timerText, GetCommonDataPtr(POINTER_SPECIALCHECK, false) ? 0xFFE0A2 : 0xD8FFA8);
|
||||
yield;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Ammo Status
|
||||
|
||||
async{
|
||||
|
||||
let ammoText = CreateTextObject(
|
||||
1585, 445, 48,
|
||||
"", "Unispace",
|
||||
0xFFB8A0, 0xFFFFFF,
|
||||
0xC53000, 2,
|
||||
19
|
||||
);
|
||||
|
||||
ObjText_SetFontBold(ammoText, true);
|
||||
while(true){
|
||||
ObjText_SetText(ammoText, rtos("000.00", GetCommonDataPtr(POINTER_SPECIALAMMO, 100)) ~ "[font sz=24 oy=20]/100.00");
|
||||
yield;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
926
script/KevinSystem/Kevin_System.txt
Normal file
|
@ -0,0 +1,926 @@
|
|||
|
||||
// SYSTEM FOR STATION GAME
|
||||
|
||||
let dirCurrent = GetCurrentScriptDirectory();
|
||||
|
||||
// Change accordingly!
|
||||
|
||||
int offsetX = 1551;
|
||||
int baseY = 155;
|
||||
int spaceY = 135;
|
||||
float scale = 1.15*1.6;
|
||||
|
||||
int sel = 0;
|
||||
|
||||
// Item, life, spell graphics
|
||||
|
||||
let graphicimg = dirCurrent ~ "./img/yo.png";
|
||||
let lifebarimg = dirCurrent ~ "./img/lifebar.png";
|
||||
LoadTextureEx(graphicimg, true, true);
|
||||
|
||||
let pointerPIV;
|
||||
|
||||
//#include "./../script/soundtask.txt"
|
||||
|
||||
#include "script/KevinSystem/Init.dnh"
|
||||
#include "script/KevinSystem/kevin_system/Lib_Const.dnh"
|
||||
#include "script/KevinSystem/GeneralSoundLib.txt"
|
||||
#include "script/default_system/Default_Effect.txt"
|
||||
#include "script/KevinSystem/kevin_system/Kevin_EffectLib.dnh"
|
||||
|
||||
@Initialize
|
||||
{
|
||||
|
||||
if(!IsCommonDataAreaExists("PIV")){
|
||||
CreateCommonDataArea("PIV");
|
||||
SetAreaCommonData("PIV", "currentvalue", 10000);
|
||||
}
|
||||
else{}
|
||||
|
||||
pointerPIV = LoadAreaCommonDataValuePointer("PIV", "currentvalue", 10000);
|
||||
|
||||
_SoundTask();
|
||||
|
||||
SetAreaCommonData("ScriptID", "SystemID", GetOwnScriptID());
|
||||
|
||||
//SetCommonDataPtr("SystemIDPtr", GetOwnScriptID());
|
||||
|
||||
SetStgFrame(0, 0, 1280, 720, 20, 80);
|
||||
|
||||
sel = prand_int(0, 99);
|
||||
|
||||
// Pixel art
|
||||
|
||||
SetShotTextureFilter(FILTER_NONE, FILTER_NONE);
|
||||
SetItemTextureFilter(FILTER_NONE, FILTER_NONE);
|
||||
|
||||
SetPauseScriptPath(GetCurrentScriptDirectory() ~ "kevin_system/Kevin_Pause.txt");
|
||||
SetEndSceneScriptPath(GetCurrentScriptDirectory() ~ "kevin_system/Kevin_EndScene.txt");
|
||||
SetReplaySaveSceneScriptPath(GetCurrentScriptDirectory() ~ "kevin_system/Kevin_ReplaySave.txt");
|
||||
|
||||
InitEffect();
|
||||
InitFrame();
|
||||
|
||||
//TInstallFont(); Moved to package.
|
||||
|
||||
TScore();
|
||||
LifeDisplay();
|
||||
|
||||
//TGraze();
|
||||
//SetPlayerLife(9);
|
||||
//SpellDisplay();
|
||||
THighScore();
|
||||
//TValueDisplay();
|
||||
|
||||
StartItemScript(dirCurrent ~ "./kevin_system/KevinSystem_Item.txt");
|
||||
|
||||
TExtendSystem();
|
||||
//TBossLife();
|
||||
TBossTimer();
|
||||
|
||||
TCurrentFps();
|
||||
TReplayFps();
|
||||
//_SoundTask;
|
||||
}
|
||||
|
||||
@MainLoop
|
||||
{
|
||||
yield;
|
||||
}
|
||||
|
||||
@Event
|
||||
{
|
||||
alternative(GetEventType())
|
||||
|
||||
case(EV_START_BOSS_SPELL)
|
||||
{
|
||||
let path = dirCurrent ~ "Default_System_MagicCircle.txt";
|
||||
let id = LoadScript(path);
|
||||
StartScript(id);
|
||||
}
|
||||
|
||||
case(EV_GAIN_SPELL)
|
||||
{
|
||||
let objScene = GetEnemyBossSceneObjectID();
|
||||
let spellbonus = ObjEnemyBossScene_GetInfo(objScene, INFO_SPELL_SCORE);
|
||||
TScoreAward(spellbonus);
|
||||
}
|
||||
|
||||
// Arguments: [enemy x, y], particle list to use
|
||||
|
||||
case(EV_EXPLODE)
|
||||
{
|
||||
float[] pos = GetEventArgument(0);
|
||||
//int listTarget = GetEventArgument(1);
|
||||
|
||||
if(GetCommonDataPtr(EFFECTCUT_PTR, 0) >= 2){ObjSound_Play(sfxBoom);}
|
||||
//_EffectListPreRender(PetalEffect, imgEffect, [0, 0, 256, 256]);
|
||||
else{_ExplosionEffect(pos[0], pos[1], PetalEffect);}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
}
|
||||
|
||||
// Grants extends based on score
|
||||
|
||||
task TExtendSystem(){
|
||||
|
||||
// NEXT: Text (y around 650?) (x around 2250?)
|
||||
|
||||
/*let NextText =
|
||||
|
||||
CreateTextObject(
|
||||
1625, 465, 30,
|
||||
"NEXT:", "Connecting Chain Handserif",
|
||||
0xA70053, 0xA70053,
|
||||
0xFFFFFF, 2,
|
||||
1
|
||||
);*/
|
||||
|
||||
//ObjText_SetFontBold(NextText, true);
|
||||
// Indicates the score threshold needed for the next extend
|
||||
|
||||
let ExtendThresholdText =
|
||||
|
||||
CreateTextObject(
|
||||
1450, 160, 28,
|
||||
"", "Unispace",
|
||||
0xFF98A9, 0xFFFFFF,
|
||||
0x000000, 4,
|
||||
2
|
||||
);
|
||||
|
||||
ObjText_SetFontBold(ExtendThresholdText, true);
|
||||
ObjText_SetHorizontalAlignment(ExtendThresholdText, ALIGNMENT_LEFT);
|
||||
|
||||
int len = 0;
|
||||
int count = 0;
|
||||
// Millions
|
||||
let req = [
|
||||
|
||||
];
|
||||
|
||||
alternative(GetCommonData("Difficulty", "Standard"))
|
||||
|
||||
case("Novice"){
|
||||
req = [250, 500, 1000, 1800];
|
||||
len = 3;
|
||||
}
|
||||
|
||||
case("Standard"){
|
||||
req = [400, 800, 1500, 2500];
|
||||
len = 3;
|
||||
}
|
||||
|
||||
others{
|
||||
req = [1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000, 16000, 17000, 18000, 19000, 20000];
|
||||
len = 19;
|
||||
}
|
||||
|
||||
let next = 0;
|
||||
|
||||
// NARUMISTG
|
||||
|
||||
req = [
|
||||
10, 20, 40, 80, 120
|
||||
];
|
||||
|
||||
loop{
|
||||
count = (trunc(GetScore())/10)*10;
|
||||
if(next <= length(req)-1){
|
||||
if(count >= req[next]*1000000){
|
||||
next++;
|
||||
SetPlayerLife(GetPlayerLife+1);
|
||||
ExtendSFX;
|
||||
ExtendEffect;
|
||||
}
|
||||
}
|
||||
|
||||
if(next <= len){ObjText_SetText(ExtendThresholdText, "[font tc=(255, 43, 78) bc=(255, 128, 149)]NEXT: [font clr]" ~ DigitToCommaArray(req[next]*1000000));}
|
||||
|
||||
else{ObjText_SetText(ExtendThresholdText, "MAXIMUM");}
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
task ExtendEffect(){
|
||||
|
||||
int time = 30;
|
||||
int timeDisappear = 30;
|
||||
|
||||
float x = GetPlayerX();
|
||||
float y = GetPlayerY()-90;
|
||||
|
||||
int extendText = CreateTextObject(
|
||||
x, y, 75,
|
||||
"Life[r]Extend!", "Exotc350 DmBd BT",
|
||||
0xFF61AE, 0xFFFFFF,
|
||||
0x5E0064, 6,
|
||||
42
|
||||
);
|
||||
|
||||
ObjText_SetLinePitch(extendText, -2);
|
||||
ObjText_SetFontBold(extendText, true);
|
||||
ObjText_SetHorizontalAlignment(extendText, ALIGNMENT_CENTER);
|
||||
|
||||
ascent(i in 0..time){
|
||||
ObjRender_SetY(extendText, Interpolate_Decelerate(y, y-120, i/time));
|
||||
yield;
|
||||
}
|
||||
|
||||
wait(15);
|
||||
|
||||
ascent(i in 0..timeDisappear){
|
||||
ObjRender_SetAlpha(extendText, Interpolate_Decelerate(255, 0, i/timeDisappear));
|
||||
yield;
|
||||
}
|
||||
Obj_Delete(extendText);
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
//枠外の背景表示
|
||||
//----------------------------------------------------
|
||||
task InitFrame()
|
||||
{
|
||||
let path1 = GetCurrentScriptDirectory() ~ "img/HUD1.png";
|
||||
let path2 = GetCurrentScriptDirectory() ~ "img/HUD2.png";
|
||||
|
||||
let obj1 = ObjPrim_Create(OBJ_SPRITE_2D);
|
||||
let obj2 = ObjPrim_Create(OBJ_SPRITE_2D);
|
||||
|
||||
LoadTextureEx(path1, true, true);
|
||||
LoadTextureEx(path2, true, true);
|
||||
|
||||
ObjPrim_SetTexture(obj1, path1);
|
||||
ObjPrim_SetTexture(obj2, path2);
|
||||
|
||||
int[] arr = [obj1, obj2];
|
||||
|
||||
for each(int obj in ref arr){
|
||||
|
||||
ObjRender_SetTextureFilterMag(obj, FILTER_NONE);
|
||||
ObjRender_SetTextureFilterMin(obj, FILTER_NONE);
|
||||
ObjRender_SetTextureFilterMip(obj, FILTER_NONE);
|
||||
Obj_SetRenderPriority(obj, 79);
|
||||
ObjSprite2D_SetSourceRect(obj, 0, 0, GetScreenWidth(), GetScreenHeight());
|
||||
ObjSprite2D_SetDestRect(obj, 0, 0, GetScreenWidth(), GetScreenHeight());
|
||||
|
||||
}
|
||||
|
||||
// If player moves to vertical bounds, lower opacity
|
||||
|
||||
while(true){
|
||||
|
||||
if(GetPlayerY() > GetStgFrameHeight() * 7/8){
|
||||
ObjRender_SetAlpha(obj2, 125);
|
||||
}
|
||||
else{ObjRender_SetAlpha(obj2, 255);}
|
||||
|
||||
if(GetPlayerY() < GetStgFrameHeight() * 1/8){
|
||||
ObjRender_SetAlpha(obj1, 125);
|
||||
}
|
||||
else{ObjRender_SetAlpha(obj1, 255);}
|
||||
|
||||
yield;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
//スコア表示
|
||||
//----------------------------------------------------
|
||||
|
||||
task THighScore(){
|
||||
|
||||
let DATA_PLAYER = GetPlayerReplayName();
|
||||
let DATA_DIFFICULTY = GetCommonData("Difficulty", "Standard");
|
||||
|
||||
let objScoreNo = ObjText_Create();
|
||||
ObjText_SetFontSize(objScoreNo, 32);
|
||||
ObjText_SetFontBold(objScoreNo, true);
|
||||
ObjText_SetFontType(objScoreNo, "GravityBold8");
|
||||
ObjText_SetFontColorTop(objScoreNo, 0xFFFFFF);
|
||||
ObjText_SetFontColorBottom(objScoreNo, 0xFFB061);
|
||||
ObjText_SetFontBorderType(objScoreNo, BORDER_FULL);
|
||||
ObjText_SetFontBorderColor(objScoreNo, 0xAB3D00);
|
||||
ObjText_SetFontBorderWidth(objScoreNo, 4);
|
||||
//ObjText_SetFontWeight(objScoreNo, 1000);
|
||||
Obj_SetRenderPriorityI(objScoreNo, 79);
|
||||
ObjText_SetSidePitch(objScoreNo, -2);
|
||||
ObjRender_SetPosition(objScoreNo, 192, 12, 0);
|
||||
|
||||
while(true){
|
||||
let score = GetAreaCommonData("Data_" ~ DATA_PLAYER, "HighScore_" ~ DATA_DIFFICULTY, 0);
|
||||
score = min(score,999999999990);
|
||||
let yass = DigitToCommaArray(score);
|
||||
ObjText_SetText(objScoreNo, yass);
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
task TScore(){
|
||||
// New score system using rtos
|
||||
|
||||
// For score with zeroes at the end: Truncate score/10, and then multiply it by 10
|
||||
|
||||
let objScoreNo = ObjText_Create();
|
||||
ObjText_SetFontSize(objScoreNo, 32);
|
||||
ObjText_SetFontBold(objScoreNo, true);
|
||||
ObjText_SetFontType(objScoreNo, "GravityBold8");
|
||||
ObjText_SetFontColorTop(objScoreNo, 0xFFFFFF);
|
||||
ObjText_SetFontColorBottom(objScoreNo, 0x8944CE);
|
||||
ObjText_SetFontBorderType(objScoreNo, BORDER_FULL);
|
||||
ObjText_SetFontBorderColor(objScoreNo, 0x391339);
|
||||
ObjText_SetFontBorderWidth(objScoreNo, 4);
|
||||
//ObjText_SetFontWeight(objScoreNo, 1000);
|
||||
Obj_SetRenderPriorityI(objScoreNo, 79);
|
||||
ObjText_SetSidePitch(objScoreNo, -2);
|
||||
ObjRender_SetPosition(objScoreNo, 192, 56, 0);
|
||||
while(true){
|
||||
|
||||
if(GetPlayerY() < GetStgFrameHeight() * 1/8){
|
||||
ObjRender_SetAlpha(objScoreNo, 125);
|
||||
}
|
||||
else{ObjRender_SetAlpha(objScoreNo, 255);}
|
||||
|
||||
let score = trunc(GetScore()/10) * 10;
|
||||
score = min(score,999999999990);
|
||||
let yass = DigitToCommaArray(score);
|
||||
ObjText_SetText(objScoreNo, yass);
|
||||
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
function DigitToCommaArray(num){ //Natashinitai
|
||||
|
||||
let srcStr = IntToString(num);
|
||||
let res = [];
|
||||
let nChar = 0;
|
||||
for(let i = length(srcStr) - 1; i >= 0; i--){
|
||||
res = [srcStr[i]] ~ res;
|
||||
nChar++;
|
||||
if(nChar % 3 == 0 && i > 0) res = "," ~ res;
|
||||
}
|
||||
return res;
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
//Graze表示
|
||||
//----------------------------------------------------
|
||||
task TGraze()
|
||||
{
|
||||
let grazenum = ObjText_Create();
|
||||
ObjText_SetFontSize(grazenum, 58);
|
||||
ObjText_SetFontBold(grazenum, true);
|
||||
ObjText_SetFontType(grazenum, "Anke Calligraph");
|
||||
ObjText_SetFontColorTop(grazenum, 0x8898A3);
|
||||
ObjText_SetFontColorBottom(grazenum, 0xD2E0FF);
|
||||
ObjText_SetFontBorderType(grazenum, BORDER_FULL);
|
||||
ObjText_SetFontBorderColor(grazenum, 0xFFFFFF);
|
||||
ObjText_SetFontBorderWidth(grazenum, 3);
|
||||
Obj_SetRenderPriorityI(grazenum, 1);
|
||||
ObjRender_SetX(grazenum, offsetX-10);
|
||||
ObjRender_SetY(grazenum, baseY*0.8+spaceY*5);
|
||||
|
||||
while(true){
|
||||
let graze = GetGraze();
|
||||
|
||||
ObjText_SetText(grazenum, rtos("00000", graze));
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
task TValueDisplay(){
|
||||
|
||||
let objPIVNum = ObjText_Create();
|
||||
ObjText_SetFontSize(objPIVNum, 45);
|
||||
ObjText_SetFontBold(objPIVNum, true);
|
||||
ObjText_SetFontType(objPIVNum, "Origami Mommy");
|
||||
ObjText_SetFontColorTop(objPIVNum,0xFFFFFF);
|
||||
ObjText_SetFontColorBottom(objPIVNum,0xFFFFFF);
|
||||
ObjText_SetFontBorderType(objPIVNum, BORDER_FULL);
|
||||
ObjText_SetFontBorderColor(objPIVNum, 0xDC47C8);
|
||||
ObjText_SetFontBorderWidth(objPIVNum, 4);
|
||||
ObjText_SetHorizontalAlignment(objPIVNum, ALIGNMENT_LEFT);
|
||||
//ObjText_SetFontWeight(objPIVNum, 1000);
|
||||
Obj_SetRenderPriorityI(objPIVNum, 2);
|
||||
//ObjText_SetSidePitch(objPIVNum, -3);
|
||||
ObjRender_SetPosition(objPIVNum, 1440, 275, 0);
|
||||
// DEBUG
|
||||
//Obj_SetVisible(objPIV, false);
|
||||
|
||||
int value = 0;
|
||||
|
||||
while(true){
|
||||
value = min(GetCommonDataPtr(pointerPIV, 10000), 9999999990);
|
||||
//PIVMultiplierValue = value/1000;
|
||||
let yass = vtos("-5.2f", value/10000);
|
||||
if(value < 100000){ObjText_SetText(objPIVNum, yass ~ "[font size=25 ox=-24 oy=18]x");}
|
||||
else{ObjText_SetText(objPIVNum, yass ~ "[font size=25 oy=18]x");}
|
||||
yield;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
//残機表示
|
||||
//----------------------------------------------------
|
||||
/*task TPlayerLife
|
||||
{
|
||||
let lifenum = ObjText_Create();
|
||||
ObjText_SetFontSize(lifenum, 22);
|
||||
ObjText_SetFontBold(lifenum, false);
|
||||
ObjText_SetFontType(lifenum, "Unispace");
|
||||
ObjText_SetFontColorTop(lifenum,255,255,255);
|
||||
ObjText_SetFontColorBottom(lifenum,255,255,255);
|
||||
Obj_SetRenderPriorityI(lifenum, 1);
|
||||
ObjRender_SetX(lifenum,507);
|
||||
ObjRender_SetY(lifenum,101);
|
||||
|
||||
while(true){
|
||||
let liferemain = GetPlayerLife();
|
||||
|
||||
ObjText_SetText(lifenum, rtos("00", liferemain));
|
||||
yield;
|
||||
}
|
||||
}*/
|
||||
|
||||
//----------------------------------------------------
|
||||
//残スペル表示
|
||||
//----------------------------------------------------
|
||||
task TPlayerSpell
|
||||
{
|
||||
let spellnum = ObjText_Create();
|
||||
ObjText_SetFontSize(spellnum, 22);
|
||||
ObjText_SetFontBold(spellnum, false);
|
||||
ObjText_SetFontType(spellnum, "Unispace");
|
||||
ObjText_SetFontColorTop(spellnum,255,255,255);
|
||||
ObjText_SetFontColorBottom(spellnum,255,255,255);
|
||||
Obj_SetRenderPriorityI(spellnum, 1);
|
||||
ObjRender_SetX(spellnum,offsetX);
|
||||
ObjRender_SetY(spellnum,baseY+spaceY*3);
|
||||
|
||||
while(true){
|
||||
let spellremain = GetPlayerSpell();
|
||||
|
||||
ObjText_SetText(spellnum, rtos("00", spellremain));
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
// New life task
|
||||
task LifeDisplay(){
|
||||
|
||||
// oh god oh no
|
||||
let liferemain;
|
||||
let lifecounter = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
|
||||
let lifeshow = graphicimg;
|
||||
Obj_SetRenderPriorityI(lifecounter, 79);
|
||||
ObjPrim_SetTexture(lifecounter, lifeshow);
|
||||
//ObjSpriteList2D_SetSourceRect(lifecounter, 256, 0, 384, 128);
|
||||
//ObjRender_SetScaleXYZ(lifecounter, 0.5, 0.5, 1);
|
||||
//ObjSpriteList2D_SetDestCenter(lifecounter);
|
||||
|
||||
int maxText = CreateTextObject(
|
||||
1440, 390, 45,
|
||||
"ASCENSION", "Origami Mommy",
|
||||
0x280644, 0x701582,
|
||||
0xD1B4FF, 3.5,
|
||||
2
|
||||
);
|
||||
|
||||
ObjText_SetFontWeight(maxText, 1000);
|
||||
|
||||
int MaxLife = GetCommonData("Life Limit", 99999);
|
||||
|
||||
loop{
|
||||
SetPlayerLife(min(MaxLife, GetPlayerLife()));
|
||||
|
||||
if(GetPlayerY() < GetStgFrameHeight() * 1/8){
|
||||
ObjRender_SetAlpha(lifecounter, 125);
|
||||
}
|
||||
else{ObjRender_SetAlpha(lifecounter, 255);}
|
||||
|
||||
ObjSpriteList2D_ClearVertexCount(lifecounter);
|
||||
ObjSpriteList2D_SetSourceRect(lifecounter, 608, 288, 640, 288+32);
|
||||
ObjRender_SetTextureFilterMag(lifecounter, FILTER_NONE);
|
||||
ObjSpriteList2D_SetDestCenter(lifecounter);
|
||||
ObjRender_SetScaleXYZ(lifecounter, 2, 2, 1);
|
||||
liferemain = GetPlayerLife();
|
||||
ascent(i in 0..liferemain){
|
||||
ObjRender_SetPosition(lifecounter, 710+i*24, 30, 0);
|
||||
ObjSpriteList2D_AddVertex(lifecounter);
|
||||
}
|
||||
yield;
|
||||
}
|
||||
|
||||
}
|
||||
// New spell task
|
||||
task SpellDisplay{
|
||||
|
||||
int text = CreateTextObject(
|
||||
1820, 380, 32,
|
||||
"MAX", "Origami Mommy",
|
||||
0xFFB4F7, 0xFFFFFF,
|
||||
0x6600BE, 4,
|
||||
2
|
||||
);
|
||||
|
||||
Obj_SetVisible(text, false);
|
||||
ObjText_SetSidePitch(text, -4);
|
||||
ObjText_SetHorizontalAlignment(text, ALIGNMENT_CENTER);
|
||||
|
||||
let spellremain;
|
||||
let spellcounter = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
|
||||
let spellshow = graphicimg;
|
||||
Obj_SetRenderPriorityI(spellcounter, 1);
|
||||
ObjPrim_SetTexture(spellcounter, spellshow);
|
||||
|
||||
loop{
|
||||
if(GetPlayerSpell() > 5){SetPlayerSpell(5);}
|
||||
if(GetPlayerSpell() == 5){Obj_SetVisible(text, true);}
|
||||
else{Obj_SetVisible(text, false);}
|
||||
ObjSpriteList2D_ClearVertexCount(spellcounter);
|
||||
ObjSpriteList2D_SetSourceRect(spellcounter, 640, 128, 768, 256);
|
||||
ObjSpriteList2D_SetDestCenter(spellcounter);
|
||||
ObjRender_SetScaleXYZ(spellcounter, 0.3*scale, 0.3*scale, 1);
|
||||
spellremain = GetPlayerSpell();
|
||||
ascent(i in 0..spellremain){
|
||||
ObjRender_SetPosition(spellcounter, 1604+i*32, 392, 0);
|
||||
ObjSpriteList2D_AddVertex(spellcounter);
|
||||
}
|
||||
yield;
|
||||
}
|
||||
}
|
||||
//----------------------------------------------------
|
||||
// Edited ExRumia system
|
||||
//----------------------------------------------------
|
||||
task TBossLife
|
||||
|
||||
// Lifebar starts at x = 352, ends at x = 925
|
||||
{
|
||||
let path = lifebarimg;
|
||||
let obj = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
|
||||
let objStar = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
|
||||
let objDivision = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
|
||||
let objLifebar = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
|
||||
//bool BossExist = false;
|
||||
|
||||
ObjPrim_SetTexture(obj, path);
|
||||
Obj_SetRenderPriorityI(obj, 72);
|
||||
ObjRender_SetAlpha(obj, 255);
|
||||
|
||||
ObjPrim_SetTexture(objStar, path);
|
||||
Obj_SetRenderPriorityI(objStar, 70);
|
||||
|
||||
ObjPrim_SetTexture(objDivision, path);
|
||||
Obj_SetRenderPriorityI(objDivision, 72);
|
||||
|
||||
ObjPrim_SetTexture(objLifebar, path);
|
||||
Obj_SetRenderPriorityI(objLifebar, 70);
|
||||
ObjRender_SetAlpha(objLifebar, 140);
|
||||
//Obj_SetVisible(objLifebar, false);
|
||||
|
||||
let lastRemStep = -1;
|
||||
let lifeRateRender = 0;
|
||||
|
||||
let objScene = ID_INVALID;
|
||||
loop
|
||||
{
|
||||
objScene = GetEnemyBossSceneObjectID();
|
||||
ObjSpriteList2D_ClearVertexCount(obj);
|
||||
ObjSpriteList2D_ClearVertexCount(objLifebar);
|
||||
ObjSpriteList2D_ClearVertexCount(objStar);
|
||||
ObjSpriteList2D_ClearVertexCount(objDivision);
|
||||
if(objScene != ID_INVALID)
|
||||
{
|
||||
//BossExist = true;
|
||||
ObjSpriteList2D_SetSourceRect(objLifebar, 8, 6, 801, 50);
|
||||
ObjSpriteList2D_SetDestCenter(objLifebar);
|
||||
ObjRender_SetScaleXYZ(objLifebar, 1.12, 1.25, 1);
|
||||
ascent (i in 0..1){
|
||||
ObjRender_SetPosition(objLifebar, 455, 40, 1);
|
||||
ObjSpriteList2D_AddVertex(objLifebar);
|
||||
}
|
||||
RenderActiveLife();
|
||||
|
||||
}
|
||||
yield;
|
||||
}
|
||||
|
||||
/*task RenderLifebar(){
|
||||
ObjSprite2D_SetSourceRect(objLifebar, 5, 5, 534, 34);
|
||||
ObjSprite2D_SetDestCenter(objLifebar);
|
||||
ObjRender_SetPosition(objLifebar, 352, 20, 1);
|
||||
while(BossExist){
|
||||
Obj_SetVisible(objLifebar, true);
|
||||
yield;
|
||||
}
|
||||
}*/
|
||||
|
||||
function RenderActiveLife()
|
||||
{
|
||||
//残りステップ
|
||||
let countRemStep = ObjEnemyBossScene_GetInfo(objScene, INFO_REMAIN_STEP_COUNT);
|
||||
if(lastRemStep != countRemStep)
|
||||
{
|
||||
//ステップが変化
|
||||
lifeRateRender = 0;
|
||||
}
|
||||
|
||||
//Overall active life
|
||||
let lifeTotalMax = ObjEnemyBossScene_GetInfo(objScene, INFO_ACTIVE_STEP_TOTAL_MAX_LIFE);
|
||||
let lifeTotal = ObjEnemyBossScene_GetInfo(objScene, INFO_ACTIVE_STEP_TOTAL_LIFE);
|
||||
let lifeRate = min(lifeTotal / lifeTotalMax, lifeRateRender);
|
||||
ObjSpriteList2D_SetSourceRect(obj, 7, 119, 800, 159);
|
||||
ObjSpriteList2D_SetDestRect(obj, 11, 20, 12 + (890-2) * lifeRate, 60);
|
||||
ObjRender_SetColorHSV(obj, -60, 384, 384);
|
||||
ObjSpriteList2D_AddVertex(obj);
|
||||
ObjRender_SetBlendType(obj, BLEND_ALPHA);
|
||||
|
||||
//Life "division" bar
|
||||
ObjSpriteList2D_SetSourceRect(objDivision, 8, 56, 27, 111);
|
||||
//ObjRender_SetColorHSV(objDivision, 32, 255, 255);
|
||||
let listLifeDiv = [0] ~ ObjEnemyBossScene_GetInfo(objScene, INFO_ACTIVE_STEP_LIFE_RATE_LIST);
|
||||
ascent(iDiv in 1 .. length(listLifeDiv)-1)
|
||||
{
|
||||
let rate = listLifeDiv[iDiv];
|
||||
let x = (GetStgFrameWidth()) * 0.98 * (1-rate);
|
||||
ObjSpriteList2D_SetDestRect(objDivision, x-4, 62, x+24, 118);
|
||||
ObjSpriteList2D_AddVertex(objDivision);
|
||||
}
|
||||
|
||||
//Boss star rendering
|
||||
ObjRender_SetScaleXYZ(objStar, 0.6, 0.6, 1);
|
||||
ObjSpriteList2D_SetSourceRect(objStar, 0, 169, 268, 430);
|
||||
Obj_SetRenderPriority(objStar, 1);
|
||||
ascent(iStep in 0 .. countRemStep)
|
||||
{
|
||||
ObjRender_SetPosition(objStar, GetStgFrameWidth()*1.6, 35+45*iStep, 1);
|
||||
ObjSpriteList2D_SetDestCenter(objStar);
|
||||
ObjSpriteList2D_AddVertex(objStar);
|
||||
}
|
||||
|
||||
lifeRateRender += 0.01;
|
||||
lifeRateRender = min(lifeRateRender, 1);
|
||||
lastRemStep = countRemStep;
|
||||
|
||||
if(GetCommonData("IsFightingBoss", false) == true){
|
||||
if(ObjMove_GetY(GetPlayerObjectID()) < GetStgFrameHeight()/6){
|
||||
ObjRender_SetAlpha(obj, 60);
|
||||
ObjRender_SetAlpha(objLifebar, 30);
|
||||
}
|
||||
else{
|
||||
ObjRender_SetAlpha(obj, 255);
|
||||
ObjRender_SetAlpha(objLifebar, 140);
|
||||
}
|
||||
}
|
||||
|
||||
else{
|
||||
ObjRender_SetAlpha(obj, 0);
|
||||
ObjRender_SetAlpha(objLifebar, 0);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
//タイマー表示
|
||||
//----------------------------------------------------
|
||||
task TBossTimer
|
||||
{
|
||||
let textTimer = ObjText_Create();
|
||||
ObjText_SetFontSize(textTimer, 20);
|
||||
ObjText_SetFontType(textTimer, "GravityRegular5");
|
||||
|
||||
//ObjText_SetMaxWidth(textTimer, GetStgFrameWidth()/6);
|
||||
ObjText_SetHorizontalAlignment(textTimer, ALIGNMENT_LEFT);
|
||||
|
||||
ObjText_SetFontBold(textTimer, true);
|
||||
ObjText_SetFontColorTop(textTimer, 0xFFFFFF);
|
||||
ObjText_SetFontColorBottom(textTimer, 0xFFFFFF);
|
||||
ObjText_SetFontBorderType(textTimer, BORDER_FULL);
|
||||
ObjText_SetFontBorderColor(textTimer, 0x45A6FF);
|
||||
ObjText_SetFontBorderWidth(textTimer, 5);
|
||||
Obj_SetRenderPriorityI(textTimer, 73);
|
||||
//ObjRender_SetX(textTimer, GetStgFrameWidth()/2);
|
||||
ObjRender_SetX(textTimer, 710);
|
||||
ObjRender_SetY(textTimer, 125);
|
||||
Obj_SetVisible(textTimer, true);
|
||||
|
||||
let pathDigit = GetCurrentScriptDirectory() ~ "img/Default_SystemDigit.png";
|
||||
|
||||
let obj = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
|
||||
ObjPrim_SetTexture(obj, lifebarimg);
|
||||
ObjRender_SetBlendType(obj, BLEND_ADD_RGB);
|
||||
Obj_SetRenderPriority(obj, 0.75);
|
||||
//ObjRender_SetY(obj, 38);
|
||||
let count = 2;
|
||||
|
||||
let objScene = ID_INVALID;
|
||||
loop
|
||||
{
|
||||
objScene = GetEnemyBossSceneObjectID();
|
||||
ObjSpriteList2D_ClearVertexCount(obj);
|
||||
if(objScene != ID_INVALID)
|
||||
{
|
||||
Obj_SetVisible(textTimer, true);
|
||||
RenderTimer();
|
||||
}
|
||||
else{Obj_SetVisible(textTimer, false);
|
||||
}
|
||||
yield;
|
||||
}
|
||||
|
||||
task RenderTimer()
|
||||
{
|
||||
let timer = ObjEnemyBossScene_GetInfo(objScene, INFO_TIMERF)/60;
|
||||
timer = min(timer, 999.99);
|
||||
ObjText_SetText(textTimer, rtos("000.00", timer) ~ "[font sz=15 oy=18]s LEFT");
|
||||
ObjSpriteList2D_SetSourceRect(obj, 404, 225, 537, 374);
|
||||
ObjRender_SetScaleXYZ(obj, 1, 1, 1);
|
||||
ObjSpriteList2D_SetDestCenter(obj);
|
||||
ObjRender_SetPosition(textTimer, 590, 55, 1);
|
||||
//ObjSpriteList2D_AddVertex(obj);
|
||||
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) <= 10 && ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) > 0){
|
||||
if(ObjEnemyBossScene_GetInfo(objScene, INFO_TIMERF) % 60 == 0 || ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER) < 1){_Timeout();}
|
||||
ObjText_SetFontBorderColor(textTimer, 0xF0396C);
|
||||
}
|
||||
else{ObjText_SetFontBorderColor(textTimer, 0x45A6FF); ObjText_SetFontSize(textTimer, 35);}
|
||||
if(ObjMove_GetY(GetPlayerObjectID()) < GetStgFrameHeight()/8){
|
||||
ObjRender_SetAlpha(textTimer, 60);
|
||||
}
|
||||
else{
|
||||
ObjRender_SetAlpha(textTimer, 255);
|
||||
}
|
||||
yield;
|
||||
}
|
||||
|
||||
task _Timeout(){ // HOLY FUCK THE TIMER IS RUNNING OUT BITCH
|
||||
|
||||
ascent(i in 0..30){
|
||||
ObjText_SetFontSize(textTimer, Interpolate_Decelerate(50, 25, i/30));
|
||||
//ObjRender_SetScaleXYZ(obj, Interpolate_Decelerate(0.6, 0.38, i/30));
|
||||
yield;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
task TScoreAward(dascore){
|
||||
|
||||
let objText = ObjText_Create();
|
||||
int x = rand_int(0, 99);
|
||||
|
||||
RegularAward;
|
||||
|
||||
task RegularAward{
|
||||
|
||||
let fontsizearray = [70, 70, 70, 65, 60, 65, 70, 70, 70, 40, 40];
|
||||
let textarray = ["So Cool Bestie!", "Bimbo Eliminated!", "Wig Snatched!", "Neutralized Boss Sexiness!", "Gay Rights Confirmed!", "Himbo Kisses!", "Slay Button Hit!", "Yass!!!!", "Gatekept, Gaslit, Girlbossed!", "Spell Card Capture!"];
|
||||
|
||||
int y = rand_int(0, length(textarray)-2);
|
||||
|
||||
ObjText_SetText(objText, textarray[y]); // Selects a random capture text from the array
|
||||
ObjText_SetFontSize(objText, fontsizearray[y]*1.5);
|
||||
ObjText_SetFontType(objText, "Exotc350 DmBd BT");
|
||||
|
||||
//ObjText_SetMaxWidth(objText, GetStgFrameWidth());
|
||||
ObjText_SetHorizontalAlignment(objText, ALIGNMENT_CENTER);
|
||||
|
||||
ObjText_SetFontBold(objText, true);
|
||||
ObjText_SetFontColorTop(objText, 0xFFD34D);
|
||||
ObjText_SetFontColorBottom(objText, 0xFFF2CA);
|
||||
ObjText_SetFontBorderType(objText, BORDER_FULL);
|
||||
ObjText_SetFontBorderColor(objText,0, 0, 0);
|
||||
ObjText_SetFontBorderWidth(objText, 3);
|
||||
Obj_SetRenderPriority(objText, 0.6);
|
||||
ObjRender_SetX(objText, GetStgFrameWidth()/2);
|
||||
ObjRender_SetY(objText, GetStgFrameHeight()/5);
|
||||
}
|
||||
|
||||
let scorefinal = trunc(dascore/10) * 10;
|
||||
let scorescene = GetEnemyBossSceneObjectID();
|
||||
|
||||
if (ObjEnemyBossScene_GetInfo(scorescene, INFO_PLAYER_SHOOTDOWN_COUNT) == 0 &&
|
||||
ObjEnemyBossScene_GetInfo(scorescene, INFO_PLAYER_SPELL_COUNT) == 0){
|
||||
AddScore(scorefinal);
|
||||
}
|
||||
|
||||
let strScore = "Capture Bonus +" ~ DigitToCommaArray(scorefinal);
|
||||
let objScore = ObjText_Create();
|
||||
ObjText_SetText(objScore, strScore);
|
||||
ObjText_SetFontSize(objScore, 85);
|
||||
ObjText_SetFontType(objScore, "Anke Calligraph");
|
||||
|
||||
ObjText_SetMaxWidth(objScore, GetStgFrameWidth());
|
||||
ObjText_SetHorizontalAlignment(objScore, ALIGNMENT_CENTER);
|
||||
|
||||
ObjText_SetFontBold(objScore, true);
|
||||
ObjText_SetFontColorTop(objScore, 0x9C2400);
|
||||
ObjText_SetFontColorBottom(objScore, 0xFF982A);
|
||||
ObjText_SetFontBorderType(objScore, BORDER_FULL);
|
||||
ObjText_SetFontBorderColor(objScore, 255, 255, 255);
|
||||
ObjText_SetFontBorderWidth(objScore, 3);
|
||||
Obj_SetRenderPriority(objScore, 0.6);
|
||||
ObjRender_SetX(objScore, GetStgFrameWidth()/2 - (GetStgFrameWidth()/2-5));
|
||||
ObjRender_SetY(objScore, GetStgFrameHeight()/3.2-15);
|
||||
|
||||
wait(120);
|
||||
|
||||
Obj_Delete(objText);
|
||||
Obj_Delete(objScore);
|
||||
|
||||
}
|
||||
//----------------------------------------------------
|
||||
//FPS表示
|
||||
//----------------------------------------------------
|
||||
task TCurrentFps()
|
||||
{
|
||||
|
||||
if(IsReplay()){return;}
|
||||
|
||||
let objText = ObjText_Create();
|
||||
ObjText_SetFontSize(objText, 36);
|
||||
ObjText_SetFontBold(objText, true);
|
||||
ObjText_SetFontType(objText, "Unispace");
|
||||
ObjText_SetFontColorTop(objText, 0x6747FF);
|
||||
ObjText_SetFontColorBottom(objText, 0xAEC4FF);
|
||||
ObjText_SetFontBorderType(objText, BORDER_FULL);
|
||||
ObjText_SetFontBorderColor(objText, 38, 3, 93);
|
||||
ObjText_SetFontBorderWidth(objText, 1.5);
|
||||
ObjText_SetHorizontalAlignment(objText, ALIGNMENT_RIGHT);
|
||||
ObjText_SetMaxWidth(objText, GetScreenWidth() - 8);
|
||||
Obj_SetRenderPriority(objText, 1.0);
|
||||
ObjRender_SetX(objText, 0);
|
||||
ObjRender_SetY(objText, GetScreenHeight() - 48);
|
||||
|
||||
loop
|
||||
{
|
||||
let fps = GetCurrentFps();
|
||||
let text = vtos("1.2f", fps) ~ "fps";
|
||||
ObjText_SetText(objText, text);
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
task TReplayFps()
|
||||
{
|
||||
if(!IsReplay()){return;}
|
||||
|
||||
let objText = ObjText_Create();
|
||||
ObjText_SetFontSize(objText, 36);
|
||||
ObjText_SetFontType(objText, "Unispace");
|
||||
ObjText_SetFontBold(objText, true);
|
||||
ObjText_SetFontColorTop(objText, 128, 128, 255);
|
||||
ObjText_SetFontColorBottom(objText, 255, 255, 255);
|
||||
ObjText_SetFontBorderType(objText, BORDER_FULL);
|
||||
ObjText_SetHorizontalAlignment(objText, ALIGNMENT_RIGHT);
|
||||
ObjText_SetFontBorderColor(objText,38, 3, 93);
|
||||
ObjText_SetFontBorderWidth(objText, 1);
|
||||
Obj_SetRenderPriorityI(objText, 79);
|
||||
|
||||
let px = GetStgFrameWidth() - 10;
|
||||
let py = GetStgFrameHeight() - 42;
|
||||
ObjRender_SetX(objText, px);
|
||||
ObjRender_SetY(objText, py);
|
||||
|
||||
loop
|
||||
{
|
||||
let fps = GetReplayFps();
|
||||
let text = vtos("1.2f", fps);
|
||||
ObjText_SetText(objText, "REPLAY MODE: " ~ text ~ "fps");
|
||||
yield;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
//ユーティリティ
|
||||
//----------------------------------------------------
|