Commit graph

1128 commits

Author SHA1 Message Date
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
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
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
Mazo
be66330ad5 Disable galaxy gunship due to low populations while flak and some AA counters are not functioning properly 2020-07-22 17:25:09 +02:00
Mazo
f2b1d64c3d Give all facilities cavern equipment + vehicle module benefits 2020-07-22 17:25:09 +02:00
Mazo
eabf1beb02 Disable airpad / ground silo repairing functionality on vehicles that have been damaged within the last 5 seconds 2020-07-22 17:25:09 +02:00
Mazo
449c727be7 Disable damage on spectators (e.g. pain fields) 2020-07-22 17:25:09 +02:00
Mazo
8228760b43
Merge pull request #517 from jgillich/cli
Add command line interface
2020-07-16 00:09:17 +01:00
Fate-JH
3ffd16852d
Merge pull request #518 from jgillich/nick-ams
Temporary AMS & GG changes based on community needs.
2020-07-14 15:06:28 -04:00
NickPSF
bcdc4fd11f
Temporary AMS & GG changes based on community needs.
**AMS Changes:**

- Max health increased from 3000 to 5000
- Max shields increased from 600 + 1 to 1000 + 1
- Expert Hacker jacking time increased from 15 to 30 seconds
- Advanced Hacker jacking time increased from 20 to 40 seconds

**Galaxy Gunship Changes:**

- Max health increased from 6000 to 9500 while it lacks its damage reduction mechanic.
2020-07-14 20:49:12 +02:00
Fate-JH
4cc8278f2f
Deployment and NTU (#510)
* moved deployment state management and ntu management into vehicle control agency; resource silos need coordinates

* compartmentalization of ntu behavior; end-of-life vehicle behavior; initial state of ntu behavior vehicle during zone loading

* warp gates now have specific ntu granting powers; resource silos have specific ntu acceptance powers; users are forced to process set current avatar at least once during the interim period

* compartmentalized the process of transferring ntu; the ant sends messages to the warp gate and the warp gate responds; the ant sends messages to the resource silo, the silo responds, and then the ant returns a second response; the matter of ntu transferrence was refactored for future accessibility for the bfr siphon

* refactor to single basic transfer behavior out from ant ntu transfer behavior; adding behavior to warp gates and silos

* rebase onto master merge

* correcting tests; eliminating redundancies in end of life of deployed vehicles by patching a match case

* ntu low moved to a function

* fixing test (order of messages)

* rebase merge resolutions
2020-07-14 14:13:18 -04:00
Jakob Gillich
752a195178
Add command line interface
Comes with a flag to run flyway baseline automatically
2020-07-14 19:31:59 +02:00
Jakob Gillich
e0defe8240
Persistence #1 featuring quill (#508)
* Add .scalafmt.conf

* Adopt quill for database access

* Removed postgresql-async
* Refactored all instances of database access
* Creating duplicate characters of the same account is no longer possible
* Rewrote large parts of LoginSessionActor

* Implement migrations

* Move overrides into subdirectory

* Make usernames case insensitive

* Use LOWER(?) comparison instead of storing lowercased username

* import scala.util.{Success, Failure}

* Add config and joda-time dependencies

* Add sbt-scalafmt

* Use defaultWithAlign scalafmt preset

* Format all

* Add scalafix

* Remove unused imports

* Don't lowercase username when inserting

* Update readme

* Listen on worldserver.Hostname address

* Remove database test on startup

It could fail when the global thread pool is busy loading zone
maps. Migrations run on the main thread and also serve the
purpose of verifying the database configuration so it's fine to
remove the test altogether.

* Refactor chat message handlers, zones

What started as a small change to how zones are stored turned
into a pretty big effort of refactoring the chat message handler.
The !hack command was removed, the /capturebase commandwas added.

* Expose db ports in docker-compose.yml

* Silence property override log

* Rework configuration

* Unify configuration using the typesafe.config library
* Add configuration option for public address
* Configuration is now loaded from application.conf rather than worldserver.ini
* Refactor PsLogin and remove unnecessary logging
* Move pslogin into net.psforever.pslogin namespace

* Fix coverage
2020-07-13 23:54:05 -04:00
Mazo
88b194fde2
Correctly show ANT capacitor on zoning (#504)
* Correctly show ANT capacitor on zoning

* Remove log

* Move vehicle shields / ntu capacitor packets to HandleSetCurrentAvatar
2020-07-02 20:16:56 -04:00
Fate-JH
fa7342264e
Passenger interim (#501)
* properly handle interim and, thus, persistence for a pure passenger

* persistence maintained during relog; message handling case reset at death
2020-06-29 14:03:51 -04:00