Commit Graph

134 Commits

Author SHA1 Message Date
Joonas Rikkonen
a5a09aa664 Fixed OwnerClientName & OwnerClientIP not being set on respawned characters. The characters of clients who aren't in-game 30 seconds after a round starts are treated as disconnected, making it possible for the client to gain control of the character if they do manage to connect. Closes #583, #584 2018-08-06 15:48:47 +03:00
Joonas Rikkonen
1a50996774 Server doesn't force reconnecting spectate-only clients to control their previous character. 2018-08-06 14:14:30 +03:00
Joonas Rikkonen
fa65372715 Whoops, save before committing 2018-08-06 13:41:36 +03:00
Joonas Rikkonen
4ebe3d715e Characters stay alive for 30 seconds after a client disconnects, and if the client rejoins during that time they regain control of the character. Closes #42 2018-08-06 13:38:39 +03:00
Joonas Rikkonen
a69c52b3c1 Fixed servers failing to write network events for wires with too many nodes, causing clients syncing to fail and everyone getting kicked out due to desync. Now the wire events are split into multiple events, and there's a hard cap (255) on the number of nodes per wire. Closes #563
+ Writing too much data into an event no longer breaks event syncing completely, if it happens the server just logs an error and writes an empty event.
2018-08-03 21:32:28 +03:00
Joonas Rikkonen
274a29bada Fixed fabricated items always appearing to be in full condition client-side (e.g. oxygen tanks which should be empty after being fabricated). Cherry-picked from 64896b0f. Closes #561 2018-08-02 10:50:38 +03:00
Joonas Rikkonen
5a6a8e2501 Wifi components can't communicate with the enemy sub in combat missions. Fixes #554 2018-08-01 13:52:47 +03:00
Joonas Rikkonen
d81ee1a27e Added a bunch of checks to make sure a normalized zero vector (= NaN, NaN) is not used in any position/velocity/movement calculations. There were at least three places where it was causing problems according to error reports: when a character that can't enter a sub spawns at the center of a hull and when using an underwater scooter or throwing something while the cursor is at the position of the character, but there were tons of other places as well where it may have potentially caused physics errors. 2018-07-31 12:28:04 +03:00
Joonas Rikkonen
8c598db10b Fixed errors in RespawnManager.ClientRead when not using a shuttle, extra diving gear does not spawn when respawning in main sub (TODO: automatically give and equip diving gear if the sub is flooded?) 2018-07-30 11:41:54 +03:00
Joonas Rikkonen
458c972580 More server-side EntityEvent error logging, Item.ServerWrite does some error checks and writes NetEntityEvent.Type.Invalid as the type of the event instead of attempting to write a potentially unreadable message. 2018-07-29 22:28:56 +03:00
Joonas Rikkonen
50603b72f4 Fixed another bug in DockingPort that caused entity ID mismatches. Even though the server sent the IDs of the CURRENT hulls and gap of the docking port, they are not necessarily created in the correct order during midround syncing and may end up replacing the ID of another entity or another entity spawned after them may cause their IDs to be replaced. Closes #530 2018-07-26 12:42:29 +03:00
Joonas Rikkonen
852fc174c2 Fixes to respawn shuttle bugs that may have caused entity ID mismatches: clients don't remove gaps or undock docking ports when a respawn shuttle leaves the level (but instead receive network events that tell them to do so), removing gaps is done with EntitySpawner. 2018-07-23 22:51:52 +03:00
Joonas Rikkonen
be5f168b76 Sending error messages during EntityEvent writing/reading and entity removal to GameAnalytics 2018-07-23 21:16:57 +03:00
Nilanth Animosus
cac1c48aa3 Redesigned campaign buymenu to use a quantity field
Additionally sorts the bought items by name then type to attempt to mirror the tabs (Not perfect)
2018-07-20 18:01:38 +01:00
Joonas Rikkonen
49c6b177e3 Added wrapper methods that check if user statistics are enabled to GameAnalyticsManager 2018-07-20 12:05:13 +03:00
Joonas Rikkonen
f1c4bd3c67 - Some of the non-game-crashing error messages are sent to GameAnalytics.
- Changed crash severity from Error to Critical.
- Exception handling when loading submarine preview images.
- Checking if position is valid in Ragdoll.SetPosition.
2018-07-19 22:12:50 +03:00
Joonas Rikkonen
8cd7919009 Removed unused BanClient method 2018-07-19 17:42:03 +03:00
Joonas Rikkonen
a83cd64dbc Merge pull request #496 from NilanthAnimosus/vanillawork
Minor vanilla tweaks
2018-07-18 14:32:28 +03:00
Joonas Rikkonen
568cf1a02f Fixed memory leak caused by submarine preview images, changed Submarine.SavedSubmarines to a property that prevents removing submarines from outside the class without disposing the preview image. Closes #498 2018-07-18 14:23:43 +03:00
Nilanth Animosus
ad681d5a26 Chatbox removes from the first entry instead of the second
Removes for clients "playername has joined" staying at the top of the chat history, as this feels unnecessary for both server and client.
2018-07-18 11:03:04 +01:00
Joonas Rikkonen
5d342e24ef Clients are allowed to vote to end the round if they have spawned at some point during the round, even if the character they controlled doesn't exist anymore (huskified or eaten). Closes #483 2018-07-16 16:27:13 +03:00
Joonas Rikkonen
734b86bfba Fixed clients being unable to give non-permanent or range bans. Closes #481 2018-07-16 11:24:24 +03:00
Joonas Rikkonen
ceae0bf94e Fixed oddities in traitor ratio/assignment logic. The TraitorUseRatio setting is used to determine the number of traitors, the minimum number of traitors is 1 instead of 2, the host is taken into account when determining the number of traitors. Closes #477 2018-07-16 11:05:10 +03:00
Joonas Rikkonen
015eacbcb0 Fixed GameAnalytics thread becoming active despite user statistics being disabled, causing the game to stay active in the background when quitting. 2018-07-13 11:29:11 +03:00
Joonas Rikkonen
c7e220d222 Collecting some more usage statistics: selected game mode, mission, submarine, content package, traitors on/off, kills 2018-07-10 15:49:08 +03:00
Joonas Rikkonen
86c4cd17d2 Fixed clients getting assigned random jobs regardless of job preferences. 2018-07-08 19:32:23 +03:00
Joonas Rikkonen
740d201fc3 Fixed server-side crashes during job assignment if a client hasn't sent any job preferences 2018-07-06 19:42:33 +03:00
Joonas Rikkonen
917b869b92 Fixed exceptions in RespawnManager if the selected respawn shuttle doesn't have a nav terminal or any other item with a Steering component. Closes #438 2018-06-10 21:31:34 +03:00
Tazial
88003a35c7 Changed log names to be sortable by file name 2018-05-22 18:25:12 -04:00
Joonas Rikkonen
f931d81aed Mission refactoring (mission prefabs) and option to select which types of missions can be selected when mission type is set to random (TODO: a way to set the allowed types from the UI). 2018-05-17 23:45:29 +03:00
Joonas Rikkonen
f2842c265c Removed the need for batteries in diving suits, now the light stays on as long as the suit is worn by a living character. 2018-04-23 15:24:55 +03:00
Joonas Rikkonen
ceaba2f5ca Fixed some entities occasionally not being removed at the end of a round. CargoMission removed the cargo items at the end of a round without checking if the items have already been removed, which could cause another entity to be removed from the entity dictionary if it's taken the ID of the cargo item. This prevented the new entity from being removed in Entity.RemoveAll, causing errors during the next round. Closes #278 2018-04-23 13:55:08 +03:00
Joonas Rikkonen
edf5bacc89 Fixed EndRound music looping forever. Closes #334 2018-04-18 11:02:58 +03:00
Joonas Rikkonen
3aeaae0595 Fixed RespawnManager not removing respawn items. Closes #234 2018-04-04 18:53:23 +03:00
itchyOwl
b599206294 Add a GUI slider for setting the auto ban duration. Define the max auto ban length in the server settings. (Issue #128) 2018-03-27 11:29:36 +03:00
itchyOwl
a48a4975ca Auto ban users that have been vote kicked. Define the auto ban time in the server settings. (Issue #128) NOTE: Not tested! 2018-03-27 11:27:57 +03:00
itchyOwl
3106efa023 Add "respawn" tag to the items that should persist in the Respawn Shuttle. Ignore the items with this tag when resetting the shuttle. (Issue #234) 2018-03-27 11:24:11 +03:00
Joonas Rikkonen
a43b8dc278 Added a console command for changing the server password. Closes #325 2018-03-07 17:26:42 +02:00
Joonas Rikkonen
10ce4bd20d Fixed messageboxes opened by the mp campaign setup UI not being shown until the UI is closed (e.g. shuttle & incompatible content package warnings), renamed MultiplayerCampaign -> MultiPlayerCampaign for consistency. See #315 2018-03-06 16:43:36 +02:00
Joonas Rikkonen
08ade1dc6f Fixed clients not being notified when a campaign is exited and a new one started, causing them to think they still have up-to-date save files for the new campaign and get kicked out due to desync as soon as a round starts. (See #315) 2018-03-06 14:18:37 +02:00
Joonas Rikkonen
f1f190a997 Added a light to diving suits (requires a battery to work). Closes #233 2018-03-02 13:11:28 +02:00
Joonas Rikkonen
cd6fc87eb4 Fixed object header issues and "trying to read past the buffer size" errors caused by NetEntityEvents for removed entities.
EntityEventManager sends an empty event with an ID of 0 if the entity doesn't exist anymore when writing the event. The recipient should simply skip over these messages and read the next one, but clients only did so if the event is the next unreceived one, causing the rest of the messages to be read incorrectly (which could lead to various sorts of problems in addition to the header and buffer size errors). The server didn't deal with the empty events correctly either, it increased the last received ID even if the received event was not the one the server is waiting for, potentially causing other non-empty events to be ignored.

+ Added an error message if the size of an NetEntityEvent is larger than 255 bytes. Not only is that excessively large for an event, but the length of the event is written as a byte and larger ones may again cause messages to be read incorrectly. Most events should be nowhere near 255 bytes, but now that the descriptions and tags of a spawned item are included in the item spawn messages there's the possibility that some events are too large.
2018-03-01 19:30:27 +02:00
Joonas Rikkonen
0827c475ba Fixed "an item with the same key has already been added" exceptions caused by humanhusk.xml being in the same folder as human.xml. Closes #283 2018-02-25 18:35:31 +02:00
Joonas Rikkonen
9e2966e9cb - Fixed creature disable list only taking config files in the Content/Characters folder into account (making it impossible to disable spawning of custom monsters outside the folder)
- Removed hard-coded ruin structure, particle & decal config paths and moved them to content package (custom ones can be added now without modifying the original files).
2018-02-25 15:03:29 +02:00
Joonas Rikkonen
671f59e984 Unequipped headsets can't be used and don't consume batteries. Closes #272 2018-02-22 15:08:38 +02:00
Joonas Rikkonen
27ded3e5a3 Fixed dead/spectator chat. Closes #264 2018-02-22 11:34:33 +02:00
Joonas Rikkonen
23b59dd70b Reverted a290a6a (chatbox can be deselected with the chat hotkey again). Closes #262. 2018-02-22 11:19:53 +02:00
Joonas Rikkonen
a1ccf501c7 Fixes to server settings. Closes #225
- Selected mode and mission type settings are saved and loaded.
- RandomizeSeed setting can be changed via the debug console and it also has an effect in the dedicated server.
- Dedicated server randomizes sub & mode settings if their selection modes are set to random.
2018-01-25 15:09:44 +02:00
juanjp600
ddaf5f21cf Fixed exception when using radio chat without an inventory 2018-01-19 14:03:31 -03:00
Joonas Rikkonen
9f58d1b74d Cargo items can be set to spawn inside specific types of containers instead of being scattered on the cargo room floor. 2018-01-10 15:56:11 +02:00