mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-06 02:58:18 -04:00
Time Stones Feature
This commit is contained in:
@@ -27,6 +27,9 @@ public:
|
||||
bool chkEveOccur();
|
||||
void exeModeHowl();
|
||||
void exeModeMapDisp();
|
||||
#if TARGET_PC
|
||||
void exeModeSetTime();
|
||||
#endif
|
||||
bool chkMapDispMode();
|
||||
u8 getGoldWolfIdx();
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@ struct UserSettings {
|
||||
ConfigVar<bool> noMissClimbing;
|
||||
ConfigVar<bool> fastTears;
|
||||
ConfigVar<bool> instantSaves;
|
||||
ConfigVar<bool> timeStones;
|
||||
|
||||
// Preferences
|
||||
ConfigVar<bool> enableMirrorMode;
|
||||
|
||||
@@ -3868,12 +3868,7 @@ void daAlink_c::setWolfHowlNotHappen(int param_0) {
|
||||
}
|
||||
|
||||
int daAlink_c::procWolfHowlDemoInit() {
|
||||
if (!dComIfGp_event_compulsory(this, NULL, 0xFFFF)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
mDemo.setSpecialDemoType();
|
||||
|
||||
#if TARGET_PC
|
||||
s16 name;
|
||||
if (field_0x27f4 != NULL) {
|
||||
name = fopAcM_GetName(field_0x27f4);
|
||||
@@ -3881,6 +3876,28 @@ int daAlink_c::procWolfHowlDemoInit() {
|
||||
name = fpcNm_ALINK_e;
|
||||
}
|
||||
|
||||
if (name == fpcNm_Obj_WindStone_e && !static_cast<daWindStone_c*>(field_0x27f4)->chkEveOccur() && dusk::getSettings().game.timeStones) {
|
||||
Z2GetSeMgr()->seStart(Z2SE_READ_RIDDLE_B, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
||||
dKy_instant_timechg(0.0f);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!dComIfGp_event_compulsory(this, NULL, 0xFFFF)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
mDemo.setSpecialDemoType();
|
||||
|
||||
#if !TARGET_PC
|
||||
s16 name;
|
||||
if (field_0x27f4 != NULL) {
|
||||
name = fopAcM_GetName(field_0x27f4);
|
||||
} else {
|
||||
name = fpcNm_ALINK_e;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (name == fpcNm_Tag_WaraHowl_e) {
|
||||
shape_angle.y = field_0x27f4->shape_angle.y;
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
@@ -87,6 +87,9 @@ int daWindStone_c::execute() {
|
||||
exeModeMapDisp();
|
||||
break;
|
||||
case 2:
|
||||
#if TARGET_PC
|
||||
exeModeSetTime();
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
setModelMtx();
|
||||
@@ -180,6 +183,16 @@ void daWindStone_c::exeModeMapDisp() {
|
||||
}
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
void daWindStone_c::exeModeSetTime() {
|
||||
attention_info.flags = 0;
|
||||
if (!chkEveOccur() && chkWlfInRange() && dusk::getSettings().game.timeStones) {
|
||||
attention_info.flags |= fopAc_AttnFlag_ETC_e;
|
||||
attention_info.distances[fopAc_attn_ETC_e] = 65;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
bool daWindStone_c::chkMapDispMode() {
|
||||
if (fopAcM_isSwitch(this, getSwBit2())) {
|
||||
return false;
|
||||
|
||||
@@ -37,6 +37,7 @@ static void ApplyPresetDusk() {
|
||||
s.game.instantSaves.setValue(true);
|
||||
s.game.midnasLamentNonStop.setValue(true);
|
||||
s.game.enableFrameInterpolation.setValue(true);
|
||||
s.game.timeStones.setValue(true);
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
|
||||
@@ -63,6 +63,11 @@ namespace dusk {
|
||||
ImGui::SetTooltip("Skip the delay when writing to the Memory Card.");
|
||||
}
|
||||
|
||||
config::ImGuiCheckbox("Time Stones", getSettings().game.timeStones);
|
||||
if (ImGui::IsItemHovered()) {
|
||||
ImGui::SetTooltip("Allows Wolf Link to use Howling Stones to set the time to midnight.");
|
||||
}
|
||||
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ UserSettings g_userSettings = {
|
||||
.noMissClimbing {"game.noMissClimbing", false},
|
||||
.fastTears {"game.fastTears", false},
|
||||
.instantSaves {"game.instantSaves", false},
|
||||
.timeStones {"game.timeStones", false},
|
||||
|
||||
// Preferences
|
||||
.enableMirrorMode {"game.enableMirrorMode", false},
|
||||
@@ -111,6 +112,7 @@ void registerSettings() {
|
||||
Register(g_userSettings.game.fastClimbing);
|
||||
Register(g_userSettings.game.fastTears);
|
||||
Register(g_userSettings.game.instantSaves);
|
||||
Register(g_userSettings.game.timeStones);
|
||||
Register(g_userSettings.game.enableMirrorMode);
|
||||
Register(g_userSettings.game.invertCameraXAxis);
|
||||
Register(g_userSettings.game.enableBloom);
|
||||
|
||||
Reference in New Issue
Block a user