Skip to content
Open
Show file tree
Hide file tree
Changes from 8 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
48 changes: 38 additions & 10 deletions mm/2s2h/BenGui/BenMenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -985,16 +985,6 @@ void BenMenu::AddEnhancements() {
.CVar("gEnhancements.Cycle.DoNotResetTimeSpeed")
.Options(CheckboxOptions().Tooltip(
"Playing the Song of Time will not reset the current time speed set by Inverted Song of Time."));
AddWidget(path, "Keep Express Mail", WIDGET_CVAR_CHECKBOX)
.CVar("gEnhancements.Cycle.KeepExpressMail")
.Options(CheckboxOptions().Tooltip(
"Allows the player to keep the Express Mail in their inventory after delivering it "
"the first time, so that both deliveries can be done within one cycle."));
AddWidget(path, "Stop Oceanside Spider House squatter", WIDGET_CVAR_CHECKBOX)
.CVar("gEnhancements.Cycle.StopOceansideSpiderHouseSquatter")
.Options(
CheckboxOptions().Tooltip("The Oceanside Spider House squatter will not move in until the player interacts "
"with him. Forced on for randomizers."));
AddWidget(path, "Unstable", WIDGET_SEPARATOR_TEXT).Options(WidgetOptions().Color(Colors::Orange));
AddWidget(path, "Disable Save Delay", WIDGET_CVAR_CHECKBOX)
.CVar("gEnhancements.Saving.DisableSaveDelay")
Expand Down Expand Up @@ -1414,6 +1404,44 @@ void BenMenu::AddEnhancements() {
.Max(60)
.DefaultValue(60));

path.column = SECTION_COLUMN_3;
AddWidget(path, "3 Day 100%", WIDGET_SEPARATOR_TEXT);
AddWidget(path, "Deku Link can damage Sakon", WIDGET_CVAR_CHECKBOX)
.CVar("gEnhancements.DifficultyOptions.DekuDamageSuttari")
.Options(CheckboxOptions().Tooltip(
"Allows the player to damage Sakon the Thief as Deku Link allowing the player to obtain the "
"Blast Mask and the All-Night Mask in the first Deku Link Only cycle."));
AddWidget(path, "Make Curiosity Shop not racist", WIDGET_CVAR_CHECKBOX)
.CVar("gEnhancements.DifficultyOptions.NotRacistCuriosityShop")
.Options(
CheckboxOptions().Tooltip("Allows the player to shop at the curiosity shop regardless of race. "
"This lets you purchase the All-Night Mask in the first Deku Link Only cycle."));
AddWidget(path, "Allow bank money for AN Mask", WIDGET_CVAR_CHECKBOX)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would prefer if All-Night Mask wasn't abbreviated to AN Mask. I find that a bit confusing.

.CVar("gEnhancements.DifficultyOptions.AllNightMaskWithBankMoney")
.Options(
CheckboxOptions().Tooltip("Allows the player to use their bank money to purchase the All-Night Mask. "
"This lets you purchase the All-Night Mask in the first Deku Link Only cycle."));
AddWidget(path, "No timeskip with AN Mask", WIDGET_CVAR_CHECKBOX)
.CVar("gEnhancements.DifficultyOptions.AllNightMaskNoTimeSkip")
.Options(CheckboxOptions().Tooltip(
"Normally, listening to Anju's Grandmother's stories will skip you forward in time. "
"This simply disables that so you don't skip forward if you're wearing the All-Night Mask."));
AddWidget(path, "Mayor argues until Moonfall", WIDGET_CVAR_CHECKBOX)
.CVar("gEnhancements.DifficultyOptions.MayorArguesUntilMoonfall")
.Options(CheckboxOptions().Tooltip(
"Normally, the mayor, the soldiers, and craftsmen will stop arguing by night on the third day. "
"This keeps them arguing so you can show them the Couple's Mask for the Piece of Heart."));
AddWidget(path, "Keep Express Mail", WIDGET_CVAR_CHECKBOX)
.CVar("gEnhancements.DifficultyOptions.KeepExpressMail")
.Options(CheckboxOptions().Tooltip(
"Allows the player to keep the Express Mail in their inventory after delivering it "
"the first time, so that both deliveries can be done within one cycle."));
AddWidget(path, "3 Day 100% - Optional", WIDGET_SEPARATOR_TEXT);
AddWidget(path, "Stop Oceanside Spider House squatter", WIDGET_CVAR_CHECKBOX)
.CVar("gEnhancements.DifficultyOptions.StopOceansideSpiderHouseSquatter")
.Options(
CheckboxOptions().Tooltip("The Oceanside Spider House squatter will not move in until the player interacts "
"with him. Forced on for randomizers."));
// HUD Editor
path = { "Enhancements", "HUD Editor", SECTION_COLUMN_1 };
AddSidebarEntry("Enhancements", "HUD Editor", 1);
Expand Down
12 changes: 12 additions & 0 deletions mm/2s2h/Enhancements/DifficultyOptions/AllNightMaskNoTimeSkip.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#include "public/bridge/consolevariablebridge.h"
#include "2s2h/GameInteractor/GameInteractor.h"
#include "2s2h/ShipInit.hpp"

#define CVAR_NAME "gEnhancements.DifficultyOptions.AllNightMaskNoTimeSkip"
#define CVAR CVarGetInteger(CVAR_NAME, 0)

void RegisterAllNightMaskNoTimeSkip() {
COND_VB_SHOULD(VB_ALL_NIGHT_TIME_SKIP, CVAR, { *should = false; });
}

static RegisterShipInitFunc initFunc(RegisterAllNightMaskNoTimeSkip, { CVAR_NAME });
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#include "public/bridge/consolevariablebridge.h"
#include "2s2h/GameInteractor/GameInteractor.h"
#include "2s2h/ShipInit.hpp"

#define CVAR_NAME "gEnhancements.DifficultyOptions.AllNightMaskWithBankMoney"
#define CVAR CVarGetInteger(CVAR_NAME, 0)

void RegisterAllNightMaskWithBankMoney() {
COND_VB_SHOULD(VB_NOT_OVERFLOW_BANK, CVAR, { *should = false; });
}

static RegisterShipInitFunc initFunc(RegisterAllNightMaskWithBankMoney, { CVAR_NAME });
12 changes: 12 additions & 0 deletions mm/2s2h/Enhancements/DifficultyOptions/DekuDamageSuttari.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#include "public/bridge/consolevariablebridge.h"
#include "2s2h/GameInteractor/GameInteractor.h"
#include "2s2h/ShipInit.hpp"

#define CVAR_NAME "gEnhancements.DifficultyOptions.DekuDamageSuttari"
#define CVAR CVarGetInteger(CVAR_NAME, 0)

void RegisterDekuDamageSuttari() {
COND_VB_SHOULD(VB_SUTTARI_IMMUNE_DEKU, CVAR, { *should = false; });
}

static RegisterShipInitFunc initFunc(RegisterDekuDamageSuttari, { CVAR_NAME });
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ extern "C" {
#include "variables.h"
}

#define CVAR_NAME "gEnhancements.Cycle.KeepExpressMail"
#define CVAR_NAME "gEnhancements.DifficultyOptions.KeepExpressMail"
#define CVAR CVarGetInteger(CVAR_NAME, 0)

void RegisterKeepExpressMail() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#include "public/bridge/consolevariablebridge.h"
#include "2s2h/GameInteractor/GameInteractor.h"
#include "2s2h/ShipInit.hpp"

#define CVAR_NAME "gEnhancements.DifficultyOptions.MayorArguesUntilMoonfall"
#define CVAR CVarGetInteger(CVAR_NAME, 0)

void RegisterMayorArguesUntilMoonfall() {
COND_VB_SHOULD(VB_MAYOR_STOP_ARGUING, CVAR, { *should = false; });
}

static RegisterShipInitFunc initFunc(RegisterMayorArguesUntilMoonfall, { CVAR_NAME });
12 changes: 12 additions & 0 deletions mm/2s2h/Enhancements/DifficultyOptions/NotRacistCuriosityShop.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#include "public/bridge/consolevariablebridge.h"
#include "2s2h/GameInteractor/GameInteractor.h"
#include "2s2h/ShipInit.hpp"

#define CVAR_NAME "gEnhancements.DifficultyOptions.NotRacistCuriosityShop"
#define CVAR CVarGetInteger(CVAR_NAME, 0)

void RegisterNotRacistCuriosityShop() {
COND_VB_SHOULD(VB_CURIOSITY_SHOP_RACIST, CVAR, { *should = false; });
}

static RegisterShipInitFunc initFunc(RegisterNotRacistCuriosityShop, { CVAR_NAME });
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ extern "C" {
#include "functions.h"
}

#define CVAR_NAME "gEnhancements.Cycle.StopOceansideSpiderHouseSquatter"
#define CVAR_NAME "gEnhancements.DifficultyOptions.StopOceansideSpiderHouseSquatter"
#define CVAR CVarGetInteger(CVAR_NAME, 0)

void RegisterOceansideSpiderHouseSquatter() {
Expand Down
5 changes: 5 additions & 0 deletions mm/2s2h/GameInteractor/GameInteractor.h
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,11 @@ typedef enum {
VB_SETUP_TRANSITION,
VB_BE_NEAR_DOOR,
VB_LOAD_PLAYER_ANIMATION_FRAME,
VB_SUTTARI_IMMUNE_DEKU,
VB_CURIOSITY_SHOP_RACIST,
VB_NOT_OVERFLOW_BANK,
VB_ALL_NIGHT_TIME_SKIP,
VB_MAYOR_STOP_ARGUING,
} GIVanillaBehavior;

typedef enum {
Expand Down
6 changes: 3 additions & 3 deletions mm/2s2h/PresetManager/PresetManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,15 +74,15 @@ nlohmann::json curatedPresetJ = R"(
"DoNotResetConsumables": 1,
"DoNotResetRazorSword": 1,
"DoNotResetRupees": 1,
"DoNotResetTimeSpeed": 1,
"KeepExpressMail": 1
"DoNotResetTimeSpeed": 1
},
"Dialogue": {
"FastBankSelection": 1,
"FastText": 1
},
"DifficultyOptions": {
"LowerBankRewardThresholds": 1
"LowerBankRewardThresholds": 1,
"KeepExpressMail": 1
},
"Dpad": {
"DpadEquips": 1
Expand Down
10 changes: 7 additions & 3 deletions mm/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#include "z_en_baisen.h"
#include "objects/object_bai/object_bai.h"
#include "2s2h/GameInteractor/GameInteractor.h"

#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY)

Expand Down Expand Up @@ -86,14 +87,16 @@ void EnBaisen_Init(Actor* thisx, PlayState* play) {
this->paramCopy = this->actor.params;
if (this->actor.params == 0) {
this->unk290 = true;
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80) && ((gSaveContext.save.day != 3) || !gSaveContext.save.isNight)) {
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80) && (!GameInteractor_Should(VB_MAYOR_STOP_ARGUING, true) ||
(gSaveContext.save.day != 3) || !gSaveContext.save.isNight)) {
Comment on lines +90 to +91
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of adding GameInteractor_Should(VB_, true) to the condition, replace true with the vanilla condition you're wanting to override. Since it seems like you're wanting to override the Day 3 night part, put that part of the condition in the Should, like:

if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80) && GameInteractor_Should(VB_MAYOR_STOP_ARGUING, ((gSaveContext.save.day != 3) || !gSaveContext.save.isNight))) {

Actor_Kill(&this->actor);
}
} else {
this->collider.dim.radius = 30;
this->collider.dim.height = 60;
this->collider.dim.yShift = 0;
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80) || ((gSaveContext.save.day == 3) && gSaveContext.save.isNight)) {
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80) || (GameInteractor_Should(VB_MAYOR_STOP_ARGUING, true) &&
(gSaveContext.save.day == 3) && gSaveContext.save.isNight)) {
Actor_Kill(&this->actor);
}
}
Expand Down Expand Up @@ -261,7 +264,8 @@ void EnBaisen_Update(Actor* thisx, PlayState* play) {
this->unusedCounter--;
}
this->actor.shape.rot.y = this->actor.world.rot.y;
if ((this->paramCopy != 0) && (gSaveContext.save.day == 3) && gSaveContext.save.isNight) {
if (GameInteractor_Should(VB_MAYOR_STOP_ARGUING, true) && (this->paramCopy != 0) && (gSaveContext.save.day == 3) &&
gSaveContext.save.isNight) {
Actor_Kill(&this->actor);
return;
}
Expand Down
25 changes: 20 additions & 5 deletions mm/src/overlays/actors/ovl_En_Dt/z_en_dt.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "objects/object_dt/object_dt.h"
#include "overlays/actors/ovl_En_Muto/z_en_muto.h"
#include "overlays/actors/ovl_En_Baisen/z_en_baisen.h"
#include "2s2h/GameInteractor/GameInteractor.h"

#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY)

Expand Down Expand Up @@ -107,7 +108,8 @@ void EnDt_Init(Actor* thisx, PlayState* play) {

Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit);

if ((gSaveContext.save.day == 3) && (gSaveContext.save.isNight != 0)) {
if (GameInteractor_Should(VB_MAYOR_STOP_ARGUING, true) && (gSaveContext.save.day == 3) &&
(gSaveContext.save.isNight != 0)) {
func_80BEAC84(this, play);
} else {
//! FAKE:
Expand Down Expand Up @@ -208,6 +210,16 @@ void func_80BE9E94(EnDt* this, PlayState* play) {
}
actor = actor->next;
}
if (!GameInteractor_Should(VB_MAYOR_STOP_ARGUING, true)) {
if (this->unk_274 == NULL || this->unk_274 == 0) {
this->unk_274 =
(EnMuto*)Actor_Spawn(&play->actorCtx, play, ACTOR_EN_MUTO, -245.0f, 0.0f, -314.0f, 0, 16384, 0, 1);
}
if (this->unk_278 == NULL || this->unk_278 == 0) {
this->unk_278 =
(EnBaisen*)Actor_Spawn(&play->actorCtx, play, ACTOR_EN_BAISEN, -84.0f, 0.0f, -315.0f, 0, -16384, 0, 1);
}
}
func_80BE9EF8(this, play);
}

Expand Down Expand Up @@ -610,13 +622,16 @@ void EnDt_Update(Actor* thisx, PlayState* play) {
SkelAnime_Update(&this->skelanime);
Actor_SetScale(&this->actor, 0.01f);

if ((this->unk_254 != 4) && (this->unk_254 != 5) && (gSaveContext.save.day == 3) &&
(gSaveContext.save.isNight != 0)) {
func_80BEAC84(this, play);
if (GameInteractor_Should(VB_MAYOR_STOP_ARGUING, true)) {
if ((this->unk_254 != 4) && (this->unk_254 != 5) && (gSaveContext.save.day == 3) &&
(gSaveContext.save.isNight != 0)) {
func_80BEAC84(this, play);
}
}

if (!(gSaveContext.save.saveInfo.weekEventReg[63] & 0x80) &&
((gSaveContext.save.day != 3) || ((gSaveContext.save.day == 3) && (gSaveContext.save.isNight == 0)))) {
(!GameInteractor_Should(VB_MAYOR_STOP_ARGUING, true) || (gSaveContext.save.day != 3) ||
((gSaveContext.save.day == 3) && (gSaveContext.save.isNight == 0)))) {
Audio_PlaySequenceAtPos(3, &gSfxDefaultPos, 49, 1000.0f);
Actor_PlaySfx(&this->actor, NA_SE_EV_CROWD - SFX_FLAG);
}
Expand Down
9 changes: 6 additions & 3 deletions mm/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,11 +142,11 @@ u16 EnFsn_GetWelcome(PlayState* play) {
return 0x29CC;

case PLAYER_MASK_DEKU:
return 0x29FC;
return GameInteractor_Should(VB_CURIOSITY_SHOP_RACIST, true) ? 0x29FC : 0x29CC;

case PLAYER_MASK_GORON:
case PLAYER_MASK_ZORA:
return 0x29FD;
return GameInteractor_Should(VB_CURIOSITY_SHOP_RACIST, true) ? 0x29FD : 0x29CC;

case PLAYER_MASK_KAFEIS_MASK:
return 0x2364;
Expand Down Expand Up @@ -836,7 +836,10 @@ void EnFsn_BeginInteraction(EnFsn* this, PlayState* play) {
if (CutsceneManager_IsNext(this->csId)) {
CutsceneManager_StartWithPlayerCsAndSetFlag(this->csId, &this->actor);
this->cutsceneState = ENFSN_CUTSCENESTATE_PLAYING;
if (Player_GetMask(play) == PLAYER_MASK_NONE) {
if (Player_GetMask(play) == PLAYER_MASK_NONE ||
(!GameInteractor_Should(VB_CURIOSITY_SHOP_RACIST, true) &&
(Player_GetMask(play) == PLAYER_MASK_DEKU || Player_GetMask(play) == PLAYER_MASK_GORON ||
Player_GetMask(play) == PLAYER_MASK_ZORA))) {
Interface_SetAButtonDoAction(play, DO_ACTION_NEXT);
if (EnFsn_HasItemsToSell()) {
this->actionFunc = EnFsn_AskBuyOrSell;
Expand Down
20 changes: 18 additions & 2 deletions mm/src/overlays/actors/ovl_En_GirlA/z_en_girla.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
*/

#include "z_en_girla.h"
#include "2s2h/GameInteractor/GameInteractor.h"

#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_10)

Expand Down Expand Up @@ -50,6 +51,7 @@ void EnGirlA_BuySword(PlayState* play, EnGirlA* this);
void EnGirlA_BuyShieldMirror(PlayState* play, EnGirlA* this);

void EnGirlA_BuyFanfare(PlayState* play, EnGirlA* this);
void EnGirlA_BuyBankOverflowFanfare(PlayState* play, EnGirlA* this);

ActorInit En_GirlA_InitVars = {
/**/ ACTOR_EN_GIRLA,
Expand Down Expand Up @@ -103,7 +105,7 @@ static ShopItemEntry sShopItemEntries[] = {
{ OBJECT_GI_LIQUID, GID_POTION_RED, func_800B8050, 1, 0x06C9, 0x06CA, GI_POTION_RED, EnGirlA_CanBuyPotionRed,
EnGirlA_BuyBottleItem, EnGirlA_BuyFanfare },
{ OBJECT_GI_MASK06, GID_MASK_ALL_NIGHT, func_800B8050, 1, 0x29D9, 0x29DA, GI_MASK_ALL_NIGHT,
EnGirlA_CanBuyMaskAllNight, EnGirlA_BuyMaskAllNight, EnGirlA_BuyFanfare },
EnGirlA_CanBuyMaskAllNight, EnGirlA_BuyMaskAllNight, EnGirlA_BuyBankOverflowFanfare },
{ OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_20, func_800B8050, 1, 0x29DB, 0x29DC, GI_BOMB_BAG_20,
EnGirlA_CanBuyBombBagCuriosityShop, EnGirlA_BuyBombBag, EnGirlA_BuyFanfare },
{ OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_30, func_800B8050, 2, 0x29DB, 0x29DC, GI_BOMB_BAG_30,
Expand Down Expand Up @@ -270,7 +272,9 @@ s32 EnGirlA_CanBuyStick(PlayState* play, EnGirlA* this) {
}

s32 EnGirlA_CanBuyMaskAllNight(PlayState* play, EnGirlA* this) {
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C) {
if (gSaveContext.save.saveInfo.playerData.rupees < play->msgCtx.unk1206C &&
(GameInteractor_Should(VB_NOT_OVERFLOW_BANK, true) ||
gSaveContext.save.saveInfo.playerData.rupees + HS_GET_BANK_RUPEES() < play->msgCtx.unk1206C)) {
return CANBUY_RESULT_NEED_RUPEES;
}
return CANBUY_RESULT_SUCCESS_2;
Expand Down Expand Up @@ -534,6 +538,18 @@ void EnGirlA_BuyFanfare(PlayState* play, EnGirlA* this) {
Rupees_ChangeBy(-play->msgCtx.unk1206C);
}

void EnGirlA_BuyBankOverflowFanfare(PlayState* play, EnGirlA* this) {
s16 playerRupees = gSaveContext.save.saveInfo.playerData.rupees;
s16 cost = play->msgCtx.unk1206C;
s16 bankRupees = HS_GET_BANK_RUPEES();
if (playerRupees >= cost) {
Rupees_ChangeBy(-cost);
} else {
Rupees_ChangeBy(-playerRupees);
HS_SET_BANK_RUPEES(bankRupees - (cost - playerRupees));
}
}

void EnGirlA_DoNothing(EnGirlA* this, PlayState* play) {
}

Expand Down
10 changes: 7 additions & 3 deletions mm/src/overlays/actors/ovl_En_Muto/z_en_muto.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#include "z_en_muto.h"
#include "objects/object_toryo/object_toryo.h"
#include "2s2h/GameInteractor/GameInteractor.h"

#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY)

Expand Down Expand Up @@ -74,15 +75,17 @@ void EnMuto_Init(Actor* thisx, PlayState* play) {
this->textIdIndex = 3;
}

if ((gSaveContext.save.day != 3) || !gSaveContext.save.isNight) {
if ((!GameInteractor_Should(VB_MAYOR_STOP_ARGUING, true) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80)) ||
(gSaveContext.save.day != 3) || !gSaveContext.save.isNight) {
Actor_Kill(&this->actor);
}
} else {
this->collider.dim.radius = 30;
this->collider.dim.height = 60;
this->collider.dim.yShift = 0;

if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80) || ((gSaveContext.save.day == 3) && gSaveContext.save.isNight)) {
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_63_80) || (GameInteractor_Should(VB_MAYOR_STOP_ARGUING, true) &&
(gSaveContext.save.day == 3) && gSaveContext.save.isNight)) {
Actor_Kill(&this->actor);
}
}
Expand Down Expand Up @@ -254,7 +257,8 @@ void EnMuto_Update(Actor* thisx, PlayState* play2) {
EnMuto_SetHeadRotation(this);
}

if (this->isInMayorsRoom && (gSaveContext.save.day == 3) && gSaveContext.save.isNight) {
if (GameInteractor_Should(VB_MAYOR_STOP_ARGUING, true) && this->isInMayorsRoom && (gSaveContext.save.day == 3) &&
gSaveContext.save.isNight) {
Actor_Kill(&this->actor);
return;
}
Expand Down
Loading
Loading