mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-31 03:39:04 +08:00
v1.7.16
This commit is contained in:
parent
0901fa1b21
commit
006156aef7
118
.efrocachemap
118
.efrocachemap
@ -420,40 +420,40 @@
|
||||
"assets/build/ba_data/audio/zoeOw.ogg": "https://files.ballistica.net/cache/ba1/60/ad/38269b7f1c7dc20cb9a506cd0681",
|
||||
"assets/build/ba_data/audio/zoePickup01.ogg": "https://files.ballistica.net/cache/ba1/72/85/d6fc4d16b7081d91fba2850b5b10",
|
||||
"assets/build/ba_data/audio/zoeScream01.ogg": "https://files.ballistica.net/cache/ba1/e9/ae/1d674d0c086eaa0bd1c3b1db0505",
|
||||
"assets/build/ba_data/data/langdata.json": "https://files.ballistica.net/cache/ba1/f0/2d/dbe45794f17260f2961831c88a36",
|
||||
"assets/build/ba_data/data/langdata.json": "https://files.ballistica.net/cache/ba1/3c/3f/dc185a4ea8f2512770558ce0ff90",
|
||||
"assets/build/ba_data/data/languages/arabic.json": "https://files.ballistica.net/cache/ba1/c5/81/e386a592e4fdf702b9089f106610",
|
||||
"assets/build/ba_data/data/languages/belarussian.json": "https://files.ballistica.net/cache/ba1/61/03/89070ca765e06da3a419a579f503",
|
||||
"assets/build/ba_data/data/languages/chinese.json": "https://files.ballistica.net/cache/ba1/d3/84/5e7df03070af059070ad1bd93cee",
|
||||
"assets/build/ba_data/data/languages/chinese.json": "https://files.ballistica.net/cache/ba1/8e/4f/992f2a50dbe9514d774c1bb4fd28",
|
||||
"assets/build/ba_data/data/languages/chinesetraditional.json": "https://files.ballistica.net/cache/ba1/c2/a4/993d5f0f30d0670d7053466929b6",
|
||||
"assets/build/ba_data/data/languages/croatian.json": "https://files.ballistica.net/cache/ba1/c9/73/01a1343af814131b1ee96af0b687",
|
||||
"assets/build/ba_data/data/languages/czech.json": "https://files.ballistica.net/cache/ba1/cb/df/f2d54d3146a159c678a47d3ff01b",
|
||||
"assets/build/ba_data/data/languages/danish.json": "https://files.ballistica.net/cache/ba1/6a/fa/fcf4a804beaff927b0f12c179eaa",
|
||||
"assets/build/ba_data/data/languages/dutch.json": "https://files.ballistica.net/cache/ba1/68/93/da8e9874f41a786edf52ba4ccaad",
|
||||
"assets/build/ba_data/data/languages/english.json": "https://files.ballistica.net/cache/ba1/1f/55/bd97a0f23f4deba2a72ad9ab549e",
|
||||
"assets/build/ba_data/data/languages/english.json": "https://files.ballistica.net/cache/ba1/7e/e7/836562182c2056902a326f5c7b9d",
|
||||
"assets/build/ba_data/data/languages/esperanto.json": "https://files.ballistica.net/cache/ba1/ac/f5/c0922a99e40dfc9f5e026d43b533",
|
||||
"assets/build/ba_data/data/languages/filipino.json": "https://files.ballistica.net/cache/ba1/22/5e/6ef2e291465bfb12998f0e23616a",
|
||||
"assets/build/ba_data/data/languages/filipino.json": "https://files.ballistica.net/cache/ba1/65/3f/6f1b739feac015dc39e97675b49d",
|
||||
"assets/build/ba_data/data/languages/french.json": "https://files.ballistica.net/cache/ba1/5d/2a/a5363cbe713fd67ea0baaa44403a",
|
||||
"assets/build/ba_data/data/languages/german.json": "https://files.ballistica.net/cache/ba1/58/40/5315a0f4ebbd58c6cb3390907f9a",
|
||||
"assets/build/ba_data/data/languages/gibberish.json": "https://files.ballistica.net/cache/ba1/d5/65/40add8ed982fb1abb8f120651a1d",
|
||||
"assets/build/ba_data/data/languages/german.json": "https://files.ballistica.net/cache/ba1/27/48/4cf2f4a3dd35260ef9b3b188ccde",
|
||||
"assets/build/ba_data/data/languages/gibberish.json": "https://files.ballistica.net/cache/ba1/63/64/8073ab02f55940292099513d341b",
|
||||
"assets/build/ba_data/data/languages/greek.json": "https://files.ballistica.net/cache/ba1/8a/82/392f2a4e0e6e5a5e367f19e49538",
|
||||
"assets/build/ba_data/data/languages/hindi.json": "https://files.ballistica.net/cache/ba1/2e/d1/b506ddf3d27af7be1ae6159531a3",
|
||||
"assets/build/ba_data/data/languages/hungarian.json": "https://files.ballistica.net/cache/ba1/b2/81/53c8cd7617d649403e539c3a6171",
|
||||
"assets/build/ba_data/data/languages/indonesian.json": "https://files.ballistica.net/cache/ba1/38/74/88d1ed374207750c9a834cddb809",
|
||||
"assets/build/ba_data/data/languages/italian.json": "https://files.ballistica.net/cache/ba1/ce/09/20c87e343b41ec5dc43138ce071e",
|
||||
"assets/build/ba_data/data/languages/indonesian.json": "https://files.ballistica.net/cache/ba1/b4/51/0f993429723480691d5289c7bc5d",
|
||||
"assets/build/ba_data/data/languages/italian.json": "https://files.ballistica.net/cache/ba1/72/35/c40aee4c2f7f64fa030f83eb08d5",
|
||||
"assets/build/ba_data/data/languages/korean.json": "https://files.ballistica.net/cache/ba1/7c/38/d4a44c481757d355836f292ede48",
|
||||
"assets/build/ba_data/data/languages/malay.json": "https://files.ballistica.net/cache/ba1/66/32/92ae734c4358397d2e90c1c85325",
|
||||
"assets/build/ba_data/data/languages/persian.json": "https://files.ballistica.net/cache/ba1/db/14/2f441ccb65023775dc8139a63f3f",
|
||||
"assets/build/ba_data/data/languages/polish.json": "https://files.ballistica.net/cache/ba1/67/93/372c2a2428a830056e9ba22bbf95",
|
||||
"assets/build/ba_data/data/languages/portuguese.json": "https://files.ballistica.net/cache/ba1/03/14/6b767289325368be52e24ed3a58a",
|
||||
"assets/build/ba_data/data/languages/portuguese.json": "https://files.ballistica.net/cache/ba1/e6/fb/dfef0975c9c58cbcc621c022ec4b",
|
||||
"assets/build/ba_data/data/languages/romanian.json": "https://files.ballistica.net/cache/ba1/d7/06/9d70642d0a4d1e3b1c2149d7a17c",
|
||||
"assets/build/ba_data/data/languages/russian.json": "https://files.ballistica.net/cache/ba1/34/2d/9cc17dbd2858e04d0616d1c65ffb",
|
||||
"assets/build/ba_data/data/languages/russian.json": "https://files.ballistica.net/cache/ba1/a4/08/5e70701b63899cddf21733b0eea6",
|
||||
"assets/build/ba_data/data/languages/serbian.json": "https://files.ballistica.net/cache/ba1/4e/91/6f2a9a3ce733908e91377a6ddb9a",
|
||||
"assets/build/ba_data/data/languages/slovak.json": "https://files.ballistica.net/cache/ba1/20/a9/163d189884edf802636bf291e432",
|
||||
"assets/build/ba_data/data/languages/spanish.json": "https://files.ballistica.net/cache/ba1/29/1e/1c9666647b48f9c37d8559d22606",
|
||||
"assets/build/ba_data/data/languages/spanish.json": "https://files.ballistica.net/cache/ba1/e9/6d/62090311ae9aabaaae3918ea2d5b",
|
||||
"assets/build/ba_data/data/languages/swedish.json": "https://files.ballistica.net/cache/ba1/91/0a/35c4baf539d5951fc03a794c0e0b",
|
||||
"assets/build/ba_data/data/languages/tamil.json": "https://files.ballistica.net/cache/ba1/ec/b2/426ec5d0bb98145dc7123766fb5c",
|
||||
"assets/build/ba_data/data/languages/tamil.json": "https://files.ballistica.net/cache/ba1/48/2c/78cb542498a59e3023b4838df515",
|
||||
"assets/build/ba_data/data/languages/thai.json": "https://files.ballistica.net/cache/ba1/d6/16/523c643358880b03b233ed88e557",
|
||||
"assets/build/ba_data/data/languages/turkish.json": "https://files.ballistica.net/cache/ba1/52/5e/385f4d430fa82b2ac206277a71d4",
|
||||
"assets/build/ba_data/data/languages/turkish.json": "https://files.ballistica.net/cache/ba1/c3/d2/d075ad07ec8d8aec3616f8760534",
|
||||
"assets/build/ba_data/data/languages/ukrainian.json": "https://files.ballistica.net/cache/ba1/73/7b/b8822b5632a8d3c7cf134e2859cc",
|
||||
"assets/build/ba_data/data/languages/venetian.json": "https://files.ballistica.net/cache/ba1/a6/ed/416638d46950c9ab4f6155b9c334",
|
||||
"assets/build/ba_data/data/languages/vietnamese.json": "https://files.ballistica.net/cache/ba1/1f/ae/abe3f105b3c4b51f6b7942773305",
|
||||
@ -1859,6 +1859,10 @@
|
||||
"assets/build/ba_data/textures/menuIcon.ktx": "https://files.ballistica.net/cache/ba1/e7/8c/dde40b132e096841299505e2b665",
|
||||
"assets/build/ba_data/textures/menuIcon.pvr": "https://files.ballistica.net/cache/ba1/91/d3/6e3b38a70caa2bc68ddff50e3421",
|
||||
"assets/build/ba_data/textures/menuIcon_preview.png": "https://files.ballistica.net/cache/ba1/1f/22/69a013729949501405ea342a1a8b",
|
||||
"assets/build/ba_data/textures/merch.dds": "https://files.ballistica.net/cache/ba1/da/6a/87779603f295cf30fcec2d3a4e9f",
|
||||
"assets/build/ba_data/textures/merch.ktx": "https://files.ballistica.net/cache/ba1/5b/c4/2df30594a9e7c1988d92435d7bd0",
|
||||
"assets/build/ba_data/textures/merch.pvr": "https://files.ballistica.net/cache/ba1/20/76/b8da7a2dded8c137c8388bcb6986",
|
||||
"assets/build/ba_data/textures/merch_preview.png": "https://files.ballistica.net/cache/ba1/31/ad/9ffc829f1fcff718106d129ac062",
|
||||
"assets/build/ba_data/textures/meter.dds": "https://files.ballistica.net/cache/ba1/52/a8/00244236f0e6126e2e14bd1f3106",
|
||||
"assets/build/ba_data/textures/meter.ktx": "https://files.ballistica.net/cache/ba1/b5/e7/3ba3d4c7c7e05081eb033ae5da8f",
|
||||
"assets/build/ba_data/textures/meter.pvr": "https://files.ballistica.net/cache/ba1/58/de/ab83ad9e0d9b434ca42811030ef9",
|
||||
@ -4004,50 +4008,50 @@
|
||||
"assets/src/ba_data/python/ba/_generated/__init__.py": "https://files.ballistica.net/cache/ba1/ee/e8/cad05aa531c7faf7ff7b96db7f6e",
|
||||
"assets/src/ba_data/python/ba/_generated/enums.py": "https://files.ballistica.net/cache/ba1/1c/77/ac670a5118abdf8a7687af0e159b",
|
||||
"ballisticacore-windows/Generic/BallisticaCore.ico": "https://files.ballistica.net/cache/ba1/89/c0/e32c7d2a35dc9aef57cc73b0911a",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/1c/91/7ae1b68a23982fea887522f1c190",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/0a/85/df9814b9bf896f4abea28768e92b",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/b4/a1/7f03feb7a85d24245f1f6684032e",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/9c/6a/8653f666ea158628c486ea54e4e2",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/d6/e2/ca77c216625adc6b4e8af0d388b1",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/d4/bb/a88afebc39bf026b31abaf08d9d4",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/01/a0/1a3b24b2a41563594b26eb4fb948",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/74/57/115e41be4d58896035abf97ce344",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/73/16/fc91ce4346f1f47f6f2ca7851c74",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/29/d5/b4104b2bdcd5313599442f67422b",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ec/73/9d05a319bcc76428d29e3449b9cc",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ea/f7/f86d1d668e67254333b774b2d8c1",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/f7/75/ee906782bf6cda84349bd2a12ede",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/50/0b/f57762d8bb07d039441f6f4d05c2",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a2/17/d025c0947448310b4efbf6553bca",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c0/a7/febd382d01d7a6671f50b45cf7b7",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/36/6b/6a1baa6b91487ab4f156a720e875",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/ff/e7/63d4866736010ebeb01ded394cac",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/72/6a/d6e87def1a6e663f0eed36a05779",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/09/ac/34a441b000c510d46c4fda7036fb",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/1b/47/d6384f65f8b4a3fc1c63c69a1c8c",
|
||||
"build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b6/4c/14bc1088021461969748f0555d64",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ef/08/deb368b8fa5f12eaadc63b1388dc",
|
||||
"build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/30/78/1069cc823a81fad93339bc791a11",
|
||||
"build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e3/9f/2fd0cdf791782b9cf887fdee5eee",
|
||||
"build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d2/24/459b6854f0a8fae959b9ff37ed4c",
|
||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ce/27/104a5dca1fa570cd41faedf6973e",
|
||||
"build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/93/1c/259af37062fb8fe2a50bcaad8c1a",
|
||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/7b/63/2430e689d0e1980c3f40d113db6e",
|
||||
"build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/34/a7/484b831c51c83c692e8c59dcd11c",
|
||||
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/8b/ce/8136e2adf01ee38b1d419553464f",
|
||||
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/0d/90/2c695a05575e73c42969917f2d3a",
|
||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d2/fd/ceb1eb357d0b36852d88899356e8",
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/09/15/a8daaff2ebe63f85987937692152",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/23/f9/ab5c5f9b0bb754034881ab82afe5",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/34/16/dbc9386010f6074dc548a081e7cd",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/b7/06/ce8858ccf49e1ccdb71e15d25ead",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/b2/25/2203b80ba9adea38dbb152bc665e",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/4a/29/908997a9aa377f2a13053e591c16",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/27/c9/46e170eb44a7cccb92cfd6b382a2",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/6c/29/06e3a7db44446f381ffcf4f79c99",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/02/9b/66ce0f85f69e71549b2aab5b4fca",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/23/7d/15c3fe7a60284323da4d4f199845",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/32/e5/faff7cbc87f94743f2176bd7efef",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/6f/3c/b6d4e92dcbac32aa3093d9139b9d",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/a1/b8/31ad72ffe5df6bbedbd59eb3f02b",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/d2/d9/084996631fa94337e0a92c93b753",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/89/0a/4483e91a808e4724dfbc382d6f60",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/ec/4d/6c58d9a9c5b13837d87d3d871868",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/dd/12/2e3164bd4770a6c648e2e7dbc4f0",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/fa/41/63a57ecf884cecf7ee1c8b9b2dcf",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/64/2b/0ebcdfd2f61027dcfff899d8894f",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/8f/e7/3ca7ed13d4a03013ecbb80ecb78c",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/ec/e2/ebe20cc007e87d0ede6e0ec169af",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/3a/77/32299795fdb8b0c0fbc3130b7193",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c2/1a/bfaeccd961429479947ea1cb2c47",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/43/74/b5749a746e72007f2f464b2941c6",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/eb/e2/f97727387a3f9707b079b7b2acd0",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/5f/da/6a048012e6b94a303e59b8dae61b",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/f5/11/e75118e0a8f821e030f82e79c1bc",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/d2/ad/4ee541d9d19b2d6fc1dab4947a26",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/10/2b/133d1cf611800e518d5353a10a94",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/85/53/fde7e925ac80da650a02ee078ad0",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/96/8e/c8292f6fc6967003affeb6ca32b7",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/28/f6/26327365481296a963bb37d58d82",
|
||||
"build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/6d/b6/4e4a46d553d1949c956e72a3617d",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/81/57/d0a2b72a86d6f7f542d07e4fba29",
|
||||
"build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ac/f5/a6350f397911c2833c35fb86aa6c",
|
||||
"build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/91/87/78eab8de6f5bc52ff10f75e9d0b5",
|
||||
"build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a9/29/9cf3b260aae600ccafb535309b62",
|
||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/56/c2/75943b307817b0f23807b4f36632",
|
||||
"build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/93/51/6cf630d6ab82f8946569b96f01b5",
|
||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e4/ba/31a54b98463bc261835ac9cc7c51",
|
||||
"build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/64/25/bba77bfd767e14a9df46795c93bb",
|
||||
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/f2/17/02a1053141eac72b24c323b10003",
|
||||
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/98/ca/dcbb87a7c32120a42ab6ca1e7194",
|
||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ca/dc/4a0fcdee7fc3c57960d5381a0299",
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/6c/a3/b70ad508a305efc2a10b5ba4508e",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/98/a9/1426b7eadc8be33f98f103fb12f0",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/38/8f/50753e457af4c626e2285c3171ac",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/fe/4d/77331e69f4fc0ef288df17377b42",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/9b/07/37e3a24a6ee588d0e5d4ba7b5335",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/0a/60/0109e5badaf8d6610cc9a4a61aa2",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/6d/e7/4e5bf2f3c16ca59770d5789c2481",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/b5/de/6914b0c6ab3142ad99547e930d88",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/3e/a4/e22b4cc12099dc6863a418d186f9",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/bd/c7/c97d29a73c75b3e699f14bcd6e37",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/44/36/de0a2f89ccd4e4728301cecd1033",
|
||||
"src/ballistica/generated/python_embedded/binding.inc": "https://files.ballistica.net/cache/ba1/25/77/8093dfffddaa80cd513ddaa61867",
|
||||
"src/ballistica/generated/python_embedded/bootstrap.inc": "https://files.ballistica.net/cache/ba1/2d/4f/f4fe67827f36cd59cd5193333a02",
|
||||
"src/ballistica/generated/python_embedded/bootstrap_monolithic.inc": "https://files.ballistica.net/cache/ba1/ef/c1/aa5f1aa10af89f5c0b1e616355fd"
|
||||
|
||||
3
.idea/dictionaries/ericf.xml
generated
3
.idea/dictionaries/ericf.xml
generated
@ -851,6 +851,7 @@
|
||||
<w>fakeshake</w>
|
||||
<w>fallbacks</w>
|
||||
<w>farthestpt</w>
|
||||
<w>faulthandler</w>
|
||||
<w>fback</w>
|
||||
<w>fbase</w>
|
||||
<w>fclose</w>
|
||||
@ -1525,6 +1526,7 @@
|
||||
<w>masterhash</w>
|
||||
<w>masterver</w>
|
||||
<w>mastervers</w>
|
||||
<w>matchlines</w>
|
||||
<w>mathmodule</w>
|
||||
<w>mathnode</w>
|
||||
<w>mathutils</w>
|
||||
@ -2857,6 +2859,7 @@
|
||||
<w>wanttype</w>
|
||||
<w>warntype</w>
|
||||
<w>wasdead</w>
|
||||
<w>wasn</w>
|
||||
<w>wavenum</w>
|
||||
<w>weakref</w>
|
||||
<w>weakrefs</w>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
### 1.7.16 (build 20966, api 7, 2022-12-15)
|
||||
### 1.7.16 (build 20967, api 7, 2022-12-16)
|
||||
- Fixed a bug where profile names encased in curly brackets could cause harmless error messages.
|
||||
- Android will no longer log errors on ba.open_url() calls if a browser is not available (it still just falls back to the in-app dialog in that case).
|
||||
- The 'Upgrade' button for device accounts now signs you out and closes the upgrade window to hopefully make it more clear that you need to sign in with your newly created/upgraded BombSquad account.
|
||||
@ -6,6 +6,8 @@
|
||||
- Added Malay language. Ick; apparently its been sitting done for a while and I hadn't realized it wasn't added to the game yet. Apologies!. And thanks to all contributors!
|
||||
- Added 'enable_queue' server config setting. This defaults to True but can be turned off as a workaround for server owners targeted by queue spam attacks.
|
||||
- The public party list no longer sorts servers without queues at the end of the list. This sorting was put there long ago to prioritize fancy new queue-supporting servers but now it would just make the few that opt out of queues hard to find. Doh. So opting out of queues is probably not a great idea until this build is widespread.
|
||||
- Public uuids now only change once every 6 months or so instead of with every version bump. This way periods of heavy development won't put added strain on server owners trying to keep ban lists up to date and whatnot.
|
||||
- Added a merch button in the in-game store that goes to the ballistica.net merch page (though it only shows up in the few countries where merch is available).
|
||||
|
||||
### 1.7.15 (build 20960, api 7, 2022-12-04)
|
||||
- The cancel button on the 'Sign in with a Bombsquad Account' popup no longer respond to system cancel buttons (escape key, android back button, etc). Turns out some Android people were pressing back repeatedly to come back from a browser after signing in and immediately canceling their sign in attempts in the game before they completed. Hopefully this will avoid some frustration.
|
||||
|
||||
@ -1881,6 +1881,10 @@
|
||||
"ba_data/textures/menuIcon.ktx",
|
||||
"ba_data/textures/menuIcon.pvr",
|
||||
"ba_data/textures/menuIcon_preview.png",
|
||||
"ba_data/textures/merch.dds",
|
||||
"ba_data/textures/merch.ktx",
|
||||
"ba_data/textures/merch.pvr",
|
||||
"ba_data/textures/merch_preview.png",
|
||||
"ba_data/textures/meter.dds",
|
||||
"ba_data/textures/meter.ktx",
|
||||
"ba_data/textures/meter.pvr",
|
||||
|
||||
@ -5598,6 +5598,7 @@ TEX2D_DDS_TARGETS = \
|
||||
build/ba_data/textures/menuBG.dds \
|
||||
build/ba_data/textures/menuButton.dds \
|
||||
build/ba_data/textures/menuIcon.dds \
|
||||
build/ba_data/textures/merch.dds \
|
||||
build/ba_data/textures/meter.dds \
|
||||
build/ba_data/textures/monkeyFaceLevelColor.dds \
|
||||
build/ba_data/textures/monkeyFacePreview.dds \
|
||||
@ -6003,6 +6004,7 @@ TEX2D_PVR_TARGETS = \
|
||||
build/ba_data/textures/menuBG.pvr \
|
||||
build/ba_data/textures/menuButton.pvr \
|
||||
build/ba_data/textures/menuIcon.pvr \
|
||||
build/ba_data/textures/merch.pvr \
|
||||
build/ba_data/textures/meter.pvr \
|
||||
build/ba_data/textures/monkeyFaceLevelColor.pvr \
|
||||
build/ba_data/textures/monkeyFacePreview.pvr \
|
||||
@ -6408,6 +6410,7 @@ TEX2D_KTX_TARGETS = \
|
||||
build/ba_data/textures/menuBG.ktx \
|
||||
build/ba_data/textures/menuButton.ktx \
|
||||
build/ba_data/textures/menuIcon.ktx \
|
||||
build/ba_data/textures/merch.ktx \
|
||||
build/ba_data/textures/meter.ktx \
|
||||
build/ba_data/textures/monkeyFaceLevelColor.ktx \
|
||||
build/ba_data/textures/monkeyFacePreview.ktx \
|
||||
@ -6813,6 +6816,7 @@ TEX2D_PREVIEW_PNG_TARGETS = \
|
||||
build/ba_data/textures/menuBG_preview.png \
|
||||
build/ba_data/textures/menuButton_preview.png \
|
||||
build/ba_data/textures/menuIcon_preview.png \
|
||||
build/ba_data/textures/merch_preview.png \
|
||||
build/ba_data/textures/meter_preview.png \
|
||||
build/ba_data/textures/monkeyFaceLevelColor_preview.png \
|
||||
build/ba_data/textures/monkeyFacePreview_preview.png \
|
||||
|
||||
@ -47,7 +47,7 @@ def bootstrap() -> None:
|
||||
|
||||
# Give a soft warning if we're being used with a different binary
|
||||
# version than we expect.
|
||||
expected_build = 20966
|
||||
expected_build = 20967
|
||||
running_build: int = env['build_number']
|
||||
if running_build != expected_build:
|
||||
print(
|
||||
|
||||
@ -131,6 +131,12 @@ class CloudSubsystem:
|
||||
) -> bacommon.cloud.WorkspaceFetchResponse:
|
||||
...
|
||||
|
||||
@overload
|
||||
def send_message(
|
||||
self, msg: bacommon.cloud.MerchAvailabilityMessage
|
||||
) -> bacommon.cloud.MerchAvailabilityResponse:
|
||||
...
|
||||
|
||||
@overload
|
||||
def send_message(
|
||||
self, msg: bacommon.cloud.TestMessage
|
||||
|
||||
@ -30,6 +30,8 @@ def get_store_item_name_translated(item_name: str) -> ba.Lstr:
|
||||
return _language.Lstr(
|
||||
translate=('characterNames', item_info['character'])
|
||||
)
|
||||
if item_name in ['merch']:
|
||||
return _language.Lstr(resource='merchText')
|
||||
if item_name in ['upgrades.pro', 'pro']:
|
||||
return _language.Lstr(
|
||||
resource='store.bombSquadProNameText',
|
||||
@ -50,7 +52,7 @@ def get_store_item_display_size(item_name: str) -> tuple[float, float]:
|
||||
"""(internal)"""
|
||||
if item_name.startswith('characters.'):
|
||||
return 340 * 0.6, 430 * 0.6
|
||||
if item_name in ['pro', 'upgrades.pro']:
|
||||
if item_name in ['pro', 'upgrades.pro', 'merch']:
|
||||
return 650 * 0.9, 500 * 0.85
|
||||
if item_name.startswith('maps.'):
|
||||
return 510 * 0.6, 450 * 0.6
|
||||
@ -96,6 +98,7 @@ def get_store_items() -> dict[str, dict]:
|
||||
'characters.taobaomascot': {'character': 'Taobao Mascot'},
|
||||
'characters.santa': {'character': 'Santa Claus'},
|
||||
'characters.bunny': {'character': 'Easter Bunny'},
|
||||
'merch': {},
|
||||
'pro': {},
|
||||
'maps.lake_frigid': {'map_type': maps.LakeFrigid},
|
||||
'games.ninja_fight': {
|
||||
@ -193,9 +196,7 @@ def get_store_items() -> dict[str, dict]:
|
||||
'icons.fireball': {'icon': _ba.charstr(SpecialChar.FIREBALL)},
|
||||
'icons.mikirog': {'icon': _ba.charstr(SpecialChar.MIKIROG)},
|
||||
}
|
||||
store_items = _ba.app.store_items
|
||||
assert store_items is not None
|
||||
return store_items
|
||||
return _ba.app.store_items
|
||||
|
||||
|
||||
def get_store_layout() -> dict[str, list[dict[str, Any]]]:
|
||||
@ -261,7 +262,6 @@ def get_store_layout() -> dict[str, list[dict[str, Any]]]:
|
||||
],
|
||||
}
|
||||
store_layout = _ba.app.store_layout
|
||||
assert store_layout is not None
|
||||
store_layout['characters'] = [
|
||||
{
|
||||
'items': [
|
||||
@ -302,6 +302,12 @@ def get_store_layout() -> dict[str, list[dict[str, Any]]]:
|
||||
'items': ['games.easter_egg_hunt'],
|
||||
}
|
||||
)
|
||||
|
||||
# This will cause merch to show only if the master-server has
|
||||
# given us a link (which means merch is available in our region).
|
||||
store_layout['extras'] = [{'items': ['pro']}]
|
||||
if _ba.app.config.get('Merch Link'):
|
||||
store_layout['extras'][0]['items'].append('merch')
|
||||
return store_layout
|
||||
|
||||
|
||||
|
||||
@ -4,18 +4,25 @@
|
||||
# pylint: disable=too-many-lines
|
||||
from __future__ import annotations
|
||||
|
||||
import time
|
||||
import copy
|
||||
import math
|
||||
import logging
|
||||
import weakref
|
||||
from enum import Enum
|
||||
from threading import Thread
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from efro.error import CommunicationError
|
||||
import bacommon.cloud
|
||||
import ba
|
||||
import ba.internal
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from typing import Any, Callable, Sequence
|
||||
|
||||
MERCH_LINK_KEY = 'Merch Link'
|
||||
|
||||
|
||||
class StoreBrowserWindow(ba.Window):
|
||||
"""Window for browsing the store."""
|
||||
@ -593,8 +600,14 @@ class StoreBrowserWindow(ba.Window):
|
||||
else:
|
||||
self._last_buy_time = curtime
|
||||
|
||||
# Pro is an actual IAP; the rest are ticket purchases.
|
||||
if item == 'pro':
|
||||
# Merch is a special case - just a link.
|
||||
if item == 'merch':
|
||||
url = ba.app.config.get('Merch Link')
|
||||
if isinstance(url, str):
|
||||
ba.open_url(url)
|
||||
|
||||
# Pro is an actual IAP, and the rest are ticket purchases.
|
||||
elif item == 'pro':
|
||||
ba.playsound(ba.getsound('click01'))
|
||||
|
||||
# Purchase either pro or pro_sale depending on whether
|
||||
@ -681,7 +694,9 @@ class StoreBrowserWindow(ba.Window):
|
||||
assert self.button_infos is not None
|
||||
for b_type, b_info in self.button_infos.items():
|
||||
|
||||
if b_type in ['upgrades.pro', 'pro']:
|
||||
if b_type == 'merch':
|
||||
purchased = False
|
||||
elif b_type in ['upgrades.pro', 'pro']:
|
||||
purchased = ba.app.accounts_v1.have_pro()
|
||||
else:
|
||||
purchased = ba.internal.get_purchased(b_type)
|
||||
@ -707,7 +722,11 @@ class StoreBrowserWindow(ba.Window):
|
||||
color = (0.4, 0.8, 0.1)
|
||||
extra_image_opacity = 1.0
|
||||
call = b_info['call'] if 'call' in b_info else None
|
||||
if b_type in ['upgrades.pro', 'pro']:
|
||||
if b_type == 'merch':
|
||||
price_text = ''
|
||||
price_text_left = ''
|
||||
price_text_right = ''
|
||||
elif b_type in ['upgrades.pro', 'pro']:
|
||||
sale_time = get_available_sale_time('extras')
|
||||
if sale_time is not None:
|
||||
priceraw = ba.internal.get_price('pro')
|
||||
@ -917,7 +936,9 @@ class StoreBrowserWindow(ba.Window):
|
||||
# pylint: disable=too-many-locals
|
||||
# pylint: disable=too-many-branches
|
||||
# pylint: disable=too-many-nested-blocks
|
||||
from bastd.ui.store import item as storeitemui
|
||||
from bastd.ui.store.item import (
|
||||
instantiate_store_item_display,
|
||||
)
|
||||
|
||||
title_spacing = 40
|
||||
button_border = 20
|
||||
@ -1102,7 +1123,7 @@ class StoreBrowserWindow(ba.Window):
|
||||
+ (b_width + button_spacing) * col,
|
||||
v - b_height + boffs_v2,
|
||||
)
|
||||
storeitemui.instantiate_store_item_display(
|
||||
instantiate_store_item_display(
|
||||
item_name,
|
||||
item,
|
||||
parent_widget=cnt2,
|
||||
@ -1325,3 +1346,41 @@ class StoreBrowserWindow(ba.Window):
|
||||
)
|
||||
if self._on_close_call is not None:
|
||||
self._on_close_call()
|
||||
|
||||
|
||||
def _check_merch_availability_in_bg_thread() -> None:
|
||||
# pylint: disable=cell-var-from-loop
|
||||
|
||||
# Merch is available from some countries only.
|
||||
# Make a reasonable check to ask the master-server about this at
|
||||
# launch and store the results.
|
||||
for _i in range(15):
|
||||
try:
|
||||
if ba.app.cloud.is_connected():
|
||||
response = ba.app.cloud.send_message(
|
||||
bacommon.cloud.MerchAvailabilityMessage()
|
||||
)
|
||||
|
||||
def _store_in_logic_thread() -> None:
|
||||
cfg = ba.app.config
|
||||
current: str | None = cfg.get(MERCH_LINK_KEY)
|
||||
if not isinstance(current, str | None):
|
||||
current = None
|
||||
if current != response.url:
|
||||
cfg[MERCH_LINK_KEY] = response.url
|
||||
cfg.commit()
|
||||
|
||||
# If we successfully get a response, kick it over to the
|
||||
# logic thread to store and we're done.
|
||||
ba.pushcall(_store_in_logic_thread, from_other_thread=True)
|
||||
return
|
||||
except CommunicationError:
|
||||
pass
|
||||
except Exception:
|
||||
logging.warning(
|
||||
'Unexpected error in merch-availability-check.', exc_info=True
|
||||
)
|
||||
time.sleep(1.1934) # A bit randomized to avoid aliasing.
|
||||
|
||||
|
||||
Thread(target=_check_merch_availability_in_bg_thread, daemon=True).start()
|
||||
|
||||
@ -92,6 +92,10 @@ def instantiate_store_item_display(
|
||||
tint_tex = character.icon_mask_texture
|
||||
title_v = 0.255
|
||||
price_v = 0.145
|
||||
elif item_name == 'merch':
|
||||
base_text_scale = 0.6
|
||||
title_v = 0.85
|
||||
price_v = 0.15
|
||||
elif item_name in ['upgrades.pro', 'pro']:
|
||||
base_text_scale = 0.6
|
||||
title_v = 0.85
|
||||
@ -165,6 +169,23 @@ def instantiate_store_item_display(
|
||||
tint2_color=tint2_color,
|
||||
)
|
||||
|
||||
if item_name == 'merch':
|
||||
frame_size = b_width * 0.7
|
||||
im_dim = frame_size * (100.0 / 113.0)
|
||||
im_pos = (
|
||||
b_pos[0] + b_width * 0.5 - im_dim * 0.5 + b_offs_x,
|
||||
b_pos[1] + b_height * 0.5 - im_dim * 0.5,
|
||||
)
|
||||
ba.imagewidget(
|
||||
parent=parent_widget,
|
||||
position=im_pos,
|
||||
size=(im_dim, im_dim),
|
||||
transition_delay=delay,
|
||||
draw_controller=btn,
|
||||
opacity=1.0,
|
||||
texture=ba.gettexture('merch'),
|
||||
)
|
||||
|
||||
if item_name in ['pro', 'upgrades.pro']:
|
||||
frame_size = b_width * 0.5
|
||||
im_dim = frame_size * (100.0 / 113.0)
|
||||
@ -184,7 +205,6 @@ def instantiate_store_item_display(
|
||||
)
|
||||
txt = ba.Lstr(resource='store.bombSquadProNewDescriptionText')
|
||||
|
||||
# t = 'foo\nfoo\nfoo\nfoo\nfoo\nfoo'
|
||||
item['descriptionText'] = ba.textwidget(
|
||||
parent=parent_widget,
|
||||
text=txt,
|
||||
|
||||
@ -459,6 +459,7 @@
|
||||
<w>fastldlt</w>
|
||||
<w>fastlsolve</w>
|
||||
<w>fastltsolve</w>
|
||||
<w>faulthandler</w>
|
||||
<w>fbos</w>
|
||||
<w>fcntl</w>
|
||||
<w>fdata</w>
|
||||
@ -800,6 +801,7 @@
|
||||
<w>maskuv</w>
|
||||
<w>masterver</w>
|
||||
<w>mastervers</w>
|
||||
<w>matchlines</w>
|
||||
<w>maximus</w>
|
||||
<w>maxpathlen</w>
|
||||
<w>maxtries</w>
|
||||
@ -1507,6 +1509,7 @@
|
||||
<w>wakeups</w>
|
||||
<w>walisser</w>
|
||||
<w>wasdebug</w>
|
||||
<w>wasn</w>
|
||||
<w>watte</w>
|
||||
<w>wdeprecated</w>
|
||||
<w>weakref</w>
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
namespace ballistica {
|
||||
|
||||
// These are set automatically via script; don't modify them here.
|
||||
const int kAppBuildNumber = 20966;
|
||||
const int kAppBuildNumber = 20967;
|
||||
const char* kAppVersion = "1.7.16";
|
||||
|
||||
// Our standalone globals.
|
||||
|
||||
@ -221,8 +221,15 @@ auto Platform::GetPublicDeviceUUID() -> std::string {
|
||||
// This UUID is supposed to change periodically, so let's plug in
|
||||
// some stuff to enforce that.
|
||||
inputs.emplace_back(GetOSVersionString());
|
||||
inputs.emplace_back(kAppVersion);
|
||||
inputs.emplace_back("kerploople");
|
||||
|
||||
// This part gets shuffled periodically by my version-increment tools.
|
||||
// We used to plug version in directly here, but that caused uuids to
|
||||
// shuffle too rapidly during periods of rapid development. This
|
||||
// keeps it more constant.
|
||||
// __last_rand_uuid_component_shuffle_date__ 2022 12 17
|
||||
auto rand_uuid_component{"BMCJPHH0SC22KB0WVJ1RAYD68TPEXL58"};
|
||||
|
||||
inputs.emplace_back(rand_uuid_component);
|
||||
auto gil{Python::ScopedInterpreterLock()};
|
||||
auto pylist{g_python->StringList(inputs)};
|
||||
auto args{g_python->SingleMemberTuple(pylist)};
|
||||
|
||||
@ -157,6 +157,24 @@ class WorkspaceFetchResponse(Response):
|
||||
done: Annotated[bool, IOAttrs('d')] = False
|
||||
|
||||
|
||||
@ioprepped
|
||||
@dataclass
|
||||
class MerchAvailabilityMessage(Message):
|
||||
"""Can we show merch link?"""
|
||||
|
||||
@classmethod
|
||||
def get_response_types(cls) -> list[type[Response] | None]:
|
||||
return [MerchAvailabilityResponse]
|
||||
|
||||
|
||||
@ioprepped
|
||||
@dataclass
|
||||
class MerchAvailabilityResponse(Response):
|
||||
"""About that merch..."""
|
||||
|
||||
url: Annotated[str | None, IOAttrs('u')]
|
||||
|
||||
|
||||
@ioprepped
|
||||
@dataclass
|
||||
class SignInMessage(Message):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user