mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-12-23 08:38:52 -05:00
Restored vanilla pause buffering and input behavior broken by 'easy frame advance' cheat
Currently, holding A and repeatedly pausing and unpausing will cause that A input to be repeated, resulting in Link rolling without additional A inputs. Similarly, holding Z and unpausing in front of a candidate actor will cause Link to switch Z-targeting to that actor. As a side effect, this also does not allow inputs to be buffered before the Subscreen has finished its closing animation, which is how vanilla also works. This is slightly unfortunate because the "freeze" before the game resumes is considerably shorter in Shipwright, but it'd be better to implement a fake delay there if we want to make it more forgiving.
This commit is contained in:
parent
9325e6d0a5
commit
4a8e6dcfea
@ -1027,6 +1027,9 @@ namespace GameMenuBar {
|
|||||||
UIWidgets::Tooltip("Allows any item to be equipped, regardless of age\nAlso allows Child to use Adult strength upgrades");
|
UIWidgets::Tooltip("Allows any item to be equipped, regardless of age\nAlso allows Child to use Adult strength upgrades");
|
||||||
UIWidgets::PaddedEnhancementCheckbox("Easy Frame Advancing", "gCheatEasyPauseBufferEnabled", true, false);
|
UIWidgets::PaddedEnhancementCheckbox("Easy Frame Advancing", "gCheatEasyPauseBufferEnabled", true, false);
|
||||||
UIWidgets::Tooltip("Continue holding START button when unpausing to only advance a single frame and then re-pause");
|
UIWidgets::Tooltip("Continue holding START button when unpausing to only advance a single frame and then re-pause");
|
||||||
|
const bool bEasyFrameAdvanceEnabled = CVarGetInteger("gCheatEasyPauseBufferEnabled", 0);
|
||||||
|
UIWidgets::PaddedEnhancementCheckbox("Easy Input Buffering", "gCheatEasyInputBufferingEnabled", true, false, bEasyFrameAdvanceEnabled, "Forced enabled when Easy Frame Advancing is enabled");
|
||||||
|
UIWidgets::Tooltip("Inputs that are held down while the Subscreen is closing will be pressed when the game is resumed");
|
||||||
UIWidgets::PaddedEnhancementCheckbox("Unrestricted Items", "gNoRestrictItems", true, false);
|
UIWidgets::PaddedEnhancementCheckbox("Unrestricted Items", "gNoRestrictItems", true, false);
|
||||||
UIWidgets::Tooltip("Allows you to use any item at any location");
|
UIWidgets::Tooltip("Allows you to use any item at any location");
|
||||||
UIWidgets::PaddedEnhancementCheckbox("Freeze Time", "gFreezeTime", true, false);
|
UIWidgets::PaddedEnhancementCheckbox("Freeze Time", "gFreezeTime", true, false);
|
||||||
|
@ -3655,7 +3655,9 @@ void KaleidoScope_Update(PlayState* play)
|
|||||||
switch (pauseCtx->unk_1E4) {
|
switch (pauseCtx->unk_1E4) {
|
||||||
case 0:
|
case 0:
|
||||||
if (CHECK_BTN_ALL(input->press.button, BTN_START)) {
|
if (CHECK_BTN_ALL(input->press.button, BTN_START)) {
|
||||||
|
if (CVarGetInteger("gCheatEasyPauseBufferEnabled", 0) || CVarGetInteger("gCheatEasyInputBufferingEnabled", 0)) {
|
||||||
CVarSetInteger("gPauseBufferBlockInputFrame", 9);
|
CVarSetInteger("gPauseBufferBlockInputFrame", 9);
|
||||||
|
}
|
||||||
if (CVarGetInteger("gCheatEasyPauseBufferEnabled", 0)) {
|
if (CVarGetInteger("gCheatEasyPauseBufferEnabled", 0)) {
|
||||||
CVarSetInteger("gCheatEasyPauseBufferFrameAdvance", 13);
|
CVarSetInteger("gCheatEasyPauseBufferFrameAdvance", 13);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user