Commit graph

1140 commits

Author SHA1 Message Date
Renovate Bot 23b63eb727
Add renovate.json 2020-09-01 17:54:22 +00:00
Jakob Gillich 8d332500c6 Fix lattice 2020-08-28 19:18:21 +02:00
Fate-JH de87845bfe
Aggravation (#529)
* introduction of aggravated damage properties and modification of damage pathways such that 'aggravated' is treated as a unique damage type

* initial work and tests for AggravatedDamageMessage

* wrote aggravated damage properties into the definitions of projectiles that convey them; basic workflow for aggravation from projectile damage is in place, but not tested

* merge rebase resolutions

* grenade projectile flag on projectile definition; better timing control on aura behavior and integration with player control

* timing and damage tuning around: standard, reinforced, max; plasma grenades, dragon

* work on starfire damage profile; moved aura behavior into own folder and creates an aura container object; extended aura behavior to vehicles; applied target-control to aggravation effect

* woring Starfire damage calculations; projectiles have open-ended quality modifier

* working comet calculations

* separated aggravation behavior and uara management behavior; moved files into packages and deleted old files

* moved aggravation damage into damage implementations of turrets and vehicles, rather than directly into ther immediate control agencies; revamp projectile quality modifiers; comet now does initial damage and one less tick of aggravation; the implementation progression of damageable entities is different now

* eliminated multiple timers for a single aura effect; added comments; added tests; fixed tests

* aura effects that will run for longer will not get replaced by aura effects that would end sooner

* merge rebase; accommodation for suppressing aura where no aura should be displayed; new radial degrade calculations

* test repairs

* merge rebase hell

* dragon fireball burn damage modification

* fireball burn effect should always be 1 as long as it does damage, despite radial degrade
2020-08-28 00:32:45 -04:00
FateJH 2b6ec727f2 revert radial damage calculations 2020-08-28 00:30:23 -04:00
Jakob Gillich c0e3363fe4 Set warp gate factions 2020-08-28 06:16:32 +02:00
Jakob Gillich 08eed0f331 More fixes
* Fix !list not distinguishing between players and corpses
* Fix /worldkick not working
* /silence no longer responds with a message window
* Fix 96-99 zone map files
* Fix implants not resetting after being jammend
* Fix MAXes requiring the wrong certs
2020-08-28 06:16:32 +02:00
Jakob Gillich 8a0a7d8539 Make tells case insensitive 2020-08-27 16:45:43 +02:00
Jakob Gillich e34f96ce18 Fixes
* RefreshLoadouts no longer queries loadoads from the database
* /gmtell no longer sends to self
* Set AMS spawn timer to 10 seconds
* Fix medkit cooldown display
* Fix wrong max type being purchased
* Fix implants not being locked when fatigued
* Fix implants progress bar
* Make tells case insensitive
2020-08-27 07:58:05 +02:00
FateJH 37af460a89 fireball burn effect should always be 1 as long as it does damage, despite radial degrade 2020-08-26 22:42:07 -04:00
FateJH 285d5c94ae dragon fireball burn damage modification 2020-08-26 19:10:43 -04:00
Jakob Gillich 63dea5af05 Eliminate return from AvatarActor 2020-08-26 22:56:12 +02:00
Jakob Gillich ce641cffbd
Test server pls 2020-08-26 22:27:08 +02:00
Jakob Gillich 20011691f0 Fix period conversion exception
"Cannot convert to Seconds as this period contains months and months vary in length" during login
2020-08-26 21:13:26 +02:00
FateJH 89a7f180dd merge rebase hell 2020-08-26 14:40:16 -04:00
Jakob Gillich 06e63dd960 Fix psadmin, artifact upload 2020-08-26 20:04:00 +02:00
FateJH bb3c0f5d91 test repairs 2020-08-26 11:59:37 -04:00
FateJH e27e827552 merge rebase; accommodation for suppressing aura where no aura should be displayed; new radial degrade calculations 2020-08-26 11:59:37 -04:00
FateJH ac5e26f37a aura effects that will run for longer will not get replaced by aura effects that would end sooner 2020-08-26 11:48:42 -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 fc89355acf moved aggravation damage into damage implementations of turrets and vehicles, rather than directly into ther immediate control agencies; revamp projectile quality modifiers; comet now does initial damage and one less tick of aggravation; the implementation progression of damageable entities is different now 2020-08-26 11:48:41 -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 a79fc6bd2f working comet calculations 2020-08-26 11:45:05 -04:00
FateJH 80c1a34fb0 woring Starfire damage calculations; projectiles have open-ended quality modifier 2020-08-26 11:45:05 -04:00
FateJH 66eb3b5b95 work on starfire damage profile; moved aura behavior into own folder and creates an aura container object; extended aura behavior to vehicles; applied target-control to aggravation effect 2020-08-26 11:45:03 -04:00
FateJH 97e64d5edc timing and damage tuning around: standard, reinforced, max; plasma grenades, dragon 2020-08-26 11:45:02 -04:00
FateJH d149e07e89 grenade projectile flag on projectile definition; better timing control on aura behavior and integration with player control 2020-08-26 11:45:00 -04:00
FateJH 2054586a0d merge rebase resolutions 2020-08-26 11:44:59 -04:00
FateJH 811c7b09b5 wrote aggravated damage properties into the definitions of projectiles that convey them; basic workflow for aggravation from projectile damage is in place, but not tested 2020-08-26 11:44:58 -04:00
FateJH 5c8331ed9b initial work and tests for AggravatedDamageMessage 2020-08-26 11:44:58 -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 51d71ed732 Weapon-based MAX cooldowns 2020-08-26 06:19:00 +02:00
Jakob Gillich 8ea2ffad0f Fix loadouts not being deleted 2020-08-26 06:19:00 +02:00
Jakob Gillich cc38ee3f3f Bug fixes
* /certadd retains zero-cost certs
* Fix squad chat
* Fix tells showing wrong name
* Add workaround for premature resecure messages
2020-08-26 06:19:00 +02:00
Jakob Gillich eeae2073ac Fix deployables not working when cert is attained after login 2020-08-26 06:19:00 +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 0429003863 Auto publish docs 2020-08-26 06:19:00 +02:00
Jakob Gillich 67f6287a2b Build docker image on push only 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
Fate-JH 89a30ae6f6
armor value updated (#533) 2020-08-25 21:28:04 -04:00
Fate-JH d46110874e
Implied Swap Item (#530)
* by deleting a swap item for the entirety of a zone, avert the end of the world
* drop the item you are holding when you die
2020-08-24 04:36:20 +02:00
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
Jakob Gillich 1efbedcf8e Fix coverage exclusions 2020-08-22 16:19:13 +02:00
Jakob Gillich 38cfa891fe Add GitHub workflow 2020-08-22 16:19:13 +02:00
Jakob Gillich ff8f787b81 Add Sentry 2020-08-22 16:19:13 +02:00
Jakob Gillich 3345e56b38 Building persistence
Buildings will now persist their faction in the database. At least
that's what I want you to believe this change is.

What it actually is: A rework of InterstellarCluster and groundwork
for further reworks.

InterstellarClusterService: This is the old InterstellarCluster, but
as a service (it has always been one in secret). It was converted to
a typed actor and it now handles all spawn point requests.

ZoneActor: Basically ZoneControl, but as a typed actor. It's more of a
stub right now, the eventual goal is to have it own the `Zone` object
rather than the other way around.

BuildingActor: BuildingControl, but as a typed actor.

Also includes some minor improvements to ChatActor and sets
SupervisorStrategy.restart for all typed actors (which is the default
for classic actors, but not for typed actors - we may want to get more
sophisticated here in the future).
2020-08-22 16:19:13 +02:00
Jakob Gillich 4634dffe00 ChatActor
This removes roughly 1k LOC from WorldSessionActor and moves
them to a new ChatActor. That was the initial goal anyway, but it
wasn't that simple. There was no clear location to put this new actor,
I didn't want to put it in pslogin since it isn't part of the "login server"
(and neither is WSA). But since the new actor would have to talk to
WSA and common does not depend on pslogin, I had a choice of
putting more actors in pslogin or putting everything in common. I
chose the latter.

ChatActor and SessionActor (formerly WorldSessionActor) now live
in `common/actors/session`. Since WSA also depends on other
actors in pslogin, most of the pslogin code was moved to either
common/login or common/util. PsLogin as the main entry point
remains in pslogin since having the main code compile to a library
has some advantages, and it will allow us to produce binaries
for distinct login/world servers in the future if desired. For a second
take, I'd suggest moving common to /src in the root directory.

This change is enabled by a new immutable `Zone` object that is
passed from SessionActor to ChatActor. Most of its members are
still mutable references, and the code at the moment does depend
on this being the case. Changes to the session object in
SessionActor are forwarded through a SetZone message to
ChatActor. As we split out more code into actors, we could
use EventBus or typed Topic's instead.

Also included is a reworked ChatService that was converted to a
typed actor and uses the built-in Receptionist facility for service
discovery. By receiving the session object from ChatActor, it can
be much smarter about who to send messages to, rather than
sending all messages to everyone and having them figure it out.
But as this session object is not updated, it can only use static
properties like player name and faction and not fluid properties
like position.

The following chat commands were added:
command, note, gmbroadcast, [nc|tr|vs|broadcast, gmtell, gmpopup
and !whitetext
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
Jakob Gillich ed4a52025c Fix forwarding message to use IP instead of host name
INetAddress#getHostString can return both an IP address
and a host name depending on how thclass is initialized.
2020-07-25 04:54:03 +02:00
Jakob Gillich 4dd24ff01a Fix packed binary
I moved PsLogin into a package but didn't update `packMain`
2020-07-23 21:53:45 +02:00