Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions mm/2s2h/BenGui/BenMenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1221,6 +1221,9 @@ void BenMenu::AddEnhancements() {
AddSidebarEntry("Enhancements", "Items/Songs", 3);
// Mask Enhancements
AddWidget(path, "Masks", WIDGET_SEPARATOR_TEXT);
AddWidget(path, "Equippable While Swimming", WIDGET_CVAR_CHECKBOX)
.CVar("gEnhancements.Masks.EquipWhileSwimming")
.Options(CheckboxOptions().Tooltip("Human Link can equip any non-transformation mask while swimming."));
AddWidget(path, "Blast Mask has Powder Keg Force", WIDGET_CVAR_CHECKBOX)
.CVar("gEnhancements.Masks.BlastMaskKeg")
.Options(CheckboxOptions().Tooltip("Blast Mask can also destroy objects only the Powder Keg can."));
Expand Down
25 changes: 25 additions & 0 deletions mm/2s2h/Enhancements/Masks/EquipWhileSwimming.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#include <libultraship/bridge/consolevariablebridge.h>
#include "2s2h/GameInteractor/GameInteractor.h"
#include "2s2h/ShipInit.hpp"

#define CVAR_NAME "gEnhancements.Masks.EquipWhileSwimming"
#define CVAR CVarGetInteger(CVAR_NAME, 0)

static void RegisterEquipWhileSwimming() {
COND_VB_SHOULD(VB_USE_ITEM_CONSIDER_ITEM_ACTION, CVAR, {
PlayerItemAction itemAction = *va_arg(args, PlayerItemAction*);
if (itemAction >= PLAYER_IA_MASK_MIN && itemAction < PLAYER_IA_MASK_GIANT) {
*should = true;
}
});

COND_VB_SHOULD(VB_DISABLE_ITEM_UNDERWATER, CVAR, {
s32 item = va_arg(args, s32);
if (GET_PLAYER_FORM == PLAYER_FORM_HUMAN && item > ITEM_MASK_FIERCE_DEITY && item < ITEM_MASK_GIANT &&
Player_GetEnvironmentalHazard(gPlayState) > PLAYER_ENV_HAZARD_UNDERWATER_FLOOR) {
*should = false;
}
});
}

static RegisterShipInitFunc initFunc(RegisterEquipWhileSwimming, { CVAR_NAME });
Loading