Skip to content

Commit 9f9122c

Browse files
committed
Better island time rules
1 parent 65ab825 commit 9f9122c

3 files changed

Lines changed: 20 additions & 6 deletions

File tree

src/core/CosmeticMgr.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ const char* CosmeticMgr::PATH = "cosmetic.bin";
1313

1414
/**
1515
* @brief Constructor
16-
*
1716
*/
1817
CosmeticMgr::CosmeticMgr() {
1918
Clear();
@@ -58,16 +57,26 @@ void CosmeticMgr::Clear() {
5857
void CosmeticMgr::Debug() {
5958
kiwi::Random r;
6059

60+
mRandomBgmFlag = true;
6161
for (int i = 0; i < K_LENGTHOF(mRandomBgmMapping); i++) {
6262
mRandomBgmMapping[i] = i;
6363
}
64-
6564
kiwi::Shuffle(mRandomBgmMapping, K_LENGTHOF(mRandomBgmMapping));
66-
mRandomBgmFlag = r.CoinFlip();
6765

68-
mRandomTimeFlag = r.CoinFlip();
66+
mRandomTimeFlag = true;
6967
for (int i = 0; i < LENGTHOF(mRandomTimeMapping); i++) {
70-
mRandomTimeMapping[i] = static_cast<RPSysScene::ETime>(r.NextU32(3));
68+
// Scene groups where changing the time of day is disallowed
69+
if (i == Sp2::Cmn::EGroupID_Fld + 1 ||
70+
i == Sp2::Cmn::EGroupID_Bwl + 1 ||
71+
i == Sp2::Cmn::EGroupID_Png + 1 ||
72+
i == Sp2::Cmn::EGroupID_Pln + 1 ||
73+
i == Sp2::Cmn::EGroupID_Glf + 1 ||
74+
i == Sp2::Cmn::EGroupID_Dgl + 1) {
75+
mRandomTimeMapping[i] = RPSysScene::ETime_Auto;
76+
} else {
77+
mRandomTimeMapping[i] = static_cast<RPSysScene::ETime>(
78+
r.NextU32(RPSysScene::ETime_Night + 1));
79+
}
7180
}
7281
}
7382

src/core/CosmeticMgr.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111

1212
namespace AP {
1313

14+
/**
15+
* @brief Archipelago cosmetic manager
16+
*/
1417
class CosmeticMgr : public kiwi::DynamicSingleton<CosmeticMgr>,
1518
public kiwi::IBinary<CosmeticMgr> {
1619
friend class kiwi::DynamicSingleton<CosmeticMgr>;

src/hooks/Cmn/cosmetics_Cmn.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ RPSysScene::ETime InterceptIslandTime(RPSysScene* pScene) {
7070
return pScene->getIslandTime();
7171
}
7272

73-
return CosmeticMgr::GetInstance().GetRandomTime(group);
73+
// 'Auto' delegates to the scene
74+
RPSysScene::ETime time = CosmeticMgr::GetInstance().GetRandomTime(group);
75+
return time != RPSysScene::ETime_Auto ? time : pScene->getIslandTime();
7476
}
7577
KM_CALL(0x8026a56c, InterceptIslandTime);
7678

0 commit comments

Comments
 (0)