Commit Graph

60 Commits

Author SHA1 Message Date
Alex Noir 4a8e411a70 Fixed carrying stunned people being a severe case of a major ass pain by carrying over the "stairs" from the carrier.
Added "CarriedBy" property, publicized CarriedCharacter and CarriedBy, synced CarriedCharacter and CarriedBy for cool points
Publicized Stairs property
2017-12-06 18:58:18 +03:00
Alex Noir b26b6a7418 Fixed ragdolled players suffering less impact damage than non-ragdolled one.
Also fixed limb impact sounds on the clientside for ragdolls
2017-12-05 23:03:40 +03:00
Alex Noir f37323e9a8 Fixed dragging thru stairs being annoying as hell (this line of code made it impossible to carry a body thru stairs on ground level without holding Down all the time) 2017-12-05 21:38:07 +03:00
Alex Noir ee8c4dfb3a Adds ragdoll button. Because why not.
Also adds admin ragdoll command to force people into ragdoll mode.
The networking/syncing wasn't yet tested for this but hopefully everything should work.
Updates config.xml to add default keybinds for radio chat and ragdoll
2017-12-05 20:50:24 +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
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 5b1798cb50 Fixed monsters not taking damage when they're far enough from the host's camera (or the main sub when using the dedicated server). The limbs of the monsters were disabled when 8000 units away, causing them to become invincible because the collider does not register damage.
Closes #50
2017-11-30 17:07:37 +02:00
Joonas Rikkonen e79ad3dceb Fixed AICharacters not playing sounds in mp 2017-11-24 17:49:52 +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 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 ec020f43d3 Fixed creatures seeking towards an incorrect position when trying to eat something (causing larger creatures like threshers and coelanths to swim around the target without ever reaching it), extra check for removed entities in AITarget 2017-11-01 20:58:37 +02:00
Joonas Rikkonen 69d0fac69d Made the damage range of limb attacks configurable (instead of having it always be half of the distance at which the attack activates) and tweaked the damage ranges of all the creature attacks 2017-11-01 20:42:25 +02:00
Joonas Rikkonen 1f92e31166 HumanAIController calculates the "dangerousness" of an enemy based on the largest amount of damage received from it (assuming it's larger than the attack values of the enemy's limbs). Meaning that an enemy that inflicted lots of damage to the character using items is considered dangerous even if it has no attacks assigned to it's limbs. 2017-10-19 00:01:34 +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 c444186426 Updated client project (ShiftSummary -> RoundSummary), removed unused drowningtime variable 2017-10-05 21:35:57 +03:00
Joonas Rikkonen 57667b3169 Fixed removed (e.g. eaten) characters not appearing in the round summary, but still spawning during the next round 2017-10-05 21: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 8c3c689596 - Fixed creatures being able to sever non-severable limb joints (which caused syncing issues when the waist->torso joint of a humanoid was severed).
- The server creates an entity event when a joint is severed.
- Made joints severable by default.
2017-09-21 17:50:24 +03:00
Joonas Rikkonen dd86b5745a - The server doesn't disable client-controlled AI characters that are far from all other players.
- Clients aren't allowed to flip swimming FishAnimControllers unless the server says so (occasionally caused creatures to flip around constantly because the clients ignore the 1-second "flipping cooldown").
- Moved Character.ReadStatus to the client project.
2017-09-21 17:44:52 +03:00
Joonas Rikkonen 4bdbf05875 - The range and volume of sounds emitted by StatusEffects can be changed and they can be set to loop.
- StatusEffect sounds are configured as child elements of the StatusEffect (instead of attributes).
- Background sprites can emit sounds.
2017-08-24 19:56:31 +03:00
Joonas Rikkonen c2da3a6af4 - Added "LevelTriggers", areas that apply statuseffects and/or damage to entities. Atm can only be attached to background sprites.
- Moved background sprites to the shared project.
- The debug textures of physics bodies have a maximum size of 128x128 pixels to prevent large bodies from taking up excessive amounts of memory.
- Attacks can be set to only affect humans.
2017-08-23 20:37:30 +03:00
Joonas Rikkonen 2d1c00546f Reimplemented switching to repair & monster music types (now handled by SoundPlayer) 2017-08-23 14:42:24 +03:00
Joonas Rikkonen 15a31c5291 - The commonness of scripted events can be overridden for specific level types (e.g. some monsters can be set to spawn more frequently in specific types of levels).
- The sub can be moved from location to another in the map view by double clicking in debug builds.
- Level wall color can be changed in level generation parameters.
- Fixed level geometry not being rendered if the ocean floor is visible (which isn't a problem in most level types, but there can be levels where the ocean floor is so close to the actual level that they can both be visible at the same time).
- Background sprite scale is taken into account when calculating particle emitter positions.
- Fixed limb lights being rendered even if the character is disabled.
2017-08-22 19:04:49 +03:00
Joonas Rikkonen 4a460ff150 - The emission rate of ParticleEmitters can be set as particles per second (instead of particles per frame).
- Particles that are outside the sub aren't visible inside hulls even if they overlap with the sub.
- ParticleManager takes the movement of the particles into account when determining which particles to cull. For example, a particle that will move upwards can be emitted even if it's below the camera view.
2017-08-20 19:05:25 +03:00
Joonas Rikkonen c7a357d84c Fix for exceptions when a human is targeting a removed entity while debugdraw is enabled, accessing AITarget position properties after the target has been destroyed doesn't throw an exception (but does log an error in debug builds). 2017-08-13 20:00:52 +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 f7f738765b Fixed "collection was modified" exceptions when a huskified human is killed while enumerating the character list (e.g. when killed by an explosion) 2017-08-09 19:37:37 +03:00
Joonas Rikkonen 6eba16ff4e Fixed clients spawning monsters twice (first during mission/event initialization and again when the server notifies them about the spawning) 2017-08-08 23:03:26 +03:00
Joonas Rikkonen a8ec821382 Handcuffed AICharacters can't climb ladders 2017-08-08 21:17:43 +03:00
Joonas Rikkonen 9e3f4bfa5a Syncing crouching from server to clients, not just from clients to server 2017-07-28 19:01:47 +03:00
Joonas Rikkonen affb43e7a5 Workaround to null reference exceptions in Character.WriteStatus: it seems AnimController can be null when reading the message, which suggests that the character has been removed (e.g. turned to a husk, eaten by something). 2017-07-26 21:35:50 +03:00
Joonas Rikkonen 61b90464dd Playing whack-a-mole with the interaction logic again:
- Fixed server keeping clients focused on entities until they report focusing on something else. This allowed clients to interact with the entity they previously focused on, even if they weren't anywhere near anymore.
- Checking if clients are allowed to focus on an entity before letting them do so (!!!).
- Server doesn't highlight entities when a client focuses on them.
- Characters can interact with a wire if they've selected either of the items it's connected to.
2017-07-26 21:03:21 +03:00
Joonas Rikkonen 6faf658ae0 Fixed SetClientCharacter & Revive 2017-07-26 17:19:35 +03:00
Joonas Rikkonen 379c65e07d Fixed dedicated servers ignoring armor 2017-07-24 19:12:18 +03:00
Joonas Rikkonen 446dce9545 Fixed diving suits 2017-07-24 17:02:13 +03:00
Joonas Rikkonen 6c80a02354 Characters don't consume oxygen from hulls if their OxygenAvailable is higher than the amount of oxygen in the hull (= if they're wearing a diving mask or a suit) 2017-07-18 19:40:25 +03:00
Joonas Rikkonen 49003c465c Aiming syncing fix: aiming angle is calculated from the position of the shoulder towards the cursor (or a position within the collider that's roughly at the shoulder). 2017-07-18 18:33:30 +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 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 8693dc3d3d Fixed AI crew members swimming too fast, reduced max swimming speed (= the speed when holding shift) 2017-07-12 17:53:07 +03:00
Joonas Rikkonen ed7fd7dbc1 Clients don't stop updating the controls/HUD/etc of their character when water pressure reaches lethal levels until the server implodes the character. Requested by nilanthanimosus; doesn't change much in the vanilla game, but modded servers can now disable pressure deaths without characters becoming immobilized in high pressure. 2017-07-11 21:41:31 +03:00
Joonas Rikkonen af1a681da0 Fixed far-away AI characters staying disabled when switching control to them + minor optimization 2017-07-11 20:03:42 +03:00
Joonas Rikkonen cbe7200ff6 Deselecting the currently selected item has a higher priority than interacting with the focused item (i.e. can't interact with another item until the selected item is deselected) 2017-07-09 19:19:28 +03:00
Joonas Rikkonen 769a012776 Items that are in an inventory can't be focused on (otherwise characters would constantly focus on the item they're holding) 2017-07-09 19:08:45 +03:00
Joonas Rikkonen bd4c7d68d0 Fixed endless messagebox spam when the controlled character turns into a husk, fixed an index our of range exception when merging firesources 2017-07-09 16:17:44 +03:00