Commit Graph

24 Commits

Author SHA1 Message Date
Joonas Rikkonen 276798d88b Fixed null exception in IndoordsSteeringManager. Closes #326 2018-03-10 18:47:59 +02:00
Joonas Rikkonen b49f47d3d9 Ladder waypoint generation fix: waypoints are not just placed at the top and bottom of the ladders (and at hatches on the ladders), but above every platform along the ladders (-> waypoints work correctly on ladders spanning through multiple floors). + Some ladder climbing fixes in IndoorsSteeringManager. 2018-03-02 17:45:13 +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 729f850175 Fixed a "sequence contains no elements" exception in IndoorsSteeringManager 2018-01-26 17:28:48 +02:00
Joonas Rikkonen a3f49e0bc5 Pathfinding fixes:
- The parent fields of the nodes are cleared before finding a path. Should fix the "constructing final path failed" errors.
- Nodes that have been marked as unreachable because of GetNodePenalty can still be used if another path to the node is found.
2018-01-11 16:03:16 +02:00
Joonas Rikkonen b84c965be3 More AI fixes/improvements:
- AI characters can refuel the reactor when needed.
- AIObjectiveContainItem.CanBeCompleted returns true if the target item cannot be obtained or if the container cannot be reached.
- AI characters only weld leaks that are part of some submarine (i.e. not ruins).
2017-12-28 19:44:48 +02:00
Joonas Rikkonen d074d3d443 Crew AI fixes:
- Characters can use oxygenite shards (or any other item with an "oxygensource" tag) in diving suits/masks.
- AIObjectiveFindDivingGear doesn't count as being completed if the character has diving gear in their inventory unless the character has equipped the gear.
- AIObjectiveGetItem doesn't count as being completed if equipping the target item is required and the character hasn't equipped it yet.
2017-12-28 12:53:23 +02:00
Joonas Rikkonen 604fc65154 Human AI improvements & fixes:
- Replaced item name comparisons with Prefab.NameMatches (-> item names can be changed without breaking the AIs).
- Having an AIObjective set as the current order of the character doesn't automatically cause it to have a high priority. For example, the order to fix leaks has a low priority if there are no leaks to fix.
- AIObjectiveFixLeaks makes sure the character is wearing a diving suit before going to fix a leak. The characters used to run in and out of flooded rooms because the AIObjectiveFindSafety objective would become active as soon as the character entered the room, causing the character to run out, and then immediately run back because they are no longer in immediate danger of drowning, making the FixLeaks objective the most high-priority one.
- Characters attempt to find a room with no water in AIObjectiveIdle even if the character is wearing a diving suit.
- AIObjectiveFindSafety considers flooded rooms dangerous even if the character is wearing a diving suit (-> the character attempts to go into a more dry room instead of happily idling in the flooded one).
- Distance to a hull doesn't decrease its desirability nearly as much in AIObjectiveFindSafety (-> fixes characters not bothering to move into a non-flooded room if it's far away).
- AIObjectiveOperateItem makes sure the item is equipped before using it (-> characters can't weld leaks with the welder in their inventory).
2017-12-21 19:49:26 +02: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 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 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 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 2d1c00546f Reimplemented switching to repair & monster music types (now handled by SoundPlayer) 2017-08-23 14:42:24 +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 a8ec821382 Handcuffed AICharacters can't climb ladders 2017-08-08 21:17:43 +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 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 bf5a0746ad Merge branch 'master' of https://github.com/Faerdan/Barotrauma into Faerdan-master
Conflicts:
	Barotrauma/BarotraumaClient/Source/Map/MapEntity.cs
	Barotrauma/BarotraumaClient/Source/Screens/GameScreen.cs
	Barotrauma/BarotraumaShared/Source/Characters/Character.cs
	Barotrauma/BarotraumaShared/Source/Items/Item.cs
2017-07-05 19:32:34 +03:00
Joonas Rikkonen 64ad5e5003 Removed unnecessary using directives 2017-07-05 18:35:09 +03:00
Joonas Rikkonen e431cc775f Some null checks, clients log initial lobby update, minor lighting optimization 2017-07-04 22:36:00 +03:00
Joonas Rikkonen e15f5a881b Merge branch 'dedicated-server' (TODO: make sure I didn't break anything)
Conflicts:
	Barotrauma/Barotrauma.csproj
	Barotrauma/BarotraumaShared/Source/Characters/AI/AIController.cs
	Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs
	Barotrauma/BarotraumaShared/Source/Characters/AICharacter.cs
	Barotrauma/BarotraumaShared/Source/Characters/Animation/Ragdoll.cs
	Barotrauma/BarotraumaShared/Source/Characters/Attack.cs
	Barotrauma/BarotraumaShared/Source/Characters/Character.cs
	Barotrauma/BarotraumaShared/Source/Characters/CharacterNetworking.cs
	Barotrauma/BarotraumaShared/Source/Characters/Limb.cs
	Barotrauma/BarotraumaShared/Source/Events/MonsterEvent.cs
	Barotrauma/BarotraumaShared/Source/Map/Explosion.cs
2017-06-30 21:02:52 +03:00
juanjp600 4d225c65f2 Updated to MonoGame 3.6 + Directory refactor
- Barotrauma's projects are in the Barotrauma directory
- All libraries are in the Libraries directory
- MonoGame is now managed by NuGet, rather than referenced from the installed files (TODO: consider using PCL for easier cross-platform development?)
- NuGet libraries are not included in the repo, as getting the latest versions automatically should be preferred
- Removed Content/effects.mgfx as it didn't seem to be used anywhere
- Removed some references to Subsurface directory
- Renamed Launcher2 to Launcher
2017-06-27 09:52:57 -03:00