diff --git a/Barotrauma/BarotraumaClient/ClientCode.projitems b/Barotrauma/BarotraumaClient/ClientCode.projitems
index e2df0a544..1b79fd2eb 100644
--- a/Barotrauma/BarotraumaClient/ClientCode.projitems
+++ b/Barotrauma/BarotraumaClient/ClientCode.projitems
@@ -43,12 +43,8 @@
-
-
+
-
-
-
diff --git a/Barotrauma/BarotraumaClient/Launch_Barotrauma b/Barotrauma/BarotraumaClient/Launch_Barotrauma
index 4e95158fd..8792fad24 100644
--- a/Barotrauma/BarotraumaClient/Launch_Barotrauma
+++ b/Barotrauma/BarotraumaClient/Launch_Barotrauma
@@ -1,3 +1,3 @@
#!/bin/sh
-./Barotrauma
+exec mono "./Barotrauma.exe" MONO_LOG_LEVEL=debug "$@"
diff --git a/Barotrauma/BarotraumaClient/LinuxClient.csproj b/Barotrauma/BarotraumaClient/LinuxClient.csproj
index 080c09481..f0d80d9ee 100644
--- a/Barotrauma/BarotraumaClient/LinuxClient.csproj
+++ b/Barotrauma/BarotraumaClient/LinuxClient.csproj
@@ -60,6 +60,9 @@
+
+ ..\..\Libraries\NuGet\Concentus.1.1.7\lib\portable-net45+win+wpa81+wp80\Concentus.dll
+
..\..\Libraries\NuGet\GameAnalytics.Mono.SDK.1.1.12\lib\net45\GameAnalytics.Mono.dll
@@ -129,10 +132,6 @@
-
- {0e7fee6a-15e5-4a4e-943c-80276003478c}
- Concentus
-
{3af0347c-5a9b-4421-868c-8ee3dbfaebc6}
Facepunch.Steamworks
@@ -187,18 +186,12 @@
PreserveNewest
-
- PreserveNewest
-
PreserveNewest
PreserveNewest
-
- PreserveNewest
-
PreserveNewest
diff --git a/Barotrauma/BarotraumaClient/MacClient.csproj b/Barotrauma/BarotraumaClient/MacClient.csproj
index 99902b0ca..f9fdba9c8 100644
--- a/Barotrauma/BarotraumaClient/MacClient.csproj
+++ b/Barotrauma/BarotraumaClient/MacClient.csproj
@@ -59,6 +59,9 @@
+
+ ..\..\Libraries\NuGet\Concentus.1.1.7\lib\portable-net45+win+wpa81+wp80\Concentus.dll
+
..\..\Libraries\NuGet\GameAnalytics.Mono.SDK.1.1.12\lib\net45\GameAnalytics.Mono.dll
@@ -128,10 +131,6 @@
-
- {0e7fee6a-15e5-4a4e-943c-80276003478c}
- Concentus
-
{3af0347c-5a9b-4421-868c-8ee3dbfaebc6}
Facepunch.Steamworks
diff --git a/Barotrauma/BarotraumaClient/Properties/AssemblyInfo.cs b/Barotrauma/BarotraumaClient/Properties/AssemblyInfo.cs
index 5e2918897..b67af8559 100644
--- a/Barotrauma/BarotraumaClient/Properties/AssemblyInfo.cs
+++ b/Barotrauma/BarotraumaClient/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.8.10.0")]
-[assembly: AssemblyFileVersion("0.8.10.0")]
+[assembly: AssemblyVersion("0.8.9.10")]
+[assembly: AssemblyFileVersion("0.8.9.10")]
diff --git a/Barotrauma/BarotraumaClient/Source/Characters/Animation/Ragdoll.cs b/Barotrauma/BarotraumaClient/Source/Characters/Animation/Ragdoll.cs
index 2e11c7af2..864fd5996 100644
--- a/Barotrauma/BarotraumaClient/Source/Characters/Animation/Ragdoll.cs
+++ b/Barotrauma/BarotraumaClient/Source/Characters/Animation/Ragdoll.cs
@@ -98,7 +98,7 @@ namespace Barotrauma
if (distSqrd > 10.0f || !character.AllowInput)
{
Collider.TargetRotation = newRotation;
- SetPosition(newPosition, lerp: distSqrd < 5.0f, ignorePlatforms: false);
+ SetPosition(newPosition, lerp: distSqrd < 5.0f);
}
else
{
@@ -238,16 +238,20 @@ namespace Barotrauma
}
float errorMagnitude = positionError.Length();
- if (errorMagnitude > 0.5f)
- {
- character.MemLocalState.Clear();
- SetPosition(serverPos.Position, lerp: true, ignorePlatforms: false);
- }
- else if (errorMagnitude > 0.01f)
+ if (errorMagnitude > 0.01f)
{
Collider.TargetPosition = Collider.SimPosition + positionError;
Collider.TargetRotation = Collider.Rotation + rotationError;
Collider.MoveToTargetPosition(lerp: true);
+ if (errorMagnitude > 0.5f)
+ {
+ character.MemLocalState.Clear();
+ foreach (Limb limb in Limbs)
+ {
+ limb.body.TargetPosition = limb.body.SimPosition + positionError;
+ limb.body.MoveToTargetPosition(lerp: true);
+ }
+ }
}
}
@@ -436,15 +440,14 @@ namespace Barotrauma
return;
}
- Color? color = null;
- if (character.ExternalHighlight)
- {
- color = Color.Lerp(Color.White, Color.OrangeRed, (float)Math.Sin(Timing.TotalTime * 3.5f));
- }
+ //foreach (Limb limb in Limbs)
+ //{
+ // limb.Draw(spriteBatch, cam);
+ //}
for (int i = 0; i < limbs.Length; i++)
{
- inversedLimbDrawOrder[i].Draw(spriteBatch, cam, color);
+ inversedLimbDrawOrder[i].Draw(spriteBatch, cam);
}
LimbJoints.ForEach(j => j.Draw(spriteBatch));
}
diff --git a/Barotrauma/BarotraumaClient/Source/Characters/Character.cs b/Barotrauma/BarotraumaClient/Source/Characters/Character.cs
index b4e831e77..5e58e5b4a 100644
--- a/Barotrauma/BarotraumaClient/Source/Characters/Character.cs
+++ b/Barotrauma/BarotraumaClient/Source/Characters/Character.cs
@@ -46,7 +46,8 @@ namespace Barotrauma
if (controlled == value) return;
controlled = value;
if (controlled != null) controlled.Enabled = true;
- CharacterHealth.OpenHealthWindow = null;
+ CharacterHealth.OpenHealthWindow = null;
+
}
}
@@ -110,33 +111,6 @@ namespace Barotrauma
get { return gibEmitters; }
}
- public class ObjectiveEntity
- {
- public Entity Entity;
- public Sprite Sprite;
- public Color Color;
-
- public ObjectiveEntity(Entity entity, Sprite sprite, Color? color = null)
- {
- Entity = entity;
- Sprite = sprite;
- if (color.HasValue)
- {
- Color = color.Value;
- }
- else
- {
- Color = Color.White;
- }
- }
- }
-
- private List activeObjectiveEntities = new List();
- public IEnumerable ActiveObjectiveEntities
- {
- get { return activeObjectiveEntities; }
- }
-
partial void InitProjSpecific(XDocument doc)
{
soundInterval = doc.Root.GetAttributeFloat("soundinterval", 10.0f);
@@ -164,6 +138,7 @@ namespace Barotrauma
break;
}
}
+ }
hudProgressBars = new Dictionary
+
+ ..\..\Libraries\NuGet\Concentus.1.1.7\lib\portable-net45+win+wpa81+wp80\Concentus.dll
+
..\..\Libraries\NuGet\GameAnalytics.Mono.SDK.1.1.12\lib\net45\GameAnalytics.Mono.dll
@@ -212,10 +215,6 @@
-
- {0e7fee6a-15e5-4a4e-943c-80276003478c}
- Concentus
-
{3af0347c-5a9b-4421-868c-8ee3dbfaebc6}
Facepunch.Steamworks
diff --git a/Barotrauma/BarotraumaClient/app.config b/Barotrauma/BarotraumaClient/app.config
index f067ae6ac..383108ffa 100644
--- a/Barotrauma/BarotraumaClient/app.config
+++ b/Barotrauma/BarotraumaClient/app.config
@@ -1,35 +1,35 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Barotrauma/BarotraumaClient/packages.config b/Barotrauma/BarotraumaClient/packages.config
index d637bffbb..695edea35 100644
--- a/Barotrauma/BarotraumaClient/packages.config
+++ b/Barotrauma/BarotraumaClient/packages.config
@@ -1,5 +1,6 @@
+
diff --git a/Barotrauma/BarotraumaServer/Properties/AssemblyInfo.cs b/Barotrauma/BarotraumaServer/Properties/AssemblyInfo.cs
index 1c7c140ff..bbde03313 100644
--- a/Barotrauma/BarotraumaServer/Properties/AssemblyInfo.cs
+++ b/Barotrauma/BarotraumaServer/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.8.10.0")]
-[assembly: AssemblyFileVersion("0.8.10.0")]
+[assembly: AssemblyVersion("0.8.9.10")]
+[assembly: AssemblyFileVersion("0.8.9.10")]
diff --git a/Barotrauma/BarotraumaServer/Server.csproj b/Barotrauma/BarotraumaServer/Server.csproj
index bc97ad59e..3647a5b6d 100644
--- a/Barotrauma/BarotraumaServer/Server.csproj
+++ b/Barotrauma/BarotraumaServer/Server.csproj
@@ -216,7 +216,7 @@
-
+
PreserveNewest
diff --git a/Barotrauma/BarotraumaServer/Source/GameMain.cs b/Barotrauma/BarotraumaServer/Source/GameMain.cs
index 6515b87c6..279693165 100644
--- a/Barotrauma/BarotraumaServer/Source/GameMain.cs
+++ b/Barotrauma/BarotraumaServer/Source/GameMain.cs
@@ -146,20 +146,11 @@ namespace Barotrauma
}
///
- /// Returns the file paths of all files of the given type in the content packages.
+ /// Returns the file paths of all files of the given type in the currently selected content packages.
///
- ///
- /// If true, also returns files in content packages that are installed but not currently selected.
- public IEnumerable GetFilesOfType(ContentType type, bool searchAllContentPackages = false)
+ public IEnumerable GetFilesOfType(ContentType type)
{
- if (searchAllContentPackages)
- {
- return ContentPackage.GetFilesOfType(ContentPackage.List, type);
- }
- else
- {
- return ContentPackage.GetFilesOfType(SelectedPackages, type);
- }
+ return ContentPackage.GetFilesOfType(SelectedPackages, type);
}
public void StartServer()
diff --git a/Barotrauma/BarotraumaServer/Source/Networking/GameServer.cs b/Barotrauma/BarotraumaServer/Source/Networking/GameServer.cs
index 5717efe48..d9137afc7 100644
--- a/Barotrauma/BarotraumaServer/Source/Networking/GameServer.cs
+++ b/Barotrauma/BarotraumaServer/Source/Networking/GameServer.cs
@@ -1960,8 +1960,6 @@ namespace Barotrauma.Networking
msg.Write(false);
}
- msg.Write(serverSettings.AllowRagdollButton);
-
serverSettings.WriteMonsterEnabled(msg);
CompressOutgoingMessage(msg);
diff --git a/Barotrauma/BarotraumaShared/Data/ContentPackages/Vanilla 0.9.xml b/Barotrauma/BarotraumaShared/Data/ContentPackages/Vanilla 0.9.xml
index 6cb28c845..5d1bf37a2 100644
--- a/Barotrauma/BarotraumaShared/Data/ContentPackages/Vanilla 0.9.xml
+++ b/Barotrauma/BarotraumaShared/Data/ContentPackages/Vanilla 0.9.xml
@@ -12,7 +12,6 @@
-
@@ -74,11 +73,14 @@
+
+
+
diff --git a/Barotrauma/BarotraumaShared/SharedCode.projitems b/Barotrauma/BarotraumaShared/SharedCode.projitems
index 05589e12a..f15f9dbd1 100644
--- a/Barotrauma/BarotraumaShared/SharedCode.projitems
+++ b/Barotrauma/BarotraumaShared/SharedCode.projitems
@@ -181,7 +181,6 @@
-
diff --git a/Barotrauma/BarotraumaShared/SharedContent.projitems b/Barotrauma/BarotraumaShared/SharedContent.projitems
index 0cfdcd61a..dfe87235b 100644
--- a/Barotrauma/BarotraumaShared/SharedContent.projitems
+++ b/Barotrauma/BarotraumaShared/SharedContent.projitems
@@ -364,18 +364,9 @@
PreserveNewest
-
- PreserveNewest
-
-
- PreserveNewest
-
PreserveNewest
-
- PreserveNewest
-
PreserveNewest
@@ -388,18 +379,6 @@
PreserveNewest
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
PreserveNewest
@@ -430,12 +409,6 @@
PreserveNewest
-
- PreserveNewest
-
-
- PreserveNewest
-
PreserveNewest
@@ -472,70 +445,34 @@
PreserveNewest
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
PreserveNewest
-
+
PreserveNewest
-
+
PreserveNewest
-
+
PreserveNewest
-
+
PreserveNewest
-
+
PreserveNewest
-
+
PreserveNewest
-
+
PreserveNewest
-
+
PreserveNewest
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
+
PreserveNewest
@@ -1207,9 +1144,6 @@
PreserveNewest
-
- PreserveNewest
-
PreserveNewest
@@ -1701,6 +1635,15 @@
PreserveNewest
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
PreserveNewest
@@ -2166,19 +2109,9 @@
PreserveNewest
-
- PreserveNewest
-
-
- PreserveNewest
-
- Never
+ PreserveNewest
-
- Never
-
-
@@ -3133,6 +3066,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
@@ -3329,10 +3265,10 @@
PreserveNewest
- Never
+ PreserveNewest
- Never
+ PreserveNewest
PreserveNewest
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs b/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs
index bd8df818d..26be7ee85 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs
@@ -320,9 +320,8 @@ namespace Barotrauma
{
State = AIState.Idle;
}
- else if (Character.Health < fleeHealthThreshold && SwarmBehavior == null)
+ else if (Character.Health < fleeHealthThreshold)
{
- // Don't flee from damage if in a swarm.
State = AIState.Escape;
}
else if (targetingPriority != null)
@@ -331,6 +330,8 @@ namespace Barotrauma
}
}
+ LatchOntoAI?.Update(this, deltaTime);
+
if (SelectedAiTarget != null && (SelectedAiTarget.Entity == null || SelectedAiTarget.Entity.Removed))
{
State = AIState.Idle;
@@ -368,15 +369,8 @@ namespace Barotrauma
default:
throw new NotImplementedException();
}
-
- LatchOntoAI?.Update(this, deltaTime);
- IsSteeringThroughGap = false;
- if (SwarmBehavior != null)
- {
- SwarmBehavior.IsActive = State == AIState.Idle && Character.CurrentHull == null;
- SwarmBehavior.Refresh();
- SwarmBehavior.UpdateSteering(deltaTime);
- }
+
+ SwarmBehavior?.Update(deltaTime);
steeringManager.Update(Character.AnimController.GetCurrentSpeed(run));
}
@@ -499,7 +493,7 @@ namespace Barotrauma
}
else
{
- if (!IsLatchedOnSub)
+ if (!IsProperlyLatchedOnSub)
{
UpdateWallTarget();
}
@@ -558,7 +552,7 @@ namespace Barotrauma
{
WallSection section = wallTarget.Structure.GetSection(wallTarget.SectionIndex);
Vector2 targetPos = wallTarget.Structure.SectionPosition(wallTarget.SectionIndex, true);
- if (section?.gap != null && SteerThroughGap(wallTarget.Structure, section, targetPos, deltaTime))
+ if (section?.gap != null && section.gap.IsRoomToRoom && SteerThroughGap(wallTarget.Structure, section, targetPos, deltaTime))
{
return;
}
@@ -799,21 +793,9 @@ namespace Barotrauma
}
}
- public bool IsSteeringThroughGap { get; private set; }
private bool SteerThroughGap(Structure wall, WallSection section, Vector2 targetWorldPos, float deltaTime)
{
- IsSteeringThroughGap = true;
- SelectedAiTarget = wall.AiTarget;
- wallTarget = null;
- LatchOntoAI?.DeattachFromBody();
- Character.AnimController.ReleaseStuckLimbs();
Hull targetHull = section.gap?.FlowTargetHull;
- float distance = Vector2.Distance(Character.WorldPosition, targetWorldPos);
- float maxDistance = Math.Min(wall.Rect.Width, wall.Rect.Height);
- if (distance > maxDistance)
- {
- return false;
- }
if (targetHull != null)
{
if (wall.IsHorizontal)
@@ -824,7 +806,16 @@ namespace Barotrauma
{
targetWorldPos.X = targetHull.WorldRect.Center.X;
}
- steeringManager.SteeringManual(deltaTime, Vector2.Normalize(targetWorldPos - Character.WorldPosition));
+ LatchOntoAI?.DeattachFromBody();
+ Character.AnimController.ReleaseStuckLimbs();
+ if (steeringManager is IndoorsSteeringManager)
+ {
+ steeringManager.SteeringManual(deltaTime, Vector2.Normalize(targetWorldPos - Character.WorldPosition));
+ }
+ else
+ {
+ steeringManager.SteeringSeek(ConvertUnits.ToSimUnits(targetWorldPos));
+ }
return true;
}
return false;
@@ -1056,43 +1047,19 @@ namespace Barotrauma
#region Targeting
private bool IsLatchedOnSub => LatchOntoAI != null && LatchOntoAI.IsAttachedToSub;
+ private bool IsProperlyLatchedOnSub => LatchOntoAI != null && LatchOntoAI.IsAttachedToSub && SelectedAiTarget?.Entity == wallTarget?.Structure;
+
//goes through all the AItargets, evaluates how preferable it is to attack the target,
//whether the Character can see/hear the target and chooses the most preferable target within
//sight/hearing range
public AITarget UpdateTargets(Character character, out TargetingPriority priority)
{
- if ((SelectedAiTarget != null || wallTarget != null) && IsLatchedOnSub)
+ if (IsProperlyLatchedOnSub)
{
- var wall = SelectedAiTarget.Entity as Structure;
- if (wall == null)
- {
- wall = wallTarget?.Structure;
- }
- // The target is not a wall or it's not the same as we are attached to -> release
- bool releaseTarget = wall == null || !wall.Bodies.Contains(LatchOntoAI.AttachJoints[0].BodyB);
- if (!releaseTarget)
- {
- for (int i = 0; i < wall.Sections.Length; i++)
- {
- if (CanPassThroughHole(wall, i))
- {
- releaseTarget = true;
- }
- }
- }
- if (releaseTarget)
- {
- SelectedAiTarget = null;
- wallTarget = null;
- LatchOntoAI.DeattachFromBody();
- }
- else if (SelectedAiTarget?.Entity == wallTarget?.Structure)
- {
- // If attached to a valid target, just keep the target.
- // Priority not used in this case.
- priority = null;
- return SelectedAiTarget;
- }
+ // If attached to a valid target, just keep the target.
+ // Priority not used in this case.
+ priority = null;
+ return SelectedAiTarget;
}
AITarget newTarget = null;
priority = null;
@@ -1175,7 +1142,7 @@ namespace Barotrauma
else if (target.Entity != null)
{
//skip the target if it's a room and the character is already inside a sub
- if (character.CurrentHull != null && target.Entity is Hull) { continue; }
+ if (character.CurrentHull != null && target.Entity is Hull) continue;
Door door = null;
if (target.Entity is Item item)
@@ -1204,37 +1171,23 @@ namespace Barotrauma
// Ignore structures that doesn't have a body (not walls)
continue;
}
- if (s.IsPlatform)
- {
- continue;
- }
- if (character.CurrentHull != null)
- {
- // Ignore walls when inside.
- continue;
- }
- valueModifier = 1;
- float wallMaxHealth = 400; // Anything more than this is ignored -> 200 = 1
- // Prefer weaker targets.
- valueModifier *= MathHelper.Lerp(1.5f, 0.5f, MathUtils.InverseLerp(0, 1, s.Health / wallMaxHealth));
+ // Ignore walls when inside.
+ valueModifier = character.CurrentHull == null ? 1 : 0;
if (aggressiveBoarding)
{
- var hulls = s.Submarine.GetHulls(false);
for (int i = 0; i < s.Sections.Length; i++)
{
var section = s.Sections[i];
- if (section.gap != null)
+ if (CanPassThroughHole(s, i))
{
- if (CanPassThroughHole(s, i))
- {
- bool leadsInside = !section.gap.IsRoomToRoom && section.gap.FlowTargetHull != null && hulls.Any(h => h.Rect.Intersects(section.rect));
- valueModifier *= leadsInside ? 5 : 0;
- }
- else
- {
- // up to 100% priority increase for every gap in the wall
- valueModifier *= 1 + section.gap.Open;
- }
+ // Ignore walls that can be passed through
+ valueModifier = 0;
+ break;
+ }
+ else if (section.gap != null)
+ {
+ // up to 100% priority increase for every gap in the wall
+ valueModifier *= 1 + section.gap.Open;
}
}
}
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/AI/IndoorsSteeringManager.cs b/Barotrauma/BarotraumaShared/Source/Characters/AI/IndoorsSteeringManager.cs
index 277a8b54c..2d3de2875 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/AI/IndoorsSteeringManager.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/AI/IndoorsSteeringManager.cs
@@ -223,10 +223,8 @@ namespace Barotrauma
}
}
- bool isDiving = character.AnimController.InWater && character.AnimController.HeadInWater;
-
//only humanoids can climb ladders
- if (!isDiving && character.AnimController is HumanoidAnimController && IsNextLadderSameAsCurrent)
+ if (character.AnimController is HumanoidAnimController && IsNextLadderSameAsCurrent)
{
if (character.SelectedConstruction != currentPath.CurrentNode.Ladders.Item &&
currentPath.CurrentNode.Ladders.Item.IsInsideTrigger(character.WorldPosition))
@@ -236,7 +234,7 @@ namespace Barotrauma
}
var collider = character.AnimController.Collider;
- if (character.IsClimbing && !isDiving)
+ if (character.IsClimbing)
{
Vector2 diff = currentPath.CurrentNode.SimPosition - pos;
bool nextLadderSameAsCurrent = IsNextLadderSameAsCurrent;
@@ -280,12 +278,6 @@ namespace Barotrauma
}
else if (character.AnimController.InWater)
{
- // If the character is underwater, we don't need the ladders anymore
- if (character.IsClimbing && isDiving)
- {
- character.AnimController.Anim = AnimController.Animation.None;
- character.SelectedConstruction = null;
- }
if (Vector2.DistanceSquared(pos, currentPath.CurrentNode.SimPosition) < MathUtils.Pow(collider.radius * 3, 2))
{
currentPath.SkipToNextNode();
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/AI/LatchOntoAI.cs b/Barotrauma/BarotraumaShared/Source/Characters/AI/LatchOntoAI.cs
index e68f9a3a2..c85b2caa7 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/AI/LatchOntoAI.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/AI/LatchOntoAI.cs
@@ -54,7 +54,7 @@ namespace Barotrauma
get { return attachJoints.Count > 0; }
}
- public bool IsAttachedToSub => IsAttached && (attachTargetBody?.UserData is Submarine || attachTargetBody?.UserData is Entity entity && entity.Submarine != null);
+ public bool IsAttachedToSub => IsAttached && attachTargetBody?.UserData is Entity entity && (entity is Submarine sub || entity?.Submarine != null);
public LatchOntoAI(XElement element, EnemyAIController enemyAI)
{
@@ -190,7 +190,7 @@ namespace Barotrauma
case AIController.AIState.Attack:
if (enemyAI.AttackingLimb != null)
{
- if (attachToSub && !enemyAI.IsSteeringThroughGap && wallAttachPos != Vector2.Zero && attachTargetBody != null)
+ if (attachToSub && wallAttachPos != Vector2.Zero && attachTargetBody != null)
{
// is not attached or is attached to something else
if (!IsAttached || IsAttached && attachJoints[0].BodyB == attachTargetBody)
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/AI/SwarmBehavior.cs b/Barotrauma/BarotraumaShared/Source/Characters/AI/SwarmBehavior.cs
index 76adf9000..3eb217589 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/AI/SwarmBehavior.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/AI/SwarmBehavior.cs
@@ -14,16 +14,11 @@ namespace Barotrauma
private float maxDistFromCenter;
private float cohesion;
- public List Members { get; private set; } = new List();
- public HashSet ActiveMembers { get; private set; } = new HashSet();
+ private List members = new List();
- private EnemyAIController ai;
+ private AIController ai;
- public bool IsActive { get; set; }
- public bool IsEnoughMembers => ActiveMembers.Count > 1;
-
-
- public SwarmBehavior(XElement element, EnemyAIController ai)
+ public SwarmBehavior(XElement element, AIController ai)
{
this.ai = ai;
minDistFromClosest = ConvertUnits.ToSimUnits(element.GetAttributeFloat("mindistfromclosest", 10.0f));
@@ -37,36 +32,21 @@ namespace Barotrauma
{
if (character.AIController is EnemyAIController enemyAI && enemyAI.SwarmBehavior != null)
{
- enemyAI.SwarmBehavior.Members = swarm.ToList();
+ enemyAI.SwarmBehavior.members = swarm.ToList();
}
}
}
- public void Refresh()
+ public void Update(float deltaTime)
{
- Members.RemoveAll(m => m.IsDead || m.Removed);
- foreach (var member in Members)
- {
- if (!member.AIController.Enabled && member.IsRemotePlayer || Character.Controlled == member || !((EnemyAIController)member.AIController).SwarmBehavior.IsActive)
- {
- ActiveMembers.Remove(member);
- }
- else
- {
- ActiveMembers.Add(member);
- }
- }
- }
+ members.RemoveAll(m => m.IsDead || m.Removed);
+ if (members.Count < 2) { return; }
- public void UpdateSteering(float deltaTime)
- {
- if (!IsActive) { return; }
- if (!IsEnoughMembers) { return; }
//calculate the "center of mass" of the swarm and the distance to the closest character in the swarm
float closestDistSqr = float.MaxValue;
Vector2 center = Vector2.Zero;
AICharacter closest = null;
- foreach (AICharacter member in Members)
+ foreach (AICharacter member in members)
{
center += member.SimPosition;
if (member == ai.Character) { continue; }
@@ -77,7 +57,7 @@ namespace Barotrauma
closest = member;
}
}
- center /= Members.Count;
+ center /= members.Count;
if (closest == null) { return; }
@@ -103,11 +83,11 @@ namespace Barotrauma
if (cohesion > 0.0f)
{
Vector2 avgVel = Vector2.Zero;
- foreach (AICharacter member in Members)
+ foreach (AICharacter member in members)
{
avgVel += member.AnimController.TargetMovement;
}
- avgVel /= Members.Count;
+ avgVel /= members.Count;
ai.SteeringManager.SteeringManual(deltaTime, avgVel * cohesion);
}
}
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Animation/FishAnimController.cs b/Barotrauma/BarotraumaShared/Source/Characters/Animation/FishAnimController.cs
index 1d7ac3ecb..905e06237 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/Animation/FishAnimController.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/Animation/FishAnimController.cs
@@ -293,27 +293,6 @@ namespace Barotrauma
return;
}
- if (GameMain.NetworkMember == null || !GameMain.NetworkMember.IsClient)
- {
- //stop dragging if there's something between the pull limb and the target
- Vector2 sourceSimPos = mouthLimb.SimPosition;
- Vector2 targetSimPos = target.SimPosition;
- if (character.Submarine != null && character.SelectedCharacter.Submarine == null)
- {
- targetSimPos -= character.Submarine.SimPosition;
- }
- else if (character.Submarine == null && character.SelectedCharacter.Submarine != null)
- {
- sourceSimPos -= character.SelectedCharacter.Submarine.SimPosition;
- }
- var body = Submarine.CheckVisibility(sourceSimPos, targetSimPos, ignoreSubs: true);
- if (body != null)
- {
- character.DeselectCharacter();
- return;
- }
- }
-
Character targetCharacter = target;
float eatSpeed = character.Mass / targetCharacter.Mass * 0.1f;
eatTimer += deltaTime * eatSpeed;
@@ -751,6 +730,22 @@ namespace Barotrauma
limb?.body.SmoothRotate(angle, torque, wrapAngle: false);
}
+ private void SmoothRotateWithoutWrapping(Limb limb, float angle, Limb referenceLimb, float torque)
+ {
+ //make sure the angle "has the same number of revolutions" as the reference limb
+ //(e.g. we don't want to rotate the legs to 0 if the torso is at 360, because that'd blow up the hip joints)
+ while (referenceLimb.Rotation - angle > MathHelper.TwoPi)
+ {
+ angle += MathHelper.TwoPi;
+ }
+ while (referenceLimb.Rotation - angle < -MathHelper.TwoPi)
+ {
+ angle -= MathHelper.TwoPi;
+ }
+
+ limb?.body.SmoothRotate(angle, torque, wrapAngle: false);
+ }
+
public override void Flip()
{
base.Flip();
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Animation/HumanoidAnimController.cs b/Barotrauma/BarotraumaShared/Source/Characters/Animation/HumanoidAnimController.cs
index 3530df734..5de8c9140 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/Animation/HumanoidAnimController.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/Animation/HumanoidAnimController.cs
@@ -560,8 +560,7 @@ namespace Barotrauma
//TODO: take into account that the feet aren't necessarily in CurrentHull
//full slowdown (1.5f) when water is up to the torso
surfaceY = ConvertUnits.ToSimUnits(currentHull.Surface);
- float bottomPos = Math.Max(colliderPos.Y, currentHull.Rect.Y - currentHull.Rect.Height);
- slowdownAmount = MathHelper.Clamp((surfaceY - bottomPos) / TorsoPosition.Value, 0.0f, 1.0f) * 1.5f;
+ slowdownAmount = MathHelper.Clamp((surfaceY - colliderPos.Y) / TorsoPosition.Value, 0.0f, 1.0f) * 1.5f;
}
float maxSpeed = Math.Max(TargetMovement.Length() - slowdownAmount, 1.0f);
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
index ef144932c..90321ed94 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
@@ -426,7 +426,7 @@ namespace Barotrauma
}
}
- public bool CanSpeak;
+ private bool canSpeak;
private bool speechImpedimentSet;
@@ -436,7 +436,7 @@ namespace Barotrauma
{
get
{
- if (!CanSpeak || IsUnconscious || Stun > 0.0f || IsDead) return 100.0f;
+ if (!canSpeak || IsUnconscious || Stun > 0.0f || IsDead) return 100.0f;
return speechImpediment;
}
set
@@ -710,7 +710,7 @@ namespace Barotrauma
displayName = TextManager.Get($"Character.{Path.GetFileName(Path.GetDirectoryName(file))}", true);
IsHumanoid = doc.Root.GetAttributeBool("humanoid", false);
- CanSpeak = doc.Root.GetAttributeBool("canspeak", false);
+ canSpeak = doc.Root.GetAttributeBool("canspeak", false);
needsAir = doc.Root.GetAttributeBool("needsair", false);
Noise = doc.Root.GetAttributeFloat("noise", 100f);
@@ -853,7 +853,7 @@ namespace Barotrauma
{
if (characterConfigFiles == null)
{
- characterConfigFiles = GameMain.Instance.GetFilesOfType(ContentType.Character, searchAllContentPackages: true);
+ characterConfigFiles = GameMain.Instance.GetFilesOfType(ContentType.Character);
}
return characterConfigFiles;
}
@@ -2555,9 +2555,11 @@ namespace Barotrauma
GameMain.GameSession?.CrewManager?.RemoveCharacter(this);
#endif
- CharacterList.Remove(this);
+#if CLIENT
+ GameMain.GameSession?.CrewManager?.RemoveCharacter(this);
+#endif
- if (Controlled == this) { Controlled = null; }
+ CharacterList.Remove(this);
if (Inventory != null)
{
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/CharacterInfo.cs b/Barotrauma/BarotraumaShared/Source/Characters/CharacterInfo.cs
index cb7df70ec..8dcf98fce 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/CharacterInfo.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/CharacterInfo.cs
@@ -399,7 +399,7 @@ namespace Barotrauma
{
ID = idCounter;
idCounter++;
- Name = element.GetAttributeString("name", "");
+ Name = element.GetAttributeString("name", "unnamed");
string genderStr = element.GetAttributeString("gender", "male").ToLowerInvariant();
File = element.GetAttributeString("file", "");
SourceElement = GetConfig(File).Root;
@@ -423,29 +423,6 @@ namespace Barotrauma
element.GetAttributeInt("beardindex", -1),
element.GetAttributeInt("moustacheindex", -1),
element.GetAttributeInt("faceattachmentindex", -1));
-
- if (string.IsNullOrEmpty(Name))
- {
- if (SourceElement.Element("name") != null)
- {
- string firstNamePath = SourceElement.Element("name").GetAttributeString("firstname", "");
- if (firstNamePath != "")
- {
- firstNamePath = firstNamePath.Replace("[GENDER]", (Head.gender == Gender.Female) ? "female" : "male");
- Name = ToolBox.GetRandomLine(firstNamePath);
- }
-
- string lastNamePath = SourceElement.Element("name").GetAttributeString("lastname", "");
- if (lastNamePath != "")
- {
- lastNamePath = lastNamePath.Replace("[GENDER]", (Head.gender == Gender.Female) ? "female" : "male");
- if (Name != "") Name += " ";
- Name += ToolBox.GetRandomLine(lastNamePath);
- }
- }
- }
-
-
StartItemsGiven = element.GetAttributeBool("startitemsgiven", false);
string personalityName = element.GetAttributeString("personality", "");
ragdollFileName = element.GetAttributeString("ragdoll", string.Empty);
diff --git a/Barotrauma/BarotraumaShared/Source/ContentPackage.cs b/Barotrauma/BarotraumaShared/Source/ContentPackage.cs
index e51a98e27..e7407db0f 100644
--- a/Barotrauma/BarotraumaShared/Source/ContentPackage.cs
+++ b/Barotrauma/BarotraumaShared/Source/ContentPackage.cs
@@ -217,7 +217,6 @@ namespace Barotrauma
{
return corePackageRequiredFiles.All(fileType => Files.Any(file => file.Type == fileType));
}
-
public bool ContainsRequiredCorePackageFiles(out List missingContentTypes)
{
missingContentTypes = new List();
@@ -231,25 +230,6 @@ namespace Barotrauma
return missingContentTypes.Count == 0;
}
- ///
- /// Make sure all the files defined in the content package are present
- ///
- ///
- public bool VerifyFiles(out List errorMessages)
- {
- errorMessages = new List();
- foreach (ContentFile file in Files)
- {
- if (!File.Exists(file.Path))
- {
- errorMessages.Add("File \"" + file.Path + "\" not found.");
- continue;
- }
- }
-
- return errorMessages.Count == 0;
- }
-
public static ContentPackage CreatePackage(string name, string path, bool corePackage)
{
ContentPackage newPackage = new ContentPackage()
@@ -418,13 +398,6 @@ namespace Barotrauma
return path == "Mods";
}
}
- ///
- /// Are mods allowed to install a file into the specified path. If a content package XML includes files
- /// with a prohibited path, they are treated as references to external files. For example, a mod could include
- /// some vanilla files in the XML, in which case the game will simply use the vanilla files present in the game folder.
- ///
- ///
- ///
public static bool IsModFilePathAllowed(string path)
{
while (true)
@@ -449,6 +422,16 @@ namespace Barotrauma
return contentPackages.SelectMany(f => f.Files).Where(f => f.Type == type).Select(f => f.Path);
}
+ public IEnumerable GetFilesOfType(ContentType type)
+ {
+ return Files.Where(f => f.Type == type).Select(f => f.Path);
+ }
+
+ public static IEnumerable GetFilesOfType(IEnumerable contentPackages, ContentType type)
+ {
+ return contentPackages.SelectMany(f => f.Files).Where(f => f.Type == type).Select(f => f.Path);
+ }
+
public IEnumerable GetFilesOfType(ContentType type)
{
return Files.Where(f => f.Type == type).Select(f => f.Path);
diff --git a/Barotrauma/BarotraumaShared/Source/Events/Missions/MonsterMission.cs b/Barotrauma/BarotraumaShared/Source/Events/Missions/MonsterMission.cs
index 6e8445416..01905d2cf 100644
--- a/Barotrauma/BarotraumaShared/Source/Events/Missions/MonsterMission.cs
+++ b/Barotrauma/BarotraumaShared/Source/Events/Missions/MonsterMission.cs
@@ -34,33 +34,14 @@ namespace Barotrauma
{
Level.Loaded.TryGetInterestingPosition(true, Level.PositionType.MainPath, Level.Loaded.Size.X * 0.3f, out Vector2 spawnPos);
- //bool isClient = GameMain.NetworkMember != null && GameMain.NetworkMember.IsClient;
- //for (int i = 0; i < monsterCount; i++)
- //{
- // monsters.Add(Character.Create(monsterFile, spawnPos, ToolBox.RandomSeed(8), null, isClient, true, false));
- //}
- //monsters.ForEach(m => m.Enabled = false);
- //SwarmBehavior.CreateSwarm(monsters.Cast());
- //sonarPositions.Add(spawnPos);
-
- float offsetAmount = 500;
+ bool isClient = GameMain.NetworkMember != null && GameMain.NetworkMember.IsClient;
for (int i = 0; i < monsterCount; i++)
{
- CoroutineManager.InvokeAfter(() =>
- {
- bool isClient = GameMain.NetworkMember != null && GameMain.NetworkMember.IsClient;
- var monster = Character.Create(monsterFile, spawnPos + Rand.Vector(offsetAmount, Rand.RandSync.Server), i.ToString(), null, isClient, true, true);
- monster.Enabled = false;
- monsters.Add(monster);
- if (monsters.Count == monsterCount)
- {
- //this will do nothing if the monsters have no swarm behavior defined,
- //otherwise it'll make the spawned characters act as a swarm
- SwarmBehavior.CreateSwarm(monsters.Cast());
- sonarPositions.Add(spawnPos);
- }
- }, Rand.Range(0f, monsterCount / 2, Rand.RandSync.Server));
+ monsters.Add(Character.Create(monsterFile, spawnPos, ToolBox.RandomSeed(8), null, isClient, true, false));
}
+ monsters.ForEach(m => m.Enabled = false);
+ SwarmBehavior.CreateSwarm(monsters.Cast());
+ sonarPositions.Add(spawnPos);
}
public override void Update(float deltaTime)
diff --git a/Barotrauma/BarotraumaShared/Source/GameSettings.cs b/Barotrauma/BarotraumaShared/Source/GameSettings.cs
index fc6b1cdc0..e85d877db 100644
--- a/Barotrauma/BarotraumaShared/Source/GameSettings.cs
+++ b/Barotrauma/BarotraumaShared/Source/GameSettings.cs
@@ -604,14 +604,13 @@ namespace Barotrauma
}
foreach (ContentPackage contentPackage in SelectedContentPackages)
{
- bool packageOk = contentPackage.VerifyFiles(out List errorMessages);
- if (!packageOk)
- {
- DebugConsole.ThrowError("Error in content package \"" + contentPackage.Name + "\":\n" + string.Join("\n", errorMessages));
- continue;
- }
foreach (ContentFile file in contentPackage.Files)
{
+ if (!System.IO.File.Exists(file.Path))
+ {
+ DebugConsole.ThrowError("Error in content package \"" + contentPackage.Name + "\" - file \"" + file.Path + "\" not found.");
+ continue;
+ }
ToolBox.IsProperFilenameCase(file.Path);
}
}
@@ -971,14 +970,13 @@ namespace Barotrauma
foreach (ContentPackage contentPackage in SelectedContentPackages)
{
- bool packageOk = contentPackage.VerifyFiles(out List errorMessages);
- if (!packageOk)
- {
- DebugConsole.ThrowError("Error in content package \"" + contentPackage.Name + "\":\n" + string.Join("\n", errorMessages));
- continue;
- }
foreach (ContentFile file in contentPackage.Files)
{
+ if (!System.IO.File.Exists(file.Path))
+ {
+ DebugConsole.ThrowError("Error in content package \"" + contentPackage.Name + "\" - file \"" + file.Path + "\" not found.");
+ continue;
+ }
ToolBox.IsProperFilenameCase(file.Path);
}
}
diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/RepairTool.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/RepairTool.cs
index 188d307c5..38953e28a 100644
--- a/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/RepairTool.cs
+++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Holdable/RepairTool.cs
@@ -293,35 +293,10 @@ namespace Barotrauma.Items.Components
//steer closer if almost in range
if (dist > Range)
{
- Vector2 standPos = new Vector2(Math.Sign(-fromItemToLeak.X), Math.Sign(-fromItemToLeak.Y)) / 2;
- if (!character.AnimController.InWater)
- {
- if (leak.IsHorizontal)
- {
- standPos.X *= 2;
- standPos.Y = 0;
- }
- else
- {
- standPos.X = 0;
- }
- }
- if (character.AIController.SteeringManager is IndoorsSteeringManager indoorSteering)
- {
- if (indoorSteering.CurrentPath != null && !indoorSteering.IsPathDirty && indoorSteering.CurrentPath.Unreachable)
- {
- Vector2 dir = Vector2.Normalize(standPos - character.WorldPosition);
- character.AIController.SteeringManager.SteeringManual(deltaTime, dir / 2);
- }
- else
- {
- character.AIController.SteeringManager.SteeringSeek(standPos);
- }
- }
- else
- {
- character.AIController.SteeringManager.SteeringSeek(standPos);
- }
+ Vector2 standPos = leak.IsHorizontal ? new Vector2(Math.Sign(-fromItemToLeak.X), 0.0f) : new Vector2(0.0f, Math.Sign(-fromItemToLeak.Y) * 0.5f);
+ standPos = leak.WorldPosition + standPos * Range;
+ Vector2 dir = Vector2.Normalize(standPos - character.WorldPosition);
+ character.AIController.SteeringManager.SteeringManual(deltaTime, dir / 2);
}
else
{
@@ -330,29 +305,30 @@ namespace Barotrauma.Items.Components
// Too close -> steer away
character.AIController.SteeringManager.SteeringManual(deltaTime, Vector2.Normalize(character.SimPosition - leak.SimPosition) / 2);
}
- else if (dist <= Range)
- {
- // In range
- character.AIController.SteeringManager.Reset();
- }
else
{
- return false;
+ character.AIController.SteeringManager.Reset();
}
}
+
sinTime += deltaTime;
character.CursorPosition = leak.Position + VectorExtensions.Forward(Item.body.TransformedRotation + (float)Math.Sin(sinTime), dist);
if (item.RequireAimToUse)
{
character.SetInput(InputType.Aim, false, true);
}
+
// Press the trigger only when the tool is approximately facing the target.
- var angle = VectorExtensions.Angle(VectorExtensions.Forward(item.body.TransformedRotation), fromItemToLeak);
- if (angle < MathHelper.PiOver4)
+ // If the character is climbing, ignore the check, because we cannot aim while climbing.
+ if (VectorExtensions.Angle(VectorExtensions.Forward(item.body.TransformedRotation), fromItemToLeak) < MathHelper.PiOver4)
{
character.SetInput(InputType.Shoot, false, true);
Use(deltaTime, character);
}
+ else
+ {
+ sinTime -= deltaTime * 2;
+ }
bool leakFixed = (leak.Open <= 0.0f || leak.Removed) &&
(leak.ConnectedWall == null || leak.ConnectedWall.Sections.Average(s => s.damage) < 1);
diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/ItemComponent.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/ItemComponent.cs
index fa9ff9e17..831c07c39 100644
--- a/Barotrauma/BarotraumaShared/Source/Items/Components/ItemComponent.cs
+++ b/Barotrauma/BarotraumaShared/Source/Items/Components/ItemComponent.cs
@@ -801,7 +801,10 @@ namespace Barotrauma.Items.Components
string msg = TextManager.Get(Msg, true);
if (msg != null)
{
- msg = TextManager.ParseInputTypes(msg);
+ foreach (InputType inputType in Enum.GetValues(typeof(InputType)))
+ {
+ msg = msg.Replace("[" + inputType.ToString().ToLowerInvariant() + "]", GameMain.Config.KeyBind(inputType).ToString());
+ }
DisplayMsg = msg;
}
else
diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Deconstructor.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Deconstructor.cs
index fb4392e3c..95476dc1f 100644
--- a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Deconstructor.cs
+++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Deconstructor.cs
@@ -13,11 +13,6 @@ namespace Barotrauma.Items.Components
private ItemContainer inputContainer, outputContainer;
- public ItemContainer InputContainer
- {
- get { return inputContainer; }
- }
-
public ItemContainer OutputContainer
{
get { return outputContainer; }
diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Fabricator.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Fabricator.cs
index cd1b0e081..7ade916d4 100644
--- a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Fabricator.cs
+++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Fabricator.cs
@@ -23,16 +23,6 @@ namespace Barotrauma.Items.Components
private ItemContainer inputContainer, outputContainer;
- public ItemContainer InputContainer
- {
- get { return inputContainer; }
- }
-
- public ItemContainer OutputContainer
- {
- get { return outputContainer; }
- }
-
private float progressState;
public Fabricator(Item item, XElement element)
@@ -108,23 +98,7 @@ namespace Barotrauma.Items.Components
{
return (picker != null);
}
-
- public void RemoveFabricationRecipes(List allowedIdentifiers)
- {
- for (int i = 0; i < fabricationRecipes.Count; i++)
- {
- if (!allowedIdentifiers.Contains(fabricationRecipes[i].TargetItem.Identifier))
- {
- fabricationRecipes.RemoveAt(i);
- i--;
- }
- }
-
- CreateRecipes();
- }
-
- partial void CreateRecipes();
-
+
private void StartFabricating(FabricationRecipe selectedItem, Character user)
{
if (selectedItem == null) return;
diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Sonar.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Sonar.cs
index 144d8da1a..40e97dfe5 100644
--- a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Sonar.cs
+++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Sonar.cs
@@ -259,7 +259,7 @@ namespace Barotrauma.Items.Components
int clockDir = (int)Math.Round((angle / MathHelper.TwoPi) * 12);
if (clockDir == 0) clockDir = 12;
- return TextManager.Get("roomname.subdiroclock").Replace("[dir]", clockDir.ToString());
+ return TextManager.Get("SubDirOClock").Replace("[dir]", clockDir.ToString());
}
private Vector2 GetTransducerCenter()
diff --git a/Barotrauma/BarotraumaShared/Source/Items/Inventory.cs b/Barotrauma/BarotraumaShared/Source/Items/Inventory.cs
index 85d352153..e6e6a9541 100644
--- a/Barotrauma/BarotraumaShared/Source/Items/Inventory.cs
+++ b/Barotrauma/BarotraumaShared/Source/Items/Inventory.cs
@@ -206,16 +206,6 @@ namespace Barotrauma
return true;
}
- public bool IsFull()
- {
- for (int i = 0; i < capacity; i++)
- {
- if (Items[i] == null) return false;
- }
-
- return true;
- }
-
protected bool TrySwapping(int index, Item item, Character user, bool createNetworkEvent)
{
if (item?.ParentInventory == null || Items[index] == null) return false;
diff --git a/Barotrauma/BarotraumaShared/Source/Items/Item.cs b/Barotrauma/BarotraumaShared/Source/Items/Item.cs
index c33f7ea82..1622e76e8 100644
--- a/Barotrauma/BarotraumaShared/Source/Items/Item.cs
+++ b/Barotrauma/BarotraumaShared/Source/Items/Item.cs
@@ -1149,10 +1149,6 @@ namespace Barotrauma
{
body.SetTransform(body.SimPosition - Submarine.SimPosition, body.Rotation);
}
- else if (Submarine != null && prevSub != null && Submarine != prevSub)
- {
- body.SetTransform(body.SimPosition + prevSub.SimPosition - Submarine.SimPosition, body.Rotation);
- }
Vector2 displayPos = ConvertUnits.ToDisplayUnits(body.SimPosition);
rect.X = (int)(displayPos.X - rect.Width / 2.0f);
diff --git a/Barotrauma/BarotraumaShared/Source/Map/Explosion.cs b/Barotrauma/BarotraumaShared/Source/Map/Explosion.cs
index 40f2acd92..a73ac8907 100644
--- a/Barotrauma/BarotraumaShared/Source/Map/Explosion.cs
+++ b/Barotrauma/BarotraumaShared/Source/Map/Explosion.cs
@@ -40,7 +40,7 @@ namespace Barotrauma
flames = true;
underwaterBubble = true;
}
-
+
public Explosion(XElement element, string parentDebugName)
{
attack = new Attack(element, parentDebugName + ", Explosion");
@@ -62,16 +62,6 @@ namespace Barotrauma
CameraShake = element.GetAttributeFloat("camerashake", attack.Range * 0.1f);
}
- public void DisableParticles()
- {
- sparks = false;
- shockwave = false;
- smoke = false;
- flash = false;
- flames = false;
- underwaterBubble = false;
- }
-
public List> GetRecentExplosions(float maxSecondsAgo)
{
return prevExplosions.FindAll(e => e.Third >= Timing.TotalTime - maxSecondsAgo);
diff --git a/Barotrauma/BarotraumaShared/Source/Map/FireSource.cs b/Barotrauma/BarotraumaShared/Source/Map/FireSource.cs
index f3b97de1c..d78a6fdc8 100644
--- a/Barotrauma/BarotraumaShared/Source/Map/FireSource.cs
+++ b/Barotrauma/BarotraumaShared/Source/Map/FireSource.cs
@@ -14,15 +14,15 @@ namespace Barotrauma
{
const float OxygenConsumption = 50.0f;
const float GrowSpeed = 5.0f;
+
+ private Hull hull;
- protected Hull hull;
-
- protected Vector2 position;
- protected Vector2 size;
+ private Vector2 position;
+ private Vector2 size;
private Entity Submarine;
- protected bool removed;
+ private bool removed;
#if CLIENT
private List burnDecals = new List();
@@ -182,16 +182,6 @@ namespace Barotrauma
}
}
- protected virtual void ReduceOxygen(float deltaTime)
- {
- hull.Oxygen -= size.X * deltaTime * OxygenConsumption;
- }
-
- protected virtual void AdjustXPos(float growModifier, float deltaTime)
- {
- position.X -= GrowSpeed * growModifier * 0.5f * deltaTime;
- }
-
partial void UpdateProjSpecific(float growModifier);
private void OnChangeHull(Vector2 pos, Hull particleHull)
diff --git a/Barotrauma/BarotraumaShared/Source/Map/Levels/Level.cs b/Barotrauma/BarotraumaShared/Source/Map/Levels/Level.cs
index 695b56df0..5bace8352 100644
--- a/Barotrauma/BarotraumaShared/Source/Map/Levels/Level.cs
+++ b/Barotrauma/BarotraumaShared/Source/Map/Levels/Level.cs
@@ -138,9 +138,6 @@ namespace Barotrauma
public Submarine StartOutpost { get; private set; }
public Submarine EndOutpost { get; private set; }
- private Submarine preSelectedStartOutpost;
- private Submarine preSelectedEndOutpost;
-
public string Seed
{
get { return seed; }
@@ -212,7 +209,7 @@ namespace Barotrauma
///
/// A scalar between 0-100
/// A scalar between 0-1 (0 = the minimum width defined in the generation params is used, 1 = the max width is used)
- public Level(string seed, float difficulty, float sizeFactor, LevelGenerationParams generationParams, Biome biome, Submarine startOutpost = null, Submarine endOutPost = null)
+ public Level(string seed, float difficulty, float sizeFactor, LevelGenerationParams generationParams, Biome biome)
: base(null)
{
@@ -228,9 +225,6 @@ namespace Barotrauma
(width / GridCellSize) * GridCellSize,
(generationParams.Height / GridCellSize) * GridCellSize);
- preSelectedStartOutpost = startOutpost;
- preSelectedEndOutpost = endOutPost;
-
//remove from entity dictionary
base.Remove();
}
@@ -1516,24 +1510,14 @@ namespace Barotrauma
continue;
}
- //only create a starting outpost in campaign and tutorial modes
- if (!IsModeStartOutpostCompatible() && ((i == 0) == !Mirrored))
+ //only create a starting outpost in campaign mode
+ if (GameMain.GameSession?.GameMode as CampaignMode == null && ((i == 0) == !Mirrored))
{
continue;
}
-
- Submarine outpost = null;
-
- if (i == 0 && preSelectedStartOutpost == null || i == 1 && preSelectedEndOutpost == null)
- {
- string outpostFile = outpostFiles.GetRandom(Rand.RandSync.Server);
- outpost = new Submarine(outpostFile, tryLoad: false);
- }
- else
- {
- outpost = (i == 0) ? preSelectedStartOutpost : preSelectedEndOutpost;
- }
-
+
+ string outpostFile = outpostFiles.GetRandom(Rand.RandSync.Server);
+ var outpost = new Submarine(outpostFile, tryLoad: false);
outpost.Load(unloadPrevious: false);
outpost.MakeOutpost();
@@ -1585,15 +1569,6 @@ namespace Barotrauma
}
}
- private bool IsModeStartOutpostCompatible()
- {
-#if CLIENT
- return GameMain.GameSession?.GameMode as CampaignMode != null || GameMain.GameSession?.GameMode as TutorialMode != null;
-#else
- return GameMain.GameSession?.GameMode as CampaignMode != null;
-#endif
- }
-
public override void Remove()
{
base.Remove();
diff --git a/Barotrauma/BarotraumaShared/Source/Map/Structure.cs b/Barotrauma/BarotraumaShared/Source/Map/Structure.cs
index 38dcb8a64..59d65255f 100644
--- a/Barotrauma/BarotraumaShared/Source/Map/Structure.cs
+++ b/Barotrauma/BarotraumaShared/Source/Map/Structure.cs
@@ -635,6 +635,24 @@ namespace Barotrauma
var character = ((Limb)f2.Body.UserData).character;
if (character.DisableImpactDamageTimer > 0.0f || ((Limb)f2.Body.UserData).Mass < 100.0f) return true;
}
+
+ if (!Prefab.Platform && Prefab.StairDirection == Direction.None)
+ {
+ Vector2 pos = ConvertUnits.ToDisplayUnits(f2.Body.Position);
+
+ int section = FindSectionIndex(pos);
+ if (section > -1)
+ {
+ Vector2 normal = contact.Manifold.LocalNormal;
+
+ float impact = Vector2.Dot(f2.Body.LinearVelocity, -normal) * f2.Body.Mass * 0.1f;
+ if (impact < 10.0f) return true;
+#if CLIENT
+ SoundPlayer.PlayDamageSound("StructureBlunt", impact, SectionPosition(section, true), tags: Tags);
+#endif
+ AddDamage(section, impact);
+ }
+ }
OnImpactProjSpecific(f1, f2, contact);
diff --git a/Barotrauma/BarotraumaShared/Source/Map/Submarine.cs b/Barotrauma/BarotraumaShared/Source/Map/Submarine.cs
index a9c771551..9167e2774 100644
--- a/Barotrauma/BarotraumaShared/Source/Map/Submarine.cs
+++ b/Barotrauma/BarotraumaShared/Source/Map/Submarine.cs
@@ -431,12 +431,6 @@ namespace Barotrauma
else if (ic is Pickable pickable)
{
//prevent picking up (or deattaching) items
-#if CLIENT
- if (GameMain.GameSession?.GameMode is TutorialMode)
- {
- continue;
- }
-#endif
pickable.CanBePicked = false;
pickable.CanBeSelected = false;
}
@@ -542,6 +536,20 @@ namespace Barotrauma
{
maxX = Math.Min(maxX, ruin.Area.X - 100.0f);
}
+ else
+ {
+ maxX = Math.Min(maxX, ruin.Area.X - 100.0f);
+ }
+ }
+
+ if (minX < 0.0f && maxX > Level.Loaded.Size.X)
+ {
+ //no walls found at either side, just use the initial spawnpos and hope for the best
+ }
+ else if (minX < 0)
+ {
+ //no wall found at the left side, spawn to the left from the right-side wall
+ spawnPos.X = maxX - minWidth - 100.0f + subDockingPortOffset;
}
if (minX < 0.0f && maxX > Level.Loaded.Size.X)
diff --git a/Barotrauma/BarotraumaShared/Source/Map/SubmarineBody.cs b/Barotrauma/BarotraumaShared/Source/Map/SubmarineBody.cs
index 95575a22c..d423f76a6 100644
--- a/Barotrauma/BarotraumaShared/Source/Map/SubmarineBody.cs
+++ b/Barotrauma/BarotraumaShared/Source/Map/SubmarineBody.cs
@@ -468,7 +468,7 @@ namespace Barotrauma
var gaps = newHull?.ConnectedGaps ?? Gap.GapList.Where(g => g.Submarine == submarine);
targetPos = character.WorldPosition;
- Gap adjacentGap = Gap.FindAdjacent(gaps, targetPos, 500.0f);
+ Gap adjacentGap = Gap.FindAdjacent(gaps, targetPos, 200.0f);
if (adjacentGap == null) return true;
if (newHull != null)
diff --git a/Barotrauma/BarotraumaShared/Source/Networking/EntitySpawner.cs b/Barotrauma/BarotraumaShared/Source/Networking/EntitySpawner.cs
index e89da30e1..c2cd7710d 100644
--- a/Barotrauma/BarotraumaShared/Source/Networking/EntitySpawner.cs
+++ b/Barotrauma/BarotraumaShared/Source/Networking/EntitySpawner.cs
@@ -102,7 +102,7 @@ namespace Barotrauma
{
string errorMsg = "Attempted to add a null item to entity spawn queue.\n" + Environment.StackTrace;
DebugConsole.ThrowError(errorMsg);
- GameAnalyticsManager.AddErrorEventOnce("EntitySpawner.AddToSpawnQueue1:ItemPrefabNull", GameAnalyticsSDK.Net.EGAErrorSeverity.Error, errorMsg);
+ GameAnalyticsManager.AddErrorEventOnce("EntitySpawner.AddToSpawnQueue3:ItemPrefabNull", GameAnalyticsSDK.Net.EGAErrorSeverity.Error, errorMsg);
return;
}
spawnQueue.Enqueue(new ItemSpawnInfo(itemPrefab, worldPosition, condition));
@@ -115,7 +115,7 @@ namespace Barotrauma
{
string errorMsg = "Attempted to add a null item to entity spawn queue.\n" + Environment.StackTrace;
DebugConsole.ThrowError(errorMsg);
- GameAnalyticsManager.AddErrorEventOnce("EntitySpawner.AddToSpawnQueue2:ItemPrefabNull", GameAnalyticsSDK.Net.EGAErrorSeverity.Error, errorMsg);
+ GameAnalyticsManager.AddErrorEventOnce("EntitySpawner.AddToSpawnQueue3:ItemPrefabNull", GameAnalyticsSDK.Net.EGAErrorSeverity.Error, errorMsg);
return;
}
spawnQueue.Enqueue(new ItemSpawnInfo(itemPrefab, position, sub, condition));
diff --git a/Barotrauma/BarotraumaShared/Source/Networking/ServerSettings.cs b/Barotrauma/BarotraumaShared/Source/Networking/ServerSettings.cs
index 5dd5f1546..0a5ca7bb0 100644
--- a/Barotrauma/BarotraumaShared/Source/Networking/ServerSettings.cs
+++ b/Barotrauma/BarotraumaShared/Source/Networking/ServerSettings.cs
@@ -401,7 +401,7 @@ namespace Barotrauma.Networking
public bool AllowRagdollButton
{
get;
- set;
+ private set;
}
[Serialize(true, true)]
diff --git a/Barotrauma/BarotraumaShared/Source/Serialization/XMLExtensions.cs b/Barotrauma/BarotraumaShared/Source/Serialization/XMLExtensions.cs
index 10b3691c6..8f9090ae9 100644
--- a/Barotrauma/BarotraumaShared/Source/Serialization/XMLExtensions.cs
+++ b/Barotrauma/BarotraumaShared/Source/Serialization/XMLExtensions.cs
@@ -46,15 +46,7 @@ namespace Barotrauma
if (File.Exists(filePath))
{
- try
- {
- doc = XDocument.Load(filePath, LoadOptions.SetBaseUri);
- }
- catch
- {
- return null;
- }
-
+ doc = XDocument.Load(filePath, LoadOptions.SetBaseUri);
if (doc.Root == null) return null;
}
diff --git a/Barotrauma/BarotraumaShared/Source/TextManager.cs b/Barotrauma/BarotraumaShared/Source/TextManager.cs
index ff727c72b..d1d47b5ad 100644
--- a/Barotrauma/BarotraumaShared/Source/TextManager.cs
+++ b/Barotrauma/BarotraumaShared/Source/TextManager.cs
@@ -118,14 +118,160 @@ namespace Barotrauma
}
}
- public static string ParseInputTypes(string text)
+ public static string GetFormatted(string textTag, bool returnNull = false, params object[] args)
{
- foreach (InputType inputType in Enum.GetValues(typeof(InputType)))
+ string text = Get(textTag, returnNull);
+
+ if (text == null || text.Length == 0)
{
- text = text.Replace("[" + inputType.ToString().ToLowerInvariant() + "]", GameMain.Config.KeyBind(inputType).ToString());
- text = text.Replace("[InputType." + inputType.ToString() + "]", GameMain.Config.KeyBind(inputType).ToString());
+ if (returnNull)
+ {
+ return null;
+ }
+ else
+ {
+ DebugConsole.ThrowError("Text \"" + textTag + "\" not found.");
+ return textTag;
+ }
}
- return text;
+
+ return string.Format(text, args);
+ }
+
+ // Format: ServerMessage.Identifier1/ServerMessage.Indentifier2~[variable1]=value~[variable2]=value
+ public static string GetServerMessage(string serverMessage)
+ {
+ if (!textPacks.ContainsKey(Language))
+ {
+ DebugConsole.ThrowError("No text packs available for the selected language (" + Language + ")! Switching to English...");
+ Language = "English";
+ if (!textPacks.ContainsKey(Language))
+ {
+ throw new Exception("No text packs available in English!");
+ }
+ }
+
+ string[] messages = serverMessage.Split('/');
+
+ try
+ {
+ for (int i = 0; i < messages.Length; i++)
+ {
+ if (!IsServerMessageWithVariables(messages[i])) // No variables, try to translate
+ {
+ if (messages[i].Contains(" ")) continue; // Spaces found, do not translate
+ string msg = Get(messages[i], true);
+ if (msg != null) // If a translation was found, otherwise use the original
+ {
+ messages[i] = msg;
+ }
+ }
+ else
+ {
+ string[] messageWithVariables = messages[i].Split('~');
+ string msg = Get(messageWithVariables[0], true);
+
+ if (msg != null) // If a translation was found, otherwise use the original
+ {
+ messages[i] = msg;
+ }
+ else
+ {
+ continue; // No translation found, probably caused by player input -> skip variable handling
+ }
+
+ // First index is always the message identifier -> start at 1
+ for (int j = 1; j < messageWithVariables.Length; j++)
+ {
+ string[] variableAndValue = messageWithVariables[j].Split('=');
+ messages[i] = messages[i].Replace(variableAndValue[0], variableAndValue[1]);
+ }
+ }
+ }
+
+ string translatedServerMessage = string.Empty;
+ for (int i = 0; i < messages.Length; i++)
+ {
+ translatedServerMessage += messages[i];
+ }
+ return translatedServerMessage;
+ }
+
+ catch (IndexOutOfRangeException exception)
+ {
+ string errorMsg = "Failed to translate server message \"" + serverMessage + "\".";
+#if DEBUG
+ DebugConsole.ThrowError(errorMsg, exception);
+#endif
+ GameAnalyticsManager.AddErrorEventOnce("TextManager.GetServerMessage:" + serverMessage, GameAnalyticsSDK.Net.EGAErrorSeverity.Error, errorMsg);
+ return errorMsg;
+ }
+ }
+
+ public static bool IsServerMessageWithVariables(string message)
+ {
+ for (int i = 0; i < serverMessageCharacters.Length; i++)
+ {
+ if (!message.Contains(serverMessageCharacters[i])) return false;
+ }
+
+ return true;
+ }
+
+ public static List GetAll(string textTag)
+ {
+ if (!textPacks.ContainsKey(Language))
+ {
+ DebugConsole.ThrowError("No text packs available for the selected language (" + Language + ")! Switching to English...");
+ Language = "English";
+ if (!textPacks.ContainsKey(Language))
+ {
+ throw new Exception("No text packs available in English!");
+ }
+ }
+
+ List allText;
+
+ foreach (TextPack textPack in textPacks[Language])
+ {
+ allText = textPack.GetAll(textTag);
+ if (allText != null) return allText;
+ }
+
+ //if text was not found and we're using a language other than English, see if we can find an English version
+ //may happen, for example, if a user has selected another language and using mods that haven't been translated to that language
+ if (Language != "English" && textPacks.ContainsKey("English"))
+ {
+ foreach (TextPack textPack in textPacks["English"])
+ {
+ allText = textPack.GetAll(textTag);
+ if (allText != null) return allText;
+ }
+ }
+
+ return null;
+ }
+
+ public static List> GetAllTagTextPairs()
+ {
+ if (!textPacks.ContainsKey(Language))
+ {
+ DebugConsole.ThrowError("No text packs available for the selected language (" + Language + ")! Switching to English...");
+ Language = "English";
+ if (!textPacks.ContainsKey(Language))
+ {
+ throw new Exception("No text packs available in English!");
+ }
+ }
+
+ List> allText = new List>();
+
+ foreach (TextPack textPack in textPacks[Language])
+ {
+ allText.AddRange(textPack.GetAllTagTextPairs());
+ }
+
+ return allText;
}
public static string GetFormatted(string textTag, bool returnNull = false, params object[] args)
diff --git a/Barotrauma/BarotraumaShared/Source/Utils/MathUtils.cs b/Barotrauma/BarotraumaShared/Source/Utils/MathUtils.cs
index bb12617b7..724c807d2 100644
--- a/Barotrauma/BarotraumaShared/Source/Utils/MathUtils.cs
+++ b/Barotrauma/BarotraumaShared/Source/Utils/MathUtils.cs
@@ -795,6 +795,18 @@ namespace Barotrauma
return new Vector2((float)x, (float)y);
}
+ ///
+ /// Rotates a point in 2d space around the origin
+ ///
+ public static Vector2 RotatePoint(Vector2 point, float radians)
+ {
+ var sin = Math.Sin(radians);
+ var cos = Math.Cos(radians);
+ var x = (cos * point.X) - (sin * point.Y);
+ var y = (sin * point.X) + (cos * point.Y);
+ return new Vector2((float)x, (float)y);
+ }
+
///
/// Returns the corners of an imaginary rectangle.
/// Unlike the XNA rectangle, this can be rotated with the up parameter.
diff --git a/Barotrauma/BarotraumaShared/Submarines/Bunyip.sub b/Barotrauma/BarotraumaShared/Submarines/Bunyip.sub
index 6ba4eb52d..a0fb19aae 100644
Binary files a/Barotrauma/BarotraumaShared/Submarines/Bunyip.sub and b/Barotrauma/BarotraumaShared/Submarines/Bunyip.sub differ
diff --git a/Barotrauma/BarotraumaShared/Submarines/Dugong.sub b/Barotrauma/BarotraumaShared/Submarines/Dugong.sub
index de829c19f..1875ad5b0 100644
Binary files a/Barotrauma/BarotraumaShared/Submarines/Dugong.sub and b/Barotrauma/BarotraumaShared/Submarines/Dugong.sub differ
diff --git a/Barotrauma/BarotraumaShared/Submarines/Humpback.sub b/Barotrauma/BarotraumaShared/Submarines/Humpback.sub
index 50175a38b..c57bc40b9 100644
Binary files a/Barotrauma/BarotraumaShared/Submarines/Humpback.sub and b/Barotrauma/BarotraumaShared/Submarines/Humpback.sub differ
diff --git a/Barotrauma/BarotraumaShared/Submarines/Orca.sub b/Barotrauma/BarotraumaShared/Submarines/Orca.sub
index a95baad85..bc01cbce0 100644
Binary files a/Barotrauma/BarotraumaShared/Submarines/Orca.sub and b/Barotrauma/BarotraumaShared/Submarines/Orca.sub differ
diff --git a/Barotrauma/BarotraumaShared/Submarines/Typhon.sub b/Barotrauma/BarotraumaShared/Submarines/Typhon.sub
index a689efd8d..102edb6f8 100644
Binary files a/Barotrauma/BarotraumaShared/Submarines/Typhon.sub and b/Barotrauma/BarotraumaShared/Submarines/Typhon.sub differ
diff --git a/Barotrauma/BarotraumaShared/changelog.txt b/Barotrauma/BarotraumaShared/changelog.txt
index beb985789..a8830200b 100644
--- a/Barotrauma/BarotraumaShared/changelog.txt
+++ b/Barotrauma/BarotraumaShared/changelog.txt
@@ -1,62 +1,3 @@
----------------------------------------------------------------------------------------------------------
-v0.8.10.0
----------------------------------------------------------------------------------------------------------
-
-Additions and changes:
-- Completely remade tutorials (separate tutorial for each job).
-- Added a door and hatch variants with integrated buttons.
-- New outpost graphics.
-- Added swarm behavior to crawlers.
-- Added a new mission where you have to kill a swarm of crawlers.
-- Numerous crew AI improvements.
-- Balanced item deterioration values.
-- Mineral sprites change when collected from the environment.
-- Added an option to disable directional voice chat.
-- Added automatic submarine repair option to the campaign.
-- Added "all" tab to the entity list in the submarine editor.
-- Hide the crew area, chat box and server buttons when operating a turret or searchlight.
-- Doors can be repaired with a wrench.
-- Some new lamp variants.
-- Display a progress bar when welding doors shut.
-- Items that don't give any materials when deconstructed cannot be deconstructed.
-- Added a console command that resets selected items and structures to prefab values ("resetselected").
-- Option to toggle structure drop shadows and edit the position of the shadow in the sub editor.
-- Minor physics optimizations.
-- Disable background music & ambience in the character editor.
-- More pronounced limping animation when a character's legs are injured.
-- The inventory slots next to the character portrait (ID card, uniform, etc) can be hidden.
-- Some new sound effects and background music.
-- All walls can be scaled in the submarine editor.
-- Structure damage is visualized when using debugdraw.
-- Improved font scaling on different resolutions.
-- Added Steam overlay support to Workshop.
-- Server list shows which servers have voice chat enabled.
-- Show a message box notifying respawning traitors that they're no longer a traitor.
-- Added a search bar to the store menu.
-- Added search bars to sub lists in campaign setup UI and sub editor.
-
-Bugfixes:
-- Don't allow rewiring and deattaching an item at the same time (happened when interacting with an item
-while holding both a screwdriver and a wrench).
-- Fixed bots being unable to complete almost any task in the multiplayer due to a bug that caused
-them to interpret the sub as another crew's submarine.
-- When spawning multiple monsters at the same time, spread them around a bit to prevent the players
-from getting attacked by a ball of overlapping crawlers.
-- Fixed huge lag spikes when a character tries to escape from an enemy but can't find a path away from it.
-- Fixed file transfer progress bars not being visible in the server lobby.
-- Fixed crashing when attempting to start a mission round with mission type set to None.
-- Fixed ElectricalDischarger electricity effect staying visible if the item breaks or the component
-is deactivated from outside (e.g. via a StatusEffect or the parent component).
-- Fixed specular maps being rendered on top of characters when outside the sub.
-- Fixed excessively bright lights around sonar flora and lava vents.
-- Fixes to item collider sizes.
-- Fixed inability to scroll through long texts in the sub editor's textboxes.
-- Fixed clients not being able to see other characters in spectator if they've died far away from the sub.
-- Fixed non-latin characters not being displayed correctly in Workshop item texts.
-- Don't prevent selecting items in the sub editor when the cursor is on a wire node, because it makes it
-very difficult (or impossible) to select small items in the wiring mode.
-- Fixed crashing when attempting to use the "spawnitem" command when a round is not running.
-
---------------------------------------------------------------------------------------------------------
v0.8.9.10
---------------------------------------------------------------------------------------------------------
diff --git a/Barotrauma_Solution.sln b/Barotrauma_Solution.sln
index 94040636c..c35da4735 100644
--- a/Barotrauma_Solution.sln
+++ b/Barotrauma_Solution.sln
@@ -61,8 +61,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MacClient", "Barotrauma\Bar
{85232B20-074D-4723-B0C6-91495391E448} = {85232B20-074D-4723-B0C6-91495391E448}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Concentus", "Libraries\Concentus\CSharp\Concentus\Concentus.csproj", "{777A5414-CAE5-4011-96DF-C9661985917E}"
-EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
Barotrauma\BarotraumaClient\ClientCode.projitems*{008c0f83-e914-4966-9135-ea885059edd8}*SharedItemsImports = 4
@@ -83,16 +81,12 @@ Global
Barotrauma\BarotraumaShared\SharedContent.projitems*{d7f9fdd3-af03-46ad-a2c2-f590899712b7}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x64 = Debug|x64
DebugLinux|Any CPU = DebugLinux|Any CPU
DebugLinux|x64 = DebugLinux|x64
DebugMac|Any CPU = DebugMac|Any CPU
DebugMac|x64 = DebugMac|x64
DebugWindows|Any CPU = DebugWindows|Any CPU
DebugWindows|x64 = DebugWindows|x64
- Release|Any CPU = Release|Any CPU
- Release|x64 = Release|x64
ReleaseLinux|Any CPU = ReleaseLinux|Any CPU
ReleaseLinux|x64 = ReleaseLinux|x64
ReleaseMac|Any CPU = ReleaseMac|Any CPU
@@ -101,10 +95,6 @@ Global
ReleaseWindows|x64 = ReleaseWindows|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {008C0F83-E914-4966-9135-EA885059EDD8}.Debug|Any CPU.ActiveCfg = ReleaseWindows|x64
- {008C0F83-E914-4966-9135-EA885059EDD8}.Debug|Any CPU.Build.0 = ReleaseWindows|x64
- {008C0F83-E914-4966-9135-EA885059EDD8}.Debug|x64.ActiveCfg = DebugWindows|x64
- {008C0F83-E914-4966-9135-EA885059EDD8}.Debug|x64.Build.0 = DebugWindows|x64
{008C0F83-E914-4966-9135-EA885059EDD8}.DebugLinux|Any CPU.ActiveCfg = DebugWindows|x64
{008C0F83-E914-4966-9135-EA885059EDD8}.DebugLinux|Any CPU.Build.0 = DebugWindows|x64
{008C0F83-E914-4966-9135-EA885059EDD8}.DebugLinux|x64.ActiveCfg = DebugWindows|x64
@@ -114,10 +104,6 @@ Global
{008C0F83-E914-4966-9135-EA885059EDD8}.DebugWindows|Any CPU.ActiveCfg = DebugWindows|x64
{008C0F83-E914-4966-9135-EA885059EDD8}.DebugWindows|x64.ActiveCfg = DebugWindows|x64
{008C0F83-E914-4966-9135-EA885059EDD8}.DebugWindows|x64.Build.0 = DebugWindows|x64
- {008C0F83-E914-4966-9135-EA885059EDD8}.Release|Any CPU.ActiveCfg = ReleaseWindows|x64
- {008C0F83-E914-4966-9135-EA885059EDD8}.Release|Any CPU.Build.0 = ReleaseWindows|x64
- {008C0F83-E914-4966-9135-EA885059EDD8}.Release|x64.ActiveCfg = ReleaseWindows|x64
- {008C0F83-E914-4966-9135-EA885059EDD8}.Release|x64.Build.0 = ReleaseWindows|x64
{008C0F83-E914-4966-9135-EA885059EDD8}.ReleaseLinux|Any CPU.ActiveCfg = DebugWindows|x64
{008C0F83-E914-4966-9135-EA885059EDD8}.ReleaseLinux|Any CPU.Build.0 = DebugWindows|x64
{008C0F83-E914-4966-9135-EA885059EDD8}.ReleaseLinux|x64.ActiveCfg = ReleaseWindows|x64
@@ -127,10 +113,6 @@ Global
{008C0F83-E914-4966-9135-EA885059EDD8}.ReleaseWindows|Any CPU.ActiveCfg = ReleaseWindows|x64
{008C0F83-E914-4966-9135-EA885059EDD8}.ReleaseWindows|x64.ActiveCfg = ReleaseWindows|x64
{008C0F83-E914-4966-9135-EA885059EDD8}.ReleaseWindows|x64.Build.0 = ReleaseWindows|x64
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|x64.ActiveCfg = Debug|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Debug|x64.Build.0 = Debug|Any CPU
{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.DebugLinux|Any CPU.ActiveCfg = Debug|Any CPU
{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.DebugLinux|Any CPU.Build.0 = Debug|Any CPU
{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.DebugLinux|x64.ActiveCfg = Debug|Any CPU
@@ -143,10 +125,6 @@ Global
{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.DebugWindows|Any CPU.Build.0 = Debug|Any CPU
{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.DebugWindows|x64.ActiveCfg = Debug|Any CPU
{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.DebugWindows|x64.Build.0 = Debug|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|Any CPU.Build.0 = Release|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|x64.ActiveCfg = Release|Any CPU
- {49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.Release|x64.Build.0 = Release|Any CPU
{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.ReleaseLinux|Any CPU.ActiveCfg = Release|Any CPU
{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.ReleaseLinux|Any CPU.Build.0 = Release|Any CPU
{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.ReleaseLinux|x64.ActiveCfg = Release|Any CPU
@@ -159,10 +137,6 @@ Global
{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.ReleaseWindows|Any CPU.Build.0 = Release|Any CPU
{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.ReleaseWindows|x64.ActiveCfg = Release|Any CPU
{49BA1C69-6104-41AC-A5D8-B54FA9F696E8}.ReleaseWindows|x64.Build.0 = Release|Any CPU
- {3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.Debug|x64.ActiveCfg = Debug|Any CPU
- {3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.Debug|x64.Build.0 = Debug|Any CPU
{3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.DebugLinux|Any CPU.ActiveCfg = Debug|Any CPU
{3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.DebugLinux|Any CPU.Build.0 = Debug|Any CPU
{3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.DebugLinux|x64.ActiveCfg = Debug|Any CPU
@@ -175,10 +149,6 @@ Global
{3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.DebugWindows|Any CPU.Build.0 = Debug|Any CPU
{3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.DebugWindows|x64.ActiveCfg = Debug|Any CPU
{3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.DebugWindows|x64.Build.0 = Debug|Any CPU
- {3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.Release|Any CPU.Build.0 = Release|Any CPU
- {3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.Release|x64.ActiveCfg = Release|Any CPU
- {3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.Release|x64.Build.0 = Release|Any CPU
{3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.ReleaseLinux|Any CPU.ActiveCfg = Release|Any CPU
{3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.ReleaseLinux|Any CPU.Build.0 = Release|Any CPU
{3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.ReleaseLinux|x64.ActiveCfg = Release|Any CPU
@@ -191,10 +161,6 @@ Global
{3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.ReleaseWindows|Any CPU.Build.0 = Release|Any CPU
{3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.ReleaseWindows|x64.ActiveCfg = Release|Any CPU
{3B8F9EDB-6E5E-450C-ABC2-EC49075D0B50}.ReleaseWindows|x64.Build.0 = Release|Any CPU
- {C293DB32-FA42-486D-B128-5A12522FAE4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C293DB32-FA42-486D-B128-5A12522FAE4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C293DB32-FA42-486D-B128-5A12522FAE4E}.Debug|x64.ActiveCfg = Debug|Any CPU
- {C293DB32-FA42-486D-B128-5A12522FAE4E}.Debug|x64.Build.0 = Debug|Any CPU
{C293DB32-FA42-486D-B128-5A12522FAE4E}.DebugLinux|Any CPU.ActiveCfg = Debug|Any CPU
{C293DB32-FA42-486D-B128-5A12522FAE4E}.DebugLinux|Any CPU.Build.0 = Debug|Any CPU
{C293DB32-FA42-486D-B128-5A12522FAE4E}.DebugLinux|x64.ActiveCfg = Debug|Any CPU
@@ -207,10 +173,6 @@ Global
{C293DB32-FA42-486D-B128-5A12522FAE4E}.DebugWindows|Any CPU.Build.0 = Debug|Any CPU
{C293DB32-FA42-486D-B128-5A12522FAE4E}.DebugWindows|x64.ActiveCfg = Debug|Any CPU
{C293DB32-FA42-486D-B128-5A12522FAE4E}.DebugWindows|x64.Build.0 = Debug|Any CPU
- {C293DB32-FA42-486D-B128-5A12522FAE4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C293DB32-FA42-486D-B128-5A12522FAE4E}.Release|Any CPU.Build.0 = Release|Any CPU
- {C293DB32-FA42-486D-B128-5A12522FAE4E}.Release|x64.ActiveCfg = Release|Any CPU
- {C293DB32-FA42-486D-B128-5A12522FAE4E}.Release|x64.Build.0 = Release|Any CPU
{C293DB32-FA42-486D-B128-5A12522FAE4E}.ReleaseLinux|Any CPU.ActiveCfg = Release|Any CPU
{C293DB32-FA42-486D-B128-5A12522FAE4E}.ReleaseLinux|Any CPU.Build.0 = Release|Any CPU
{C293DB32-FA42-486D-B128-5A12522FAE4E}.ReleaseLinux|x64.ActiveCfg = Release|Any CPU
@@ -223,10 +185,6 @@ Global
{C293DB32-FA42-486D-B128-5A12522FAE4E}.ReleaseWindows|Any CPU.Build.0 = Release|Any CPU
{C293DB32-FA42-486D-B128-5A12522FAE4E}.ReleaseWindows|x64.ActiveCfg = Release|Any CPU
{C293DB32-FA42-486D-B128-5A12522FAE4E}.ReleaseWindows|x64.Build.0 = Release|Any CPU
- {85232B20-074D-4723-B0C6-91495391E448}.Debug|Any CPU.ActiveCfg = ReleaseWindows|x64
- {85232B20-074D-4723-B0C6-91495391E448}.Debug|Any CPU.Build.0 = ReleaseWindows|x64
- {85232B20-074D-4723-B0C6-91495391E448}.Debug|x64.ActiveCfg = DebugWindows|x64
- {85232B20-074D-4723-B0C6-91495391E448}.Debug|x64.Build.0 = DebugWindows|x64
{85232B20-074D-4723-B0C6-91495391E448}.DebugLinux|Any CPU.ActiveCfg = DebugLinux|x64
{85232B20-074D-4723-B0C6-91495391E448}.DebugLinux|Any CPU.Build.0 = DebugLinux|x64
{85232B20-074D-4723-B0C6-91495391E448}.DebugLinux|x64.ActiveCfg = DebugLinux|x64
@@ -237,10 +195,6 @@ Global
{85232B20-074D-4723-B0C6-91495391E448}.DebugWindows|Any CPU.ActiveCfg = DebugWindows|x64
{85232B20-074D-4723-B0C6-91495391E448}.DebugWindows|x64.ActiveCfg = DebugWindows|x64
{85232B20-074D-4723-B0C6-91495391E448}.DebugWindows|x64.Build.0 = DebugWindows|x64
- {85232B20-074D-4723-B0C6-91495391E448}.Release|Any CPU.ActiveCfg = ReleaseWindows|x64
- {85232B20-074D-4723-B0C6-91495391E448}.Release|Any CPU.Build.0 = ReleaseWindows|x64
- {85232B20-074D-4723-B0C6-91495391E448}.Release|x64.ActiveCfg = ReleaseWindows|x64
- {85232B20-074D-4723-B0C6-91495391E448}.Release|x64.Build.0 = ReleaseWindows|x64
{85232B20-074D-4723-B0C6-91495391E448}.ReleaseLinux|Any CPU.ActiveCfg = ReleaseLinux|x64
{85232B20-074D-4723-B0C6-91495391E448}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|x64
{85232B20-074D-4723-B0C6-91495391E448}.ReleaseLinux|x64.Build.0 = ReleaseLinux|x64
@@ -250,10 +204,6 @@ Global
{85232B20-074D-4723-B0C6-91495391E448}.ReleaseWindows|Any CPU.ActiveCfg = ReleaseWindows|x64
{85232B20-074D-4723-B0C6-91495391E448}.ReleaseWindows|x64.ActiveCfg = ReleaseWindows|x64
{85232B20-074D-4723-B0C6-91495391E448}.ReleaseWindows|x64.Build.0 = ReleaseWindows|x64
- {A4610E4C-DD34-428B-BABB-779CA0B5993A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A4610E4C-DD34-428B-BABB-779CA0B5993A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A4610E4C-DD34-428B-BABB-779CA0B5993A}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A4610E4C-DD34-428B-BABB-779CA0B5993A}.Debug|x64.Build.0 = Debug|Any CPU
{A4610E4C-DD34-428B-BABB-779CA0B5993A}.DebugLinux|Any CPU.ActiveCfg = Debug|Any CPU
{A4610E4C-DD34-428B-BABB-779CA0B5993A}.DebugLinux|Any CPU.Build.0 = Debug|Any CPU
{A4610E4C-DD34-428B-BABB-779CA0B5993A}.DebugLinux|x64.ActiveCfg = Debug|Any CPU
@@ -266,10 +216,6 @@ Global
{A4610E4C-DD34-428B-BABB-779CA0B5993A}.DebugWindows|Any CPU.Build.0 = Debug|Any CPU
{A4610E4C-DD34-428B-BABB-779CA0B5993A}.DebugWindows|x64.ActiveCfg = Debug|Any CPU
{A4610E4C-DD34-428B-BABB-779CA0B5993A}.DebugWindows|x64.Build.0 = Debug|Any CPU
- {A4610E4C-DD34-428B-BABB-779CA0B5993A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A4610E4C-DD34-428B-BABB-779CA0B5993A}.Release|Any CPU.Build.0 = Release|Any CPU
- {A4610E4C-DD34-428B-BABB-779CA0B5993A}.Release|x64.ActiveCfg = Release|Any CPU
- {A4610E4C-DD34-428B-BABB-779CA0B5993A}.Release|x64.Build.0 = Release|Any CPU
{A4610E4C-DD34-428B-BABB-779CA0B5993A}.ReleaseLinux|Any CPU.ActiveCfg = Release|Any CPU
{A4610E4C-DD34-428B-BABB-779CA0B5993A}.ReleaseLinux|Any CPU.Build.0 = Release|Any CPU
{A4610E4C-DD34-428B-BABB-779CA0B5993A}.ReleaseLinux|x64.ActiveCfg = Release|Any CPU
@@ -282,10 +228,6 @@ Global
{A4610E4C-DD34-428B-BABB-779CA0B5993A}.ReleaseWindows|Any CPU.Build.0 = Release|Any CPU
{A4610E4C-DD34-428B-BABB-779CA0B5993A}.ReleaseWindows|x64.ActiveCfg = Release|Any CPU
{A4610E4C-DD34-428B-BABB-779CA0B5993A}.ReleaseWindows|x64.Build.0 = Release|Any CPU
- {3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.Debug|x64.ActiveCfg = Debug|Any CPU
- {3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.Debug|x64.Build.0 = Debug|Any CPU
{3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.DebugLinux|Any CPU.ActiveCfg = Debug|Any CPU
{3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.DebugLinux|Any CPU.Build.0 = Debug|Any CPU
{3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.DebugLinux|x64.ActiveCfg = Debug|Any CPU
@@ -298,10 +240,6 @@ Global
{3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.DebugWindows|Any CPU.Build.0 = Debug|Any CPU
{3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.DebugWindows|x64.ActiveCfg = Debug|Any CPU
{3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.DebugWindows|x64.Build.0 = Debug|Any CPU
- {3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.Release|Any CPU.Build.0 = Release|Any CPU
- {3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.Release|x64.ActiveCfg = Release|Any CPU
- {3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.Release|x64.Build.0 = Release|Any CPU
{3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.ReleaseLinux|Any CPU.ActiveCfg = Release|Any CPU
{3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.ReleaseLinux|Any CPU.Build.0 = Release|Any CPU
{3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.ReleaseLinux|x64.ActiveCfg = Release|Any CPU
@@ -314,10 +252,6 @@ Global
{3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.ReleaseWindows|Any CPU.Build.0 = Release|Any CPU
{3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.ReleaseWindows|x64.ActiveCfg = Release|Any CPU
{3AF0347C-5A9B-4421-868C-8EE3DBFAEBC6}.ReleaseWindows|x64.Build.0 = Release|Any CPU
- {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Debug|Any CPU.ActiveCfg = DebugWindows|Any CPU
- {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Debug|Any CPU.Build.0 = DebugWindows|Any CPU
- {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Debug|x64.ActiveCfg = DebugWindows|Any CPU
- {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Debug|x64.Build.0 = DebugWindows|Any CPU
{0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.DebugLinux|Any CPU.ActiveCfg = DebugLinux|Any CPU
{0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.DebugLinux|Any CPU.Build.0 = DebugLinux|Any CPU
{0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.DebugLinux|x64.ActiveCfg = DebugLinux|Any CPU
@@ -329,10 +263,6 @@ Global
{0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.DebugWindows|Any CPU.ActiveCfg = DebugWindows|Any CPU
{0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.DebugWindows|Any CPU.Build.0 = DebugWindows|Any CPU
{0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.DebugWindows|x64.ActiveCfg = DebugWindows|Any CPU
- {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Release|Any CPU.ActiveCfg = ReleaseWindows|Any CPU
- {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Release|Any CPU.Build.0 = ReleaseWindows|Any CPU
- {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Release|x64.ActiveCfg = ReleaseWindows|Any CPU
- {0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.Release|x64.Build.0 = ReleaseWindows|Any CPU
{0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.ReleaseLinux|Any CPU.ActiveCfg = ReleaseLinux|Any CPU
{0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.ReleaseLinux|Any CPU.Build.0 = ReleaseLinux|Any CPU
{0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|Any CPU
@@ -344,10 +274,6 @@ Global
{0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.ReleaseWindows|Any CPU.ActiveCfg = ReleaseWindows|Any CPU
{0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.ReleaseWindows|Any CPU.Build.0 = ReleaseWindows|Any CPU
{0AAD36E3-51A5-4A07-AB60-5C8A66BD38B7}.ReleaseWindows|x64.ActiveCfg = ReleaseWindows|Any CPU
- {830461AA-3E2E-4BDE-9B27-1B3280836521}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {830461AA-3E2E-4BDE-9B27-1B3280836521}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {830461AA-3E2E-4BDE-9B27-1B3280836521}.Debug|x64.ActiveCfg = Debug|Any CPU
- {830461AA-3E2E-4BDE-9B27-1B3280836521}.Debug|x64.Build.0 = Debug|Any CPU
{830461AA-3E2E-4BDE-9B27-1B3280836521}.DebugLinux|Any CPU.ActiveCfg = DebugLinux|Any CPU
{830461AA-3E2E-4BDE-9B27-1B3280836521}.DebugLinux|Any CPU.Build.0 = DebugLinux|Any CPU
{830461AA-3E2E-4BDE-9B27-1B3280836521}.DebugLinux|x64.ActiveCfg = DebugLinux|Any CPU
@@ -358,10 +284,6 @@ Global
{830461AA-3E2E-4BDE-9B27-1B3280836521}.DebugWindows|Any CPU.Build.0 = DebugWindows|Any CPU
{830461AA-3E2E-4BDE-9B27-1B3280836521}.DebugWindows|x64.ActiveCfg = DebugWindows|Any CPU
{830461AA-3E2E-4BDE-9B27-1B3280836521}.DebugWindows|x64.Build.0 = DebugWindows|Any CPU
- {830461AA-3E2E-4BDE-9B27-1B3280836521}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {830461AA-3E2E-4BDE-9B27-1B3280836521}.Release|Any CPU.Build.0 = Release|Any CPU
- {830461AA-3E2E-4BDE-9B27-1B3280836521}.Release|x64.ActiveCfg = Release|Any CPU
- {830461AA-3E2E-4BDE-9B27-1B3280836521}.Release|x64.Build.0 = Release|Any CPU
{830461AA-3E2E-4BDE-9B27-1B3280836521}.ReleaseLinux|Any CPU.ActiveCfg = ReleaseLinux|Any CPU
{830461AA-3E2E-4BDE-9B27-1B3280836521}.ReleaseLinux|Any CPU.Build.0 = ReleaseLinux|Any CPU
{830461AA-3E2E-4BDE-9B27-1B3280836521}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|Any CPU
@@ -372,10 +294,6 @@ Global
{830461AA-3E2E-4BDE-9B27-1B3280836521}.ReleaseWindows|Any CPU.Build.0 = ReleaseWindows|Any CPU
{830461AA-3E2E-4BDE-9B27-1B3280836521}.ReleaseWindows|x64.ActiveCfg = ReleaseWindows|Any CPU
{830461AA-3E2E-4BDE-9B27-1B3280836521}.ReleaseWindows|x64.Build.0 = ReleaseWindows|Any CPU
- {D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.Debug|Any CPU.ActiveCfg = ReleaseLinux|x64
- {D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.Debug|Any CPU.Build.0 = ReleaseLinux|x64
- {D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.Debug|x64.ActiveCfg = DebugLinux|x64
- {D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.Debug|x64.Build.0 = DebugLinux|x64
{D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.DebugLinux|Any CPU.ActiveCfg = DebugLinux|x64
{D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.DebugLinux|x64.ActiveCfg = DebugLinux|x64
{D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.DebugLinux|x64.Build.0 = DebugLinux|x64
@@ -385,10 +303,6 @@ Global
{D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.DebugWindows|Any CPU.ActiveCfg = DebugLinux|x64
{D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.DebugWindows|Any CPU.Build.0 = DebugLinux|x64
{D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.DebugWindows|x64.ActiveCfg = DebugLinux|x64
- {D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.Release|Any CPU.ActiveCfg = ReleaseLinux|x64
- {D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.Release|Any CPU.Build.0 = ReleaseLinux|x64
- {D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.Release|x64.ActiveCfg = ReleaseLinux|x64
- {D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.Release|x64.Build.0 = ReleaseLinux|x64
{D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.ReleaseLinux|Any CPU.ActiveCfg = ReleaseLinux|x64
{D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|x64
{D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.ReleaseLinux|x64.Build.0 = ReleaseLinux|x64
@@ -398,10 +312,6 @@ Global
{D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.ReleaseWindows|Any CPU.ActiveCfg = DebugLinux|x64
{D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.ReleaseWindows|Any CPU.Build.0 = DebugLinux|x64
{D7F9FDD3-AF03-46AD-A2C2-F590899712B7}.ReleaseWindows|x64.ActiveCfg = ReleaseLinux|x64
- {CC996BB6-3781-4868-B996-07F9CDC936ED}.Debug|Any CPU.ActiveCfg = ReleaseMac|x64
- {CC996BB6-3781-4868-B996-07F9CDC936ED}.Debug|Any CPU.Build.0 = ReleaseMac|x64
- {CC996BB6-3781-4868-B996-07F9CDC936ED}.Debug|x64.ActiveCfg = DebugMac|x64
- {CC996BB6-3781-4868-B996-07F9CDC936ED}.Debug|x64.Build.0 = DebugMac|x64
{CC996BB6-3781-4868-B996-07F9CDC936ED}.DebugLinux|Any CPU.ActiveCfg = DebugMac|x64
{CC996BB6-3781-4868-B996-07F9CDC936ED}.DebugLinux|x64.ActiveCfg = DebugMac|x64
{CC996BB6-3781-4868-B996-07F9CDC936ED}.DebugMac|Any CPU.ActiveCfg = DebugMac|x64
@@ -411,10 +321,6 @@ Global
{CC996BB6-3781-4868-B996-07F9CDC936ED}.DebugWindows|Any CPU.ActiveCfg = DebugMac|x64
{CC996BB6-3781-4868-B996-07F9CDC936ED}.DebugWindows|Any CPU.Build.0 = DebugMac|x64
{CC996BB6-3781-4868-B996-07F9CDC936ED}.DebugWindows|x64.ActiveCfg = DebugMac|x64
- {CC996BB6-3781-4868-B996-07F9CDC936ED}.Release|Any CPU.ActiveCfg = ReleaseMac|x64
- {CC996BB6-3781-4868-B996-07F9CDC936ED}.Release|Any CPU.Build.0 = ReleaseMac|x64
- {CC996BB6-3781-4868-B996-07F9CDC936ED}.Release|x64.ActiveCfg = ReleaseMac|x64
- {CC996BB6-3781-4868-B996-07F9CDC936ED}.Release|x64.Build.0 = ReleaseMac|x64
{CC996BB6-3781-4868-B996-07F9CDC936ED}.ReleaseLinux|Any CPU.ActiveCfg = ReleaseMac|x64
{CC996BB6-3781-4868-B996-07F9CDC936ED}.ReleaseLinux|x64.ActiveCfg = ReleaseMac|x64
{CC996BB6-3781-4868-B996-07F9CDC936ED}.ReleaseMac|Any CPU.ActiveCfg = DebugMac|x64
@@ -424,38 +330,6 @@ Global
{CC996BB6-3781-4868-B996-07F9CDC936ED}.ReleaseWindows|Any CPU.ActiveCfg = DebugMac|x64
{CC996BB6-3781-4868-B996-07F9CDC936ED}.ReleaseWindows|Any CPU.Build.0 = DebugMac|x64
{CC996BB6-3781-4868-B996-07F9CDC936ED}.ReleaseWindows|x64.ActiveCfg = ReleaseMac|x64
- {777A5414-CAE5-4011-96DF-C9661985917E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.Debug|x64.ActiveCfg = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.Debug|x64.Build.0 = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.DebugLinux|Any CPU.ActiveCfg = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.DebugLinux|Any CPU.Build.0 = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.DebugLinux|x64.ActiveCfg = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.DebugLinux|x64.Build.0 = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.DebugMac|Any CPU.ActiveCfg = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.DebugMac|Any CPU.Build.0 = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.DebugMac|x64.ActiveCfg = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.DebugMac|x64.Build.0 = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.DebugWindows|Any CPU.ActiveCfg = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.DebugWindows|Any CPU.Build.0 = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.DebugWindows|x64.ActiveCfg = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.DebugWindows|x64.Build.0 = Debug|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.Release|Any CPU.Build.0 = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.Release|x64.ActiveCfg = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.Release|x64.Build.0 = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.ReleaseLinux|Any CPU.ActiveCfg = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.ReleaseLinux|Any CPU.Build.0 = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.ReleaseLinux|x64.ActiveCfg = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.ReleaseLinux|x64.Build.0 = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.ReleaseMac|x64.ActiveCfg = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.ReleaseMac|x64.Build.0 = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.ReleaseWindows|Any CPU.ActiveCfg = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.ReleaseWindows|Any CPU.Build.0 = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.ReleaseWindows|x64.ActiveCfg = Release|Any CPU
- {777A5414-CAE5-4011-96DF-C9661985917E}.ReleaseWindows|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -481,7 +355,6 @@ Global
{D7F9FDD3-AF03-46AD-A2C2-F590899712B7} = {B2C129F2-8E5C-419A-98EB-161AA5B5FC71}
{DBCF6FF0-3DE9-11E9-B3EF-63280FDBDA4A} = {F35DF9BF-0BED-4FEF-A51C-DD83C531882F}
{CC996BB6-3781-4868-B996-07F9CDC936ED} = {DBCF6FF0-3DE9-11E9-B3EF-63280FDBDA4A}
- {777A5414-CAE5-4011-96DF-C9661985917E} = {DE36F45F-F09E-4719-B953-00D148F7722A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {17032EAB-554B-4B44-A4F6-EFB177ACAB7A}