Commit Graph

  • 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. Joonas Rikkonen 2017-09-21 17:50:24 +03:00
  • 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. Joonas Rikkonen 2017-09-21 17:44:52 +03:00
  • f291a22976 - Autorestart works in campaign mode. - The server select a random destination when the campaign starts and after each round, so the campaign can be played even if there's no host/client to choose the destinations. (TODO: make it possible to vote for the destination?) - Reverting to the previous save if the entire crew is dead works correctly now. - Clients load the campaign saves after receiving them (-> discovered locations/connections are synced with clients). Joonas Rikkonen 2017-09-19 22:05:42 +03:00
  • e26600d088 Added MP campaign setup to the dedicated server & some console commands for managing the campaign Joonas Rikkonen 2017-09-17 20:03:18 +03:00
  • 9114ae658f - Modified item buying logic: selected items are purchased immediately without having to click the "buy" button, and they stay in the list of purchased items until the round is started. (-> It's possible to see which items have been purchased and cancel purchases). - Clients can be given a permission to manage the campaign (atm selecting which location to head towards and buying items). - Syncing cargomanager state with clients. - Misc fixes. Joonas Rikkonen 2017-09-17 15:55:24 +03:00
  • b292a301cf MP campaign additions/fixes: - Store tab & cargo spawning - Sub & shuttle lists and level seed box are disabled when a campaign is active. - Campaign UI is recreated if a new campaign is started while another one is active. Joonas Rikkonen 2017-09-14 19:39:03 +03:00
  • 348d81a66f MP campaign fixes Joonas Rikkonen 2017-09-13 18:37:17 +03:00
  • 8949871f00 Saving fix Joonas Rikkonen 2017-09-11 21:37:28 +03:00
  • 63bca3c7ea Syncing campaign state & save files with clients (WIP) Joonas Rikkonen 2017-09-11 21:32:48 +03:00
  • 51cfef214c BackgroundSpriteManager uses RandSync.Server because the server also generates background sprites now Joonas Rikkonen 2017-09-11 21:31:21 +03:00
  • 1311a286f5 Added battery recharge docks, moved applying OnActive statuseffects to the Powered itemcomponent, removed smoke particles from stun baton hit effect Joonas Rikkonen 2017-09-03 16:57:32 +03:00
  • 7625d04807 Fixed exceptions during level generation if two tunnel nodes happen to be placed at the same position Joonas Rikkonen 2017-09-03 13:11:53 +03:00
  • 3feee93c53 Campaign saving fixes Joonas Rikkonen 2017-09-03 13:08:10 +03:00
  • 1e41abadd1 Submarine.PickBody & CheckVisibility ignore sensors Joonas Rikkonen 2017-09-03 13:07:20 +03:00
  • c1f5e3cbda Progress on multiplayer campaign: - Moved SaveUtils to the shared project. - Moved the "new game"/"load game" menu logic to a separate class. - Somewhat functional campaign UI in the server lobby (only the map view is usable atm though). Joonas Rikkonen 2017-08-31 18:53:37 +03:00
  • c7ae91da42 Added "state_out" connections to relay components Joonas Rikkonen 2017-08-31 12:25:32 +03:00
  • 96a64d45dc Moved MapEntity saving methods to the shared project (the server needs to be able to save subs in the campaign mode) Joonas Rikkonen 2017-08-30 18:09:48 +03:00
  • dc3b9baa0d Moved campaign UI logic from LobbyScreen to a separate class Joonas Rikkonen 2017-08-29 19:32:14 +03:00
  • a75fd12020 Started moving single player campaign logic to an abstract CampaignMode class to make it reusable in the eventual multiplayer campaign Joonas Rikkonen 2017-08-28 18:45:08 +03:00
  • 729108c7b9 Replaced usages of "shift" with "round" for consistency Joonas Rikkonen 2017-08-28 17:59:08 +03:00
  • 736de25e6c Fixed RangedWeapon launching projectiles in an incorrect rotation Joonas Rikkonen 2017-08-27 18:45:14 +03:00
  • e7f4d1474e Fixed interact rects not being calculated correctly for subinventory slots, the tooltip of a parent item isn't shown when highlighting a contained item Joonas Rikkonen 2017-08-27 18:10:17 +03:00
  • 79f7ce7071 Revert "Characters that are outside are rendered under particles -> creatures can be hidden by smoke from hydrothermal vents. [65211ec]" Joonas Rikkonen 2017-08-27 14:28:21 +03:00
  • 37a5888126 - More small caves in levels. - Groups of crawlers, mantises and husks can spawn inside the caves. - Salvage mission variants where the artifact spawns inside a cave. - Fixed ruins being placed inside the sea floor. - MonsterEvents don't spawn the monsters if no suitable spawn position is found. Joonas Rikkonen 2017-08-27 13:40:47 +03:00
  • 362428280a Multiple particle emitters can be be attached to a background sprite, hydrothermal vents push characters and subs upwards, tweaked hydrothermal smoke particles & trigger positioning Joonas Rikkonen 2017-08-26 17:07:13 +03:00
  • 1a12f46708 All remaining physics bodies are removed at the end of submarine unloading (freeing debug bodyShapeTextures, etc). -> LevelTrigger bodies don't have to be removed separately during unloading Joonas Rikkonen 2017-08-24 20:30:10 +03:00
  • 65094a02c1 Hydrothermal vents emit sounds & being inside the smoke makes the camera shake Joonas Rikkonen 2017-08-24 20:25:17 +03:00
  • 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. Joonas Rikkonen 2017-08-24 19:56:31 +03:00
  • 7186a8010a Fixed item pickup sounds playing during loading Joonas Rikkonen 2017-08-24 19:52:04 +03:00
  • 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. Joonas Rikkonen 2017-08-23 20:37:30 +03:00
  • 2d1c00546f Reimplemented switching to repair & monster music types (now handled by SoundPlayer) Joonas Rikkonen 2017-08-23 14:42:24 +03:00
  • f9504d0d76 Bunch of new level types, WIP hydrothermal vents Joonas Rikkonen 2017-08-22 21:12:29 +03:00
  • 6cf0f966aa Refactored event/task logic: - Instead of configuring a commonness value and difficulty for an event and creating new random events until the maximum difficulty of the selected level is reached, the number of events per level can be configured directly (and overridden for specific level types). - Removed task logic. The initial idea was to display the unfinished tasks to the player somehow and to use them as objectives for the AI crew, but those were scrapped and the tasks only ended up controlling which type of music to play. TODO: implement some kind of logic to determine when to play repair/monster music clips. Joonas Rikkonen 2017-08-22 21:06:04 +03:00
  • 65211ecbb6 Characters that are outside are rendered under particles -> creatures can be hidden by smoke from hydrothermal vents. Joonas Rikkonen 2017-08-22 19:06:29 +03:00
  • 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. Joonas Rikkonen 2017-08-22 18:58:45 +03:00
  • d772049cc0 Particle fixes, background sprites can emit particles if the camera is within the area where the particles are visible Joonas Rikkonen 2017-08-22 15:41:23 +03:00
  • cc40970b58 Separate ParticleEmitter & ParticleEmitterPrefab classes - the emission timer (and maybe some other values in the future) can't be in the prefab class because multiple objects may use the same prefab. Joonas Rikkonen 2017-08-20 22:05:30 +03:00
  • 04834f9f7f Background sprites can be set to spawn on the sea floor, particle emitters can be attached to background sprites Joonas Rikkonen 2017-08-20 19:07:07 +03:00
  • 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. Joonas Rikkonen 2017-08-20 19:05:25 +03:00
  • 3c0f099448 Entities can be nudged with the arrow keys in the sub editor Joonas Rikkonen 2017-08-20 13:20:52 +03:00
  • a6689b894d Map generation tweaking: some biomes are placed at the center of the map, some at the center and some randomly. Joonas Rikkonen 2017-08-20 13:20:23 +03:00
  • 8e71b4b828 Ocean floor is visible on sonar Joonas Rikkonen 2017-08-16 19:09:51 +03:00
  • 52a52cdfc7 Level biomes (basically a way of categorizing level generation parameters). The single player map is now divided into biomes, meaning that specific types of levels are generated at different areas of the map. Joonas Rikkonen 2017-08-15 22:43:14 +03:00
  • 9c372137bd Added randomly generated ocean floors. Atm the bottom is too deep to reach in most levels and there's not much to explore down there, but the plan is to have some levels where the bottom or some of the bottom formations are reachable (because we need hydrothermal vents!). Joonas Rikkonen 2017-08-15 19:19:48 +03:00
  • 6fe9130dd8 Fixed crash when projectiles stuck to items on dedicated server juanjp600 2017-08-14 21:35:19 -03:00
  • 8691789974 ScalableFont uses a non-obsolete override of the SpriteBatch.Draw method, + minor optimization Joonas Rikkonen 2017-08-13 20:01:00 +03:00
  • 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). Joonas Rikkonen 2017-08-13 20:00:52 +03:00
  • 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. Joonas Rikkonen 2017-08-13 19:52:56 +03:00
  • 98b4b904d4 Inventory slots are highlighted if the cursor is within 5 pixels of the rect. The spacing between inventory slots is 10 px, so now items can't be accidentally dropped by releasing the cursor between slots. Joonas Rikkonen 2017-08-11 17:49:43 +03:00
  • 75a4d641bf Medical scanner shows husk infections Joonas Rikkonen 2017-08-10 20:30:48 +03:00
  • f40d244deb Moved inventory UI update logic to the client project, sound effects for picking up and dropping items Joonas Rikkonen 2017-08-10 20:30:29 +03:00
  • fd844fd696 Option to make wearable sprites use the depth of the sprite instead of using the depth of the limb it's attached to Joonas Rikkonen 2017-08-10 18:19:06 +03:00
  • b70f6fb3ca v0.6.1.4 Joonas Rikkonen 2017-08-09 22:42:31 +03:00
  • f7f738765b Fixed "collection was modified" exceptions when a huskified human is killed while enumerating the character list (e.g. when killed by an explosion) Joonas Rikkonen 2017-08-09 19:37:37 +03:00
  • 6eba16ff4e Fixed clients spawning monsters twice (first during mission/event initialization and again when the server notifies them about the spawning) Joonas Rikkonen 2017-08-08 21:48:13 +03:00
  • a8ec821382 Handcuffed AICharacters can't climb ladders Joonas Rikkonen 2017-08-08 21:17:32 +03:00
  • 0159cc3f25 Submarine position syncing fix: Joonas Rikkonen 2017-08-07 23:14:25 +03:00
  • d0a1a8413b Fixed contained items applying status effects even if their condition is 0.0 (-> spent fuel rods can't be used in reactors anymore) Joonas Rikkonen 2017-08-07 19:37:19 +03:00
  • a86a10b177 Fixed the spamchatmessages debug command Joonas Rikkonen 2017-08-03 19:29:53 +03:00
  • 264015346d Clients ignore messages about attaching an item to a wall if the item is not attachable, and don't drop the the items before attaching (because it disconnects all connected wires). The spamevents debug command didn't work correctly because of this, and I'd imagine that the latter could have caused wires to drop from some attached items when joining mid-round. Joonas Rikkonen 2017-08-03 19:29:27 +03:00
  • 3b6630562c Fixed ruin generator attempting to create walls with a negative width/height if a wall gets placed inside another room with either end of the wall exactly at the edge of the room (example seed: cBLgZ2im). Joonas Rikkonen 2017-08-02 18:02:02 +03:00
  • 6e95bbb524 Server log remembers the state of the filters and applies the filter when opened Joonas Rikkonen 2017-08-02 17:50:34 +03:00
  • 9c039e7574 Fixed exceptions during job assignment if a client or the host is controlling a character with no CharacterInfo (i.e. any non-human character) Joonas Rikkonen 2017-08-01 21:29:55 +03:00
  • 1e11d5ab28 Fixed server failing to assign jobs to all clients on some modded servers: if the max amount of players per job had been reached on all the jobs the client has in their preferences, the client would not get a job at all (causing crashes later on when trying to access the client's job). Now the server assigns a random job if none of the preferred jobs are available. Joonas Rikkonen 2017-08-01 19:46:24 +03:00
  • 7553d63a99 Reverted 719f194 because it broke spawning items at world-space positions. Now the submarine-field of the body is simply set to match the item to make sure it gets rendered at the correct position. Joonas Rikkonen 2017-08-01 18:04:30 +03:00
  • 1bc2523269 Added some GPU info to the crash reports, all available debug console messages are included in the reports (not just the 15 latest ones), restart attempts caused by SharpDXExceptions are logged Joonas Rikkonen 2017-07-31 20:43:08 +03:00
  • d5e2b202d1 Repair tools can be used on bodies with the CollisionLevel collision category (-> ruins can be cut again) Joonas Rikkonen 2017-07-31 18:00:36 +03:00
  • 6a96a0c801 v0.6.1.3 Joonas Rikkonen 2017-07-31 17:59:27 +03:00
  • f58566b0d5 NetEntityEvent.IsDuplicate null reference fix for real now Joonas Rikkonen 2017-07-28 19:34:01 +03:00
  • 9e3f4bfa5a Syncing crouching from server to clients, not just from clients to server Joonas Rikkonen 2017-07-28 18:59:47 +03:00
  • 719f19418c Fixed invisible diving suits in respawn shuttles (and possible some other bugs): item constructor instantiates the physics body of the item before finding the hull the item is inside, because otherwise the submarine-field of the body won't be updated until the item moves, causing the item to be rendered at a complete wrong position. Joonas Rikkonen 2017-07-28 17:29:44 +03:00
  • 602b99c9fb Fixed hulls not being rendered in the sub editor Joonas Rikkonen 2017-07-28 17:26:56 +03:00
  • db05bbf4c0 Another dockingport syncing fix Joonas Rikkonen 2017-07-27 21:33:09 +03:00
  • 2090bbf04e Platforms or stairs don't obstruct RepairTool raycasts (-> improperly placed platforms/stairs don't prevent fixing walls) Joonas Rikkonen 2017-07-27 20:11:34 +03:00
  • 3c04d2c479 Using SetClientCharacter forces the client's line of sight effect back on Joonas Rikkonen 2017-07-27 18:03:18 +03:00
  • 061ed7392e v0.6.1.2 Joonas Rikkonen 2017-07-27 17:27:13 +03:00
  • 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). Joonas Rikkonen 2017-07-26 21:35:50 +03:00
  • 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. Joonas Rikkonen 2017-07-26 21:03:21 +03:00
  • 520e1df1a5 Fixed exceptions in NetEntityEvent.IsDuplicate if the data array contains null Joonas Rikkonen 2017-07-26 20:18:35 +03:00
  • c63248ee51 DockingPort syncing fix: the server didn't take into account that the IDs of the hulls created between docking ports may change during loading if another sub has an entity with the same ID. The clients would still use the old ID, which lead to syncing issues such as client-side fires inside docking ports (for example in HSE Kullervo Carrier). Joonas Rikkonen 2017-07-26 18:46:29 +03:00
  • a627f25c95 Fixed missing kick/ban buttons in the crew menu Joonas Rikkonen 2017-07-26 17:49:55 +03:00
  • bcb0dbfa90 Tab doesn't autoselect the chatbox when the debug console is open Joonas Rikkonen 2017-07-26 17:21:11 +03:00
  • 6faf658ae0 Fixed SetClientCharacter & Revive Joonas Rikkonen 2017-07-26 17:19:35 +03:00
  • f062ca0e4d Wire nodes are synced when a player adds a new node and when the wire is connected to something Joonas Rikkonen 2017-07-25 23:27:30 +03:00
  • 431e5bb9b8 Attachable items are always attached by default when adding them in the sub editor Joonas Rikkonen 2017-07-25 21:53:57 +03:00
  • 286c1ad950 Fixed crashing when a client clears connections of a wire (because the logging attempted to access Character.Controlled instead of the client's character), fixed the (completely broken) ConnectionPanel.ServerRead Joonas Rikkonen 2017-07-25 20:26:41 +03:00
  • f460b4c2bc Fixed queued debug messages not being included in crash reports Joonas Rikkonen 2017-07-25 18:02:04 +03:00
  • aaea8bc709 Dedicated servers can use autorestart Joonas Rikkonen 2017-07-24 21:21:00 +03:00
  • 379c65e07d Fixed dedicated servers ignoring armor Joonas Rikkonen 2017-07-24 19:12:18 +03:00
  • 96c4379f9f v0.6.1.1 Joonas Rikkonen 2017-07-24 18:25:26 +03:00
  • d007301fc4 Fixed GUIMessageBoxes being impossible to close in the launcher Joonas Rikkonen 2017-07-24 17:03:13 +03:00
  • 446dce9545 Fixed diving suits Joonas Rikkonen 2017-07-24 17:02:13 +03:00
  • f3f8fe8193 v0.6.1.0 Joonas Rikkonen 2017-07-23 20:12:06 +03:00
  • bf7677154b Disabled debug logging of the loading coroutine when verbose logging isn't enabled Joonas Rikkonen 2017-07-23 20:11:34 +03:00
  • bce3d492ba Updated Vanilla content package & tweaked default client config Joonas Rikkonen 2017-07-20 21:49:00 +03:00
  • ce3a8df9e0 - Fixed some properties in GameServerSettings not being saved due to being private. - Fixed serversettings.xml overriding the settings entered in the "host server" menu in the client project. - Added a default serversettings.xml file. Joonas Rikkonen 2017-07-20 21:03:00 +03:00
  • d694c7efdc Fixed teleport command not working on other characters than the controlled one Joonas Rikkonen 2017-07-18 19:41:18 +03:00
  • 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) Joonas Rikkonen 2017-07-18 19:40:25 +03:00
  • 9be44dc479 DebugConsole fix Joonas Rikkonen 2017-07-18 18:36:30 +03:00
  • 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). Joonas Rikkonen 2017-07-18 18:33:30 +03:00