Commit Graph

64 Commits

Author SHA1 Message Date
Joonas Rikkonen
cae366e807 (4d924cc86) Fixes to New Game and Game Settings layouts
+ merge fix
2019-04-01 22:55:04 +03:00
Joonas Rikkonen
a0e1ba52eb (0bd92547e) Show ping direction when adjusting the direction slider even if directional ping is not enabled. Closes #1298 2019-04-01 22:48:47 +03:00
Joonas Rikkonen
885c30f70d (10a8ba8fc) Fix reversing getting reset when the target is not in range causing issues in steering. 2019-04-01 22:48:33 +03:00
Joonas Rikkonen
ed3d5fadeb (f46ddf83f) Fixed calyxanide not being usable in syringe guns 2019-04-01 22:48:20 +03:00
Joonas Rikkonen
cbb3216466 (633f44200) Emptying the "required items" field of an item in the sub editor now removes the item requirements (instead of using the default ones) 2019-04-01 22:48:03 +03:00
Joonas Rikkonen
4558d8b919 (f17acef79) Added the new electrical discharge sound to the project file 2019-04-01 22:47:50 +03:00
Joonas Rikkonen
7cb70fa344 (73193fb71) Updated a couple of sound effects 2019-04-01 22:47:36 +03:00
Joonas Rikkonen
2eaf22683d (ae643deeb) Added alive checks to a couple of diving gear status effects (don't consume tanks when dead) 2019-04-01 22:47:22 +03:00
Joonas Rikkonen
ec7e23061b (38b5d9aad) Experimental changes to syncing ragdolled (unconscious/dead) characters: - Higher error tolerance when syncing the positions. It's often hard to get the main limb exactly to the same position as the collider, because the positions of the limbs aren't synced and the pose of the ragdoll may differ between the server and clients. Increasing the tolerance makes it less likely for dead/unconscious characters to "twitch" when the game attempts to force the main limb to the position of the collider. - If the position of the ragdoll differs from the position of the collider so much that CheckDistFromCollider disables limb collisions, apply an additional force to all limbs to force the ragdoll to the correct position. Otherwise the ragdoll can occasionally start "hanging" midair, clipping through solid objects, because the main limb's pull joint doesn't necessarily have enough force to pull the entire ragdoll up to the collider. 2019-04-01 22:47:03 +03:00
Joonas Rikkonen
0ca4a8db06 (169dbd4fd) Increased submarine masses to make it less easy for characters to push them around. 2019-04-01 14:26:29 +03:00
Joonas Rikkonen
7e67c20ccd (b99c0ef39) Fix the enemies not selecting another attack if they cannot reach the target. 2019-04-01 14:26:01 +03:00
Joonas Rikkonen
5cc2806185 (3db48532f) Give joining players "None" permissions by default (so server hosts can automatically give players some permissions if they want to). Save client permissions using the name of the permission preset instead of listing all the permissions given by the preset. Partially implements #1334 2019-04-01 14:25:33 +03:00
Joonas Rikkonen
9e1a4d8902 (718d22401) Don't attempt to send position updates for items that have no enabled physics body (e.g. attached items). Closes #1376 2019-03-31 19:13:24 +03:00
Joonas Rikkonen
e6c3d6d537 (6cc2e0541) Merge branch 'dev' of https://github.com/Regalis11/Barotrauma-development into dev 2019-03-27 21:00:33 +02:00
Joonas Rikkonen
86ded4b1d5 (2f573ba39) Fix Hammerhead spritesheet orientation. 2019-03-27 20:54:13 +02:00
Joonas Rikkonen
4cb3469c4f (8f9250974) Fix spritesheet orientation offestting the joint widgets in the wrong direction, which made it a bit difficult to use. 2019-03-27 20:54:00 +02:00
Joonas Rikkonen
ad1a726e91 (8d8ed7727) Fixed: Invalid title font & color in tutorial infobo. Added: Some rudimentary scaling based on screen resolution for VideoPlayer 2019-03-27 20:53:46 +02:00
Joonas Rikkonen
8808edcd21 (025652eb8) Fixed: Holding an item preventing interaction with tutorial elements, medical overlay appearing on top of video / info, reactor command tutorial not completing when powered up by the player 2019-03-27 20:53:30 +02:00
Joonas Rikkonen
ec481eba45 (e54f169fe) Better quality videos for tutorial, removed sound 2019-03-27 20:53:17 +02:00
Joonas Rikkonen
0c8772f6a1 (4589e2b8d) Minor changes to tutorial text 2019-03-27 20:53:00 +02:00
Joonas Rikkonen
080ac78ded (5c35a640e) Update tutorial-rework with dev 2019-03-27 20:52:47 +02:00
Joonas Rikkonen
ff4ecd15b3 (c7ebe3cdb) Fixed: Old TextManager.Get call 2019-03-27 20:45:30 +02:00
Joonas Rikkonen
3f82c9a2cb (f417b026f) Fetched: Changes for playing video tutorial from local branch 2019-03-27 20:45:14 +02:00
Joonas Rikkonen
237f164123 (afe15e7b2) Fixed server sending campaign saves and campaign character data to clients after the game mode has been switched to something else. Closes #1346 2019-03-26 17:12:45 +02:00
Joonas Rikkonen
6c4649fe3f (4b1fa5c86) Fixed client-side console errors during campaign setup because the client tried to load save files that only exist server-side. Now the server sends the information needed for the campaign setup window in the CAMPAIGN_SETUP_INFO message. 2019-03-26 17:10:20 +02:00
Joonas Rikkonen
4b3e78b566 (913ed2ce9) Merge remote-tracking branch 'origin/dev' into enemy-ai 2019-03-26 14:07:11 +02:00
Joonas Rikkonen
14832e2040 (aea5053bf) Fix wall target position not updated when the submarine moves. Fix latchontoai attach positions and distance checks. Detaching should also work both when the characters can get in and when the submarine velocity is enough to detach the characters. Still not synced, but re-enabled for testing. 2019-03-26 14:06:55 +02:00
Joonas Rikkonen
ccd496b769 (99836db69) Fixed clients being unable to end campaign rounds at all if the sub isn't at the start/end outpost (regardless if they have the permission to end the round or not), added a verification prompt when trying to end the round when the sub isn't at either outpost. 2019-03-26 14:06:40 +02:00
Joonas Rikkonen
7c9d0aac03 (ef1d7a5a2) Campaign fix: clear missions from locations that change their type, and all adjacent locations. Caused missions to still be available when they logically shouldn't be (e.g. a transport mission from an uninhabited location to another) and syncing issues in multiplayer. 2019-03-25 19:55:38 +02:00
Joonas Rikkonen
86c4b6a3ae (9d3dd6da9) Reattempt decompressing saves files and initiating file transfers a few times before throwing an error. Running multiple instances of the game from the same install (or hosting a server as a client) occasionally causes IOExceptions because the instances try to access the same files. 2019-03-25 19:51:39 +02:00
Joonas Rikkonen
006d53ccf1 (5a10ddbee) Server ends the round if the owner of the server reports an error. 2019-03-25 19:51:25 +02:00
Joonas Rikkonen
965a378f0e (5d67aa3f5) Merge remote-tracking branch 'origin/dev' into enemy-ai 2019-03-25 19:50:58 +02:00
Joonas Rikkonen
1fa94dd2b9 (b6e2dda8d) Adjust Crawler and Mudraptor targeting priorities. 2019-03-25 19:50:44 +02:00
Joonas Rikkonen
291623abb8 (59bf3d346) Double the Mudraptor attack speed. 2019-03-25 19:50:30 +02:00
Joonas Rikkonen
e06d4b777f (e8b93e8d7) Increase the door ai target ranges. The values are halved for most monsters, because they currently have the sight of 0.5. 2019-03-25 19:50:16 +02:00
Joonas Rikkonen
fd5d2b86af (a97ef2847) AI improvements: - Fix steering issues when attacking (yet again): We still have to offset the sim positions. - Fix the steering vector when escaping from the enemy that is inside the sub. - Enemies can now navigate out from the sub, when escaping. - Fix door tag not being used when targeting items. Change the priority boosts considering doors. Should now entirely ignore the outer doors when inside and inner doors when outside. - Change the way enemies react to characters that are not in the same sub. Halve the priority when the character is not in the same hull. Add some boost to the priority when escaping. 2019-03-25 19:50:02 +02:00
Joonas Rikkonen
19d5ed5d66 (14f26adfa) Take the position of a sub's docking port into account when determining where to place outposts. Humpback's docking port for example is 600 units to the right from the sub's centerpoint, which prevented it from docking in some levels because the left side of the sub hit the wall at the left side of the outpost. Closes #1028 2019-03-25 19:49:48 +02:00
Joonas Rikkonen
26594e2c6c (4b33eda28) Merge branch 'dev' into enemy-ai 2019-03-25 19:49:34 +02:00
Joonas Rikkonen
5ec6a7fba9 (325184804) Fix distance based attacks not registering if they hit a submarine. 2019-03-25 19:49:05 +02:00
Joonas Rikkonen
c2e8263927 f9e8100...ccacceb
commit ccacceb16a184f00ecd384eede64ca9c4fab08a0
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Mon Mar 25 14:05:59 2019 +0200

    NetEntityEventManager checks the length of the event data (and logs an error if it's too long) before checking if there's still room to keep writing events in the packet. Checking the available room first could lead to situations where an excessively large event can't fit to any packet, "soft-locking" the EventManager without any error messages.

commit 5ac8259372aa900adc724aa4da1fd81af41ca195
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Mon Mar 25 13:41:52 2019 +0200

    Don't display disabled limbs on sonar (i.e. severed limbs that have "faded out")

commit 5f84df73ad86be96f3678c450351b3905e7317a4
Merge: b981f1635 dc429d6c4
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Mon Mar 25 13:41:16 2019 +0200

    Merge branch 'dev' of https://github.com/Regalis11/Barotrauma-development into dev

commit b981f163575b2bfc9a83b9925c94eca19b9d4554
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Mon Mar 25 13:36:19 2019 +0200

    Multiplayer campaign fixes:
    - Server uses a different temp folder to decompress save/sub files into than the clients. Should fix files occasionally getting corrupted and exceptions when trying to read the files when hosting a server from the main executable.
    - Some additional debug logging.
    - Use the base names of the adjacent locations as level seeds (i.e. "Vorta" instead of "Vorta Outpost"). The levels should not change when the type (and full name) of the location changes.

commit 42c5d18df77fc7acd5873d8e25f20bdd31b1ed76
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Mon Mar 25 13:31:06 2019 +0200

    Don't transfer files through the network when sending them to the owner of the server (i.e. a client hosting directly from the main executable), but simply tell the client where the file is located.

commit dc429d6c450f4893fe29c51d3c830527e587a871
Author: Daniel Asteljoki <daniel.asteljoki@gmail.com>
Date:   Mon Mar 25 13:30:26 2019 +0200

    Added labels next to periscopes in Humpback and Dugong

commit 789f02a87a2917dd2ae378f136cbe8dd3236c60d
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Mon Mar 25 13:29:29 2019 +0200

    If loading a submarine fails, wait a bit and retry up to 4 times. Fixes loading occasionally failing when running multiple instances of the game from the same directory.

commit be9ea3a58832992b6226917117247e1bf1efeff9
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Mon Mar 25 11:03:36 2019 +0200

    Fixed a bunch of disconnection messages being in an incorrect format & DisconnectUnauthClient not getting the messages from the xml

commit c6f744b4d6b3520720010f5cd4f22a25b42bfc8b
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Mon Mar 25 10:43:10 2019 +0200

    Log entity event errors into server logs when verbose logging is enabled
2019-03-25 14:30:00 +02:00
Joonas Rikkonen
c3b5c414cb 4e002dc...f9e8100
commit f9e8100140d99d30db551c16523f04cf042fb107
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Sun Mar 24 20:37:23 2019 +0200

    Automatically grab adjacent ladders when the top/bottom of the current ladder is reached. Makes moving through docking ports a little less confusing. Closes #1337

commit 7ad697036299c3dae0145f89dc7e1f4fec22953d
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Sun Mar 24 20:11:57 2019 +0200

    Fixed windows clients being unable to start a campaign in servers running on Linux. Caused by submarine paths not matching because the clients would use backslash in the filepath while Linux uses a slash. The submarine selection logic also had an additional issue: the clients would assume the submarine is in the default Submarines folder, even though the server may actually store them somewhere else. Now the client communicates the selected sub to the server by sending the name and MD5 hash instead of the path, so mismatching paths shouldn't cause problems anymore. Closes #1332
2019-03-24 20:38:12 +02:00
Joonas Rikkonen
c4cd346ae2 483f2ad...4e002dc
commit 4e002dc86422ca441f97e42780af9ed3545e835f
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Sun Mar 24 19:39:44 2019 +0200

    Fixed compiler error in GameServer
2019-03-24 19:40:17 +02:00
Joonas Rikkonen
27917ee376 7b471b5...483f2ad
commit 483f2ad4fd9d91b9763d25df592a899cdf39ba67
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Sun Mar 24 19:19:01 2019 +0200

    Instead of making coilgun bolts continuously deteriorate to give them a lifetime of 5 seconds, simply create a delayed status effect that removes them after 5 seconds of being launched.

commit 00b8d48d4d1d933e76a6c0d7df5320c50dc0a07d
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Sun Mar 24 19:16:40 2019 +0200

    Wait at least 0.15 seconds before creating a new condition update event for an item. Some rapidly deteriorating items (e.g. coilgun bolt, faraday artifacts) would otherwise cause new events to be created at an excessively high rate.

commit 84e6948a4898dd040b2a84eb5f1ad97c20dfc69f
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Sun Mar 24 19:14:58 2019 +0200

    Server can send multiple network event packets per update if there's too many events to fit in one packet (up to 4 packets per update).

commit 40797e91d67f965ac6d292367fef5386214abbdb
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Sun Mar 24 17:34:49 2019 +0200

    NetEntityEvent changes:
    - Don't restrict the number of events per message, but instead write as many events as the packet can fit (up to a maximum of 1024 bytes to leave some space for other types of data (event IDs, chat messages and such)).
    - Decrease the delay after which events can be resent (RTT * 1.5 -> RTT).

commit bfefbb5d7da3ce6a5fe9cb7ff733ec5df37a8a15
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Sun Mar 24 14:31:03 2019 +0200

    Fixed FixDurationLowSkill & FixDurationHighSkill parameters in Repairable being case-sensitive, causing almost none of the xml values to be used. + Moved client-specific repairable methods to the client project, and server-specific to the server project.

commit 311f67c6c6b8d2cd9f4f4ca820e42316938c4f17
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Sun Mar 24 14:09:10 2019 +0200

    Fixed "trying to add a dead character to crewmanager" errors when attempting to revive a character killed by some other affliction than internal damage, bleeding or burns. Closes #1341
2019-03-24 19:21:41 +02:00
Joonas Rikkonen
05cc34afd8 4d2bcb1...1473f77
commit 1473f77ba0c85b80d48dce3e0fca809a9d5da98c
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Fri Mar 22 12:39:03 2019 +0200

    Server automatically ends rounds if there have been no players alive in 60 seconds and respawning is not allowed during the round. Otherwise campaign rounds can get "bricked" if all the clients die/disconnect and there's no-one who's allowed to manually end the round. Closes #1319

commit 7096983fb10e48c2866393d30420bfaa79a0719b
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Fri Mar 22 12:03:10 2019 +0200

    Some extra error logging in an attempt to diagnose #1327 (seems that the server is trying to start a campaign round after the campaign has been disposed and another game mode selected).

commit 2d7a3be83cd8865869837879b965fa9aeb046042
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Fri Mar 22 10:53:08 2019 +0200

    Use null as the rotation and angular velocity of a character's collider in network state buffers if the collider is set to a fixed rotation (i.e. when standing). Previously the _current_ rotation and angular velocity was used if the server didn't send the values, which caused the collider to "wobble" when getting up from the ground, because the clients used the current rotation and angular velocity to determine if their predicted state is correct, even though they should've been using past states (or rather, not attempting to correct at all because both the rotation and ang velocity should be 0 when the rotation is fixed).

commit 2e2fd7078798703bc5d6ae398f75fa580ecca566
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Thu Mar 21 22:44:11 2019 +0200

    Disabled kicking clients out of the server if their Steam auth becomes invalid after they've already been authenticated. Got some reports from players about this occasionally happening for no apparent reason, and I don't see the need to kick the clients if they've already been successfully authenticated during that session.
2019-03-22 14:01:25 +02:00
Joonas Rikkonen
cc9ae260a3 58005a8...01f115d
commit 01f115d32d768c76d01bc5fad5cfe2e3f88333cc
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Thu Mar 21 13:09:32 2019 +0200

    MidRoundSyncing changes (could potentially fix #1281 and #1323):
    - Don't mark events as "sent to all" if there's a midround syncing client who'll need those events once the midround sync is done.
    - Don't keep updating midround syncing clients' unreceived event count as new unique events are created during midround sync, but instead just send the clients the unique events they were missing at the time of joining. Because the new events created during the midround syncing aren't removed anymore, the joining client will be able to receive them when they switch to normal sync. The old behaviour might've lead to cases where the client can't "catch up" with the new events while midround syncing, causing them to time out.

commit 915aeb4e322ad04968556484aea74cf8b0070c3e
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Thu Mar 21 12:16:57 2019 +0200

    Fixed end round vote count overlapping with the server log button, display the votes as votes/max instead of y/n.

commit 62e3b272bb0235553562578493bf638a047235ab
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Wed Mar 20 23:36:03 2019 +0200

    Updated handheld sonar UI graphics & moved it to the bottom left corner of the screen

commit b93c7312c6bf4b560c8259e79650dbf1444072c9
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Wed Mar 20 23:10:08 2019 +0200

    Hide the start button from the campaign UI if the client doesn't have the permission to manage the campaign or rounds.
2019-03-21 14:52:00 +02:00
Joonas Rikkonen
3f13112b69 814f6c9...58005a8
commit 58005a84e36a4658cb9a5dba2de3041d8e3511b1
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Wed Mar 20 22:50:54 2019 +0200

    Fixed incorrect submarine & level seed in server logs when playing campaign mode.

commit 39119f862e7e69608cf418d06c74c784330461d2
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Wed Mar 20 22:50:19 2019 +0200

    Fixed campaign view button overlapping with the "ready to start" tickbox in NetLobbyScreen. Closes #1315
2019-03-20 22:52:25 +02:00
Joonas Rikkonen
579e7f9abc f202506...a75a560
commit a75a560881604a05789676800b7f157f30263434
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Wed Mar 20 17:19:12 2019 +0200

    Adjusted the collider in one of the wall pieces

commit 309a6966d065babc9f024fce8e7729cb84de06f8
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Wed Mar 20 17:15:46 2019 +0200

    Make sure the selected submarine exists before attempting to start a new multiplayer campaign. Related to #1311 - doesn't fix the underlying issue but prevents the server from starting the campaign without a sub when the issue occurs.
2019-03-20 17:20:44 +02:00
Joonas Rikkonen
e8025cc66e d38c50c...f202506
commit f20250657eda223fddacf812a477727b1a2b507b
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Wed Mar 20 16:50:39 2019 +0200

    Ending a campaign round by talking to watchman doesn't require any special permissions. Closes #1313
2019-03-20 16:51:22 +02:00
Joonas Rikkonen
81fafaf3f5 633e54b...7cc231b
commit 7cc231bc51890e7fde50bbac3413328dd7bc5189
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Wed Mar 20 14:23:06 2019 +0200

    Fixed server creating network events in Item.Load due to CreateServerEvent calls in some of the ItemComponent properties (e.g. LightComponent.IsOn). Caused syncing problems because the entity spawn events aren't created until the item has been loaded, leading to situations where clients fail to read events because the entity doesn't exist at their end yet (see #1293). TODO: get rid of console errors when attempting to create events during component initialization in the Item constructor.

commit ac1bf32edf125d95d56775e1e8ce54ac7671328c
Author: itchyOwl <lauri.harkanen@gmail.com>
Date:   Wed Mar 20 13:49:55 2019 +0200

    Fix Hammerhead attack causing warping. Adjust the targeting priorities.

commit e3e032d7c3a753397269bb4236c1494ab0809004
Author: itchyOwl <lauri.harkanen@gmail.com>
Date:   Wed Mar 20 13:48:47 2019 +0200

    Enemy AI fixes:
    - Fix enemies "fleeing" after they have been shot. There was a steering issue when they targeted characters that were inside the sub when they were outside of it
    - Fix the previous target resetting too often
    - Fix the wall target resetting too often
    - Use world positions instead of sim positions where possible, because the sub positions are then taken into account

commit 847cf5ffd9212a542000dbf12332b2c08756579a
Author: Daniel Asteljoki <daniel.asteljoki@gmail.com>
Date:   Wed Mar 20 12:00:15 2019 +0200

    Remora: added power connection between sub and drone, removed non-scaling hull parts

commit a9c2e8cc124713e90dd44a9adf2fcbb3204b2c4d
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Wed Mar 20 11:24:37 2019 +0200

    Server sets clients' last received campaign save/update IDs to one before the current up-to-date IDs (instead of zero) when a campaign changes. Zero would get interpreted as a more up-to-date ID if the IDs of the current campaign are close to ushort.MaxValue where the IDs wrap around.

commit 07d82b64e6990eacaf8905aed1a5d7c61224e47d
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Tue Mar 19 18:24:01 2019 +0200

    Log level inequality error messages & client error reports handled by the server to GameAnalytics
2019-03-20 14:25:03 +02:00
Joonas Rikkonen
6a12058148 8a2a718...633e54b
commit 633e54b2ffb4e5ec13c1fa5ce8170f5e726f8e10
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Tue Mar 19 18:02:21 2019 +0200

    Include level equality check value in round start messages, so clients immediately know if the level generated at their end doesn't match the one generated by the server (which will cause ID mismatches and more hard-to-diagnose desync kicks during the rounds). Related to #848

commit 68e410705115ece2fcc4ca9c7d9856cc1dd5c1f8
Author: Joonas Rikkonen <poe.regalis@gmail.com>
Date:   Tue Mar 19 18:01:01 2019 +0200

    Readded client error handling from ef9afed. Not sure how it got removed, probably a messed up merge somewhere down the line when working on the client-server-separation branch or when merging the Steam version work from dev to master. In any case this should help diagnose desync kicks such as #1293.
2019-03-19 18:03:43 +02:00