Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "./SoundFunctions.dnh"
- let Current = GetCurrentScriptDirectory();
- let quality = 2;
- function GetDistance(x1,y1,x2,y2){
- return(((x2-x1)^2+(y2-y1)^2)^(1/2))
- }
- InstallFont (GetCurrentScriptDirectory ~ "fonts/rusq.ttf");
- InstallFont(GetCurrentScriptDirectory ~ "fonts/framd.ttf");
- StartScript(LoadScriptInThread(Current ~ "../lib/EffectsEngine.dnh"));
- #include "../lib/EV_const.dnh"
- @Initialize{
- SetPauseScriptPath(Current ~ "Pause.dnh");
- SetEndSceneScriptPath(Current ~ "EndScene.dnh");
- StartItemScript(GetCurrentScriptDirectory ~ "./Item.txt");
- InitFrame();
- BossTimer();
- BossLife();
- TPlayerLife();
- TPlayerSpell();
- TGraze();
- THiScore();
- TScore();
- TCurrentFps();
- }
- @MainLoop{
- yield;
- }
- @Event{
- alternative(GetEventType())
- case(EV_GAIN_SPELL){
- let objScene = GetEnemyBossSceneObjectID();
- let score = ObjEnemyBossScene_GetInfo(objScene, INFO_SPELL_SCORE);
- SetCommonData("LastWord", GetCommonData("LastWord", 0)+1);
- PlaySound("SpellCapture",85,0);
- TGainSpell(score);
- }
- }
- @Finalize{
- }
- let completelyexpanded = false;
- let completelyclosed = false;
- let stgalphastgalpha = 0;
- let HUDalpha = 0;
- function InitFrame(){
- Difficulty(30);
- fadeinHUD;
- StgFrame;
- task StgFrame{
- let path = GetCurrentScriptDirectory() ~ "img/StgFrame.png";
- let obj = ObjPrim_Create(OBJ_SPRITE_2D);
- ObjPrim_SetTexture(obj, path);
- Obj_SetRenderPriority(obj, 0);
- ObjSprite2D_SetSourceRect(obj, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
- ObjSprite2D_SetDestRect(obj, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
- loop{
- if(!GetCommonData("OpenField", false) && !GetCommonData("CloseField", false)) {
- completelyexpanded = false;
- yield;
- } else if(GetCommonData("OpenField", false)) {
- if(!completelyexpanded){
- stgalphastgalpha = 250;
- ascent(i in 0..30) {
- let s = sin((i+1)*90/30)^2;
- let pastRatioX = GetPlayerX/GetStgFrameWidth;
- let pastRatioY = GetPlayerY/GetStgFrameHeight;
- SetStgFrame(32-32*s, 16-16*s, 416+224*s, 464+16*s, 20, 80);
- SetPlayerClip(16, 16, 384+256*s-16, 448+32*s-16);
- ObjRender_SetAlpha(obj,stgalphastgalpha);
- stgalphastgalpha -= 255/30;
- SetCommonData("OpenField", false);
- SetCommonData("CloseField", false);
- //ObjMove_SetPosition(GetPlayerObjectID, GetStgFrameWidth*pastRatioX, GetStgFrameHeight*pastRatioY);
- yield;
- }
- completelyexpanded = true; //Obj_Delete(obj);
- SetCommonData("ExpandField", true);
- }
- } else if(GetCommonData("CloseField", false)) {
- if(!completelyclosed){
- stgalphastgalpha = 0;
- ascent(i in 0..30) {
- let s = sin((i+1)*90/30)^2;
- let pastRatioX = GetPlayerX/GetStgFrameWidth;
- let pastRatioY = GetPlayerY/GetStgFrameHeight;
- SetStgFrame(32*s, 16*s, (416+224*(sin((29+1)*90/30)^2))-224*s, (464+16*s)-16*(sin((29+1)*90/30)^2), 20, 80);
- SetPlayerClip(16, 16, 624-256*s+16, 464-32*s+16);
- ObjRender_SetAlpha(obj,stgalphastgalpha);
- stgalphastgalpha += 255/30;
- //ObjMove_SetPosition(GetPlayerObjectID, GetStgFrameWidth*pastRatioX, GetStgFrameHeight*pastRatioY);
- SetCommonData("OpenField", false);
- SetCommonData("CloseField", false);
- yield;
- }
- SetStgFrame(32, 16, 416, 464, 20, 80);
- SetPlayerClip(16, 16, 384-16, 448-16);
- completelyclosed = true; //Obj_Delete(obj);
- SetCommonData("ExpandField", false);
- }
- }
- yield;
- }
- }
- task fadeinHUD{
- ascent(i in 0..61){
- HUDalpha = i*255/60;
- yield;
- }
- }
- }
- task Difficulty(yielder){
- let path = GetCurrentScriptDirectory() ~ "img/Difficulity.png";
- let objDiff = ObjPrim_Create(OBJ_SPRITE_2D);
- let blink = 3;
- let blinkcount = 10;
- let alpha = 255;
- let frame = 0;
- let value = 0;
- ObjPrim_SetTexture(objDiff, path);
- Obj_SetRenderPriority(objDiff, 1);
- ObjRender_SetPosition(objDiff, -60, -60, 0);
- loop(yielder){yield}
- alternative(GetCommonData("Difficulty","Easy"))
- case("Easy"){
- value = 1;
- }
- case("Normal"){
- value = 2;
- }
- case("Hard"){
- value = 3;
- }
- case("Lunartic"){
- value = 4;
- }
- case("Extra"){
- value = 5;
- }
- case("Eclipse"){
- value = 6;
- }
- case("BossRush"){
- value = 7;
- }
- case("LastWord"){
- value = 8;
- }
- others{
- value = 9;
- }
- ObjSprite2D_SetSourceRect(objDiff, 0, 32*(value-1), 256, 32*value);
- ObjRender_SetScaleXYZ(objDiff,0.55,60*0.01,0);
- ObjSprite2D_SetDestCenter(objDiff);
- loop(yielder){yield}
- ObjRender_SetPosition(objDiff, GetStgFrameWidth/2+36, 48, 0);
- loop((blinkcount*blink)*2){
- if(frame==blink){ObjRender_SetY(objDiff, -60);}
- if(frame==blink*2){ObjRender_SetY(objDiff, 48);frame = 0;}
- frame++;
- yield;
- }
- ObjRender_SetY(objDiff, 48);
- while(alpha>0){
- alpha-=25.5;
- ObjRender_SetAlpha(objDiff, alpha);
- yield;
- }
- loop(45){yield};
- ObjRender_SetPosition(objDiff, 532, 32, 0);
- while(alpha<255){
- alpha+=5;
- ObjRender_SetAlpha(objDiff, alpha);
- yield;
- }
- Obj_SetRenderPriority(objDiff, 0.09);
- }
- //----------------------------------------------------
- //スコア表示
- //----------------------------------------------------
- task THiScore(){
- TText;
- task TText{
- let obj=ObjPrim_Create(OBJ_SPRITE_2D);
- let img=GetCurrentScriptDirectory()~"img/HUD.png";
- ObjPrim_SetTexture(obj,img);
- ObjSprite2D_SetSourceRect(obj,0,0,60,16);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetBlendType(obj,BLEND_ALPHA);
- ObjRender_SetScaleXYZ(obj,1.10,1.10,0);
- Obj_SetRenderPriority(obj,0.1);
- ObjRender_SetPosition(obj,GetStgFrameWidth/2+265,58,0);
- TCheck;
- task TCheck{
- loop{
- ObjRender_SetAlpha(obj,HUDalpha);
- yield;
- }
- }}
- //得点
- let pathDigit = GetCurrentScriptDirectory() ~ "img/SystemDigit.png";
- let count = 12;
- let obj = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
- ObjPrim_SetTexture(obj, pathDigit);
- ObjRender_SetBlendType(obj, BLEND_ALPHA);
- ObjRender_SetAlpha(obj,255);
- Obj_SetRenderPriority(obj, 0.1);
- ObjRender_SetY(obj, 72);
- while(true)
- {
- ObjRender_SetAlpha(obj,HUDalpha);
- let score = GetScore();
- score = min(score, 999999999999);
- let listNum = DigitToArray(score, count);
- ObjSpriteList2D_ClearVertexCount(obj);
- ascent(iObj in 0 .. count)
- {
- let num = listNum[iObj];
- ObjRender_SetX(obj, 445 + iObj * 14);
- ObjRender_SetY(obj, 72);
- ObjSpriteList2D_SetSourceRect(obj,num*16,0,(num+1)*16,20);
- ObjSpriteList2D_SetDestRect(obj,0,0,17,20);
- ObjSpriteList2D_AddVertex(obj);
- }
- yield;
- }
- }
- task TScore(){
- TText;
- task TText{
- let obj=ObjPrim_Create(OBJ_SPRITE_2D);
- let img=GetCurrentScriptDirectory()~"img/HUD.png";
- ObjPrim_SetTexture(obj,img);
- ObjSprite2D_SetSourceRect(obj,0,17,68,17*2);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetBlendType(obj,BLEND_ALPHA);
- ObjRender_SetScaleXYZ(obj,1.10,1.10,0);
- Obj_SetRenderPriority(obj,0.1);
- ObjRender_SetPosition(obj,GetStgFrameWidth/2+269,103,0);
- TCheck;
- task TCheck{
- loop{
- ObjRender_SetAlpha(obj,HUDalpha);
- yield;
- }
- }}
- //得点
- let pathDigit = GetCurrentScriptDirectory() ~ "img/SystemDigit.png";
- let count = 12;
- let obj = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
- ObjPrim_SetTexture(obj, pathDigit);
- ObjRender_SetBlendType(obj, BLEND_ALPHA);
- ObjRender_SetAlpha(obj,255);
- Obj_SetRenderPriority(obj, 0.1);
- ObjRender_SetY(obj, 72);
- while(true)
- {
- ObjRender_SetAlpha(obj,HUDalpha);
- let score = GetScore();
- score = min(score, 999999999999);
- let listNum = DigitToArray(score, count);
- ObjSpriteList2D_ClearVertexCount(obj);
- ascent(iObj in 0 .. count)
- {
- let num = listNum[iObj];
- ObjRender_SetX(obj, 445 + iObj * 14);
- ObjRender_SetY(obj, 115);
- ObjSpriteList2D_SetSourceRect(obj,num*16,0,(num+1)*16,20);
- ObjSpriteList2D_SetDestRect(obj,0,0,17,20);
- ObjSpriteList2D_AddVertex(obj);
- }
- yield;
- }
- }
- //----------------------------------------------------
- //Graze表示
- //----------------------------------------------------
- task TGraze(){
- TText;
- task TText{
- let obj=ObjPrim_Create(OBJ_SPRITE_2D);
- let img=GetCurrentScriptDirectory()~"img/HUD.png";
- ObjPrim_SetTexture(obj,img);
- ObjSprite2D_SetSourceRect(obj,69,17,69*2,17*2);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetBlendType(obj,BLEND_ALPHA);
- ObjRender_SetScaleXYZ(obj,1.10,1.10,0);
- Obj_SetRenderPriority(obj,0.1);
- ObjRender_SetPosition(obj,GetStgFrameWidth/2+245,206,0);
- TCheck;
- task TCheck{
- loop{
- ObjRender_SetAlpha(obj,HUDalpha);
- yield;
- }
- }}
- //得点
- let pathDigit = GetCurrentScriptDirectory() ~ "img/SystemDigit.png";
- let count = 5;
- let obj = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
- ObjPrim_SetTexture(obj, pathDigit);
- ObjRender_SetBlendType(obj, BLEND_ALPHA);
- ObjRender_SetAlpha(obj,255);
- Obj_SetRenderPriority(obj, 0.1);
- ObjRender_SetY(obj, 122);
- while(true)
- {
- ObjRender_SetAlpha(obj,HUDalpha);
- let graze = GetGraze();
- graze = min(graze, 99999);
- let listNum = DigitToArray(graze, count);
- ObjSpriteList2D_ClearVertexCount(obj);
- ascent(iObj in 0 .. count)
- {
- let num = listNum[iObj];
- ObjRender_SetX(obj, 560 + iObj * 14);
- ObjRender_SetY(obj, 196);
- ObjSpriteList2D_SetSourceRect(obj,num*16,0,(num+1)*16,20);
- ObjSpriteList2D_SetDestRect(obj,0,0,17,20);
- ObjSpriteList2D_AddVertex(obj);
- }
- yield;
- }
- }
- //----------------------------------------------------
- //残機表示
- //----------------------------------------------------
- task TPlayerLife
- {
- TText;
- //TInfinitie;
- EmptyLife(GetStgFrameWidth/2+315+128/2);
- RealLife(GetStgFrameWidth/2+315+128/2);
- task EmptyLife(px){
- let obj=ObjPrim_Create(OBJ_SPRITE_2D);
- let img=GetCurrentScriptDirectory()~"img/Bars.png";
- ObjPrim_SetTexture(obj,img);
- ObjSprite2D_SetSourceRect(obj,0,0,128,16);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetBlendType(obj,BLEND_ALPHA);
- ObjRender_SetScaleXYZ(obj,1,1,0);
- Obj_SetRenderPriority(obj,0.1);
- ObjRender_SetPosition(obj,px,155,0);
- while(true){
- ObjRender_SetAlpha(obj,HUDalpha);
- yield;
- }
- }
- task RealLife(px){
- let obj=ObjPrim_Create(OBJ_SPRITE_2D);
- let img=GetCurrentScriptDirectory()~"img/Bars.png";
- ObjPrim_SetTexture(obj,img);
- ObjSprite2D_SetSourceRect(obj,0,16,128,32);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetBlendType(obj,BLEND_ALPHA);
- ObjRender_SetScaleXYZ(obj,1,1,0);
- Obj_SetRenderPriority(obj,0.1);
- ObjRender_SetPosition(obj,px,155,0);
- while(true){
- ObjSprite2D_SetSourceRect(obj,0,16,16*(GetPlayerLife+1),32);
- ObjSprite2D_SetDestRect(obj,-128/2,-8,16*(GetPlayerLife+1)-64,8);
- ObjRender_SetAlpha(obj,HUDalpha);
- yield;
- }
- }
- task TText{
- let obj=ObjPrim_Create(OBJ_SPRITE_2D);
- let img=GetCurrentScriptDirectory()~"img/HUD.png";
- ObjPrim_SetTexture(obj,img);
- ObjSprite2D_SetSourceRect(obj,0,36,40,52);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetBlendType(obj,BLEND_ALPHA);
- ObjRender_SetScaleXYZ(obj,1,1,0);
- Obj_SetRenderPriority(obj,0.1);
- ObjRender_SetPosition(obj,GetStgFrameWidth/2+252,155,0);
- TCheck;
- task TCheck{
- loop{
- ObjRender_SetAlpha(obj,HUDalpha);
- yield;
- }
- }
- }
- }
- //----------------------------------------------------
- //残スペル表示
- //----------------------------------------------------
- task TPlayerSpell
- {
- TText;
- //TInfinitie;
- EmptySpell(GetStgFrameWidth/2+315+128/2);
- RealSpell(GetStgFrameWidth/2+315+128/2);
- task EmptySpell (px){
- let obj=ObjPrim_Create(OBJ_SPRITE_2D);
- let img=GetCurrentScriptDirectory()~"img/Bars.png";
- ObjPrim_SetTexture(obj,img);
- ObjSprite2D_SetSourceRect(obj,-1,32,128,48);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetBlendType(obj,BLEND_ALPHA);
- ObjRender_SetScaleXYZ(obj,1,1,0);
- Obj_SetRenderPriority(obj,0.1);
- ObjRender_SetPosition(obj,px,179,0);
- while(true){
- ObjRender_SetAlpha(obj,HUDalpha);
- yield;
- }
- }
- task RealSpell(px){
- let obj=ObjPrim_Create(OBJ_SPRITE_2D);
- let img=GetCurrentScriptDirectory()~"img/Bars.png";
- ObjPrim_SetTexture(obj,img);
- ObjSprite2D_SetSourceRect(obj,0,48,128,64);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetBlendType(obj,BLEND_ALPHA);
- ObjRender_SetScaleXYZ(obj,1,1,0);
- Obj_SetRenderPriority(obj,0.1);
- ObjRender_SetPosition(obj,px,179,0);
- while(true){
- ObjSprite2D_SetSourceRect(obj,0,48,16*GetPlayerSpell,64);
- ObjSprite2D_SetDestRect(obj,-128/2,-8,16*GetPlayerSpell-64,8);
- ObjRender_SetAlpha(obj,HUDalpha);
- yield;
- }
- }
- task TText{
- let obj=ObjPrim_Create(OBJ_SPRITE_2D);
- let img=GetCurrentScriptDirectory()~"img/HUD.png";
- ObjPrim_SetTexture(obj,img);
- ObjSprite2D_SetSourceRect(obj,68,0,69*2,17);
- ObjSprite2D_SetDestCenter(obj);
- ObjRender_SetBlendType(obj,BLEND_ALPHA);
- ObjRender_SetScaleXYZ(obj,1,1,0);
- Obj_SetRenderPriority(obj,0.1);
- ObjRender_SetPosition(obj,GetStgFrameWidth/2+262,179,0);
- TCheck;
- task TCheck{
- loop{
- ObjRender_SetAlpha(obj,HUDalpha);
- yield;
- }
- }
- }
- }
- //----------------------------------------------------
- //ボスのライフ表示
- //----------------------------------------------------
- task BossLife{
- let pathHealth = GetCurrentScriptDirectory ~ "img/lifebar.png";
- let path = pathHealth;
- let countVertex = 64;
- let objScene = ID_INVALID;
- let objStar = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
- ObjPrim_SetTexture(objStar, GetCurrentScriptDirectory ~ "img/frame2.png");
- Obj_SetRenderPriority(objStar, 0.7);
- ObjRender_SetScaleXYZ(objStar,1,1,1);
- ObjSpriteList2D_SetSourceRect(objStar, 144, 80, 156, 92);
- let objLife = ObjPrim_Create(OBJ_PRIMITIVE_2D);
- ObjPrim_SetPrimitiveType(objLife, PRIMITIVE_TRIANGLESTRIP);
- ObjPrim_SetVertexCount(objLife, countVertex);
- ObjRender_SetBlendType(objLife, BLEND_ALPHA);
- Obj_SetRenderPriority(objLife, 0.69);
- ObjPrim_SetTexture(objLife, path);
- let objOutline = ObjPrim_Create(OBJ_PRIMITIVE_2D);
- ObjPrim_SetPrimitiveType(objOutline, PRIMITIVE_TRIANGLESTRIP);
- ObjPrim_SetVertexCount(objOutline, countVertex);
- ObjRender_SetBlendType(objOutline, BLEND_ALPHA);
- Obj_SetRenderPriority(objOutline, 0.68);
- ObjPrim_SetTexture(objOutline, path);
- let objKnub = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
- ObjPrim_SetTexture(objKnub, path);
- Obj_SetRenderPriority(objKnub, 0.69);
- ObjSpriteList2D_SetSourceRect(objKnub, 20, 0, 29, 11);
- ObjSpriteList2D_SetDestRect(objKnub, -2.5, -3, 2.5, 3);
- ascent (iVert in 0..countVertex/2){
- let vertex = iVert * 2;
- ObjPrim_SetVertexUVT(objLife, vertex+0, 0, 0);
- ObjPrim_SetVertexUVT(objLife, vertex+1, 10, 32);
- ObjPrim_SetVertexUVT(objOutline, vertex+0, 10, 0);
- ObjPrim_SetVertexUVT(objOutline, vertex+1, 19, 32);
- }
- let mx = 0;
- let my = 0;
- let fade = 255;
- let fadec = 255;
- let maxRadius = 54;
- let lastRemStep = 0;
- let countRemStep = ObjEnemyBossScene_GetInfo(objScene, INFO_REMAIN_STEP_COUNT);
- let lifeRateRender = 0;
- let outlineRender = 0;
- 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);
- ObjRender_SetScaleXYZ(objLife, -1, 1, 1);
- ObjRender_SetScaleXYZ(objOutline, -1, 1, 1);
- ObjRender_SetPosition(objStar, 0, 12, 0);
- while(GetCommonData("quality", 2)==quality){
- ObjSpriteList2D_ClearVertexCount(objStar);
- ObjSpriteList2D_ClearVertexCount(objKnub);
- if(outlineRender<1){
- ObjRender_SetAlpha(objStar, min(255, 255*(outlineRender*3)-510));
- }else{
- if(GetPlayerY < max(96, 26+(truncate(countRemStep/12)*12))){
- fade = max(fade-10, 85);
- }else{fade = min(fade+10, 255);}
- ObjRender_SetAlpha(objStar, fade);
- }
- objScene = GetEnemyBossSceneObjectID;
- if(objScene != ID_INVALID){
- let Boss = GetEnemyBossObjectID;
- Boss = Boss ~ [objLife];
- mx = ObjRender_GetX(Boss[0]);
- my = ObjRender_GetY(Boss[0]);
- }else{
- mx = -400;
- my = -400;
- outlineRender = 0;
- lifeRateRender = 0;
- }
- RefreshVertex(objLife);
- if(GetDistance(GetPlayerX,GetPlayerY,mx,my)<maxRadius*1.75){
- fadec = max(fadec-10, 85);
- }else{fadec = min(fadec+10, 255);}
- if(!GetCommonData("HPHide",false)){
- ObjRender_SetAlpha(objKnub, (fadec/100)*(lifeRateRender*100));
- ObjRender_SetAlpha(objOutline, fadec);
- ObjRender_SetAlpha(objLife, fadec);
- }else{
- ObjRender_SetAlpha(objKnub,0);
- ObjRender_SetAlpha(objOutline,0);
- ObjRender_SetAlpha(objLife, 0);
- }
- if(GetCommonData("ForceLifebar", 0) != 0){
- outlineRender = 0;
- lifeRateRender = 0;
- }
- lastRemStep = countRemStep;
- yield;
- }
- Obj_Delete(objStar);
- Obj_Delete(objKnub);
- Obj_Delete(objOutline);
- Obj_Delete(objLife);
- task RefreshVertex(objid){
- countRemStep = ObjEnemyBossScene_GetInfo(objScene, INFO_REMAIN_STEP_COUNT);
- if(lastRemStep != countRemStep){
- lifeRateRender = 0;
- }
- ascent(iStep in 0 .. countRemStep){
- ObjSpriteList2D_SetSourceRect(objStar, 144, 80, 156, 92);
- let y = truncate((iStep)/12)*12;
- let i = iStep-(12*(y/12));
- ObjSpriteList2D_SetDestRect(objStar, 4 + i * 12, 4+y,
- 4 + (i + 1) * 12, 16+y);
- ObjSpriteList2D_AddVertex(objStar);
- }
- let listLifeDiv = [0]~ObjEnemyBossScene_GetInfo(objScene, INFO_ACTIVE_STEP_LIFE_RATE_LIST);
- ascent(iDiv in 0 .. length(listLifeDiv)){
- let kang = 360*(listLifeDiv[iDiv]);
- let kx = mx+(maxRadius*1.05)*cos(kang-90);
- let ky = my+(maxRadius*1.05)*sin(kang-90);
- if(1-listLifeDiv[iDiv]<lifeTotal / lifeTotalMax-0.000001){
- ObjRender_SetPosition(objKnub, kx, ky, 0);
- ObjRender_SetAngleZ(objKnub, kang);
- ObjSpriteList2D_AddVertex(objKnub);
- }
- }
- lifeTotalMax = ObjEnemyBossScene_GetInfo(objScene, INFO_ACTIVE_STEP_TOTAL_MAX_LIFE);
- lifeTotal = ObjEnemyBossScene_GetInfo(objScene, INFO_ACTIVE_STEP_TOTAL_LIFE);
- lifeRate = min(lifeTotal / lifeTotalMax, lifeRateRender);
- ascent(iVert in 0..countVertex/2){
- let indexVert = iVert * 2;
- let angle = (360 / (countVertex/2 - 1) * iVert);
- angle = min(360*(outlineRender), angle);
- let x = (maxRadius)*cos(angle-90);
- let y = (maxRadius)*sin(angle-90);
- ObjPrim_SetVertexPosition(objOutline, indexVert + 0 , x, y, 0);
- x = (maxRadius*1.1)*cos(angle-90);
- y = (maxRadius*1.1)*sin(angle-90);
- ObjPrim_SetVertexPosition(objOutline, indexVert + 1 , x, y, 0);
- angle = min(360*(lifeRate), angle);
- x = (maxRadius)*cos(angle-90);
- y = (maxRadius)*sin(angle-90);
- ObjPrim_SetVertexPosition(objLife, indexVert + 0 , x, y, 0);
- x = (maxRadius*1.1)*cos(angle-90);
- y = (maxRadius*1.1)*sin(angle-90);
- ObjPrim_SetVertexPosition(objLife, indexVert + 1 , x, y, 0);
- }
- ObjRender_SetPosition(objLife, mx, my, 0);
- ObjRender_SetPosition(objOutline, mx, my, 0);
- lifeRateRender = min(1, lifeRateRender+0.02);
- outlineRender = min(1, outlineRender+0.016);
- }
- }
- //----------------------------------------------------
- //タイマー表示
- //----------------------------------------------------
- task BossTimer{
- let Digitimg = GetCurrentScriptDirectory() ~ "img/SystemDigit.png";
- let obj = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
- ObjPrim_SetTexture(obj, Digitimg);
- ObjRender_SetBlendType(obj, BLEND_ALPHA);
- Obj_SetRenderPriority(obj, 0.80);
- let ypos = 8;
- let yielder = 0;
- let grow = 0;
- let count = 4;
- let maxt = 99.99;
- let scale = 1;
- let fade = 0;
- let bosstime = truncate(maxt);
- let cyoff = 0;
- let posinc = 0;
- if(quality<=1){cyoff = 12}
- let objScene = ID_INVALID;
- let x = (GetStgFrameWidth/2)-( (6+(count-1) * (14*scale))/2) + 30-32;
- while(GetCommonData("quality", 2)==quality){
- x = (GetStgFrameWidth/2)-( (6+(count-1) * (14*scale))/2) + 30-32;
- objScene = GetEnemyBossSceneObjectID;
- ObjSpriteList2D_ClearVertexCount(obj);
- if(objScene != ID_INVALID){
- fade = min(fade+0.05, 1);
- RenderTimer;
- SpellTime(objScene);
- if( ObjEnemyBossScene_GetInfo(objScene, INFO_IS_SPELL) ||
- ObjEnemyBossScene_GetInfo(objScene, INFO_IS_LAST_SPELL) ||
- ObjEnemyBossScene_GetInfo(objScene, INFO_IS_DURABLE_SPELL)){
- if(yielder>25){
- posinc = max(posinc+0.05, 0);
- ypos = min(max(ypos, 6+cyoff)+posinc, 34+cyoff);
- }
- yielder++;
- }else{
- posinc = min(posinc-0.05, 0);
- ypos = max(min(ypos, 34+cyoff)+posinc, 6+cyoff);
- yielder = 0;
- }
- }else{fade = 0;ypos = 6;}
- ObjRender_SetAlpha(obj, min(255*fade, 255));
- ObjRender_SetY(obj, ypos+24-16);
- yield;
- }
- Obj_Delete(obj);
- function RenderTimer{
- let timer = ObjEnemyBossScene_GetInfo(objScene, INFO_TIMERF)/60;
- if(timer < 0){timer = 100;}
- timer = min(max(0, timer), maxt);
- timer *= 100;
- let listNum = DigitToArray(timer, count);
- ascent(iObj in 0 .. count-2){
- let num = listNum[iObj];
- ObjRender_SetX(obj, x + (iObj-grow/20) * (12+grow));
- ObjSpriteList2D_SetSourceRect(obj, num * 16, 0, (num + 1) * 16, 20);
- ObjSpriteList2D_SetDestRect(obj, -grow, 0, 16, 20+grow);
- ObjSpriteList2D_AddVertex(obj);
- }
- ObjRender_SetX(obj, x + (count-2) * 12 - 2);
- ObjSpriteList2D_SetSourceRect(obj, 11 * 16, 0, (11 + 1) * 16, 20);
- ObjSpriteList2D_SetDestRect(obj, 0, 0, 16, 20);
- ObjSpriteList2D_AddVertex(obj);
- ascent(iObj in count-2 .. count){
- let num = listNum[iObj];
- ObjRender_SetX(obj, x + 13 + iObj * 9);
- ObjSpriteList2D_SetSourceRect(obj, num * 16, 0, (num + 1) * 16, 20);
- ObjSpriteList2D_SetDestRect(obj, 0, 5, 12, 20);
- ObjSpriteList2D_AddVertex(obj);
- }
- yield;
- }
- task SpellTime(SpellTimeSceneObjectID){
- let GetTimer = ObjEnemyBossScene_GetInfo(SpellTimeSceneObjectID, INFO_TIMER);
- if(bosstime != GetTimer && GetTimer <11){
- if(GetTimer > 4){grow = 6;PlaySound("Timeout",90,0);}
- if(GetTimer < 5 && GetTimer>-1){grow = 8;PlaySound("Timeout2",90,0);}
- bosstime = GetTimer;
- }
- if(GetTimer<=10){
- ObjRender_SetColor(obj, 255, 100-grow*8, 100-grow*8);
- }else{ObjRender_SetColor(obj, 255, 255, 255);}
- grow = max(grow-1, 0);
- }
- }
- //----------------------------------------------------
- //スペルカード取得表示
- //----------------------------------------------------
- task TGainSpell(score){
- let path = GetCurrentScriptDirectory ~ "img/frame2.png";
- let pathDigit = GetCurrentScriptDirectory() ~ "img/SystemDigit.png";
- let objText = ObjPrim_Create(OBJ_SPRITE_2D);
- ObjPrim_SetTexture(objText, path);
- ObjSprite2D_SetSourceRect(objText, 0, 99, 264, 131);
- ObjSprite2D_SetDestRect(objText, 0, 0, 264, 32);
- Obj_SetRenderPriority(objText, 0.8);
- ObjRender_SetX(objText, 64);
- ObjRender_SetY(objText, 98);
- let objScore = ObjPrim_Create(OBJ_SPRITE_LIST_2D);
- let count = GetNumSize(score);
- let listNum = DigitToArray(score, count);
- ObjPrim_SetTexture(objScore, pathDigit);
- Obj_SetRenderPriority(objScore, 0.8);
- ObjRender_SetY(objScore, 140);
- RefreshVertex;
- loop(120){
- yield;
- }
- let alpha = 255;
- while(alpha>0){
- alpha-=15;
- RefreshVertex;
- ObjRender_SetAlpha(objText, alpha);
- ObjRender_SetAlpha(objScore, alpha);
- yield;
- }
- ObjSpriteList2D_ClearVertexCount(objScore);
- Obj_Delete(objText);
- Obj_Delete(objScore);
- task RefreshVertex{
- ObjSpriteList2D_ClearVertexCount(objScore);
- ascent(iObj in 0 .. count){
- let num = listNum[iObj];
- ObjRender_SetX(objScore, 182 + iObj * 20);
- ObjSpriteList2D_SetSourceRect(objScore, num * 16, 0, (num + 1) * 16, 20);
- ObjSpriteList2D_SetDestRect(objScore, 0, 0, 20, 25);
- ObjSpriteList2D_AddVertex(objScore);
- }
- }else{yield;}
- }
- task TFailSpell{
- let path = GetCurrentScriptDirectory ~ "img/frame2.png";
- let objText = ObjPrim_Create(OBJ_SPRITE_2D);
- ObjPrim_SetTexture(objText, path);
- ObjSprite2D_SetSourceRect(objText, 0, 386, 263, 417);
- ObjSprite2D_SetDestRect(objText, -64, -16, 200, 16);
- Obj_SetRenderPriority(objText, 0.8);
- ObjRender_SetX(objText, GetStgFrameWidth/2-64);
- ObjRender_SetY(objText, 128);
- loop(90){
- yield;
- }
- let mov = 2;
- ascent(i in 0..30){
- mov+=mov/9+0.13;
- ObjRender_SetAlpha(objText, 255-255/30*i);
- ObjRender_SetY(objText, 128+mov);
- ObjRender_SetAngleZ(objText, max(0, i^1.01-1.35));
- yield;
- }
- Obj_Delete(objText);
- loop(230){yield}
- CloseScript(GetOwnScriptID);
- }
- //----------------------------------------------------
- //FPS表示
- //----------------------------------------------------
- task TCurrentFps()
- {
- let objText = ObjText_Create();
- ObjText_SetFontSize(objText, 15);
- ObjText_SetFontType(objText, "Dark Crystal");
- ObjText_SetFontBold(objText, true);
- ObjText_SetFontColorTop(objText, 255, 255, 255);
- ObjText_SetFontColorBottom(objText, 0, 0, 0);
- ObjText_SetFontBorderType(objText, BORDER_FULL);
- ObjText_SetFontBorderColor(objText,0,0,0);
- ObjText_SetFontBorderWidth(objText, 2);
- ObjText_SetHorizontalAlignment(objText, ALIGNMENT_RIGHT);
- ObjText_SetMaxWidth(objText, GetScreenWidth() - 8);
- Obj_SetRenderPriority(objText, 1.0);
- ObjRender_SetX(objText, 0);
- ObjRender_SetY(objText, GetScreenHeight() - 20);
- loop{
- ObjRender_SetAlpha(objText,HUDalpha);
- yield;
- let fps = GetCurrentFps();
- let text = vtos("1.2f", fps);
- ObjText_SetText(objText, text);
- yield;
- }
- }
- task TReplayFps()
- {
- if(!IsReplay()){return;}
- let objText = ObjText_Create();
- ObjText_SetFontSize(objText, 12);
- ObjText_SetFontBold(objText, true);
- ObjText_SetFontColorTop(objText, 128, 128, 255);
- ObjText_SetFontColorBottom(objText, 64, 64, 255);
- ObjText_SetFontBorderType(objText, BORDER_FULL);
- ObjText_SetFontBorderColor(objText,255, 255, 255);
- ObjText_SetFontBorderWidth(objText, 1);
- Obj_SetRenderPriority(objText, 1.0);
- let px = GetStgFrameLeft() + GetStgFrameWidth() - 18;
- let py = GetStgFrameTop() + GetScreenHeight() - 14;
- ObjRender_SetX(objText, px);
- ObjRender_SetY(objText, py);
- loop
- {
- let fps = GetReplayFps();
- let text = vtos("02d", fps);
- ObjText_SetText(objText, text);
- yield;
- }
- }
- //----------------------------------------------------
- //ユーティリティ
- //----------------------------------------------------
- function DigitToArray(let digit,let count)
- {
- let res = [];
- digit = truncate(digit);
- loop
- {
- let tnum = truncate(digit % 10);
- digit /= 10;
- res = [tnum] ~ res;
- if(truncate(digit) == 0){break;}
- }
- loop(max(0, count - length(res)))
- {
- res = [0] ~ res;
- }
- return res;
- }
- function GetNumSize(value){
- let numsize = 1;
- if(value>=10&&value<100){numsize = 2;}
- if(value>=100&&value<1000){numsize = 3;}
- if(value>=1000&&value<10000){numsize = 4;}
- if(value>=10000&&value<100000){numsize = 5;}
- if(value>=100000&&value<1000000){numsize = 6;}
- if(value>=1000000&&value<10000000){numsize = 7;}
- if(value>=10000000&&value<100000000){numsize = 8;}
- if(value>=100000000&&value<1000000000){numsize = 9;}
- if(value>=1000000000&&value<10000000000){numsize = 10;}
- if(value>=10000000000&&value<100000000000){numsize = 11;}
- if(value>=1000000000000){numsize = 12;}
- return numsize;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement