Commit graph

210 commits

Author SHA1 Message Date
Jakob Gillich
3bdc681c9d Avatar Persistence
* 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
2020-08-22 16:19:13 +02:00
Fate-JH
144804139f
Maelstrom (#520)
* 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
2020-07-28 00:02:43 -04:00
Fate-JH
4cc8278f2f
Deployment and NTU (#510)
* 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
2020-07-14 14:13:18 -04:00
Jakob Gillich
e0defe8240
Persistence #1 featuring quill (#508)
* 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
2020-07-13 23:54:05 -04:00
FateJH
111fa1b574 initial packet work and tests for: DataChallengeMessage, DataChallengeMessageResp, SimDataChallenge, and SimDataChallengeResp 2020-06-12 00:18:35 -04:00
Fate-JH
181fdb9c84
Stamina / Implants (#485)
* 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
2020-06-10 09:27:12 -04:00
Fate-JH
a23643b240
Instant Action / Recall to Sanctuary (#348)
* 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
2020-04-16 21:21:33 -04:00
Fate-JH
c2f6baf551
Destroy and repair (#346)
* 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
2020-04-14 15:17:32 -04:00
FateJH
03bc52f52d moved PlanetSideGUID from .packet.game to .types; project threw a hissy fit 2020-01-09 15:32:19 -05:00
FateJH
6c76997675 adjusted CommonFieldData to support jammering effect flag; fixed tests; made jammering sound and status contingent on state, but made cancelling sound and status always call up 2020-01-01 09:21:17 -05:00
FateJH
515de6c507 transforming an 8u field into a 6u field; modifying all other values in code 2019-12-31 23:38:20 -05:00
Chord
d2732550e8 Add additional VNL worlds to test 2019-12-18 13:39:02 -05:00
Chord
a54ee2f0b7 Refine VNL multi-world with new vector codec 2019-12-18 13:39:02 -05:00
Chord
37ad423820 Packet: Fix VNL packet to support multiple servers 2019-12-18 13:39:02 -05:00
Fate-JH
b2ec9d2cb6
Merge branch 'master' into projectiles 2019-11-29 11:19:17 -05:00
Fate-JH
a5a85e6cc3
Upper Body Angle (#292)
* 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.
2019-11-29 11:14:25 -05:00
FateJH
ed7406f25f last minute minor corrections 2019-11-14 13:51:08 -05:00
FateJH
693a3a5d78 proper remote projectile handling; allowances for the Decimator alt-fire mode; initial DamageMessage packet and tests; initial DamageFeedbackMessage packet and tests 2019-11-14 13:06:58 -05:00
FateJH
043512d6a3 proper PSM encoding/decoding; normal and alternate projectile flight handling; auto lock field on projectiles, to indicate whether that projectile should produce a warning message on the target's side when weapon is pointed at the target; business logic in WSA 2019-11-04 09:21:36 -05:00
FateJH
8952ab86f6 events for future expansion; added custom projectile remote client data for OCM packet creation; initial projectile velocity calculation; (too many) details when it comes to Enumerations for projectiles; hooked up theoretical projectile creatiuon, management, and deletion 2019-10-30 22:54:45 -04:00
FateJH
f1c73688f7 removed fire mode override for the Phoenix; added events for loading and manipulation of remote projectiles to AvatarService; ProjectileStateMessage handles projectile data in a simple way; remote projectiles can now be registered and unregistered 2019-10-30 22:53:16 -04:00
FateJH
fa7365e8af modified TrackedProjectileData codec and tests; changed Projectile into a game object; added comments and entries missing from the basic ObjectClass lists; projectile packet converter added but untested 2019-10-30 22:51:26 -04:00
FateJH
56c7c4544e added flags to indicate the projectile must be handled using the server as an intermediary; eliminated obsolete enumeration data; added analysis for the oicw_little_buddy 2019-10-30 22:51:26 -04:00
FateJH
93f2264f61 added enumeration for squad waypoints and changed field datatypes where appriopriate; added assertions to squad detail packet; removed old logic from squad request and squad response enumerations; WSA lfs -> lfsm 2019-10-20 15:34:01 -04:00
FateJH
0c105f3826 repaired some broken tests; LoadoutManager respects length; squad ids attempt to reset only when no players are logged in 2019-10-17 16:27:19 -04:00
FateJH
5a1527ae10 small touch-up 2019-10-08 18:47:03 -04:00
FateJH
3e631657b8 significant refactoring in SquadService operations; properly force the player to leave any participating squad when WSA stops 2019-10-08 09:10:56 -04:00
FateJH
60d65e22d3 added a refactored squad joining entrypoint; initial work and test on SquadWaypointEvent packet; initial work on SquadWaypointRequest packet; squad waypoints up to #5 (squad experience) should be working 2019-10-08 09:10:56 -04:00
FateJH
e5b2efd381 better support for the various ways to join a squad, and the various ways to leave a squad; squad-based messages; jury-rigged 'player wants to join' operations 2019-10-08 09:10:56 -04:00
FateJH
24691ec239 initial work on SquadInvitationRequestMessage packet, originally by aphedox; initial work on packet and tests for CharacterKnowledgeMessage; re-organization of SquadService workflow; prototyping for SquadSwitchboard 2019-10-08 09:10:56 -04:00
FateJH
f81c87ce22 split original aphedox SquadRequestType's into two different enumerations, one for Request and the other for Response; added functionality for more squad interactions; squad favorites, excepting the ability to actually load them onto one's client; extensive comments about SquadResponseMessage events 2019-10-08 09:10:56 -04:00
FateJH
60a11b8c52 sufficient functionality that allows the UI for squads to display properly on squad joining and on squad leaving; clarification for SquadMemberEvent fields; QoL support functionality intergrated into SDDUM streams 2019-10-08 09:10:06 -04:00
FateJH
2a1b051710 completed form of SquadDetailDefinitionUpdate 2019-10-08 09:09:33 -04:00
FateJH
d9619e4185 conversion of variable field SquadDetailDefinitionUpdateMessage mostly complete, handling more than 99% of cases in our captures; modifications to existing test-important SSDUM packet in WSA 2019-10-08 09:09:33 -04:00
FateJH
fd9a3a0216 commit before changes, and to switch gears momentarily; making charId somewhat native to Avatar and its converter, though not yet essential; protype for squad definition loadouts, even though no example of functionality exists; a lot of unimplemented work in preparation to convert SquadDetailDefinitionUpdateMessage from a static format to a variable-field format 2019-10-08 09:09:33 -04:00
FateJH
14bdcb7a7e a lot of squad-relatd setup for little payoff; initial packet and test for SquadMemberEvent, originally by Aphedox; initial packet and tests for SquadState; new SquadDefinitionAction actions; a common initial SquadDetailDefinitionUpdate form 2019-10-08 09:09:33 -04:00
FateJH
9cf1cd92cc communication of the details information for a squad and refactored messaging back to WSA; removed an unused description field from the squad and added two fields that were actually represented 2019-10-08 09:09:33 -04:00
FateJH
5c433204cf initial work and dummy tests for SquadDetailDefinitionUpdateMessage packet; 46-bit certification encoding; indicating four previously unhandled SquadAction types; the squad leader is allowed to move around his squad 2019-10-08 09:09:33 -04:00
FateJH
afb10f57c3 restored SquadDefinitionActionMessage to the past upgrade form that was lost; preliminary objects for squad infromation and squad member position information 2019-10-08 09:07:52 -04:00
FateJH
6fdc617a87 overhaul of ReplicationStreamMessage to make the object form of the packet less of a hassle to compose; updated tests for RSM 2019-10-08 09:07:52 -04:00
FateJH
e44d21520a initial SquadMembershipResponse packet and tests; re-naming some SquadRequestType values 2019-10-08 09:06:57 -04:00
FateJH
f45420b511 ; moved from brnach squad-req, due to branch incompatibilities 2019-10-08 09:06:57 -04:00
Fate-JH
ef65c91740
fixed encodings on DetailedCharacterData, DetailedConstructionToolData, DroppodData, HandheldData, OMFTData, and REKData patterns; added a deprecated pattern for weapon data that permits no ammunition fields; adjusted relevant tests (#263) 2019-08-21 10:36:56 -04:00
Fate-JH
337cfbe5d2
ObjectCreateMessage Alterations, Class Object Adjustments (#243)
* 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
2019-03-03 08:23:30 -05:00
Fate-JH
5fc9e191fe
initial PlanetsideStringAttribute packet and tests (#242) 2019-02-05 21:28:06 -05:00
Fate-JH
4eca226b5b
Damage Fix, and Stuff (#235)
* 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
2018-11-21 20:31:51 -05:00
Fate-JH
7588166ac0
Maxes and Turrets Fixes (#237)
* 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
2018-11-21 20:00:33 -05:00
FateJH
19f77fc9b5 adding comments to OC*M Codec files; modifying converters to take advantage of the new packet field extensions; fixing two pieces of GUID code that relied on throwing Exceptions to function correctly 2018-10-17 12:39:57 -04:00
FateJH
3ac0010052 added params for all DetailedCharacterData regions; wrote a function to handle proper string padding for the latter half of DCD (DCB); repaired all existing DetailedCharacterData tests 2018-10-17 12:39:57 -04:00
FateJH
59569f1a7d added params for all CharacterAppearanceData codec regions; added a param for the three bits of CharacterData not previously supported; repaired CharacterData tests; over-all: padding calculations are not yet adequate 2018-10-17 12:39:57 -04:00