bcsfe 3.2.0b3__tar.gz → 3.2.2__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.
- {bcsfe-3.2.0b3/src/bcsfe.egg-info → bcsfe-3.2.2}/PKG-INFO +10 -9
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/README.md +9 -8
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/__init__.py +1 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/dialog_creator.py +27 -16
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/edits/basic_items.py +7 -1
- bcsfe-3.2.2/src/bcsfe/cli/edits/map.py +544 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/feature_handler.py +2 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/save_management.py +17 -5
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/__init__.py +10 -1
- bcsfe-3.2.2/src/bcsfe/core/game/battle/battle_items.py +300 -0
- bcsfe-3.2.2/src/bcsfe/core/game/catbase/unlock_popups.py +163 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/upgrade.py +8 -2
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/gamoto/cat_shrine.py +22 -16
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/__init__.py +2 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/chapters.py +15 -7
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/enigma.py +1 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/event.py +91 -31
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/gauntlets.py +19 -11
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/legend_quest.py +18 -9
- bcsfe-3.2.2/src/bcsfe/core/game/map/map_names.py +112 -0
- bcsfe-3.2.2/src/bcsfe/core/game/map/map_option.py +79 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/story.py +2 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/tower.py +1 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/uncanny.py +3 -3
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/zero_legends.py +14 -8
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/io/config.py +15 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/io/path.py +7 -3
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/io/save.py +7 -41
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/server/game_data_getter.py +10 -5
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/core/locale.properties +1 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/core/main.properties +1 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/core/save.properties +1 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/core/server.properties +5 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/core/theme.properties +1 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/cats.properties +1 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/gamototo.properties +3 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/gold_pass.properties +1 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/items.properties +9 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/map.properties +39 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/core/input.properties +3 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/core/main.properties +0 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/core/save.properties +8 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/core/server.properties +4 -1
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/cats.properties +40 -28
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/map.properties +0 -41
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/treasures.properties +2 -2
- {bcsfe-3.2.0b3 → bcsfe-3.2.2/src/bcsfe.egg-info}/PKG-INFO +10 -9
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe.egg-info/SOURCES.txt +1 -0
- bcsfe-3.2.0b3/src/bcsfe/cli/edits/map.py +0 -265
- bcsfe-3.2.0b3/src/bcsfe/core/game/battle/battle_items.py +0 -127
- bcsfe-3.2.0b3/src/bcsfe/core/game/catbase/unlock_popups.py +0 -71
- bcsfe-3.2.0b3/src/bcsfe/core/game/map/map_names.py +0 -138
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/LICENSE +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/MANIFEST.in +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/pyproject.toml +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/setup.cfg +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/setup.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/__main__.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/__init__.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/color.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/edits/__init__.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/edits/aku_realm.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/edits/cat_editor.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/edits/clear_tutorial.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/edits/enemy_editor.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/edits/event_tickets.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/edits/fixes.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/edits/max_all.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/edits/rare_ticket_trade.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/edits/storage.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/file_dialog.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/main.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/cli/server_cli.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/country_code.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/crypto.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/__init__.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/battle/__init__.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/battle/cleared_slots.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/battle/enemy.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/battle/slots.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/__init__.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/beacon_base.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/cat.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/drop_chara.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/gambling.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/gatya.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/gatya_item.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/item_pack.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/login_bonuses.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/matatabi.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/medals.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/mission.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/my_sale.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/nyanko_club.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/officer_pass.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/playtime.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/powerup.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/scheme_items.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/special_skill.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/stamp.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/talent_orbs.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/catbase/user_rank_rewards.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/gamoto/__init__.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/gamoto/base_materials.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/gamoto/catamins.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/gamoto/gamatoto.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/gamoto/ototo.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/localizable.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/aku.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/challenge.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/dojo.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/ex_stage.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/item_reward_stage.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/map_reset.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/outbreaks.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game/map/timed_score.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/game_version.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/io/__init__.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/io/adb_handler.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/io/bc_csv.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/io/command.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/io/data.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/io/git_handler.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/io/json_file.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/io/root_handler.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/io/thread_helper.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/io/waydroid.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/io/yaml.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/locale_handler.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/log.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/max_value_helper.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/server/__init__.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/server/client_info.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/server/event_data.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/server/headers.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/server/managed_item.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/server/request.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/server/server_handler.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/server/updater.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/core/theme_handler.py +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/core/config.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/core/files.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/core/input.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/core/updater.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/bannable_items.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/enemy.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/fixes.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/gambling.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/gatya.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/medals.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/missions.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/playtime.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/scheme_items.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/special_skills.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/talent_orbs.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/treasures.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/en/edits/user_rank.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/core/config.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/core/files.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/core/locale.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/core/theme.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/core/updater.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/bannable_items.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/enemy.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/fixes.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/gambling.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/gamototo.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/gatya.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/gold_pass.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/items.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/medals.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/missions.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/playtime.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/scheme_items.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/special_skills.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/talent_orbs.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/edits/user_rank.properties +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/locales/vi/metadata.json +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/max_values.json +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/themes/default.json +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/files/themes/discord.json +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe/py.typed +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe.egg-info/dependency_links.txt +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe.egg-info/entry_points.txt +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe.egg-info/requires.txt +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/src/bcsfe.egg-info/top_level.txt +0 -0
- {bcsfe-3.2.0b3 → bcsfe-3.2.2}/tests/test_parse.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bcsfe
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.2
|
|
4
4
|
Summary: A save file editor for The Battle Cats
|
|
5
5
|
Author: fieryhenry
|
|
6
6
|
License-Expression: GPL-3.0-or-later
|
|
@@ -298,13 +298,16 @@ pip uninstall bcsfe
|
|
|
298
298
|
```
|
|
299
299
|
## Terms of Use
|
|
300
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
|
+
|
|
301
304
|
By using the editor you agree to the following:
|
|
302
305
|
|
|
303
306
|
If you are using the editor to run a paid service that profits off of the editor
|
|
304
307
|
(e.g a service to provide people with hacked accounts, or a paid discord bot to edit people's accounts,
|
|
305
308
|
etc) you must make it very clear that you are using this save editor.
|
|
306
309
|
|
|
307
|
-
This should be done by linking this
|
|
310
|
+
This should be done by linking this Codeberg page, and explicitly stating that the tool you are
|
|
308
311
|
using is available for free and that they don't need to use your service to hack their account.
|
|
309
312
|
|
|
310
313
|
This information needs to be visible and something the customer agrees to **before** any payment is made.
|
|
@@ -318,8 +321,6 @@ the editor under the hood as long as you abide by the [License](#license). Basic
|
|
|
318
321
|
distributing a program which uses the editor, you need to license your own program under the GPL
|
|
319
322
|
or a compatible license (basically make it open source / free software too).
|
|
320
323
|
|
|
321
|
-
These terms are designed to prevent scams and the exploitation of users.
|
|
322
|
-
|
|
323
324
|
Also if you **are** profiting from the editor, it would be greatly appreciated if you could
|
|
324
325
|
give back something and support me.
|
|
325
326
|
|
|
@@ -429,13 +430,13 @@ You'll need to collect the catfood in-game after each clear though
|
|
|
429
430
|
|
|
430
431
|
### Install from source
|
|
431
432
|
|
|
432
|
-
If you want the latest features then you can install the editor from the
|
|
433
|
+
If you want the latest features then you can install the editor from the git repo.
|
|
433
434
|
|
|
434
435
|
1. Download git:
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
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
|
|
439
440
|
|
|
440
441
|
2. Run the following commands: (You may have to replace `py` with `python` or `python3`)
|
|
441
442
|
|
|
@@ -269,13 +269,16 @@ pip uninstall bcsfe
|
|
|
269
269
|
```
|
|
270
270
|
## Terms of Use
|
|
271
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
|
+
|
|
272
275
|
By using the editor you agree to the following:
|
|
273
276
|
|
|
274
277
|
If you are using the editor to run a paid service that profits off of the editor
|
|
275
278
|
(e.g a service to provide people with hacked accounts, or a paid discord bot to edit people's accounts,
|
|
276
279
|
etc) you must make it very clear that you are using this save editor.
|
|
277
280
|
|
|
278
|
-
This should be done by linking this
|
|
281
|
+
This should be done by linking this Codeberg page, and explicitly stating that the tool you are
|
|
279
282
|
using is available for free and that they don't need to use your service to hack their account.
|
|
280
283
|
|
|
281
284
|
This information needs to be visible and something the customer agrees to **before** any payment is made.
|
|
@@ -289,8 +292,6 @@ the editor under the hood as long as you abide by the [License](#license). Basic
|
|
|
289
292
|
distributing a program which uses the editor, you need to license your own program under the GPL
|
|
290
293
|
or a compatible license (basically make it open source / free software too).
|
|
291
294
|
|
|
292
|
-
These terms are designed to prevent scams and the exploitation of users.
|
|
293
|
-
|
|
294
295
|
Also if you **are** profiting from the editor, it would be greatly appreciated if you could
|
|
295
296
|
give back something and support me.
|
|
296
297
|
|
|
@@ -400,13 +401,13 @@ You'll need to collect the catfood in-game after each clear though
|
|
|
400
401
|
|
|
401
402
|
### Install from source
|
|
402
403
|
|
|
403
|
-
If you want the latest features then you can install the editor from the
|
|
404
|
+
If you want the latest features then you can install the editor from the git repo.
|
|
404
405
|
|
|
405
406
|
1. Download git:
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
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
|
|
410
411
|
|
|
411
412
|
2. Run the following commands: (You may have to replace `py` with `python` or `python3`)
|
|
412
413
|
|
|
@@ -72,19 +72,20 @@ class IntInput:
|
|
|
72
72
|
min: int = 0,
|
|
73
73
|
default: int | None = None,
|
|
74
74
|
signed: bool = True,
|
|
75
|
+
bit_count: int = 32,
|
|
75
76
|
):
|
|
76
77
|
self.signed = signed
|
|
77
|
-
self.
|
|
78
|
+
self.bit_count = bit_count
|
|
79
|
+
self.max = self.get_max_value(max, signed, bit_count)
|
|
78
80
|
self.min = min
|
|
79
81
|
self.default = default
|
|
80
82
|
|
|
81
83
|
@staticmethod
|
|
82
|
-
def get_max_value(max: int | None, signed: bool = True) -> int:
|
|
84
|
+
def get_max_value(max: int | None, signed: bool = True, bit_count: int = 32) -> int:
|
|
83
85
|
disable_maxes = core.core_data.config.get_bool(core.ConfigKey.DISABLE_MAXES)
|
|
84
86
|
if signed:
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
max_int = 2**32 - 1
|
|
87
|
+
bit_count -= 1
|
|
88
|
+
max_int = (2**bit_count) - 1
|
|
88
89
|
if disable_maxes or max is None:
|
|
89
90
|
return max_int
|
|
90
91
|
return min(max, max_int)
|
|
@@ -150,7 +151,7 @@ class ListOutput:
|
|
|
150
151
|
def __init__(
|
|
151
152
|
self,
|
|
152
153
|
strings: list[str],
|
|
153
|
-
ints: list[int],
|
|
154
|
+
ints: list[int] | list[str],
|
|
154
155
|
dialog: str | None = None,
|
|
155
156
|
perameters: dict[str, Any] | None = None,
|
|
156
157
|
start_index: int = 1,
|
|
@@ -210,7 +211,7 @@ class ChoiceInput:
|
|
|
210
211
|
self,
|
|
211
212
|
items: list[str],
|
|
212
213
|
strings: list[str],
|
|
213
|
-
ints: list[int],
|
|
214
|
+
ints: list[int] | list[str],
|
|
214
215
|
perameters: dict[str, int | str],
|
|
215
216
|
dialog: str,
|
|
216
217
|
single_choice: bool = False,
|
|
@@ -233,7 +234,7 @@ class ChoiceInput:
|
|
|
233
234
|
@staticmethod
|
|
234
235
|
def from_reduced(
|
|
235
236
|
items: list[str],
|
|
236
|
-
ints: list[int] | None = None,
|
|
237
|
+
ints: list[int] | list[str] | None = None,
|
|
237
238
|
perameters: dict[str, int | str] | None = None,
|
|
238
239
|
dialog: str | None = None,
|
|
239
240
|
single_choice: bool = False,
|
|
@@ -417,10 +418,12 @@ class MultiEditor:
|
|
|
417
418
|
signed: bool = True,
|
|
418
419
|
group_name_localized: bool = False,
|
|
419
420
|
cumulative_max: bool = False,
|
|
421
|
+
bit_count: int = 32,
|
|
420
422
|
):
|
|
421
423
|
self.items = items
|
|
422
424
|
self.strings = strings
|
|
423
425
|
self.ints = ints
|
|
426
|
+
self.bit_count = bit_count
|
|
424
427
|
if self.ints is not None:
|
|
425
428
|
total_ints = len(self.ints)
|
|
426
429
|
else:
|
|
@@ -482,7 +485,7 @@ class MultiEditor:
|
|
|
482
485
|
choices, all_at_once = ChoiceInput(
|
|
483
486
|
self.items,
|
|
484
487
|
self.strings,
|
|
485
|
-
self.ints or [],
|
|
488
|
+
self.ints or [], # type: ignore
|
|
486
489
|
self.perameters,
|
|
487
490
|
"select_edit",
|
|
488
491
|
).get()
|
|
@@ -502,7 +505,9 @@ class MultiEditor:
|
|
|
502
505
|
else:
|
|
503
506
|
max_value = self.max_values[choice]
|
|
504
507
|
if max_value is None:
|
|
505
|
-
max_value = IntInput.get_max_value(
|
|
508
|
+
max_value = IntInput.get_max_value(
|
|
509
|
+
max_value, self.signed, self.bit_count
|
|
510
|
+
)
|
|
506
511
|
max_max_value = max(max_max_value, max_value)
|
|
507
512
|
if self.cumulative_max:
|
|
508
513
|
max_max_value = max_max_value // len(choices)
|
|
@@ -522,7 +527,7 @@ class MultiEditor:
|
|
|
522
527
|
max_value = None
|
|
523
528
|
else:
|
|
524
529
|
max_value = self.max_values[choice]
|
|
525
|
-
max_value = IntInput.get_max_value(max_value, self.signed)
|
|
530
|
+
max_value = IntInput.get_max_value(max_value, self.signed, self.bit_count)
|
|
526
531
|
value = min(usr_input, max_value)
|
|
527
532
|
ints[choice] = value
|
|
528
533
|
if self.ints is not None:
|
|
@@ -543,7 +548,9 @@ class MultiEditor:
|
|
|
543
548
|
else:
|
|
544
549
|
max_value = self.max_values[choice]
|
|
545
550
|
if max_value is None:
|
|
546
|
-
max_value = IntInput.get_max_value(
|
|
551
|
+
max_value = IntInput.get_max_value(
|
|
552
|
+
max_value, self.signed, self.bit_count
|
|
553
|
+
)
|
|
547
554
|
|
|
548
555
|
if self.cumulative_max:
|
|
549
556
|
max_value -= sum(ints) - ints[choice]
|
|
@@ -576,6 +583,7 @@ class SingleEditor:
|
|
|
576
583
|
signed: bool = True,
|
|
577
584
|
localized_item: bool = False,
|
|
578
585
|
remove_alias: bool = False,
|
|
586
|
+
bit_count: int = 32,
|
|
579
587
|
):
|
|
580
588
|
if localized_item:
|
|
581
589
|
item = core.core_data.local_manager.get_key(item)
|
|
@@ -586,11 +594,10 @@ class SingleEditor:
|
|
|
586
594
|
self.max_value = max_value
|
|
587
595
|
self.min_value = min_value
|
|
588
596
|
self.signed = signed
|
|
597
|
+
self.bit_count = bit_count
|
|
589
598
|
|
|
590
599
|
def edit(self, escape_text: bool = True) -> int:
|
|
591
|
-
max_value = self.max_value
|
|
592
|
-
if max_value is None:
|
|
593
|
-
max_value = IntInput.get_max_value(max_value, self.signed)
|
|
600
|
+
max_value = IntInput.get_max_value(self.max_value, self.signed, self.bit_count)
|
|
594
601
|
if self.max_value is None:
|
|
595
602
|
dialog = "input_non_max"
|
|
596
603
|
elif self.min_value != 0:
|
|
@@ -598,7 +605,11 @@ class SingleEditor:
|
|
|
598
605
|
else:
|
|
599
606
|
dialog = "input"
|
|
600
607
|
usr_input = IntInput(
|
|
601
|
-
max_value,
|
|
608
|
+
max_value,
|
|
609
|
+
self.min_value,
|
|
610
|
+
default=self.value,
|
|
611
|
+
signed=self.signed,
|
|
612
|
+
bit_count=self.bit_count,
|
|
602
613
|
).get_input_locale_while(
|
|
603
614
|
dialog,
|
|
604
615
|
{
|
|
@@ -165,6 +165,8 @@ class BasicItems:
|
|
|
165
165
|
core.core_data.max_value_manager.get("platinum_tickets")
|
|
166
166
|
- platinum_ticket_amount
|
|
167
167
|
) * 10 + 9
|
|
168
|
+
|
|
169
|
+
max_value = max(0, max_value)
|
|
168
170
|
save_file.platinum_shards = dialog_creator.SingleEditor(
|
|
169
171
|
BasicItems.get_name(name, "platinum_shards"),
|
|
170
172
|
save_file.platinum_shards,
|
|
@@ -193,6 +195,10 @@ class BasicItems:
|
|
|
193
195
|
def edit_battle_items(save_file: core.SaveFile):
|
|
194
196
|
save_file.battle_items.edit(save_file)
|
|
195
197
|
|
|
198
|
+
@staticmethod
|
|
199
|
+
def edit_battle_items_endless(save_file: core.SaveFile):
|
|
200
|
+
save_file.battle_items.edit_endless_items(save_file)
|
|
201
|
+
|
|
196
202
|
@staticmethod
|
|
197
203
|
def edit_catamins(save_file: core.SaveFile):
|
|
198
204
|
names_o = core.core_data.get_gatya_item_names(save_file)
|
|
@@ -249,7 +255,7 @@ class BasicItems:
|
|
|
249
255
|
if items is None:
|
|
250
256
|
return
|
|
251
257
|
names: list[str] = []
|
|
252
|
-
for item in items:
|
|
258
|
+
for item in items[: len(save_file.treasure_chests)]:
|
|
253
259
|
name = names_o.get_name(item.id)
|
|
254
260
|
if name is None:
|
|
255
261
|
name = core.core_data.local_manager.get_key(
|