blob: 483dd6b3df200c1f044642b61c2db893e5c0576f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include <libultraship/bridge/consolevariablebridge.h>
#include "2s2h/GameInteractor/GameInteractor.h"
#include "2s2h/ShipInit.hpp"
extern "C" {
#include "variables.h"
}
#define CVAR_NAME "gEnhancements.Player.InfiniteDekuHopping"
#define CVAR CVarGetInteger(CVAR_NAME, 0)
void RegisterInfiniteDekuHopping() {
COND_VB_SHOULD(VB_DEKU_LINK_SPIN_ON_LAST_HOP, CVAR, {
if (*should) {
Player* player = GET_PLAYER(gPlayState);
if (gSaveContext.save.saveInfo.playerData.health != 0) {
player->remainingHopsCounter = 5;
}
}
});
COND_VB_SHOULD(VB_APPLY_AIR_CONTROL, CVAR, {
f32* dekuSpeedTargetMultiplier = va_arg(args, f32*);
Player* player = GET_PLAYER(gPlayState);
if (player->transformation == PLAYER_FORM_DEKU && player->stateFlags3 & PLAYER_STATE3_200000) {
// Deku Link's air control speedTarget gets halved, so we negate that by doubling it when deku hopping
*dekuSpeedTargetMultiplier *= 2.0f;
}
});
}
static RegisterShipInitFunc initFunc(RegisterInfiniteDekuHopping, { CVAR_NAME });
|