Commit Graph

59 Commits

Author SHA1 Message Date
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 2fea48287c Item pickup sounds are only played when the controlled character picks up an item
Closes #51
2017-12-01 22:11:14 +02:00
juanjp600 2d55d41320 Fixed railgun HUD crash when the first linked item doesn't have an ItemContainer 2017-12-01 09:53:07 -03:00
Joonas Rikkonen 51fe7df481 Railgun HUD (shows supercapacitor charge & how many shells there are left) 2017-11-27 19:34:57 +02:00
Joonas Rikkonen 765587efd7 Renamed screens (EditMapScreen -> SubEditorScreen, EditCharacterScreen -> CharacterEditorScreen) 2017-11-18 15:13:03 +02:00
Joonas Rikkonen 08cf902cb8 MapEntityPrefabs are deserialized using SerializableProperty 2017-11-15 19:01:55 +02:00
Joonas Rikkonen 04e3710a65 Renaming fields for consistency 2017-11-14 22:45:22 +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 913a102591 Option to set aliases for StructurePrefabs 2017-11-14 21:04:49 +02:00
Joonas Rikkonen 5d525865bf More descriptive error message when a fabricable item can't be found 2017-11-14 20:00:57 +02:00
Joonas Rikkonen b3769b383a - Input field for rects.
- Input fields for ItemComponent requiredItems.
- Added tooltips to a bunch of editable ItemComponent properties.
- Misc fixes.
2017-11-13 22:06:13 +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 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
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 f8dfba91b8 Capped oscillator frequency to 240 Hz to prevent players from causing performance issues by setting it to an excessively high value 2017-10-05 21:19:23 +03:00
Joonas Rikkonen a740bf9a56 Added oscillators (a signal component that sends out a periodic pulse, sine wave or a square wave) 2017-10-04 20:18:01 +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 1311a286f5 Added battery recharge docks, moved applying OnActive statuseffects to the Powered itemcomponent, removed smoke particles from stun baton hit effect 2017-09-03 16:57:32 +03:00
Joonas Rikkonen c7ae91da42 Added "state_out" connections to relay components 2017-08-31 16:45:04 +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 736de25e6c Fixed RangedWeapon launching projectiles in an incorrect rotation 2017-08-27 18:45:14 +03:00
Joonas Rikkonen 7186a8010a Fixed item pickup sounds playing during loading 2017-08-24 19:52:04 +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
juanjp600 6fe9130dd8 Fixed crash when projectiles stuck to items on dedicated server
Report submitted by etet2, haven't tested it yet but I'm fairly certain this should fix the crash
2017-08-14 21:35:19 -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 f40d244deb Moved inventory UI update logic to the client project, sound effects for picking up and dropping items 2017-08-10 20:30:29 +03:00
Joonas Rikkonen fd844fd696 Option to make wearable sprites use the depth of the sprite instead of using the depth of the limb it's attached to 2017-08-10 18:19:06 +03:00
Joonas Rikkonen a8ec821382 Handcuffed AICharacters can't climb ladders 2017-08-08 21:17:43 +03:00
Joonas Rikkonen d0a1a8413b Fixed contained items applying status effects even if their condition is 0.0 (-> spent fuel rods can't be used in reactors anymore) 2017-08-07 19:37:19 +03:00
Joonas Rikkonen 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. 2017-08-03 19:29:27 +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
Joonas Rikkonen d5e2b202d1 Repair tools can be used on bodies with the CollisionLevel collision category (-> ruins can be cut again) 2017-07-31 18:00:36 +03:00
Joonas Rikkonen 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. 2017-07-28 17:29:44 +03:00
Joonas Rikkonen db05bbf4c0 Another dockingport syncing fix 2017-07-27 21:33:09 +03:00
Joonas Rikkonen 2090bbf04e Platforms or stairs don't obstruct RepairTool raycasts (-> improperly placed platforms/stairs don't prevent fixing walls) 2017-07-27 20:15:58 +03:00
Joonas Rikkonen 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). 2017-07-26 18:46:29 +03:00
Joonas Rikkonen f062ca0e4d Wire nodes are synced when a player adds a new node and when the wire is connected to something 2017-07-25 23:27:30 +03:00
Joonas Rikkonen 431e5bb9b8 Attachable items are always attached by default when adding them in the sub editor 2017-07-25 21:53:57 +03:00
Joonas Rikkonen 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 2017-07-25 21:27:22 +03:00
Joonas Rikkonen bf7677154b Disabled debug logging of the loading coroutine when verbose logging isn't enabled 2017-07-23 20:11:55 +03:00
Joonas Rikkonen 56e04823f1 Logging when players attach items on walls or detach them, null exception fix in Throwable (picker is set to null in Item.Drop) 2017-07-17 23:28:46 +03:00
Joonas Rikkonen 575b643c62 Added "user" parameter to Inventory.PutItem and Inventory.TryPutItem. + More descriptive wiring logging: the logs don't list all the wires in a connectionpanel but only the changes a player does to the wiring. Disconnecting wires by picking them up and wiring done by the host are also logged now. 2017-07-17 23:27:31 +03:00
Joonas Rikkonen d5aa1d8b97 Selecting an item with no ItemContainer component doesn't prevent equipping/unequipping items by double clicking, added missing "gamescreen" console command 2017-07-13 23:33:53 +03:00
Joonas Rikkonen cc9ebe9fc2 Interaction logic tweaking again:
- Reverted the item distance calculation change in commit c7fd681 (it made interaction way less precise, as items near the character tended to get focus even if the cursor was nowhere near them), and replaced it with:
- Aim assist considers the distance to an item to be 0.0 if the cursor is inside a trigger of the item.
- Reverted 769a012 and disabled aim assist when an item is selected. Meaning that now items don't have to be deselected before interacting with another item, but the cursor has to be directly on the other item to make accidental interaction less likely.
- Removed some redundant trigger calculations from CanInteractWith.
2017-07-13 23:32:39 +03:00
Joonas Rikkonen 935b1ff837 Console fixes, logging launched turret projectile and the items contained inside it 2017-07-11 19:29:41 +03:00
Joonas Rikkonen 59fba47f63 When the player highlights a wire in a connection panel, the physical wire and the items connected to it are highlighted. Fixes issue #16. 2017-07-10 00:37:17 +03:00