players running this version or newer get a 10 percent league score bonus (replaces pro bonus)

This commit is contained in:
Eric Froemling 2025-01-18 12:19:07 -08:00
parent 4dbe0be487
commit 091b369942
No known key found for this signature in database
7 changed files with 102 additions and 78 deletions

60
.efrocachemap generated
View File

@ -432,7 +432,7 @@
"build/assets/ba_data/audio/zoeOw.ogg": "b2d705c31c9dcc1efdc71394764c3beb",
"build/assets/ba_data/audio/zoePickup01.ogg": "e9366dc2d2b8ab8b0c4e2c14c02d0789",
"build/assets/ba_data/audio/zoeScream01.ogg": "903e0e45ee9b3373e9d9ce20c814374e",
"build/assets/ba_data/data/langdata.json": "d0cd6dc622b1270b296722fad38dd229",
"build/assets/ba_data/data/langdata.json": "5e1dccd1106faa1a8b0d2c1cb15429dd",
"build/assets/ba_data/data/languages/arabic.json": "32b9849fb8389b8c7798f0b744620318",
"build/assets/ba_data/data/languages/belarussian.json": "009b452aa308bf2b2f7e92d9b78ba5ff",
"build/assets/ba_data/data/languages/chinese.json": "168b529f2d55d714886be57f162f6842",
@ -441,12 +441,12 @@
"build/assets/ba_data/data/languages/czech.json": "3418bee44e69be13b7f72996abe96921",
"build/assets/ba_data/data/languages/danish.json": "8e57db30c5250df2abff14a822f83ea7",
"build/assets/ba_data/data/languages/dutch.json": "4ba5bbcc0fecddd0aac6ee2c165d1e40",
"build/assets/ba_data/data/languages/english.json": "3fadacf666ee8578454b32f0cca4b90d",
"build/assets/ba_data/data/languages/english.json": "739c318260ddd4cff781cba50d5cab1c",
"build/assets/ba_data/data/languages/esperanto.json": "0e397cfa5f3fb8cef5f4a64f21cda880",
"build/assets/ba_data/data/languages/filipino.json": "1894fc331dcad7ce9cf4c180843f548f",
"build/assets/ba_data/data/languages/french.json": "6d20655730b1017ef187fd828b91d43c",
"build/assets/ba_data/data/languages/german.json": "bc656f1ada467161c23546f48d0dacc5",
"build/assets/ba_data/data/languages/gibberish.json": "640231f8f1eb01e4d617889abf3c25e4",
"build/assets/ba_data/data/languages/gibberish.json": "067479eeefd6508bc4d1019b7ff92017",
"build/assets/ba_data/data/languages/greek.json": "d28d1092fbb00ed857cbd53124c0dc78",
"build/assets/ba_data/data/languages/hindi.json": "567e6976b3c72f891431ad7fcc62ab16",
"build/assets/ba_data/data/languages/hungarian.json": "af801baffb2c06460635dfb04c34bb3e",
@ -457,16 +457,16 @@
"build/assets/ba_data/data/languages/persian.json": "517217e679c768fff4ffec7f8000ab77",
"build/assets/ba_data/data/languages/piratespeak.json": "be23decfaf220b3aa3de3cf35e59b420",
"build/assets/ba_data/data/languages/polish.json": "993b612c5854fc42a78726ed09c65251",
"build/assets/ba_data/data/languages/portuguese.json": "f034d8099298b56792d4e0e41c5c34a0",
"build/assets/ba_data/data/languages/portuguese.json": "66fbf94a6ee7b2bc0d9efd6056302078",
"build/assets/ba_data/data/languages/romanian.json": "b04345d8c7631d657a69c73eb7be755a",
"build/assets/ba_data/data/languages/russian.json": "eca8fe1ef8343aee559e49c49805b850",
"build/assets/ba_data/data/languages/serbian.json": "623fa4129a1154c2f32ed7867e56ff6a",
"build/assets/ba_data/data/languages/slovak.json": "c11c29708b3742cdc2a92b4fa0d6d29f",
"build/assets/ba_data/data/languages/spanish.json": "fc68307ff25bb8ef93cf168ac4524e19",
"build/assets/ba_data/data/languages/spanish.json": "c59f1f14083037b1ba48ffa0f12678ab",
"build/assets/ba_data/data/languages/swedish.json": "3b179e7333183c70adb0811246b09959",
"build/assets/ba_data/data/languages/tamil.json": "ead39b864228696a9b0d19344bc4b5ec",
"build/assets/ba_data/data/languages/thai.json": "383540a1e9c7c131ac579f51afc87471",
"build/assets/ba_data/data/languages/turkish.json": "1415bdb746551f0a24f0e675304dfe07",
"build/assets/ba_data/data/languages/turkish.json": "974f54f3d2b4c4e8613de177e5d401f7",
"build/assets/ba_data/data/languages/ukrainian.json": "0db55824759119aca74d2ee8ffe6daae",
"build/assets/ba_data/data/languages/venetian.json": "e0666c6a1db1792d895fcb250e59861b",
"build/assets/ba_data/data/languages/vietnamese.json": "017d8aa346d0c23a229a8a9acccf79a1",
@ -4174,22 +4174,22 @@
"build/assets/windows/Win32/ucrtbased.dll": "bfd1180c269d3950b76f35a63655e9e1",
"build/assets/windows/Win32/vc_redist.x86.exe": "15a5f1f876503885adbdf5b3989b3718",
"build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599",
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "6f882d6748b3e5c92eb099f3b0b29837",
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "0579a815f9f582dbf69e73da3e51500d",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "aa04b11644160c8338052938ffbb7d8e",
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "9086d02dd9c39a9d95139b49d2f404a1",
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "14229b8337f1a4b9bf65f55a54a88937",
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "eac49802c4b77d1e341ee5dfe052663c",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "916b96eb3ccd5f44e77e052559fe6e32",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "06d13234688c95918472888b6778dbd4",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "caaad53329bad3d2b16d109cc5b2e37e",
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "70b4672871efd3d57b6f2d15ff1341bc",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "f0afdeee1f22d35e942a54ae86a1dd74",
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "78019c91c31e36752bc2cb2bcf482f1e",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "93343b1e04752845eef31900d618e380",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "6b3c2f6d1d59ff8af390a99795fbcc7e",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "9e7c2c5f38fb94211af69bce5e4ea1de",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "84c841a74a457ac69ec654363084a248",
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "31209ca509f46fde3450eb8b7a39a520",
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "03ec26492ef7dc28370cbb7f9902b0b9",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "9331d3a163409aa08b5b1e681d923231",
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "7aeb21b72648fa81d27d18251fb60f68",
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "cecba50ac68398a3c4f8ddbaa9211d48",
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "683ff26a659c420a3738b5c58e17b37e",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "5e2f2dc71bd451900d7ece96e098dc00",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "4745da922028681b1b5cc63a584030b3",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "a6527c54deee04b51029b1023a0b27fd",
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "c6ceb3702ea22a2e187145a86bd51a13",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "4ee039201fdaa4c9a5afbefd5a31c064",
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "15f71fc2ee8e71c657c159edceaec719",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "1a56770399e5f6c91c25be77a68f38da",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "bcb3448df41f7a7e91f2823e55253a57",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "6805beb9c0d1f967fe6a4344b5735aad",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "b15bc3743c8021d1069568071e734a13",
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "cbacac5a846cf8a0f6db760aaddcd13a",
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "3d16bac10d8f15bac7fe20e3a927b275",
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "cbacac5a846cf8a0f6db760aaddcd13a",
@ -4202,14 +4202,14 @@
"build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "7dd182733a34da0ca5f5c97e5cb0b7f0",
"build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "6121591b94d920ee541194b65d93958a",
"build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "7dd182733a34da0ca5f5c97e5cb0b7f0",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "15fe85e4facbf3799b234098d8f51534",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "bf5ff0b1826dac5bb9af5731805a1b0b",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "142b2b2069ffa72525e8151fb7e4a695",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "183266996ae2a53c9d555d8e1e9aaabe",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "ffa58d5514f78d47b749aa62378244a3",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "78dbe3b34535192fb2c9fbd70a61466b",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "4af3444c3917b7a2e5f937a639af9782",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "669f40763a85163af67e460c393ddb6a",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "c512e7bacb6c8654b517a38604e0ccf2",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "21b911b0ee5e354d25e8acf740140188",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "6313af7210edecf7e9cf026550bbb161",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "dc7d359250c39d0e636da2bf7d859deb",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "4c4c93e32beb69743b63f963748e1136",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "70f5185b13ab6e799dbfc9bdd0a9e997",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "f6adec2b792bc36c2cea2b395e827471",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "e674baf0049c634e6342cae5a266b567",
"src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c",
"src/assets/ba_data/python/babase/_mgen/enums.py": "794d258d59fd17a61752843a9a0551ad",
"src/ballistica/base/mgen/pyembed/binding_base.inc": "06042d31df0ff9af96b99477162e2a91",

View File

@ -1,4 +1,4 @@
### 1.7.37 (build 22200, api 9, 2025-01-17)
### 1.7.37 (build 22202, api 9, 2025-01-18)
- Bumping api version to 9. As you'll see below, there's some UI changes that
will require a bit of work for any UI mods to adapt to. If your mods don't
touch UI stuff at all you can simply bump your api version and call it a day.

View File

@ -125,7 +125,11 @@ class AccountV1Subsystem:
if subset is not None:
raise ValueError('invalid subset value: ' + str(subset))
if data['p']:
# We used to give this bonus for pro, but on recent versions of
# the game give it for everyone (since we are phasing out Pro).
# if data['p']:
if bool(True):
if babase.app.plus is None:
pro_mult = 1.0
else:

View File

@ -53,7 +53,7 @@ if TYPE_CHECKING:
# Build number and version of the ballistica binary we expect to be
# using.
TARGET_BALLISTICA_BUILD = 22200
TARGET_BALLISTICA_BUILD = 22202
TARGET_BALLISTICA_VERSION = '1.7.37'

View File

@ -33,7 +33,7 @@ class LeagueRankWindow(bui.MainWindow):
self._league_rank_data: dict[str, Any] | None = None
self._power_ranking_achievements_button: bui.Widget | None = None
self._pro_mult_button: bui.Widget | None = None
self._up_to_date_bonus_button: bui.Widget | None = None
self._power_ranking_trophies_button: bui.Widget | None = None
self._league_title_text: bui.Widget | None = None
self._league_text: bui.Widget | None = None
@ -160,13 +160,14 @@ class LeagueRankWindow(bui.MainWindow):
self._requested_season: str | None = None
self._season: str | None = None
# take note of our account state; we'll refresh later if this changes
# Take note of our account state; we'll refresh later if this
# changes.
self._account_state = plus.get_v1_account_state()
self._refresh()
self._restore_state()
# if we've got cached power-ranking data already, display it
# If we've got cached power-ranking data already, display it.
assert bui.app.classic is not None
info = bui.app.classic.accounts.get_cached_league_rank_data()
if info is not None:
@ -239,14 +240,14 @@ class LeagueRankWindow(bui.MainWindow):
origin_widget=self._activity_mult_button,
)
def _on_pro_mult_press(self) -> None:
def _on_up_to_date_bonus_press(self) -> None:
from bauiv1lib import confirm
plus = bui.app.plus
assert plus is not None
txt = bui.Lstr(
resource='coopSelectWindow.proMultInfoText',
resource='league.upToDateBonusDescriptionText',
subs=[
(
'${PERCENT}',
@ -256,13 +257,6 @@ class LeagueRankWindow(bui.MainWindow):
)
),
),
(
'${PRO}',
bui.Lstr(
resource='store.bombSquadProNameText',
subs=[('${APP_NAME}', bui.Lstr(resource='titleText'))],
),
),
],
)
confirm.ConfirmWindow(
@ -270,7 +264,7 @@ class LeagueRankWindow(bui.MainWindow):
cancel_button=False,
width=460,
height=130,
origin_widget=self._pro_mult_button,
origin_widget=self._up_to_date_bonus_button,
)
def _on_trophies_press(self) -> None:
@ -292,7 +286,8 @@ class LeagueRankWindow(bui.MainWindow):
) -> None:
self._doing_power_ranking_query = False
# Important: *only* cache this if we requested the current season.
# Important: *only* cache this if we requested the current
# season.
if data is not None and data.get('s', None) is None:
assert bui.app.classic is not None
bui.app.classic.accounts.cache_league_rank_data(data)
@ -321,8 +316,8 @@ class LeagueRankWindow(bui.MainWindow):
if not self._doing_power_ranking_query:
self._last_power_ranking_query_time = None
# Send off a new power-ranking query if its been long enough or our
# requested season has changed or whatnot.
# Send off a new power-ranking query if its been long enough or
# our requested season has changed or whatnot.
if not self._doing_power_ranking_query and (
self._last_power_ranking_query_time is None
or cur_time - self._last_power_ranking_query_time > 30.0
@ -354,7 +349,7 @@ class LeagueRankWindow(bui.MainWindow):
plus = bui.app.plus
assert plus is not None
# (re)create the sub-container if need be..
# (Re)create the sub-container if need be.
if self._subcontainer is not None:
self._subcontainer.delete()
self._subcontainer = bui.containerwidget(
@ -497,24 +492,26 @@ class LeagueRankWindow(bui.MainWindow):
else:
self._activity_mult_button = None
self._pro_mult_button = bui.buttonwidget(
self._up_to_date_bonus_button = bui.buttonwidget(
parent=w_parent,
position=(self._xoffs + h2 - 60, v2 + 10),
size=(200, 60),
icon=bui.gettexture('logo'),
icon_color=(0.3, 0, 0.3),
label=bui.Lstr(
resource='store.bombSquadProNameText',
subs=[('${APP_NAME}', bui.Lstr(resource='titleText'))],
),
# label='Up-To-Date Bonus',
label=bui.Lstr(resource='league.upToDateBonusText'),
# label=bui.Lstr(
# resource='store.bombSquadProNameText',
# subs=[('${APP_NAME}', bui.Lstr(resource='titleText'))],
# ),
autoselect=True,
on_activate_call=bui.WeakCall(self._on_pro_mult_press),
on_activate_call=bui.WeakCall(self._on_up_to_date_bonus_press),
left_widget=self._back_button,
color=(0.5, 0.5, 0.6),
textcolor=(0.7, 0.7, 0.8),
)
self._pro_mult_text = bui.textwidget(
self._up_to_date_bonus_text = bui.textwidget(
parent=w_parent,
position=(self._xoffs + h2 + h_offs_tally, v2 + 40),
size=(0, 0),
@ -712,8 +709,6 @@ class LeagueRankWindow(bui.MainWindow):
assert plus is not None
our_login_id = plus.get_v1_account_public_login_id()
# our_login_id = _bs.get_account_misc_read_val_2(
# 'resolvedAccountID', None)
if not self._can_do_more_button or our_login_id is None:
bui.getsound('error').play()
bui.screenmessage(
@ -767,8 +762,8 @@ class LeagueRankWindow(bui.MainWindow):
status_text = num_text.replace('${NUMBER}', str(data['rank']))
elif data is not None:
try:
# handle old seasons where we didn't wind up ranked
# at the end..
# Handle old seasons where we didn't wind up ranked at
# the end.
if not data['scores']:
status_text = (
self._rdict.powerRankingFinishedSeasonUnrankedText
@ -811,7 +806,7 @@ class LeagueRankWindow(bui.MainWindow):
did_first = False
self._is_current_season = False
if data is not None:
# build our list of seasons we have available
# Build our list of seasons we have available.
for ssn in data['sl']:
season_choices.append(ssn)
if ssn != 'a' and not did_first:
@ -822,8 +817,9 @@ class LeagueRankWindow(bui.MainWindow):
)
)
did_first = True
# if we either did not specify a season or specified the
# first, we're looking at the current..
# If we either did not specify a season or specified
# the first, we're looking at the current.
if self._season in [ssn, None]:
self._is_current_season = True
elif ssn == 'a':
@ -1007,7 +1003,12 @@ class LeagueRankWindow(bui.MainWindow):
text='x ' + ('%.2f' % data['act']),
)
have_pro = False if data is None else data['p']
# This used to be a bonus for 'BombSquad Pro' holders, but since
# we're transitioning away from that it is now a bonus for
# everyone running a recent-ish version of the game.
# have_pro = False if data is None else data['p']
have_up_to_date_bonus = data is not None
pro_mult = (
1.0
+ float(
@ -1015,19 +1016,20 @@ class LeagueRankWindow(bui.MainWindow):
)
* 0.01
)
# pylint: disable=consider-using-f-string
bui.textwidget(
edit=self._pro_mult_text,
edit=self._up_to_date_bonus_text,
text=(
' -'
if (data is None or not have_pro)
else 'x ' + ('%.2f' % pro_mult)
if (data is None or not have_up_to_date_bonus)
else f'x {pro_mult:.2f}'
),
)
bui.buttonwidget(
edit=self._pro_mult_button,
textcolor=(0.7, 0.7, 0.8, (1.0 if have_pro else 0.5)),
icon_color=(0.5, 0, 0.5) if have_pro else (0.5, 0, 0.5, 0.2),
edit=self._up_to_date_bonus_button,
textcolor=(0.7, 0.7, 0.8, (1.0 if have_up_to_date_bonus else 0.5)),
icon_color=(
(0.5, 0, 0.5) if have_up_to_date_bonus else (0.5, 0, 0.5, 0.2)
),
)
bui.buttonwidget(
edit=self._power_ranking_achievements_button,
@ -1035,8 +1037,8 @@ class LeagueRankWindow(bui.MainWindow):
+ bui.Lstr(resource='achievementsText').evaluate(),
)
# for the achievement value, use the number they gave us for
# non-current seasons; otherwise calc our own
# For the achievement value, use the number they gave us for
# non-current seasons; otherwise calc our own.
total_ach_value = 0
for ach in bui.app.classic.ach.achievements:
if ach.complete:
@ -1168,7 +1170,7 @@ class LeagueRankWindow(bui.MainWindow):
def _on_season_change(self, value: str) -> None:
self._requested_season = value
self._last_power_ranking_query_time = None # make sure we update asap
self._last_power_ranking_query_time = None # Update asap.
self._update(show=True)
def _save_state(self) -> None:

View File

@ -112,9 +112,22 @@ class PartyWindow(bui.Window):
self._empty_str = bui.textwidget(
parent=self._root_widget,
scale=0.75,
scale=0.6,
size=(0, 0),
position=(self._width * 0.5, self._height - 65),
# color=(0.5, 1.0, 0.5),
shadow=0.3,
position=(self._width * 0.5, self._height - 57),
maxwidth=self._width * 0.85,
h_align='center',
v_align='center',
)
self._empty_str_2 = bui.textwidget(
parent=self._root_widget,
scale=0.5,
size=(0, 0),
color=(0.5, 1.0, 0.5),
shadow=0.1,
position=(self._width * 0.5, self._height - 75),
maxwidth=self._width * 0.85,
h_align='center',
v_align='center',
@ -297,6 +310,10 @@ class PartyWindow(bui.Window):
edit=self._empty_str,
text=bui.Lstr(resource=f'{self._r}.emptyText'),
)
bui.textwidget(
edit=self._empty_str_2,
text=bui.Lstr(resource='gatherWindow.descriptionShortText'),
)
bui.scrollwidget(
edit=self._scrollwidget,
size=(
@ -437,6 +454,7 @@ class PartyWindow(bui.Window):
)
)
bui.textwidget(edit=self._empty_str, text='')
bui.textwidget(edit=self._empty_str_2, text='')
bui.scrollwidget(
edit=self._scrollwidget,
size=(

View File

@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int {
namespace ballistica {
// These are set automatically via script; don't modify them here.
const int kEngineBuildNumber = 22200;
const int kEngineBuildNumber = 22202;
const char* kEngineVersion = "1.7.37";
const int kEngineApiVersion = 9;