Commit graph

21 commits

Author SHA1 Message Date
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