Commit Graph

59 Commits

Author SHA1 Message Date
Joonas Rikkonen 0728784b8b Added invalid value checks to PhysicsBody property setters & item.SetTransform, checking for excessively large values 2018-07-22 17:58:17 +03:00
Joonas Rikkonen 0abdcb969d Fixed "failed to write event" errors when a client or server tries to change an enum value of an item (e.g. the output type of an oscillator component) 2018-07-20 15:18:46 +03:00
Joonas Rikkonen e7e7d32123 Cherry-picked 0ff9a3d (more ragdoll optimization) 2018-07-20 12:21:53 +03:00
Joonas Rikkonen 88abbe28e3 Fixed entity IDs getting messed up and causing desync because of purchased items in multiplayer campaign. The server created cargo items first and then mission-related entities, while the clients only spawned mission entities and relied on the server to spawn the cargo, which caused mission entities to have wrong IDs. Closes #484 2018-07-17 12:50:04 +03:00
Joonas Rikkonen 1a84b6cae7 Fixed items not being placed in the same hull and sub as the item they're inside if the ItemContainer is not the first of the parent's ItemContainer components (e.g. fabricator output inventory). Closes #430 2018-05-30 19:15:55 +03:00
Joonas Rikkonen 421e77cc3e Fixed itemcomponents being loaded incorrectly if an item has multiple components of the same type. 2018-05-07 11:15:49 +03:00
Joonas Rikkonen c71315f4da Fixed StatusEffects of child ItemComponents not being added to an item's StatusEffect lists 2018-04-23 15:16:51 +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 03fa2a2e1b Fixed item removal by SecondaryUse not being synced 2018-03-08 23:54:28 +02:00
Joonas Rikkonen f5af432ad9 Fixed item tags & aliases not being taken into account when determining target validity in StatusEffect.Apply. Closes #316 2018-03-06 11:25:25 +02:00
Joonas Rikkonen 4e048b7895 Items removed due to the "DeleteOnUse" property are removed using EntitySpawner, removing an item removes it from the selected items of all characters. Closes #306 2018-03-05 12:13:52 +02:00
Joonas Rikkonen c624ff2c8c Hopefully fixed clients forcing other players to pick items when the clients actually selected them (e29655c) without breaking AI interactions with items 2018-03-02 18:04:01 +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 31ba9e20a2 Item description & tags are only included in spawn network message if they differ from the prefab. 2018-03-01 22:07:51 +02:00
Joonas Rikkonen e29655c81b Fixed clients forcing remote players to pick an item when it's being selected, causing them to press buttons and start deattaching them when the player is actually just rewiring the button. Closes #251 2018-02-28 15:38:55 +02:00
Joonas Rikkonen 74ef5c6ea6 Fixed items attached mid-round by other clients or the host being impossible to interact with and occasionally being attached to an incorrect position. Closes #296 2018-02-28 14:01:38 +02:00
Joonas Rikkonen 77940fa992 Added some debug logging, Character.Revive removes the existing AITarget from the character before creating a new one 2018-02-26 18:05:03 +02:00
Joonas Rikkonen a2c898150e Item.SetTransform uses SetTransformIgnoreContacts to set the position of the physics body if the body is disabled. No need to update contacts when moving disabled items such as wearables. 2018-02-13 13:54:09 +02:00
Joonas Rikkonen 51ea71333e Fixed ChangeProperty network events 2018-01-24 15:53:32 +02:00
Joonas Rikkonen 25ebe52248 Option to configure alternate sprites for broken items 2018-01-11 16:51:36 +02:00
Joonas Rikkonen 7187c277e7 Merge branch 'master' into moStuff 2018-01-09 10:38:06 +02:00
Alex Noir 6d30557860 Overhaul fabricators and deconstructors to have minCondition, maxCondition (deconstructor) and outCondition
Implement several suggestions listed in https://github.com/Regalis11/Barotrauma/issues/196
Add more fabricatables and deconstructables
2017-12-22 21:33:14 +03:00
Alex Noir e6b7a0d313 Adds ducts, switches and motion detectors, as well as door breaking sounds, all based on Barotrauma Extended mod.
Several sounds and sprites were altered to their mod counterpart.
Fixes doors being unfixable without having a crowbar.
Fixed case sensitivity mismatch for crowbar.ogg - this is a problem for linux builds.
2017-12-21 16:37:46 +03:00
juanjp600 07626a1989 Merge branch 'master' of https://github.com/Regalis11/Barotrauma
Barotrauma/BarotraumaShared/Source/Items/Components/ItemComponent.cs
2017-12-20 19:46:53 -03:00
juanjp600 7a413aee93 Optimized GameScreen.DrawMap
- Downscaled lightmap, since blurring will make this unnoticeable anyway
(TODO: make this optional)
- Render LOS in fewer passes by using a shader
- Use light volume to calculate LOS
- This also means we can use the override texture to render the diving
suit obstruct effect
- Don't render bunks and labels onto LOS background (TODO: add the
option to render back into the LOS background, i.e. just use
multiplicative blending as if it was the lightmap)
- Prefer SpriteSortMode.Deferred over all others, prefer
SamplerState.LinearClamp/PointClamp over all others
- Remove shader blur in favor of geometry blur (TODO: improve on this
further, right now it has a few artifacts)
- Trim light volumes
- Do some weird shit with the background particles (use DrawTiled
instead of relying on SamplerState.LinearWrap, because that's faster
somehow :/ )
- Pressing up/down in the console only returns a typed command now
2017-12-20 19:41:23 -03:00
Alex Noir e5f60b29e1 tweaks and stuff 2017-12-20 20:44:21 +03:00
Alex Noir 1fe71b5fe6 Fixed IsInWater acting strangely 2017-12-20 18:54:00 +03:00
Alex Noir 9a91480256 Expose Description to Sub Editor so you can do things like create spare ID cards or w/e 2017-12-16 21:09:02 +03:00
Alex Noir bdeb3a19fd Updated server logs so admins can see disguised persons
clientist should also display stuff
TODO: Log inventory interactions like putting item in slots (e.g. oxy mask equipped in Head slot or equipped in Any slot, etc.) so you can tell the exact moment someone decided to disguise themselves.
2017-12-16 20:24:24 +03:00
juanjp600 1cb39f7fd5 Fixed some inconsistencies and oddities in physics-handling code
I'm not sure if this fixes or breaks anything, but it's worth a shot.
2017-12-15 18:11:00 -03:00
Alex Noir 760452170e Implement ID card slot and ID card description that states the owner and his job in preparation for identity system 2017-12-14 22:57:42 +03:00
Alex Noir 55dd58579f I DID IT HOLY SHIT I GONE AND DONE IT
OnSecondaryUse is what throwing uses for doing things SPECIFICALLY on throw. This way, you can theoretically have grenades on which you'll have to pull the pin before throwing.
This also lets flares be used without the need to throw them.
did i mention my brain hurts
2017-12-10 15:56:34 +03:00
Alex Noir 231a38f71d roll back name change from "Aim" to "SecondaryUse"
Expand SecondaryUse to have similar properties to normal Use so it can apply SecondaryUse-related status effects
Make Throwable great again
2017-12-10 15:00:52 +03:00
Alex Noir 1d6d1a066f realised half way through that I don't even need a new action type, oops 2017-12-10 13:45:12 +03:00
Alex Noir 00653c5aa4 Renames "OnSecondaryUse" to "OnAim" for more sense
adds new "OnHudUse" to separate normal and self use
2017-12-10 13:39:00 +03:00
Joonas Rikkonen 63493d2b9d Added a Character.AddDamage override method that does damage to a specific limb instead of the limb closest to the source of the damage. Projectiles and melee weapons now always do damage to the limb they hit, even if the center point of some other limb happens to be closer.
Also refactored the IDamageable interface to make more sense; now the attacker has to be a character instead of an IDamageable and damageable classes don't need to have an AiTarget.

Closes #69
2017-12-05 18:03:00 +02:00
juanjp600 a0782e5d8d Blowing up the reactor sets karma to 0, all jobs except assistant require a certain karma level 2017-12-04 17:05:22 -03:00
juanjp600 2347f2937e Improved revolver hitreg, shooting structures affects karma, fixed 5th server being blocked in server list
Closes #70
2017-12-04 12:39:27 -03:00
Joonas Rikkonen 04bcc6b9b1 Modifications to the damage/armor system:
- Armor values aren't reduced from the damage taken, but instead multiply the damage (e.g. an item reduces damage by 10% instead of 10 hp). Now armor doesn't make characters invulnerable to small amounts of damage.
- Armoring isn't defined as a single "armor value", but instead there are "damage modifiers" which can be added to items and limbs. The modifiers can only affect specific types of damage and have separate multipliers for the damage amount and bleeding amount.
- Having a fire proof item on a limb doesn't make that limb invulnerable to burn damage. Item's that protect against fire now have a damage modifier for the Burn damage type.
2017-12-02 15:42:13 +02:00
Joonas Rikkonen deefcafe02 Made the name of the "Linkable/IsLinkable" property consistent 2017-12-02 14:19:23 +02:00
Joonas Rikkonen 765587efd7 Renamed screens (EditMapScreen -> SubEditorScreen, EditCharacterScreen -> CharacterEditorScreen) 2017-11-18 15:13:03 +02:00
Joonas Rikkonen 5f4bf48449 Replaced instances where MapEntityPrefabs are searched for based on the name with a static Find method that takes the aliases of the prefabs into account. 2017-11-14 21:40:43 +02:00
Joonas Rikkonen d072713936 Replaced manual rect parsing in a bunch of places with an extension method 2017-11-14 21:09:07 +02:00
Joonas Rikkonen 8e556f1c76 - Renamed a bunch of ObjectProperty-related stuff (ObjectProperty -> SerializableProperty, IPropertyObject -> ISerializableEntity, the "SerializableProperty" attribute -> Serialize).
- Rectangle serialization.
- Option to restrict numeric properties to a range of values.
- WIP generic ISerializableEntity editor.
2017-11-08 21:15:03 +02:00
Joonas Rikkonen a0d606ef5f Working on improving the serialization system and ObjectProperty/IPropertyObject (TODO: come up with better names). The plan is to:
- Add support for some of the most common types (vectors, colors, rects) so there's no need to parse the values in the setters of the serializable properties (see Holdable.HoldPos for example).
- Make a generic version of the item editing HUD that can be used on any IPropertyObject. Should make it easier to implement things like the character editor, editing structure properties, particle editor, etc.
- Improve the interface of the editing HUD. Instead of having to type in a string value into a textbox, there should be number input fields for numeric properties, sliders for properties that only accept a range of values, a color picker, etc. And tooltips.
2017-11-03 19:41:21 +02: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 1ff2054ca8 Converted the GetAttribute methods in the ToolBox class to extension methods 2017-10-04 18:38:40 +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 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 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. 2017-08-01 18:05:21 +03:00