Commit Graph

66 Commits

Author SHA1 Message Date
Joonas Rikkonen 58e98977df Fixes to projectiles going through walls:
- Continuous collision detection (body.IsBullet) is disabled when the body is moving slow enough, not immediately when it hits something.
- The prismatic joint that sticks projectiles to walls/characters stays active for a minimum of 1 s to prevent the projectile from immediately overshooting the joint limits and falling off (usually at the wrong side of a wall/door it hit).
- Separate properties for determining which types of bodies the projectile can stick to (character/structure/item).
- Spears and syringes only stick to characters.
- Increased syringe launch impulse.

Closes #122
2017-12-14 19:25:31 +02:00
Joonas Rikkonen 847e10d4a2 Fixed wires not being dropped server-side when a player drops a connected wire without dragging it to their inventory first (or client-side when a host does so).
Closes #96
2017-12-13 18:34:23 +02:00
Joonas Rikkonen 4a1ba21067 Fixed OnActive statuseffects not being applied on powered items that don't require power (prevented flare particles from working because they are configured in the LightComponent that inherits from Powered) 2017-12-12 22:21:29 +02:00
Joonas Rikkonen 7ce93d2e1f Merge pull request #123 from Crystalwarrior/syringeGun
Syringe gun + projectile tweaks + several status effects/item components tweaks
2017-12-12 20:12:28 +02:00
Alex Noir a2a4225598 Added a fully functional syringe gun! Accepts syringes as ammo. Has custom sprite and sound.
Made syringes have a "projectile" component for syringe guns
Adds several missing signal components to the fabricator, as well as medical syringe to medical fabricator
Adds support for status effects applied to characters from onImpact
Removed "contained.Condition = 0.0f;" in Projectile.cs due to it limiting the possibilities of the .xml content creation
Added a couple null checks in StatusEffect.cs due to crashes caused by the new projectile changes - might need to debug further, perhaps there's a root cause?
Added itemlist console command
2017-12-10 22:17:14 +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 db7d5539e0 Fixed modified clients being able to disconnect locked wires 2017-12-07 20:20:05 +02:00
Joonas Rikkonen 7026da2748 Health Scanner HUD shows the status of all nearby characters without having to highlight them. Fixes being unable to scan characters that aren't dead or unconscious. Non-human characters can also be scanned now.
Closes #73
2017-12-07 19:34:32 +02:00
juanjp600 d34c783c30 Removed collision from wall gaps 2017-12-06 13:33:54 -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
Joonas Rikkonen 243b3843b8 Fixed worn items being assigned multiple times to the same limb when equipping an item that takes up multiple slots, causing damagemodifiers to be applied multiple times. + DamageModifiers with the damage type "None" don't affect damage.
Closes #68
2017-12-05 01:01:55 +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
juanjp600 6841bb154b Added Karma, harming players reduces it 2017-12-03 21:51:12 -03:00
juanjp600 3db407fe52 Fixed wire connections being lost when copy-pasting in sub editor 2017-12-03 11:59:29 -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 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 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 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 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 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 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