Commit Graph

68 Commits

Author SHA1 Message Date
juanjp600 c4e894cb2e Fixed camera going insane when dropping through hatches
TODO: make the game less rubberbandy
2017-12-12 21:08:37 -03:00
juanjp600 23b220b6af Sync character collider rotation, try to make collider face the main limb by instantly flipping it if the angle's too wide, client-side ragdoll correction is more aggressive 2017-12-12 17:58:49 -03: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
Joonas Rikkonen db7d5539e0 Fixed modified clients being able to disconnect locked wires 2017-12-07 20:20:05 +02:00
juanjp600 26216a0d99 Fixed fish being selectable
Closes #91
2017-12-07 00:01:48 -03:00
juanjp600 a272d22de8 Players can now pick up corpses to eat them 2017-12-06 17:57:58 -03:00
juanjp600 1e81a5acf1 Removed "RAGDOLL" console spam 2017-12-06 14:49:37 -03:00
juanjp600 0d8d0d62ec Fixed ragdolling in multiplayer 2017-12-06 14:48:47 -03:00
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