Implement force unlock songs flag for Lapistoria.
This commit is contained in:
parent
31e2ef2220
commit
50216b1d45
@ -83,6 +83,14 @@ class PopnMusicLapistoria(PopnMusicBase):
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
'bools': [
|
||||||
|
{
|
||||||
|
'name': 'Force Song Unlock',
|
||||||
|
'tip': 'Force unlock all songs.',
|
||||||
|
'category': 'game_config',
|
||||||
|
'setting': 'force_unlock_songs',
|
||||||
|
},
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
def handle_info22_common_request(self, request: Node) -> Node:
|
def handle_info22_common_request(self, request: Node) -> Node:
|
||||||
@ -658,6 +666,17 @@ class PopnMusicLapistoria(PopnMusicBase):
|
|||||||
customize.add_child(Node.u16('comment_1', customize_dict.get_int('comment_1')))
|
customize.add_child(Node.u16('comment_1', customize_dict.get_int('comment_1')))
|
||||||
customize.add_child(Node.u16('comment_2', customize_dict.get_int('comment_2')))
|
customize.add_child(Node.u16('comment_2', customize_dict.get_int('comment_2')))
|
||||||
|
|
||||||
|
game_config = self.get_game_config()
|
||||||
|
if game_config.get_bool('force_unlock_songs'):
|
||||||
|
songs = self.data.local.music.get_all_songs(self.game, self.version)
|
||||||
|
for song in songs:
|
||||||
|
item = Node.void('item')
|
||||||
|
root.add_child(item)
|
||||||
|
item.add_child(Node.u8('type', 0))
|
||||||
|
item.add_child(Node.u16('id', song.id))
|
||||||
|
item.add_child(Node.u16('param', 15))
|
||||||
|
item.add_child(Node.bool('is_new', False))
|
||||||
|
|
||||||
# Set up achievements
|
# Set up achievements
|
||||||
achievements = self.data.local.user.get_achievements(self.game, self.version, userid)
|
achievements = self.data.local.user.get_achievements(self.game, self.version, userid)
|
||||||
for achievement in achievements:
|
for achievement in achievements:
|
||||||
@ -675,6 +694,10 @@ class PopnMusicLapistoria(PopnMusicBase):
|
|||||||
# 6, 24
|
# 6, 24
|
||||||
# 7, 4158
|
# 7, 4158
|
||||||
|
|
||||||
|
if game_config.get_bool('force_unlock_songs') and itemtype == 0:
|
||||||
|
# We already sent song unlocks in the force unlock section above.
|
||||||
|
continue
|
||||||
|
|
||||||
item = Node.void('item')
|
item = Node.void('item')
|
||||||
root.add_child(item)
|
root.add_child(item)
|
||||||
item.add_child(Node.u8('type', itemtype))
|
item.add_child(Node.u8('type', itemtype))
|
||||||
@ -806,6 +829,7 @@ class PopnMusicLapistoria(PopnMusicBase):
|
|||||||
self.update_play_statistics(userid)
|
self.update_play_statistics(userid)
|
||||||
|
|
||||||
# Extract achievements
|
# Extract achievements
|
||||||
|
game_config = self.get_game_config()
|
||||||
for node in request.children:
|
for node in request.children:
|
||||||
if node.name == 'item':
|
if node.name == 'item':
|
||||||
if not node.child_value('is_new'):
|
if not node.child_value('is_new'):
|
||||||
@ -816,6 +840,10 @@ class PopnMusicLapistoria(PopnMusicBase):
|
|||||||
itemtype = node.child_value('type')
|
itemtype = node.child_value('type')
|
||||||
param = node.child_value('param')
|
param = node.child_value('param')
|
||||||
|
|
||||||
|
if game_config.get_bool('force_unlock_songs') and itemtype == 0:
|
||||||
|
# If we enabled force song unlocks, don't save songs to the profile.
|
||||||
|
continue
|
||||||
|
|
||||||
self.data.local.user.put_achievement(
|
self.data.local.user.put_achievement(
|
||||||
self.game,
|
self.game,
|
||||||
self.version,
|
self.version,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user