Skip to content

Commit

Permalink
Tweaked RequirementsMet Handling for Improvement-Added Selections
Browse files Browse the repository at this point in the history
  • Loading branch information
DelnarErsike committed Mar 13, 2024
1 parent ff204f6 commit cd8d99b
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 12 deletions.
11 changes: 4 additions & 7 deletions Chummer/Backend/Improvements/AddImprovementCollection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4411,8 +4411,7 @@ public void selectart(XmlNode bonusNode)
string strLoopName = objXmlAddArt.InnerText;
XmlNode objXmlArt = objXmlDocument.TryGetNodeByNameOrId("/chummer/arts/art", strLoopName);
// Makes sure we aren't over our limits for this particular metamagic from this overall source
if (objXmlArt != null && objXmlAddArt.CreateNavigator()
.RequirementsMet(_objCharacter, strLocalName: _strFriendlyName))
if (objXmlArt != null && objXmlAddArt.CreateNavigator().RequirementsMet(_objCharacter))
{
lstArts.Add(new ListItem(objXmlArt["id"]?.InnerText,
objXmlArt["translate"]?.InnerText ?? strLoopName));
Expand Down Expand Up @@ -4515,8 +4514,7 @@ public void selectmetamagic(XmlNode bonusNode)
XmlNode objXmlMetamagic
= objXmlDocument.TryGetNodeByNameOrId("/chummer/metamagics/metamagic", strLoopName);
// Makes sure we aren't over our limits for this particular metamagic from this overall source
if (objXmlMetamagic != null && objXmlAddMetamagic.CreateNavigator()
.RequirementsMet(_objCharacter, strLocalName: _strFriendlyName))
if (objXmlMetamagic != null && objXmlAddMetamagic.CreateNavigator().RequirementsMet(_objCharacter))
{
lstMetamagics.Add(new ListItem(objXmlMetamagic["id"]?.InnerText,
objXmlMetamagic["translate"]?.InnerText
Expand Down Expand Up @@ -4631,8 +4629,7 @@ public void selectecho(XmlNode bonusNode)
XmlNode objXmlEcho = objXmlDocument.TryGetNodeByNameOrId(
"/chummer/metamagics/metamagic", strLoopName);
// Makes sure we aren't over our limits for this particular metamagic from this overall source
if (objXmlEcho != null && objXmlAddEcho.CreateNavigator()
.RequirementsMet(_objCharacter, strLocalName: _strFriendlyName))
if (objXmlEcho != null && objXmlAddEcho.CreateNavigator().RequirementsMet(_objCharacter))
{
lstEchoes.Add(new ListItem(objXmlEcho["id"]?.InnerText,
objXmlEcho["translate"]?.InnerText ?? strLoopName));
Expand Down Expand Up @@ -6169,7 +6166,7 @@ XmlNode objXmlQuality
= objXmlDocument.TryGetNodeByNameOrId("/chummer/qualities/quality", strName);
// Makes sure we aren't over our limits for this particular quality from this overall source
if (objXmlAddQuality.Attributes?["forced"]?.InnerText == bool.TrueString ||
objXmlQuality?.CreateNavigator().RequirementsMet(_objCharacter, strLocalName: _strFriendlyName) == true)
objXmlQuality?.CreateNavigator().RequirementsMet(_objCharacter) == true)
{
lstQualities.Add(
new ListItem(strName, objXmlQuality?["translate"]?.InnerText ?? strName));
Expand Down
4 changes: 2 additions & 2 deletions Chummer/Backend/Uniques/Quality.cs
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ public Task CreateAsync(XmlNode objXmlQuality, QualitySource objQualitySource, I
}
}

_nodDiscounts = objXmlQuality["costdiscount"]?.CreateNavigator();
_nodDiscounts = objXmlQuality.SelectSingleNodeAndCacheExpressionAsNavigator("costdiscount", token);
// If the item grants a bonus, pass the information to the Improvement Manager.
_nodBonus = objXmlQuality["bonus"];
if (_nodBonus?.ChildNodes.Count > 0)
Expand Down Expand Up @@ -612,7 +612,7 @@ public void Load(XmlNode objNode)
_nodBonus = objNode["bonus"];
_nodFirstLevelBonus = objNode["firstlevelbonus"] ?? objMyNode.Value?["firstlevelbonus"];
_nodNaturalWeaponsNode = objNode["naturalweapons"] ?? objMyNode.Value?["naturalweapons"];
_nodDiscounts = objNode["costdiscount"]?.CreateNavigator();
_nodDiscounts = objNode.SelectSingleNodeAndCacheExpressionAsNavigator("costdiscount");
objNode.TryGetField("weaponguid", Guid.TryParse, out _guiWeaponID);
objNode.TryGetMultiLineStringFieldQuickly("notes", ref _strNotes);

Expand Down
8 changes: 5 additions & 3 deletions Chummer/Forms/Selection Forms/SelectQuality.cs
Original file line number Diff line number Diff line change
Expand Up @@ -404,9 +404,11 @@ private async Task UpdateCostLabel(XPathNavigator xmlQuality, CancellationToken
{
int.TryParse(strKarma, NumberStyles.Any, GlobalSettings.InvariantCultureInfo, out int intBP);

if (await xmlQuality.SelectSingleNodeAndCacheExpression("costdiscount", token).RequirementsMetAsync(_objCharacter, token: token).ConfigureAwait(false))
XPathNavigator xmlCostDiscount =
xmlQuality.SelectSingleNodeAndCacheExpression("costdiscount", token);
if (xmlCostDiscount != null && await xmlCostDiscount.RequirementsMetAsync(_objCharacter, token: token).ConfigureAwait(false))
{
XPathNavigator xmlValueNode = xmlQuality.SelectSingleNodeAndCacheExpression("costdiscount/value", token);
XPathNavigator xmlValueNode = xmlCostDiscount.SelectSingleNodeAndCacheExpression("value", token);
if (xmlValueNode != null)
{
int intValue = xmlValueNode.ValueAsInt;
Expand All @@ -423,7 +425,7 @@ private async Task UpdateCostLabel(XPathNavigator xmlQuality, CancellationToken
}
}

if (_objCharacter.Created && !_objCharacter.Settings.DontDoubleQualityPurchases)
if (await _objCharacter.GetCreatedAsync(token) && !await _objCharacter.Settings.GetDontDoubleQualityPurchasesAsync(token))
{
string strDoubleCostCareer = xmlQuality.SelectSingleNodeAndCacheExpression("doublecareer", token)?.Value;
if (string.IsNullOrEmpty(strDoubleCostCareer) || strDoubleCostCareer != bool.FalseString)
Expand Down

0 comments on commit cd8d99b

Please sign in to comment.