2020-08-23 01:26:06 +00:00
|
|
|
# The socket bind address for all net.psforever.services except admin. 127.0.0.1 is the
|
2020-07-14 03:54:05 +00:00
|
|
|
# default for local testing, for public servers use 0.0.0.0 instead.
|
|
|
|
|
bind = 127.0.0.1
|
|
|
|
|
|
|
|
|
|
# The public host name or IP address. Used to forward clients from the login
|
|
|
|
|
# server to the world server. The default value will only allow local connections.
|
|
|
|
|
public = 127.0.0.1
|
|
|
|
|
|
|
|
|
|
# Login server configuration
|
|
|
|
|
login {
|
|
|
|
|
# UDP listening port
|
|
|
|
|
port = 51000
|
|
|
|
|
|
|
|
|
|
# Account usernames that don't exist yet will be automatically created in the
|
|
|
|
|
# database. Useful for test servers and development testing.
|
|
|
|
|
create-missing-accounts = yes
|
|
|
|
|
}
|
2020-05-12 05:11:12 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
# World server configuration
|
|
|
|
|
world {
|
|
|
|
|
# UDP listening port
|
|
|
|
|
port = 51001
|
|
|
|
|
|
|
|
|
|
# The name of the server as displayed in the server browser.
|
|
|
|
|
server-name = PSForever
|
|
|
|
|
|
|
|
|
|
# How the server is displayed in the server browser.
|
|
|
|
|
# One of: released beta development
|
|
|
|
|
server-type = released
|
2020-04-29 18:59:12 +00:00
|
|
|
}
|
2020-05-12 05:11:12 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
# Admin API configuration
|
|
|
|
|
admin {
|
|
|
|
|
# TCP listening port
|
|
|
|
|
port = 51002
|
|
|
|
|
|
|
|
|
|
# The socket bind address
|
|
|
|
|
bind = 127.0.0.1
|
2020-05-12 05:11:12 +00:00
|
|
|
}
|
|
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
# Database configuration
|
2020-08-23 19:27:02 +00:00
|
|
|
# Full reference: https://github.com/jasync-sql/jasync-sql/wiki/Configuring-and-Managing-Connections
|
|
|
|
|
# https://github.com/getquill/quill/blob/master/quill-jasync/src/main/scala/io/getquill/context/jasync/JAsyncContextConfig.scala
|
2020-07-14 03:54:05 +00:00
|
|
|
database {
|
|
|
|
|
# The hostname of the PostgreSQL server.
|
|
|
|
|
host = localhost
|
2020-05-12 05:11:12 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
# The TCP port to connect to the database with.
|
|
|
|
|
port = 5432
|
2020-05-12 05:11:12 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
# The username to connect to the SQL server with.
|
|
|
|
|
username = psforever
|
2020-05-12 05:11:12 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
# The password to connect to the SQL server with.
|
|
|
|
|
password = psforever
|
2020-05-12 05:11:12 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
# The database name to use on the SQL server.
|
|
|
|
|
database = psforever
|
2020-05-12 05:11:12 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
# The SSL configuration of the database connection.
|
|
|
|
|
# One of: disable prefer require verify-full
|
|
|
|
|
sslmode = prefer
|
2020-07-22 15:28:09 +00:00
|
|
|
|
|
|
|
|
# The maximum number of active connections.
|
|
|
|
|
maxActiveConnections = 5
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Enable non-standard game properties
|
|
|
|
|
game {
|
2023-04-21 05:12:25 +00:00
|
|
|
instant-action = {
|
|
|
|
|
# Allow instant action to direct a player to a hotspot-local friendly AMS
|
|
|
|
|
spawn-on-ams = no
|
|
|
|
|
|
|
|
|
|
# If no ally hotspots can be found during instant action, find a friendly spawn closest to an enemy hot spot
|
|
|
|
|
third-party = no
|
|
|
|
|
}
|
2020-10-11 12:37:56 +00:00
|
|
|
|
2021-01-12 19:27:33 +00:00
|
|
|
# Modify the amount of mending per autorepair tick for facility amenities
|
|
|
|
|
amenity-autorepair-rate = 1.0
|
|
|
|
|
|
|
|
|
|
# Modify the amount of NTU drain per autorepair tick for facility amenities
|
|
|
|
|
amenity-autorepair-drain-rate = 0.5
|
|
|
|
|
|
2021-05-06 11:31:40 +00:00
|
|
|
# Purchases timers for the mechanized assault exo-suits all update at the same time when any of them would update
|
|
|
|
|
shared-max-cooldown = no
|
|
|
|
|
|
2023-05-16 02:24:35 +00:00
|
|
|
# Purchases timers for the battleframe robotics vehicles all update at the same time when either of them would update
|
|
|
|
|
shared-bfr-cooldown = yes
|
|
|
|
|
|
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 13:44:10 +00:00
|
|
|
# HART system, shuttles and facilities
|
|
|
|
|
hart {
|
|
|
|
|
# How long the shuttle is not boarding passengers (going through the motions)
|
|
|
|
|
in-flight-duration = 225000
|
|
|
|
|
|
|
|
|
|
# How long the shuttle allows passengers to board
|
|
|
|
|
boarding-duration = 60000
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-11 12:37:56 +00:00
|
|
|
new-avatar {
|
|
|
|
|
# Starting battle rank
|
|
|
|
|
br = 1
|
|
|
|
|
|
|
|
|
|
# Starting command rank
|
2020-10-11 13:39:44 +00:00
|
|
|
cr = 0
|
2020-10-11 12:37:56 +00:00
|
|
|
}
|
2021-05-22 05:11:02 +00:00
|
|
|
|
|
|
|
|
# Certifications to add to every character. Note that they do not become free, their cost is deducted from the
|
|
|
|
|
# player's certification points. The default base certifications are 0 cost.
|
|
|
|
|
# Values are `Certification` member names.
|
|
|
|
|
base-certifications = [
|
|
|
|
|
standard_assault,
|
|
|
|
|
standard_armor,
|
|
|
|
|
agile_armor
|
|
|
|
|
]
|
2022-06-14 06:21:24 +00:00
|
|
|
|
|
|
|
|
warp-gates {
|
|
|
|
|
# When a gating fails, fall back to sanctuary rather than stay in the same zone
|
|
|
|
|
default-to-sanctuary-destination = yes
|
|
|
|
|
|
|
|
|
|
# When a facility next to a warp gate is captured by one faction,
|
|
|
|
|
# if the facility on the other side of the intercontinental gate pair is owned by a different faction,
|
|
|
|
|
# that gate pair becomes a broadcast warp gate for those factions
|
|
|
|
|
broadcast-between-conflicted-factions = yes
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cavern-rotation = {
|
|
|
|
|
# The number of hours between any given cavern locking and another cavern unlocking,
|
|
|
|
|
# not the total number of hours between a single cavern locking and unlocking.
|
|
|
|
|
hours-between-rotation = 3
|
|
|
|
|
|
|
|
|
|
# How many caverns are unlocked at once during rotations
|
|
|
|
|
# Pay attention to the logs that a corresponding combinational existence found in zonemaps/lattice.json
|
|
|
|
|
# Examples:
|
|
|
|
|
# [a,b,c] with 1 requires 'caverns-a' 'caverns-b' 'caverns-c'
|
|
|
|
|
# [a,b,c] with 2 requires 'caverns-a-b' 'caverns-b-c' 'caverns-a-c'
|
|
|
|
|
# [a,b,c] with 3 requires 'caverns-a-b-c'
|
|
|
|
|
# [a,b,c,d] with 3 requires 'caverns-a-b-c' 'caverns-b-c-d' 'caverns-a-c-d' 'caverns-a-b-d'
|
|
|
|
|
simultaneous-unlocked-zones = 2
|
|
|
|
|
|
|
|
|
|
# A list of zone numbers that correspond to the caverns, in a continuous order
|
|
|
|
|
# in which the caverns are locked and are unlocked.
|
|
|
|
|
# When left empty, the order of the caverns is traversed as-is provided
|
|
|
|
|
# For example, for cavern zones with number [23, 24, 25, 26, 27, 28],
|
|
|
|
|
# the order [23, 24, 26, 23, 24, 25, 26] would eliminate #27 and #28 from the rotation
|
|
|
|
|
enhanced-rotation-order = [23, 24, 25, 26, 27, 28]
|
|
|
|
|
|
|
|
|
|
# If a cavern rotation is forced by the system,
|
|
|
|
|
# the system will attempt to advance only to the first possible closing warning message at five minutes
|
|
|
|
|
# When set, however, the next zone unlock is carried out regardless of the amount of time remaining
|
|
|
|
|
force-rotation-immediately = false
|
|
|
|
|
}
|
2022-10-11 15:16:12 +00:00
|
|
|
|
|
|
|
|
saved-msg = {
|
|
|
|
|
# A brief delay to the @charsaved message, in seconds.
|
|
|
|
|
# Use this when the message should display very soon for any reason.
|
|
|
|
|
short = {
|
|
|
|
|
# This delay always occurs
|
|
|
|
|
fixed = 5
|
|
|
|
|
# This delay is applied partially - fixed + [0,delay)
|
|
|
|
|
variable = 5
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# A delay to the @charsaved message whenever a previous message has been displayed, in seconds.
|
|
|
|
|
# Used as the default interval between messages.
|
|
|
|
|
# It should provide assurance to the player even if nothing happened.
|
|
|
|
|
# Actual database interaction not assured.
|
|
|
|
|
renewal = {
|
|
|
|
|
fixed = 300
|
|
|
|
|
variable = 600
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# A delay to the @charsaved message
|
|
|
|
|
# whenever an action that would cause actual database interaction occurs, in seconds.
|
|
|
|
|
# Actual database interaction not assured.
|
|
|
|
|
# The variability, in this case, serves the purpose of hedging against other activity by the player
|
|
|
|
|
# that would trigger the message again in a short amount of time.
|
|
|
|
|
interrupted-by-action = {
|
|
|
|
|
fixed = 15
|
|
|
|
|
variable = 30
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-04-19 00:43:02 +00:00
|
|
|
|
2023-04-22 04:03:13 +00:00
|
|
|
# Limits the dispatch of PlayerStateMessage packets from a session to its client.
|
|
|
|
|
# Specifically, a packet will only be dispatched based on whether
|
|
|
|
|
# it is to be dispatched over a threshold time after the previous dispatch time.
|
|
|
|
|
# The delay between packets is determined by a distance between the observer player and the target player.
|
|
|
|
|
# Only affects PlayerStateMessage.
|
|
|
|
|
player-draw = {
|
|
|
|
|
# Minimum number of players within a given region before scaling down the range.
|
|
|
|
|
# Total population - population threshold = overpopulation
|
|
|
|
|
population-threshold = 20
|
|
|
|
|
# Number of players over threshold before the reduction in range is scaled down.
|
|
|
|
|
# Population step / overpopulation = range step factor (integer)
|
|
|
|
|
population-step = 5
|
|
|
|
|
# Always send packets regarding target players within the given distance.
|
|
|
|
|
range-min = 50
|
|
|
|
|
# Do not send packets regarding target players beyond this distance. (sq.m)
|
|
|
|
|
# Treat this as an absolute render distance.
|
|
|
|
|
range-max = 550
|
|
|
|
|
# Number of meters reduced from range based on population count over threshold value. (m)
|
|
|
|
|
# Range step * range step factor = total distance to remove from actual distance
|
|
|
|
|
range-step = 25
|
|
|
|
|
# The distances above min-range where different delays are allowed before a successful packet must be dispatched. [m]
|
|
|
|
|
# Test distances against entries to find the last one that is not more than the sample distance.
|
|
|
|
|
# Use the index of that sample distance from this sequence in the sequence `delays` below.
|
|
|
|
|
ranges = [150, 300, 400]
|
|
|
|
|
# The absolute time delay before a successful packet must be dispatched regardless of distance. (s)
|
2023-05-16 02:24:35 +00:00
|
|
|
delay-max = 1500
|
2023-04-22 04:03:13 +00:00
|
|
|
# The time delays for each distance range before a successful packet must be dispatched. [s]
|
|
|
|
|
# The index for an entry in this sequence is expected to be discovered using the `ranges` sequence above.
|
|
|
|
|
# Delays between packets may not be as precise as desired
|
|
|
|
|
# as the heartbeat of upstream packets are measured in quanta of 250ms usually.
|
|
|
|
|
# As a consequence, additional entries with proper time spacing will push back the next proper update considerably
|
|
|
|
|
# while additional entries with insufficient time spacing may result in no change in behavior.
|
|
|
|
|
delays = [350, 600, 800]
|
|
|
|
|
}
|
2023-07-27 03:07:24 +00:00
|
|
|
|
|
|
|
|
# Don't ask.
|
2023-04-19 00:43:02 +00:00
|
|
|
doors-can-be-opened-by-med-app-from-this-distance = 5.05
|
2023-03-26 03:29:03 +00:00
|
|
|
|
|
|
|
|
# How the experience calculates
|
|
|
|
|
experience {
|
|
|
|
|
# The short contribution time when events are collected and evaluated.
|
|
|
|
|
short-contribution-time = 300000
|
|
|
|
|
# The long contribution time when events are collected and evaluated
|
|
|
|
|
# even factoring the same events from the short contribution time.
|
|
|
|
|
# As a result, when comparing the two event lists, similar actors may appear
|
|
|
|
|
# but their contributions may be different.
|
|
|
|
|
long-contribution-time = 600000
|
|
|
|
|
|
|
|
|
|
# Battle experience points
|
|
|
|
|
# BEP is to be calculated in relation to how valuable a kill is worth.
|
|
|
|
|
bep = {
|
|
|
|
|
# After all calculations are complete, multiple the result by this value
|
|
|
|
|
rate = 1.0
|
|
|
|
|
# These numbers are to determine the starting value for a particular kill
|
|
|
|
|
base = {
|
|
|
|
|
# Black Ops multiplies the base value by this much
|
|
|
|
|
bops-multiplier = 10.0
|
|
|
|
|
# If the player who died ever utilized a mechanized assault exo-suit
|
|
|
|
|
as-max = 250
|
|
|
|
|
# The player who died got at least one kill
|
|
|
|
|
with-kills = 100
|
|
|
|
|
# The player who died was mounted in a vehicle at the time of death
|
|
|
|
|
as-mounted = 100
|
|
|
|
|
# The player who died after having been in the game world for a while after spawning.
|
|
|
|
|
# Dying before this is often called a "spawn kill".
|
|
|
|
|
mature = 50
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Support experience points
|
|
|
|
|
# The events from which support experience rises are numerous.
|
|
|
|
|
# Calculation is determined by the selection of an "event" that decides how the values are combined.
|
|
|
|
|
sep = {
|
|
|
|
|
# After all calculations are complete, multiple the result by this value
|
|
|
|
|
rate = 1.0
|
|
|
|
|
# When using an advanced nanite transport to deposit into the resource silo of a major facility,
|
|
|
|
|
# for reaching the maximum amount of a single deposit,
|
|
|
|
|
# reward the user with this amount of support experience points.
|
|
|
|
|
# Small deposits reward only a percentage of this value.
|
|
|
|
|
ntu-silo-deposit-reward = 100
|
|
|
|
|
# When the event can not be found, this flat sum is rewarded.
|
|
|
|
|
# This should not be treated as a feature.
|
|
|
|
|
# It is a bug.
|
|
|
|
|
# Check your event label calls.
|
|
|
|
|
can-not-find-event-default-value = 15
|
|
|
|
|
# The events by which support experience calculation occurs.
|
|
|
|
|
# Events can be composed of three parts: a base value, a per-use (shots) value, and an active amount value.
|
|
|
|
|
# "Per-use" relies on knowledge from the server about the number of times this exact action occurred before the event.
|
|
|
|
|
# "Active amount" relies on knowledge from the server about how much of the changes for this event are still valid.
|
|
|
|
|
# Some changes can be undone by other events or other behavior.
|
|
|
|
|
#
|
|
|
|
|
# name - label by which this event is organized
|
|
|
|
|
# base - whole number value
|
2023-10-31 03:53:43 +00:00
|
|
|
# shots-min - lower limit of use count
|
|
|
|
|
# - minimum amount of shots required before applying multiplier
|
|
|
|
|
# shots-max - upper limit of use count
|
|
|
|
|
# - cap the count here, if higher
|
2023-03-26 03:29:03 +00:00
|
|
|
# shots-cutoff - if the use count exceeds this number, the event no longer applies
|
|
|
|
|
# - a hard limit that should zero the contribution reward
|
2023-10-31 03:53:43 +00:00
|
|
|
# shots-multiplier - whether use count matters for this event
|
|
|
|
|
# - when set to 0.0 (default), it does not
|
2023-03-26 03:29:03 +00:00
|
|
|
# amount-multiplier - whether active amount matters for this event
|
|
|
|
|
# - when set to 0.0 (default), it does not
|
|
|
|
|
events = [
|
|
|
|
|
{
|
|
|
|
|
name = "support-heal"
|
|
|
|
|
base = 10
|
|
|
|
|
shots-multiplier = 5.0
|
2023-10-31 03:53:43 +00:00
|
|
|
shots-max = 100
|
2023-03-26 03:29:03 +00:00
|
|
|
amount-multiplier = 2.0
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "support-repair"
|
|
|
|
|
base = 10
|
|
|
|
|
shots-multiplier = 5.0
|
2023-10-31 03:53:43 +00:00
|
|
|
shots-max = 100
|
2023-03-26 03:29:03 +00:00
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "support-repair-terminal"
|
|
|
|
|
base = 10
|
|
|
|
|
shots-multiplier = 5.0
|
2023-10-31 03:53:43 +00:00
|
|
|
shots-max = 100
|
2023-03-26 03:29:03 +00:00
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "support-repair-turret"
|
|
|
|
|
base = 10
|
|
|
|
|
shots-multiplier = 5.0
|
2023-10-31 03:53:43 +00:00
|
|
|
shots-max = 100
|
2023-03-26 03:29:03 +00:00
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "mounted-kill"
|
|
|
|
|
base = 25
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "router"
|
|
|
|
|
base = 15
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "hotdrop"
|
|
|
|
|
base = 25
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "hack"
|
|
|
|
|
base = 5
|
|
|
|
|
amount-multiplier = 5.0
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "ams-resupply"
|
|
|
|
|
base = 15
|
|
|
|
|
shots-multiplier = 1.0
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "lodestar-repair"
|
|
|
|
|
base = 10
|
|
|
|
|
shots-multiplier = 1.0
|
2023-10-31 03:53:43 +00:00
|
|
|
shots-max = 100
|
2023-03-26 03:29:03 +00:00
|
|
|
amount-multiplier = 1.0
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "lodestar-rearm"
|
|
|
|
|
base = 10
|
|
|
|
|
shots-multiplier = 1.0
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
name = "revival"
|
|
|
|
|
base = 0
|
|
|
|
|
shots-multiplier = 15.0
|
|
|
|
|
shots-cutoff = 10
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-25 14:57:41 +00:00
|
|
|
# Command experience points
|
2023-03-26 03:29:03 +00:00
|
|
|
cep = {
|
2023-11-25 14:57:41 +00:00
|
|
|
# After all calculations are complete, multiply the result by this value
|
2023-03-26 03:29:03 +00:00
|
|
|
rate = 1.0
|
|
|
|
|
# When command experience points are rewarded to the lattice link unit carrier,
|
|
|
|
|
# modify the original value by this modifier.
|
|
|
|
|
llu-carrier-modifier = 0.5
|
|
|
|
|
# If a player died while carrying an lattice logic unit,
|
|
|
|
|
# award the player who is accredited with the kill command experience as long as the time it had been carried longer than this duration.
|
|
|
|
|
# Can set to Duration.Inf to never pass.
|
2023-11-07 21:07:08 +00:00
|
|
|
llu-slayer-credit-duration = 30 seconds
|
2023-03-26 03:29:03 +00:00
|
|
|
# If a player died while carrying an lattice logic unit,
|
|
|
|
|
# and satisfies the carrying duration,
|
|
|
|
|
# award the player who is accredited with the kill command experience.
|
|
|
|
|
llu-slayer-credit = 200
|
|
|
|
|
# The maximum command experience that can be earned in a facility capture based on squad size
|
|
|
|
|
maximum-per-squad-size = [990, 1980, 3466, 4950, 6436, 7920, 9406, 10890, 12376, 13860]
|
|
|
|
|
# When the cep has to be capped for squad size, add a small value to the capped value
|
2023-10-31 03:53:43 +00:00
|
|
|
# This is that value
|
2023-03-26 03:29:03 +00:00
|
|
|
# -1 reuses the cep before being capped
|
|
|
|
|
squad-size-limit-overflow = -1
|
|
|
|
|
# When the cep has to be capped for squad size, calculate a small amount to add to the capped value
|
|
|
|
|
squad-size-limit-overflow-multiplier = 0.2
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# The game's official maximum battle rank is 40.
|
|
|
|
|
# This is an artificial cap that attempts to stop advancement long before that.
|
|
|
|
|
# After becoming this battle rank, battle experience points gain will be locked.
|
|
|
|
|
# In our case, we're imposing this because character features can be unstable when above BR24.
|
|
|
|
|
max-battle-rank = 24
|
|
|
|
|
|
|
|
|
|
promotion {
|
|
|
|
|
# Whether promotion versus play is offered at battle rank 1.
|
|
|
|
|
# Anyone who is currently enrolled in the promotion system remains enrolled during normal game play.
|
2023-11-28 16:24:07 +00:00
|
|
|
# Relenting on the promotion debt back to the reset battle rank is still possible.
|
2023-03-26 03:29:03 +00:00
|
|
|
active = true
|
2023-11-07 21:07:08 +00:00
|
|
|
# This battle rank and any battle ranks of ordinal decrement that allow opt-in to the progression system.
|
|
|
|
|
broadcast-battle-rank = 1
|
|
|
|
|
# This is the minimum battle rank that can be set as part of the promotion system.
|
|
|
|
|
# Used to escape debt and return to normal play.
|
2023-11-28 16:24:07 +00:00
|
|
|
reset-battle-rank = 5
|
2023-03-26 03:29:03 +00:00
|
|
|
# This is the maximum battle rank that can be set as part of the promotion system.
|
|
|
|
|
max-battle-rank = 13
|
|
|
|
|
# How much direct combat contributes to paying back promotion debt.
|
|
|
|
|
# Typically, it does not contribute.
|
|
|
|
|
battle-experience-points-modifier = 0f
|
2023-11-28 16:24:07 +00:00
|
|
|
support-experience-points-modifier = 3f
|
2023-10-31 03:53:43 +00:00
|
|
|
capture-experience-points-modifier = 1f
|
2023-03-26 03:29:03 +00:00
|
|
|
# Don't forget to pay back that debt.
|
|
|
|
|
}
|
2020-07-14 03:54:05 +00:00
|
|
|
}
|
2020-05-12 05:11:12 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
anti-cheat {
|
|
|
|
|
# The distance (squared) threshold that triggers if the reported hit location
|
|
|
|
|
# of a shot does not match the object being hit's location on the server
|
|
|
|
|
# One of 1-1000000 (sqrt 10000 = ~100 ingame units)
|
|
|
|
|
hit-position-discrepancy-threshold = 10000
|
|
|
|
|
}
|
2020-05-12 05:11:12 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
network {
|
2021-01-12 19:33:44 +00:00
|
|
|
middleware {
|
|
|
|
|
# How often between executions of the outbound bundling process
|
2023-07-27 03:07:24 +00:00
|
|
|
# Used for outbound packet arrival triggers
|
|
|
|
|
packet-bundling-delay = 40 milliseconds
|
|
|
|
|
|
|
|
|
|
# How often between executions of the outbound bundling process
|
|
|
|
|
# Affects the base value on the timer
|
|
|
|
|
packet-bundling-delay-multiplier = 1.25
|
2021-01-12 19:33:44 +00:00
|
|
|
|
|
|
|
|
# Pause inbound packet transmission towards the network if the sequence number is out of order
|
|
|
|
|
# Packets are put aside until the sequence is restored, or this timeout passes
|
|
|
|
|
in-reorder-timeout = 50 milliseconds
|
|
|
|
|
|
|
|
|
|
# Wait on inbound packets if that packet is a SlottedMetaPacket and the next subslot number is greater than expected
|
|
|
|
|
# Does not stop the transmission of packets to the server
|
|
|
|
|
# but dictates how long between requests to the network (client) for missing packets with anticipated subslot numbers
|
|
|
|
|
in-subslot-missing-delay = 50 milliseconds
|
|
|
|
|
|
|
|
|
|
# How many attempts at resolving missing packets with anticipated subslot numbers
|
|
|
|
|
in-subslot-missing-attempts = 10
|
|
|
|
|
}
|
|
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
session {
|
|
|
|
|
# The maximum amount of time since the last inbound packet from a UDP session
|
|
|
|
|
# before it is dropped.
|
|
|
|
|
inbound-grace-time = 1 minute
|
2020-05-12 05:11:12 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
# The maximum amount of time since the last outbound packet for a UDP session
|
|
|
|
|
# before it is dropped. Can be used as a watchdog for hung server sessions.
|
|
|
|
|
outbound-grace-time = 1 minute
|
2020-05-12 05:11:12 +00:00
|
|
|
}
|
2020-07-14 03:54:05 +00:00
|
|
|
}
|
2020-05-12 05:11:12 +00:00
|
|
|
|
2020-08-23 22:27:25 +00:00
|
|
|
development {
|
|
|
|
|
# List of GM commands available to everyone
|
2021-05-22 05:11:02 +00:00
|
|
|
# Values are `ChatMessageType` members, for example: [CMT_ADDBATTLEEXPERIENCE, CMT_CAPTUREBASE]
|
2020-08-23 22:27:25 +00:00
|
|
|
unprivileged-gm-commands = []
|
|
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
net-sim {
|
|
|
|
|
# Enable artificial packet unreliability. Used for development testing.
|
|
|
|
|
# Active equally on upstream and downstream packets.
|
|
|
|
|
enable = no
|
2020-05-12 05:11:12 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
# The percentage of outgoing and incoming packets that are dropped.
|
|
|
|
|
loss = 0.02
|
2020-05-12 05:11:12 +00:00
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
# The time a packet is buffered before being delivered to simulate delay.
|
|
|
|
|
# The artificial delay is in addition to any real network latency.
|
|
|
|
|
delay = 150 milliseconds
|
|
|
|
|
|
|
|
|
|
# The percentage chance that a packet will be ordered randomly in the delay
|
|
|
|
|
# buffer. If the delay is too small then packets won't be reordered.
|
|
|
|
|
reorder-chance = 0.005
|
|
|
|
|
|
|
|
|
|
# If a packet is reordered, the maximum time in the future or the past where
|
|
|
|
|
# it will randomly appear.
|
|
|
|
|
reorder-time = 150 milliseconds
|
2020-05-12 05:11:12 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-07-14 03:54:05 +00:00
|
|
|
kamon {
|
|
|
|
|
# Enables reporting of metrics to Kamon.io
|
|
|
|
|
enable = no
|
|
|
|
|
|
|
|
|
|
environment.service = "PSForever"
|
|
|
|
|
apm.api-key = ""
|
|
|
|
|
}
|
2020-05-12 05:11:12 +00:00
|
|
|
|
2020-07-22 15:28:09 +00:00
|
|
|
sentry {
|
|
|
|
|
# Enables submission of warnings and errors to Sentry
|
|
|
|
|
enable = no
|
|
|
|
|
|
|
|
|
|
# Sentry DSN (Data Source Name)
|
|
|
|
|
dsn = ""
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
include "akka.conf"
|
|
|
|
|
include "dispatchers.conf"
|