Added custom achievement system, adds achievements on server start
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -102,6 +102,16 @@ public record Templates
|
||||
set;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Achievements
|
||||
/// </summary>
|
||||
[JsonPropertyName("customAchievements")]
|
||||
public List<Achievement>? CustomAchievements
|
||||
{
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Location services data
|
||||
/// </summary>
|
||||
|
||||
@@ -191,6 +191,22 @@ public class DatabaseService(
|
||||
return _databaseServer.GetTables().Templates?.Achievements!;
|
||||
}
|
||||
|
||||
/// <returns> assets/database/templates/customAchievements.json </returns>
|
||||
public List<Achievement> GetCustomAchievements()
|
||||
{
|
||||
if (_databaseServer.GetTables().Templates?.Achievements == null)
|
||||
{
|
||||
throw new Exception(
|
||||
_localisationService.GetText(
|
||||
"database-data_at_path_missing",
|
||||
"assets/database/templates/customAchievements.json"
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return _databaseServer.GetTables().Templates?.CustomAchievements!;
|
||||
}
|
||||
|
||||
/// <returns> assets/database/templates/customisation.json </returns>
|
||||
public Dictionary<string, CustomizationItem?> GetCustomization()
|
||||
{
|
||||
|
||||
@@ -6,6 +6,7 @@ using SPTarkov.Server.Core.Servers;
|
||||
using SPTarkov.Server.Core.Utils;
|
||||
using SPTarkov.Server.Core.Utils.Cloners;
|
||||
using SPTarkov.Common.Annotations;
|
||||
using SPTarkov.Server.Core.Models.Eft.Common.Tables;
|
||||
|
||||
namespace SPTarkov.Server.Core.Services;
|
||||
|
||||
@@ -50,6 +51,8 @@ public class PostDbLoadService(
|
||||
|
||||
AddCustomLooseLootPositions();
|
||||
|
||||
MergeCustomAchievements();
|
||||
|
||||
AdjustMinReserveRaiderSpawnChance();
|
||||
|
||||
if (_coreConfig.Fixes.FixShotgunDispersion)
|
||||
@@ -123,6 +126,23 @@ public class PostDbLoadService(
|
||||
_raidWeatherService.GenerateWeather(currentSeason);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Merge custom achievements into achievement db table
|
||||
/// </summary>
|
||||
protected void MergeCustomAchievements()
|
||||
{
|
||||
var achievements = _databaseService.GetAchievements();
|
||||
foreach (var customAchievement in _databaseService.GetCustomAchievements()) {
|
||||
if (achievements.Exists((a) => a.Id == customAchievement.Id))
|
||||
{
|
||||
_logger.Warning($"Unable to add custom achievement as id: ${customAchievement.Id} already exists");
|
||||
continue;
|
||||
}
|
||||
|
||||
achievements.Add(customAchievement);
|
||||
}
|
||||
}
|
||||
|
||||
private void RemoveNewBeginningRequirementFromPrestige()
|
||||
{
|
||||
var prestigeDb = _databaseService.GetTemplates().Prestige;
|
||||
|
||||
Reference in New Issue
Block a user