Commit graph

90 commits

Author SHA1 Message Date
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
Mazo 49225271ba Amendment from PR review to unwrap optional boolean 2021-02-10 17:49:28 +00:00
Jason_DiDonato@yahoo.com f41de41d5a added a check called no double lash that should stop players from suffering double lash 2021-02-09 01:56:17 -05:00
Fate-JH e9a7eb3d78
Merge pull request #671 from Mazo/cmt-warp-list
Restore `/warp -list` functionality
2021-02-08 10:38:05 -05:00
Fate-JH b4d6e9172f
Merge pull request #685 from Mazo/bailable-seats
Allow vulture/liberator/ggs seats to be bailed from in motion
2021-02-08 10:36:46 -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 34444f5b66 Allow vulture/liberator/ggs seats to be bailed from in motion 2021-02-05 23:44:00 +00:00
Mazo b4fb0cf855 Amend mounting tests 2021-02-05 23:43:17 +00:00
Mazo 3f1003c51e Allow rexo to mount battlebusses as the driver (fixes #519) 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
Jason_DiDonato@yahoo.com fe386bd79b integrated geometric representation with object definition, explosion target detection, and explosion resolution 2021-01-27 14:33:43 -05:00
Jason_DiDonato@yahoo.com 9d86844396 modified shape structures and operations on said shapes 2021-01-24 23:11:02 -05:00
Mazo 0ff24feffc Fix for map not updating with flag when cavern CC is hacked (resolves #448) 2021-01-23 20:48:17 +00:00
Mazo 348fa86a40 Refactor capture console logic 2021-01-23 20:30:40 +00:00
Mazo 2295338b91 Change painbox initialization warning to info 2021-01-23 20:24:21 +00:00
Jason_DiDonato@yahoo.com 4304ea7f4d line and line segment intersection code and tests 2021-01-20 22:56:29 -05:00
Mazo 677ecd8dd5 Restore /warp -list functionality 2021-01-20 18:59:29 +00:00
Jason_DiDonato@yahoo.com f557ecc13d using the boomer trigger now causes boomers to explode and harm targets 2021-01-12 23:01:08 -05:00
Fate-JH b5fc2ecf70
Middleware (#662)
* removed suspicious shadowing and clarified failure message; customized skipped bundling

* smp history is now a no-less-efficient circular array

* adjustment to bundle dispatch timing; adjustment to inbound sequence reorder queue

* adjustments to handling inbound packets with missing subslots

* unused PacketCoding features

* comments; delayed start of the queue processor task; turned sequence reorder task and subslot missing task into function literals

* optimizations to the inbound re-order by sequence routines by controlling execution flow

* the subslot request timer has been separated from the standard bundling processor; config values for bundling, sequence resolution, and subslot requests in the middleware actor have been included

* replacing func-array with conditional logic
2021-01-12 14:33:44 -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
Jakob Gillich 4c1b9a64d3
Fix thread safety issues
* Synchronize RC5 cipher access
* Replace avatar using message to self in AvatarActor
2020-12-31 04:26:23 +01:00
Jason_DiDonato@yahoo.com a8427542d1 permission to spawn again 2020-12-27 10:24:55 -05:00
Jakob Gillich 0c7ac8f0a9
Fix queueProcessor running on system thread 2020-12-27 15:13:18 +01: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
Mazo bf240295da Fix zipline path data being entirely missing 2020-11-30 22:30:13 +00:00
Fate-JH babd455753
Yet Another Corpse Fix (#637)
* numeric session ids now restored; LoginActor knows about connection address; corpses are barren unless searched

* session and login id/counter moved under server; function literal definition changed

* corpse channel

* trying to fix docker as per set-env requirement changes; I don't know what I'm doing
2020-11-27 09:30:56 -05:00
Fate-JH d24fefaa91
Merge pull request #619 from Fate-JH/powered
Powered
2020-11-16 07:53:22 -05:00
Jason_DiDonato@yahoo.com 1996b1c4a6 capitol force dome status relfects power state (and, thus, NTU) 2020-10-24 09:24:44 -04: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 88684aa1a2 modified !ntu command to improve effect and control; generator has context for ntu rupply and when lacking ntu supply; the resource silo no longer directly controls facility conditions 2020-10-18 10:06:11 -04:00
Jason_DiDonato@yahoo.com e1c5cd90a7 updated ntu -> power workflow by making event progress - the silo will report the ntu state to the generator and the generator will only report on the power state if it is not destroyed; if the generator is destroyed, that is where the messaging will end, until the generator comes back online; the events for these state change are somewhat arbitrary 2020-10-14 22:40:27 -04:00
Jakob Gillich dbdcaeb751 Finally fix list_players command
Originally I made list_players return the full avatar
object rather than just the name string. Which was kind of
a bad idea because certain contents were unserializable
which caused the command to break (sometimes).

Weeks later, I attempted to fix it by returning to the
original behaviour of only returning names. By that point
I had forgotten that PSFPortal was changed to expect an
object.

So here's the final fix. player_list now returns a very
simple object made up of the name and faction id.
2020-10-14 21:44:02 +02: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 ef0d18d214 powered amenity control agent; terminals, proximity terminals, spawn tubes, implant mechs, facility turrets, and painfields demonstrate this behavior 2020-10-13 01:32:41 -04:00
Jakob Gillich 8586710c97 Fix starting command rank 2020-10-11 16:45:53 +02:00
Jakob Gillich 47d0013e42 Add starting rank and XP rate config options 2020-10-11 14:51:49 +02: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
Jakob Gillich 2c1ee82843
Fix gen control owner 2020-10-07 14:44:07 +02: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 2ec28b903f Fix psadmin player_list
It's supposed to return a list of names and not the
whole avatar object.
2020-09-27 22:12:47 +02:00
Jakob Gillich 81492da996 Fix generators not being created 2020-09-27 17:39:27 +02:00
Jakob Gillich 145d78ddcd Fix quitting causing connection drop screen 2020-09-27 17:39:27 +02:00
Jakob Gillich fdc87516c1 Allow multiple OCDM per bundle 2020-09-27 00:45:20 +02: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
Mazo 98e4d1d72f
Merge pull request #588 from Fate-JH/none
_
2020-09-25 15:37:28 +01:00
Jason_DiDonato@yahoo.com a38e6a7651 ensuring that match error conditions are eliminated 2020-09-25 08:04:31 -04:00