Unstable 1.1.14.0

This commit is contained in:
Markus Isberg
2023-10-02 16:43:54 +03:00
parent 94f5a93a0c
commit cf8f0de659
606 changed files with 21906 additions and 11456 deletions
@@ -22,13 +22,13 @@ namespace Barotrauma.Abilities
private static readonly List<WeaponType> WeaponTypeValues = Enum.GetValues(typeof(WeaponType)).Cast<WeaponType>().ToList();
private readonly string itemIdentifier;
private readonly string[] tags;
private readonly Identifier[] tags;
private readonly WeaponType weapontype;
private readonly bool ignoreNonHarmfulAttacks;
public AbilityConditionAttackData(CharacterTalent characterTalent, ContentXElement conditionElement) : base(characterTalent, conditionElement)
{
itemIdentifier = conditionElement.GetAttributeString("itemidentifier", string.Empty);
tags = conditionElement.GetAttributeStringArray("tags", Array.Empty<string>(), convertToLowerInvariant: true);
tags = conditionElement.GetAttributeIdentifierArray("tags", Array.Empty<Identifier>());
ignoreNonHarmfulAttacks = conditionElement.GetAttributeBool("ignorenonharmfulattacks", false);
string weaponTypeStr = conditionElement.GetAttributeString("weapontype", "Any");
@@ -41,10 +41,10 @@ namespace Barotrauma.Abilities
if (GameMain.GameSession?.Campaign?.Factions is not { } factions) { return false; }
foreach (var (factionIdentifier, amount) in mission.ReputationRewards)
foreach (var reputationReward in mission.ReputationRewards)
{
if (amount <= 0) { continue; }
if (GetMatchingFaction(factionIdentifier) is { } faction &&
if (reputationReward.Amount <= 0) { continue; }
if (GetMatchingFaction(reputationReward.FactionIdentifier) is { } faction &&
Faction.GetPlayerAffiliationStatus(faction) is FactionAffiliation.Positive)
{
return CheckMissionType();
@@ -0,0 +1,22 @@
namespace Barotrauma.Abilities
{
class AbilityConditionAllyHasTalent : AbilityConditionDataless
{
private readonly Identifier talentIdentifier;
public AbilityConditionAllyHasTalent(CharacterTalent characterTalent, ContentXElement conditionElement) : base(characterTalent, conditionElement)
{
talentIdentifier = conditionElement.GetAttributeIdentifier("identifier", Identifier.Empty);
}
protected override bool MatchesConditionSpecific()
{
foreach (Character crewCharacter in Character.GetFriendlyCrew(characterTalent.Character))
{
if (crewCharacter.HasTalent(talentIdentifier)) { return true; }
}
return false;
}
}
}
@@ -5,12 +5,12 @@ namespace Barotrauma.Abilities
{
class AbilityConditionHasItem : AbilityConditionDataless
{
private readonly string[] tags;
private readonly Identifier[] tags;
readonly bool requireAll;
public AbilityConditionHasItem(CharacterTalent characterTalent, ContentXElement conditionElement) : base(characterTalent, conditionElement)
{
tags = conditionElement.GetAttributeStringArray("tags", Array.Empty<string>());
tags = conditionElement.GetAttributeIdentifierArray("tags", Array.Empty<Identifier>());
requireAll = conditionElement.GetAttributeBool("requireall", false);
}
@@ -23,7 +23,7 @@ namespace Barotrauma.Abilities
if (requireAll)
{
foreach (string tag in tags)
foreach (Identifier tag in tags)
{
if (character.GetEquippedItem(tag) == null) { return false; }
}
@@ -31,7 +31,7 @@ namespace Barotrauma.Abilities
}
else
{
foreach (string tag in tags)
foreach (Identifier tag in tags)
{
if (character.GetEquippedItem(tag) != null) { return true; }
}
@@ -5,13 +5,13 @@ namespace Barotrauma.Abilities
{
class AbilityConditionHasStatusTag : AbilityConditionDataless
{
private readonly string tag;
private readonly Identifier tag;
public AbilityConditionHasStatusTag(CharacterTalent characterTalent, ContentXElement conditionElement) : base(characterTalent, conditionElement)
{
tag = conditionElement.GetAttributeString("tag", "");
if (string.IsNullOrEmpty(tag))
tag = conditionElement.GetAttributeIdentifier("tag", Identifier.Empty);
if (tag.IsEmpty)
{
DebugConsole.AddWarning($"Error in talent \"{characterTalent.Prefab.OriginalName}\" - tag not defined in AbilityConditionHasStatusTag.");
}
@@ -19,7 +19,7 @@ namespace Barotrauma.Abilities
protected override bool MatchesConditionSpecific()
{
if (!string.IsNullOrEmpty(tag))
if (!tag.IsEmpty)
{
return
StatusEffect.DurationList.Any(d => d.Targets.Contains(character) && d.Parent.HasTag(tag)) ||
@@ -12,8 +12,7 @@ namespace Barotrauma.Abilities
protected override bool MatchesConditionSpecific()
{
bool result = character.HasTalent(talentIdentifier);
return result;
return character.HasTalent(talentIdentifier);
}
}
}
@@ -27,8 +27,8 @@ internal sealed class AbilityConditionHoldingItem : AbilityConditionDataless
return false;
static bool HasItemInHand(Character character, Identifier? tagOrIdentifier) =>
character.GetEquippedItem(tagOrIdentifier?.Value, InvSlotType.RightHand) is not null ||
character.GetEquippedItem(tagOrIdentifier?.Value, InvSlotType.LeftHand) is not null;
character.GetEquippedItem(tagOrIdentifier, InvSlotType.RightHand) is not null ||
character.GetEquippedItem(tagOrIdentifier, InvSlotType.LeftHand) is not null;
}
}