diff --git a/.efrocachemap b/.efrocachemap
index c845f200..bd7edd0c 100644
--- a/.efrocachemap
+++ b/.efrocachemap
@@ -3971,50 +3971,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/b2/e5/0ee0561e16257a32830645239f34",
"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/bd/38/b3898f07aaac32b00830e8163c98",
+ "build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/a7/ff/64365910ee6c01109f1d26cc8e00",
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/74/1d/fc9e33e565475daaac80da5252f0",
- "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c5/5b/e978fee41fbfc55c16d718c56f1f",
- "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/1a/b8/75e1e4054c97774d4405f3e60e20",
- "build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/18/e4/3562125e72905dd065f684dbce1e",
+ "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/58/6b/88ef04ab964dc44d782b335a3664",
+ "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/29/fa/e83784a90fd1b5f52a62ee2ea688",
+ "build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/f4/f1/497ce4ccc3fcb11b137cad8dc472",
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/9c/7b/ac1a200be0f37078af0991faca3b",
- "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/db/0b/97c15f40176f9107e3860372673c",
- "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/af/e7/a94f9f8c79201f1971e8780fabca",
- "build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/2a/f2/2c9ed65d62dcc09b5a6ac58e62dc",
- "build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/7e/92/bc8c924d00452e82b1c20e6f3416",
- "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/1a/b7/10ce516d3d87a52bd3bdc2c4f608",
- "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/e1/e0/62ce20987de8e415df695299b8c6",
- "build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/f0/2a/3847196162ec4d4dc5a52b7b6d78",
- "build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/0b/c4/ecbb7d87c7aabafee7406489a4c7",
- "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/6c/2c/3944b52004b5ea5e55feda5d3d28",
- "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/f6/f3/335de61de866f22bf445609ebfe9",
- "build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/00/62/a1db444b8b6afb4a854afe733356",
- "build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/23/61/837c636ebba4507facd6ac2de82a",
- "build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/1b/8f/3146eb6b965ed4c206a0daf4ee37",
- "build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/29/e8/5cffe93a0c72ec31d0ae2ec175fe",
- "build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/21/91/eb4b0119f4980c19c8fdc636e493",
- "build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/6f/4b/34dcc5f14c2547f4c16cda7b05c1",
- "build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/5a/38/91689a90fad69186191b3d55dd70",
- "build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/fe/aa/c85f26afd6babc5f1ef9636dcfbd",
- "build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/94/0a/5fdf30ef59684a9036138f4c97d5",
- "build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ea/fc/263f0339e7e8815648d93ad41143",
- "build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/9e/d2/58b0ab135403ffa2bf3e04693ecd",
- "build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/15/98/518a364e457218a9a55c7d726da3",
- "build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/2d/26/8011786095c9cc80f98c16251d35",
- "build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4b/0e/219f6246e32037888ce8011ab13f",
- "build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ae/cd/3370a511d9ff8a2aa4c5536f6a5a",
- "build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/87/84/38cfc99bf6730abd39a247aa340e",
- "build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/67/15/f85722b517a5782e39b4f897e64e",
- "build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/2f/bb/31cc38cfadaa0f66772141b7e6ff",
- "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b6/41/acfa81cf0a54a440609a63b757ab",
- "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d4/b5/483420d970e61d5f134345a3e324",
- "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/d9/63/db8e49802c7b4e8e80f814879ece",
- "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/c6/e2/58f253b2663046d731c58d994154",
- "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/f4/93/43b813bc7d73c1ed6e9c5178428e",
- "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/7c/33/a33d0344983bcc893143efe9505f",
- "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/a9/95/7fa0cb933a13925ece114c162428",
- "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/5b/ec/6f0e9b54adb0d73985bcef1260eb",
- "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/3d/7a/2bd489c07cc529fb193460522df4",
- "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/78/93/467f019959ada2bfeeb083b365ef",
+ "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/79/0a/dfd7221bc381287f63283fc10248",
+ "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/b0/a1/8970bc1b61a4b60fd5d23b2ee742",
+ "build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/97/ac/58e134b066d95727b9cb80e9a9b6",
+ "build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/35/dd/36e1e5c102eb81e2d9dcd351cece",
+ "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/e1/3e/90fc34f4b70e1431aa4758d3d2db",
+ "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/52/e8/1d53327d7b5883c84239d02373e8",
+ "build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/eb/3b/7963c1e75a28c852c79dbd1636c0",
+ "build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/ad/fc/6e0d21b11216629414ac0e4d1d01",
+ "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/fc/cd/74e37b262e396cce545fa2e5bce7",
+ "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/64/e5/2e62f8637b4a0ee111238afb5df2",
+ "build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/8f/92/9de957ef25923b2162ccd6a232eb",
+ "build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/f2/9d/5c3aec166c6e352726853c33712e",
+ "build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/59/aa/9e20069f178fa06188572122ff61",
+ "build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/d1/8f/5869afb34d874c376428af39e107",
+ "build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/73/bc/6136ffcc0243f6465e5ceb860054",
+ "build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a3/0a/0c8c321566dd46b61a35b0afcc62",
+ "build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/34/a1/7e7757adeb68841c5398da73dea8",
+ "build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/c1/8b/d55378dac4d1d612f89ae4ce9820",
+ "build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/16/cd/2197a431fa3ce1c17f906bec64c3",
+ "build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/6d/fd/fde9716ed5abf602684e5d233d99",
+ "build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/f8/25/a8dd68c864ccc5dc82aaf4097722",
+ "build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/db/25/0ba199db8e9b0c604d810a104d2e",
+ "build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/66/50/7432d08764f9d8d0636e83e2e45a",
+ "build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/2d/bd/b570408b9ec8e63a2b8196fe2b2e",
+ "build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d0/4d/0d0e5e80e2003c728d7da7e70692",
+ "build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4e/ff/df288b432145baf5149c029a4923",
+ "build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/01/b2/7a1bc81339e8b741d6779ed9fe71",
+ "build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/7d/0e/67404978bbafda33b420014328b4",
+ "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/09/90/19e7f1e772d86e7ef59e9188cc82",
+ "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/31/53/454316199b5e75ea0bc9250d968c",
+ "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/e0/4a/bf0ae79a0a00ed0dd89a1eec8917",
+ "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/82/cb/af0aba66777d13251de1766afdc4",
+ "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/3f/2e/db67cbb59ca85958d6deb5c3ec55",
+ "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/bc/23/a06946da0e41ac4dad99cbc66533",
+ "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/52/d1/7a0ff7f13d72350b8d329dc1ea7f",
+ "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/76/1b/9ebdc425e4bd743745d4443d1fab",
+ "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/79/e8/c3c2ce27997183599e53fcbe7705",
+ "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/6d/f1/f0cc9a64748bf0d92a1321369f51",
"src/ballistica/generated/python_embedded/binding.inc": "https://files.ballistica.net/cache/ba1/b3/15/7c6d580b3482870b5b058858624c",
"src/ballistica/generated/python_embedded/bootstrap.inc": "https://files.ballistica.net/cache/ba1/d3/db/e73d4dcf1280d5f677c3cf8b47c3"
}
\ No newline at end of file
diff --git a/.idea/dictionaries/ericf.xml b/.idea/dictionaries/ericf.xml
index d3e6e64e..890c13bb 100644
--- a/.idea/dictionaries/ericf.xml
+++ b/.idea/dictionaries/ericf.xml
@@ -198,6 +198,7 @@
baseval
basew
basn
+ basnlog
basnmessagereceiver
basnmessagesender
basntoclient
@@ -2008,6 +2009,7 @@
responsetypes
responsetypevar
resultstr
+ retcode
retrysecs
returncode
returnfuncptrs
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5f08218c..1f38c01b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,7 @@
-### 1.6.11 (20522, 2022-03-21)
-- Documentation is now generated using pdoc . Thanks Dliwk!!
+### 1.6.11 (20538, 2022-03-23)
+- Documentation is now generated using pdoc . Thanks Dliwk!! (I'll get it wired up to auto-update to a webpage soon).
+- Players who connect to authenticated servers impersonating someone else are now simply kicked; not banned. The old behavior was being intentionally exploited to ban people from their own servers/etc. I may revert to bans once I can do it in a way that is not exploitable.
+- The game now establishes a V2 master-server connection (which will soon be used for lots of cool functionality). For this version it is mainly enabled for testing purposes; please holler if you see any odd warning messages or behavior.
### 1.6.10 (20511, 2022-03-20)
- Added `_ba.get_client_public_device_uuid` function which returns a semi-permanent device id for a connected client running 1.6.10 or newer. Can be useful to combat spam attacks or other mischief.
diff --git a/Makefile b/Makefile
index a658443a..f425382f 100644
--- a/Makefile
+++ b/Makefile
@@ -6,24 +6,6 @@
# Targets in this top level Makefile do not expect -jX to be passed to them
# and generally handle spawning an appropriate number of child jobs themselves.
-# Can be used in place of the recommended $(MAKE) to suppress various
-# warnings about the jobserver being disabled due to -jX options being
-# passed to sub-makes. Generally passing -jX as part of a recursive make
-# instantiation is frowned upon, but we treat this Makefile as a high level
-# orchestration layer and we want to handle details like that for the user,
-# so we try to pick smart -j values ourselves. We can't really rely on the
-# jobserver anyway to balance our loads since we often call out to other
-# systems (XCode, Gradle, Visual Studio, etc.) which wrangle jobs in their
-# own ways.
-DMAKE = $(MAKE) MAKEFLAGS= MKFLAGS= MAKELEVEL=
-
-# Set env-var BA_ENABLE_IRONY_BUILD_DB=1 to enable creating/updating a
-# cmake compile-commands database for use with irony for emacs (and possibly
-# other tools).
-ifeq ($(BA_ENABLE_IRONY_BUILD_DB),1)
- PREREQ_IRONY = .cache/irony/compile_commands.json
-endif
-
################################################################################
# #
@@ -35,6 +17,13 @@ endif
help:
@tools/pcommand makefile_target_list Makefile
+# Set env-var BA_ENABLE_IRONY_BUILD_DB=1 to enable creating/updating a
+# cmake compile-commands database for use with irony for emacs (and possibly
+# other tools).
+ifeq ($(BA_ENABLE_IRONY_BUILD_DB),1)
+ PREREQ_IRONY = .cache/irony/compile_commands.json
+endif
+
PREREQS = .cache/checkenv $(PREREQ_IRONY) .dir-locals.el \
.mypy.ini .pycheckers .pylintrc .style.yapf .clang-format \
ballisticacore-cmake/.clang-format .editorconfig
@@ -119,12 +108,16 @@ clean-list:
dummymodule:
./tools/pcommand update_dummy_module --force
+# Generate docs.
+docs:
+ @tools/pcommand gendocs
+
# Tell make which of these targets don't represent files.
.PHONY: help prereqs prereqs-clean assets assets-cmake assets-windows \
assets-windows-Win32 assets-windows-x64 \
assets-mac assets-ios assets-android assets-clean \
resources resources-clean meta meta-clean \
- clean clean-list dummymodule
+ clean clean-list dummymodule docs
################################################################################
@@ -613,22 +606,22 @@ format-makefile: prereqs
# Run all project checks. (static analysis)
check:
- @${DMAKE} -j$(CPUS) update-check cpplint pylint mypy
+ @$(DMAKE) -j$(CPUS) update-check cpplint pylint mypy
@tools/pcommand echo SGRN BLD ALL CHECKS PASSED!
# Same as check but no caching (all files are checked).
check-full:
- @${DMAKE} -j$(CPUS) update-check cpplint-full pylint-full mypy-full
+ @$(DMAKE) -j$(CPUS) update-check cpplint-full pylint-full mypy-full
@tools/pcommand echo SGRN BLD ALL CHECKS PASSED!
# Same as 'check' plus optional/slow extra checks.
check2:
- @${DMAKE} -j$(CPUS) update-check cpplint pylint mypy pycharm
+ @$(DMAKE) -j$(CPUS) update-check cpplint pylint mypy pycharm
@tools/pcommand echo SGRN BLD ALL CHECKS PASSED!
# Same as check2 but no caching (all files are checked).
check2-full:
- @${DMAKE} -j$(CPUS) update-check cpplint-full pylint-full mypy-full \
+ @$(DMAKE) -j$(CPUS) update-check cpplint-full pylint-full mypy-full \
pycharm-full
@tools/pcommand echo SGRN BLD ALL CHECKS PASSED!
@@ -895,6 +888,17 @@ clion-staging: assets-cmake resources meta
# #
################################################################################
+# Can be used in place of the recommended $(MAKE) to suppress various
+# warnings about the jobserver being disabled due to -jX options being
+# passed to sub-makes. Generally passing -jX as part of a recursive make
+# instantiation is frowned upon, but we treat this Makefile as a high level
+# orchestration layer and we want to handle details like that for the user,
+# so we try to pick smart -j values ourselves. We can't really rely on the
+# jobserver anyway to balance our loads since we often call out to other
+# systems (XCode, Gradle, Visual Studio, etc.) which wrangle jobs in their
+# own ways.
+DMAKE = $(MAKE) MAKEFLAGS= MKFLAGS= MAKELEVEL=
+
# This should give the cpu count on linux and mac; may need to expand this
# if using this on other platforms.
CPUS = $(shell getconf _NPROCESSORS_ONLN || echo 8)
@@ -1020,10 +1024,5 @@ _windows-wsl-rebuild:
$(VISUAL_STUDIO_VERSION)
@tools/pcommand echo BLU BLD Built build/windows/BallisticaCore$(WINPRJ).exe.
-# Generate docs.
-docs:
- @tools/pcommand gendocs
-
# Tell make which of these targets don't represent files.
-.PHONY: _cmake-simple-ci-server-build _windows-wsl-build _windows-wsl-rebuild \
- docs
+.PHONY: _cmake-simple-ci-server-build _windows-wsl-build _windows-wsl-rebuild
diff --git a/ballisticacore-cmake/.idea/dictionaries/ericf.xml b/ballisticacore-cmake/.idea/dictionaries/ericf.xml
index a5637d55..57136017 100644
--- a/ballisticacore-cmake/.idea/dictionaries/ericf.xml
+++ b/ballisticacore-cmake/.idea/dictionaries/ericf.xml
@@ -92,6 +92,7 @@
basetype
basicsize
basn
+ basnlog
basnmessagereceiver
basnmessagesender
basntoclient
@@ -994,6 +995,7 @@
responsetypes
responsetypevar
resync
+ retcode
retrysecs
retval
rezing
diff --git a/src/ballistica/ballistica.cc b/src/ballistica/ballistica.cc
index 0887d960..cf939197 100644
--- a/src/ballistica/ballistica.cc
+++ b/src/ballistica/ballistica.cc
@@ -21,7 +21,7 @@
namespace ballistica {
// These are set automatically via script; don't modify them here.
-const int kAppBuildNumber = 20522;
+const int kAppBuildNumber = 20538;
const char* kAppVersion = "1.6.11";
// Our standalone globals.
diff --git a/tools/batools/pcommand.py b/tools/batools/pcommand.py
index 5f572f72..f8cb194d 100644
--- a/tools/batools/pcommand.py
+++ b/tools/batools/pcommand.py
@@ -484,7 +484,7 @@ def gendocs() -> None:
from efro.terminal import Clr
import batools.docs
- print(f'{Clr.BLU}Generating docs html...{Clr.RST}')
+ print(f'{Clr.BLU}Generating documentation...{Clr.RST}')
batools.docs.generate(projroot=str(PROJROOT))
diff --git a/tools/efro/rpc.py b/tools/efro/rpc.py
index 9768c574..e381adee 100644
--- a/tools/efro/rpc.py
+++ b/tools/efro/rpc.py
@@ -452,8 +452,6 @@ class RPCEndpoint:
# NOTE: perhaps we want to do something more exact than
# this which only checks once per keepalive-interval?..
now = time.monotonic()
- assert self._peer_info is not None
-
if (self._last_keepalive_receive_time is not None
and now - self._last_keepalive_receive_time >
self._keepalive_timeout):
diff --git a/tools/efrotools/build.py b/tools/efrotools/build.py
index 3ac67166..ce6db9fa 100644
--- a/tools/efrotools/build.py
+++ b/tools/efrotools/build.py
@@ -79,7 +79,7 @@ class Lazybuild:
if self.have_fullclean_changes:
assert self.command_fullclean is not None
- print(f'{Clr.BLU}Lazybuild: \'fullclean\' input changed;'
+ print(f'{Clr.MAG}Lazybuild: full-clean input changed;'
f' running {Clr.BLD}{self.command_fullclean}.{Clr.RST}')
subprocess.run(self.command_fullclean, shell=True, check=True)
@@ -179,7 +179,10 @@ class Lazybuild:
def _test_path(self, path: str) -> bool:
# Now see this path is newer than our target..
if self.mtime is None or os.path.getmtime(path) >= self.mtime:
- print(f'{Clr.SMAG}Build of {self.target_name_pretty} triggered'
- f' by change in \'{path}\'{Clr.RST}')
+ print(f'{Clr.MAG}Lazybuild: '
+ f'{Clr.BLD}{self.target_name_pretty}{Clr.RST}{Clr.MAG}'
+ f' build'
+ f' triggered by change in {Clr.BLD}{path}{Clr.RST}{Clr.MAG}'
+ f'.{Clr.RST}')
return True
return False