Commit Graph

42 Commits

Author SHA1 Message Date
Joonas Rikkonen f46dc5da28 Water flow logic tweaking:
- Less fluctuation, water doesn't constantly flow back and forth through gaps.
- Flowing water pushes characters around much more heavily, and the force is applied to the collider in addition to the limbs.
- Vertical gaps don't push characters up/down unless the character is roughly above/below the gap.

+ Renamed some fields in the hull and gap classes (Volume -> WaterVolume, FullVolume -> Volume, public fields start with a capital letter)
2017-10-10 21:07:45 +03:00
Joonas Rikkonen c444186426 Updated client project (ShiftSummary -> RoundSummary), removed unused drowningtime variable 2017-10-05 21:35:57 +03:00
Joonas Rikkonen 57667b3169 Fixed removed (e.g. eaten) characters not appearing in the round summary, but still spawning during the next round 2017-10-05 21:18:01 +03:00
Joonas Rikkonen 1ff2054ca8 Converted the GetAttribute methods in the ToolBox class to extension methods 2017-10-04 18:38:40 +03:00
Joonas Rikkonen 8c3c689596 - Fixed creatures being able to sever non-severable limb joints (which caused syncing issues when the waist->torso joint of a humanoid was severed).
- The server creates an entity event when a joint is severed.
- Made joints severable by default.
2017-09-21 17:50:24 +03:00
Joonas Rikkonen dd86b5745a - The server doesn't disable client-controlled AI characters that are far from all other players.
- Clients aren't allowed to flip swimming FishAnimControllers unless the server says so (occasionally caused creatures to flip around constantly because the clients ignore the 1-second "flipping cooldown").
- Moved Character.ReadStatus to the client project.
2017-09-21 17:44:52 +03:00
Joonas Rikkonen 4bdbf05875 - The range and volume of sounds emitted by StatusEffects can be changed and they can be set to loop.
- StatusEffect sounds are configured as child elements of the StatusEffect (instead of attributes).
- Background sprites can emit sounds.
2017-08-24 19:56:31 +03:00
Joonas Rikkonen c2da3a6af4 - Added "LevelTriggers", areas that apply statuseffects and/or damage to entities. Atm can only be attached to background sprites.
- Moved background sprites to the shared project.
- The debug textures of physics bodies have a maximum size of 128x128 pixels to prevent large bodies from taking up excessive amounts of memory.
- Attacks can be set to only affect humans.
2017-08-23 20:37:30 +03:00
Joonas Rikkonen 2d1c00546f Reimplemented switching to repair & monster music types (now handled by SoundPlayer) 2017-08-23 14:42:24 +03:00
Joonas Rikkonen 15a31c5291 - The commonness of scripted events can be overridden for specific level types (e.g. some monsters can be set to spawn more frequently in specific types of levels).
- The sub can be moved from location to another in the map view by double clicking in debug builds.
- Level wall color can be changed in level generation parameters.
- Fixed level geometry not being rendered if the ocean floor is visible (which isn't a problem in most level types, but there can be levels where the ocean floor is so close to the actual level that they can both be visible at the same time).
- Background sprite scale is taken into account when calculating particle emitter positions.
- Fixed limb lights being rendered even if the character is disabled.
2017-08-22 19:04:49 +03:00
Joonas Rikkonen 4a460ff150 - The emission rate of ParticleEmitters can be set as particles per second (instead of particles per frame).
- Particles that are outside the sub aren't visible inside hulls even if they overlap with the sub.
- ParticleManager takes the movement of the particles into account when determining which particles to cull. For example, a particle that will move upwards can be emitted even if it's below the camera view.
2017-08-20 19:05:25 +03:00
Joonas Rikkonen c7a357d84c Fix for exceptions when a human is targeting a removed entity while debugdraw is enabled, accessing AITarget position properties after the target has been destroyed doesn't throw an exception (but does log an error in debug builds). 2017-08-13 20:00:52 +03:00
Joonas Rikkonen 4d40f5d483 Submarines, items and characters that reach a depth of 300,000 units (~4000 m) are automatically disabled. Avoids the unnecessary cost of updating entities that are way too deep to be reached by anyone. 2017-08-13 20:00:18 +03:00
Joonas Rikkonen f7f738765b Fixed "collection was modified" exceptions when a huskified human is killed while enumerating the character list (e.g. when killed by an explosion) 2017-08-09 19:37:37 +03:00
Joonas Rikkonen 6eba16ff4e Fixed clients spawning monsters twice (first during mission/event initialization and again when the server notifies them about the spawning) 2017-08-08 23:03:26 +03:00
Joonas Rikkonen a8ec821382 Handcuffed AICharacters can't climb ladders 2017-08-08 21:17:43 +03:00
Joonas Rikkonen 9e3f4bfa5a Syncing crouching from server to clients, not just from clients to server 2017-07-28 19:01:47 +03:00
Joonas Rikkonen affb43e7a5 Workaround to null reference exceptions in Character.WriteStatus: it seems AnimController can be null when reading the message, which suggests that the character has been removed (e.g. turned to a husk, eaten by something). 2017-07-26 21:35:50 +03:00
Joonas Rikkonen 61b90464dd Playing whack-a-mole with the interaction logic again:
- Fixed server keeping clients focused on entities until they report focusing on something else. This allowed clients to interact with the entity they previously focused on, even if they weren't anywhere near anymore.
- Checking if clients are allowed to focus on an entity before letting them do so (!!!).
- Server doesn't highlight entities when a client focuses on them.
- Characters can interact with a wire if they've selected either of the items it's connected to.
2017-07-26 21:03:21 +03:00
Joonas Rikkonen 6faf658ae0 Fixed SetClientCharacter & Revive 2017-07-26 17:19:35 +03:00
Joonas Rikkonen 379c65e07d Fixed dedicated servers ignoring armor 2017-07-24 19:12:18 +03:00
Joonas Rikkonen 446dce9545 Fixed diving suits 2017-07-24 17:02:13 +03:00
Joonas Rikkonen 6c80a02354 Characters don't consume oxygen from hulls if their OxygenAvailable is higher than the amount of oxygen in the hull (= if they're wearing a diving mask or a suit) 2017-07-18 19:40:25 +03:00
Joonas Rikkonen 49003c465c Aiming syncing fix: aiming angle is calculated from the position of the shoulder towards the cursor (or a position within the collider that's roughly at the shoulder). 2017-07-18 18:33:30 +03:00
Joonas Rikkonen 575b643c62 Added "user" parameter to Inventory.PutItem and Inventory.TryPutItem. + More descriptive wiring logging: the logs don't list all the wires in a connectionpanel but only the changes a player does to the wiring. Disconnecting wires by picking them up and wiring done by the host are also logged now. 2017-07-17 23:27:31 +03:00
Joonas Rikkonen cc9ebe9fc2 Interaction logic tweaking again:
- Reverted the item distance calculation change in commit c7fd681 (it made interaction way less precise, as items near the character tended to get focus even if the cursor was nowhere near them), and replaced it with:
- Aim assist considers the distance to an item to be 0.0 if the cursor is inside a trigger of the item.
- Reverted 769a012 and disabled aim assist when an item is selected. Meaning that now items don't have to be deselected before interacting with another item, but the cursor has to be directly on the other item to make accidental interaction less likely.
- Removed some redundant trigger calculations from CanInteractWith.
2017-07-13 23:32:39 +03:00
Joonas Rikkonen 8693dc3d3d Fixed AI crew members swimming too fast, reduced max swimming speed (= the speed when holding shift) 2017-07-12 17:53:07 +03:00
Joonas Rikkonen ed7fd7dbc1 Clients don't stop updating the controls/HUD/etc of their character when water pressure reaches lethal levels until the server implodes the character. Requested by nilanthanimosus; doesn't change much in the vanilla game, but modded servers can now disable pressure deaths without characters becoming immobilized in high pressure. 2017-07-11 21:41:31 +03:00
Joonas Rikkonen af1a681da0 Fixed far-away AI characters staying disabled when switching control to them + minor optimization 2017-07-11 20:03:42 +03:00
Joonas Rikkonen cbe7200ff6 Deselecting the currently selected item has a higher priority than interacting with the focused item (i.e. can't interact with another item until the selected item is deselected) 2017-07-09 19:19:28 +03:00
Joonas Rikkonen 769a012776 Items that are in an inventory can't be focused on (otherwise characters would constantly focus on the item they're holding) 2017-07-09 19:08:45 +03:00
Joonas Rikkonen bd4c7d68d0 Fixed endless messagebox spam when the controlled character turns into a husk, fixed an index our of range exception when merging firesources 2017-07-09 16:17:44 +03:00
Joonas Rikkonen 4e4983f0a6 If focused on both a character and an item, the one that's closer to the cursor can be interacted with (instead of characters having higher priority, because that would make it impossible to interact with items that are next to a dead/unconscious character). Selected characters can also be deselected without highlighting the character with the cursor.
+ extra null check in HasRequiredItems
2017-07-08 14:32:01 +03:00
Joonas Rikkonen 4d2e7c33b1 Decal system (TODO: add decals for explosions and fire), moved some of the client-specific Hull update logic to the client project 2017-07-06 21:38:32 +03:00
Joonas Rikkonen 90a584d122 Non-humanoids can't interact with items 2017-07-06 19:25:56 +03:00
Joonas Rikkonen c7fd6818a4 Some tweaking to the item interaction logic:
- FindItemAtPosition uses the distance calculated in CanInteractWith to determine how close an item is to the character. Otherwise very large items (such as ladders) wouldn't be possible to select with aim assist unless the player happens to be holding the cursor close to the center of the item.
- The hull-parameter is taken into account in FindItemAtPosition.
- Characters are considered to be inside a trigger if either their lower or upper body is inside it.
- Added triggers to engines because they are often placed partially inside a wall, making it impossible to rewire them if the center is not inside the sub.
2017-07-05 20:15:02 +03:00
Joonas Rikkonen b064b979c1 Fixed NotImplementedException in Character.CanInteractWith in the server project 2017-07-05 19:41:02 +03:00
Joonas Rikkonen bf5a0746ad Merge branch 'master' of https://github.com/Faerdan/Barotrauma into Faerdan-master
Conflicts:
	Barotrauma/BarotraumaClient/Source/Map/MapEntity.cs
	Barotrauma/BarotraumaClient/Source/Screens/GameScreen.cs
	Barotrauma/BarotraumaShared/Source/Characters/Character.cs
	Barotrauma/BarotraumaShared/Source/Items/Item.cs
2017-07-05 19:32:34 +03:00
Joonas Rikkonen 64ad5e5003 Removed unnecessary using directives 2017-07-05 18:35:09 +03:00
Joonas Rikkonen e431cc775f Some null checks, clients log initial lobby update, minor lighting optimization 2017-07-04 22:36:00 +03:00
Joonas Rikkonen e15f5a881b Merge branch 'dedicated-server' (TODO: make sure I didn't break anything)
Conflicts:
	Barotrauma/Barotrauma.csproj
	Barotrauma/BarotraumaShared/Source/Characters/AI/AIController.cs
	Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs
	Barotrauma/BarotraumaShared/Source/Characters/AICharacter.cs
	Barotrauma/BarotraumaShared/Source/Characters/Animation/Ragdoll.cs
	Barotrauma/BarotraumaShared/Source/Characters/Attack.cs
	Barotrauma/BarotraumaShared/Source/Characters/Character.cs
	Barotrauma/BarotraumaShared/Source/Characters/CharacterNetworking.cs
	Barotrauma/BarotraumaShared/Source/Characters/Limb.cs
	Barotrauma/BarotraumaShared/Source/Events/MonsterEvent.cs
	Barotrauma/BarotraumaShared/Source/Map/Explosion.cs
2017-06-30 21:02:52 +03:00
juanjp600 4d225c65f2 Updated to MonoGame 3.6 + Directory refactor
- Barotrauma's projects are in the Barotrauma directory
- All libraries are in the Libraries directory
- MonoGame is now managed by NuGet, rather than referenced from the installed files (TODO: consider using PCL for easier cross-platform development?)
- NuGet libraries are not included in the repo, as getting the latest versions automatically should be preferred
- Removed Content/effects.mgfx as it didn't seem to be used anywhere
- Removed some references to Subsurface directory
- Renamed Launcher2 to Launcher
2017-06-27 09:52:57 -03:00