bcsfe 3.1.0__tar.gz → 3.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. {bcsfe-3.1.0/src/bcsfe.egg-info → bcsfe-3.2.0}/PKG-INFO +101 -13
  2. {bcsfe-3.1.0 → bcsfe-3.2.0}/README.md +100 -12
  3. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/__init__.py +1 -1
  4. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/__main__.py +3 -1
  5. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/color.py +4 -14
  6. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/dialog_creator.py +6 -2
  7. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/edits/__init__.py +2 -0
  8. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/edits/basic_items.py +6 -0
  9. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/edits/cat_editor.py +91 -16
  10. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/edits/event_tickets.py +2 -1
  11. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/edits/map.py +5 -1
  12. bcsfe-3.2.0/src/bcsfe/cli/edits/storage.py +214 -0
  13. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/feature_handler.py +13 -3
  14. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/save_management.py +90 -27
  15. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/__init__.py +24 -2
  16. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/__init__.py +2 -0
  17. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/cat.py +14 -30
  18. bcsfe-3.2.0/src/bcsfe/core/game/catbase/gambling.py +111 -0
  19. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/enigma.py +5 -0
  20. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/gauntlets.py +4 -0
  21. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/map_names.py +56 -18
  22. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/outbreaks.py +2 -10
  23. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/story.py +1 -1
  24. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/zero_legends.py +16 -3
  25. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/io/bc_csv.py +1 -1
  26. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/io/config.py +5 -6
  27. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/io/path.py +9 -9
  28. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/io/save.py +32 -155
  29. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/server/game_data_getter.py +128 -118
  30. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/server/updater.py +1 -2
  31. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/core/input.properties +2 -0
  32. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/core/main.properties +4 -1
  33. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/core/save.properties +13 -3
  34. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/core/server.properties +4 -0
  35. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/cats.properties +36 -0
  36. bcsfe-3.2.0/src/bcsfe/files/locales/en/edits/gambling.properties +3 -0
  37. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/items.properties +3 -0
  38. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/map.properties +3 -1
  39. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/treasures.properties +2 -2
  40. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/core/input.properties +3 -1
  41. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/core/main.properties +3 -1
  42. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/core/save.properties +8 -1
  43. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/core/server.properties +4 -1
  44. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/cats.properties +40 -28
  45. bcsfe-3.2.0/src/bcsfe/files/locales/vi/edits/gambling.properties +3 -0
  46. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/items.properties +4 -1
  47. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/map.properties +4 -41
  48. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/treasures.properties +2 -2
  49. {bcsfe-3.1.0 → bcsfe-3.2.0/src/bcsfe.egg-info}/PKG-INFO +101 -13
  50. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe.egg-info/SOURCES.txt +4 -0
  51. {bcsfe-3.1.0 → bcsfe-3.2.0}/LICENSE +0 -0
  52. {bcsfe-3.1.0 → bcsfe-3.2.0}/MANIFEST.in +0 -0
  53. {bcsfe-3.1.0 → bcsfe-3.2.0}/pyproject.toml +0 -0
  54. {bcsfe-3.1.0 → bcsfe-3.2.0}/setup.cfg +0 -0
  55. {bcsfe-3.1.0 → bcsfe-3.2.0}/setup.py +0 -0
  56. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/__init__.py +0 -0
  57. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/edits/aku_realm.py +0 -0
  58. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/edits/clear_tutorial.py +0 -0
  59. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/edits/enemy_editor.py +0 -0
  60. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/edits/fixes.py +0 -0
  61. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/edits/max_all.py +0 -0
  62. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/edits/rare_ticket_trade.py +0 -0
  63. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/file_dialog.py +0 -0
  64. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/main.py +0 -0
  65. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/cli/server_cli.py +0 -0
  66. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/country_code.py +0 -0
  67. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/crypto.py +0 -0
  68. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/__init__.py +0 -0
  69. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/battle/__init__.py +0 -0
  70. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/battle/battle_items.py +0 -0
  71. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/battle/cleared_slots.py +0 -0
  72. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/battle/enemy.py +0 -0
  73. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/battle/slots.py +0 -0
  74. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/beacon_base.py +0 -0
  75. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/drop_chara.py +0 -0
  76. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/gatya.py +0 -0
  77. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/gatya_item.py +0 -0
  78. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/item_pack.py +0 -0
  79. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/login_bonuses.py +0 -0
  80. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/matatabi.py +0 -0
  81. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/medals.py +0 -0
  82. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/mission.py +0 -0
  83. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/my_sale.py +0 -0
  84. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/nyanko_club.py +0 -0
  85. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/officer_pass.py +0 -0
  86. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/playtime.py +0 -0
  87. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/powerup.py +0 -0
  88. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/scheme_items.py +0 -0
  89. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/special_skill.py +0 -0
  90. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/stamp.py +0 -0
  91. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/talent_orbs.py +0 -0
  92. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/unlock_popups.py +0 -0
  93. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/upgrade.py +0 -0
  94. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/catbase/user_rank_rewards.py +0 -0
  95. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/gamoto/__init__.py +0 -0
  96. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/gamoto/base_materials.py +0 -0
  97. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/gamoto/cat_shrine.py +0 -0
  98. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/gamoto/catamins.py +0 -0
  99. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/gamoto/gamatoto.py +0 -0
  100. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/gamoto/ototo.py +0 -0
  101. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/localizable.py +0 -0
  102. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/__init__.py +0 -0
  103. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/aku.py +0 -0
  104. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/challenge.py +0 -0
  105. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/chapters.py +0 -0
  106. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/dojo.py +0 -0
  107. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/event.py +0 -0
  108. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/ex_stage.py +0 -0
  109. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/item_reward_stage.py +0 -0
  110. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/legend_quest.py +0 -0
  111. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/map_reset.py +0 -0
  112. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/timed_score.py +0 -0
  113. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/tower.py +0 -0
  114. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game/map/uncanny.py +0 -0
  115. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/game_version.py +0 -0
  116. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/io/__init__.py +0 -0
  117. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/io/adb_handler.py +0 -0
  118. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/io/command.py +0 -0
  119. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/io/data.py +0 -0
  120. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/io/git_handler.py +0 -0
  121. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/io/json_file.py +0 -0
  122. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/io/root_handler.py +0 -0
  123. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/io/thread_helper.py +0 -0
  124. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/io/waydroid.py +0 -0
  125. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/io/yaml.py +0 -0
  126. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/locale_handler.py +0 -0
  127. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/log.py +0 -0
  128. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/max_value_helper.py +0 -0
  129. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/server/__init__.py +0 -0
  130. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/server/client_info.py +0 -0
  131. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/server/event_data.py +0 -0
  132. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/server/headers.py +0 -0
  133. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/server/managed_item.py +0 -0
  134. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/server/request.py +0 -0
  135. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/server/server_handler.py +0 -0
  136. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/core/theme_handler.py +0 -0
  137. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/core/config.properties +0 -0
  138. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/core/files.properties +0 -0
  139. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/core/locale.properties +0 -0
  140. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/core/theme.properties +0 -0
  141. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/core/updater.properties +0 -0
  142. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/bannable_items.properties +0 -0
  143. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/enemy.properties +0 -0
  144. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/fixes.properties +0 -0
  145. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/gamototo.properties +0 -0
  146. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/gatya.properties +0 -0
  147. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/gold_pass.properties +0 -0
  148. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/medals.properties +0 -0
  149. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/missions.properties +0 -0
  150. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/playtime.properties +0 -0
  151. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/scheme_items.properties +0 -0
  152. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/special_skills.properties +0 -0
  153. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/talent_orbs.properties +0 -0
  154. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/en/edits/user_rank.properties +0 -0
  155. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/core/config.properties +0 -0
  156. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/core/files.properties +0 -0
  157. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/core/locale.properties +0 -0
  158. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/core/theme.properties +0 -0
  159. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/core/updater.properties +0 -0
  160. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/bannable_items.properties +0 -0
  161. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/enemy.properties +0 -0
  162. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/fixes.properties +0 -0
  163. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/gamototo.properties +0 -0
  164. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/gatya.properties +0 -0
  165. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/gold_pass.properties +0 -0
  166. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/medals.properties +0 -0
  167. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/missions.properties +0 -0
  168. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/playtime.properties +0 -0
  169. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/scheme_items.properties +0 -0
  170. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/special_skills.properties +0 -0
  171. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/talent_orbs.properties +0 -0
  172. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/edits/user_rank.properties +0 -0
  173. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/locales/vi/metadata.json +0 -0
  174. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/max_values.json +0 -0
  175. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/themes/default.json +0 -0
  176. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/files/themes/discord.json +0 -0
  177. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe/py.typed +0 -0
  178. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe.egg-info/dependency_links.txt +0 -0
  179. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe.egg-info/entry_points.txt +0 -0
  180. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe.egg-info/requires.txt +0 -0
  181. {bcsfe-3.1.0 → bcsfe-3.2.0}/src/bcsfe.egg-info/top_level.txt +0 -0
  182. {bcsfe-3.1.0 → bcsfe-3.2.0}/tests/test_parse.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bcsfe
3
- Version: 3.1.0
3
+ Version: 3.2.0
4
4
  Summary: A save file editor for The Battle Cats
5
5
  Author: fieryhenry
6
6
  License-Expression: GPL-3.0-or-later
@@ -98,7 +98,8 @@ python3 -m pip install bcsfe
98
98
  py -m ensurepip --upgrade
99
99
  ```
100
100
 
101
- Again change `py` for `python` or `python3` if needed
101
+ Again change `py` for `python` or `python3` if needed. I won't mention this again, so just remember
102
+ the one which works at keep using that.
102
103
 
103
104
  5. To run the editor, as long as Python is in your PATH, you should be able to run:
104
105
 
@@ -112,10 +113,20 @@ bcsfe
112
113
  py -m bcsfe
113
114
  ```
114
115
 
115
- Again change `py` for `python` or `python3` if needed.
116
-
117
116
  If you are using Windows and you are still struggling, try watching this video [here](https://codeberg.org/fieryhenry/videos/media/branch/main/bcsfe_windows_help.webm).
118
117
 
118
+ 7. To update the editor run:
119
+
120
+ ```powershell
121
+ py -m pip install -U bcsfe
122
+ ```
123
+
124
+ 8. To uninstall the editor run:
125
+
126
+ ```powershell
127
+ py -m pip uninstall bcsfe
128
+ ```
129
+
119
130
  ### Linux
120
131
 
121
132
  1. Install Python 3.9 or later using your system's package manager if you don't already have it
@@ -145,6 +156,18 @@ bcsfe
145
156
  6. You may also need to install `tk` with your system package manager to open the
146
157
  file selection dialog. This package may be called `tk` or `python-tk` or `python3-tk`.
147
158
 
159
+ 7. To update the editor if you are using pipx run:
160
+
161
+ ```sh
162
+ pipx upgrade bcsfe
163
+ ```
164
+
165
+ 8. To uninstall the editor if you are using pipx run:
166
+
167
+ ```sh
168
+ pipx uninstall bcsfe
169
+ ```
170
+
148
171
  If anyone wants to put the editor on the AUR or another package repo, feel free, I'll be happy to
149
172
  help if needed.
150
173
 
@@ -207,23 +230,84 @@ selection dialog, you just have to type the file path manually.
207
230
  For example to save your save file to your downloads directory, the path might look something like
208
231
  `/storage/emulated/0/Download/SAVE_DATA` or `/sdcard/Download/SAVE_DATA`
209
232
 
233
+ 5. To update the editor run:
234
+
235
+ ```sh
236
+ pip install -U bcsfe
237
+ ```
238
+
239
+ Or
240
+
241
+ ```sh
242
+ python -m pip install -U bcsfe
243
+ ```
244
+
245
+
246
+ 5. To uninstall the editor run:
247
+
248
+ ```sh
249
+ pip uninstall bcsfe
250
+ ```
251
+
252
+ Or
253
+
254
+ ```sh
255
+ python -m pip uninstall bcsfe
256
+ ```
210
257
 
211
258
  ### iOS
212
259
 
213
- I do not have an iOS device, so there is no text tutorial, but Viarules has made a video
214
- tutorial [here](https://www.youtube.com/watch?v=xw-uOqQRYJ8). The video uses iSH which is
215
- apparently quite slow, and other people recommend using a-Shell instead.
260
+ I do not have an iOS device, so there is no tutorial. The video that was recommended is now outdated.
261
+ But for a general overview of what you need to do:
262
+
263
+ 1. Download a-Shell from the App Store
264
+ 2. Install the editor with:
265
+
266
+ ```sh
267
+ pip install bcsfe
268
+ ```
269
+
270
+ 3. Run the editor with:
216
271
 
272
+ ```sh
273
+ bcsfe
274
+ ```
275
+
276
+ Or if that doesn't work try:
217
277
 
278
+ ```sh
279
+ python -m bcsfe
280
+ ```
281
+
282
+ Or
283
+
284
+ ```sh
285
+ python3 -m bcsfe
286
+ ```
287
+
288
+ 4. To update the editor run:
289
+
290
+ ```sh
291
+ pip install -U bcsfe
292
+ ```
293
+
294
+ 5. To uninstall the editor run:
295
+
296
+ ```sh
297
+ pip uninstall bcsfe
298
+ ```
218
299
  ## Terms of Use
219
300
 
301
+ I don't like that I have to have Terms of use but these terms are designed to prevent scams and the
302
+ exploitation of users.
303
+
220
304
  By using the editor you agree to the following:
221
305
 
222
306
  If you are using the editor to run a paid service that profits off of the editor
223
307
  (e.g a service to provide people with hacked accounts, or a paid discord bot to edit people's accounts,
224
308
  etc) you must make it very clear that you are using this save editor.
225
309
 
226
- This should be done by linking this GitHub page, and explicitly stating that the tool you are
310
+ This should be done by linking this Codeberg page, and explicitly stating that the tool you are
227
311
  using is available for free and that they don't need to use your service to hack their account.
228
312
 
229
313
  This information needs to be visible and something the customer agrees to **before** any payment is made.
@@ -237,8 +321,6 @@ the editor under the hood as long as you abide by the [License](#license). Basic
237
321
  distributing a program which uses the editor, you need to license your own program under the GPL
238
322
  or a compatible license (basically make it open source / free software too).
239
323
 
240
- These terms are designed to prevent scams and the exploitation of users.
241
-
242
324
  Also if you **are** profiting from the editor, it would be greatly appreciated if you could
243
325
  give back something and support me.
244
326
 
@@ -348,9 +430,13 @@ You'll need to collect the catfood in-game after each clear though
348
430
 
349
431
  ### Install from source
350
432
 
351
- If you want the latest features then you can install the editor from the github.
433
+ If you want the latest features then you can install the editor from the git repo.
352
434
 
353
- 1. Download [Git](https://git-scm.com/downloads)
435
+ 1. Download git:
436
+ - Windows: [Git](https://git-scm.com/downloads)
437
+ - Linux: (use package manager, e.g `sudo apt-get install git` or `sudo pacman -S git`)
438
+ - Android: Termux: `pkg install git`
439
+ - iOS: a-Shell should already include it
354
440
 
355
441
  2. Run the following commands: (You may have to replace `py` with `python` or `python3`)
356
442
 
@@ -368,10 +454,12 @@ Alternatively you can use pip directly, although it won't auto-update with the l
368
454
  git commits.
369
455
 
370
456
  ```sh
371
- py -m pip install git+https://codeberg.org/fieryhenry/BCSFE-Python.git
457
+ py -m pip install -U git+https://codeberg.org/fieryhenry/BCSFE-Python.git
372
458
  py -m bcsfe
373
459
  ```
374
460
 
461
+ Again, you might need change `py` for `python` or `python3`
462
+
375
463
  If you want to use the editor again all you need to do is run the `py -m bcsfe` command
376
464
 
377
465
  ## Documentation
@@ -69,7 +69,8 @@ python3 -m pip install bcsfe
69
69
  py -m ensurepip --upgrade
70
70
  ```
71
71
 
72
- Again change `py` for `python` or `python3` if needed
72
+ Again change `py` for `python` or `python3` if needed. I won't mention this again, so just remember
73
+ the one which works at keep using that.
73
74
 
74
75
  5. To run the editor, as long as Python is in your PATH, you should be able to run:
75
76
 
@@ -83,10 +84,20 @@ bcsfe
83
84
  py -m bcsfe
84
85
  ```
85
86
 
86
- Again change `py` for `python` or `python3` if needed.
87
-
88
87
  If you are using Windows and you are still struggling, try watching this video [here](https://codeberg.org/fieryhenry/videos/media/branch/main/bcsfe_windows_help.webm).
89
88
 
89
+ 7. To update the editor run:
90
+
91
+ ```powershell
92
+ py -m pip install -U bcsfe
93
+ ```
94
+
95
+ 8. To uninstall the editor run:
96
+
97
+ ```powershell
98
+ py -m pip uninstall bcsfe
99
+ ```
100
+
90
101
  ### Linux
91
102
 
92
103
  1. Install Python 3.9 or later using your system's package manager if you don't already have it
@@ -116,6 +127,18 @@ bcsfe
116
127
  6. You may also need to install `tk` with your system package manager to open the
117
128
  file selection dialog. This package may be called `tk` or `python-tk` or `python3-tk`.
118
129
 
130
+ 7. To update the editor if you are using pipx run:
131
+
132
+ ```sh
133
+ pipx upgrade bcsfe
134
+ ```
135
+
136
+ 8. To uninstall the editor if you are using pipx run:
137
+
138
+ ```sh
139
+ pipx uninstall bcsfe
140
+ ```
141
+
119
142
  If anyone wants to put the editor on the AUR or another package repo, feel free, I'll be happy to
120
143
  help if needed.
121
144
 
@@ -178,23 +201,84 @@ selection dialog, you just have to type the file path manually.
178
201
  For example to save your save file to your downloads directory, the path might look something like
179
202
  `/storage/emulated/0/Download/SAVE_DATA` or `/sdcard/Download/SAVE_DATA`
180
203
 
204
+ 5. To update the editor run:
205
+
206
+ ```sh
207
+ pip install -U bcsfe
208
+ ```
209
+
210
+ Or
211
+
212
+ ```sh
213
+ python -m pip install -U bcsfe
214
+ ```
215
+
216
+
217
+ 5. To uninstall the editor run:
218
+
219
+ ```sh
220
+ pip uninstall bcsfe
221
+ ```
222
+
223
+ Or
224
+
225
+ ```sh
226
+ python -m pip uninstall bcsfe
227
+ ```
181
228
 
182
229
  ### iOS
183
230
 
184
- I do not have an iOS device, so there is no text tutorial, but Viarules has made a video
185
- tutorial [here](https://www.youtube.com/watch?v=xw-uOqQRYJ8). The video uses iSH which is
186
- apparently quite slow, and other people recommend using a-Shell instead.
231
+ I do not have an iOS device, so there is no tutorial. The video that was recommended is now outdated.
232
+ But for a general overview of what you need to do:
233
+
234
+ 1. Download a-Shell from the App Store
235
+ 2. Install the editor with:
236
+
237
+ ```sh
238
+ pip install bcsfe
239
+ ```
240
+
241
+ 3. Run the editor with:
187
242
 
243
+ ```sh
244
+ bcsfe
245
+ ```
246
+
247
+ Or if that doesn't work try:
188
248
 
249
+ ```sh
250
+ python -m bcsfe
251
+ ```
252
+
253
+ Or
254
+
255
+ ```sh
256
+ python3 -m bcsfe
257
+ ```
258
+
259
+ 4. To update the editor run:
260
+
261
+ ```sh
262
+ pip install -U bcsfe
263
+ ```
264
+
265
+ 5. To uninstall the editor run:
266
+
267
+ ```sh
268
+ pip uninstall bcsfe
269
+ ```
189
270
  ## Terms of Use
190
271
 
272
+ I don't like that I have to have Terms of use but these terms are designed to prevent scams and the
273
+ exploitation of users.
274
+
191
275
  By using the editor you agree to the following:
192
276
 
193
277
  If you are using the editor to run a paid service that profits off of the editor
194
278
  (e.g a service to provide people with hacked accounts, or a paid discord bot to edit people's accounts,
195
279
  etc) you must make it very clear that you are using this save editor.
196
280
 
197
- This should be done by linking this GitHub page, and explicitly stating that the tool you are
281
+ This should be done by linking this Codeberg page, and explicitly stating that the tool you are
198
282
  using is available for free and that they don't need to use your service to hack their account.
199
283
 
200
284
  This information needs to be visible and something the customer agrees to **before** any payment is made.
@@ -208,8 +292,6 @@ the editor under the hood as long as you abide by the [License](#license). Basic
208
292
  distributing a program which uses the editor, you need to license your own program under the GPL
209
293
  or a compatible license (basically make it open source / free software too).
210
294
 
211
- These terms are designed to prevent scams and the exploitation of users.
212
-
213
295
  Also if you **are** profiting from the editor, it would be greatly appreciated if you could
214
296
  give back something and support me.
215
297
 
@@ -319,9 +401,13 @@ You'll need to collect the catfood in-game after each clear though
319
401
 
320
402
  ### Install from source
321
403
 
322
- If you want the latest features then you can install the editor from the github.
404
+ If you want the latest features then you can install the editor from the git repo.
323
405
 
324
- 1. Download [Git](https://git-scm.com/downloads)
406
+ 1. Download git:
407
+ - Windows: [Git](https://git-scm.com/downloads)
408
+ - Linux: (use package manager, e.g `sudo apt-get install git` or `sudo pacman -S git`)
409
+ - Android: Termux: `pkg install git`
410
+ - iOS: a-Shell should already include it
325
411
 
326
412
  2. Run the following commands: (You may have to replace `py` with `python` or `python3`)
327
413
 
@@ -339,10 +425,12 @@ Alternatively you can use pip directly, although it won't auto-update with the l
339
425
  git commits.
340
426
 
341
427
  ```sh
342
- py -m pip install git+https://codeberg.org/fieryhenry/BCSFE-Python.git
428
+ py -m pip install -U git+https://codeberg.org/fieryhenry/BCSFE-Python.git
343
429
  py -m bcsfe
344
430
  ```
345
431
 
432
+ Again, you might need change `py` for `python` or `python3`
433
+
346
434
  If you want to use the editor again all you need to do is run the `py -m bcsfe` command
347
435
 
348
436
  ## Documentation
@@ -1,4 +1,4 @@
1
- __version__ = "3.1.0"
1
+ __version__ = "3.2.0"
2
2
 
3
3
  from bcsfe import core, cli
4
4
 
@@ -52,7 +52,9 @@ def main():
52
52
  cli.main.Main.leave()
53
53
  except Exception as e:
54
54
  tb = traceback.format_exc()
55
- cli.color.ColoredText.localize("error", error=e, traceback=tb)
55
+ cli.color.ColoredText.localize(
56
+ "error", error=e, version=bcsfe.__version__, traceback=tb
57
+ )
56
58
  try:
57
59
  cli.main.Main.exit_editor()
58
60
  except Exception:
@@ -113,13 +113,9 @@ class ColoredText:
113
113
  print(colored.stylize(text, fg), end="") # type: ignore
114
114
 
115
115
  @staticmethod
116
- def localize(
117
- string: str, escape: bool = True, **kwargs: Any
118
- ) -> ColoredText:
116
+ def localize(string: str, escape: bool = True, **kwargs: Any) -> ColoredText:
119
117
  return ColoredText(
120
- core.core_data.local_manager.get_key(
121
- string, escape=escape, **kwargs
122
- )
118
+ core.core_data.local_manager.get_key(string, escape=escape, **kwargs)
123
119
  )
124
120
 
125
121
  def parse(self, txt: str) -> list[tuple[str, str]]:
@@ -134,11 +130,7 @@ class ColoredText:
134
130
  special_chars = core.LocalManager.get_special_chars()
135
131
  while i < len(txt):
136
132
  char = txt[i]
137
- if (
138
- char == "\\"
139
- and i + 1 < len(txt)
140
- and txt[i + 1] in special_chars
141
- ):
133
+ if char == "\\" and i + 1 < len(txt) and txt[i + 1] in special_chars:
142
134
  i += 1
143
135
  char = txt[i]
144
136
  text += char
@@ -183,7 +175,5 @@ class ColoredInput:
183
175
  return input()
184
176
 
185
177
  def localize(self, string: str, escape: bool = True, **kwargs: Any) -> str:
186
- text = core.core_data.local_manager.get_key(
187
- string, escape=escape, **kwargs
188
- )
178
+ text = core.core_data.local_manager.get_key(string, escape=escape, **kwargs)
189
179
  return self.get(text)
@@ -327,7 +327,7 @@ class ChoiceInput:
327
327
  dialog = core.core_data.local_manager.get_key(key).format(
328
328
  min=self.get_min_value(), max=self.get_max_value()
329
329
  )
330
- usr_input = color.ColoredInput().get(dialog).split(" ")
330
+ usr_input = color.ColoredInput().get(dialog).strip().split(" ")
331
331
  int_vals: list[int] = []
332
332
  for inp in usr_input:
333
333
  try:
@@ -689,7 +689,11 @@ class YesNoInput:
689
689
 
690
690
  if usr_input == core.core_data.local_manager.get_key("quit_key"):
691
691
  return None
692
- return usr_input == core.core_data.local_manager.get_key("yes_key")
692
+ return (
693
+ usr_input == core.core_data.local_manager.get_key("yes_key")
694
+ or usr_input.lower().strip()
695
+ == core.core_data.local_manager.get_key("yes").lower().strip()
696
+ )
693
697
 
694
698
 
695
699
  class DialogBuilder:
@@ -9,6 +9,7 @@ from bcsfe.cli.edits import (
9
9
  map,
10
10
  event_tickets,
11
11
  max_all,
12
+ storage,
12
13
  )
13
14
 
14
15
  __all__ = [
@@ -22,4 +23,5 @@ __all__ = [
22
23
  "map",
23
24
  "event_tickets",
24
25
  "max_all",
26
+ "storage",
25
27
  ]
@@ -12,6 +12,12 @@ class BasicItems:
12
12
  return core.core_data.local_manager.get_key(key)
13
13
  return name.strip()
14
14
 
15
+ @staticmethod
16
+ def reset_golden_cat_cpus(save_file: core.SaveFile):
17
+ save_file.golden_cpu_count = 0
18
+
19
+ color.ColoredText.localize("reset_golden_cat_cpus_success")
20
+
15
21
  @staticmethod
16
22
  def edit_catfood(save_file: core.SaveFile):
17
23
  should_exit = not dialog_creator.YesNoInput().get_input_once("catfood_warning")
@@ -48,7 +48,6 @@ class CatEditor:
48
48
  if len(current_cats) > 50:
49
49
  color.ColoredText.localize("total_selected_cats", total=len(current_cats))
50
50
  else:
51
- self.save_file.cats.bulk_download_names(self.save_file, current_cats)
52
51
  for cat in current_cats:
53
52
  names = cat.get_names_cls(self.save_file)
54
53
  if not names:
@@ -56,9 +55,8 @@ class CatEditor:
56
55
  color.ColoredText.localize("selected_cat", id=cat.id, name=names[0])
57
56
 
58
57
  def select(
59
- self,
60
- current_cats: list[core.Cat] | None = None,
61
- ) -> list[core.Cat] | None:
58
+ self, current_cats: list[core.Cat] | None = None, finish_option: bool = True
59
+ ) -> tuple[list[core.Cat], bool]:
62
60
  if current_cats is None:
63
61
  current_cats = []
64
62
  options: dict[str, Callable[[], Any]] = {
@@ -72,19 +70,25 @@ class CatEditor:
72
70
  "select_cats_not_unlocked": self.get_non_unlocked_cats,
73
71
  "select_cats_not_obtainable": self.get_cats_unobtainable,
74
72
  "select_cats_non_gatya": self.get_non_gacha_cats,
73
+ "select_cats_game_version": self.select_cats_game_version,
75
74
  }
75
+ if finish_option:
76
+ options["finish"] = lambda: None
76
77
  option_id = dialog_creator.ChoiceInput(
77
78
  list(options), list(options), [], {}, "select_cats", True
78
79
  ).single_choice()
79
80
  if option_id is None:
80
- return current_cats
81
+ return current_cats, False
81
82
  option_id -= 1
82
83
 
84
+ if option_id == len(options) - 1 and finish_option:
85
+ return current_cats, True
86
+
83
87
  func = options[list(options)[option_id]]
84
88
  new_cats = func()
85
89
 
86
90
  if new_cats is None:
87
- return None
91
+ return current_cats, False
88
92
 
89
93
  if current_cats:
90
94
  mode_id = dialog_creator.IntInput().get_basic_input_locale("and_mode_q", {})
@@ -102,12 +106,12 @@ class CatEditor:
102
106
  mode = SelectMode.OR
103
107
 
104
108
  if mode == SelectMode.AND:
105
- return list(set(current_cats) & set(new_cats))
109
+ return list(set(current_cats) & set(new_cats)), False
106
110
  if mode == SelectMode.OR:
107
- return list(set(current_cats) | set(new_cats))
111
+ return list(set(current_cats) | set(new_cats)), False
108
112
  if mode == SelectMode.REPLACE:
109
- return new_cats
110
- return new_cats
113
+ return new_cats, False
114
+ return new_cats, False
111
115
 
112
116
  def select_id(self) -> list[core.Cat] | None:
113
117
  cat_ids = dialog_creator.RangeInput(
@@ -117,6 +121,78 @@ class CatEditor:
117
121
  return None
118
122
  return self.save_file.cats.get_cats_by_ids(cat_ids)
119
123
 
124
+ def select_cats_game_version(self) -> list[core.Cat] | None:
125
+ unitbuy = core.UnitBuy(self.save_file)
126
+ if unitbuy.unit_buy is None:
127
+ return None
128
+
129
+ versions_set: set[int] = set()
130
+ for cat in unitbuy.unit_buy:
131
+ if cat.game_version == -1:
132
+ continue
133
+ versions_set.add(cat.game_version)
134
+
135
+ if not versions_set:
136
+ return None
137
+
138
+ versions = list(versions_set)
139
+ versions.sort()
140
+
141
+ color.ColoredText.localize("possible_gvs")
142
+
143
+ cur_major_v = -1
144
+ for version in versions:
145
+ gv = core.GameVersion(version)
146
+ major_v = gv.get_parts()[0]
147
+ if major_v != cur_major_v:
148
+ if cur_major_v != -1:
149
+ print()
150
+ cur_major_v = major_v
151
+ else:
152
+ color.ColoredText(", ", end="")
153
+ color.ColoredText(f"<@t>{gv.format()}</>", end="")
154
+
155
+ print()
156
+
157
+ usr_input = dialog_creator.StringInput().get_input_locale("select_gv")
158
+ if usr_input is None:
159
+ return None
160
+ chunks = usr_input.split(" ")
161
+
162
+ versions_selected: list[int] = []
163
+ for chunk in chunks:
164
+ parts = chunk.split("-")
165
+ if len(parts) == 2:
166
+ min = parts[0]
167
+ max = parts[1]
168
+
169
+ v1 = core.GameVersion.from_string(min)
170
+ v2 = core.GameVersion.from_string(max)
171
+
172
+ for v in range(v1.game_version, v2.game_version + 1):
173
+ versions_selected.append(v)
174
+ else:
175
+ v = core.GameVersion.from_string(chunk)
176
+ versions_selected.append(v.game_version)
177
+
178
+ valid_versions: set[int] = set()
179
+ for version in versions_selected:
180
+ if version in versions_set:
181
+ valid_versions.add(version)
182
+
183
+ if not valid_versions:
184
+ color.ColoredText.localize("no_valid_gvs_entered")
185
+
186
+ cats: list[core.Cat] = []
187
+ for cat in self.save_file.cats.cats:
188
+ row = unitbuy.get_unit_buy(cat.id)
189
+ if row is None:
190
+ continue
191
+ if row.game_version in valid_versions:
192
+ cats.append(cat)
193
+
194
+ return cats
195
+
120
196
  def select_rarity(self) -> list[core.Cat] | None:
121
197
  rarity_names = self.save_file.cats.get_rarity_names(self.save_file)
122
198
  rarity_ids, _ = dialog_creator.ChoiceInput(
@@ -639,11 +715,12 @@ class CatEditor:
639
715
  stop = False
640
716
  cats = []
641
717
  while not stop:
642
- current_cats = cat_editor.select(cats)
643
- if current_cats is None:
644
- return None, []
718
+ current_cats, finished = cat_editor.select(cats)
645
719
  cats = current_cats
646
720
  cat_editor.print_selected_cats(cats)
721
+ if finished:
722
+ stop = True
723
+ continue
647
724
  finished = dialog_creator.YesNoInput().get_input_once(
648
725
  "finished_cats_selection"
649
726
  )
@@ -682,9 +759,7 @@ class CatEditor:
682
759
  return False, cats
683
760
  option_id -= 1
684
761
  if option_id == 0:
685
- cats_ = self.select(cats)
686
- if cats_ is None:
687
- return False, cats
762
+ cats_, _ = self.select(cats, False)
688
763
  cats = cats_
689
764
  elif option_id == 1:
690
765
  self.unlock_remove_cats_run(self.save_file, cats, self)
@@ -20,7 +20,8 @@ class EventTickets:
20
20
  )
21
21
 
22
22
  cli.color.ColoredText.localize("downloading_gatya_data")
23
- gatya_event_data = core.ServerHandler(self.save_file).download_gatya_data()
23
+ temp_save_file = core.SaveFile(cc=save_file.cc, gv=save_file.game_version)
24
+ gatya_event_data = core.ServerHandler(temp_save_file).download_gatya_data()
24
25
 
25
26
  if gatya_event_data is None:
26
27
  cli.color.ColoredText.localize("download_gatya_data_fail")
@@ -92,8 +92,12 @@ def edit_chapters(
92
92
  chapters: ChaptersType,
93
93
  letter_code: str,
94
94
  type: int | None = None,
95
+ no_r_prefix: bool = False,
96
+ base_index: int | None = None,
95
97
  ) -> dict[int, bool] | None:
96
- map_names = core.MapNames(save_file, letter_code)
98
+ map_names = core.MapNames(
99
+ save_file, letter_code, no_r_prefix=no_r_prefix, base_index=base_index
100
+ )
97
101
  names = map_names.map_names
98
102
 
99
103
  choice = dialog_creator.ChoiceInput.from_reduced(