@@ -69,6 +69,9 @@ class $modify(MyPlayLayer, PlayLayer) {
6969 void resetLevel () {
7070 PlayLayer::resetLevel ();
7171 manager->addedNextKeyWhenLabel = false ;
72+ for (auto [coin, collected] : manager->coins ) {
73+ manager->coins .at (coin) = false ;
74+ }
7275 if (!manager->channel ) return ;
7376 if (!getModBool (" sisyphusStopSFXOnRespawn" )) return ;
7477 STOP_MANAGER_CHANNEL
@@ -77,6 +80,7 @@ class $modify(MyPlayLayer, PlayLayer) {
7780 PlayLayer::onQuit ();
7881 manager->lastDeathPercent = -10 .f ;
7982 manager->currentDeathPercentForQueueInMainLoader = -1 .f ;
83+ manager->coins .clear ();
8084 if (!manager->channel ) return ;
8185 STOP_MANAGER_CHANNEL
8286 }
@@ -89,16 +93,28 @@ class $modify(MyPlayLayer, PlayLayer) {
8993 void togglePracticeMode (bool practiceMode) {
9094 PlayLayer::togglePracticeMode (practiceMode);
9195 manager->lastDeathPercent = -10 .f ;
96+ for (auto [coin, collected] : manager->coins ) {
97+ manager->coins .at (coin) = false ;
98+ }
9299 if (!manager->channel ) return ;
93100 STOP_MANAGER_CHANNEL
94101 }
95102 void resetLevelFromStart () {
96103 PlayLayer::resetLevelFromStart ();
97104 manager->lastDeathPercent = -10 .f ;
105+ for (auto [coin, collected] : manager->coins ) {
106+ manager->coins .at (coin) = false ;
107+ }
98108 if (!manager->channel ) return ;
99109 if (!getModBool (" enabled" ) || !getModBool (" sisyphusStopSFXOnRespawn" )) return ;
100110 STOP_MANAGER_CHANNEL
101111 }
112+ void addObject (GameObject* object) {
113+ PlayLayer::addObject (object);
114+ if (!m_level || m_level->isPlatformer () || m_isPlatformer) return ;
115+ if (object->m_objectType != GameObjectType::UserCoin && object->m_objectType != GameObjectType::SecretCoin) return ;
116+ manager->coins .insert ({object, false });
117+ }
102118 void applyNodeTraitsCustomization (CCNode *newBestNodeProbably, bool hasDiamondsOrOrbs) {
103119 if (getModBool (" xPosPercentEnable" )) {
104120 const float cWidth = CCScene::get ()->getContentWidth ();
0 commit comments