mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-20 21:33:40 -07:00
Increase Crawl Speed (#3366)
* Increase animation speeds, crawl speed, add magic numbers for camera timer, add to menu and presets * Remove extra space, reformat comments * Initialilze CVar at 0, Initialize default timer, set default case for timer, change all CVarGets to 1, reorg logic * Fix remaining CVars + unify logic * block out vanilla code + comments * new documentation formatting * Simplify camera swing fix * Remove redundant multiplication * Update soh/src/code/z_onepointdemo.c reduce code duplication Co-authored-by: Garrett Cox <garrettjcox@gmail.com> --------- Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
This commit is contained in:
parent
4d5adbc80f
commit
7ff46ba1a7
4 changed files with 79 additions and 18 deletions
|
@ -70,6 +70,7 @@ const std::vector<const char*> enhancementsCvars = {
|
||||||
"gForgeTime",
|
"gForgeTime",
|
||||||
"gClimbSpeed",
|
"gClimbSpeed",
|
||||||
"gFasterBlockPush",
|
"gFasterBlockPush",
|
||||||
|
"gCrawlSpeed",
|
||||||
"gFasterHeavyBlockLift",
|
"gFasterHeavyBlockLift",
|
||||||
"gNoForcedNavi",
|
"gNoForcedNavi",
|
||||||
"gSkulltulaFreeze",
|
"gSkulltulaFreeze",
|
||||||
|
|
|
@ -542,6 +542,7 @@ void DrawEnhancementsMenu() {
|
||||||
UIWidgets::PaddedEnhancementSliderInt("King Zora Speed: %dx", "##MWEEPSPEED", "gMweepSpeed", 1, 5, "", 1, true, false, true);
|
UIWidgets::PaddedEnhancementSliderInt("King Zora Speed: %dx", "##MWEEPSPEED", "gMweepSpeed", 1, 5, "", 1, true, false, true);
|
||||||
UIWidgets::PaddedEnhancementSliderInt("Vine/Ladder Climb speed +%d", "##CLIMBSPEED", "gClimbSpeed", 0, 12, "", 0, true, false, true);
|
UIWidgets::PaddedEnhancementSliderInt("Vine/Ladder Climb speed +%d", "##CLIMBSPEED", "gClimbSpeed", 0, 12, "", 0, true, false, true);
|
||||||
UIWidgets::PaddedEnhancementSliderInt("Block pushing speed +%d", "##BLOCKSPEED", "gFasterBlockPush", 0, 5, "", 0, true, false, true);
|
UIWidgets::PaddedEnhancementSliderInt("Block pushing speed +%d", "##BLOCKSPEED", "gFasterBlockPush", 0, 5, "", 0, true, false, true);
|
||||||
|
UIWidgets::PaddedEnhancementSliderInt("Crawl speed %dx", "##CRAWLSPEED", "gCrawlSpeed", 1, 5, "", 1, true, false, true);
|
||||||
UIWidgets::PaddedEnhancementCheckbox("Faster Heavy Block Lift", "gFasterHeavyBlockLift", false, false);
|
UIWidgets::PaddedEnhancementCheckbox("Faster Heavy Block Lift", "gFasterHeavyBlockLift", false, false);
|
||||||
UIWidgets::Tooltip("Speeds up lifting silver rocks and obelisks");
|
UIWidgets::Tooltip("Speeds up lifting silver rocks and obelisks");
|
||||||
UIWidgets::PaddedEnhancementCheckbox("Skip Pickup Messages", "gFastDrops", true, false);
|
UIWidgets::PaddedEnhancementCheckbox("Skip Pickup Messages", "gFastDrops", true, false);
|
||||||
|
|
|
@ -70,6 +70,12 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 camIdx, s16 csId, Actor* actor
|
||||||
f32 tempRand;
|
f32 tempRand;
|
||||||
Unique9OnePointCs* csInfo = ONEPOINT_CS_INFO(csCam);
|
Unique9OnePointCs* csInfo = ONEPOINT_CS_INFO(csCam);
|
||||||
|
|
||||||
|
// #region SOH [Enhancement]
|
||||||
|
//the default is 90, lower values necessary to prevent camera swing as animation speeds up
|
||||||
|
s16 camCrawlTemp = CVarGetInteger("gCrawlSpeed", 1);
|
||||||
|
s16 camCrawlTimer = D_8012042C / camCrawlTemp;
|
||||||
|
// #endregion
|
||||||
|
|
||||||
switch (csId) {
|
switch (csId) {
|
||||||
case 1020:
|
case 1020:
|
||||||
if (timer < 20) {
|
if (timer < 20) {
|
||||||
|
@ -330,13 +336,26 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 camIdx, s16 csId, Actor* actor
|
||||||
case 9601:
|
case 9601:
|
||||||
Play_CameraChangeSetting(play, camIdx, CAM_SET_CS_3);
|
Play_CameraChangeSetting(play, camIdx, CAM_SET_CS_3);
|
||||||
Play_CameraChangeSetting(play, MAIN_CAM, mainCam->prevSetting);
|
Play_CameraChangeSetting(play, MAIN_CAM, mainCam->prevSetting);
|
||||||
OnePointCutscene_SetCsCamPoints(csCam, D_80120430 | 0x1000, D_8012042C, D_80120308, D_80120398);
|
if (CVarGetInteger("gCrawlSpeed", 1) > 1) {
|
||||||
|
OnePointCutscene_SetCsCamPoints(csCam, D_80120430 | 0x1000, camCrawlTimer, D_80120308, D_80120398);
|
||||||
|
} else {
|
||||||
|
OnePointCutscene_SetCsCamPoints(csCam, D_80120430 | 0x1000, D_8012042C, D_80120308, D_80120398);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 9602:
|
case 9602:
|
||||||
Play_CameraChangeSetting(play, camIdx, CAM_SET_CS_3);
|
// #region SOH [Enhancement]
|
||||||
Play_CameraChangeSetting(play, MAIN_CAM, mainCam->prevSetting);
|
if (CVarGetInteger("gCrawlSpeed", 1) > 1) {
|
||||||
OnePointCutscene_SetCsCamPoints(csCam, D_80120430 | 0x1000, D_8012042C, D_80120308, D_80120434);
|
Play_CameraChangeSetting(play, camIdx, CAM_SET_CS_3);
|
||||||
break;
|
Play_CameraChangeSetting(play, MAIN_CAM, mainCam->prevSetting);
|
||||||
|
OnePointCutscene_SetCsCamPoints(csCam, D_80120430 | 0x1000, camCrawlTimer, D_80120308, D_80120434);
|
||||||
|
break;
|
||||||
|
// #endregion
|
||||||
|
} else {
|
||||||
|
Play_CameraChangeSetting(play, camIdx, CAM_SET_CS_3);
|
||||||
|
Play_CameraChangeSetting(play, MAIN_CAM, mainCam->prevSetting);
|
||||||
|
OnePointCutscene_SetCsCamPoints(csCam, D_80120430 | 0x1000, D_8012042C, D_80120308, D_80120434);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case 4175:
|
case 4175:
|
||||||
csInfo->keyFrames = D_8012147C;
|
csInfo->keyFrames = D_8012147C;
|
||||||
csInfo->keyFrameCnt = 4;
|
csInfo->keyFrameCnt = 4;
|
||||||
|
|
|
@ -6982,9 +6982,19 @@ s32 Player_TryEnteringCrawlspace(Player* this, PlayState* play, u32 interactWall
|
||||||
this->actor.world.pos.z = zVertex1 + (distToInteractWall * wallPolyNormZ);
|
this->actor.world.pos.z = zVertex1 + (distToInteractWall * wallPolyNormZ);
|
||||||
func_80832224(this);
|
func_80832224(this);
|
||||||
this->actor.prevPos = this->actor.world.pos;
|
this->actor.prevPos = this->actor.world.pos;
|
||||||
Player_AnimPlayOnce(play, this, &gPlayerAnim_link_child_tunnel_start);
|
// #region SOH [Enhancement]
|
||||||
Player_AnimReplaceApplyFlags(play, this, 0x9D);
|
if (CVarGetInteger("gCrawlSpeed", 1) > 1) {
|
||||||
|
// increase animation speed when entering a tunnel
|
||||||
|
LinkAnimation_Change(play, &this->skelAnime, &gPlayerAnim_link_child_tunnel_start,
|
||||||
|
((CVarGetInteger("gCrawlSpeed", 1) + 1.0f) / 2.0f), 0.0f,
|
||||||
|
Animation_GetLastFrame(&gPlayerAnim_link_child_tunnel_start), ANIMMODE_ONCE,
|
||||||
|
0.0f);
|
||||||
|
Player_AnimReplaceApplyFlags(play, this, 0x9D);
|
||||||
|
// #endregion
|
||||||
|
} else {
|
||||||
|
Player_AnimPlayOnce(play, this, &gPlayerAnim_link_child_tunnel_start);
|
||||||
|
Player_AnimReplaceApplyFlags(play, this, 0x9D);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7065,16 +7075,39 @@ s32 Player_TryLeavingCrawlspace(Player* this, PlayState* play) {
|
||||||
|
|
||||||
if (this->linearVelocity > 0.0f) {
|
if (this->linearVelocity > 0.0f) {
|
||||||
this->actor.shape.rot.y = this->actor.wallYaw + 0x8000;
|
this->actor.shape.rot.y = this->actor.wallYaw + 0x8000;
|
||||||
Player_AnimPlayOnce(play, this, &gPlayerAnim_link_child_tunnel_end);
|
// #region SOH [Enhancement]
|
||||||
Player_AnimReplaceApplyFlags(play, this, 0x9D);
|
if (CVarGetInteger("gCrawlSpeed", 1) > 1) {
|
||||||
OnePointCutscene_Init(play, 9601, 999, NULL, MAIN_CAM);
|
// animation when exiting a tunnel forward
|
||||||
|
LinkAnimation_Change(play, &this->skelAnime, &gPlayerAnim_link_child_tunnel_end,
|
||||||
|
((CVarGetInteger("gCrawlSpeed", 1) + 1.0f) / 2.0f), 0.0f,
|
||||||
|
Animation_GetLastFrame(&gPlayerAnim_link_child_tunnel_end), ANIMMODE_ONCE,
|
||||||
|
0.0f);
|
||||||
|
Player_AnimReplaceApplyFlags(play, this, 0x9D);
|
||||||
|
OnePointCutscene_Init(play, 9601, 999, NULL, MAIN_CAM);
|
||||||
|
// #endregion
|
||||||
|
} else {
|
||||||
|
Player_AnimPlayOnce(play, this, &gPlayerAnim_link_child_tunnel_end);
|
||||||
|
Player_AnimReplaceApplyFlags(play, this, 0x9D);
|
||||||
|
OnePointCutscene_Init(play, 9601, 999, NULL, MAIN_CAM);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this->actor.shape.rot.y = this->actor.wallYaw;
|
this->actor.shape.rot.y = this->actor.wallYaw;
|
||||||
LinkAnimation_Change(play, &this->skelAnime, &gPlayerAnim_link_child_tunnel_start, -1.0f,
|
// #region SOH [Enhancement]
|
||||||
Animation_GetLastFrame(&gPlayerAnim_link_child_tunnel_start), 0.0f, ANIMMODE_ONCE,
|
// animation when exiting a tunnel backward
|
||||||
0.0f);
|
if (CVarGetInteger("gCrawlSpeed",1) > 1) {
|
||||||
Player_AnimReplaceApplyFlags(play, this, 0x9D);
|
LinkAnimation_Change(play, &this->skelAnime, &gPlayerAnim_link_child_tunnel_start,
|
||||||
OnePointCutscene_Init(play, 9602, 999, NULL, MAIN_CAM);
|
-1.0f * ((CVarGetInteger("gCrawlSpeed", 1) + 1.0f) / 2.0f),
|
||||||
|
Animation_GetLastFrame(&gPlayerAnim_link_child_tunnel_start), 0.0f, ANIMMODE_ONCE, 0.0f);
|
||||||
|
Player_AnimReplaceApplyFlags(play, this, 0x9D);
|
||||||
|
OnePointCutscene_Init(play, 9602, 999, NULL, MAIN_CAM);
|
||||||
|
// #endregion
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
LinkAnimation_Change(play, &this->skelAnime, &gPlayerAnim_link_child_tunnel_start, -1.0f,
|
||||||
|
Animation_GetLastFrame(&gPlayerAnim_link_child_tunnel_start), 0.0f, ANIMMODE_ONCE, 0.0f);
|
||||||
|
Player_AnimReplaceApplyFlags(play, this, 0x9D);
|
||||||
|
OnePointCutscene_Init(play, 9602, 999, NULL, MAIN_CAM);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this->currentYaw = this->actor.shape.rot.y;
|
this->currentYaw = this->actor.shape.rot.y;
|
||||||
|
@ -12625,8 +12658,15 @@ void func_8084C760(Player* this, PlayState* play) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// player speed in a tunnel
|
||||||
if (!Player_TryLeavingCrawlspace(this, play)) {
|
if (!Player_TryLeavingCrawlspace(this, play)) {
|
||||||
this->linearVelocity = sControlInput->rel.stick_y * 0.03f;
|
// #region SOH [Enhancement]
|
||||||
|
if (CVarGetInteger("gCrawlSpeed", 1) > 1) {
|
||||||
|
this->linearVelocity = sControlInput->rel.stick_y * 0.03f * CVarGetInteger("gCrawlSpeed", 1);
|
||||||
|
// #endregion
|
||||||
|
} else {
|
||||||
|
this->linearVelocity = sControlInput->rel.stick_y * 0.03f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue