Regalis
f863eb331d
Moved stun from AnimController to the character class, server notifies clients when the stun ends, husk infection included in character status messages
2017-04-07 19:56:25 +03:00
Regalis
af80a44970
Server doesn't apply distance effects to chat messages sent by someone without a character (e.g. a client in the lobby, the server itself)
2017-04-07 18:12:14 +03:00
juanjp600
84f8c6db22
Fixed positioning of new lines for rotated text
...
A fairly unimportant change, so I'll just commit it to new-netcode since I forgot to switch to master before making this change and I'm too lazy to just port things over :P
2017-04-06 17:49:08 -03:00
juanjp600
2873a79fe0
Merge branch 'new-netcode' of https://gitlab.com/poe.regalis/barotrauma into new-netcode
2017-04-06 16:50:20 -03:00
juanjp600
e1d5d63dbd
Sync monster spawn settings
2017-04-06 16:50:11 -03:00
Regalis
77614dfa4e
Merge branch 'master' into new-netcode
...
Conflicts:
Subsurface/Source/Characters/Animation/Ragdoll.cs
2017-04-06 21:59:52 +03:00
Regalis
a2e21a78f9
Nicer looking explosions
2017-04-06 21:58:35 +03:00
Regalis
00b7193b6b
Minor optimizations: GUITextBlocks don't reposition and wrap the text when only the position of the text block changes (almost killed my laptop by spamming a bit too many messages to the debug console), less unnecessary floor raycasts
2017-04-06 21:58:19 +03:00
Regalis
9330bd08de
Clients don't switch from init events to normal until they receive the first normal event update (instead of switching when they receive the last init event they know about). Otherwise the client may switch to normal events too early, if the server has created new unique events the client doesn't know about yet.
2017-04-06 21:52:24 +03:00
Regalis
dc73880cd9
Fixed clients being unable to receive files if the download folder doesn't exist ツ
2017-04-06 20:13:44 +03:00
juanjp600
4ad373294c
Update client.UnreceivedEntityEventCount on every event write
...
I noticed that if the main event IDs went over 10000 and there were more than 450 unique events, the server would sometimes skip the next event the client needed. Sometimes the client would also not realize that the last event it received was the final init event, so it would reject all further events because of a huge ID discrepancy. The init events will likely need to be reworked, but updating UnreceivedEntityEventCount seems to help somewhat.
2017-04-06 12:37:38 -03:00
Regalis
bfe043c154
Fixed door sounds playing twice client-side (first when the client activates the door and again when the correct state is received from the server)
2017-04-05 23:51:45 +03:00
Regalis
b1ef7ffd05
Replaced excessively paranoid filename validation regex in FileReceiver with Path.GetInvalidFileNameChars, server is notified if a client cancels a file transfer for whatever reason
2017-04-05 23:20:20 +03:00
Regalis
e1a2f6af62
Fixed the name of the server being overridden with "Server" every time a client selects the lobby screen
2017-04-05 21:57:00 +03:00
Regalis
7cb88e39e9
Attempt to fix ThrowOrIgnoreBadComparer exception in LightSource.FindRaycastHits.
...
Couldn't reproduce the crash, but I'm guessing it could be caused by CompareCCW not returning 0 if comparing a position to itself. (and if not, at least the exception is caught now)
2017-04-05 21:36:31 +03:00
Regalis
7700854935
Disabled AI crew commands in multiplayer, attempting to give commands to a character with no AIController doesn't crash the game
2017-04-05 21:09:24 +03:00
Regalis
3246e2c521
Limb physics aren't disabled when a character is frozen (only collider physics) -> frozen characters can still take damage from weapons
2017-04-05 17:53:31 +03:00
Regalis
8215c4d91b
MemStates without a timestamp are removed from a character when using timestamp-based interpolation (there may still be ID-based states with a timestamp of 0.0 in the buffer when switching to timestamp-based interpolation, for example when the controlled character dies)
...
+ vice versa when switching from timestamp-based to ID-based
2017-04-04 21:32:53 +03:00
Regalis
0f8e6440ef
Clients can access the inventories of incapacitated characters (e.g. put handcuffs on a stunned player, grab stuff from a dead character's inventory)
2017-04-04 21:18:03 +03:00
Regalis
b3bbdbf589
Explosion damage is reduced if there are walls or other solid obstacles between an explosion and a character
2017-04-04 19:54:28 +03:00
Regalis
b063cf3feb
Fire sound fix: the sounds were freed after each round without ever loading them again. The sound objects still existed and had some buffer ID assigned though, causing an incorrect clip to be played or OpenAL errors to be thrown on successive rounds. (Now freed sounds always have a buffer ID of -1)
2017-04-03 20:59:02 +03:00
Regalis
6895cdbd7d
Clients don't apply OnFire statuseffects to items. OnFire can cause items to explode, and because the client can't set the condition of the item to 0.0, it'll keep exploding until the server breaks the item. TODO: come up with a proper fix because now clients can't see oxy or fuel tanks exploding at their end.
2017-04-03 20:48:09 +03:00
Regalis
e75d596d34
Firesource syncing fixes
2017-04-03 20:22:59 +03:00
Regalis
43d29de45c
Merge branch 'master' into new-netcode
...
Conflicts:
Subsurface/Barotrauma.csproj
2017-04-03 18:36:22 +03:00
Regalis
2ca609855a
Particle collision and project file fixes
2017-04-03 18:32:49 +03:00
Regalis
2f638a4c01
The initial loading screen is closed if an exception is thrown during loading. Causes the game to crash due to the unloaded content, but that's better than letting the game hang on the loading screen.
2017-03-30 21:56:05 +03:00
Regalis
c368d6ddf1
- fire particle tweaking
...
- water puts out fires more slowly and the speed depends on the height of the water surface relative to the position of the firesource (instead of the volume of the water in the room)
- the extents of the firesources are visualized when debugdraw is on
- any >0.0 damage to structures has a chance of spawning some "shrapnel" particles
2017-03-30 21:50:18 +03:00
Regalis
c58d7dfd73
Animated fire & smoke particles
2017-03-30 21:32:08 +03:00
Regalis
e661724cbb
Debug console is added to GUIUpdateList after all other UI elements (because it's drawn on top of everything else)
2017-03-30 17:35:14 +03:00
Regalis
2b65392a3c
BackgroundSpriteManager takes the rotation and pivot point of the sprites into account when determining which cells of the "sprite grid" the sprite occupies (-> partially visible sprites shouldn't be culled away anymore)
2017-03-29 23:28:09 +03:00
Regalis
2582680445
Fixed physics bodies staying active when a character is disabled in the constructor
2017-03-29 23:12:03 +03:00
Regalis
5bdd801da4
Having multiple sub files with the same name doesn't prevent clients from selecting or requesting the correct one
2017-03-28 21:01:44 +03:00
Regalis
2a5a2bc6f6
Fixed server not sending a status update for an item if the condition of the item changes directly from 100 to 0
2017-03-27 23:44:09 +03:00
Regalis
0e5de469d3
Fixed infinite loop in WrapText if the line length is smaller than an individual character, text scale is taken into account in GUITextBlock wrapping
2017-03-27 21:08:14 +03:00
Regalis
1a3c18c727
EntitySpawner sends spawn/removal messages to clients using EntityEvents.
...
EntityEvents and EntitySpawner used to work independently of each other, with separate IDs, and there was no guarantee that spawning and events would happen in the correct order. For example, a client could fail to read events during midround syncing because the entity has been removed, or read an event for an incorrect entity because the entity has been removed and the ID taken by some other entity.
2017-03-27 21:05:32 +03:00
Regalis
6a6486e270
Server doesn't create an entityevent if the health of a character changes very little, husk infection isn't updated after the infected character dies, clients can't create a "huskified" human NPC until the server says so
2017-03-26 22:47:08 +03:00
Regalis
3306a1ab96
EntitySpawner only writes a limited number of entities per packet
2017-03-26 17:19:29 +03:00
Regalis
52dde81396
Removed duplicate "MapEntity.MapLoaded" call from level generation, fixed level walls occasionally overlapping with ruins
2017-03-25 20:13:15 +02:00
Regalis
aca85c2708
All characters start disabled in the multiplayer mode, and are enabled when the client starts receiving position updates for the character, OR when the server starts receiving inputs from the client controlling the character, OR if the character is controlled locally. (-> no more floating, frozen characters at the start of a round)
...
+ the server disables AICharacters that are far away from all players
2017-03-25 20:10:47 +02:00
Regalis
827644b72c
Revert ccc0956, there was nothing wrong with the ID comparison
2017-03-24 22:10:48 +02:00
Regalis
dfd24045f8
EntityEventManagers send an empty event if the entity doesn't exist anymore when writing the message (may happen, for example, when a client is still waiting for some message about the item when it's destroyed in a deconstructor).
...
Not sending the events at all would be a better solution, but then we'd need to shift the IDs of all the consecutive events and make sure it doesn't mess anything up with any of the clients. Not necessarily worth the effort, considering how rare these "empty events" are.
2017-03-24 19:12:09 +02:00
Regalis
067db912f4
- EntitySpawner recursively deletes contained items when an item is deleted
...
- items in the inventories of the characters inside the shuttle are deleted when resetting the respawn shuttle
- fixed host's character not being taken into account when assigning jobs for respawning characters if the host is not respawning
2017-03-24 18:49:55 +02:00
Regalis
ccc09560a1
Fixed another off-by-one error in EntitySpawner ID comparisons, clients reset their ChatMessage ID when (re)connecting to the server
2017-03-24 17:56:56 +02:00
Regalis
7e431c7dfd
Merge branch 'master' into new-netcode
...
Conflicts:
Subsurface/Source/Items/Components/Machines/Deconstructor.cs
Subsurface/Source/Items/Components/Machines/Fabricator.cs
2017-03-23 18:58:18 +02:00
Regalis
4d19d0afc1
Deconstructors & fabricators drop created items on the floor if there's no more room in the inventory, deconstructor doesn't reset the activation button after deconstructing an item if there are still more items to go
2017-03-23 18:55:39 +02:00
Regalis
e9e4e5f9d3
Level cells that overlap with ruins are removed during level generation (instead of just disabling collisions with them), background sprites can spawn on ruin walls
2017-03-23 18:13:28 +02:00
Regalis
885a8c610c
Text scale in GUITextBlocks and ItemLabels can be changed, text wrapping fix (words that are too wide for one line shouldn't cause overflows anymore)
2017-03-22 23:22:54 +02:00
Regalis
d4db37f8dd
CPR syncing + some refactoring
...
Clients send an entityevent to the server when they start/stop doing CPR, and server includes the animation state in messages when character is dragging some other character
2017-03-22 20:05:50 +02:00
Regalis
823ad12058
Some refactoring: made PosInfo a class and moved character-specific fields to a "CharacterStateInfo" subclass
2017-03-21 19:36:28 +02:00
Regalis
d42d017aab
Added IsActive field to scripted events (allows disabling event-specific music when needed)
2017-03-21 18:20:19 +02:00