-
Notifications
You must be signed in to change notification settings - Fork 73
new/secret_list is improperly being set in Jubeat #107
Description
The 3 lists under the new node in jubeat's profile have nothing to do with unlocks. They exist to mark whether a song/marker/background are "new". This marker exists to display the "new" text over the item. As such, the default value really should be a full bitarray of 1s because the game sets them to 0 after a song has been played or the marker/background have been selected at least once in the options. I would just submit this code change but personally I don't even like that behavior for songs so in my own fork I just changed to a full array of 0. I'm thinking to maybe add a button on the profile page to fix the list to only mark songs that haven't been played as new and mark all others as not, or perhaps mark all songs or no songs as new. The flag could be hacked to be a "favorite song" marker or as a reminder to the player that they haven't played it in the last 30 days (maybe the player resets the list every month). I'm just spitballing ideas but I'm raising the issue because the current implementation is definitely broken...
bemaniutils/bemani/backend/jubeat/festo.py
Lines 2437 to 2449 in 48d5a12
| # I have no idea what these are for. I figured it was for the server to grant songs/themes/markers | |
| # outside of gameplay, but the game doesn't seem to react to setting values here. So, lets set them | |
| # to all 1's and move on. Tracing the handling of this shows that the game usually sets the same bit | |
| # in both the secret list above and this one, and doesn't seem to care about parsing the values as | |
| # they come in. | |
| new = Node.void("new") | |
| item.add_child(new) | |
| new.add_child( | |
| Node.s32_array( | |
| "secret_list", | |
| ([-1] * 64) if force_unlock else self.create_owned_items(owned_secrets, 64), | |
| ) | |
| ) |