bcsfe 3.5.1__tar.gz → 3.5.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.5.1/src/bcsfe.egg-info → bcsfe-3.5.2}/PKG-INFO +1 -1
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/__init__.py +8 -3
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/file_dialog.py +1 -1
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/upgrade.py +8 -4
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/story.py +43 -49
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/io/path.py +8 -5
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/core/save.properties +2 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/map.properties +1 -1
- {bcsfe-3.5.1 → bcsfe-3.5.2/src/bcsfe.egg-info}/PKG-INFO +1 -1
- {bcsfe-3.5.1 → bcsfe-3.5.2}/LICENSE +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/MANIFEST.in +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/README.md +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/pyproject.toml +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/setup.cfg +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/setup.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/__main__.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/__init__.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/color.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/color_hex.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/dialog_creator.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/edits/__init__.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/edits/aku_realm.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/edits/basic_items.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/edits/cat_editor.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/edits/clear_tutorial.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/edits/enemy_editor.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/edits/event_tickets.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/edits/fixes.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/edits/map.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/edits/max_all.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/edits/rare_ticket_trade.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/edits/storage.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/feature_handler.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/main.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/recent_saves.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/save_management.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/cli/server_cli.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/__init__.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/country_code.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/crypto.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/__init__.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/battle/__init__.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/battle/battle_items.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/battle/cleared_slots.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/battle/enemy.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/battle/slots.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/__init__.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/beacon_base.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/cat.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/drop_chara.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/gambling.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/gatya.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/gatya_item.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/item_pack.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/login_bonuses.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/matatabi.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/medals.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/mission.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/my_sale.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/nyanko_club.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/officer_pass.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/playtime.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/powerup.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/scheme_items.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/special_skill.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/stamp.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/talent_orbs.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/unlock_popups.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/catbase/user_rank_rewards.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/gamoto/__init__.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/gamoto/base_materials.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/gamoto/cat_shrine.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/gamoto/catamins.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/gamoto/gamatoto.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/gamoto/ototo.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/localizable.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/__init__.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/aku.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/challenge.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/chapters.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/dojo.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/enigma.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/event.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/ex_stage.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/gauntlets.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/item_reward_stage.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/legend_quest.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/map_names.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/map_option.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/map_reset.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/outbreaks.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/timed_score.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/tower.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/uncanny.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game/map/zero_legends.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/game_version.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/io/__init__.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/io/adb_handler.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/io/bc_csv.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/io/command.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/io/config.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/io/data.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/io/git_handler.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/io/json_file.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/io/root_handler.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/io/save.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/io/thread_helper.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/io/waydroid.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/io/yaml.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/locale_handler.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/log.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/max_value_helper.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/server/__init__.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/server/client_info.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/server/event_data.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/server/game_data_getter.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/server/headers.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/server/managed_item.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/server/request.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/server/server_handler.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/server/updater.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/core/theme_handler.py +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/core/config.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/core/files.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/core/input.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/core/locale.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/core/main.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/core/server.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/core/theme.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/core/updater.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/bannable_items.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/cats.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/enemy.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/fixes.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/gambling.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/gamototo.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/gatya.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/gold_pass.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/items.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/medals.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/missions.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/playtime.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/scheme_items.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/special_skills.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/talent_orbs.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/treasures.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/en/edits/user_rank.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/core/config.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/core/files.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/core/input.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/core/locale.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/core/main.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/core/save.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/core/server.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/core/theme.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/core/updater.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/bannable_items.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/cats.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/enemy.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/fixes.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/gambling.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/gamototo.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/gatya.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/gold_pass.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/items.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/map.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/medals.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/missions.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/playtime.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/scheme_items.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/special_skills.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/talent_orbs.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/treasures.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/edits/user_rank.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/tw/metadata.json +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/core/config.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/core/files.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/core/input.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/core/locale.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/core/main.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/core/save.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/core/server.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/core/theme.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/core/updater.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/bannable_items.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/cats.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/enemy.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/fixes.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/gambling.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/gamototo.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/gatya.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/gold_pass.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/items.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/map.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/medals.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/missions.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/playtime.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/scheme_items.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/special_skills.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/talent_orbs.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/treasures.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/edits/user_rank.properties +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/locales/vi/metadata.json +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/themes/default.json +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/files/themes/discord.json +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe/py.typed +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe.egg-info/SOURCES.txt +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe.egg-info/dependency_links.txt +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe.egg-info/entry_points.txt +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe.egg-info/requires.txt +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/src/bcsfe.egg-info/top_level.txt +0 -0
- {bcsfe-3.5.1 → bcsfe-3.5.2}/tests/test_parse.py +0 -0
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
__version__ = "3.5.2"
|
|
2
4
|
|
|
3
5
|
__app_name__ = "bcsfe"
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
try:
|
|
8
|
+
from importlib.resources.abc import Traversable
|
|
9
|
+
except ImportError:
|
|
10
|
+
pass
|
|
6
11
|
|
|
7
12
|
from bcsfe import core, cli
|
|
8
13
|
|
|
9
14
|
__all__ = ["core", "cli"]
|
|
10
15
|
|
|
11
16
|
|
|
12
|
-
def copy_to_data_dir(base_path: Traversable, path: Traversable):
|
|
17
|
+
def copy_to_data_dir(base_path: "Traversable", path: "Traversable"):
|
|
13
18
|
if path.is_dir():
|
|
14
19
|
for item in path.iterdir():
|
|
15
20
|
copy_to_data_dir(base_path, item)
|
|
@@ -49,7 +49,7 @@ class FileDialog:
|
|
|
49
49
|
|
|
50
50
|
files_str_ls = [file.basename() for file in files]
|
|
51
51
|
|
|
52
|
-
dialog_creator.single_select_key(
|
|
52
|
+
return dialog_creator.single_select_key(
|
|
53
53
|
dialog_creator.Actions[Optional[str]]
|
|
54
54
|
.new()
|
|
55
55
|
.add_new_raw(files_str_ls, lambda index: files[index].to_str())
|
|
@@ -10,8 +10,8 @@ class Upgrade:
|
|
|
10
10
|
self.plus = plus
|
|
11
11
|
self.base = base
|
|
12
12
|
|
|
13
|
-
self.base_range = None
|
|
14
|
-
self.plus_range = None
|
|
13
|
+
self.base_range: tuple[int, int] | None = None
|
|
14
|
+
self.plus_range: tuple[int, int] | None = None
|
|
15
15
|
|
|
16
16
|
def get_base(self) -> int:
|
|
17
17
|
return self.base + 1
|
|
@@ -34,7 +34,9 @@ class Upgrade:
|
|
|
34
34
|
def get_random_base(self, max_base: int | None = None) -> int:
|
|
35
35
|
if self.base_range is None:
|
|
36
36
|
return self.base
|
|
37
|
-
|
|
37
|
+
min_b = min(self.base_range)
|
|
38
|
+
max_b = max(self.base_range)
|
|
39
|
+
base = random.randint(min_b, max_b)
|
|
38
40
|
if max_base is not None:
|
|
39
41
|
base = min(base, max_base)
|
|
40
42
|
return base
|
|
@@ -42,7 +44,9 @@ class Upgrade:
|
|
|
42
44
|
def get_random_plus(self, max_plus: int | None = None) -> int:
|
|
43
45
|
if self.plus_range is None:
|
|
44
46
|
return self.plus
|
|
45
|
-
|
|
47
|
+
min_p = min(self.plus_range)
|
|
48
|
+
max_p = max(self.plus_range)
|
|
49
|
+
plus = random.randint(min_p, max_p)
|
|
46
50
|
if max_plus is not None:
|
|
47
51
|
plus = min(plus, max_plus)
|
|
48
52
|
return plus
|
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
from typing import Any, Optional
|
|
3
3
|
from bcsfe import core
|
|
4
4
|
from bcsfe.cli import color, dialog_creator
|
|
5
|
+
import random
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
class Stage:
|
|
@@ -962,6 +963,27 @@ class StoryChapters:
|
|
|
962
963
|
|
|
963
964
|
color.color_print_key("itf_timed_scores_edited")
|
|
964
965
|
|
|
966
|
+
@staticmethod
|
|
967
|
+
def itf_timed_score_input() -> tuple[int, int] | None:
|
|
968
|
+
inp = dialog_creator.str_input_key("itf_timed_score_dialog")
|
|
969
|
+
if inp is None:
|
|
970
|
+
return None
|
|
971
|
+
|
|
972
|
+
parts = inp.split("-", maxsplit=1)
|
|
973
|
+
|
|
974
|
+
parts_i: list[int] = []
|
|
975
|
+
for part in parts:
|
|
976
|
+
if not part.isdigit():
|
|
977
|
+
return StoryChapters.itf_timed_score_input()
|
|
978
|
+
score = int(part)
|
|
979
|
+
mx = dialog_creator.MaxValue.i32(
|
|
980
|
+
core.core_data.max_value_manager.itf_timed_score
|
|
981
|
+
)
|
|
982
|
+
score = mx.clamp(score)
|
|
983
|
+
parts_i.append(score)
|
|
984
|
+
|
|
985
|
+
return min(parts_i), max(parts_i)
|
|
986
|
+
|
|
965
987
|
@staticmethod
|
|
966
988
|
def edit_itf_timed_scores_whole_chapters(
|
|
967
989
|
save_file: core.SaveFile, chapters: list[int]
|
|
@@ -972,34 +994,21 @@ class StoryChapters:
|
|
|
972
994
|
|
|
973
995
|
if is_per_chapter:
|
|
974
996
|
for chapter_id in chapters:
|
|
975
|
-
print(chapter_id)
|
|
976
997
|
StoryChapters.print_current_chapter(save_file, chapter_id)
|
|
977
998
|
chapter = save_file.story.get_real_chapters()[chapter_id]
|
|
978
|
-
score =
|
|
979
|
-
"itf_timed_score",
|
|
980
|
-
min=0,
|
|
981
|
-
_max=dialog_creator.MaxValue.i32(
|
|
982
|
-
core.core_data.max_value_manager.itf_timed_score
|
|
983
|
-
),
|
|
984
|
-
)
|
|
999
|
+
score = StoryChapters.itf_timed_score_input()
|
|
985
1000
|
if score is None:
|
|
986
1001
|
return
|
|
987
1002
|
for stage in chapter.get_valid_treasure_stages():
|
|
988
|
-
stage.itf_timed_score = score
|
|
1003
|
+
stage.itf_timed_score = random.randrange(score[0], score[1])
|
|
989
1004
|
else:
|
|
990
|
-
score =
|
|
991
|
-
"itf_timed_score_dialog",
|
|
992
|
-
min=0,
|
|
993
|
-
_max=dialog_creator.MaxValue.i32(
|
|
994
|
-
core.core_data.max_value_manager.itf_timed_score
|
|
995
|
-
),
|
|
996
|
-
)
|
|
1005
|
+
score = StoryChapters.itf_timed_score_input()
|
|
997
1006
|
if score is None:
|
|
998
1007
|
return
|
|
999
1008
|
for chapter_id in chapters:
|
|
1000
1009
|
chapter = save_file.story.get_real_chapters()[chapter_id]
|
|
1001
1010
|
for stage in chapter.get_valid_treasure_stages():
|
|
1002
|
-
stage.itf_timed_score = score
|
|
1011
|
+
stage.itf_timed_score = random.randrange(score[0], score[1])
|
|
1003
1012
|
|
|
1004
1013
|
@staticmethod
|
|
1005
1014
|
def print_current_stage(save_file: core.SaveFile, chapter_id: int, stage_id: int):
|
|
@@ -1027,32 +1036,25 @@ class StoryChapters:
|
|
|
1027
1036
|
for stage_id in stage_ids:
|
|
1028
1037
|
StoryChapters.print_current_stage(save_file, chapter_id, stage_id)
|
|
1029
1038
|
|
|
1030
|
-
score =
|
|
1031
|
-
|
|
1032
|
-
min=0,
|
|
1033
|
-
_max=dialog_creator.MaxValue.i32(
|
|
1034
|
-
core.core_data.max_value_manager.itf_timed_score
|
|
1035
|
-
),
|
|
1036
|
-
)
|
|
1039
|
+
score = StoryChapters.itf_timed_score_input()
|
|
1040
|
+
|
|
1037
1041
|
if score is None:
|
|
1038
1042
|
return
|
|
1039
|
-
chapter.stages[stage_id].itf_timed_score =
|
|
1043
|
+
chapter.stages[stage_id].itf_timed_score = random.randrange(
|
|
1044
|
+
score[0], score[1]
|
|
1045
|
+
)
|
|
1040
1046
|
|
|
1041
1047
|
@staticmethod
|
|
1042
1048
|
def edit_itf_timed_scores_ind_per_chapter_many(
|
|
1043
1049
|
chapter: Chapter, stage_ids: list[int]
|
|
1044
1050
|
):
|
|
1045
|
-
score =
|
|
1046
|
-
"itf_timed_score_dialog",
|
|
1047
|
-
min=0,
|
|
1048
|
-
_max=dialog_creator.MaxValue.i32(
|
|
1049
|
-
core.core_data.max_value_manager.itf_timed_score
|
|
1050
|
-
),
|
|
1051
|
-
)
|
|
1051
|
+
score = StoryChapters.itf_timed_score_input()
|
|
1052
1052
|
if score is None:
|
|
1053
1053
|
return
|
|
1054
1054
|
for stage_id in stage_ids:
|
|
1055
|
-
chapter.stages[stage_id].itf_timed_score =
|
|
1055
|
+
chapter.stages[stage_id].itf_timed_score = random.randrange(
|
|
1056
|
+
score[0], score[1]
|
|
1057
|
+
)
|
|
1056
1058
|
|
|
1057
1059
|
@staticmethod
|
|
1058
1060
|
def edit_itf_timed_scores_ind_per_chapter(
|
|
@@ -1083,32 +1085,24 @@ class StoryChapters:
|
|
|
1083
1085
|
if is_ind:
|
|
1084
1086
|
for stage_id in stage_ids:
|
|
1085
1087
|
StoryChapters.print_current_stage(save_file, 3, stage_id)
|
|
1086
|
-
score =
|
|
1087
|
-
"itf_timed_score_dialog",
|
|
1088
|
-
min=0,
|
|
1089
|
-
_max=dialog_creator.MaxValue.i32(
|
|
1090
|
-
core.core_data.max_value_manager.itf_timed_score
|
|
1091
|
-
),
|
|
1092
|
-
)
|
|
1088
|
+
score = StoryChapters.itf_timed_score_input()
|
|
1093
1089
|
if score is None:
|
|
1094
1090
|
return
|
|
1095
1091
|
for chapter_id in chapters:
|
|
1096
1092
|
chapter = save_file.story.get_real_chapters()[chapter_id]
|
|
1097
|
-
chapter.stages[stage_id].itf_timed_score =
|
|
1093
|
+
chapter.stages[stage_id].itf_timed_score = random.randrange(
|
|
1094
|
+
score[0], score[1]
|
|
1095
|
+
)
|
|
1098
1096
|
else:
|
|
1099
|
-
score =
|
|
1100
|
-
"itf_timed_score",
|
|
1101
|
-
min=0,
|
|
1102
|
-
_max=dialog_creator.MaxValue.i32(
|
|
1103
|
-
core.core_data.max_value_manager.itf_timed_score
|
|
1104
|
-
),
|
|
1105
|
-
)
|
|
1097
|
+
score = StoryChapters.itf_timed_score_input()
|
|
1106
1098
|
if score is None:
|
|
1107
1099
|
return
|
|
1108
1100
|
for chapter_id in chapters:
|
|
1109
1101
|
chapter = save_file.story.get_real_chapters()[chapter_id]
|
|
1110
1102
|
for stage_id in stage_ids:
|
|
1111
|
-
chapter.stages[stage_id].itf_timed_score =
|
|
1103
|
+
chapter.stages[stage_id].itf_timed_score = random.randrange(
|
|
1104
|
+
score[0], score[1]
|
|
1105
|
+
)
|
|
1112
1106
|
|
|
1113
1107
|
@staticmethod
|
|
1114
1108
|
def edit_itf_timed_scores_individual_stages(
|
|
@@ -59,11 +59,17 @@ class Path:
|
|
|
59
59
|
def to_str_forwards(self) -> str:
|
|
60
60
|
return self.path.replace("\\", "/")
|
|
61
61
|
|
|
62
|
+
@staticmethod
|
|
63
|
+
def is_ashell() -> bool:
|
|
64
|
+
return os.environ["HOME"].rstrip("/").endswith("Documents")
|
|
65
|
+
|
|
62
66
|
@staticmethod
|
|
63
67
|
def get_data_folder() -> Path:
|
|
64
68
|
os_name = os.name
|
|
65
69
|
if os_name == "nt":
|
|
66
70
|
path = Path.join(os.environ["USERPROFILE"], "Documents", __app_name__)
|
|
71
|
+
elif os_name == "mac" or Path.is_ashell():
|
|
72
|
+
path = Path.join(os.environ["HOME"], "Documents", __app_name__)
|
|
67
73
|
elif os_name == "posix":
|
|
68
74
|
data_home = os.environ.get("XDG_DATA_HOME")
|
|
69
75
|
if data_home is None:
|
|
@@ -75,9 +81,6 @@ class Path:
|
|
|
75
81
|
if path.is_empty():
|
|
76
82
|
orig = Path.join(os.environ["HOME"], "Documents", __app_name__)
|
|
77
83
|
orig.copy(path)
|
|
78
|
-
|
|
79
|
-
elif os_name == "mac":
|
|
80
|
-
path = Path.join(os.environ["HOME"], "Documents", __app_name__)
|
|
81
84
|
else:
|
|
82
85
|
raise OSError("Unknown OS")
|
|
83
86
|
path.generate_dirs()
|
|
@@ -86,7 +89,7 @@ class Path:
|
|
|
86
89
|
@staticmethod
|
|
87
90
|
def get_config_folder() -> Path:
|
|
88
91
|
os_name = os.name
|
|
89
|
-
if os_name != "posix":
|
|
92
|
+
if os_name != "posix" or Path.is_ashell():
|
|
90
93
|
return Path.get_data_folder()
|
|
91
94
|
|
|
92
95
|
data_home = os.environ.get("XDG_CONFIG_HOME")
|
|
@@ -108,7 +111,7 @@ class Path:
|
|
|
108
111
|
@staticmethod
|
|
109
112
|
def get_state_folder() -> Path:
|
|
110
113
|
os_name = os.name
|
|
111
|
-
if os_name != "posix":
|
|
114
|
+
if os_name != "posix" or Path.is_ashell():
|
|
112
115
|
return Path.get_data_folder()
|
|
113
116
|
data_home = os.environ.get("XDG_STATE_HOME")
|
|
114
117
|
if data_home is None:
|
|
@@ -104,3 +104,5 @@ recent_save=<@s><@q>{inquiry_code}</> <@t>{cc}</>-<@t>{gv}</> @ <@t>{year}</>-<@
|
|
|
104
104
|
load_recent_saves=Load from recent saves and backups
|
|
105
105
|
no_recent_saves=<@w>No recent saves</>
|
|
106
106
|
current_save=\nCurrent Save: <@t>{cc}</>-<@t>{gv}</> Inquiry: <@t>{inquiry_code}</>
|
|
107
|
+
|
|
108
|
+
root_storage_pull=Pull save file from root storage
|
|
@@ -50,7 +50,7 @@ aku_current_stage=Aku Realm Stage <@q>{name}</> (id: <@q>{id}</>)
|
|
|
50
50
|
itf_timed_scores=Into the Future Timed Scores
|
|
51
51
|
itf_timed_scores_dialog=Do you want to edit timed scores for <@t>whole chapters at once</> or <@t>individual stages</>?:
|
|
52
52
|
itf_timed_scores_edited=<@su>Succesfully edited Into The Future timed scores</>
|
|
53
|
-
itf_timed_score_dialog=Enter the timed score:
|
|
53
|
+
itf_timed_score_dialog=Enter the timed score (you can also specify a range such as <@t>6000</>-<@t>9000</> to assign a random score):
|
|
54
54
|
current_stage={chapter_name} <@t>{stage_name}</>
|
|
55
55
|
itf_timed_scores_individual_dialog=Do you want to edit the timed score of each selected stage <@t>individually</>? or set <@t>all</> selected stages to the same timed score?:
|
|
56
56
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|