[#1336] Fix issues with gFasterHeavyBlockLift (#1476)

This commit is contained in:
Garrett Cox 2022-09-19 19:08:47 -05:00 committed by GitHub
parent e76890a796
commit 34d6212ab2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 31 additions and 39 deletions

View File

@ -1041,37 +1041,18 @@ s32 OnePointCutscene_SetInfo(GlobalContext* globalCtx, s16 camIdx, s16 csId, Act
func_800C0808(globalCtx, camIdx, player, CAM_SET_CS_C); func_800C0808(globalCtx, camIdx, player, CAM_SET_CS_C);
break; break;
case 4020: case 4020:
if (CVar_GetS32("gFasterHeavyBlockLift", 0)) {
D_8012368C[0].timerInit *= (1.0f / 3.0f);
D_8012368C[1].timerInit *= (1.0f / 3.0f);
D_8012368C[2].timerInit *= (1.0f / 3.0f);
D_8012368C[3].timerInit *= (1.0f / 3.0f);
}
csInfo->keyFrames = D_8012368C; csInfo->keyFrames = D_8012368C;
csInfo->keyFrameCnt = 4; csInfo->keyFrameCnt = 4;
func_800C0808(globalCtx, camIdx, player, CAM_SET_CS_C); func_800C0808(globalCtx, camIdx, player, CAM_SET_CS_C);
break; break;
case 4021: case 4021:
if (CVar_GetS32("gFasterHeavyBlockLift", 0)) {
D_8012372C[0].timerInit *= (1.0f / 3.0f);
D_8012372C[1].timerInit *= (1.0f / 3.0f);
D_8012372C[2].timerInit *= (1.0f / 3.0f);
D_8012372C[3].timerInit *= (1.0f / 3.0f);
}
csInfo->keyFrames = D_8012372C; csInfo->keyFrames = D_8012372C;
csInfo->keyFrameCnt = 4; csInfo->keyFrameCnt = 4;
func_800C0808(globalCtx, camIdx, player, CAM_SET_CS_C); func_800C0808(globalCtx, camIdx, player, CAM_SET_CS_C);
break; break;
case 4022: case 4022:
if (CVar_GetS32("gFasterHeavyBlockLift", 0)) {
D_801237CC[0].timerInit *= (1.0f / 3.0f);
D_801237CC[1].timerInit *= (1.0f / 3.0f);
D_801237CC[2].timerInit *= (1.0f / 3.0f);
D_801237CC[3].timerInit *= (1.0f / 3.0f);
D_801237CC[4].timerInit *= (1.0f / 3.0f);
}
csCam->timer = D_801237CC[0].timerInit + D_801237CC[3].timerInit + D_801237CC[1].timerInit + csCam->timer = D_801237CC[0].timerInit + D_801237CC[3].timerInit + D_801237CC[1].timerInit +
D_801237CC[2].timerInit + D_801237CC[4].timerInit; D_801237CC[2].timerInit + D_801237CC[4].timerInit;

View File

@ -624,21 +624,21 @@ static OnePointCsFull D_801235C4[5] = {
{ 0x12, 0xFF, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f } }, { 0x12, 0xFF, 0x0000, 1, 0, 60.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f } },
}; };
OnePointCsFull D_8012368C[4] = { static OnePointCsFull D_8012368C[4] = {
{ 0x0F, 0xFF, 0x0101, 10, 0, 60.0f, 1.0f, { -1110.0f, -180.0f, -840.0f }, { -985.0f, -220.0f, -840.0f } }, { 0x0F, 0xFF, 0x0101, 10, 0, 60.0f, 1.0f, { -1110.0f, -180.0f, -840.0f }, { -985.0f, -220.0f, -840.0f } },
{ 0x02, 0xFF, 0x0101, 70, -45, 75.0f, 1.0f, { -1060.0f, -160.0f, -840.0f }, { -1005.0f, -230.0f, -840.0f } }, { 0x02, 0xFF, 0x0101, 70, -45, 75.0f, 1.0f, { -1060.0f, -160.0f, -840.0f }, { -1005.0f, -230.0f, -840.0f } },
{ 0x0F, 0xFF, 0x0000, 10, -45, 75.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f } }, { 0x0F, 0xFF, 0x0000, 10, -45, 75.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f } },
{ 0x0F, 0xFF, 0x0101, 180, 9, 80.0f, 1.0f, { -1205.0f, -175.0f, -840.0f }, { -1305.0f, -230.0f, -828.0f } }, { 0x0F, 0xFF, 0x0101, 180, 9, 80.0f, 1.0f, { -1205.0f, -175.0f, -840.0f }, { -1305.0f, -230.0f, -828.0f } },
}; };
OnePointCsFull D_8012372C[4] = { static OnePointCsFull D_8012372C[4] = {
{ 0x0F, 0xFF, 0x0142, 10, 0, 70.0f, 1.0f, { 0.0f, 80.0f, 0.0f }, { -1650.0f, 200.0f, -2920.0f } }, { 0x0F, 0xFF, 0x0142, 10, 0, 70.0f, 1.0f, { 0.0f, 80.0f, 0.0f }, { -1650.0f, 200.0f, -2920.0f } },
{ 0x02, 0xFF, 0x0142, 110, -2, 50.0f, 0.5f, { 0.0f, 150.0f, 0.0f }, { -1320.0f, 170.0f, -2900.0f } }, { 0x02, 0xFF, 0x0142, 110, -2, 50.0f, 0.5f, { 0.0f, 150.0f, 0.0f }, { -1320.0f, 170.0f, -2900.0f } },
{ 0x0B, 0xFF, 0x4242, 100, 2, 70.0f, 0.1f, { 0.0f, 150.0f, 50.0f }, { -1.0f, -1.0f, -1.0f } }, { 0x0B, 0xFF, 0x4242, 100, 2, 70.0f, 0.1f, { 0.0f, 150.0f, 50.0f }, { -1.0f, -1.0f, -1.0f } },
{ 0x03, 0xFF, 0x4242, 60, 2, 45.0f, 0.01f, { 0.0f, 150.0f, 50.0f }, { 0.0f, 200.0f, -80.0f } }, { 0x03, 0xFF, 0x4242, 60, 2, 45.0f, 0.01f, { 0.0f, 150.0f, 50.0f }, { 0.0f, 200.0f, -80.0f } },
}; };
OnePointCsFull D_801237CC[5] = { static OnePointCsFull D_801237CC[5] = {
{ 0x8F, 0xFF, 0x4242, 20, 0, 50.0f, 1.0f, { 0.0f, 50.0f, -10.0f }, { 0.0f, 0.0f, 100.0f } }, { 0x8F, 0xFF, 0x4242, 20, 0, 50.0f, 1.0f, { 0.0f, 50.0f, -10.0f }, { 0.0f, 0.0f, 100.0f } },
{ 0x0A, 0xFF, 0x0101, 80, 0, 75.0f, 1.0f, { 2900.0f, 1300.0f, 530.0f }, { 2800.0f, 1190.0f, 540.0f } }, { 0x0A, 0xFF, 0x0101, 80, 0, 75.0f, 1.0f, { 2900.0f, 1300.0f, 530.0f }, { 2800.0f, 1190.0f, 540.0f } },
{ 0x0F, 0xFF, 0x0000, 10, 0, 75.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f } }, { 0x0F, 0xFF, 0x0000, 10, 0, 75.0f, 1.0f, { -1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f } },

View File

@ -320,16 +320,18 @@ void BgHeavyBlock_Wait(BgHeavyBlock* this, GlobalContext* globalCtx) {
if (Actor_HasParent(&this->dyna.actor, globalCtx)) { if (Actor_HasParent(&this->dyna.actor, globalCtx)) {
this->timer = 0; this->timer = 0;
switch (this->dyna.actor.params & 0xFF) { if (!CVar_GetS32("gFasterHeavyBlockLift", 0)) {
case HEAVYBLOCK_BREAKABLE: switch (this->dyna.actor.params & 0xFF) {
OnePointCutscene_Init(globalCtx, 4020, 270, &this->dyna.actor, MAIN_CAM); case HEAVYBLOCK_BREAKABLE:
break; OnePointCutscene_Init(globalCtx, 4020, 270, &this->dyna.actor, MAIN_CAM);
case HEAVYBLOCK_UNBREAKABLE: break;
OnePointCutscene_Init(globalCtx, 4021, 220, &this->dyna.actor, MAIN_CAM); case HEAVYBLOCK_UNBREAKABLE:
break; OnePointCutscene_Init(globalCtx, 4021, 220, &this->dyna.actor, MAIN_CAM);
case HEAVYBLOCK_UNBREAKABLE_OUTSIDE_CASTLE: break;
OnePointCutscene_Init(globalCtx, 4022, 210, &this->dyna.actor, MAIN_CAM); case HEAVYBLOCK_UNBREAKABLE_OUTSIDE_CASTLE:
break; OnePointCutscene_Init(globalCtx, 4022, 210, &this->dyna.actor, MAIN_CAM);
break;
}
} }
quakeIndex = Quake_Add(GET_ACTIVE_CAM(globalCtx), 3); quakeIndex = Quake_Add(GET_ACTIVE_CAM(globalCtx), 3);
@ -367,7 +369,9 @@ void BgHeavyBlock_LiftedUp(BgHeavyBlock* this, GlobalContext* globalCtx) {
this->timer++; this->timer++;
func_8002DF54(globalCtx, &player->actor, 8); if (!CVar_GetS32("gFasterHeavyBlockLift", 0)) {
func_8002DF54(globalCtx, &player->actor, 8);
}
// if parent is NULL, link threw it // if parent is NULL, link threw it
if (Actor_HasNoParent(&this->dyna.actor, globalCtx)) { if (Actor_HasNoParent(&this->dyna.actor, globalCtx)) {
@ -404,10 +408,13 @@ void BgHeavyBlock_Fly(BgHeavyBlock* this, GlobalContext* globalCtx) {
Quake_SetQuakeValues(quakeIndex, 14, 2, 100, 0); Quake_SetQuakeValues(quakeIndex, 14, 2, 100, 0);
Quake_SetCountdown(quakeIndex, 30); Quake_SetCountdown(quakeIndex, 30);
quakeIndex = Quake_Add(GET_ACTIVE_CAM(globalCtx), 2); // We don't want this arbitrarily long quake with the enhancement enabled
Quake_SetSpeed(quakeIndex, 12000); if (!CVar_GetS32("gFasterHeavyBlockLift", 0)) {
Quake_SetQuakeValues(quakeIndex, 5, 0, 0, 0); quakeIndex = Quake_Add(GET_ACTIVE_CAM(globalCtx), 2);
Quake_SetCountdown(quakeIndex, 999); Quake_SetSpeed(quakeIndex, 12000);
Quake_SetQuakeValues(quakeIndex, 5, 0, 0, 0);
Quake_SetCountdown(quakeIndex, 999);
}
SoundSource_PlaySfxAtFixedWorldPos(globalCtx, &this->dyna.actor.world.pos, 30, SoundSource_PlaySfxAtFixedWorldPos(globalCtx, &this->dyna.actor.world.pos, 30,
NA_SE_EV_ELECTRIC_EXPLOSION); NA_SE_EV_ELECTRIC_EXPLOSION);

View File

@ -4617,8 +4617,8 @@ void func_8083A0F4(GlobalContext* globalCtx, Player* this) {
anim = D_80853914[PLAYER_ANIMGROUP_13][this->modelAnimType]; anim = D_80853914[PLAYER_ANIMGROUP_13][this->modelAnimType];
} }
if (CVar_GetS32("gFasterHeavyBlockLift", 0) && interactActorId == ACTOR_BG_HEAVY_BLOCK) { if (CVar_GetS32("gFasterHeavyBlockLift", 0) && (interactActorId == ACTOR_EN_ISHI || interactActorId == ACTOR_BG_HEAVY_BLOCK)) {
LinkAnimation_PlayOnceSetSpeed(globalCtx, &this->skelAnime, anim, 3.0f); LinkAnimation_PlayOnceSetSpeed(globalCtx, &this->skelAnime, anim, 5.0f);
} else { } else {
LinkAnimation_PlayOnce(globalCtx, &this->skelAnime, anim); LinkAnimation_PlayOnce(globalCtx, &this->skelAnime, anim);
} }
@ -9136,6 +9136,10 @@ void func_80846120(Player* this, GlobalContext* globalCtx) {
if (LinkAnimation_OnFrame(&this->skelAnime, 229.0f)) { if (LinkAnimation_OnFrame(&this->skelAnime, 229.0f)) {
Actor* heldActor = this->heldActor; Actor* heldActor = this->heldActor;
if (CVar_GetS32("gFasterHeavyBlockLift", 0)) {
// This is the difference in rotation when the animation is sped up 5x
heldActor->shape.rot.x -= 3510;
}
heldActor->speedXZ = Math_SinS(heldActor->shape.rot.x) * 40.0f; heldActor->speedXZ = Math_SinS(heldActor->shape.rot.x) * 40.0f;
heldActor->velocity.y = Math_CosS(heldActor->shape.rot.x) * 40.0f; heldActor->velocity.y = Math_CosS(heldActor->shape.rot.x) * 40.0f;
heldActor->gravity = -2.0f; heldActor->gravity = -2.0f;