* introducing generic event message services; implementing GalaxyService using the generic framework
* working GalaxyService based on GenericEventService
* working AvatarService based on GenericEventService(withSupport); manually corrected almost every message to AvatarService to ensure channel and filters are preserved
* working LocalService based on GenericServiceEvent(WithSupport); manually corrected almost every message to LocalService to ensure channel and filters are preserved
* adapted but did not implement the event bus rate limiting mechanisms from Chinese PSF fork
* solved issue with redundant support actor messaging; refactored event buses out of event systems
* working VehicleService based on GenericServiceEvent(WithSupport); manually corrected almost every message to VehicleService to ensure channel and filters are preserved
* implemented proper generic event messages that do not have an [System]Action prefix, e.g., Foo not AvatarAction.Foo; made SendResponse accommodate multiple packets at once
* a single envelope for inbound messages, replacing [Avatar|Local|Vehicle|Galaxy]ServiceMessage; all variations of PlanetsideAttribute message have been reduced to the PlanetsideAttribute message
* cached messages on avatar and vehicle message systems
* reorganized the services.base classes; streamlined the class inheritance structure and param requirements for certain classes; messed up all imports
* reorganized special envelopes from certain control agencies; wrote tests for primary event systems; fixed some other tests; knapsacking algorithm in grid inventory is less abusive
* mostly, comments for the event system files; the event system stamp now determines how the out channel forms; some case class entities have become case object entities
* added test for join confirmation message
* prefacing imports with _root_ to escape name conflict with nested package
* sorted out some tests for the event systems
* changing the reporting visibility of the event bus broadcast channel and removing the need to maintain an 'original channel'
* removed event system implied instances of MessageEnvelope overloaded constructors and replaced them directly with MessageEnvelope; included additional places where SendResponse could combine dispatch; support actors have both constructor classes and custom envelopes stored in the same file as the actor itself for better readability
* replacing *ServiceResponse classes with GenericResponseEnvelope and an identifying stamp in all remaining cases such that the classes are unnecessary for the project and can be deleted; squad remaains untouched due to its difference
* extract common messages into a common handler endpoint; created an interface for handlers thus that all handler endpoints can be polled if a specific handler endpoint does not support a message
* the list of event system handlers and filters for those handlers are set up differently
* wrong filters used to retrieve other player data; re-use the same filter rather than create a new one
* special applyOrElse and isDefinedAt and guards
* when to handle versus when to trytoHandle
* added config options for cached event messages, shared by all cahced event systems
* rebase to master, after a while
* moved the default guid-0 from service to default
* allowed bundling of event message envelopes to streamline event system communication
* not necessarily a part of the event bus generalization progress, just have wanted to move these files into this subdirectory for a long time
* a little over-zealous message bundling
* corrected an oversight where filter guids were being ignored and sameness between destination and filter was being ignored, by rewriting how actor Receive guard booleans are guards
* modified cached guard tests; adjusted list mechanics for SendResponse contents
* augmented player shift state with object delete and object create for other connected players
* pausing teleporting player rendering
* somehow compiled despite this capitalization error
* modified the killplanes in the shooting and driving vr zones so that they reflect the wrapped nature of the map's repeating instances; modified the map scale to make the blockmap properly accommodate
* fixed driving zone exceptions for air terminals that were technically underwater, wraparound logic
* oicw little buddy proxy damage carrier class did not project sidedness to the server side damage protocol, skipping sidedness check altogether
* oicw allowed
* set proper projectile origin
* unrelated to the oicw, when a csr uses warp with coordinate literals, a reminder to set the sidedness correctly is issued; additionally, when using warp with a poi, the sidedness is set to outside of
* adding entity to represent force dome, and wiring force dome to capitol facility; touching the force dome while it is active causes death on both server and client
* force dome is now an amenity owned by its encompassing capitol facility and has its own control agency that is aware of the faction affinity, hack state, etc. conditions that would cause it to close over or open up
* force dome messages owner about change in state, triggering the NTU silo to give away repairs for free; activating the force dome kills or destroys all enemies within its radius
* the force dome exhibits a perimeter in which enemies will be destroyed when it energizes; the facility generator will become undestroyable when the force dome is energized
* force domes should be on the zone blockmap; correct issue with force dome death; interaction that sets players found under the force dome to be invulnerable works
* wrote variable and method documentation; prepared interaction handlers for force domes for mountable (vehicle) targets
* force dome provides damage protection to certain amenities, e.g., the generator, the turrets, and any implant machines (cryo); force dome will also suspend hacking attempts under it's envelope, but counter-hacking (resecure) should still be possible; operated turret deployables gain protection while manned; turrets no longer share knowledge of each other's upgrade cycles
* csr-level commands for force dome manipulation
* extending the force dome protection over a variety of entities in a different manner, with a focus on how to perform state reset (dismounting and dome protect end); completely refactored and reworked the self-reported zone interaction timer for vehicles; separated passenger seat mounting from gunner seat mounting
* adjusted self-reporting zone interaction logic; allowed for status of mounting into turret entities; made routine mounting behavior callbacks
* streamline pass on the vehicle operation and aaccountability
* expanded scope of 'csr override message for Capitol force dome state; spelling and guard condition changes to dismount blocking cases
* corrected death by force dome contact, for all players; corrected reset of force dome protection field condition
* corrected input data to force door wall inclusion test; adjusted force dome ceiling inclusion test(s); force dome generator locations now retained; invulnerability can not be granted to players or vehicles if they've taken damage recently
* proper reset sequence handling, with an added small refactor to the marshalling process
* reset sequence at 0x8000, but only when retrieving a new sequence number; caching common flag values when marshalling packets
broadcast TimeOfDayMessage to all players in the zone
fix input allows single minute digit times (0:0)
fix set time(speed) before packet creation
fix GetTimeOfDay return seconds, not millis
fix SetTimeOfDay write correct integer type
corrected packet decoding
added helper functions
added zone logic to store and access local time
updated zoning logic to use local zone time
added chat commands to change zone local time and time speed
* conditions where infantry suffer only armor damage until it is depleted (not just as a max); valid for spitfire damage and collision
* no bonus damage on armor depletion