Class and Actor mixins for Deployment state. The logic is surprisingly self-contained, mostly.
DriveState:
This is not the former DriveState Enumeration of /packet/game/objectcreate/. This is now a /types/ Enumeration shared across /common/ objects and serves the functionality of both, at least to the extent that it is understood. Functions are includes that define the logic order or state changes and divides states into (two) groups.
VehicleService:
The directory /pslogin/src/test has been created and tests have been migrated there. Originally, the tests were located in the wrong place and were being skipped when not executed manually. They should now appear in coverage reports and be run as a part of continuous integration.
Replaces class object/serverobject/door/Base.scala. It performs nearly the exact same purpose but now has a list of owned objects called Amenities. Buildings are now a PlanetSideServerObject (PSSO), which allows them to have accept a *Control Actor and possess FactionAffinity.
FoundationBuilder:
FoundationBuilder : Building :: ServerObjectBuilder : [T <: PlanetSideServerObject]
Amenity:
Most PSSO's now accept Amenity as their parent in class hierarchy. Flagged PSSO's like Building and Vehicle are, on the other hand, capable of becoming the owner for these Amenity PSSOs, which allows them to inherit the same FactionAffinity.
FactionAffinity:
A trait that connects objects that are intended to communicate PlanetSideEmpire values.
MountableBhevaior:
Split between Mount and Dismount behavior. Passes appropriate messages to ensure coherent workflows.
Control Actors:
FactionAffinityBehavior and MountableBehavior are PartialFunctions that get processed in series.
VehicleControl:
Distinguished behavior allowed between an operational vehicle and a deactivated one.
WSA:
Tightened up DismountVehicleMsg handling code, since MountableBehavior has been enhanced.
Minor:
Shotgun shell stacking goes from 32 to 16. Various PSSO classes now have reliable Definition objects.
Tests:
We now have 1012 tests, some of them useful.
Vehicles can now be pulled from assigned and initialized terminals. The vehicle's chosen spawn pad controls (or paces) all aspects of the spawning process. Support Actors ensure that a fully-realized Vehicle will be unloaded and unregistered if left alone, either right after spawning on the pad or after an extended period of time. The latter half of the procedure used for spawning vehicles is a temporary workaround until future analysis and functionality of the server vehicle override packet is incorporated.
Weapons:
Weapons will now construct their own default magazines thanks to a switch from Ammo.Value to AmmoBoxDefinition in the ToolDefinition.
GenericObjectActionMessage :
The only thing this packet does, at the moment, is obscure the player when he is being promoted into the owner of a vehicle.