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