Commit graph

26 commits

Author SHA1 Message Date
Fate-JH
00a6f2abe1
Multiple Game World Ports (#1206)
* configuration for the game world server to connect to clients across a number of socket-port connections following a simple numerical load balancing policy

* combining port management into the sector pane

* mostly spelling issues
2024-07-01 11:20:49 -04:00
Fate-JH
23c4310258
External Doors (#1190)
* defining all doors; moving around classes related to environment fields; separating global definitions into a main file and implementation files

* logic for declaring door occupants/users as inside or outside or within an open door using door declarations, geometry and environment fields, and math; divided the remaining object type definitions into their own files and removed those from the main global definitions file

* integrating inside/outside considerations into server-calculated damage; clarifying the sidedness comparison rules; extending inside outside considerations for deployables and vehicles

* projectiles that, by definition, are allowed to damage targets through walls (radiation_cloud, with DamageThroughWalls) regardless of sidedness; any unflagged radiation_cloud must be on the side as its target; fixed chat bang-commands not being executed

* added sidedness to different entities, both in general and depending on the zone where it matters

* removed three too-specific fields on the door's definition, resulting in nontrivial rewrites that resulted in all amenities being able to project an environment field onto the block map, to do with whatever it needs

* wrote WithEntrance interaction to be able to switch between normal / debug modes; telepad and router sidedness support; fixed bang-commands; fixed issue with proessing player mounted state; added zone entity discovery feature (unused)

* empty character literal is a digit somehow

* adding way to allow bang-commands that only a gm would have access to for everyone
2024-03-29 00:33:38 -04:00
Fate-JH
e9daae5802
More Experience Fixes (#1163)
* revenge experience now rate down and capped; fixed issue with the tail of an empty list

* fixed column name difference between database and persistence objects
2024-01-17 23:32:54 -05:00
Fate-JH
85957670ba
Log-Related Fixes (2023-12-5) (#1149)
* tighened up the iterative processing aspects of kill assist calculations; wrong database query for assists; assumption of flag being acquired when it really wasn't; assumption of facility capture start when no longer represented

* mainly, the spacing

* augmented the calculations for bep

* adjustment to calculations for the long life bonus experience and to the lifespan experience limits
2024-01-08 12:59:58 -05:00
Fate-JH
7f61206ddd exp for ntu and ntu silo operation restored; message about progress system given more limited scope; adjusted cep for llu carrier kill; kd accumulates by kills and maintains between lives; ifflock does not discriminate rehack faction; no rewards for killing allies, or self 2023-11-07 16:07:08 -05:00
Fate-JH
d3392ecab2 QoL changes; event chat messages for exp when in debt; different calculations for sep; timestamps for progress system start and clear; hopefully proper cleanup for progress system 2023-10-30 23:53:43 -04:00
Fate-JH
e9dbd5f259 importing controlled implementation changes from original exp-for-kda branch; assist kill experience rewarded
importing controlled implementation changes from original exp-for-kda branch; code for contributions from prior activity, but will be adjusting to new contribution methods

kill contributions should work; even if they don't, need to put this away for now

extensivwe changes to the way OwnableByPlayer manages owner user information due to uniqueness, that changes a lot of vehicle and deployable code; fleshing out experience calculation procedure for future testing

events for mounting and dismounting of both passenger and cargo; id'ing the installation of an amenity (vehicle or facility); separation of kill/assist experience and support experience calculations; retention of kill record which allows for the calculation of menace

support experience accumulates and is given to the user in gradual provisions

rewarding facility capture through cep; not fully tested yet; math sucks

sort of cep to bep consditions for squad facility capture; bep deposit for ntu silo activity

early reivision for v010; recording ongoing shots fired and landed

restored bep from ntu deposits into resource silos; updating statistics in the database regarding kills and related stats including weapons; updated history management; basic experience calculation changes

all rewarded support events are accounted for

command experience calculations upon facility capture or resecure

corrected database migrations

most of the code for the play or progress system

statistics window updates for exosuits to report kills; killing an llu runner gives cep; moving play or progress functionality to a bang command rather than piggybacking setbr; bep is no longer too high by error
2023-10-17 14:06:21 -04:00
Fate-JH
2b6edc25fb
No Work (#1116)
* make the timer for outbound packet bundling a fallback option rather than a primary control for outbound timing

* better emergency timer determination

* eh

* master merge and light changes
2023-07-26 23:07:24 -04:00
Fate-JH
70c4393e9b
Misc Fixes (#1076)
* new paradigm for character creation detection of old characters by name; vehicle channel when seated in vehicle (ant); second wind activates as long as non-fatal damage n>=25; coordinated sequence of deployables whose UI is being updated

* the max timer will assert itself through death and respawn

* in theory, the tests are fixed; that may change from execution to execution, as is usual

* adjusted how the mechanized exo-suit timer asserts itself when in conjunction with prior exo-suit purchase orders

* players in seats have their mounted information shortened in a more straightforward, less fault-prone way; stamina recharge command shortened

* fixed vehicles not loading when player has no GUID; deactivated squad features (may cause trouble for the Router, but we'll manage); removed lingering, unnecessary radiation tick

* even if the player seems to be standing completely still, send an update packet once in a while (1500ms)

* removing an active router will always clean up an active router telepad with which it is paired

* better timing for refresh of the character select screen; potential to stop moving vehicles from anothers's perspectives

* block mounting while vehicle in motion, or in control; if ejected early, end control early

* block mounting while vehicle in motion, or in control (2)
2023-05-15 22:24:35 -04:00
Fate-JH
a1cf6c2701
Reduced Upstream/Downstream Load (#1052)
* an attempt to space out the player upstream

* some data sterilizing

* when a player is respawning, other players do not send their own update PSM's

* always display players in their proper locations when nearing their view, even if they have been stationary this whole time

* fixing configuration file and warnings
2023-04-22 00:03:13 -04:00
Fate-JH
24ee12294a
Instant Action, Just Add ... (#1065)
* modified the instant action algorithm; added configuration flags for ams instant actioning and crashing third party activity

* experimental droppod feature that was abandoned as too complicated
2023-04-21 01:12:25 -04:00
Fate-JH
5b0203850d
Not Really a Door Opener (#1063)
* the medical applicator will not long open doors from a distance unless we want it to do that

* fixing tests
2023-04-18 20:43:02 -04:00
Jakob Gillich
b69e13c3ee
fix enum keyword warnings 2023-04-14 14:12:51 +00:00
Fate-JH
1369da22f0
Login Location Persistence (#1009)
* database tables and persistence entities; attempt to retrieve values from database and apply them to the player avatar character; resolve spawn options in sanctuary in different manner

* minor database table field adjustments; saving to database when account persistence ends; properly loading from and initializing with data queried from the database; suicide better supported

* converting the zoning method/status tokens; better support of zoning handling of persistent locations; messages that explain the consequences of login-spawning into an invalid location

* adding triggers for the 'saved char' message, both those prompted by game activity and a 'reassurance' message; also, actually save the char data sometimes

* intervals for timing charsaved message set by configuration file now

* corrections to spawn tests and tables

* random sanctuary spawn in more places than one
2022-10-11 11:16:12 -04:00
Fate-JH
ced228509c
Intercontinental Gaslighting (#998)
* diversified building management by injecting behavior; allocated entries for the intercontinental lattice and have begun connecting warp gate entities along the intercontinental lattice; beginnings of warp gate broadcast operations; disabled free merit commendations

* allow transit across a predetermined warp gate path, i.e., proper zone-to-zone gating

* game variables for modifying warp gate behaviors; moved choice of building game logic into overloaded constructor; only handle the capitol fore dome in more realistic conditions; warp gate state restored primarily b y internal game logic; changes to which and how gates are declared inactive or broadcast at startup

* initial work on WarpgateLinkOverrideMessage, even if the packet doesn't seem to do anything; added basic service for rotating cavern zone locks via the galaxy messaging service; moved error checking for lattice connectedness

* cavern closing warning messages queued

* starting to set up ChatActor for /zlock command, and added /setbaseresources; conditions for correcting broadcast conditions of a locking warp gate pair; system for rotating through locking and unlocking cavern zones only uses two timers now and has an advance command that speeds to the next closing warning or cavern opening

* expedited cavern rotations available via '/zonerotate' and '!zonerotate [-list]'; '/zonelock' should work for caverns, though distorting the rotation order to accommodate the cavern being unlocked; configuration arguments exist for the setup of cavern rotations and for the rotation itself

* populated cavern lattice connections for a specific rotation order; warp gates will properly activate and deactivate and modify their neighborhood information based on which stage of the rotation; fed up with the blockmap going wrong; added a sanity test for the cavern lattice; Spiker damage calculation changes

* adjusted local variable requirements of BuildingActor to integrate retained actors more closely with the Behavior; on the other hand, another value is passed around the logic

* bug fixes observed from issues found in logs since 20220520; halved the spawn height when gating to a cavern warpgate

* cavern benefits are now represented by enumeration classes rather than additive binary numbers; when facilities change state, benefits are evaluated; when caverns rotate, benefits are evaluated; cavern facility logic added; attempted handling for inventory disarray conditions (untested)

* broke down tabs for easier navigation; added test to stop spawning of cavern equipment when not otherwise permitted

* code comments, everywhere; correcting issues with cavern rotation timing reports

* but is it flying?
2022-06-14 02:21:24 -04:00
Mazo
e093925bf5 Remove unused import 2021-06-13 21:12:04 +01:00
Mazo
0bb681babc Load config with ConfigSource.default to allow environment variables or java opts to override config values 2021-06-13 15:36:02 +01:00
Jakob Gillich
91e76d2397 Add base certifications config option 2021-05-22 07:43:28 +02:00
Fate-JH
262b7d2ec6
Forget How to Wear Clothes (#806)
* in forgetting an exo-suit certification, one must not be wearing that type of exo-suit afterwards

* making the conditional more straightforward

* fixed issue with purchase times; can now share max purchase cooldowns
2021-05-06 07:31:40 -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
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
47d0013e42 Add starting rank and XP rate config options 2020-10-11 14:51:49 +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
Jakob Gillich
0fdd3a0133 Add unprivileged-gm-commands config option
Also replaced !kick with /worldkick (CMT_KICK)
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
Renamed from common/src/main/scala/net/psforever/util/Config.scala (Browse further)