bcsfe-wrapper-python 0.1.15__py3-none-any.whl → 0.1.17__py3-none-any.whl
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_wrapper/wrapper.py +81 -18
- {bcsfe_wrapper_python-0.1.15.dist-info → bcsfe_wrapper_python-0.1.17.dist-info}/METADATA +1 -1
- {bcsfe_wrapper_python-0.1.15.dist-info → bcsfe_wrapper_python-0.1.17.dist-info}/RECORD +5 -5
- {bcsfe_wrapper_python-0.1.15.dist-info → bcsfe_wrapper_python-0.1.17.dist-info}/WHEEL +0 -0
- {bcsfe_wrapper_python-0.1.15.dist-info → bcsfe_wrapper_python-0.1.17.dist-info}/top_level.txt +0 -0
bcsfe_wrapper/wrapper.py
CHANGED
|
@@ -7,7 +7,7 @@ from bcsfe import core
|
|
|
7
7
|
from bcsfe.cli import edits
|
|
8
8
|
|
|
9
9
|
class BCSFEWrapper:
|
|
10
|
-
def __init__(self, save_path_or_data: Union[str, bytes], cc: str = "jp", gv: str = "13.
|
|
10
|
+
def __init__(self, save_path_or_data: Union[str, bytes, core.Data], cc: str = "jp", gv: str = "13.4.0"):
|
|
11
11
|
self._init_core()
|
|
12
12
|
self.cc = core.CountryCode.from_code(cc)
|
|
13
13
|
self.gv = core.GameVersion.from_string(gv)
|
|
@@ -21,38 +21,54 @@ class BCSFEWrapper:
|
|
|
21
21
|
self.save_path = core.Path(save_path_or_data)
|
|
22
22
|
self.save_file = core.SaveFile(self.save_path.read(), cc=self.cc, gv=self.gv)
|
|
23
23
|
self.save_file.save_path = self.save_path
|
|
24
|
-
|
|
24
|
+
elif isinstance(save_path_or_data, bytes):
|
|
25
25
|
self.save_file = core.SaveFile(core.Data(save_path_or_data), cc=self.cc, gv=self.gv)
|
|
26
26
|
self.save_path = None
|
|
27
|
+
elif isinstance(save_path_or_data, core.Data):
|
|
28
|
+
self.save_file = core.SaveFile(save_path_or_data, cc=self.cc, gv=self.gv)
|
|
29
|
+
self.save_path = None
|
|
30
|
+
else:
|
|
31
|
+
# すでにSaveFileオブジェクトなどが渡された場合
|
|
32
|
+
self.save_file = save_path_or_data
|
|
33
|
+
self.save_path = getattr(save_path_or_data, "save_path", None)
|
|
27
34
|
|
|
28
35
|
def _init_core(self):
|
|
29
36
|
data_folder = core.Path.get_data_folder()
|
|
30
37
|
core.set_config_path(data_folder.add("config.yaml"))
|
|
31
38
|
core.set_log_path(data_folder.add("log.txt"))
|
|
32
39
|
core.core_data.init_data()
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
except AttributeError:
|
|
37
|
-
# 最新バージョンではUPDATE_TO_BETAに変更されている可能性がある
|
|
40
|
+
|
|
41
|
+
# 設定項目の安全な設定
|
|
42
|
+
def safe_set(key_name, value):
|
|
38
43
|
try:
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
if hasattr(core.ConfigKey, key_name):
|
|
45
|
+
core.core_data.config.set(getattr(core.ConfigKey, key_name), value)
|
|
46
|
+
except:
|
|
41
47
|
pass
|
|
48
|
+
|
|
49
|
+
safe_set("STRICT_UPGRADE", False)
|
|
50
|
+
safe_set("UPDATE_TO_BETAS", False)
|
|
51
|
+
safe_set("UPDATE_TO_BETA", False)
|
|
52
|
+
safe_set("SHOW_LOGS", False)
|
|
53
|
+
|
|
42
54
|
core.print_config_err = False
|
|
43
55
|
|
|
44
56
|
@classmethod
|
|
45
57
|
def from_server(cls, transfer_code: str, confirmation_code: str, cc: str = "jp", gv: str = "13.4.0") -> 'BCSFEWrapper':
|
|
46
|
-
#
|
|
47
|
-
|
|
58
|
+
# coreの初期化のみ行う
|
|
59
|
+
dummy = cls(None, cc=cc, gv=gv)
|
|
60
|
+
dummy._init_core()
|
|
61
|
+
|
|
48
62
|
server_handler, result = core.ServerHandler.from_codes(
|
|
49
63
|
transfer_code, confirmation_code, core.CountryCode.from_code(cc), core.GameVersion.from_string(gv), print=False
|
|
50
64
|
)
|
|
51
65
|
if server_handler is None:
|
|
52
66
|
raise RuntimeError(f"Download failed: {result}")
|
|
53
67
|
|
|
54
|
-
|
|
55
|
-
|
|
68
|
+
# ダウンロードしたデータから実体を生成
|
|
69
|
+
instance = cls(server_handler.save_file.to_data(), cc=cc, gv=gv)
|
|
70
|
+
instance.save_file = server_handler.save_file
|
|
71
|
+
return instance
|
|
56
72
|
|
|
57
73
|
def save(self, output_path: Optional[str] = None):
|
|
58
74
|
path = core.Path(output_path) if output_path else self.save_path
|
|
@@ -75,11 +91,20 @@ class BCSFEWrapper:
|
|
|
75
91
|
def edit_leadership(self, amount: int): self._set_val("leadership", amount)
|
|
76
92
|
|
|
77
93
|
def edit_battle_items(self, amount: int):
|
|
78
|
-
for item in self.save_file.battle_items.items:
|
|
94
|
+
for item in self.save_file.battle_items.items:
|
|
95
|
+
item.amount = amount
|
|
79
96
|
def edit_catseyes(self, amount: int):
|
|
80
|
-
|
|
97
|
+
self.save_file.catseyes = [amount] * len(self.save_file.catseyes)
|
|
81
98
|
def edit_catfruit(self, amount: int):
|
|
82
|
-
|
|
99
|
+
self.save_file.catfruit = [amount] * len(self.save_file.catfruit)
|
|
100
|
+
def edit_catamins(self, amount: int):
|
|
101
|
+
self.save_file.catamins = [amount] * len(self.save_file.catamins)
|
|
102
|
+
def edit_talent_orbs(self, amount: int):
|
|
103
|
+
for orb in self.save_file.talent_orbs.orbs.values():
|
|
104
|
+
orb.value = amount
|
|
105
|
+
def edit_castle_materials(self, amount: int):
|
|
106
|
+
for material in self.save_file.ototo.base_materials.materials:
|
|
107
|
+
material.amount = amount
|
|
83
108
|
|
|
84
109
|
def unlock_cats(self, cat_ids: List[int]):
|
|
85
110
|
for cid in cat_ids:
|
|
@@ -147,14 +172,52 @@ class BCSFEWrapper:
|
|
|
147
172
|
def unlock_aku_realm(self): edits.aku_realm.unlock_aku_realm(self.save_file)
|
|
148
173
|
|
|
149
174
|
def unlock_all_medals(self):
|
|
150
|
-
|
|
151
|
-
|
|
175
|
+
# メダルはIDのリスト形式
|
|
176
|
+
for i in range(150): # おおよその最大数
|
|
177
|
+
self.save_file.medals.add_medal(i)
|
|
152
178
|
|
|
153
179
|
def claim_all_stamps(self):
|
|
154
180
|
for stamp in self.save_file.stamps.stamps:
|
|
155
181
|
stamp.received = True
|
|
156
182
|
stamp.current_stamp = stamp.total_stamps
|
|
157
183
|
|
|
184
|
+
def set_gold_pass(self):
|
|
185
|
+
self.save_file.officer_pass.gold_pass.get_gold_pass(30) # 30日間
|
|
186
|
+
def set_playtime(self, hours: int):
|
|
187
|
+
# プレイ時間はフレーム単位 (1秒=30フレーム)
|
|
188
|
+
self.save_file.officer_pass.play_time = hours * 60 * 60 * 30
|
|
189
|
+
def max_gamatoto(self):
|
|
190
|
+
self.legend_all_gamatoto_members()
|
|
191
|
+
levels = core.core_data.get_gamatoto_levels(self.save_file)
|
|
192
|
+
max_level = levels.get_max_level()
|
|
193
|
+
self.save_file.gamatoto.xp = levels.get_xp_from_level(max_level)
|
|
194
|
+
def max_ototo_upgrades(self):
|
|
195
|
+
for cannon in self.save_file.ototo.cannons.cannons.values():
|
|
196
|
+
# 全ての形態をレベル20にする
|
|
197
|
+
cannon.levels = [19] * len(cannon.levels)
|
|
198
|
+
cannon.development = 19
|
|
199
|
+
def max_cat_shrine(self):
|
|
200
|
+
levels = core.CatShrineLevels.create(self.save_file)
|
|
201
|
+
if levels:
|
|
202
|
+
self.save_file.cat_shrine.xp_offering = levels.get_max_xp()
|
|
203
|
+
def unlock_all_enemies(self):
|
|
204
|
+
# 敵キャラ図鑑はリスト形式
|
|
205
|
+
for i in range(1000): # 十分な範囲
|
|
206
|
+
if i not in self.save_file.enemy_guide:
|
|
207
|
+
self.save_file.enemy_guide.append(i)
|
|
208
|
+
self.save_file.enemy_guide.sort()
|
|
209
|
+
def clear_all_missions(self):
|
|
210
|
+
for mission_id in self.save_file.missions.clear_states:
|
|
211
|
+
self.save_file.missions.clear_states[mission_id] = 4 # 完了状態
|
|
212
|
+
def claim_all_user_rank_rewards(self):
|
|
213
|
+
for reward in self.save_file.user_rank_rewards.rewards:
|
|
214
|
+
reward.claimed = True
|
|
215
|
+
def claim_all_login_bonuses(self):
|
|
216
|
+
for login_set in self.save_file.logins.login_sets:
|
|
217
|
+
for login in login_set.logins.values():
|
|
218
|
+
login.count = 30 # 最大数にするなどの処理
|
|
219
|
+
login.received = True
|
|
220
|
+
|
|
158
221
|
def legend_all_gamatoto_members(self):
|
|
159
222
|
members_name = core.core_data.get_gamatoto_members_name(self.save_file)
|
|
160
223
|
legend_ids = [m.member_id for m in members_name.members if m.rarity == 2]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
bcsfe_wrapper/__init__.py,sha256=o2LbyVJjuRV1gap8wDbsv39kEUJM1rt8Lq49u1RYYXA,268
|
|
2
|
-
bcsfe_wrapper/wrapper.py,sha256=
|
|
2
|
+
bcsfe_wrapper/wrapper.py,sha256=iaiBEPUwthUy4gpmK2dqL9Zm7RvytYAcmfBKa9fnfqg,12777
|
|
3
3
|
bcsfe_wrapper/bcsfe/__init__.py,sha256=vCHjSoJq5u684HLQXahhtA64MZWffNHFdhweP7RM0f4,144
|
|
4
4
|
bcsfe_wrapper/bcsfe/__main__.py,sha256=Dam14Fv6L-tRRufIkIRpr69dM0b2ybU1eALJxIw_eFI,2091
|
|
5
5
|
bcsfe_wrapper/bcsfe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -198,7 +198,7 @@ bcsfe_wrapper/bcsfe/files/locales/vi/edits/treasures.properties,sha256=U9uKsF4y0
|
|
|
198
198
|
bcsfe_wrapper/bcsfe/files/locales/vi/edits/user_rank.properties,sha256=FcldhzKM0UmuhmGzI3dGzxstuKcw-t-gkbmKLZT4VKg,603
|
|
199
199
|
bcsfe_wrapper/bcsfe/files/themes/default.json,sha256=w8eqqd9ATIFwUcvOWTdJjyd1T3LGgUm3iVkJhT5wfEo,392
|
|
200
200
|
bcsfe_wrapper/bcsfe/files/themes/discord.json,sha256=W1dtEev6tap_waHOxvSqENDcMRA9jfBvjW7t-ssdGs4,370
|
|
201
|
-
bcsfe_wrapper_python-0.1.
|
|
202
|
-
bcsfe_wrapper_python-0.1.
|
|
203
|
-
bcsfe_wrapper_python-0.1.
|
|
204
|
-
bcsfe_wrapper_python-0.1.
|
|
201
|
+
bcsfe_wrapper_python-0.1.17.dist-info/METADATA,sha256=VfEdKy5cfCbSkOz7Aufi8lMy3ID6nI5ciHrG6RaVHQ4,4327
|
|
202
|
+
bcsfe_wrapper_python-0.1.17.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
203
|
+
bcsfe_wrapper_python-0.1.17.dist-info/top_level.txt,sha256=kqyMKpAdNg39_kGGtqsxOSLPIb-qx7R1mQj1hReUsYM,14
|
|
204
|
+
bcsfe_wrapper_python-0.1.17.dist-info/RECORD,,
|
|
File without changes
|
{bcsfe_wrapper_python-0.1.15.dist-info → bcsfe_wrapper_python-0.1.17.dist-info}/top_level.txt
RENAMED
|
File without changes
|