(537240172) Fixed RuinGenerator using unsynced random when doing connections between ruin entities. I don't think there are any assemblies atm that use this type of connections, but if there were, the connections might've differed between clients/server.
This commit is contained in:
@@ -894,6 +894,75 @@ namespace Barotrauma
|
|||||||
return configFile;
|
return configFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static IEnumerable<string> characterConfigFiles;
|
||||||
|
private static IEnumerable<string> CharacterConfigFiles
|
||||||
|
{
|
||||||
|
#if SERVER
|
||||||
|
if (GameMain.Server != null && IsRemotePlayer)
|
||||||
|
{
|
||||||
|
if (characterConfigFiles == null)
|
||||||
|
{
|
||||||
|
case InputType.Left:
|
||||||
|
return !(dequeuedInput.HasFlag(InputNetFlags.Left)) && (prevDequeuedInput.HasFlag(InputNetFlags.Left));
|
||||||
|
case InputType.Right:
|
||||||
|
return !(dequeuedInput.HasFlag(InputNetFlags.Right)) && (prevDequeuedInput.HasFlag(InputNetFlags.Right));
|
||||||
|
case InputType.Up:
|
||||||
|
return !(dequeuedInput.HasFlag(InputNetFlags.Up)) && (prevDequeuedInput.HasFlag(InputNetFlags.Up));
|
||||||
|
case InputType.Down:
|
||||||
|
return !(dequeuedInput.HasFlag(InputNetFlags.Down)) && (prevDequeuedInput.HasFlag(InputNetFlags.Down));
|
||||||
|
case InputType.Run:
|
||||||
|
return !(dequeuedInput.HasFlag(InputNetFlags.Run)) && (prevDequeuedInput.HasFlag(InputNetFlags.Run));
|
||||||
|
case InputType.Crouch:
|
||||||
|
return !(dequeuedInput.HasFlag(InputNetFlags.Crouch)) && (prevDequeuedInput.HasFlag(InputNetFlags.Crouch));
|
||||||
|
case InputType.Select:
|
||||||
|
return dequeuedInput.HasFlag(InputNetFlags.Select); //TODO: clean up the way this input is registered
|
||||||
|
case InputType.Deselect:
|
||||||
|
return dequeuedInput.HasFlag(InputNetFlags.Deselect);
|
||||||
|
case InputType.Health:
|
||||||
|
return dequeuedInput.HasFlag(InputNetFlags.Health);
|
||||||
|
case InputType.Grab:
|
||||||
|
return dequeuedInput.HasFlag(InputNetFlags.Grab);
|
||||||
|
case InputType.Use:
|
||||||
|
return !(dequeuedInput.HasFlag(InputNetFlags.Use)) && (prevDequeuedInput.HasFlag(InputNetFlags.Use));
|
||||||
|
case InputType.Shoot:
|
||||||
|
return !(dequeuedInput.HasFlag(InputNetFlags.Shoot)) && (prevDequeuedInput.HasFlag(InputNetFlags.Shoot));
|
||||||
|
case InputType.Ragdoll:
|
||||||
|
return !(dequeuedInput.HasFlag(InputNetFlags.Ragdoll)) && (prevDequeuedInput.HasFlag(InputNetFlags.Ragdoll));
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return characterConfigFiles;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Searches for a character config file from all currently selected content packages,
|
||||||
|
/// or from a specific package if the contentPackage parameter is given.
|
||||||
|
/// </summary>
|
||||||
|
public static string GetConfigFile(string speciesName, ContentPackage contentPackage = null)
|
||||||
|
{
|
||||||
|
string configFile = null;
|
||||||
|
if (contentPackage == null)
|
||||||
|
{
|
||||||
|
configFile = GameMain.Instance.GetFilesOfType(ContentType.Character)
|
||||||
|
.FirstOrDefault(c => Path.GetFileName(c).ToLowerInvariant() == $"{speciesName.ToLowerInvariant()}.xml");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
configFile = contentPackage.GetFilesOfType(ContentType.Character)?
|
||||||
|
.FirstOrDefault(c => Path.GetFileName(c).ToLowerInvariant() == $"{speciesName.ToLowerInvariant()}.xml");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (configFile == null)
|
||||||
|
{
|
||||||
|
DebugConsole.ThrowError($"Couldn't find a config file for {speciesName} from the selected content packages!");
|
||||||
|
DebugConsole.ThrowError($"(The config file must end with \"{speciesName}.xml\")");
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
return configFile;
|
||||||
|
}
|
||||||
|
|
||||||
private static IEnumerable<string> characterConfigFiles;
|
private static IEnumerable<string> characterConfigFiles;
|
||||||
private static IEnumerable<string> CharacterConfigFiles
|
private static IEnumerable<string> CharacterConfigFiles
|
||||||
{
|
{
|
||||||
@@ -1466,13 +1535,6 @@ namespace Barotrauma
|
|||||||
|
|
||||||
ResetSpeedMultiplier(); // Reset, items will set the value before the next update
|
ResetSpeedMultiplier(); // Reset, items will set the value before the next update
|
||||||
|
|
||||||
var rightFoot = AnimController.GetLimb(LimbType.RightFoot);
|
|
||||||
if (rightFoot != null)
|
|
||||||
{
|
|
||||||
float footAfflictionStrength = CharacterHealth.GetAfflictionStrength("damage", rightFoot, true);
|
|
||||||
speed *= MathHelper.Lerp(1.0f, 0.4f, MathHelper.Clamp(footAfflictionStrength / 80.0f, 0.0f, 1.0f));
|
|
||||||
}
|
|
||||||
|
|
||||||
return speed;
|
return speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1022,12 +1022,12 @@ namespace Barotrauma.RuinGeneration
|
|||||||
{
|
{
|
||||||
targetEntity = ruinEntities.GetRandom(e =>
|
targetEntity = ruinEntities.GetRandom(e =>
|
||||||
e.Room == targetRoom &&
|
e.Room == targetRoom &&
|
||||||
e.Entity.prefab?.Identifier == connection.TargetEntityIdentifier)?.Entity;
|
e.Entity.prefab?.Identifier == connection.TargetEntityIdentifier, Rand.RandSync.Server)?.Entity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
targetEntity = ruinEntities.GetRandom(e => e.Entity.prefab?.Identifier == connection.TargetEntityIdentifier)?.Entity;
|
targetEntity = ruinEntities.GetRandom(e => e.Entity.prefab?.Identifier == connection.TargetEntityIdentifier, Rand.RandSync.Server)?.Entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetEntity == null) continue;
|
if (targetEntity == null) continue;
|
||||||
|
|||||||
Reference in New Issue
Block a user