#include "global.h" #include "quake.h" #include "terminal.h" #include "overlays/actors/ovl_En_Sw/z_en_sw.h" static s16 sDisableAttention = false; static s16 sUnused = -1; static s32 sPrevFrameCs1100 = -4096; static CutsceneCameraPoint D_8012013C[14] = { { CS_CAM_CONTINUE, 25, 40, 70.79991f, { -1814, 533, -1297 } }, { CS_CAM_CONTINUE, 20, 40, 70.99991f, { -1805, 434, -1293 } }, { CS_CAM_CONTINUE, 10, 30, 60.0f, { -1794, 323, -1280 } }, { CS_CAM_CONTINUE, 5, 25, 60.0f, { -1817, 218, -1270 } }, { CS_CAM_CONTINUE, 3, 20, 60.0f, { -1836, 168, -1243 } }, { CS_CAM_CONTINUE, 0, 20, 60.0f, { -1905, 115, -1193 } }, { CS_CAM_CONTINUE, 0, 30, 55.0f, { -1969, 58, -1212 } }, { CS_CAM_CONTINUE, 0, 30, 55.0f, { -1969, 31, -1164 } }, { CS_CAM_CONTINUE, 0, 30, 60.0f, { -1969, 54, -1209 } }, { CS_CAM_CONTINUE, 0, 30, 60.0f, { -1973, 35, -1206 } }, { CS_CAM_CONTINUE, 0, 50, 60.0f, { -1974, 12, -1179 } }, { CS_CAM_CONTINUE, 0, 50, 60.0f, { -1974, 12, -1179 } }, { CS_CAM_STOP, 0, 50, 60.0f, { -1974, 12, -1179 } }, { CS_CAM_STOP, 0, 30, 60.0f, { -1974, 12, -1179 } }, }; static CutsceneCameraPoint D_8012021C[14] = { { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1751, 604, -1233 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1752, 516, -1233 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1751, 417, -1233 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1767, 306, -1219 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1776, 257, -1205 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1881, 147, -1149 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1969, 72, -1077 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1969, 7, -1048 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1969, 1, -1030 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -1987, 17, -1076 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -2007, 10, -1004 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { -2007, 10, -1004 } }, { CS_CAM_STOP, 0, 0, 60.0f, { -2007, 10, -1004 } }, { CS_CAM_STOP, 0, 0, 60.0f, { -2007, 10, -1004 } }, }; static s16 D_801202FC = 13; static s16 D_80120300 = 210; static s16 D_80120304 = 0; static CutsceneCameraPoint sCrawlspaceAtPoints[9] = { { CS_CAM_CONTINUE, 0, 10, 40.0f, { 0, 4, 0 } }, { CS_CAM_CONTINUE, 0, 10, 40.000004f, { 0, 4, 0 } }, { CS_CAM_CONTINUE, 0, 10, 50.0f, { 0, 9, 0 } }, { CS_CAM_CONTINUE, 0, 12, 55.0f, { 0, 12, 0 } }, { CS_CAM_CONTINUE, 0, 15, 61.0f, { 0, 18, 0 } }, { CS_CAM_CONTINUE, 0, 20, 65.0f, { 0, 29, 0 } }, { CS_CAM_CONTINUE, 0, 40, 60.0f, { 0, 34, 0 } }, { CS_CAM_STOP, 0, 40, 60.0f, { 0, 34, 0 } }, { CS_CAM_STOP, 0, 10, 60.0f, { 0, 34, 0 } }, }; static CutsceneCameraPoint sCrawlspaceForwardsEyePoints[9] = { { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 9, 45 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 8, 50 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 17, 58 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 21, 78 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 46, 109 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 58, 118 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 63, 119 } }, { CS_CAM_STOP, 0, 0, 60.0f, { 0, 62, 119 } }, { CS_CAM_STOP, 0, 0, 60.0f, { 0, 62, 119 } }, }; static s16 sCrawlspaceUnused = 9; static s16 sCrawlspaceTimer = 90; static s16 sCrawlspaceActionParam = 1; static CutsceneCameraPoint sCrawlspaceBackwardsEyePoints[10] = { { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 9, -45 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 9, -45 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 8, -50 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 17, -58 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 21, -78 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 46, -109 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 58, -118 } }, { CS_CAM_CONTINUE, 0, 0, 60.0f, { 0, 63, -119 } }, { CS_CAM_STOP, 0, 0, 60.0f, { 0, 62, -119 } }, { CS_CAM_STOP, 0, 0, 60.0f, { 0, 62, -119 } }, }; static CutsceneCameraPoint D_801204D4[14] = { { CS_CAM_CONTINUE, -15, 40, 80.600006f, { -60, 332, 183 } }, { CS_CAM_CONTINUE, -22, 30, 80.600006f, { -60, 332, 183 } }, { CS_CAM_CONTINUE, -20, 38, 80.600006f, { -118, 344, 41 } }, { CS_CAM_CONTINUE, -18, 32, 80.600006f, { -80, 251, -8 } }, { CS_CAM_CONTINUE, -12, 28, 80.600006f, { -64, 259, -28 } }, { CS_CAM_CONTINUE, -8, 22, 80.600006f, { -79, 200, -342 } }, { CS_CAM_CONTINUE, -5, 10, 65.80005f, { -110, 140, -549 } }, { CS_CAM_CONTINUE, -2, 8, 65.2f, { -74, 109, -507 } }, { CS_CAM_CONTINUE, 0, 10, 65.80002f, { -32, 78, -680 } }, { CS_CAM_CONTINUE, 0, 20, 85.199936f, { 25, 127, -950 } }, { CS_CAM_CONTINUE, 0, 30, 85.199936f, { 25, 127, -950 } }, { CS_CAM_CONTINUE, 0, 40, 85.199936f, { 25, 127, -950 } }, { CS_CAM_STOP, 6, 30, 85.199936f, { 25, 127, -950 } }, { CS_CAM_STOP, 0, 30, 85.199936f, { 25, 127, -950 } }, }; static CutsceneCameraPoint D_801205B4[14] = { { CS_CAM_CONTINUE, 0, 0, 60.0f, { -225, 785, -242 } }, { CS_CAM_CONTINUE, -21, 0, 80.600006f, { -245, 784, -242 } }, { CS_CAM_CONTINUE, -21, 0, 80.600006f, { -288, 485, -379 } }, { CS_CAM_CONTINUE, -21, 0, 80.600006f, { -250, 244, -442 } }, { CS_CAM_CONTINUE, -21, 0, 80.600006f, { -163, 21, -415 } }, { CS_CAM_CONTINUE, -21, 0, 80.600006f, { -98, 86, -520 } }, { CS_CAM_CONTINUE, -21, 0, 80.600006f, { -86, 31, -816 } }, { CS_CAM_CONTINUE, -21, 0, 80.600006f, { -74, 18, -931 } }, { CS_CAM_CONTINUE, 1, 0, 80.600006f, { -91, 80, -1220 } }, { CS_CAM_CONTINUE, 0, 0, 85.199936f, { 14, 153, -1340 } }, { CS_CAM_CONTINUE, 0, 0, 85.199936f, { 28, 125, -1340 } }, { CS_CAM_CONTINUE, 0, 0, 85.199936f, { 48, 124, -1340 } }, { CS_CAM_STOP, 0, 0, 85.199936f, { 48, 124, -1502 } }, { CS_CAM_STOP, 0, 0, 85.199936f, { 48, 124, -1262 } }, }; static s16 D_80120694 = 14; static s16 D_80120698 = 190; static s16 D_8012069C = 8; static CutsceneCameraPoint D_801206A0[12] = { { CS_CAM_CONTINUE, 6, 20, 80.0f, { -96, 40, 170 } }, { CS_CAM_CONTINUE, 6, 20, 80.0f, { -96, 40, 170 } }, { CS_CAM_CONTINUE, 6, 20, 70.0f, { -70, 35, 150 } }, { CS_CAM_CONTINUE, 5, 10, 60.0f, { -57, 34, 133 } }, { CS_CAM_CONTINUE, 4, 25, 65.0f, { -22, 32, 110 } }, { CS_CAM_CONTINUE, 3, 12, 60.0f, { -9, 33, 98 } }, { CS_CAM_CONTINUE, 3, 5, 65.0f, { -3, 29, 87 } }, { CS_CAM_CONTINUE, 2, 10, 65.0f, { -1, 15, 84 } }, { CS_CAM_CONTINUE, 1, 200, 65.0f, { 0, 17, 82 } }, { CS_CAM_CONTINUE, 1, 500, 65.0f, { 0, 18, 82 } }, { CS_CAM_STOP, 8, 50, 65.0f, { 0, 18, 82 } }, { CS_CAM_STOP, 11, 60, 65.0f, { 0, 18, 82 } }, }; static CutsceneCameraPoint D_80120760[12] = { { CS_CAM_CONTINUE, 6, 0, 80.0f, { -50, 10, 180 } }, { CS_CAM_CONTINUE, 6, 0, 80.0f, { -50, 20, 180 } }, { CS_CAM_CONTINUE, 6, 0, 70.0f, { -40, 30, 177 } }, { CS_CAM_CONTINUE, 5, 0, 65.0f, { 0, 35, 172 } }, { CS_CAM_CONTINUE, 4, 0, 65.0f, { 34, 35, 162 } }, { CS_CAM_CONTINUE, 3, 0, 65.0f, { 61, 32, 147 } }, { CS_CAM_CONTINUE, 3, 0, 65.0f, { 72, 30, 128 } }, { CS_CAM_CONTINUE, 2, 0, 65.0f, { 74, 20, 125 } }, { CS_CAM_CONTINUE, 1, 0, 65.0f, { 75, 18, 123 } }, { CS_CAM_CONTINUE, 1, 0, 65.0f, { 75, 10, 123 } }, { CS_CAM_STOP, 0, 0, 65.0f, { 75, 10, 122 } }, { CS_CAM_STOP, 0, 0, 65.0f, { 75, 10, 122 } }, }; static CutsceneCameraPoint D_80120820[12] = { { CS_CAM_CONTINUE, 6, 0, 80.0f, { 85, 5, 170 } }, { CS_CAM_CONTINUE, 6, 0, 80.0f, { 85, 10, 170 } }, { CS_CAM_CONTINUE, 6, 0, 70.0f, { 80, 20, 167 } }, { CS_CAM_CONTINUE, 5, 0, 65.0f, { 74, 25, 165 } }, { CS_CAM_CONTINUE, 4, 0, 65.0f, { 63, 30, 162 } }, { CS_CAM_CONTINUE, 3, 0, 65.0f, { 66, 34, 147 } }, { CS_CAM_CONTINUE, 3, 0, 65.0f, { 72, 34, 128 } }, { CS_CAM_CONTINUE, 2, 0, 65.0f, { 74, 20, 125 } }, { CS_CAM_CONTINUE, 1, 0, 65.0f, { 75, 18, 123 } }, { CS_CAM_CONTINUE, 1, 0, 65.0f, { 75, 10, 123 } }, { CS_CAM_STOP, 0, 0, 65.0f, { 75, 10, 122 } }, { CS_CAM_STOP, 0, 0, 65.0f, { 75, 10, 122 } }, }; static s16 D_801208E0 = 12; static s16 D_801208E4 = 90; static s16 D_801208E8 = 8; Vec3f OnePointCutscene_AddVecGeoToVec3f(Vec3f* a, VecGeo* geo) { Vec3f sum; Vec3f b = OLib_VecGeoToVec3f(geo); sum.x = a->x + b.x; sum.y = a->y + b.y; sum.z = a->z + b.z; return sum; } /** * @see Math_Vec3f_Yaw */ s16 OnePointCutscene_Vec3fYaw(Vec3f* origin, Vec3f* point) { return CAM_DEG_TO_BINANG(RAD_TO_DEG(Math_FAtan2F(point->x - origin->x, point->z - origin->z))); } void OnePointCutscene_Vec3sToVec3f(Vec3f* src, Vec3s* dst) { dst->x = src->x; dst->y = src->y; dst->z = src->z; } s32 OnePointCutscene_BgCheckLineTest(CollisionContext* colCtx, Vec3f* vec1, Vec3f* vec2) { Vec3f posResult; s32 bgId; CollisionPoly* outPoly = NULL; return BgCheck_CameraLineTest1(colCtx, vec1, vec2, &posResult, &outPoly, true, true, true, false, &bgId); } f32 OnePointCutscene_RaycastDown(CollisionContext* colCtx, Vec3f* pos) { CollisionPoly* outPoly; s32 bgId; return BgCheck_EntityRaycastDown3(colCtx, &outPoly, &bgId, pos); } void OnePointCutscene_SetCsCamPoints(Camera* camera, s16 actionParameters, s16 initTimer, CutsceneCameraPoint* atPoints, CutsceneCameraPoint* eyePoints) { OnePointCamData* onePointCamData = &camera->paramData.demo9.onePointCamData; onePointCamData->atPoints = atPoints; onePointCamData->eyePoints = eyePoints; onePointCamData->actionParameters = actionParameters; onePointCamData->initTimer = initTimer; } s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* actor, s16 timer) { Camera* subCam = play->cameraPtrs[subCamId]; Camera* childCam = play->cameraPtrs[subCam->childCamId]; Camera* mainCam = play->cameraPtrs[CAM_ID_MAIN]; Player* player = mainCam->player; VecGeo spD0; s32 i; Vec3f spC0; Vec3f spB4; PosRot spA0; PosRot sp8C; f32 tempRand; OnePointCsInfo* csInfo = &subCam->paramData.uniq9.csInfo; switch (csId) { case 1020: { // smoothly return to main camera from current view static OnePointCsFull D_801208EC[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_8), 0x0101, 1, 0, 60.0f, 1.0f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 1, 0, 60.0f, 1.0f, { 0.0f, -10.0f, 0.0f }, { 0.0f, 0.0f, 150.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; if (timer < 20) { timer = 20; } D_801208EC[0].atTargetInit = play->view.at; D_801208EC[0].eyeTargetInit = play->view.eye; D_801208EC[0].fovTargetInit = play->view.fovy; D_801208EC[1].atTargetInit = mainCam->at; D_801208EC[1].eyeTargetInit = mainCam->eye; D_801208EC[1].fovTargetInit = mainCam->fov; D_801208EC[1].timerInit = timer - 1; subCam->timer = timer + 1; D_801208EC[1].lerpStepScale = 1.0f / (0.5f * timer); csInfo->keyFrames = D_801208EC; csInfo->keyFrameCount = ARRAY_COUNT(D_801208EC); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 1030: { static OnePointCsFull D_80120964[2] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 1, 0, 60.0f, 1.0f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0xA121, 1, 0, 75.0f, 0.6f, { 0.0f, -10.0f, 0.0f }, { 0.0f, 0.0f, 150.0f }, }, }; D_80120964[0].atTargetInit = play->view.at; D_80120964[0].eyeTargetInit = play->view.eye; D_80120964[0].fovTargetInit = play->view.fovy; spD0 = OLib_Vec3fDiffToVecGeo(&mainCam->at, &mainCam->eye); D_80120964[1].eyeTargetInit.y = CAM_BINANG_TO_DEG(spD0.yaw); D_80120964[1].timerInit = timer - 1; csInfo->keyFrames = D_80120964; csInfo->keyFrameCount = ARRAY_COUNT(D_80120964); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 5000: { static OnePointCsFull D_801209B4[4] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_8), 0x0101, 1, 0, 60.0f, 0.9f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x0100, 29, 0, 45.0f, 0.1f, { 0.0f, -10.0f, 0.0f }, { 0.0f, 0.0f, 150.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 10, 0, 60.0f, 0.2f, { 0.0f, -10.0f, 0.0f }, { 0.0f, 0.0f, 150.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; D_801209B4[0].atTargetInit = D_801209B4[1].atTargetInit = play->view.at; D_801209B4[0].eyeTargetInit = play->view.eye; D_801209B4[0].fovTargetInit = D_801209B4[2].fovTargetInit = play->view.fovy; spD0 = OLib_Vec3fDiffToVecGeo(&actor->focus.pos, &mainCam->at); spD0.r = mainCam->dist; D_801209B4[1].eyeTargetInit = OnePointCutscene_AddVecGeoToVec3f(&D_801209B4[1].atTargetInit, &spD0); D_801209B4[1].atTargetInit.y += 20.0f; csInfo->keyFrames = D_801209B4; csInfo->keyFrameCount = ARRAY_COUNT(D_801209B4); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 5010: // attention cutscene // Setup keyFrames in `Camera_Demo5` Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_ATTENTION); Play_SetCameraAtEye(play, subCamId, &mainCam->at, &mainCam->eye); subCam->roll = 0; break; case 9500: { static OnePointCsFull D_80120A54[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x2525, 1, 0, 75.0f, 0.1f, { 0.0f, 20.0f, -10.0f }, { 0.0f, 10.0f, -40.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 9, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0022, 5000, 0, 75.0f, 0.005f, { 0.0f, 0.0f, -10.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80120A54; csInfo->keyFrameCount = ARRAY_COUNT(D_80120A54); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 2260: { static OnePointCsFull D_80120ACC[5] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0442, 10, 0, 40.0f, 1.0f, { -10.0f, 45.0f, 20.0f }, { 20.0f, 30.0f, 160.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_21, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 40.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x0442, 10, 0, 40.0f, 1.0f, { -10.0f, 45.0f, 20.0f }, { 20.0f, 30.0f, 160.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_21, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 40.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; D_80120ACC[0].atTargetInit.x = D_80120ACC[2].atTargetInit.x = ((mainCam->play->state.frames & 1) ? -10.0f : 10.0f) + (Rand_ZeroOne() * 8.0f); D_80120ACC[0].eyeTargetInit.x = D_80120ACC[2].eyeTargetInit.x = ((mainCam->play->state.frames & 1) ? 20.0f : -20.0f) + (Rand_ZeroOne() * 5.0f); csInfo->keyFrames = D_80120ACC; csInfo->keyFrameCount = ARRAY_COUNT(D_80120ACC); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 2270: { static OnePointCsFull D_80120B94[11] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x2142, 1, 0, 40.0f, 1.0f, { 20.0f, 40.0f, 20.0f }, { -20.0f, 0.0f, -30.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0404, 19, 5, 70.0f, 0.01f, { 0.0f, 30.0f, 20.0f }, { 120.0f, 60.0f, 120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0404, 20, 0, 60.0f, 0.01f, { 0.0f, 20.0f, 20.0f }, { 120.0f, 60.0f, 120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0404, 40, -10, 50.0f, 0.02f, { 0.0f, 30.0f, 20.0f }, { 120.0f, 60.0f, 120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x4141, 1, 0, 40.0f, 1.0f, { 0.0f, -10.0f, 20.0f }, { 0.0f, 20.0f, 50.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0404, 19, 0, 70.0f, 0.01f, { 0.0f, 30.0f, 20.0f }, { 120.0f, 60.0f, 120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0404, 40, 10, 50.0f, 0.01f, { 0.0f, 20.0f, 20.0f }, { 120.0f, 60.0f, 120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0404, 70, 0, 60.0f, 0.01f, { 0.0f, 30.0f, 20.0f }, { 120.0f, 60.0f, 120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x4141, 1, 0, 50.0f, 1.0f, { 0.0f, -10.0f, 0.0f }, { 80.0f, 20.0f, 60.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_13, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x4141, 150, 0, 50.0f, 1.0f, { 0.0f, 5.0f, 0.0f }, { 0.0f, 4.0f, 120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_24, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 50.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80120B94; csInfo->keyFrameCount = ARRAY_COUNT(D_80120B94); for (i = 0; i < csInfo->keyFrameCount - 3; i++) { if (D_80120B94[i].actionFlags != ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true)) { D_80120B94[i].atTargetInit.x = Rand_ZeroOne() * 5.0f; D_80120B94[i].atTargetInit.z = (Rand_ZeroOne() * 30.0f) + 10.0f; D_80120B94[i].eyeTargetInit.x = (Rand_ZeroOne() * 100.0f) + 20.0f; D_80120B94[i].eyeTargetInit.z = (Rand_ZeroOne() * 80.0f) + 50.0f; } } D_80120B94[subCamId - 1].eyeTargetInit.y = ((mainCam->play->state.frames & 1) ? 3.0f : -3.0f) + Rand_ZeroOne(); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); i = Quake_Request(subCam, QUAKE_TYPE_5); Quake_SetSpeed(i, 400); Quake_SetPerturbations(i, 4, 5, 40, 0x3C); Quake_SetDuration(i, 1600); break; } case 2280: { static OnePointCsFull D_80120D4C[7] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x2142, 1, 0, 40.0f, 1.0f, { 20.0f, 40.0f, 20.0f }, { -20.0f, 0.0f, -30.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0404, 19, 5, 70.0f, 0.01f, { 0.0f, 30.0f, 20.0f }, { 120.0f, 60.0f, 120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0404, 20, 0, 60.0f, 0.01f, { 0.0f, 20.0f, 20.0f }, { 120.0f, 60.0f, 120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0404, 40, -10, 50.0f, 0.02f, { 0.0f, 30.0f, 20.0f }, { 120.0f, 60.0f, 120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x4141, 1, 0, 50.0f, 1.0f, { 0.0f, -10.0f, 0.0f }, { 80.0f, 20.0f, 60.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_13, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x4141, 150, 0, 50.0f, 1.0f, { 0.0f, 5.0f, 0.0f }, { 0.0f, 4.0f, 120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_24, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 50.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80120D4C; csInfo->keyFrameCount = ARRAY_COUNT(D_80120D4C); for (i = 0; i < csInfo->keyFrameCount - 3; i++) { if (D_80120D4C[i].actionFlags != ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true)) { D_80120D4C[i].atTargetInit.x = Rand_ZeroOne() * 20.0f; D_80120D4C[i].atTargetInit.z = (Rand_ZeroOne() * 40.0f) + 10.0f; D_80120D4C[i].eyeTargetInit.x = (Rand_ZeroOne() * 40.0f) + 60.0f; D_80120D4C[i].eyeTargetInit.z = (Rand_ZeroOne() * 40.0f) + 80.0f; } } D_80120D4C[subCamId - 1].eyeTargetInit.y = ((mainCam->play->state.frames & 1) ? 3.0f : -3.0f) + Rand_ZeroOne(); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); i = Quake_Request(subCam, QUAKE_TYPE_5); Quake_SetSpeed(i, 400); Quake_SetPerturbations(i, 2, 3, 200, 0x32); Quake_SetDuration(i, 9999); break; } case 2220: { static OnePointCsFull D_80120E64[8] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, true, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x2142, 20, 0, 50.0f, 1.0f, { -25.0f, 20.0f, 0.0f }, { 0.0f, 0.0f, 5.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, true, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 80, 0, 50.0f, 1.0f, { -25.0f, 20.0f, 0.0f }, { 0.0f, 0.0f, 5.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, true, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 8, 0, 60.0f, 0.1f, { -25.0f, 20.0f, 0.0f }, { 0.0f, 0.0f, 5.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, true, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 15, 4, 55.0f, 0.05f, { -50.0f, 20.0f, 20.0f }, { 0.0f, 0.0f, 5.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, true, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 15, -4, 50.0f, 0.05f, { 0.0f, 20.0f, 0.0f }, { 0.0f, 0.0f, 5.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, true, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 15, 0, 50.0f, 0.1f, { -25.0f, 20.0f, 0.0f }, { 0.0f, 0.0f, 5.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, true, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 40, 0, 50.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80120E64; csInfo->keyFrameCount = ARRAY_COUNT(D_80120E64); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); i = Quake_Request(subCam, QUAKE_TYPE_5); Quake_SetSpeed(i, 400); Quake_SetPerturbations(i, 2, 2, 50, 0); Quake_SetDuration(i, 280); break; } case 2230: { static OnePointCsFull D_80120FA4[6] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x2143, 30, 0, 70.0f, 0.4f, { 0.0f, 40.0f, 50.0f }, { 30.0f, 10.0f, -50.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_21, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 50.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x2222, 10, 0, 42.0f, 1.0f, { 0.0f, 40.0f, 0.0f }, { 0.0f, 85.0f, 45.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 50.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x2121, 10, 0, 60.0f, 1.0f, { 0.0f, 10.0f, 0.0f }, { 30.0f, 10.0f, -80.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; if (player->actor.world.pos.z < 1000.0f) { D_80120FA4[0].eyeTargetInit.x = -D_80120FA4[0].eyeTargetInit.x; D_80120FA4[2].eyeTargetInit.x = -D_80120FA4[2].eyeTargetInit.x; } csInfo->keyFrames = D_80120FA4; csInfo->keyFrameCount = ARRAY_COUNT(D_80120FA4); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 2340: { static OnePointCsFull D_80121094[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_8), 0x2101, 20, 0, 50.0f, 1.0f, { 3840.0f, 10.0f, 950.0f }, { 0.0f, 0.0f, 5.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x2101, 50, 0, 55.0f, 1.0f, { 4000.0f, 50.0f, 1000.0f }, { 0.0f, 0.0f, 5.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80121094; csInfo->keyFrameCount = ARRAY_COUNT(D_80121094); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); i = Quake_Request(subCam, QUAKE_TYPE_5); Quake_SetSpeed(i, 400); Quake_SetPerturbations(i, 2, 2, 50, 0); Quake_SetDuration(i, 60); break; } case 2350: { static OnePointCsFull D_8012110C[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, true, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_5), 0x2142, 1, 0, 50.0f, 1.0f, { -25.0f, 20.0f, 0.0f }, { 0.0f, 0.0f, 5.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, true, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x2121, 10, 0, 60.0f, 1.0f, { 0.0f, 10.0f, 0.0f }, { 0.0f, 10.0f, -80.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_8012110C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012110C); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 2200: { static OnePointCsFull D_80121184[2] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x0101, 40, 0, -1.0f, 0.1f, { 0.0f, 10.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; static OnePointCsFull D_801211D4[2] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_8), 0x0101, 50, 0, 60.0f, 1.0f, { 0.0f, 10.0f, 0.0f }, { -10.0f, 85.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; s16 sp82; s16 sp80; s16 sp7E; s16 sp7C; Actor_GetScreenPos(play, &player->actor, &sp82, &sp7E); Actor_GetScreenPos(play, actor, &sp80, &sp7C); if ((sp82 > 0) && (sp82 < 320) && (sp7E > 0) && (sp7E < 240) && (sp80 > 0) && (sp80 < 320) && (sp7C > 0) && (sp7C < 240) && !OnePointCutscene_BgCheckLineTest(&play->colCtx, &actor->focus.pos, &player->actor.focus.pos)) { D_80121184[0].atTargetInit.x = (play->view.at.x + actor->focus.pos.x) * 0.5f; D_80121184[0].atTargetInit.y = (play->view.at.y + actor->focus.pos.y) * 0.5f; D_80121184[0].atTargetInit.z = (play->view.at.z + actor->focus.pos.z) * 0.5f; D_80121184[0].eyeTargetInit = play->view.eye; D_80121184[0].eyeTargetInit.y = player->actor.focus.pos.y + 20.0f; D_80121184[0].fovTargetInit = mainCam->fov * 0.75f; csInfo->keyFrames = D_80121184; csInfo->keyFrameCount = ARRAY_COUNT(D_80121184); } else { D_801211D4[0].atTargetInit.x = actor->focus.pos.x; D_801211D4[0].atTargetInit.y = actor->focus.pos.y - 5.0f; D_801211D4[0].atTargetInit.z = actor->focus.pos.z; spC0 = ((EnSw*)actor)->unk_364; PRINTF("%s(%d): xyz_t: %s (%f %f %f)\n", "../z_onepointdemo.c", 1671, "&cp", spC0.x, spC0.y, spC0.z); D_801211D4[0].eyeTargetInit.x = (actor->focus.pos.x + (120.0f * spC0.x)) - (Rand_ZeroOne() * 20.0f); D_801211D4[0].eyeTargetInit.y = actor->focus.pos.y + (120.0f * spC0.y) + 20.0f; D_801211D4[0].eyeTargetInit.z = (actor->focus.pos.z + (120.0f * spC0.z)) - (Rand_ZeroOne() * 20.0f); csInfo->keyFrames = D_801211D4; csInfo->keyFrameCount = ARRAY_COUNT(D_801211D4); } Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STAT_UNK3); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 2290: { static OnePointCsFull D_80121224[6] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x4141, 2, 0, 60.0f, 1.0f, { 0.0f, 5.0f, 10.0f }, { 0.0f, 0.0f, 45.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x4141, 18, 0, 45.0f, 1.0f, { 0.0f, 5.0f, 10.0f }, { 0.0f, -10.0f, 50.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_52), 0x4104, 80, 0, 70.0f, 0.05f, { 0.0f, 0.0f, 60.0f }, { 0.0f, 250.0f, -50.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x0000, 20, 0, 70.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0421, 60, 0, 50.0f, 1.0f, { 0.0f, -30.0f, 20.0f }, { 10.0f, 5.0f, -50.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; Actor* rideActor = player->rideActor; Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); if (rideActor != NULL) { rideActor->freezeTimer = 180; } csInfo->keyFrames = D_80121224; csInfo->keyFrameCount = ARRAY_COUNT(D_80121224); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 5120: { static OnePointCsFull D_80121314[1] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_8), 0x4141, 1000, 0, 75.0f, 0.6f, { 0.0f, 0.0f, 10.0f }, { 0.0f, 0.0f, 100.0f }, }, }; Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); csInfo->keyFrames = D_80121314; csInfo->keyFrameCount = ARRAY_COUNT(D_80121314); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4510: { static OnePointCsFull D_8012133C[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x0141, 40, 0, 75.0f, 1.0f, { 0.0f, 60.0f, 0.0f }, { 0.0f, 0.0f, 100.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x2121, 20, 0, 60.0f, 0.2f, { 0.0f, -10.0f, -10.0f }, { 0.0f, 10.0f, -100.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; D_8012133C[0].eyeTargetInit = actor->world.pos; D_8012133C[0].eyeTargetInit.y = player->actor.world.pos.y + 40.0f; Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); csInfo->keyFrames = D_8012133C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012133C); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4500: spA0 = Actor_GetFocus(actor); spC0 = spA0.pos; spC0.y = OnePointCutscene_RaycastDown(&play->colCtx, &spC0) + 40.0f; spD0.r = 150.0f; spD0.yaw = spA0.rot.y; spD0.pitch = 0x3E8; spB4 = OnePointCutscene_AddVecGeoToVec3f(&spC0, &spD0); Play_RequestCameraSetting(play, subCamId, CAM_SET_FREE2); Play_SetCameraAtEye(play, subCamId, &spC0, &spB4); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); subCam->roll = 0; subCam->fov = 50.0f; if (subCam->childCamId != CAM_ID_MAIN) { OnePointCutscene_EndCutscene(play, subCam->childCamId); } break; case 2210: { static OnePointCsFull D_801213B4[5] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_8), 0xC2C2, 40, 0, 70.0f, 1.0f, { 80.0f, 0.0f, 20.0f }, { 20.0f, 0.0f, 80.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0xC2C2, 120, 0, 70.0f, 0.1f, { 80.0f, 0.0f, 20.0f }, { 20.0f, 0.0f, 80.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_83), 0xC2C2, 30, 0, 50.0f, 1.0f, { 60.0f, 0.0f, 20.0f }, { 60.0f, 0.0f, 60.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_69), 0x4222, 30, 0, 60.0f, 0.1f, { 0.0f, 50.0f, 0.0f }, { 5.0f, 30.0f, 220.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 75.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; spD0 = OLib_Vec3fDiffToVecGeo(&player->actor.world.pos, &actor->world.pos); D_801213B4[0].eyeTargetInit.y = D_801213B4[1].eyeTargetInit.y = D_801213B4[2].eyeTargetInit.y = D_801213B4[2].atTargetInit.y = CAM_BINANG_TO_DEG(spD0.yaw); if (Rand_ZeroOne() < 0.0f) { D_801213B4[3].eyeTargetInit.x = -D_801213B4[3].eyeTargetInit.x; } Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); csInfo->keyFrames = D_801213B4; csInfo->keyFrameCount = ARRAY_COUNT(D_801213B4); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 1010: Play_RequestCameraSetting(play, subCamId, CAM_SET_FREE2); Play_SetCameraAtEye(play, subCamId, &childCam->at, &childCam->eye); Play_SetCameraFov(play, subCamId, childCam->fov); Play_SetCameraRoll(play, subCamId, childCam->roll); break; case 9601: // Leaving a crawlspace forwards Play_RequestCameraSetting(play, subCamId, CAM_SET_CS_3); Play_RequestCameraSetting(play, CAM_ID_MAIN, mainCam->prevSetting); OnePointCutscene_SetCsCamPoints(subCam, sCrawlspaceActionParam | 0x1000, sCrawlspaceTimer, sCrawlspaceAtPoints, sCrawlspaceForwardsEyePoints); break; case 9602: // Leaving a crawlspace backwards Play_RequestCameraSetting(play, subCamId, CAM_SET_CS_3); Play_RequestCameraSetting(play, CAM_ID_MAIN, mainCam->prevSetting); OnePointCutscene_SetCsCamPoints(subCam, sCrawlspaceActionParam | 0x1000, sCrawlspaceTimer, sCrawlspaceAtPoints, sCrawlspaceBackwardsEyePoints); break; case 4175: { static OnePointCsFull D_8012147C[4] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x0101, 40, 0, 45.0f, 1.0f, { 820.0f, 1600.0f, -400.0f }, { 777.0f, 1577.0f, -577.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x0142, 1, 0, 50.0f, 1.0f, { -50.0f, 80.0f, 0.0f }, { 900.0f, 1575.0f, 850.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_8), 0x0142, 89, -4, 80.0f, 0.07f, { -50.0f, 70.0f, 0.0f }, { 975.0f, 1575.0f, 770.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_8012147C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012147C); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4180: spC0.x = -1881.0f; spC0.y = 766.0f; spC0.z = -330.0f; spB4.x = -1979.0f; spB4.y = 703.0f; spB4.z = -269.0f; Play_RequestCameraSetting(play, subCamId, CAM_SET_FREE2); Play_SetCameraAtEye(play, subCamId, &spC0, &spB4); subCam->roll = 6; subCam->fov = 75.0f; Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); break; case 3040: { static OnePointCsFull D_8012151C[2] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x0101, 29, 0, 60.0f, 1.0f, { -700.0f, 875.0f, -100.0f }, { -550.0f, 920.0f, -150.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); D_8012151C[0].timerInit = timer - 1; csInfo->keyFrames = D_8012151C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012151C); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 3020: { static OnePointCsFull D_8012156C[2] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_77), 0x4242, 1, 0, 65.0f, 1.0f, { 60.0f, 30.0f, 0.0f }, { 50.0f, 20.0f, 150.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, -1, 0, 65.0f, 1.0f, { -50.0f, 60.0f, 0.0f }, { -60.0f, 40.0f, 150.0f }, }, }; D_8012156C[1].timerInit = timer - 1; if (mainCam->play->state.frames & 1) { D_8012156C[0].atTargetInit.x = -D_8012156C[0].atTargetInit.x; D_8012156C[0].eyeTargetInit.x = -D_8012156C[0].eyeTargetInit.x; D_8012156C[1].atTargetInit.x = -D_8012156C[1].atTargetInit.x; D_8012156C[1].eyeTargetInit.x = -D_8012156C[1].eyeTargetInit.x; } tempRand = Rand_ZeroOne() * 15.0f; D_8012156C[0].eyeTargetInit.x += tempRand; D_8012156C[1].eyeTargetInit.x += tempRand; csInfo->keyFrames = D_8012156C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012156C); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); break; } case 3010: { static OnePointCsFull D_801215BC[1] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 5, 0, 65.0f, 1.0f, { -1185.0f, 655.0f, 1185.0f }, { -1255.0f, 735.0f, 1255.0f }, }, }; D_801215BC[0].timerInit = timer; csInfo->keyFrames = D_801215BC; csInfo->keyFrameCount = ARRAY_COUNT(D_801215BC); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 3070: { static OnePointCsFull D_801215E4[10] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_8), 0x4141, 20, 0, 30.0f, 1.0f, { 0.0f, 120.0f, 0.0f }, { -10.0f, 140.0f, -90.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x0101, 1, 4, 75.0f, 1.0f, { -1360.0f, -940.0f, -3343.0f }, { -1060.0f, -980.0f, -3325.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4141, 129, 0, 75.0f, 0.5f, { 0.0f, 50.0f, 0.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0303, 30, 0, 70.0f, 0.05f, { 0.0f, 80.0f, 0.0f }, { -10.0f, 120.0f, 10.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_9), 0x0101, 40, -5, 70.0f, 1.0f, { -973.0f, -924.0f, -3263.0f }, { -1190.0f, -1010.0f, -3365.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x0101, 1, 0, 75.0f, 1.0f, { -1355.0f, -700.0f, -3340.0f }, { -1040.0f, -940.0f, -3345.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 60, 0, 45.0f, 0.8f, { -1370.0f, -875.0f, -3345.0f }, { -1230.0f, -885.0f, -3345.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 10, 0, 70.0f, 1.0f, { -1370.0f, -875.0f, -3345.0f }, { -1210.0f, -900.0f, -3420.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 20, 0, 70.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_801215E4; csInfo->keyFrameCount = ARRAY_COUNT(D_801215E4); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); i = Quake_Request(subCam, QUAKE_TYPE_3); Quake_SetSpeed(i, 22000); Quake_SetPerturbations(i, 2, 0, 200, 0); Quake_SetDuration(i, 10); break; } case 3080: { static OnePointCsFull D_80121774[4] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_8), 0x0101, 1, -2, 75.0f, 1.0f, { -1340.0f, -860.0f, -3345.0f }, { -1415.0f, -940.0f, -3520.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x0142, 39, 2, 70.0f, 1.0f, { 0.0f, -20.0f, 10.0f }, { -1140.0f, -1010.0f, -3560.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_5), 0x0121, 20, 0, 60.0f, 1.0f, { 0.0f, -20.0f, 20.0f }, { -1220.0f, -1005.0f, -3660.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80121774; csInfo->keyFrameCount = ARRAY_COUNT(D_80121774); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 3090: { static OnePointCsFull D_80121814[4] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_76), 0x0101, 5, 0, 40.0f, 1.0f, { -1400.0f, -540.0f, -3327.0f }, { -1254.0f, -20.0f, -3357.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 70, 0, 75.0f, 0.75f, { -1327.0f, 100.0f, -3342.0f }, { -1320.0f, 350.0f, -3540.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x2121, 10, 0, 60.0f, 0.75f, { 0.0f, 10.0f, 0.0f }, { 0.0f, 20.0f, -150.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); csInfo->keyFrames = D_80121814; csInfo->keyFrameCount = ARRAY_COUNT(D_80121814); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 3100: VEC_SET(spB4, 0.0f, -280.0f, -1400.0f); spA0 = Actor_GetFocus(actor); spC0 = spA0.pos; Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_PIVOT_VERTICAL); Play_SetCameraAtEye(play, subCamId, &spC0, &spB4); subCam->roll = 0; subCam->fov = 70.0f; Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); break; case 3380: case 3065: { static OnePointCsFull D_801218B4[2] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 60, 0, 65.0f, 1.0f, { 0.0f, 350.0f, -1520.0f }, { 0.0f, 715.0f, -885.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 100, 0, 70.0f, 0.02f, { 0.0f, 75.0f, -1335.0f }, { 0.0f, 20.0f, -1190.0f }, }, }; csInfo->keyFrames = D_801218B4; csInfo->keyFrameCount = ARRAY_COUNT(D_801218B4); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); i = Quake_Request(subCam, QUAKE_TYPE_1); Quake_SetSpeed(i, 24000); Quake_SetPerturbations(i, 2, 0, 0, 0); Quake_SetDuration(i, 160); break; } case 3060: { static OnePointCsFull D_80121904[2] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 50, 10, 65.0f, 1.0f, { 165.0f, 85.0f, -920.0f }, { 65.0f, -30.0f, -720.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80121904; csInfo->keyFrameCount = ARRAY_COUNT(D_80121904); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 3050: { Play_RequestCameraSetting(play, subCamId, CAM_SET_CS_3); Player_SetCsActionWithHaltedActors(play, &player->actor, PLAYER_CSACTION_5); OnePointCutscene_SetCsCamPoints(subCam, D_80120304 | 0x2000, D_80120300, D_8012013C, D_8012021C); Sfx_PlaySfxCentered(NA_SE_SY_CORRECT_CHIME); OnePointCutscene_Vec3sToVec3f(&mainCam->at, &D_8012013C[D_801202FC - 2].pos); OnePointCutscene_Vec3sToVec3f(&mainCam->eye, &D_8012021C[D_801202FC - 2].pos); D_8012013C[D_801202FC - 3].pos.x += (D_8012013C[D_801202FC - 2].pos.x - D_8012013C[D_801202FC - 3].pos.x) / 2; D_8012013C[D_801202FC - 3].pos.y += (D_8012013C[D_801202FC - 2].pos.y - D_8012013C[D_801202FC - 3].pos.y) / 2; D_8012013C[D_801202FC - 3].pos.z += (D_8012013C[D_801202FC - 2].pos.z - D_8012013C[D_801202FC - 3].pos.z) / 2; D_8012021C[D_801202FC - 3].pos.x += (D_8012021C[D_801202FC - 2].pos.x - D_8012021C[D_801202FC - 3].pos.x) / 2; D_8012021C[D_801202FC - 3].pos.y += (D_8012021C[D_801202FC - 2].pos.y - D_8012021C[D_801202FC - 3].pos.y) / 2; D_8012021C[D_801202FC - 3].pos.z += (D_8012021C[D_801202FC - 2].pos.z - D_8012021C[D_801202FC - 3].pos.z) / 2; i = Quake_Request(mainCam, QUAKE_TYPE_3); Quake_SetSpeed(i, 30000); Quake_SetPerturbations(i, 2, 1, 1, 0); Quake_SetDuration(i, 200); break; } case 3120: { static OnePointCsFull D_80121954[3][2] = { { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 20, 5, 60.0f, 1.0f, { -700.0f, 940.0f, 300.0f }, { -765.0f, 1000.0f, 335.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 80, -10, 70.0f, 0.1f, { -540.0f, 875.0f, 245.0f }, { -585.0f, 900.0f, 335.0f }, }, }, { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 40, -30, 70.0f, 1.0f, { -80.0f, 115.0f, -180.0f }, { -5.0f, 240.0f, -190.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 60, 20, 70.0f, 0.1f, { -100.0f, 350.0f, -175.0f }, { -5.0f, 240.0f, -190.0f }, }, }, { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 80, 5, 70.0f, 0.2f, { 960.0f, 900.0f, 260.0f }, { 970.0f, 950.0f, 250.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 20, 5, 70.0f, 1.0f, { 960.0f, 900.0f, 260.0f }, { 970.0f, 950.0f, 250.0f }, }, }, }; csInfo->keyFrames = D_80121954[-(timer + 101)]; subCam->timer = 100; subCam->stateFlags |= CAM_STATE_CHECK_WATER; csInfo->keyFrameCount = ARRAY_COUNT(D_80121954[0]); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 3130: { static OnePointCsFull D_80121A44[12] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, true, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_5), 0x2121, 10, 0, 60.0f, 1.0f, { 0.0f, -5.0f, 0.0f }, { 0.0f, 0.0f, -80.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, true, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x4242, 30, 0, 50.0f, 1.0f, { 0.0f, 45.0f, 0.0f }, { 0.0f, 45.0f, 50.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_21, true, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, true, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_5), 0x2222, 40, 5, 50.0f, 1.0f, { 0.0f, 50.0f, 0.0f }, { 0.0f, 50.0f, 50.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, true, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x4242, 40, 5, 60.0f, 1.0f, { 30.0f, 30.0f, 15.0f }, { 70.0f, 30.0f, -40.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_21, true, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, true, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 30, -5, 50.0f, 1.0f, { 20.0f, 30.0f, -5.0f }, { 0.0f, 70.0f, 70.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, true, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, true, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x2242, 40, 0, 45.0f, 1.0f, { 0.0f, 30.0f, 30.0f }, { 25.0f, 60.0f, -60.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, true, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x22C2, 140, 0, 60.0f, 0.04f, { 0.0f, 0.0f, 30.0f }, { 25.0f, 60.0f, -60.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_9, true, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x2222, 20, 0, 60.0f, 0.8f, { 0.0f, 50.0f, 0.0f }, { 0.0f, 60.0f, -60.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80121A44; csInfo->keyFrameCount = ARRAY_COUNT(D_80121A44); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); subCam->stateFlags |= CAM_STATE_CHECK_WATER; break; } case 3140: { static OnePointCsFull D_80121C24[7] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_5), 0x0101, 1, 0, 60.0f, 1.0f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 89, 0, 50.0f, 0.4f, { 125.0f, 320.0f, -1500.0f }, { 125.0f, 500.0f, -1150.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_8), 0x0101, 40, 4, 55.0f, 1.0f, { 0.0f, 375.0f, -1440.0f }, { 5.0f, 365.0f, -1315.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 40, -4, 55.0f, 1.0f, { 250.0f, 375.0f, -1440.0f }, { 235.0f, 365.0f, -1315.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 100, 0, 95.0f, 1.0f, { 125.0f, 345.0f, -1500.0f }, { 125.0f, 255.0f, -1350.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 100, 0, 60.0f, 1.0f, { 125.0f, 325.0f, -1500.0f }, { 125.0f, 480.0f, -1000.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; D_80121C24[0].atTargetInit = play->view.at; D_80121C24[0].eyeTargetInit = play->view.eye; D_80121C24[0].fovTargetInit = play->view.fovy; csInfo->keyFrames = D_80121C24; csInfo->keyFrameCount = ARRAY_COUNT(D_80121C24); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 3150: spC0.x = 1890.0f; spC0.y = 886.0f; spC0.z = -1432.0f; spB4.x = 1729.0f; spB4.y = 995.0f; spB4.z = -1405.0f; Play_RequestCameraSetting(play, subCamId, CAM_SET_FREE2); Play_SetCameraAtEye(play, subCamId, &spC0, &spB4); subCam->roll = 0x50; subCam->fov = 55.0f; Player_SetCsAction(play, &player->actor, PLAYER_CSACTION_8); break; case 3170: spA0 = Actor_GetWorld(actor); spC0 = spA0.pos; spD0.pitch = -0x5DC; spC0.y += 50.0f; spD0.r = 250.0f; spA0 = Actor_GetWorld(&player->actor); spD0.yaw = OnePointCutscene_Vec3fYaw(&spC0, &spA0.pos) - 0x7D0; spB4 = OnePointCutscene_AddVecGeoToVec3f(&spC0, &spD0); Play_RequestCameraSetting(play, subCamId, CAM_SET_FREE2); Play_SetCameraAtEye(play, subCamId, &spC0, &spB4); Play_CopyCamera(play, CAM_ID_MAIN, subCamId); subCam->roll = -1; subCam->fov = 55.0f; Player_SetCsAction(play, actor, PLAYER_CSACTION_1); break; case 3160: spA0 = Actor_GetWorld(actor); spC0 = spA0.pos; spD0.pitch = 0; spD0.yaw = spA0.rot.y; spD0.r = 150.0f; spB4 = OnePointCutscene_AddVecGeoToVec3f(&spC0, &spD0); Play_RequestCameraSetting(play, subCamId, CAM_SET_FREE2); Play_SetCameraAtEye(play, subCamId, &spC0, &spB4); subCam->roll = 0; subCam->fov = 55.0f; Player_SetCsAction(play, &player->actor, PLAYER_CSACTION_8); break; case 3180: spA0 = Actor_GetWorldPosShapeRot(actor); spC0 = spA0.pos; spC0.y += 120.0f; spD0.r = 300.0f; spD0.yaw = spA0.rot.y; spD0.pitch = -0xAF0; spB4 = OnePointCutscene_AddVecGeoToVec3f(&spC0, &spD0); Play_RequestCameraSetting(play, subCamId, CAM_SET_FREE2); Play_SetCameraAtEye(play, subCamId, &spC0, &spB4); subCam->roll = 0; subCam->fov = 60.0f; Player_SetCsAction(play, actor, PLAYER_CSACTION_1); break; case 3190: Play_RequestCameraSetting(play, subCamId, CAM_SET_FOREST_DEFEAT_POE); Camera_RequestMode(mainCam, CAM_MODE_NORMAL); Player_SetCsAction(play, actor, PLAYER_CSACTION_12); break; case 3230: spC0.x = 120.0f; spC0.y = 265.0f; spC0.z = -1570.0f; spB4.x = 80.0f; spB4.y = 445.0f; spB4.z = -1425.0f; Play_RequestCameraSetting(play, subCamId, CAM_SET_FREE2); Play_SetCameraAtEye(play, subCamId, &spC0, &spB4); subCam->roll = 0x1E; subCam->fov = 75.0f; Player_SetCsAction(play, &player->actor, PLAYER_CSACTION_8); spA0 = Actor_GetWorldPosShapeRot(actor); sp8C = Actor_GetFocus(&player->actor); spC0.x = sp8C.pos.x; spC0.y = sp8C.pos.y + 70.0f; spC0.z = sp8C.pos.z; spD0 = OLib_Vec3fDiffToVecGeo(&spA0.pos, &sp8C.pos); spD0.pitch = 0x5DC; spD0.r = 120.0f; spB4 = OnePointCutscene_AddVecGeoToVec3f(&spC0, &spD0); Play_SetCameraAtEye(play, CAM_ID_MAIN, &spC0, &spB4); i = Quake_Request(subCam, QUAKE_TYPE_3); Quake_SetSpeed(i, 22000); Quake_SetPerturbations(i, 1, 0, 0, 0); Quake_SetDuration(i, 90); break; case 6010: spA0 = Actor_GetWorld(actor); spC0 = spA0.pos; spD0.pitch = 0; spC0.y += 70.0f; spD0.yaw = spA0.rot.y + 0x7FFF; spD0.r = 300.0f; spB4 = OnePointCutscene_AddVecGeoToVec3f(&spC0, &spD0); Play_RequestCameraSetting(play, subCamId, CAM_SET_FREE2); Play_SetCameraAtEye(play, subCamId, &spC0, &spB4); subCam->roll = 0; subCam->fov = 45.0f; Player_SetCsAction(play, &player->actor, PLAYER_CSACTION_8); break; case 3220: spA0 = Actor_GetFocus(actor); spC0 = spA0.pos; Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_PIVOT_VERTICAL); spA0 = Actor_GetWorld(&player->actor); spD0 = OLib_Vec3fDiffToVecGeo(&spC0, &spA0.pos); spD0.yaw += 0x3E8; spD0.r = 400.0f; spB4 = OnePointCutscene_AddVecGeoToVec3f(&spC0, &spD0); spB4.y = spA0.pos.y + 60.0f; Play_SetCameraAtEye(play, subCamId, &spC0, &spB4); subCam->roll = 0; subCam->fov = 75.0f; player->actor.shape.rot.y = player->actor.world.rot.y = player->yaw = spD0.yaw + 0x7FFF; Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); break; case 3240: { static OnePointCsFull D_80121D3C[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 1, 0, 60.0f, 1.0f, { 1023.0f, 738.0f, -2628.0f }, { 993.0f, 770.0f, -2740.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 4, 0, 50.0f, 1.0f, { 1255.0f, 350.0f, -1870.0f }, { 1240.0f, 575.0f, -2100.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, -1, 0, 75.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; D_80121D3C[2].timerInit = timer - 5; csInfo->keyFrames = D_80121D3C; csInfo->keyFrameCount = ARRAY_COUNT(D_80121D3C); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 6001: Play_RequestCameraSetting(play, subCamId, CAM_SET_CS_3); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); spA0 = Actor_GetWorld(actor); if (spA0.pos.z > -750.0f) { OnePointCutscene_SetCsCamPoints(subCam, D_801208E8, D_801208E4, D_801206A0, D_80120820); } else { OnePointCutscene_SetCsCamPoints(subCam, D_801208E8, D_801208E4, D_801206A0, D_80120760); } i = Quake_Request(subCam, QUAKE_TYPE_1); Quake_SetSpeed(i, 32000); Quake_SetPerturbations(i, 0, 0, 20, 0); Quake_SetDuration(i, D_801208E4 - 10); break; case 3400: Play_RequestCameraSetting(play, subCamId, CAM_SET_CS_3); Player_SetCsAction(play, &player->actor, PLAYER_CSACTION_8); OnePointCutscene_SetCsCamPoints(subCam, D_8012069C | 0x2000, D_80120698, D_801204D4, D_801205B4); OnePointCutscene_Vec3sToVec3f(&mainCam->eye, &D_801205B4[D_80120694 - 2].pos); OnePointCutscene_Vec3sToVec3f(&mainCam->at, &D_801204D4[D_80120694 - 2].pos); i = Quake_Request(subCam, QUAKE_TYPE_1); Quake_SetSpeed(i, 0x4E20); Quake_SetPerturbations(i, 1, 0, 50, 0); Quake_SetDuration(i, D_80120698 - 20); break; case 3390: { static OnePointCsFull D_80121DB4[9] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 40, 0, 70.0f, 1.0f, { 4290.0f, -1332.0f, -1900.0f }, { 4155.0f, -1360.0f, -1840.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 60, 0, 70.0f, 1.0f, { 4215.0f, -975.0f, -2095.0f }, { 4070.0f, -1000.0f, -2025.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 5, 0, 70.0f, 1.0f, { 4215.0f, -975.0f, -2095.0f }, { 4070.0f, -1000.0f, -2025.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 80, 8, 75.0f, 1.0f, { 4010.0f, -1152.0f, -1728.0f }, { 3997.0f, -1194.0f, -1629.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_57), 0x2121, 1, 8, 75.0f, 1.0f, { 20.0f, 20.0f, 0.0f }, { 50.0f, 30.0f, 200.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x2121, 99, 2, 70.0f, 0.02f, { -20.0f, 0.0f, 20.0f }, { 300.0f, 50.0f, -500.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_9, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_56), 0x2121, 149, -20, 70.0f, 0.1f, { 100.0f, 50.0f, -100.0f }, { 5000.0f, 1055.0f, -2250.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x2121, 1, 0, 60.0f, 1.0f, { 0.0f, -20.0f, 0.0f }, { 0.0f, 20.0f, -150.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; player->actor.shape.rot.y = player->actor.world.rot.y = player->yaw = -0x3FD9; csInfo->keyFrames = D_80121DB4; csInfo->keyFrameCount = ARRAY_COUNT(D_80121DB4); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 3310: Play_RequestCameraSetting(play, subCamId, CAM_SET_FIRE_STAIRCASE); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Play_CopyCamera(play, subCamId, CAM_ID_MAIN); i = Quake_Request(subCam, QUAKE_TYPE_1); Quake_SetSpeed(i, 32000); Quake_SetPerturbations(i, 2, 0, 0, 0); Quake_SetDuration(i, timer); break; case 3290: { static OnePointCsFull D_80121F1C[4] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_8), 0x0101, 10, 0, 60.0f, 1.0f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x2121, 10, 0, 50.0f, 0.5f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 150.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_2), 0x2121, 23, 0, 50.0f, 0.5f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 150.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; D_80121F1C[0].atTargetInit = play->view.at; D_80121F1C[0].eyeTargetInit = play->view.eye; D_80121F1C[0].fovTargetInit = play->view.fovy; spA0 = Actor_GetFocus(actor); player->actor.shape.rot.y = player->actor.world.rot.y = player->yaw = spA0.rot.y; csInfo->keyFrames = D_80121F1C; csInfo->keyFrameCount = ARRAY_COUNT(D_80121F1C); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); i = Quake_Request(subCam, QUAKE_TYPE_3); Quake_SetSpeed(i, 12000); Quake_SetPerturbations(i, 0, 0, 1000, 0); Quake_SetDuration(i, 5); break; } case 3340: { static OnePointCsFull D_80121FBC[4] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 5, 0, 60.0f, 1.0f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 10, 0, 30.0f, 1.0f, { -2130.0f, 2885.0f, -1055.0f }, { -2085.0f, 2875.0f, -1145.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 30, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; D_80121FBC[0].atTargetInit = play->view.at; D_80121FBC[0].eyeTargetInit = play->view.eye; D_80121FBC[0].fovTargetInit = play->view.fovy; csInfo->keyFrames = D_80121FBC; csInfo->keyFrameCount = ARRAY_COUNT(D_80121FBC); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); i = Quake_Request(subCam, QUAKE_TYPE_3); Quake_SetSpeed(i, 12000); Quake_SetPerturbations(i, 0, 0, 1000, 0); Quake_SetDuration(i, 5); break; } case 3360: { static OnePointCsFull D_8012205C[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x42C2, 1, 0, 50.0f, 1.0f, { 0.0f, 220.0f, 0.0f }, { 0.0f, 220.0f, 240.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0080, 29, 0, 50.0f, 1.0f, { 0.0f, 220.0f, 0.0f }, { 0.0f, 220.0f, 240.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x21A1, 10, 0, 60.0f, 1.0f, { 0.0f, -10.0f, 0.0f }, { 0.0f, 10.0f, -200.0f }, }, }; csInfo->keyFrames = D_8012205C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012205C); Player_SetCsAction(play, &player->actor, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 3350: { static OnePointCsFull D_801220D4[5] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x0101, 5, 0, 60.0f, 1.0f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4141, 10, 5, 55.0f, 0.75f, { 400.0f, -50.0f, 800.0f }, { 600.0f, -60.0f, 800.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4141, 15, 10, 40.0f, 0.75f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 10.0f, 200.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 25, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; D_801220D4[0].atTargetInit = play->view.at; D_801220D4[0].eyeTargetInit = play->view.eye; D_801220D4[0].fovTargetInit = play->view.fovy; if (actor->world.pos.x > 0.0f) { D_801220D4[1].rollTargetInit = -D_801220D4[1].rollTargetInit; D_801220D4[2].rollTargetInit = -D_801220D4[2].rollTargetInit; D_801220D4[1].atTargetInit.x = -D_801220D4[1].atTargetInit.x; D_801220D4[1].atTargetInit.y = 50.0f; D_801220D4[1].eyeTargetInit.y = 80.0f; D_801220D4[1].eyeTargetInit.x = -D_801220D4[1].eyeTargetInit.x; } Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); csInfo->keyFrames = D_801220D4; csInfo->keyFrameCount = ARRAY_COUNT(D_801220D4); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 3330: { static OnePointCsFull D_8012219C[7] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x2121, 5, 0, 60.0f, 1.0f, { 0.0f, -5.0f, 0.0f }, { 0.0f, 0.0f, -80.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 15, 0, 40.0f, 0.4f, { 0.0f, 60.0f, -20.0f }, { 0.0f, 60.0f, 100.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 20, 0, 40.0f, 1.0f, { 0.0f, 60.0f, -20.0f }, { 0.0f, 60.0f, 100.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 20, 0, 60.0f, 1.0f, { 20.0f, 60.0f, 20.0f }, { 40.0f, 60.0f, -80.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 90, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_8012219C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012219C); Player_SetCsAction(play, &player->actor, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 3410: { static OnePointCsFull D_801222B4[5] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 20, 10, 45.0f, 1.0f, { -1200.0f, 730.0f, -860.0f }, { -1100.0f, 500.0f, -1025.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 20, 10, 45.0f, 0.1f, { -880.0f, 480.0f, -860.0f }, { -1100.0f, 500.0f, -1025.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, false, false), ONEPOINT_CS_INIT_FIELD_ACTORCAT(ACTORCAT_BG), 0x0101, 20, 10, 45.0f, 0.1f, { -880.0f, 500.0f, -860.0f }, { -1100.0f, 500.0f, -1025.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, false, false), ONEPOINT_CS_INIT_FIELD_ACTORCAT(ACTORCAT_DOOR), 0x0101, 5, 10, 45.0f, 0.1f, { -880.0f, 500.0f, -860.0f }, { -1100.0f, 500.0f, -1025.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_801222B4; csInfo->keyFrameCount = ARRAY_COUNT(D_801222B4); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); i = Quake_Request(subCam, QUAKE_TYPE_1); Quake_SetSpeed(i, 32000); Quake_SetPerturbations(i, 4, 0, 0, 0); Quake_SetDuration(i, 20); break; } case 3450: { static OnePointCsFull D_8012237C[2] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 20, -2, 65.0f, 1.0f, { -625.0f, 185.0f, -685.0f }, { -692.0f, 226.0f, -515.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_8012237C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012237C); Player_SetCsAction(play, &player->actor, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); i = Quake_Request(subCam, QUAKE_TYPE_1); Quake_SetSpeed(i, 32000); Quake_SetPerturbations(i, 2, 0, 0, 0); Quake_SetDuration(i, 10); break; } case 3440: { static OnePointCsFull D_801223CC[6] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 20, 0, 55.0f, 1.0f, { 60.0f, 1130.0f, -1430.0f }, { 60.0f, 1130.0f, -1190.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 18, -13, 68.0f, 1.0f, { 60.0f, 1130.0f, -1445.0f }, { 180.0f, 1170.0f, -1240.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 16, 18, 75.0f, 1.0f, { 42.0f, 1040.0f, -1400.0f }, { -20.0f, 940.0f, -1280.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 4, 0, 60.0f, 1.0f, { 60.0f, 1100.0f, -1465.0f }, { 60.0f, 1100.0f, -1180.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 32, 0, 70.0f, 1.0f, { 60.0f, 1100.0f, -1030.0f }, { 60.0f, 1150.0f, -740.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_801223CC; csInfo->keyFrameCount = ARRAY_COUNT(D_801223CC); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); player->stateFlags1 |= PLAYER_STATE1_29; player->actor.freezeTimer = 90; i = Quake_Request(subCam, QUAKE_TYPE_1); Quake_SetSpeed(i, 32000); Quake_SetPerturbations(i, 2, 0, 0, 0); Quake_SetDuration(i, 10); break; } case 3430: { static OnePointCsFull D_801224BC[7] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 5, 0, 70.0f, 1.0f, { 60.0f, 1800.0f, -920.0f }, { 60.0f, 1860.0f, -800.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 20, 0, 70.0f, 0.1f, { 60.0f, 1720.0f, -920.0f }, { 60.0f, 1780.0f, -800.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0142, 1, 0, 75.0f, 1.0f, { 0.0f, 70.0f, 0.0f }, { 60.0f, 990.0f, -690.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0142, 119, 0, 75.0f, 0.05f, { 0.0f, 70.0f, 0.0f }, { 60.0f, 990.0f, -690.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 20, 0, 60.0f, 0.1f, { 0.0f, 70.0f, 0.0f }, { 0.0f, 100.0f, 200.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_801224BC; csInfo->keyFrameCount = ARRAY_COUNT(D_801224BC); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); i = Quake_Request(subCam, QUAKE_TYPE_1); Quake_SetSpeed(i, 32000); Quake_SetPerturbations(i, 1, 0, 10, 0); Quake_SetDuration(i, 20); break; } case 4100: { static OnePointCsFull D_801225D4[5] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_8), 0x0101, 1, 0, 50.0f, 1.0f, { 4100.0f, 1200.0f, -1400.0f }, { 3900.0f, 1100.0f, -1400.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_59), 0x0101, 60, 4, 50.0f, 0.94f, { 4100.0f, 965.0f, -1385.0f }, { 3790.0f, 825.0f, -1325.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 90, -5, 130.0f, 0.02f, { 4100.0f, 975.0f, -1375.0f }, { 3735.0f, 715.0f, -1325.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_8), 0x2323, 2, 0, 60.0f, 1.0f, { 0.0f, 60.0f, 0.0f }, { -10.0f, 15.0f, -200.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_801225D4; csInfo->keyFrameCount = ARRAY_COUNT(D_801225D4); player->actor.shape.rot.y = player->actor.world.rot.y = player->yaw = 0x3FFC; Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); break; } case 4110: { static OnePointCsFull D_8012269C[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 20, 2, 45.0f, 1.0f, { 975.0f, 225.0f, -1195.0f }, { 918.0f, 228.0f, -1228.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_8012269C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012269C); Player_SetCsAction(play, &player->actor, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4120: { static OnePointCsFull D_80122714[4] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 20, 0, 45.0f, 1.0f, { -915.0f, -2185.0f, 6335.0f }, { -915.0f, -2290.0f, 6165.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, -1, 0, 80.0f, 0.8f, { -920.0f, -2270.0f, 6140.0f }, { -920.0f, -2280.0f, 6070.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 20, 0, 80.0f, 0.9f, { -920.0f, -2300.0f, 6140.0f }, { -920.0f, -2300.0f, 6070.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); D_80122714[1].timerInit = 80; csInfo->keyFrames = D_80122714; csInfo->keyFrameCount = ARRAY_COUNT(D_80122714); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4140: { static OnePointCsFull D_801227B4[6] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 30, 0, 60.0f, 1.0f, { 1400.0f, 100.0f, -170.0f }, { 1250.0f, 100.0f, -170.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 130, 0, 60.0f, 0.2f, { 0.0f, -5.0f, 0.0f }, { -150.0f, -5.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0303, 69, 0, 85.0f, 1.0f, { -40.0f, 0.0f, 0.0f }, { -40.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0303, 20, 0, 60.0f, 1.0f, { 10.0f, 0.0f, 0.0f }, { 10.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_801227B4; csInfo->keyFrameCount = ARRAY_COUNT(D_801227B4); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); Camera_RequestMode(mainCam, CAM_MODE_NORMAL); break; } case 4150: { static OnePointCsFull D_801228A4[5] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x0101, 20, 5, 30.0f, 1.0f, { 800.0f, -40.0f, 2170.0f }, { 512.0f, 142.0f, 2020.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 20, -2, 70.0f, 0.8f, { 800.0f, -40.0f, 2170.0f }, { 512.0f, 142.0f, 2020.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_8), 0x0101, 90, 2, 62.0f, 1.0f, { 1140.0f, 125.0f, 1920.0f }, { 1255.0f, 150.0f, 1785.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x2121, 10, 0, 60.0f, 1.0f, { 0.0f, 10.0f, 0.0f }, { 30.0f, 10.0f, -80.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_801228A4; csInfo->keyFrameCount = ARRAY_COUNT(D_801228A4); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Camera_RequestMode(mainCam, CAM_MODE_NORMAL); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4160: { static OnePointCsFull D_8012296C[4] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 20, -10, 70.0f, 1.0f, { -930.0f, 765.0f, -3075.0f }, { -700.0f, 700.0f, -3075.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 80, -10, 70.0f, 0.05f, { -930.0f, 205.0f, -3075.0f }, { -700.0f, 140.0f, -3075.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 120, 0, 70.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_8012296C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012296C); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Camera_RequestMode(mainCam, CAM_MODE_NORMAL); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4170: { static OnePointCsFull D_80122A0C[2] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 60, 4, 50.0f, 1.0f, { 0.0f, 400.0f, -1000.0f }, { -200.0f, 500.0f, -850.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 50.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80122A0C; csInfo->keyFrameCount = ARRAY_COUNT(D_80122A0C); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Camera_RequestMode(mainCam, CAM_MODE_NORMAL); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4190: { static OnePointCsFull D_80122A5C[8] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 1, -15, 70.0f, 1.0f, { 230.0f, 3675.0f, -4230.0f }, { -45.0f, 3650.0f, -4415.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_21, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 1, 0, 60.0f, 1.0f, { -120.0f, 2187.0f, -3286.0f }, { -110.0f, 2162.0f, -3262.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_21, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 55, 0, 60.0f, 1.0f, { -38.0f, 1467.0f, -1102.0f }, { 64.0f, 1423.0f, -1188.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 1, -15, 70.0f, 1.0f, { 230.0f, 3675.0f, -4230.0f }, { -20.0f, 3650.0f, -4400.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80122A5C; csInfo->keyFrameCount = ARRAY_COUNT(D_80122A5C); Player_SetCsAction(play, &player->actor, PLAYER_CSACTION_8); Camera_RequestMode(mainCam, CAM_MODE_NORMAL); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4200: { static OnePointCsFull D_80122B9C[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 60, 0, 65.0f, 1.0f, { 1095.0f, 2890.0f, -2980.0f }, { 1166.0f, 2695.0f, -2710.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 60, 15, 65.0f, 1.0f, { 566.0f, 4654.0f, -4550.0f }, { 606.0f, 5160.0f, -4740.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80122B9C; csInfo->keyFrameCount = ARRAY_COUNT(D_80122B9C); Player_SetCsAction(play, &player->actor, PLAYER_CSACTION_8); Camera_RequestMode(mainCam, CAM_MODE_NORMAL); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4210: { static OnePointCsFull D_80122C14[1] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 999, 0, 85.0f, 1.0f, { -15.0f, 185.0f, 160.0f }, { -15.0f, 210.0f, 250.0f }, }, }; player->actor.freezeTimer = timer; csInfo->keyFrames = D_80122C14; csInfo->keyFrameCount = ARRAY_COUNT(D_80122C14); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); i = Quake_Request(subCam, QUAKE_TYPE_3); Quake_SetSpeed(i, 12000); Quake_SetPerturbations(i, 0, 1, 100, 0); Quake_SetDuration(i, timer - 80); break; } case 4220: { static OnePointCsFull D_80122C3C[1] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 999, -2, 70.0f, 1.0f, { -62.0f, 60.0f, -315.0f }, { -115.0f, 30.0f, -445.0f }, }, }; static OnePointCsFull D_80122C64[1] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 999, 3, 70.0f, 1.0f, { -40.0f, 80.0f, 375.0f }, { -85.0f, 45.0f, 485.0f }, }, }; csInfo->keyFrames = (player->actor.world.pos.z < -15.0f) ? D_80122C3C : D_80122C64; csInfo->keyFrameCount = ARRAY_COUNT(D_80122C3C); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); Player_SetCsAction(play, &player->actor, PLAYER_CSACTION_1); i = Quake_Request(subCam, QUAKE_TYPE_3); Quake_SetSpeed(i, 12000); Quake_SetPerturbations(i, 0, 1, 10, 0); Quake_SetDuration(i, timer - 10); break; } case 4221: { static OnePointCsFull D_80122C8C[1] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 999, 5, 60.0f, 1.0f, { -70.0f, 140.0f, 25.0f }, { 10.0f, 180.0f, 195.0f }, }, }; csInfo->keyFrames = D_80122C8C; csInfo->keyFrameCount = ARRAY_COUNT(D_80122C8C); Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 3260: { static OnePointCsFull D_80122CB4[2] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 5, 0, 60.0f, 1.0f, { 0.0f, 0.0f, 1000.0f }, { 0.0f, 0.0f, 1100.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, -1, 0, 60.0f, 1.0f, { 0.0f, 0.0f, -100.0f }, { 0.0f, 0.0f, 0.0f }, }, }; Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); D_80122CB4[1].timerInit = timer - 5; csInfo->keyFrames = D_80122CB4; csInfo->keyFrameCount = ARRAY_COUNT(D_80122CB4); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 3261: { static OnePointCsFull D_80122D04[2] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 10, 0, 60.0f, 1.0f, { 0.0f, 0.0f, -100.0f }, { 0.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, -1, 0, 60.0f, 1.0f, { 0.0f, 0.0f, 1000.0f }, { 0.0f, 0.0f, 1100.0f }, }, }; Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_8); D_80122D04[1].timerInit = timer - 10; csInfo->keyFrames = D_80122D04; csInfo->keyFrameCount = ARRAY_COUNT(D_80122D04); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 8010: { static OnePointCsFull D_80122D54[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 1, -4, 50.0f, 1.0f, { 230.0f, 65.0f, 300.0f }, { 50.0f, 50.0f, 225.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80122D54; csInfo->keyFrameCount = ARRAY_COUNT(D_80122D54); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 8002: { static OnePointCsFull D_80122DCC[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 1, 0, 50.0f, 1.0f, { 0.0f, 5.0f, -145.0f }, { 0.0f, 55.0f, 55.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_17, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80122DCC; csInfo->keyFrameCount = ARRAY_COUNT(D_80122DCC); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 8700: { static OnePointCsFull D_80122E44[2][7] = { { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x2222, 10, 5, 90.0f, 0.2f, { 50.0f, 100.0f, 140.0f }, { -30.0f, 10.0f, -20.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 20, 0, 90.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4343, 30, -5, 50.0f, 0.2f, { -10.0f, 80.0f, 10.0f }, { 20.0f, 20.0f, 120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -5, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x4343, 160, 10, 80.0f, 0.005f, { -50.0f, 60.0f, 0.0f }, { -100.0f, 20.0f, 50.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0501, 50, 0, 60.0f, 1.0f, { 0.0f, -10.0f, 0.0f }, { 0.0f, 10.0f, 80.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_19, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }, { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x2222, 10, -5, 90.0f, 0.2f, { -50.0f, 100.0f, 140.0f }, { 30.0f, 10.0f, -20.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 20, 0, 90.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4343, 30, 5, 50.0f, 0.2f, { 10.0f, 80.0f, 10.0f }, { -20.0f, 20.0f, 120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 5, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x4343, 160, -10, 80.0f, 0.005f, { 50.0f, 60.0f, 0.0f }, { 100.0f, 20.0f, 50.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0501, 50, 0, 60.0f, 1.0f, { 0.0f, -10.0f, 0.0f }, { 0.0f, 10.0f, 80.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_19, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, -1, -1.0f, -1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }, }; spA0 = Actor_GetFocus(actor); sp8C = Actor_GetFocus(&player->actor); D_80122E44[timer & 1][0].atTargetInit.y = ((spA0.pos.y - sp8C.pos.y) / 10.0f) + 90.0f; D_80122E44[timer & 1][5].atTargetInit = mainCam->at; csInfo->keyFrames = D_80122E44[timer & 1]; csInfo->keyFrameCount = ARRAY_COUNT(D_80122E44[0]); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 1100: { s32 tempDiff = play->state.frames - sPrevFrameCs1100; if ((tempDiff > 3600) || (tempDiff < -3600)) { static OnePointCsFull D_80123074[5] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0xA2A2, 2, 8, 70.0f, 1.0f, { -27.0f, -96.0f, 25.0f }, { 37.0f, -5.0f, 100.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0xA2A2, 38, 4, 60.0f, 1.0f, { 64.0f, -109.0f, 55.0f }, { 37.0f, 150.0f, 155.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0xA2A2, 2, 8, 70.0f, 1.0f, { 45.0f, 123.0f, 45.0f }, { 70.0f, 5.0f, 125.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0xA2A2, 58, 4, 60.0f, 0.9f, { 82.0f, 95.0f, 55.0f }, { 25.0f, -175.0f, 180.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80123074; csInfo->keyFrameCount = ARRAY_COUNT(D_80123074); } else { static OnePointCsFull D_8012313C[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0xA2A2, 20, 8, 70.0f, 1.0f, { 65.0f, -150.0f, 50.0f }, { 30.0f, 10.0f, 90.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0xA2A2, 100, 0, 60.0f, 1.0f, { 70.0f, -160.0f, 50.0f }, { 25.0f, 180.0f, 180.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; if (play->state.frames & 1) { D_8012313C[0].rollTargetInit = -D_8012313C[0].rollTargetInit; D_8012313C[0].atTargetInit.y = -D_8012313C[0].atTargetInit.y; D_8012313C[0].eyeTargetInit.y = -D_8012313C[0].eyeTargetInit.y; D_8012313C[1].atTargetInit.y = -D_8012313C[1].atTargetInit.y; } csInfo->keyFrames = D_8012313C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012313C); } Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); sPrevFrameCs1100 = play->state.frames; break; } case 9806: subCam->timer = -99; if (Play_CamIsNotFixed(play)) { Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_TURN_AROUND); subCam->data2 = 0xC; } else { Play_CopyCamera(play, subCamId, CAM_ID_MAIN); Play_RequestCameraSetting(play, subCamId, CAM_SET_FREE2); } break; case 9908: if (Play_CamIsNotFixed(play)) { static OnePointCsFull D_801231B4[4] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_HUD_VISIBILITY(HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE), 0x4343, 1, 0, 50.0f, 1.0f, { 0.0f, 20.0f, 0.0f }, { 0.0f, 5.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true), ONEPOINT_CS_INIT_FIELD_HUD_VISIBILITY(HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE), 0x4343, 48, 0, 50.0f, 0.75f, { 0.0f, 80.0f, 0.0f }, { 0.0f, 15.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_HUD_VISIBILITY(HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE), 0x4343, 1, 5, 45.0f, 1.0f, { 0.0f, 0.0f, 30.0f }, { 30.0f, 120.0f, 60.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, true), ONEPOINT_CS_INIT_FIELD_HUD_VISIBILITY(HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE), 0x4343, -1, 0, -1.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; D_801231B4[0].eyeTargetInit.z = D_801231B4[1].eyeTargetInit.z = !LINK_IS_ADULT ? 100.0f : 120.0f; if (player->stateFlags1 & PLAYER_STATE1_27) { D_801231B4[2].atTargetInit.z = 0.0f; } spA0 = Actor_GetWorldPosShapeRot(&player->actor); spD0 = OLib_Vec3fDiffToVecGeo(&spA0.pos, &mainCam->at); spD0.yaw -= spA0.rot.y; D_801231B4[3].atTargetInit = OLib_VecGeoToVec3f(&spD0); spD0 = OLib_Vec3fDiffToVecGeo(&spA0.pos, &mainCam->eye); spD0.yaw -= spA0.rot.y; D_801231B4[3].eyeTargetInit = OLib_VecGeoToVec3f(&spD0); D_801231B4[3].fovTargetInit = mainCam->fov; D_801231B4[3].timerInit = timer - 50; csInfo->keyFrames = D_801231B4; csInfo->keyFrameCount = ARRAY_COUNT(D_801231B4); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); } else { static OnePointCsFull D_80123254[2] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 1, 0, 60.0f, 1.0f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_HUD_VISIBILITY(HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE), 0x0101, 49, 0, 50.0f, 0.05f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, }; D_80123254[1].timerInit = timer - 1; D_80123254[0].fovTargetInit = mainCam->fov; D_80123254[0].atTargetInit = D_80123254[1].atTargetInit = mainCam->at; D_80123254[0].eyeTargetInit = D_80123254[1].eyeTargetInit = mainCam->eye; csInfo->keyFrames = D_80123254; csInfo->keyFrameCount = ARRAY_COUNT(D_80123254); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); } break; case 1000: { static OnePointCsFull D_801232A4[1] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_69), 0x0101, 9999, 0, 60.0f, 1.0f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, }; D_801232A4[0].atTargetInit = play->view.at; D_801232A4[0].eyeTargetInit = play->view.eye; D_801232A4[0].fovTargetInit = play->view.fovy; csInfo->keyFrames = D_801232A4; csInfo->keyFrameCount = ARRAY_COUNT(D_801232A4); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 8603: { static OnePointCsFull D_801232CC[5] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 45, -3, 65.0f, 1.0f, { -52.0f, 84.0f, -846.0f }, { -159.0f, 33.0f, -729.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 10, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x2121, 15, 0, 60.0f, 1.0f, { 10.0f, -5.0f, 0.0f }, { 0.0f, 0.0f, -150.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_801232CC; csInfo->keyFrameCount = ARRAY_COUNT(D_801232CC); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 8604: { static OnePointCsFull D_80123394[5] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 45, 3, 65.0f, 1.0f, { -16.0f, 87.0f, -829.0f }, { 98.0f, 24.0f, -714.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 10, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x2121, 15, 0, 60.0f, 1.0f, { 10.0f, -5.0f, 0.0f }, { 0.0f, 0.0f, -150.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_80123394; csInfo->keyFrameCount = ARRAY_COUNT(D_80123394); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4000: { static OnePointCsFull D_8012345C[4] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x4242, 40, 0, 40.0f, 1.0f, { 0.0f, 50.0f, -40.0f }, { 0.0f, 60.0f, -160.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_77), 0x4242, 40, 0, 60.0f, 0.3f, { 0.0f, 90.0f, -40.0f }, { 0.0f, 60.0f, -160.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_4, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x2121, 10, 0, 60.0f, 0.2f, { 0.0f, -10.0f, 10.0f }, { 0.0f, 10.0f, -80.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_8012345C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012345C); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4010: { static OnePointCsFull D_801234FC[5] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_1, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_5), 0x0441, 10, 0, 70.0f, 1.0f, { 0.0f, -10.0f, 20.0f }, { 0.0f, 0.0f, 120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4141, 30, 0, 50.0f, 0.1f, { 0.0f, -10.0f, 20.0f }, { 0.0f, 10.0f, 80.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x2121, 10, 0, 60.0f, 0.9f, { 0.0f, -10.0f, 0.0f }, { 0.0f, 10.0f, -80.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_801234FC; csInfo->keyFrameCount = ARRAY_COUNT(D_801234FC); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4011: { static OnePointCsFull D_801235C4[5] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_PLAYER_CS(PLAYER_CSACTION_1), 0x4141, 1, 0, 50.0f, 1.0f, { 0.0f, -10.0f, 20.0f }, { 0.0f, 10.0f, 60.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x0441, 39, 0, 70.0f, 0.1f, { 0.0f, -10.0f, 20.0f }, { 0.0f, 0.0f, 100.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_16, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x2121, 15, 0, 60.0f, 0.9f, { 0.0f, -10.0f, 0.0f }, { 0.0f, 10.0f, -80.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; csInfo->keyFrames = D_801235C4; csInfo->keyFrameCount = ARRAY_COUNT(D_801235C4); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4020: { static OnePointCsFull D_8012368C[4] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 10, 0, 60.0f, 1.0f, { -1110.0f, -180.0f, -840.0f }, { -985.0f, -220.0f, -840.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 70, -45, 75.0f, 1.0f, { -1060.0f, -160.0f, -840.0f }, { -1005.0f, -230.0f, -840.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 10, -45, 75.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 180, 9, 80.0f, 1.0f, { -1205.0f, -175.0f, -840.0f }, { -1305.0f, -230.0f, -828.0f }, }, }; csInfo->keyFrames = D_8012368C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012368C); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4021: { static OnePointCsFull D_8012372C[4] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0142, 10, 0, 70.0f, 1.0f, { 0.0f, 80.0f, 0.0f }, { -1650.0f, 200.0f, -2920.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0142, 110, -2, 50.0f, 0.5f, { 0.0f, 150.0f, 0.0f }, { -1320.0f, 170.0f, -2900.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_11, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 100, 2, 70.0f, 0.1f, { 0.0f, 150.0f, 50.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_3, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 60, 2, 45.0f, 0.01f, { 0.0f, 150.0f, 50.0f }, { 0.0f, 200.0f, -80.0f }, }, }; csInfo->keyFrames = D_8012372C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012372C); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 4022: { static OnePointCsFull D_801237CC[5] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, true), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 20, 0, 50.0f, 1.0f, { 0.0f, 50.0f, -10.0f }, { 0.0f, 0.0f, 100.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_10, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 80, 0, 75.0f, 1.0f, { 2900.0f, 1300.0f, 530.0f }, { 2800.0f, 1190.0f, 540.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 10, 0, 75.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_2, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 55, 0, 75.0f, 1.0f, { 2900.0f, 1300.0f, 530.0f }, { 1500.0f, 1415.0f, 650.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 100, -45, 75.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; subCam->timer = D_801237CC[0].timerInit + D_801237CC[3].timerInit + D_801237CC[1].timerInit + D_801237CC[2].timerInit + D_801237CC[4].timerInit; csInfo->keyFrames = D_801237CC; csInfo->keyFrameCount = ARRAY_COUNT(D_801237CC); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 9703: { static OnePointCsFull D_80123894[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 60, 0, 60.0f, 1.0f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 30, 0, 50.0f, 1.0f, { 0.0f, 28.0f, 0.0f }, { 0.0f, 20.0f, 40.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_13, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 120, 0, 180.0f, 0.4f, { 0.0f, -5.0f, 0.0f }, { 0.0f, 2.0f, 40.0f }, }, }; D_80123894[0].atTargetInit = play->view.at; D_80123894[0].eyeTargetInit = play->view.eye; D_80123894[0].fovTargetInit = play->view.fovy; if (LINK_IS_ADULT) { D_80123894[1].atTargetInit.y = 60.0f; D_80123894[1].eyeTargetInit.y = 52.0f; } csInfo->keyFrames = D_80123894; csInfo->keyFrameCount = ARRAY_COUNT(D_80123894); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 9704: { static OnePointCsFull D_8012390C[2] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 30, 0, 60.0f, 1.0f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 180, 0, 60.0f, 1.0f, { 0.0f, 78.0f, 0.0f }, { 0.0f, 78.0f, 200.0f }, }, }; D_8012390C[0].atTargetInit = play->view.at; D_8012390C[0].eyeTargetInit = play->view.eye; D_8012390C[0].fovTargetInit = play->view.fovy; csInfo->keyFrames = D_8012390C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012390C); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 9705: { static OnePointCsFull D_8012395C[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0101, 60, 0, 60.0f, 1.0f, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 30, 0, 50.0f, 1.0f, { 0.0f, 28.0f, 0.0f }, { 0.0f, 20.0f, -45.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_13, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 120, 0, 180.0f, 0.4f, { 0.0f, -5.0f, 0.0f }, { 0.0f, 2.0f, 45.0f }, }, }; D_8012395C[0].atTargetInit = play->view.at; D_8012395C[0].eyeTargetInit = play->view.eye; D_8012395C[0].fovTargetInit = play->view.fovy; csInfo->keyFrames = D_8012395C; csInfo->keyFrameCount = ARRAY_COUNT(D_8012395C); Play_InitCameraDataUsingPlayer(play, subCamId, player, CAM_SET_CS_C); break; } case 5110: { static OnePointCsFull D_801239D4[3] = { { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_15, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 5, 0, 60.0f, 1.0f, { 0.0f, 20.0f, 0.0f }, { 0.0f, 40.0f, -120.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_9, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x4242, 0, 0, 60.0f, 1.0f, { 0.0f, 20.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, }, { ONEPOINT_CS_ACTION(ONEPOINT_CS_ACTION_ID_18, false, false), ONEPOINT_CS_INIT_FIELD_NONE, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, }, }; D_801239D4[1].timerInit = 10; csInfo->keyFrames = D_801239D4; csInfo->keyFrameCount = ARRAY_COUNT(D_801239D4); Play_InitCameraDataUsingPlayer(play, subCamId, (Player*)actor, CAM_SET_CS_C); break; } default: PRINTF(VT_COL(RED, WHITE) "onepointdemo camera: demo number not found !! (%d)\n" VT_RST, csId); break; } return 0; } s16 OnePointCutscene_SetAsChild(PlayState* play, s16 newCamId, s16 parentCamId) { s16 prevCamId = play->cameraPtrs[parentCamId]->childCamId; play->cameraPtrs[newCamId]->parentCamId = parentCamId; play->cameraPtrs[parentCamId]->childCamId = newCamId; return prevCamId; } /** * Removes a cutscene camera from the list. Returns the parent cam if the removed camera is active, otherwise returns * CAM_ID_NONE */ s32 OnePointCutscene_RemoveCamera(PlayState* play, s16 subCamId) { Camera* subCam = play->cameraPtrs[subCamId]; s32 nextCamId; if (subCam->camId == CHILD_CAM(subCam)->parentCamId) { CHILD_CAM(subCam)->parentCamId = subCam->parentCamId; } if (subCam->camId == PARENT_CAM(subCam)->childCamId) { PARENT_CAM(subCam)->childCamId = subCam->childCamId; } nextCamId = (play->activeCamId == subCamId) ? subCam->parentCamId : CAM_ID_NONE; subCam->parentCamId = CAM_ID_MAIN; subCam->childCamId = subCam->parentCamId; subCam->timer = -1; Play_ClearCamera(subCam->play, subCam->camId); return nextCamId; } #define vChildCamId temp2 #define vSubCamStatus temp1 #define vCurCamId temp2 #define vNextCamId temp3 #define vParentCamId temp1 /** * Creates a cutscene subcamera with the specified ID, duration, and targeted actor. The camera is placed into the * cutscene queue in front of the specified camera, then all lower priority demos in front of it are removed from the * queue. */ s16 OnePointCutscene_Init(PlayState* play, s16 csId, s16 timer, Actor* actor, s16 parentCamId) { Camera* subCam; s16 subCamId; s16 temp1; s16 temp2; s16 temp3; if (parentCamId == CAM_ID_NONE) { parentCamId = play->activeCamId; } subCamId = Play_CreateSubCamera(play); if (subCamId == CAM_ID_NONE) { PRINTF(VT_COL(RED, WHITE) "onepoint demo: error: too many cameras ... give up! type=%d\n" VT_RST, csId); return CAM_ID_NONE; } // Inserts the cutscene camera into the cutscene queue in front of parentCam vChildCamId = play->cameraPtrs[parentCamId]->childCamId; vSubCamStatus = CAM_STAT_ACTIVE; if (vChildCamId >= CAM_ID_SUB_FIRST) { OnePointCutscene_SetAsChild(play, vChildCamId, subCamId); vSubCamStatus = CAM_STAT_WAIT; } else { Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_NOTHING_ALT); } OnePointCutscene_SetAsChild(play, subCamId, parentCamId); subCam = play->cameraPtrs[subCamId]; subCam->timer = timer; subCam->target = actor; subCam->at = play->view.at; subCam->eye = play->view.eye; subCam->fov = play->view.fovy; subCam->csId = csId; if (parentCamId == CAM_ID_MAIN) { Play_ChangeCameraStatus(play, parentCamId, CAM_STAT_UNK3); } else { Play_ChangeCameraStatus(play, parentCamId, CAM_STAT_WAIT); } OnePointCutscene_SetInfo(play, subCamId, csId, actor, timer); Play_ChangeCameraStatus(play, subCamId, vSubCamStatus); // Removes all lower priority cutscenes in front of this cutscene from the queue. vCurCamId = subCamId; vNextCamId = play->cameraPtrs[subCamId]->childCamId; while (vNextCamId >= CAM_ID_SUB_FIRST) { if ((play->cameraPtrs[vNextCamId]->csId / 100) < (play->cameraPtrs[subCamId]->csId / 100)) { PRINTF(VT_COL(YELLOW, BLACK) "onepointdemo camera[%d]: killed 'coz low priority (%d < %d)\n" VT_RST, vNextCamId, play->cameraPtrs[vNextCamId]->csId, play->cameraPtrs[subCamId]->csId); if (play->cameraPtrs[vNextCamId]->csId != 5010) { if ((vParentCamId = OnePointCutscene_RemoveCamera(play, vNextCamId)) != CAM_ID_NONE) { Play_ChangeCameraStatus(play, vParentCamId, CAM_STAT_ACTIVE); } } else { vCurCamId = vNextCamId; OnePointCutscene_EndCutscene(play, vNextCamId); } } else { vCurCamId = vNextCamId; } vNextCamId = play->cameraPtrs[vCurCamId]->childCamId; } return subCamId; } /** * Ends the cutscene in subCamId by setting its timer to 0. For attention cutscenes, it is set to 5 instead. */ s16 OnePointCutscene_EndCutscene(PlayState* play, s16 subCamId) { if (subCamId == CAM_ID_NONE) { subCamId = play->activeCamId; } if (play->cameraPtrs[subCamId] != NULL) { PRINTF("onepointdemo camera[%d]: delete timer=%d next=%d\n", subCamId, play->cameraPtrs[subCamId]->timer, play->cameraPtrs[subCamId]->parentCamId); if (play->cameraPtrs[subCamId]->csId == 5010) { play->cameraPtrs[subCamId]->timer = 5; } else { play->cameraPtrs[subCamId]->timer = 0; } } return subCamId; } #define vTargetCat temp1 #define vParentCamId temp1 #define vLastHigherCat temp2 #define vSubCamId temp2 /** * Adds an attention cutscene to the cutscene queue. */ s32 OnePointCutscene_Attention(PlayState* play, Actor* actor) { Camera* parentCam; s32 temp1; s32 temp2; s32 timer; #if OOT_DEBUG if (sDisableAttention) { PRINTF(VT_COL(YELLOW, BLACK) "actor attention demo camera: canceled by other camera\n" VT_RST); return CAM_ID_NONE; } #endif sUnused = -1; parentCam = play->cameraPtrs[CAM_ID_MAIN]; if (parentCam->mode == CAM_MODE_FOLLOW_BOOMERANG) { PRINTF(VT_COL(YELLOW, BLACK) "actor attention demo camera: change mode BOOKEEPON -> NORMAL\n" VT_RST); Camera_RequestMode(parentCam, CAM_MODE_NORMAL); } // Finds the camera of the first actor attention demo with a lower category actor, or the first non-attention demo // after at least one attention demo. vLastHigherCat = -1; while (parentCam->childCamId != CAM_ID_MAIN) { parentCam = play->cameraPtrs[parentCam->childCamId]; if (parentCam == NULL) { break; } else if (parentCam->setting != CAM_SET_CS_ATTENTION) { if (vLastHigherCat == -1) { continue; } else { break; } } else { vTargetCat = parentCam->target->category; if (actor->category > vTargetCat) { break; } vLastHigherCat = vTargetCat; } } // Actorcat is only undefined if the actor is in a higher category than all other attention cutscenes. In this case, // it goes in the first position of the list. Otherwise, it goes in the index found in the loop. vParentCamId = (vLastHigherCat == -1) ? CAM_ID_MAIN : parentCam->camId; switch (actor->category) { case ACTORCAT_SWITCH: case ACTORCAT_BG: case ACTORCAT_PLAYER: case ACTORCAT_PROP: case ACTORCAT_DOOR: timer = 30; break; case ACTORCAT_NPC: case ACTORCAT_ITEMACTION: case ACTORCAT_CHEST: timer = 100; break; case ACTORCAT_EXPLOSIVE: case ACTORCAT_ENEMY: case ACTORCAT_MISC: case ACTORCAT_BOSS: default: PRINTF(VT_COL(YELLOW, BLACK) "actor attention demo camera: %d: unkown part of actor %d\n" VT_RST, play->state.frames, actor->category); timer = 30; break; } PRINTF(VT_FGCOL(CYAN) "%06u:" VT_RST " actor attention demo camera: request %d ", play->state.frames, actor->category); // If the previous attention cutscene has an actor in the same category, skip this actor. if (actor->category == vLastHigherCat) { PRINTF("→ " VT_FGCOL(MAGENTA) "×" VT_RST " (%d)\n", actor->id); return CAM_ID_NONE; } PRINTF("→ " VT_FGCOL(BLUE) "○" VT_RST " (%d)\n", actor->id); vSubCamId = OnePointCutscene_Init(play, 5010, timer, actor, vParentCamId); if (vSubCamId == CAM_ID_NONE) { PRINTF(VT_COL(RED, WHITE) "actor attention demo: give up! \n" VT_RST, actor->id); return CAM_ID_NONE; } else { s32* data = (s32*)&play->cameraPtrs[vSubCamId]->data1; *data = NA_SE_SY_CORRECT_CHIME; return vSubCamId; } } /** * Adds an attention cutscene to the cutscene queue with the specified sound effect */ s32 OnePointCutscene_AttentionSetSfx(PlayState* play, Actor* actor, s32 sfxId) { s32 subCamId = OnePointCutscene_Attention(play, actor); if (subCamId != CAM_ID_NONE) { s32* data = (s32*)&play->cameraPtrs[subCamId]->data1; *data = sfxId; } return subCamId; } // unused void OnePointCutscene_EnableAttention(void) { sDisableAttention = false; } // unused void OnePointCutscene_DisableAttention(void) { sDisableAttention = true; } s32 OnePointCutscene_CheckForCategory(PlayState* play, s32 actorCategory) { Camera* parentCam = play->cameraPtrs[CAM_ID_MAIN]; while (parentCam->childCamId != CAM_ID_MAIN) { parentCam = play->cameraPtrs[parentCam->childCamId]; if ((parentCam == NULL) || (parentCam->setting != CAM_SET_CS_ATTENTION)) { break; } else if (actorCategory == parentCam->target->category) { return true; } } return false; } // unused, also empty. void OnePointCutscene_Noop(PlayState* play, s32 arg1) { }