Unstable 1.8.4.0

This commit is contained in:
Markus Isberg
2025-03-12 12:56:27 +00:00
parent a4c3e868e4
commit a4a3427e4e
627 changed files with 29860 additions and 10018 deletions
@@ -2,6 +2,7 @@
using Barotrauma.Extensions;
using Barotrauma.Items.Components;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Xml.Linq;
@@ -33,6 +34,12 @@ namespace Barotrauma
[Serialize(0, IsPropertySaveable.No)]
public int ExperiencePoints { get; private set; }
[Serialize(0, IsPropertySaveable.No)]
public int BaseSalary { get; private set; }
[Serialize(1f, IsPropertySaveable.No)]
public float SalaryMultiplier { get; private set; }
private readonly HashSet<Identifier> tags = new HashSet<Identifier>();
[Serialize("", IsPropertySaveable.Yes)]
@@ -94,6 +101,9 @@ namespace Barotrauma
}
}
[Serialize(false, IsPropertySaveable.No, description: "If enabled, the NPC will not spawn if the specified spawn point tags can't be found.")]
public bool RequireSpawnPointTag { get; protected set; }
[Serialize(CampaignMode.InteractionType.None, IsPropertySaveable.No)]
public CampaignMode.InteractionType CampaignInteractionType { get; protected set; }
@@ -242,14 +252,20 @@ namespace Barotrauma
foreach (var skill in characterInfo.Job.GetSkills())
{
float newSkill = skill.Level * SkillMultiplier;
skill.IncreaseSkill(newSkill - skill.Level, increasePastMax: false);
skill.IncreaseSkill(newSkill - skill.Level, canIncreasePastDefaultMaximumSkill: false);
}
characterInfo.Salary = characterInfo.CalculateSalary();
}
characterInfo.Salary = characterInfo.CalculateSalary(BaseSalary, SalaryMultiplier);
characterInfo.HumanPrefabIds = (NpcSetIdentifier, Identifier);
characterInfo.GiveExperience(ExperiencePoints);
return characterInfo;
}
/// <summary>
/// Items marked to be spawned infinitely (by NPCs).
/// </summary>
private readonly Dictionary<Identifier, ItemPrefab> infiniteItems = new();
public IReadOnlyCollection<ItemPrefab> InfiniteItems => infiniteItems.Values;
public static void InitializeItem(Character character, ContentXElement itemElement, Submarine submarine, HumanPrefab humanPrefab, WayPoint spawnPoint = null, Item parentItem = null, bool createNetworkEvents = true)
{
@@ -314,9 +330,13 @@ namespace Barotrauma
wifiComponent.TeamID = character.TeamID;
}
parentItem?.Combine(item, user: null);
if (itemElement.GetAttributeBool(nameof(JobPrefab.JobItem.Infinite), false))
{
humanPrefab.infiniteItems.TryAdd(itemPrefab.Identifier, itemPrefab);
}
foreach (ContentXElement childItemElement in itemElement.Elements())
{
int amount = childItemElement.GetAttributeInt("amount", 1);
int amount = childItemElement.GetAttributeInt(nameof(JobPrefab.JobItem.Amount), 1);
for (int i = 0; i < amount; i++)
{
InitializeItem(character, childItemElement, submarine, humanPrefab, spawnPoint, item, createNetworkEvents);