v1.7.7.0 (Winter Update 2024)

This commit is contained in:
Regalis11
2024-12-11 13:26:13 +02:00
parent 7d5b7a310a
commit f6349b2175
256 changed files with 4794 additions and 1653 deletions
@@ -1,4 +1,5 @@
using Barotrauma.Items.Components;
using Barotrauma.Extensions;
using Barotrauma.Items.Components;
using Barotrauma.Networking;
using Barotrauma.Steam;
using FarseerPhysics;
@@ -15,6 +16,84 @@ namespace Barotrauma
static class AchievementManager
{
private static readonly ImmutableHashSet<Identifier> SupportedAchievements = ImmutableHashSet.Create(
"killmoloch".ToIdentifier(),
"killhammerhead".ToIdentifier(),
"killendworm".ToIdentifier(),
"artifactmission".ToIdentifier(),
"combatmission1".ToIdentifier(),
"combatmission2".ToIdentifier(),
"healcrit".ToIdentifier(),
"repairdevice".ToIdentifier(),
"traitorwin".ToIdentifier(),
"killtraitor".ToIdentifier(),
"killclown".ToIdentifier(),
"healopiateaddiction".ToIdentifier(),
"survivecrushdepth".ToIdentifier(),
"survivereactormeltdown".ToIdentifier(),
"healhusk".ToIdentifier(),
"killpoison".ToIdentifier(),
"killnuke".ToIdentifier(),
"killtool".ToIdentifier(),
"clowncostume".ToIdentifier(),
"lastmanstanding".ToIdentifier(),
"lonesailor".ToIdentifier(),
"subhighvelocity".ToIdentifier(),
"nodamagerun".ToIdentifier(),
"subdeep".ToIdentifier(),
"maxintensity".ToIdentifier(),
"discovercoldcaverns".ToIdentifier(),
"discovereuropanridge".ToIdentifier(),
"discoverhydrothermalwastes".ToIdentifier(),
"discovertheaphoticplateau".ToIdentifier(),
"discoverthegreatsea".ToIdentifier(),
"travel10".ToIdentifier(),
"travel100".ToIdentifier(),
"xenocide".ToIdentifier(),
"genocide".ToIdentifier(),
"cargomission".ToIdentifier(),
"subeditor24h".ToIdentifier(),
"crewaway".ToIdentifier(),
"captainround".ToIdentifier(),
"securityofficerround".ToIdentifier(),
"engineerround".ToIdentifier(),
"mechanicround".ToIdentifier(),
"medicaldoctorround".ToIdentifier(),
"assistantround".ToIdentifier(),
"campaigncompleted".ToIdentifier(),
"salvagewreckmission".ToIdentifier(),
"escortmission".ToIdentifier(),
"killcharybdis".ToIdentifier(),
"killlatcher".ToIdentifier(),
"killspineling_giant".ToIdentifier(),
"killcrawlerbroodmother".ToIdentifier(),
"ascension".ToIdentifier(),
"campaignmetadata_pathofthebikehorn_7".ToIdentifier(),
"campaignmetadata_coalitionspecialhire1_hired_true".ToIdentifier(),
"campaignmetadata_coalitionspecialhire2_hired_true".ToIdentifier(),
"campaignmetadata_separatistspecialhire1_hired_true".ToIdentifier(),
"campaignmetadata_separatistspecialhire2_hired_true".ToIdentifier(),
"campaignmetadata_huskcultspecialhire1_hired_true".ToIdentifier(),
"campaignmetadata_clownspecialhire1_hired_true".ToIdentifier(),
"scanruin".ToIdentifier(),
"clearruin".ToIdentifier(),
"beaconmission".ToIdentifier(),
"abandonedoutpostrescue".ToIdentifier(),
"abandonedoutpostassassinate".ToIdentifier(),
"abandonedoutpostdestroyhumans".ToIdentifier(),
"abandonedoutpostdestroymonsters".ToIdentifier(),
"nestmission".ToIdentifier(),
"miningmission".ToIdentifier(),
"combatmissionseparatistsvscoalition".ToIdentifier(),
"combatmissioncoalitionvsseparatists".ToIdentifier(),
"getoutalive".ToIdentifier(),
"abyssbeckons".ToIdentifier(),
"europasfinest".ToIdentifier(),
"kingofthehull".ToIdentifier(),
"killmantis".ToIdentifier(),
"ancientnovelty".ToIdentifier(),
"whatsmirksbelow".ToIdentifier());
private const float UpdateInterval = 1.0f;
private static readonly HashSet<Identifier> unlockedAchievements = new HashSet<Identifier>();
@@ -42,6 +121,29 @@ namespace Barotrauma
private static PathFinder pathFinder;
private static readonly Dictionary<Character, CachedDistance> cachedDistances = new Dictionary<Character, CachedDistance>();
static AchievementManager()
{
#if DEBUG
if (SteamManager.IsInitialized && SteamManager.TryGetAllAvailableAchievements(out var achievements) && achievements.Any())
{
foreach (var achievement in achievements)
{
if (!SupportedAchievements.Contains(achievement.Identifier.ToIdentifier()))
{
DebugConsole.ThrowError($"Achievement \"{achievement.Identifier}\" is present on Steam's backend but not in achievements supported by {nameof(AchievementManager)}.");
}
}
foreach (Identifier achievementId in SupportedAchievements)
{
if (achievements.None(a => a.Identifier.ToIdentifier() == achievementId))
{
DebugConsole.ThrowError($"Could not find achievement \"{achievementId}\" on Steam's backend.");
}
}
}
#endif
}
public static void OnStartRound(Biome biome = null)
{
roundData = new RoundData();
@@ -584,6 +686,7 @@ namespace Barotrauma
{
if (CheatsEnabled) { return; }
if (Screen.Selected is { IsEditor: true }) { return; }
if (!SupportedAchievements.Contains(identifier)) { return; }
#if CLIENT
if (GameMain.GameSession?.GameMode is TestGameMode) { return; }
#endif