* Add AvatarActor: Responsible for managing the session's avatar object
* Convert Avatar object to case class
* Add persistence for BEP, CEP, implants, certs and cosmetics
* Add cosmetic chat commands and handle UI packet
* Add /setbr, /setcr, /certadd, /addbep, /addcep GM commands
* Convert zone maps to JSON
* Update to Scala 2.13.3 and fix warnings
* Fix MAX cooldowns not being applied when purchased manually
* Normalize database table names to singular
* Add docker image build
* initial packet and tests for ChainLashMessage; changed Rounds to RoundPerShot for extra clarity; weapon fire and discharge refactor
* lash damage field for maelstrom; chain lashes on hit with damsage proxy
* mend
* must modify all tests that rely on ephemeral logic like this in the future
* adding modifiers to take the place of target-selected distance calculations performed on damage valuesd; simplying the damage model
* suppressor goes in the suppressor slot
* moved deployment state management and ntu management into vehicle control agency; resource silos need coordinates
* compartmentalization of ntu behavior; end-of-life vehicle behavior; initial state of ntu behavior vehicle during zone loading
* warp gates now have specific ntu granting powers; resource silos have specific ntu acceptance powers; users are forced to process set current avatar at least once during the interim period
* compartmentalized the process of transferring ntu; the ant sends messages to the warp gate and the warp gate responds; the ant sends messages to the resource silo, the silo responds, and then the ant returns a second response; the matter of ntu transferrence was refactored for future accessibility for the bfr siphon
* refactor to single basic transfer behavior out from ant ntu transfer behavior; adding behavior to warp gates and silos
* rebase onto master merge
* correcting tests; eliminating redundancies in end of life of deployed vehicles by patching a match case
* ntu low moved to a function
* fixing test (order of messages)
* rebase merge resolutions
* Add .scalafmt.conf
* Adopt quill for database access
* Removed postgresql-async
* Refactored all instances of database access
* Creating duplicate characters of the same account is no longer possible
* Rewrote large parts of LoginSessionActor
* Implement migrations
* Move overrides into subdirectory
* Make usernames case insensitive
* Use LOWER(?) comparison instead of storing lowercased username
* import scala.util.{Success, Failure}
* Add config and joda-time dependencies
* Add sbt-scalafmt
* Use defaultWithAlign scalafmt preset
* Format all
* Add scalafix
* Remove unused imports
* Don't lowercase username when inserting
* Update readme
* Listen on worldserver.Hostname address
* Remove database test on startup
It could fail when the global thread pool is busy loading zone
maps. Migrations run on the main thread and also serve the
purpose of verifying the database configuration so it's fine to
remove the test altogether.
* Refactor chat message handlers, zones
What started as a small change to how zones are stored turned
into a pretty big effort of refactoring the chat message handler.
The !hack command was removed, the /capturebase commandwas added.
* Expose db ports in docker-compose.yml
* Silence property override log
* Rework configuration
* Unify configuration using the typesafe.config library
* Add configuration option for public address
* Configuration is now loaded from application.conf rather than worldserver.ini
* Refactor PsLogin and remove unnecessary logging
* Move pslogin into net.psforever.pslogin namespace
* Fix coverage
* removing stamina update business logic from the Player class
* I really need to sort this out
* implant changes: deactivate when changing armor or loadouts and when zoning; extra details for state management when being jammed or fatigued upon loading
* merge with master
* pull rebase on master; moved implant learning/forgetting to PlayerControl, but not yet completely tested
* unhandled case of no implant in a slot during avatar setup
* complete implant deactivation optional?
* moved reference to player control agency for matters concerning stamina updates on damage taken
* - > +
* crouching makes nothing better
* PlayerControl now handles stamina regeneration; handling a case where being fatigued because activation charge is too much leaves the drain timer running
* no more stamina drain message; moving functionality into the class (out of the object) for expediency; handling implant uninitialization differently upon death
* test repairs; redundant messages in player damage and player death logic
* no jumping; riders get a free pass
* making the code uglier
* refactored ZoneActor for external calls; earliest code for calculating Instant Action placement
* created a building definition so that SOI is no longer indeterminate; gave hot spots projector a longer-lasting backup for purposes of activity retention; instant action ramp-up works
* filled out instant action messages; refactored main method
* packet and initial tests for DroppodFreefallingMessage; drop pod definition, packet converter, and consideration in WSA and InterstellarCluster instant action functionality; droppods now work
* duplicated soi information; modified priority of instant action; assigned cavern status; added reset for instant action failure; implant interrupt condition; wrote comments
* no instant action droppods; added messages for cancelling instant action when certain conditions occur; wilderness instant action request
* made generic the entire instant action process to shoehorn the whole of the sanctuary recall process into it; I hope you're happy
* test fix; vehicle hacking fix; no more artificial NTU drain
* escape case for zoning last chance; descriptive mesages condense similar calls
* something of a merge repair
* bog-standard order_terminal amenities now take damage up to the point of destruction and can be repaired from destruction to functional to the point of being fully repaired; this is mostly proof fo concept
* restored proper destruction to FacilityTurrets; extended proper rrepairs to FacilityTurrets; co-opted terminal hacking into TerminalControl; started to expand on hacking protocol, but chose restraint
* changes made thus that a clear Definition hierarchy is established; all of this is in line with making future changes to repair/destroy variables, and making generic the repair code
* all meaningful facility amenities take damage and can be repaired; spawn tubes can be destroyed and the base will properly lose spawns (and show it on the map); some hack logic has been redistributed into the appropriate control objects, following in the wake of repair/damage logic
* deployables are repairable; the TRAP has been converted into a ComplexDeployable; changed the nature of the Repairable traits
* player bank repair and medapp heal has been moved out from WSA into PlayerControl
* overhaul of Progress callback system and the inclusion of player revival as a Progress activity
* begun relocating functionality for hacking outside of WSA; set up behavoir mixin for cargo operations, in order to move vehicle hack function, but did not yet integrate
* integration of the actor behavior mixin for vehicle cargo operations to support the integration of vehicle hacking finalization
* establishing inheritance/override potential of Damageable activity; Generator and SpawnTube map behavior behavior (currently inactive)
* ImplantTerminalMech objects now have a 'with-coordinates' constructor and a deprecated 'no-coordinates' constructor; implants mechs and interfaces are now damageable and repairable, and their damage state can also block mounting
* generators are destroyed and repaired properly, and even explode, killing a radius-worth of players
* destroy and repair pass on deployables, except for explosive types
* Damageable pass; client synchronization pass
* helpful comments
* some tests for damageable and repairable; refined output and repaired existing tests
* enabled friendly fire check and recovery
* handled friendly fire against allied mines; moved jammer code to common damageable behavior
* tweaks to damageability, infantry heal and repair, and sensor and explosive animations
* animations; framework for future vitals events; closing database connections
* adding some deployable tests; fixing a bunch of other tests; History is back
* testing for basic Damageable functions; removing a log message
* finicky animation stuff
* event messages to the Generator to represent health changes
* damage against BFR's is now only used against mythical creatures
* test fix
* constrain angles on specialized yaw and pitch fields
* integrated new Angular Codec into OCM and OCDM of avatar; corrected tests; wrote shortcut for whether a unit is moving (under its own power)
* apply clamp
* Accessed containers while moving
Removed unintentional code duplication outside of conditional.
* power outage failure resulting in the destruction of the original ocm-fixes branch; the git branch refs were corrupted during commit, but the up-to-date changed files remained intact
* eliminating the need for CommonFieldData2 and CommonFieldData2WithPlacement
* in the middle of integrating CommonFieldData into DetailedLockerContainerData (but not standard LockerContainerData); added field for final boolean in WeaponData
* adding faction affinity to Equipment (to match functionality; not becuase I know what ends ...)
* in the middle of integrating CommonFieldData into DetailedCommandDetonaterData
* applying faction affinity to objects at time of terminal production (but to what ends?); required BoomerTrigger and AmmoBox to always report as NEUTRAL internally
* completed the transition from using the old class-based order terminal system to the page-based order terminal system; unused terminal classes have been eliminated
* more closely aligned TelepadDeployableData and InternalTelepadDeployableData
* modifying TelepadDeployableData make it generic and eliminate the need for InternalTelepadDeployableData after fixing a packet converter to utilize DroppedItemData
* modified Terminal operation to branch further outwards from Terminal.Request to the TerminalDefinition's Request method; modified tests to reflect update
* loosening up matrix terminal definition limitations
* modified ProximityTerminal to support a custom defintition class
* rendered the message passing system for Terminals general (Any) in the full scale so it can be specific in instance cases
* refactored and moved both EquipmentSlot and ExoSuitDefinition
* (re)load Favorites each time player (re)spawns
* redid splash damage radial degrade calculations; lasher damage fixed to 6/0 or 2/4 depending on armor; fixed direct hit distance for weapons that act like slash weapons; gave Falcon a valid projectile
* delayed resource silo startup to avoid crash; discovered issue with MAX armor resulting from incorrect manipulation of inventory items during suit transfer
* modifications to consider a specific modifier that exists on some vehicles and armored equipment called Subtract, a DamageProfile that reduces damage due to a set flag; manually controlling damage tick marks rather than relying only on HitHint (from client)
* Tools now have default firemodes (temporary?); ammo gotten from loadouts is always full; loadouts and exo-suits juggle armor values differently on being changed; log messages for damage to players and vehicles
* weapons with one (last) shot need support communicating that one (last) shot
* fixing tests
* correcting the codec for BindPlayerMessage
* changed wording that identifies the damage log entries
* switching exosuit no longer causes butterfingers
* extending exosuit swap armor value changes to infantry loadout changes
* ranges removed from non-vehicle containers
* enabled partial damage functionality to facility turrets
* BindPlayerMessage replacing BattleplanMessage for purposes of depicting the closest AMS spawn point; specific enums in relation to spawning in BPM and SpawnRequestMessage
* rewrote exo-suit switching and loadout switching code, paying extra-special attention for the needs of MAX's
* quick amendment for previous commit
* switching from mount point check to seat checks in VehicleRemover; started refactoring of Cargo functions before realizing how complicated the full effort would be, so these changes are merely wrapping object identification by GUID
* adding a minor server delay to terminal operations
* modified DCData to account for Max suit encoding; modified converters for the avatar that would make use of DCData changes; corrections to enforce that Max/ex-Max always has correct hand showing
* separating initialization-time random GUID assignments from initialization-time fixed GUID assignments by performing them all later