Commit Graph

91 Commits

Author SHA1 Message Date
Joonas Rikkonen
6bfca5f7fe - Hitscan projectiles, projectiles can be set to disappear after hitting something.
- Option to adjust ranged weapon spread (separate values for "normal spread" and when being used by an unskilled character).
- Option to disable explosion flashes.
2017-10-18 23:48:25 +03:00
Joonas Rikkonen
142920d704 - Added sprites for damaged doors.
- Fixed destroyed doors being impossible to repair because the repair tool raycasts wouldn't hit the disabled body of the door.
- Destroyed doors don't cast shadows and the body isn't re-enabled until the door is restored to 50% health.
2017-10-12 19:45:49 +03:00
juanjp600
3a67418985 Minor optimizations + Potential bugfixes 2017-10-11 22:52:13 -03:00
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
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
3aaf5cbae2 ObjectProperties support enums, added a dropdown for enum properties to item editing UI. 2017-10-04 20:07:57 +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
f127c410b0 Option for clients to spectate the game without respawning 2017-09-25 21:31:21 +03:00
Joonas Rikkonen
5eb1544f1e Clients can be given a permission to select the sub or the game mode 2017-09-24 17:11:10 +03:00
Joonas Rikkonen
04b0c63f30 Campaign mode can't be voted for. The host has to manually create/select the campaign save, so switching to the campaign mode when the host isn't present would cause problems. 2017-09-24 13:41:54 +03:00
Joonas Rikkonen
5a4bc0242d Voting UI fixes:
- The vote count texts are removed when voting is disabled.
- Server sends vote status to joining clients (-> clients see the number of votes immediately, not after someone votes something).
- Server refreshes vote count texts when a client disconnects.
2017-09-21 20:37:30 +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
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).
2017-09-19 22:05:42 +03:00
Joonas Rikkonen
e26600d088 Added MP campaign setup to the dedicated server & some console commands for managing the campaign 2017-09-17 20:03:18 +03:00
Joonas Rikkonen
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.
2017-09-17 15:55:24 +03:00
Joonas Rikkonen
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.
2017-09-16 19:16:56 +03:00
Joonas Rikkonen
348d81a66f MP campaign fixes 2017-09-13 20:34:10 +03:00
Joonas Rikkonen
63bca3c7ea Syncing campaign state & save files with clients (WIP) 2017-09-11 21:32:48 +03:00
Joonas Rikkonen
3feee93c53 Campaign saving fixes 2017-09-03 13:08:10 +03:00
Joonas Rikkonen
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).
2017-08-31 18:53:37 +03:00
Joonas Rikkonen
96a64d45dc Moved MapEntity saving methods to the shared project (the server needs to be able to save subs in the campaign mode) 2017-08-30 18:09:48 +03:00
Joonas Rikkonen
dc3b9baa0d Moved campaign UI logic from LobbyScreen to a separate class 2017-08-29 19:32:14 +03:00
Joonas Rikkonen
a75fd12020 Started moving single player campaign logic to an abstract CampaignMode class to make it reusable in the eventual multiplayer campaign 2017-08-28 20:19:21 +03:00
Joonas Rikkonen
729108c7b9 Replaced usages of "shift" with "round" for consistency 2017-08-28 17:59:08 +03:00
Joonas Rikkonen
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 2017-08-27 18:10:17 +03:00
Joonas Rikkonen
79f7ce7071 Revert "Characters that are outside are rendered under particles -> creatures can be hidden by smoke from hydrothermal vents. [65211ec]"
Caused characters to be rendered behind ruins, need to come up with a better solution
2017-08-27 14:34:11 +03:00
Joonas Rikkonen
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.
2017-08-27 13:40:47 +03:00
Joonas Rikkonen
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 2017-08-26 17:07:13 +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
7186a8010a Fixed item pickup sounds playing during loading 2017-08-24 19:52:04 +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
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.
2017-08-22 21:12:06 +03:00
Joonas Rikkonen
65211ecbb6 Characters that are outside are rendered under particles -> creatures can be hidden by smoke from hydrothermal vents. 2017-08-22 19:06:29 +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
d772049cc0 Particle fixes, background sprites can emit particles if the camera is within the area where the particles are visible 2017-08-22 15:41:23 +03:00
Joonas Rikkonen
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. 2017-08-20 22:05:30 +03:00
Joonas Rikkonen
04834f9f7f Background sprites can be set to spawn on the sea floor, particle emitters can be attached to background sprites 2017-08-20 19:07:07 +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
3c0f099448 Entities can be nudged with the arrow keys in the sub editor 2017-08-20 13:20:52 +03:00
Joonas Rikkonen
a6689b894d Map generation tweaking: some biomes are placed at the center of the map, some at the center and some randomly. 2017-08-20 13:20:23 +03:00
Joonas Rikkonen
8e71b4b828 Ocean floor is visible on sonar 2017-08-16 19:09:51 +03:00
Joonas Rikkonen
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.
TODO: more variety between biomes, assign the map biomes in a less random way (e.g. splotches of easier biomes connected by more dangerous ones, very dangerous biomes at the edges of the map...), option to select the biome in MP?
2017-08-15 22:43:58 +03:00
Joonas Rikkonen
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!).
Ice walls also use vertex colors now, could be used to add some cosmetic variety to the levels.
2017-08-15 19:20:21 +03:00
Joonas Rikkonen
8691789974 ScalableFont uses a non-obsolete override of the SpriteBatch.Draw method, + minor optimization 2017-08-13 20:01:00 +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
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. 2017-08-11 17:49:43 +03:00
Joonas Rikkonen
75a4d641bf Medical scanner shows husk infections 2017-08-10 20:30:48 +03:00