Bundle was never called in any place other than BundleOption.
This refactors BundleOption into Bundle and removes BundleOption.
Besides being more efficient, it no longer has the possibility of
swallowing unrelated exceptions.
* Add some logging for suspicious HitMessages
* Add HitPositionDiscrepancyThreshold config settings
* Add hit position discrepancy check to LashMessage & SplashHitMessage
* Whitespace
* update scala to 2.13 & update dependencies
* fix test
* import scodec-akka
* scala 2.13 fixes
* Work around futures not completing when awaited within object constructor
Co-authored-by: Mazo <mazo2@hotmail.com>
* mix-in code for akka messaging move item, currently testing on infantry only
* adjusted structure of COntainable so callbacks are separate from message-producing functions, are separate from message-sending functionality; massaged LockerContainer until it could support control agency and created a wrapper for its Equipment interfacing; the control structure starts and stops when PlayerControl starts and stops, and it converts whenever necessary
* added failsafe conditions to Containable, such as blocking certain messages while completing a MoveItem call, or blocking all messages to reset disruptive MoveItem calls; depiction message callbacks for Player, Locker, and Vehicle, to properly depict the manipulation of items; eliminated the old code from WSA
* added useful comments to Containable; moved functionality for deployables, and for container'ing, and dropping logic out from WSA and distributed it appropriately
* handling terminal operations - buying an exosuit and selecting an infantry loadout; starting work on support for more persistent equipment timers local to the avatar (that were removed in this update; see wsa changes)
* linked terminal page/message with routing policy
* tuning vehicle loadout management and display
* separated use time from purchase time and applied a system that limits either if that same event would recur too soon; tuning exosuit and loadout changes
* some ask timeout handling and comments
* normalizing item on ground interactions
* rearranging the project structure
* merged with master; commas removed
* fixing tests
* added description strings to Tasks; adjusted the completion conditions for some Tasks
* a failed purchase will not block future purchases; increased timeout on move-item tasks
* corpses, even one's own, should have properly moveable inventories
* for better persistence, until GlobalDefinitions is renovated, moved the object id->name map onto the avatar object, for the purpose of timers; replaced a use of values in GridInventory for a map conversion
* max loadouts and max exosuit switch use same cooldown now; hopefully better clarifcation regarding held arm position
Using built-in akka configs, we are able to map Actors to dispatchers in
a fine-grained way. Now each session router, network listener, and zone
have a dedicated set of threads. Currently all WorldSessions are sharing
a single worker pool, which means that the server could still crash if
all worker threads are exhausted. To prevent conditions like these, the
amount of time spent on single actors based on time and number of
messages can be tuned.Threads when not receiving work exit to save
resources.
Also all .conf files are now included in the resource packing process.
Users should create user.conf to override these .conf files to avoid
losing edits when updating the server version.
PsAdmin uses a dedicated TCP port to allow for remote queries and
command to be sent to the running World/Login server. Commands are a
single command followed by zero or more arguments.
Commands may require access to the ActorSystem, so they will get their
own dedicated actors to be able to handle the different messages
required that can be sent in response to a query. The return line is in
JSON to allow for easy parsing by applications, such as web servers.
An interactive client is easy as being able to parse json and buffer
command input.
Some basic commands are implemented for now:
* shutdown - kills the actor system
* list_players - gets a list of players on the interstellar cluster
* dump_config - get the running config
* thread_dump - dumps all thread backtraces (useful for prod debugging)
More advanced commands like kick/ban will require additional testing.
* Add rotation to building constructor and map files
* Change non-radius based painfields to use a bounding box check based on nearby amenities (disabled in caves)
* Reduce pain field damage to 5