Commit Graph

187 Commits

Author SHA1 Message Date
Joonas Rikkonen a415f1fe23 Fixed AI characters being able to attack through walls. Closes #901 2018-11-11 19:11:20 +02:00
Joonas Rikkonen 329928fc8f Fixed characters occasionally getting teleported outside the sub for a few frames when moving between docked subs. Closes #546 2018-11-11 17:19:00 +02:00
Joonas Rikkonen cea5d5b074 Fixed client-side docking ports creating duplicate bodies on doors, causing characters to collide with an invisible door when trying to move between docked subs (until the server forces them through it). + TODO note about bugged hull finding logic in UpdateNetPlayerPosition! 2018-11-10 20:21:43 +02:00
Joonas Rikkonen a85b496f23 WIP fixes to ragdoll simple physics mode (see #895). When simple physics is enabled, only the collider of the character moves and all the limbs and joints are disabled. This caused "attempted to move pulljoint anchor extremely far" errors, because the game still attempted to move the limbs to the collider via pull joints. TODO: do more testing to make sure simple physics doesn't cause other physics errors, fix dragging in simple physics mode. 2018-11-09 14:29:25 +02:00
Joonas Rikkonen 20da81e5dc Fixed player's character staying in the unsynced state when rejoining while the character is dead/unconscious. Closes #857 2018-11-05 12:41:11 +02:00
Joonas Rikkonen 2b1dacbf2f The ActionType of an Attack's statuseffect is considered "OnEating" instead of "OnUse" if the target is dead. Prevents husks from gaining health by attacking corpses (which allowed players to huskify themselves on purpose and stay alive indefinitely). 2018-10-08 11:23:52 +03:00
Joonas Rikkonen fec7740378 Fixed a bunch of bugs when dragging characters up ladders (see e0504042). The dragging logic didn't take into account that the characters are not necessarily in the same sub, which caused the dragged character to launch away at a high speed when climbing from a sub to another (for example when climbing down to the shuttle in Aegir). The pull joint on the target's torso was never disabled, so the character stayed floating mid-air after getting off the ladders.
+ Made Limb.pullJoint private. Now it can only be accessed by properties of the Limb, and there's some error checks in place to prevent WorldAnchorB from being set to an invalid value.
2018-09-24 21:19:18 +03:00
Joonas Rikkonen 571ed150fe Ragdolls can't be dragged through walls or other colliders. Closes #772 2018-09-10 16:14:44 +03:00
Joonas Rikkonen 6e606fdc51 Fixed incorrect rotation of welding tools and other 2-handed items that are held in one hand when not aiming. The items were rotated according to the left hand, but positioned on the right hand. 2018-09-03 15:15:27 +03:00
Joonas Rikkonen 3747852c13 Removed the Entity.MoveWithLevel property, fixed artifacts and other items from ruins not being saved. Closes #694 2018-08-20 16:23:40 +03:00
Joonas Rikkonen b1f8de887c Clients use the Revive method instead of just setting health above zero when the host revives a character. Fixes dismembered characters staying dismembered client-side. 2018-08-15 11:52:48 +03:00
Joonas Rikkonen fe8a22a4f8 Characters can't hold things in severed hands, limb bodies are re-enabled when reviving a character. Closes #529 2018-08-15 11:46:43 +03:00
Joonas Rikkonen 4866a89253 Servers can disable the disguise feature. Closes #568 2018-08-14 16:06:23 +03:00
Joonas Rikkonen f99bec4ed2 If the distance is excessively large when forcing the collider of a dead character to follow the body, the collider is teleported instead of moving it by setting the velocity. + More physics error logging 2018-08-09 14:13:08 +03:00
Joonas Rikkonen 1a5a76746b Fixed handcuffed players being able to perform CPR and grab/drag bodies. Closes #608 2018-08-08 12:01:20 +03:00
Joonas Rikkonen 67527df8ab Removed duplicate bleed code in Character.Update. Closes #609 2018-08-08 11:33:06 +03:00
Joonas Rikkonen 865b35c6cd Fixed "attempted to access a removed AITarget" errors in AIObjectiveIdle 2018-08-07 16:49:17 +03:00
Joonas Rikkonen 4ebe3d715e Characters stay alive for 30 seconds after a client disconnects, and if the client rejoins during that time they regain control of the character. Closes #42 2018-08-06 13:38:39 +03:00
Joonas Rikkonen 2f5ca65542 Fixed nullref exceptions when a character dies while holding an item. 2018-08-03 19:54:58 +03:00
Joonas Rikkonen 9099b191d0 Fix (or a workaround) to characters teleporting inside/through colliders when leaving a sub (see #552). Gaps do a raycast out from the sub to see if there are obstacles outside, and if so, ragdolls place a collider at the corresponding position inside the sub. The collider is simply a straight axis-aligned line atm, so it doesn't work accurately with sloped ice/submarine walls, but does prevent the ragdoll from ending up inside the obstacles. TODO: use a few edges to approximate the shape of the obstacles more closely? 2018-08-02 16:48:51 +03:00
Joonas Rikkonen 5a6a8e2501 Wifi components can't communicate with the enemy sub in combat missions. Fixes #554 2018-08-01 13:52:47 +03:00
Joonas Rikkonen d81ee1a27e Added a bunch of checks to make sure a normalized zero vector (= NaN, NaN) is not used in any position/velocity/movement calculations. There were at least three places where it was causing problems according to error reports: when a character that can't enter a sub spawns at the center of a hull and when using an underwater scooter or throwing something while the cursor is at the position of the character, but there were tons of other places as well where it may have potentially caused physics errors. 2018-07-31 12:28:04 +03:00
Joonas Rikkonen 7977e47359 Fixes 2018-07-23 19:24:44 +03:00
Joonas Rikkonen 25a62b3a51 More physics error checks, ragdoll clamps the velocity returned by PhysicsBody.CorrectPosition to prevent applying excessively high velocities to the collider if the position has changed significantly between frames 2018-07-23 17:58:02 +03:00
Joonas Rikkonen a373c589d1 Fixed ragdoll dropping away from the collider if it's freezed while swimming (e.g. if a client disconnects when in water) 2018-07-23 17:44:32 +03:00
Joonas Rikkonen 5ebfde72de Fixed ragdoll collision categories not being updated when CheckDistFromCollider re-enables limb collisions. Fixes #508 2018-07-22 16:00:32 +03:00
Joonas Rikkonen 9880a74218 Added check for removed AITarget to EnemyAIController.UpdateEscape 2018-07-20 16:37:41 +03:00
Joonas Rikkonen faf0a87cfa Added a bunch of error checks to physicsbody-manipulating code 2018-07-20 16:33:12 +03:00
Joonas Rikkonen 20ed61a879 Version string sent to GameAnalytics includes the name and hash of the exe (makes it easier to identify events/errors from modded games), added stack trace to a ragdoll error message 2018-07-20 12:24:05 +03:00
Joonas Rikkonen e7e7d32123 Cherry-picked 0ff9a3d (more ragdoll optimization) 2018-07-20 12:21:53 +03:00
Joonas Rikkonen 15331c58bb Cherry-picked fa84c5b (ragdoll optimization) 2018-07-20 12:08:18 +03:00
Joonas Rikkonen 49c6b177e3 Added wrapper methods that check if user statistics are enabled to GameAnalyticsManager 2018-07-20 12:05:13 +03:00
Joonas Rikkonen f822e77241 Checking if the position is valid in Ragdoll.FindHull 2018-07-19 22:21:08 +03:00
Joonas Rikkonen f1c4bd3c67 - Some of the non-game-crashing error messages are sent to GameAnalytics.
- Changed crash severity from Error to Critical.
- Exception handling when loading submarine preview images.
- Checking if position is valid in Ragdoll.SetPosition.
2018-07-19 22:12:50 +03:00
Joonas Rikkonen d00b52882f Added UpdateUseItem method from d253863 2018-07-18 12:14:09 +03:00
Joonas Rikkonen 89b26008a6 Projectile damage range is set to the radius of the item's collider if the range is not given in the xml. Structure.AddDamage uses the edges of the sections to calculate the distance to a damage source, i.e. the damage area only has to "touch" the section to do damage. Closes #479 2018-07-16 15:44:26 +03:00
Joonas Rikkonen 015eacbcb0 Fixed GameAnalytics thread becoming active despite user statistics being disabled, causing the game to stay active in the background when quitting. 2018-07-13 11:29:11 +03:00
Joonas Rikkonen 4f874a276b Fixed crashes caused by characters with no AI config due to missing SteeringManagers. Closes #469 2018-07-13 11:01:42 +03:00
Joonas Rikkonen c7e220d222 Collecting some more usage statistics: selected game mode, mission, submarine, content package, traitors on/off, kills 2018-07-10 15:49:08 +03:00
Joonas Rikkonen bb31fd1e73 Moved some client-specific limb code to the client project, dripping water particles when characters get out from water 2018-05-21 19:17:34 +03:00
Joonas Rikkonen ceaba2f5ca Fixed some entities occasionally not being removed at the end of a round. CargoMission removed the cargo items at the end of a round without checking if the items have already been removed, which could cause another entity to be removed from the entity dictionary if it's taken the ID of the cargo item. This prevented the new entity from being removed in Entity.RemoveAll, causing errors during the next round. Closes #278 2018-04-23 13:55:08 +03:00
Joonas Rikkonen 177f31d538 Some more logging to help diagnose #278, a potential workaround to remove items/characters that Entity.RemoveAll failed to remove for some reason. 2018-04-20 16:50:10 +03:00
Joonas Rikkonen eed7b72b4e Fixed player-controlled creatures being able to do damage to themselves and RepairTools causing damage to the user regardless of the user's skills. 2018-04-18 15:04:18 +03:00
Joonas Rikkonen 276798d88b Fixed null exception in IndoordsSteeringManager. Closes #326 2018-03-10 18:47:59 +02:00
Joonas Rikkonen df746db421 Ladders can be climbed by holding up/down while standing next to them without having to select them first. 2018-03-08 11:01:17 +02:00
Joonas Rikkonen 4421c8a5de Fixed camera shake continuing indefinitely if a character falls unconscious due to impact damage 2018-03-08 10:43:54 +02:00
Joonas Rikkonen 6ddcd65f18 RepairTools can do damage to characters by hitting the collider. Closes #299 2018-03-05 12:34:21 +02:00
Joonas Rikkonen b49f47d3d9 Ladder waypoint generation fix: waypoints are not just placed at the top and bottom of the ladders (and at hatches on the ladders), but above every platform along the ladders (-> waypoints work correctly on ladders spanning through multiple floors). + Some ladder climbing fixes in IndoorsSteeringManager. 2018-03-02 17:45:13 +02:00
Joonas Rikkonen 07d3d69040 Equipped items can be swapped by double-clicking, fixed inventories getting messed up when swapping multi-slot items fails (e.g. drag a jumpsuit on an equipped diving suit). 2018-03-02 15:24:54 +02:00
Joonas Rikkonen 10189254b5 GrabLimb type is written in character network messages as byte instead of UInt16 2018-03-01 23:43:10 +02:00