Commit graph

39 commits

Author SHA1 Message Date
Fate-JH
f5ef0a9674
A Bad Filter (#763)
* comment out most of apply-cooldown-to... filter to find out which part of it causes issues with the PR

* fixed resource silo tests

* everything but starting the scheduled task

* shutdown now

* cleaning schedule managed by simple time check
2021-04-15 08:38:31 -04:00
Fate-JH
b548260257
encode and decode of only known packet of the ResetSequence type (#752) 2021-04-07 14:20:51 -04:00
Mazo
7e1466c898 Merge branch 'master-upstream' into llu-2021
# Conflicts:
#	src/main/scala/net/psforever/objects/avatar/PlayerControl.scala
#	src/main/scala/net/psforever/services/galaxy/GalaxyService.scala
#	src/main/scala/net/psforever/services/local/LocalService.scala
#	src/main/scala/net/psforever/services/local/LocalServiceMessage.scala
2021-03-31 23:12:59 +01:00
Mazo
bd9af97bd7 Fix LLU becoming invisible to other players when dying as a vehicle passenger 2021-03-31 21:44:50 +01:00
Jason_DiDonato@yahoo.com
eea549707a added other logging filters, include a custom one for suppressing duplicate messages within a time period 2021-03-25 15:15:51 -04:00
Jason_DiDonato@yahoo.com
9798e27d29 gender was never the same thing as sex; for now, I just need easy pronouns for the log 2021-03-23 12:01:22 -04:00
Fate-JH
71ab35ecab
Hart (#723)
* initial OrbitalShuttleTimeMsg packet and tests; new objects to support HART shuttle transport system

* master was stale

* grouped scheduling for timing orbital shuttle activity

* door lock controls for HART shuttle lifecycle, and specifically for the doors that lead into the shuttle boarding hallway

* separation of the door from the door unlocking logic, which now has to be provided if performed by an outside source; a door that is locked either by bolt, HART routine, or other reason, can now be shut immediately; message when HART is not docked with a corresponding entry hallway door

* better degree of door logic control; all shuttle-related messages have been moved to LocalService; careful managing of 'original state' for the shuttle's cycle

* modification of seat mounting and cargo mounting support entities to expand functionality

* absolutely very little to do with the feature of this branch and a lot to do with yak-shaving; long story short, class inheritance is greatly modified and mountable seats can now accept multiple players if initialized properly

* a lot has changed: distribution of MountableBehavior, mount point information is more complex, vehicles convert differently, the routine of the shuttle timer is initialized differently; you can now successfully utilize the HART shuttle to drop into a zone

* swap of shutle from pad to pad control; tests and comments

* eject players from HART gantry hallway as if passengers dismounting from seat when not boarding through the use of environmental geometry; HART system uses duration from config settings to set scheduler

* rebase to curious master; repairs to vector rotation calculations; regression of mountable changes involving seats with occupancy greater than 1; orbital shuttle as a unique vehicle and amenity; corrected dismount offsets and offset calculations; weird angle of nc hart a building has been properly accommodated; hart events have prerequisite animation states

* rebase with master; looks like rebase with merged_master, which is also a commit

* lots of tests (though not nearly enough); checking the permission group of a shuttle seat no longer creates that seat

* fixing explosions

* fixed the persistence monitor service potentially using non-printable unicode in actor names

* can not use a droppod to gain access to one's own sanctuary

* removed hart facility update that causing open bay doors and beeping

* PR review changes

* fix for aggravation issues
2021-03-23 09:44:10 -04:00
Fate-JH
ab354e49df
Merge pull request #676 from Mazo/capture-terminal-refactor
Capture terminal logic refactor
2021-02-27 07:29:59 -05:00
Fate-JH
fcf0240342
Merge pull request #689 from Fate-JH/ok-boomer
Ok Boomer
2021-02-27 07:29:13 -05:00
Jason_DiDonato@yahoo.com
6e81ee7e95 mechanism for server-driven emp caused by projectiles with emp properties; finalization of geometry elements and tests for geometric tests 2021-02-08 00:20:17 -05:00
Mazo
b4fb0cf855 Amend mounting tests 2021-02-05 23:43:17 +00:00
Jason_DiDonato@yahoo.com
e41e7e7cfa established geometry definitions for damageable object types; fixed rotations; removed unnecessary classes 2021-02-03 19:39:32 -05:00
Mazo
b730f4c974 Update missed param in CaptureFlagDataTest 2021-01-27 22:39:23 +00:00
Mazo
5d8d4609a8 Revised decoding/encoding for CaptureFlagData 2021-01-26 23:03:42 +00:00
Mazo
84a36dc9c8 CaptureFlagUpdateMessage encoder/decoder + tests 2021-01-26 22:56:23 +00:00
Jason_DiDonato@yahoo.com
9d86844396 modified shape structures and operations on said shapes 2021-01-24 23:11:02 -05:00
Mazo
348fa86a40 Refactor capture console logic 2021-01-23 20:30:40 +00:00
Jason_DiDonato@yahoo.com
4304ea7f4d line and line segment intersection code and tests 2021-01-20 22:56:29 -05:00
Fate-JH
563afcdb19
Auto-Repair Tuning (#652)
* difficulty modifiers for repair rate and drain in config

* changed autorepair request-repair pattern to wait until a repair is fulfilled before issuing the next request; moved integration tests for efficiency

* auto-repair accounts for delay between request-reply when schduling next request; base ntu drain is halved; auto-repair mending values adjusted based on wiki times

* moving config call into auto-repair mixin

* deleting the old integration testing code

* obligatory test fixes

* more of the same

* correcting exceptions with calculating subsequent auto-repair time and transfer messaging behavior with WarpGate objects; transfer animation and transfer delivery now have slightly different timing; wrote  bunch of tests that don't work in the standard manner, but do pass
2021-01-12 14:27:33 -05:00
Fate-JH
1a6beba335
Water and Lava (#649)
* planar classes to describe levels of water and other fluid parallel to the ground

* corrected purpose of field in OxygenStateMessage and adjusted the structure of the packet; the environment is now 'regions filled with stuff'; messaging pathways to facilitate drowning and drown recovery in SessionActor, WorldSession, and PlayerControl, as well as the avatar event system

* drowning height is now a featur - recommend going through GlobalDefinitions; fixed lava pool collision to work on pool entry rather than drown level; lava now burns; painbox damage now is directed towards players control agency first

* drowning timer works correctly for both player and vehicle targets; timing and dive depth information for targets defined, but currently originates from a generic location (ObjectDefinition); packet OSM has been modified for efficiency; classes for environment features previously exclusive to drowning mechanics have been pushed towards generic naming conventions

* added sea and pools for z4, z5, z8, and z10

* vehicles now take damage (to the point of destruction) when exposed to lava due the expansion of environmental damage reasons and environmental damage modifiers; modification of the environment exposure lingo; streamlining of vital activity record system

* added basic drown params to flying vehicle definitions; object trait and control mixin for environment interaction, code moved from SessionActor and WorldSession

* separated environmental classes; handled waterlogged flying vehicles, in properties and code; wrote comments and tests

* players mounting vehicles and players subjected to the vehicle transfer process should receive updated drown-state status of the vehicle; drowning should suspend while in the middle of vehicle transfer, in the case the process is long

* increased damage performed to vehicles by lava
2020-12-24 08:04:11 -05:00
Fate-JH
6c93746767
Damage Changes/Explosions (#644)
* created base damage interaction classes and replaced various projectile-based damage that utilized ResolvedProjectile; not refined, maintains redundancy and overloads, but should work

* continuing to reduce the exposure of ResolvedProjectile and replacing it with applications of DamageInteraction, DamageResult, and DamageReason

* removed ResolvedProjectile from the project; adjusted remaining code paths to work around it

* vitals.test became vital.base; no one liked this

* lots of inheritance, polymorphism, and other chicanery; moved around files, so it also looks like more files have changed when they have not (even if they did)

* codecov file correction

* master rebase; vital directory structure changed, so file imports have been modified in several other files; ResolutionSelection has been removed, requiring direct function literal assignment; tests repaired, where necessary; no actual functional change

* code comments

* DamageResult is its own case class now, wrapping around a before/after target and the interaction used in its calaculations; tests have been corrected

* adjusted Player.Die() to demonstrate a damage-based suicide approach

* resolved circular inheritance in projectile damage modifiers; better employed explosion reason, damages players around exploding vehicle as example

* expanded explosions to other object types; exploding is now a flag and the damage is an innate property of the object type; removed advanced references to properties on the damage source, since the damage source is easily accessible; wrote comments; fixed tests

* overhaul to painbox damage to align with normal player damage handling, thus assimilating it properly into the damage system

* future development; normal vector from euler angles; custom proximity test

* where 'innateDamage' should have not replaced 'explosion'

* moved the hitPos for the generator test; attempting to imrpove the reliability of the auto-repair integration tests (didn't ...)

* spelling and private val
2020-12-08 14:32:42 -05:00
Jason_DiDonato@yahoo.com
924c78ea0b promoted generator destruction to flag when to power down facility 2020-10-21 19:22:33 -04:00
Jason_DiDonato@yahoo.com
54f6588439 comments and tests; generator now passes state information to owner, owner composes messaging; can not set faction information if building does not have ntu 2020-10-21 12:35:13 -04:00
Jason_DiDonato@yahoo.com
4a0805b698 logic for door opening has been exorcised from SessionActor into DoorControl 2020-10-13 18:47:05 -04:00
Jason_DiDonato@yahoo.com
69b3a8a4bf each zone now has access to its own bundle of task resolver objects; primary changes to reflect this has been the simplification of item moving parameters; tests corrected 2020-10-10 09:16:56 -04:00
Fate-JH
e58f1d5987
Amenity Auto-Repair (#594)
* working proof of concept for ntu request/flow

* ntu is now measured in Float rather than Int; adjusted the type declarations in ChatActor, as it was complaining

* added auto repair information for amenities; modified terminal working example to include periodic repair timer

* crude power state acknowledgement exchange between ntu silo and building, following by building and amenities; better management and control over auto-repair

* separated auto-repair from terminal control; resource silo publishes an appropriate power state message upon formal start-up

* various Damageble objects have been granted auto-repair; doors no longer report no event for intercepting unhandled messages

* documentation and comments; unit tests and integration tests for AmneityAutoRepair, ResourceSilo, and BuildingActor

* merge plus some fixes

* addition checks for auto-repairing cavern equipment and for auto-repairing un-owned equipment
2020-10-03 00:13:41 -04:00
Fate-JH
e4664d1727
37% Less Galaxy Gunship (#596)
* galaxy gunship incoming damage reduction modifier

* health damage, not shield damage
2020-10-02 15:10:13 -04:00
Jakob Gillich
407429ee21 Networking
The game uses a UDP-based protocol. Unlike TCP, UDP does not guarantee that
packets arrive, or that they arrive in the correct order. For this reason,
the game protocol implements those features using the following:

* All packets have a sequence number that is utilized for reordering
* Important packets are wrapped in a SlottedMetaPacket with a subslot number
* RelatedA packets ae used to request lost packets using the subslot number
* RelatedB packets are used to confirm received SlottedMetaPackets

All of these go both ways, server <-> client. We used to only partially
implement these features: Outgoing packet bundles used SMPs and could be
resent, but not all packets were bundled and there was no logic for requesting
lost packets from the client and there was no packet reordering, which resulted
in dire consequences in the case of packet loss (zoning failures, crashes and many
other odd bugs). This patch addresses all of these issues.

* Packet bundling: Packets are now automatically bundled and sent as
  SlottedMetaPackets using a recurring timer. All manual bundling functionality
  was removed.

* Packet reordering: Incoming packets, if received out of order, are stashed and
  reordered. The maximum wait time for reordering is 20ms.

* Packet requesting: Missing SlottedMetaPackets are requested from the client.

* PacketCoding refactor: Dropped confusing packet container types. Fixes #5.

* Crypto rewrite: PSCrypto is based on a ancient buggy version of cryptopp.
  Updating to a current version was not possible because it removed the
  MD5-MAC algorithm. For more details, see Md5Mac.scala.
  This patch replaces PSCrypto with native Scala code.

* Added two new actors:
  * SocketActor: A simple typed UDP socket actor
  * MiddlewareActor: The old session pipeline greatly simplified into a
    typed actor that does most of the things mentioned above.

* Begun work on a headless client

* Fixed anniversary gun breaking stamina regen

* Resolved a few sentry errors
2020-09-26 23:58:09 +02:00
Fate-JH
d70d23deb8
modifiers for flak burst (#579) 2020-09-21 23:18:11 -04:00
Fate-JH
7626c8e6c9
Lightweight Locker (#578)
* object registration adjustments for players and avatars and lockers (especially lockers)

* refactored locker container

* modifications to fields and method names for guid-related files; SpecificNumberSource created

* locker item display; proper item insertion into locker-space and searchability of that locker-space

* proper item removal from locker-space, including swap-items on other insertion tasks

* comments and tests; adjusted avatar/player registrations; allowed for restriction in the SpecificNumberSource; renamed CataloguedInventory to LocallyRegisteredInventory, and made internal object registration work

* accommodations for RequestDestroy, to allow the locker's Clear button to work; modification of expectation for resolving projectiles through ValidObject
2020-09-15 19:46:56 -04:00
Fate-JH
78f970a4ac
Spud Gun (#572)
* initial spiker logic for charging mechanic; it's functional but doesn't work exactly by the numbers say it should

* no damage degrade for radial damage; charge mode features, including damage on the projectile and fire mode on the weapon; the Spiker's damage output is pretty close to accurate

* ammunition drain timer works correctly; no need for the progress completion function; new formatting sucks

* dial back on fire mode changes; stop excessive weapon discharge case; comments

* master merge; test fix (when did it change?)

* test repair; fixed unintentional side-effect of instantiation of StanDamProf
2020-09-05 09:08:18 -04:00
FateJH
89a7f180dd merge rebase hell 2020-08-26 14:40:16 -04:00
FateJH
bb3c0f5d91 test repairs 2020-08-26 11:59:37 -04:00
FateJH
f627571f0e eliminated multiple timers for a single aura effect; added comments; added tests; fixed tests 2020-08-26 11:48:42 -04:00
FateJH
89d7aea633 separated aggravation behavior and uara management behavior; moved files into packages and deleted old files 2020-08-26 11:45:07 -04:00
FateJH
97e64d5edc timing and damage tuning around: standard, reinforced, max; plasma grenades, dragon 2020-08-26 11:45:02 -04:00
FateJH
e5d0690c42 introduction of aggravated damage properties and modification of damage pathways such that 'aggravated' is treated as a unique damage type 2020-08-26 11:44:57 -04:00
Jakob Gillich
cf9e4ea194 Fix MAX subtype numbers 2020-08-26 06:19:00 +02:00
Jakob Gillich
f4fd78fc5d Restructure repository
* Move /common/src to /src
* Move services to net.psforever package
* Move /pslogin to /server
2020-08-26 06:19:00 +02:00