/// <summary> /// Print the object's XML to the XmlWriter. /// </summary> /// <param name="objWriter">XmlTextWriter to write with.</param> /// <param name="objCulture">Culture in which to print numbers.</param> /// <param name="strLanguageToPrint">Language in which to print.</param> public void Print(XmlTextWriter objWriter, CultureInfo objCulture, string strLanguageToPrint) { objWriter.WriteStartElement("spell"); if (Limited) { objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint) + LanguageManager.GetString("String_Space", strLanguageToPrint) + '(' + LanguageManager.GetString("String_SpellLimited", strLanguageToPrint) + ')'); } else if (Alchemical) { objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint) + LanguageManager.GetString("String_Space", strLanguageToPrint) + '(' + LanguageManager.GetString("String_SpellAlchemical", strLanguageToPrint) + ')'); } else { objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint)); } objWriter.WriteElementString("name_english", Name); objWriter.WriteElementString("descriptors", DisplayDescriptors(strLanguageToPrint)); objWriter.WriteElementString("category", DisplayCategory(strLanguageToPrint)); objWriter.WriteElementString("category_english", Category); objWriter.WriteElementString("type", DisplayType(strLanguageToPrint)); objWriter.WriteElementString("range", DisplayRange(strLanguageToPrint)); objWriter.WriteElementString("damage", DisplayDamage(strLanguageToPrint)); objWriter.WriteElementString("duration", DisplayDuration(strLanguageToPrint)); objWriter.WriteElementString("dv", DisplayDV(strLanguageToPrint)); objWriter.WriteElementString("alchemy", Alchemical.ToString()); objWriter.WriteElementString("dicepool", DicePool.ToString(objCulture)); objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint)); objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint)); objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra, strLanguageToPrint)); if (_objCharacter.Options.PrintNotes) { objWriter.WriteElementString("notes", Notes); } objWriter.WriteEndElement(); }
/// <summary> /// Print the object's XML to the XmlWriter. /// </summary> /// <param name="objWriter">XmlTextWriter to write with.</param> /// <param name="objCulture">Culture in which to print.</param> /// <param name="strLanguageToPrint">Language in which to print</param> public void Print(XmlTextWriter objWriter, CultureInfo objCulture, string strLanguageToPrint) { objWriter.WriteStartElement("power"); objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint)); objWriter.WriteElementString("fullname", DisplayName); objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra, strLanguageToPrint)); objWriter.WriteElementString("pointsperlevel", PointsPerLevel.ToString(objCulture)); objWriter.WriteElementString("adeptway", AdeptWayDiscount.ToString(objCulture)); objWriter.WriteElementString("rating", LevelsEnabled ? TotalRating.ToString(objCulture) : "0"); objWriter.WriteElementString("totalpoints", PowerPoints.ToString(objCulture)); objWriter.WriteElementString("action", DisplayActionMethod(strLanguageToPrint)); objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint)); objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint)); if (CharacterObject.Options.PrintNotes) { objWriter.WriteElementString("notes", Notes); } objWriter.WriteStartElement("enhancements"); foreach (Enhancement objEnhancement in Enhancements) { objEnhancement.Print(objWriter, strLanguageToPrint); } objWriter.WriteEndElement(); objWriter.WriteEndElement(); }
/// <summary> /// Print the object's XML to the XmlWriter. /// </summary> /// <param name="objWriter">XmlTextWriter to write with.</param> /// <param name="strLanguageToPrint">Language in which to print</param> public void Print(XmlTextWriter objWriter, string strLanguageToPrint) { if (objWriter == null) { return; } objWriter.WriteStartElement("critterpower"); objWriter.WriteElementString("guid", InternalId); objWriter.WriteElementString("sourceid", SourceIDString); objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint)); objWriter.WriteElementString("fullname", DisplayName(strLanguageToPrint)); objWriter.WriteElementString("name_english", Name); objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(_strExtra, strLanguageToPrint)); objWriter.WriteElementString("category", DisplayCategory(strLanguageToPrint)); objWriter.WriteElementString("category_english", Category); objWriter.WriteElementString("type", DisplayType(strLanguageToPrint)); objWriter.WriteElementString("action", DisplayAction(strLanguageToPrint)); objWriter.WriteElementString("range", DisplayRange(strLanguageToPrint)); objWriter.WriteElementString("duration", DisplayDuration(strLanguageToPrint)); objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint)); objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint)); if (_objCharacter.Options.PrintNotes) { objWriter.WriteElementString("notes", Notes); } objWriter.WriteEndElement(); }
public frmSelectOptionalPower(params Tuple <string, string>[] lstPowerExtraPairs) { InitializeComponent(); LanguageManager.TranslateWinForm(GlobalOptions.Language, this); foreach (Tuple <string, string> lstObject in lstPowerExtraPairs) { string strName = LanguageManager.TranslateExtra(lstObject.Item1, GlobalOptions.Language); if (!string.IsNullOrEmpty(lstObject.Item2)) { strName += LanguageManager.GetString("String_Space", GlobalOptions.Language) + '(' + LanguageManager.TranslateExtra(lstObject.Item2, GlobalOptions.Language) + ')'; } _lstPowerItems.Add(new ListItem(lstObject, strName)); } cboPower.BeginUpdate(); cboPower.ValueMember = "Value"; cboPower.DisplayMember = "Name"; cboPower.DataSource = _lstPowerItems; if (_lstPowerItems.Count >= 1) { cboPower.SelectedIndex = 0; } else { cmdOK.Enabled = false; } cboPower.EndUpdate(); }
/// <summary> /// The translated name of the Power (Name + any Extra text). /// </summary> public string DisplayNameMethod(string strLanguage) { string strReturn = DisplayNameShort(strLanguage); if (!string.IsNullOrEmpty(Extra)) { // Attempt to retrieve the CharacterAttribute name. strReturn += " (" + LanguageManager.TranslateExtra(Extra, strLanguage) + ")"; } return(strReturn); }
/// <summary> /// Print the object's XML to the XmlWriter. /// </summary> /// <param name="objWriter">XmlTextWriter to write with</param> /// <param name="objCulture">Culture in which to print</param> /// <param name="strLanguageToPrint">Language in which to print</param> public void Print(XmlTextWriter objWriter, CultureInfo objCulture, string strLanguageToPrint) { if (objWriter == null) { return; } objWriter.WriteStartElement("limitmodifier"); objWriter.WriteElementString("name", DisplayName(objCulture, strLanguageToPrint)); objWriter.WriteElementString("name_english", Name); objWriter.WriteElementString("condition", LanguageManager.TranslateExtra(Condition, strLanguageToPrint)); if (_objCharacter.Options.PrintNotes) { objWriter.WriteElementString("notes", Notes); } objWriter.WriteEndElement(); }
/// <summary> /// Print the object's XML to the XmlWriter. /// </summary> /// <param name="objWriter">XmlTextWriter to write with.</param> /// <param name="strLanguageToPrint">Language in which to print</param> public void Print(XmlTextWriter objWriter, string strLanguageToPrint) { objWriter.WriteStartElement("mentorspirit"); objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint)); objWriter.WriteElementString("mentortype", _eMentorType.ToString()); objWriter.WriteElementString("name_english", Name); objWriter.WriteElementString("advantage", Advantage); objWriter.WriteElementString("disadvantage", Disadvantage); objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(_strExtra, strLanguageToPrint)); objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint)); objWriter.WriteElementString("page", Page(strLanguageToPrint)); objWriter.WriteElementString("mentormask", MentorMask.ToString()); if (_objCharacter.Options.PrintNotes) { objWriter.WriteElementString("notes", _strNotes); } objWriter.WriteEndElement(); }
/// <summary> /// Print the object's XML to the XmlWriter. /// </summary> /// <param name="objWriter">XmlTextWriter to write with.</param> /// <param name="objCulture">Culture in which to print numbers.</param> /// <param name="strLanguageToPrint">Language in which to print.</param> public void Print(XmlTextWriter objWriter, CultureInfo objCulture, string strLanguageToPrint) { if (objWriter == null) { return; } objWriter.WriteStartElement("spell"); objWriter.WriteElementString("guid", InternalId); objWriter.WriteElementString("sourceid", SourceIDString); if (Limited) { objWriter.WriteElementString("name", string.Format(objCulture, "{0}{1}({2})", DisplayNameShort(strLanguageToPrint), LanguageManager.GetString("String_Space", strLanguageToPrint), LanguageManager.GetString("String_SpellLimited", strLanguageToPrint))); } else if (Alchemical) { objWriter.WriteElementString("name", string.Format(objCulture, "{0}{1}({2})", DisplayNameShort(strLanguageToPrint), LanguageManager.GetString("String_Space", strLanguageToPrint), LanguageManager.GetString("String_SpellAlchemical", strLanguageToPrint))); } else { objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint)); } objWriter.WriteElementString("name_english", Name); objWriter.WriteElementString("descriptors", DisplayDescriptors(strLanguageToPrint)); objWriter.WriteElementString("category", DisplayCategory(strLanguageToPrint)); objWriter.WriteElementString("category_english", Category); objWriter.WriteElementString("type", DisplayType(strLanguageToPrint)); objWriter.WriteElementString("range", DisplayRange(strLanguageToPrint)); objWriter.WriteElementString("damage", DisplayDamage(strLanguageToPrint)); objWriter.WriteElementString("duration", DisplayDuration(strLanguageToPrint)); objWriter.WriteElementString("dv", DisplayDV(strLanguageToPrint)); objWriter.WriteElementString("alchemy", Alchemical.ToString(GlobalOptions.InvariantCultureInfo)); objWriter.WriteElementString("dicepool", DicePool.ToString(objCulture)); objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint)); objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint)); objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra, strLanguageToPrint)); if (_objCharacter.Options.PrintNotes) { objWriter.WriteElementString("notes", Notes); } objWriter.WriteEndElement(); }
/// <summary> /// Print the object's XML to the XmlWriter. /// </summary> /// <param name="objWriter">XmlTextWriter to write with.</param> /// <param name="intRating">Pre-calculated rating of the quality for printing.</param> /// <param name="objCulture">Culture in which to print.</param> /// <param name="strLanguageToPrint">Language in which to print</param> public void Print(XmlTextWriter objWriter, int intRating, CultureInfo objCulture, string strLanguageToPrint) { if (AllowPrint) { string strSpaceCharacter = LanguageManager.GetString("String_Space", strLanguageToPrint); string strRatingString = string.Empty; if (intRating > 1) { strRatingString = strSpaceCharacter + intRating.ToString(objCulture); } string strSourceName = string.Empty; if (!string.IsNullOrWhiteSpace(SourceName)) { strSourceName = strSpaceCharacter + '(' + GetSourceName(strLanguageToPrint) + ')'; } objWriter.WriteStartElement("quality"); objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint)); objWriter.WriteElementString("name_english", Name + strRatingString); objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra, strLanguageToPrint) + strRatingString + strSourceName); objWriter.WriteElementString("bp", BP.ToString(objCulture)); string strQualityType = Type.ToString(); if (strLanguageToPrint != GlobalOptions.DefaultLanguage) { strQualityType = XmlManager.Load("qualities.xml", strLanguageToPrint).SelectSingleNode("/chummer/categories/category[. = \"" + strQualityType + "\"]/@translate")?.InnerText ?? strQualityType; } objWriter.WriteElementString("qualitytype", strQualityType); objWriter.WriteElementString("qualitytype_english", Type.ToString()); objWriter.WriteElementString("qualitysource", OriginSource.ToString()); objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint)); objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint)); if (_objCharacter.Options.PrintNotes) { objWriter.WriteElementString("notes", Notes); } objWriter.WriteEndElement(); } }
/// <summary> /// Print the object's XML to the XmlWriter. /// </summary> /// <param name="objWriter">XmlTextWriter to write with.</param> /// <param name="strLanguageToPrint">Language in which to print</param> public void Print(XmlTextWriter objWriter, string strLanguageToPrint) { if (objWriter == null) { return; } objWriter.WriteStartElement("mentorspirit"); objWriter.WriteElementString("guid", InternalId); objWriter.WriteElementString("sourceid", SourceIDString); objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint)); objWriter.WriteElementString("mentortype", _eMentorType.ToString()); objWriter.WriteElementString("name_english", Name); objWriter.WriteElementString("advantage", Advantage); objWriter.WriteElementString("disadvantage", Disadvantage); objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra, strLanguageToPrint)); objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint)); objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint)); objWriter.WriteElementString("mentormask", MentorMask.ToString(GlobalOptions.InvariantCultureInfo)); if (_objCharacter.Options.PrintNotes) { objWriter.WriteElementString("notes", _strNotes); } objWriter.WriteEndElement(); }
/// <summary> /// Print the object's XML to the XmlWriter. /// </summary> /// <param name="objWriter">XmlTextWriter to write with.</param> public void Print(XmlTextWriter objWriter) { objWriter.WriteStartElement("power"); objWriter.WriteElementString("name", DisplayNameShort); objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra)); objWriter.WriteElementString("pointsperlevel", PointsPerLevel.ToString()); objWriter.WriteElementString("adeptway", AdeptWayDiscount.ToString()); objWriter.WriteElementString("rating", LevelsEnabled ? Rating.ToString() : "0"); objWriter.WriteElementString("totalpoints", PowerPoints.ToString()); objWriter.WriteElementString("action", DisplayAction); objWriter.WriteElementString("source", CharacterObject.Options.LanguageBookShort(_strSource)); objWriter.WriteElementString("page", Page); if (CharacterObject.Options.PrintNotes) { objWriter.WriteElementString("notes", _strNotes); } objWriter.WriteStartElement("enhancements"); foreach (Enhancement objEnhancement in Enhancements) { objEnhancement.Print(objWriter); } objWriter.WriteEndElement(); objWriter.WriteEndElement(); }
private static void PrintPowerInfo(XmlTextWriter objWriter, XmlDocument objXmlDocument, string strPowerName, string strLanguageToPrint) { StringBuilder strExtra = new StringBuilder(); string strSource = string.Empty; string strPage = string.Empty; string strEnglishName = strPowerName; string strEnglishCategory = string.Empty; string strCategory = string.Empty; string strDisplayType = string.Empty; string strDisplayAction = string.Empty; string strDisplayRange = string.Empty; string strDisplayDuration = string.Empty; XmlNode objXmlPowerNode = objXmlDocument.SelectSingleNode("/chummer/powers/power[name = \"" + strPowerName + "\"]") ?? objXmlDocument.SelectSingleNode("/chummer/powers/power[starts-with(\"" + strPowerName + "\", name)]"); if (objXmlPowerNode != null) { objXmlPowerNode.TryGetStringFieldQuickly("source", ref strSource); if (!objXmlPowerNode.TryGetStringFieldQuickly("altpage", ref strPage)) { objXmlPowerNode.TryGetStringFieldQuickly("page", ref strPage); } objXmlPowerNode.TryGetStringFieldQuickly("name", ref strEnglishName); string[] lstExtras = strPowerName.TrimStart(strEnglishName).Trim().TrimStart('(').TrimEnd(')').Split(','); foreach (string strLoopExtra in lstExtras) { strExtra.Append(LanguageManager.TranslateExtra(strLoopExtra, strLanguageToPrint)); strExtra.Append(", "); } if (strExtra.Length > 0) { strExtra.Length -= 2; } if (objXmlPowerNode.TryGetStringFieldQuickly("translate", ref strPowerName)) { strPowerName = strEnglishName; } objXmlPowerNode.TryGetStringFieldQuickly("category", ref strEnglishCategory); strCategory = objXmlDocument.SelectSingleNode("/chummer/categories/category[. = \"" + strEnglishCategory + "\"]/@translate")?.InnerText ?? strEnglishCategory; switch (objXmlPowerNode["type"]?.InnerText) { case "M": strDisplayType = LanguageManager.GetString("String_SpellTypeMana", strLanguageToPrint); break; case "P": strDisplayType = LanguageManager.GetString("String_SpellTypePhysical", strLanguageToPrint); break; } switch (objXmlPowerNode["action"]?.InnerText) { case "Auto": strDisplayAction = LanguageManager.GetString("String_ActionAutomatic", strLanguageToPrint); break; case "Free": strDisplayAction = LanguageManager.GetString("String_ActionFree", strLanguageToPrint); break; case "Simple": strDisplayAction = LanguageManager.GetString("String_ActionSimple", strLanguageToPrint); break; case "Complex": strDisplayAction = LanguageManager.GetString("String_ActionComplex", strLanguageToPrint); break; case "Special": strDisplayAction = LanguageManager.GetString("String_SpellDurationSpecial", strLanguageToPrint); break; } switch (objXmlPowerNode["duration"]?.InnerText) { case "Instant": strDisplayDuration = LanguageManager.GetString("String_SpellDurationInstantLong", strLanguageToPrint); break; case "Sustained": strDisplayDuration = LanguageManager.GetString("String_SpellDurationSustained", strLanguageToPrint); break; case "Always": strDisplayDuration = LanguageManager.GetString("String_SpellDurationAlways", strLanguageToPrint); break; case "Special": strDisplayDuration = LanguageManager.GetString("String_SpellDurationSpecial", strLanguageToPrint); break; } if (objXmlPowerNode.TryGetStringFieldQuickly("range", ref strDisplayRange)) { strDisplayRange = strDisplayRange.CheapReplace("Self", () => LanguageManager.GetString("String_SpellRangeSelf", strLanguageToPrint)) .CheapReplace("Special", () => LanguageManager.GetString("String_SpellDurationSpecial", strLanguageToPrint)) .CheapReplace("LOS", () => LanguageManager.GetString("String_SpellRangeLineOfSight", strLanguageToPrint)) .CheapReplace("LOI", () => LanguageManager.GetString("String_SpellRangeLineOfInfluence", strLanguageToPrint)) .CheapReplace("T", () => LanguageManager.GetString("String_SpellRangeTouch", strLanguageToPrint)) .CheapReplace("(A)", () => '(' + LanguageManager.GetString("String_SpellRangeArea", strLanguageToPrint) + ')') .CheapReplace("MAG", () => LanguageManager.GetString("String_AttributeMAGShort", strLanguageToPrint)); } } if (string.IsNullOrEmpty(strDisplayType)) { strDisplayType = LanguageManager.GetString("String_None", strLanguageToPrint); } if (string.IsNullOrEmpty(strDisplayAction)) { strDisplayAction = LanguageManager.GetString("String_None", strLanguageToPrint); } objWriter.WriteStartElement("critterpower"); objWriter.WriteElementString("name", strPowerName); objWriter.WriteElementString("name_english", strEnglishName); objWriter.WriteElementString("extra", strExtra.ToString()); objWriter.WriteElementString("category", strCategory); objWriter.WriteElementString("category_english", strEnglishCategory); objWriter.WriteElementString("type", strDisplayType); objWriter.WriteElementString("action", strDisplayAction); objWriter.WriteElementString("range", strDisplayRange); objWriter.WriteElementString("duration", strDisplayDuration); objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(strSource, strLanguageToPrint)); objWriter.WriteElementString("page", strPage); objWriter.WriteEndElement(); }
private void RefreshSelectedMetavariant() { string strSpace = LanguageManager.GetString("String_Space"); XPathNavigator objXmlMetatype = null; XPathNavigator objXmlMetavariant = null; string strSelectedMetatype = lstMetatypes.SelectedValue?.ToString(); if (!string.IsNullOrEmpty(strSelectedMetatype)) { objXmlMetatype = _xmlBaseMetatypeDataNode.SelectSingleNode("metatypes/metatype[id = \"" + strSelectedMetatype + "\"]"); string strSelectedMetavariant = cboMetavariant.SelectedValue?.ToString(); if (objXmlMetatype != null && !string.IsNullOrEmpty(strSelectedMetavariant) && strSelectedMetavariant != "None") { objXmlMetavariant = objXmlMetatype.SelectSingleNode("metavariants/metavariant[id = \"" + strSelectedMetavariant + "\"]"); } } string strAttributeFormat = "{0}/{1}{2}({3})"; if (objXmlMetavariant != null) { cmdOK.Enabled = true; if (objXmlMetatype.SelectSingleNode("forcecreature") == null) { lblBOD.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("bodmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetavariant.SelectSingleNode("bodmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("bodaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblAGI.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("agimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetavariant.SelectSingleNode("agimax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("agiaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblREA.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("reamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetavariant.SelectSingleNode("reamax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("reaaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblSTR.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("strmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetavariant.SelectSingleNode("strmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("straug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblCHA.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("chamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetavariant.SelectSingleNode("chamax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("chaaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblINT.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("intmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetavariant.SelectSingleNode("intmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("intaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblLOG.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("logmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetavariant.SelectSingleNode("logmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("logaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblWIL.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("wilmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetavariant.SelectSingleNode("wilmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("wilaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblINI.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("inimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetavariant.SelectSingleNode("inimax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("iniaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); } else { lblBOD.Text = objXmlMetavariant.SelectSingleNode("bodmin")?.Value ?? objXmlMetatype.SelectSingleNode("bodmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblAGI.Text = objXmlMetavariant.SelectSingleNode("agimin")?.Value ?? objXmlMetatype.SelectSingleNode("agimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblREA.Text = objXmlMetavariant.SelectSingleNode("reamin")?.Value ?? objXmlMetatype.SelectSingleNode("reamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblSTR.Text = objXmlMetavariant.SelectSingleNode("strmin")?.Value ?? objXmlMetatype.SelectSingleNode("strmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblCHA.Text = objXmlMetavariant.SelectSingleNode("chamin")?.Value ?? objXmlMetatype.SelectSingleNode("chamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblINT.Text = objXmlMetavariant.SelectSingleNode("intmin")?.Value ?? objXmlMetatype.SelectSingleNode("intmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblLOG.Text = objXmlMetavariant.SelectSingleNode("logmin")?.Value ?? objXmlMetatype.SelectSingleNode("logmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblWIL.Text = objXmlMetavariant.SelectSingleNode("wilmin")?.Value ?? objXmlMetatype.SelectSingleNode("wilmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblINI.Text = objXmlMetavariant.SelectSingleNode("inimin")?.Value ?? objXmlMetatype.SelectSingleNode("inimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); } // ReSharper disable once IdentifierTypo StringBuilder sbdQualities = new StringBuilder(); // Build a list of the Metavariant's Qualities. foreach (XPathNavigator objXmlQuality in objXmlMetavariant.Select("qualities/*/quality")) { if (GlobalOptions.Language != GlobalOptions.DefaultLanguage) { sbdQualities.Append(_xmlBaseQualityDataNode.SelectSingleNode("qualities/quality[name = \"" + objXmlQuality.Value + "\"]/translate")?.Value ?? objXmlQuality.Value); string strSelect = objXmlQuality.SelectSingleNode("@select")?.Value; if (!string.IsNullOrEmpty(strSelect)) { sbdQualities.Append(LanguageManager.GetString("String_Space") + '('); sbdQualities.Append(LanguageManager.TranslateExtra(strSelect)); sbdQualities.Append(')'); } } else { sbdQualities.Append(objXmlQuality.Value); string strSelect = objXmlQuality.SelectSingleNode("@select")?.Value; if (!string.IsNullOrEmpty(strSelect)) { sbdQualities.Append(LanguageManager.GetString("String_Space") + '('); sbdQualities.Append(strSelect); sbdQualities.Append(')'); } } sbdQualities.Append(Environment.NewLine); } lblQualities.Text = sbdQualities.Length == 0 ? LanguageManager.GetString("String_None") : sbdQualities.ToString(); lblKarma.Text = objXmlMetavariant.SelectSingleNode("karma")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); } else if (objXmlMetatype != null) { cmdOK.Enabled = true; if (objXmlMetatype.SelectSingleNode("forcecreature") == null) { lblBOD.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("bodmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetatype.SelectSingleNode("bodmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("bodaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblAGI.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("agimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetatype.SelectSingleNode("agimax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("agiaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblREA.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("reamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetatype.SelectSingleNode("reamax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("reaaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblSTR.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("strmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetatype.SelectSingleNode("strmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("straug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblCHA.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("chamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetatype.SelectSingleNode("chamax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("chaaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblINT.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("intmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetatype.SelectSingleNode("intmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("intaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblLOG.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("logmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetatype.SelectSingleNode("logmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("logaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblWIL.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("wilmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetatype.SelectSingleNode("wilmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("wilaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); lblINI.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("inimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), objXmlMetatype.SelectSingleNode("inimax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("iniaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo)); } else { lblBOD.Text = objXmlMetatype.SelectSingleNode("bodmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblAGI.Text = objXmlMetatype.SelectSingleNode("agimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblREA.Text = objXmlMetatype.SelectSingleNode("reamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblSTR.Text = objXmlMetatype.SelectSingleNode("strmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblCHA.Text = objXmlMetatype.SelectSingleNode("chamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblINT.Text = objXmlMetatype.SelectSingleNode("intmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblLOG.Text = objXmlMetatype.SelectSingleNode("logmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblWIL.Text = objXmlMetatype.SelectSingleNode("wilmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); lblINI.Text = objXmlMetatype.SelectSingleNode("inimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); } // ReSharper disable once IdentifierTypo StringBuilder sbdQualities = new StringBuilder(); // Build a list of the Metatype's Positive Qualities. foreach (XPathNavigator objXmlQuality in objXmlMetatype.Select("qualities/*/quality")) { if (GlobalOptions.Language != GlobalOptions.DefaultLanguage) { sbdQualities.Append(_xmlBaseQualityDataNode.SelectSingleNode("qualities/quality[name = \"" + objXmlQuality.Value + "\"]/translate")?.Value ?? objXmlQuality.Value); string strSelect = objXmlQuality.SelectSingleNode("@select")?.Value; if (!string.IsNullOrEmpty(strSelect)) { sbdQualities.Append(LanguageManager.GetString("String_Space") + '('); sbdQualities.Append(LanguageManager.TranslateExtra(strSelect)); sbdQualities.Append(')'); } } else { sbdQualities.Append(objXmlQuality.Value); string strSelect = objXmlQuality.SelectSingleNode("@select")?.Value; if (!string.IsNullOrEmpty(strSelect)) { sbdQualities.Append(LanguageManager.GetString("String_Space") + '('); sbdQualities.Append(strSelect); sbdQualities.Append(')'); } } sbdQualities.Append(Environment.NewLine); } lblQualities.Text = sbdQualities.Length == 0 ? LanguageManager.GetString("String_None") : sbdQualities.ToString(); lblKarma.Text = objXmlMetatype.SelectSingleNode("karma")?.Value ?? 0.ToString(GlobalOptions.CultureInfo); } else { lblBOD.Text = string.Empty; lblAGI.Text = string.Empty; lblREA.Text = string.Empty; lblSTR.Text = string.Empty; lblCHA.Text = string.Empty; lblINT.Text = string.Empty; lblLOG.Text = string.Empty; lblWIL.Text = string.Empty; lblINI.Text = string.Empty; lblQualities.Text = string.Empty; lblKarma.Text = string.Empty; cmdOK.Enabled = false; } lblBODLabel.Visible = !string.IsNullOrEmpty(lblBOD.Text); lblAGILabel.Visible = !string.IsNullOrEmpty(lblAGI.Text); lblREALabel.Visible = !string.IsNullOrEmpty(lblREA.Text); lblSTRLabel.Visible = !string.IsNullOrEmpty(lblSTR.Text); lblCHALabel.Visible = !string.IsNullOrEmpty(lblCHA.Text); lblINTLabel.Visible = !string.IsNullOrEmpty(lblINT.Text); lblLOGLabel.Visible = !string.IsNullOrEmpty(lblLOG.Text); lblWILLabel.Visible = !string.IsNullOrEmpty(lblWIL.Text); lblINILabel.Visible = !string.IsNullOrEmpty(lblINI.Text); lblQualitiesLabel.Visible = !string.IsNullOrEmpty(lblQualities.Text); lblKarma.Visible = !string.IsNullOrEmpty(lblKarma.Text); }
private void lstKits_SelectedIndexChanged(object sender, EventArgs e) { if (string.IsNullOrEmpty(lstKits.Text)) { return; } treContents.Nodes.Clear(); XmlNode objXmlPack = _objXmlDocument.SelectSingleNode("/chummer/packs/pack[name = \"" + lstKits.SelectedValue + "\" and category = \"" + cboCategory.SelectedValue + "\"]"); XmlDocument objXmlItemDocument = null; XmlDocument objXmlGearDocument = XmlManager.Load("gear.xml"); foreach (XmlNode objXmlItem in objXmlPack.ChildNodes) { if (objXmlItem["hide"] != null) { continue; } TreeNode objParent = new TreeNode(); switch (objXmlItem.Name) { case "attributes": objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Attributes"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlAttribute in objXmlItem.ChildNodes) { if (objXmlAttribute["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = LanguageManager.GetString("String_Attribute" + objXmlAttribute.Name.ToUpper() + "Short") + " " + (Convert.ToInt32(objXmlAttribute.InnerText) - (6 - _objCharacter.GetAttribute(objXmlAttribute.Name.ToUpper()).MetatypeMaximum)).ToString(); objParent.Nodes.Add(objChild); objParent.Expand(); } break; case "qualities": objXmlItemDocument = XmlManager.Load("qualities.xml"); objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Qualities"); treContents.Nodes.Add(objParent); // Positive Qualities. foreach (XmlNode objXmlQuality in objXmlItem.SelectNodes("positive/quality")) { if (objXmlQuality["hide"] != null) { continue; } XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/qualities/quality[name = \"" + objXmlQuality.InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objNode["translate"]?.InnerText ?? objXmlQuality.InnerText; if (objXmlQuality.Attributes["select"] != null) { objChild.Text += $" ({LanguageManager.TranslateExtra(objXmlQuality.Attributes["select"].InnerText)})"; } objParent.Nodes.Add(objChild); objParent.Expand(); } // Negative Qualities. foreach (XmlNode objXmlQuality in objXmlItem.SelectNodes("negative/quality")) { if (objXmlQuality["hide"] != null) { continue; } XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/qualities/quality[name = \"" + objXmlQuality.InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objNode["translate"]?.InnerText ?? objXmlQuality.InnerText; if (objXmlQuality.Attributes["select"] != null) { objChild.Text += $" ({LanguageManager.TranslateExtra(objXmlQuality.Attributes["select"].InnerText)})"; } objParent.Nodes.Add(objChild); objParent.Expand(); } break; case "nuyenbp": objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Nuyen"); treContents.Nodes.Add(objParent); TreeNode objNuyenChild = new TreeNode(); objNuyenChild.Text = LanguageManager.GetString("String_SelectPACKSKit_StartingNuyenBP") + " " + objXmlItem.InnerText; objParent.Nodes.Add(objNuyenChild); objParent.Expand(); break; case "skills": objXmlItemDocument = XmlManager.Load("skills.xml"); objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Skills"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlSkill in objXmlItem.SelectNodes("skill")) { if (objXmlSkill["hide"] != null) { continue; } XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/skills/skill[name = \"" + objXmlSkill["name"].InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objNode["translate"]?.InnerText ?? objXmlSkill["name"].InnerText; objChild.Text += " " + objXmlSkill["rating"].InnerText; if (objXmlSkill["spec"] != null) { objChild.Text += " (" + objXmlSkill["spec"].InnerText + ")"; } objParent.Nodes.Add(objChild); objParent.Expand(); } foreach (XmlNode objXmlSkill in objXmlItem.SelectNodes("skillgroup")) { if (objXmlSkill["hide"] != null) { continue; } XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/skillgroups/name[. = \"" + objXmlSkill["name"].InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objNode.Attributes["translate"]?.InnerText ?? objXmlSkill["name"].InnerText; objChild.Text += $" {LanguageManager.GetString("String_SelectPACKSKit_Group")} {objXmlSkill["rating"].InnerText}"; if (objXmlSkill["spec"] != null) { objChild.Text += $" ({objXmlSkill["spec"].InnerText})"; } objParent.Nodes.Add(objChild); objParent.Expand(); } break; case "knowledgeskills": objXmlItemDocument = XmlManager.Load("skills.xml"); objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_KnowledgeSkills"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlSkill in objXmlItem.SelectNodes("skill")) { if (objXmlSkill["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); if (objXmlSkill["name"] != null) { XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/knowledgeskills/skill[name = \"" + objXmlSkill["name"].InnerText + "\"]"); if (objNode["hide"] != null) { continue; } objChild.Text = objNode?["translate"]?.InnerText ?? objXmlSkill["name"].InnerText; } objChild.Text += " " + objXmlSkill["rating"].InnerText; if (objXmlSkill["spec"] != null) { objChild.Text += $" ({objXmlSkill["spec"].InnerText})"; } objParent.Nodes.Add(objChild); objParent.Expand(); } break; case "selectmartialart": objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_SelectMartialArt"); treContents.Nodes.Add(objParent); int intRating = 1; string strSelect = LanguageManager.GetString("String_SelectPACKSKit_SelectMartialArt"); if (objXmlItem.Attributes["select"] != null) { strSelect = objXmlItem.Attributes["select"].InnerText; } if (objXmlItem.Attributes["rating"] != null) { intRating = Convert.ToInt32(objXmlItem.Attributes["rating"].InnerText); } TreeNode objMartialArt = new TreeNode(); objMartialArt.Text = strSelect + " " + LanguageManager.GetString("String_Rating") + " " + intRating.ToString(); objParent.Nodes.Add(objMartialArt); objParent.Expand(); break; case "martialarts": objXmlItemDocument = XmlManager.Load("martialarts.xml"); objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_MartialArts"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlArt in objXmlItem.SelectNodes("martialart")) { if (objXmlArt["hide"] != null) { continue; } XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/martialarts/martialart[name = \"" + objXmlArt["name"].InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objNode["translate"]?.InnerText ?? objXmlArt["name"].InnerText; objChild.Text += " " + objXmlArt["rating"].InnerText; // Check for Advantages. foreach (XmlNode objXmlAdvantage in objXmlArt.SelectNodes("techniques/technique")) { if (objXmlAdvantage["hide"] != null) { continue; } XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/martialarts/martialart[name = \"" + objXmlArt["name"].InnerText + "\"]/techniques/technique[name = \"" + objXmlAdvantage.InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChildChild = new TreeNode(); objChildChild.Text = objChildNode.Attributes["translate"]?.InnerText ?? objXmlAdvantage["name"].InnerText; objChild.Nodes.Add(objChildChild); objChild.Expand(); } objParent.Nodes.Add(objChild); objParent.Expand(); } foreach (XmlNode objXmlManeuver in objXmlItem.SelectNodes("maneuver")) { if (objXmlManeuver["hide"] != null) { continue; } XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/maneuvers/maneuver[name = \"" + objXmlManeuver.InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objNode["translate"]?.InnerText ?? objXmlManeuver["name"].InnerText; objChild.Text += " " + objXmlManeuver["rating"].InnerText; objParent.Nodes.Add(objChild); objParent.Expand(); } break; case "powers": objXmlItemDocument = XmlManager.Load("powers.xml"); objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Powers"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlPower in objXmlItem.SelectNodes("power")) { if (objXmlPower["hide"] != null) { continue; } XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/powers/power[name = \"" + objXmlPower["name"].InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objNode["translate"]?.InnerText ?? objXmlPower["name"].InnerText; if (objXmlPower["name"].Attributes["select"] != null) { objChild.Text += " (" + objXmlPower["name"].Attributes["select"].InnerText + ")"; } if (objXmlPower["rating"] != null) { objChild.Text += " " + objXmlPower["rating"].InnerText; } objParent.Nodes.Add(objChild); objParent.Expand(); } break; case "programs": objXmlItemDocument = XmlManager.Load("complexforms.xml"); objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Programs"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlProgram in objXmlItem.SelectNodes("program")) { if (objXmlProgram["hide"] != null) { continue; } XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/complexforms/complexform[name = \"" + objXmlProgram["name"].InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objNode["translate"]?.InnerText ?? objXmlProgram["name"].InnerText; objChild.Text += " " + objXmlProgram["rating"].InnerText; // Check for Program Options. foreach (XmlNode objXmlOption in objXmlProgram.SelectNodes("options/option")) { if (objXmlOption["hide"] != null) { continue; } XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/options/option[name = \"" + objXmlOption["name"].InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChildChild = new TreeNode(); objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlOption["name"].InnerText; objChildChild.Text = objXmlOption["name"].InnerText; if (objXmlOption["rating"] != null) { objChildChild.Text += " " + objXmlOption["rating"].InnerText; } objChild.Nodes.Add(objChildChild); objChild.Expand(); } objParent.Nodes.Add(objChild); objParent.Expand(); } break; case "spells": objXmlItemDocument = XmlManager.Load("spells.xml"); objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Spells"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlSpell in objXmlItem.SelectNodes("spell")) { if (objXmlSpell["hide"] != null) { continue; } XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/spells/spell[name = \"" + objXmlSpell.InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objNode["translate"]?.InnerText ?? objXmlSpell.InnerText; if (objXmlSpell.Attributes["select"] != null) { objChild.Text += " (" + objXmlSpell.Attributes["select"].InnerText + ")"; } objParent.Nodes.Add(objChild); objParent.Expand(); } break; case "spirits": objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Spirits"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlSpirit in objXmlItem.SelectNodes("spirit")) { if (objXmlSpirit["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objXmlSpirit["name"].InnerText + " (" + LanguageManager.GetString("Label_Spirit_Force") + " " + objXmlSpirit["force"].InnerText + ", " + LanguageManager.GetString("Label_Spirit_ServicesOwed") + " " + objXmlSpirit["services"].InnerText + ")"; objParent.Nodes.Add(objChild); objParent.Expand(); } break; case "lifestyles": objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Lifestyles"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlLifestyle in objXmlItem.SelectNodes("lifestyle")) { if (objXmlLifestyle["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = string.Format("{0} {1} {2}", objXmlLifestyle["name"].InnerText, objXmlLifestyle["months"].InnerText, LanguageManager.GetString("Label_LifestyleMonths")); // Check for Qualities. foreach (XmlNode objXmlQuality in objXmlLifestyle.SelectNodes("qualities/quality")) { if (objXmlQuality["hide"] != null) { continue; } TreeNode objChildChild = new TreeNode(); objChildChild.Text = objXmlQuality.InnerText; objChild.Nodes.Add(objChildChild); objChild.Expand(); } objParent.Nodes.Add(objChild); objParent.Expand(); } break; case "cyberwares": objXmlItemDocument = XmlManager.Load("cyberware.xml"); objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Cyberware"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlCyberware in objXmlItem.SelectNodes("cyberware")) { if (objXmlCyberware["hide"] != null) { continue; } XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/cyberwares/cyberware[name = \"" + objXmlCyberware["name"].InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objNode["translate"]?.InnerText ?? objXmlCyberware["name"].InnerText; if (objXmlCyberware["rating"] != null) { objChild.Text += " Rating " + objXmlCyberware["rating"].InnerText; } objChild.Text += " (" + objXmlCyberware["grade"].InnerText + ")"; // Check for children. foreach (XmlNode objXmlChild in objXmlCyberware.SelectNodes("cyberwares/cyberware")) { if (objXmlChild["hide"] != null) { continue; } XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/cyberwares/cyberware[name = \"" + objXmlChild["name"].InnerText + "\"]"); if (objChildNode["hide"] != null) { continue; } TreeNode objChildChild = new TreeNode(); objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlChild["name"].InnerText; if (objXmlChild["rating"] != null) { objChildChild.Text += " " + LanguageManager.GetString("String_Rating") + " " + objXmlChild["rating"].InnerText; } foreach (XmlNode objXmlGearNode in objXmlChild.SelectNodes("gears/gear")) { WriteGear(objXmlGearDocument, objXmlGearNode, objChildChild); } objChild.Expand(); objChild.Nodes.Add(objChildChild); objChild.Expand(); } foreach (XmlNode objXmlGearNode in objXmlCyberware.SelectNodes("gears/gear")) { WriteGear(objXmlGearDocument, objXmlGearNode, objChild); } objChild.Expand(); objParent.Nodes.Add(objChild); objParent.Expand(); } break; case "biowares": objXmlItemDocument = XmlManager.Load("bioware.xml"); objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Bioware"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlBioware in objXmlItem.SelectNodes("bioware")) { if (objXmlBioware["hide"] != null) { continue; } XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/biowares/bioware[name = \"" + objXmlBioware["name"].InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objNode["translate"]?.InnerText ?? objXmlBioware["name"].InnerText; if (objXmlBioware["rating"] != null) { objChild.Text += " " + LanguageManager.GetString("String_Rating") + " " + objXmlBioware["rating"].InnerText; } objChild.Text += " (" + objXmlBioware["grade"].InnerText + ")"; foreach (XmlNode objXmlGearNode in objXmlBioware.SelectNodes("gears/gear")) { WriteGear(objXmlGearDocument, objXmlGearNode, objChild); } objChild.Expand(); objParent.Nodes.Add(objChild); objParent.Expand(); } break; case "armors": objXmlItemDocument = XmlManager.Load("armor.xml"); objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Armor"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlArmor in objXmlItem.SelectNodes("armor")) { if (objXmlArmor["hide"] != null) { continue; } XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/armors/armor[name = \"" + objXmlArmor["name"].InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objNode["translate"]?.InnerText ?? objXmlArmor["name"].InnerText; // Check for children. foreach (XmlNode objXmlChild in objXmlArmor.SelectNodes("mods/mod")) { if (objXmlChild["hide"] != null) { continue; } XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/mods/mod[name = \"" + objXmlChild["name"].InnerText + "\"]"); if (objChildNode["hide"] != null) { continue; } TreeNode objChildChild = new TreeNode(); objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlChild["name"].InnerText; if (objXmlChild["rating"] != null) { objChildChild.Text += " " + LanguageManager.GetString("String_Rating") + " " + objXmlChild["rating"].InnerText; } objChild.Nodes.Add(objChildChild); objChild.Expand(); } foreach (XmlNode objXmlGearNode in objXmlArmor.SelectNodes("gears/gear")) { WriteGear(objXmlGearDocument, objXmlGearNode, objChild); } objChild.Expand(); objParent.Nodes.Add(objChild); objParent.Expand(); } break; case "weapons": objXmlItemDocument = XmlManager.Load("weapons.xml"); objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Weapons"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlWeapon in objXmlItem.SelectNodes("weapon")) { if (objXmlWeapon["hide"] != null) { continue; } XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/weapons/weapon[name = \"" + objXmlWeapon["name"].InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objNode["translate"]?.InnerText ?? objXmlWeapon["name"].InnerText; // Check for Weapon Accessories. foreach (XmlNode objXmlAccessory in objXmlWeapon.SelectNodes("accessories/accessory")) { if (objXmlAccessory["hide"] != null) { continue; } XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/accessories/accessory[name = \"" + objXmlAccessory["name"].InnerText + "\"]"); if (objChildNode["hide"] != null) { continue; } TreeNode objChildChild = new TreeNode(); objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlAccessory["name"].InnerText; if (objXmlAccessory["rating"] != null) { objChildChild.Text += " " + LanguageManager.GetString("String_Rating") + " " + objXmlAccessory["rating"].InnerText; } foreach (XmlNode objXmlGearNode in objXmlAccessory.SelectNodes("gears/gear")) { WriteGear(objXmlGearDocument, objXmlGearNode, objChildChild); } objChildChild.Expand(); objChild.Nodes.Add(objChildChild); objChild.Expand(); } // Check for Weapon Mods. foreach (XmlNode objXmlMod in objXmlWeapon.SelectNodes("mods/mod")) { if (objXmlMod["hide"] != null) { continue; } XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/mods/mod[name = \"" + objXmlMod["name"].InnerText + "\"]"); if (objChildNode["hide"] != null) { continue; } TreeNode objChildChild = new TreeNode(); objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlMod["name"].InnerText; if (objXmlMod["rating"] != null) { objChildChild.Text += " " + LanguageManager.GetString("String_Rating") + " " + objXmlMod["rating"].InnerText; } objChild.Nodes.Add(objChildChild); objChild.Expand(); } // Check for Underbarrel Weapons. if (objXmlWeapon["underbarrel"] != null) { if (objXmlWeapon["hide"] != null) { continue; } XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/weapons/weapon[name = \"" + objXmlWeapon["underbarrel"].InnerText + "\"]"); if (objChildNode["hide"] != null) { continue; } TreeNode objChildChild = new TreeNode(); objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlWeapon["name"].InnerText; objChild.Nodes.Add(objChildChild); objChild.Expand(); } objParent.Nodes.Add(objChild); objParent.Expand(); } break; case "gears": objXmlItemDocument = XmlManager.Load("gear.xml"); objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Gear"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlGear in objXmlItem.SelectNodes("gear")) { if (objXmlGear["hide"] != null) { continue; } WriteGear(objXmlItemDocument, objXmlGear, objParent); objParent.Expand(); } break; case "vehicles": objXmlItemDocument = XmlManager.Load("vehicles.xml"); objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Vehicles"); treContents.Nodes.Add(objParent); foreach (XmlNode objXmlVehicle in objXmlItem.SelectNodes("vehicle")) { if (objXmlVehicle["hide"] != null) { continue; } XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/vehicles/vehicle[name = \"" + objXmlVehicle["name"].InnerText + "\"]"); if (objNode["hide"] != null) { continue; } TreeNode objChild = new TreeNode(); objChild.Text = objNode["translate"]?.InnerText ?? objXmlVehicle["name"].InnerText; // Check for children. foreach (XmlNode objXmlMod in objXmlVehicle.SelectNodes("mods/mod")) { if (objXmlMod["hide"] != null) { continue; } XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/mods/mod[name = \"" + objXmlMod["name"].InnerText + "\"]"); if (objChildNode["hide"] != null) { continue; } TreeNode objChildChild = new TreeNode(); objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlMod["name"].InnerText; if (objXmlMod["rating"] != null) { objChildChild.Text += " " + LanguageManager.GetString("String_Rating") + " " + objXmlMod["rating"].InnerText; } objChild.Nodes.Add(objChildChild); objChild.Expand(); } // Check for children. foreach (XmlNode objXmlChild in objXmlVehicle.SelectNodes("gears/gear")) { if (objXmlChild["hide"] != null) { continue; } WriteGear(objXmlGearDocument, objXmlChild, objChild); objChild.Expand(); } // Check for children. foreach (XmlNode objXmlWeapon in objXmlVehicle.SelectNodes("weapons/weapon")) { if (objXmlWeapon["hide"] != null) { continue; } XmlDocument objXmlWeaponDocument = XmlManager.Load("weapons.xml"); XmlNode objChildNode = objXmlWeaponDocument.SelectSingleNode("/chummer/weapons/weapon[name = \"" + objXmlWeapon["name"].InnerText + "\"]"); if (objChildNode["hide"] != null) { continue; } TreeNode objChildChild = new TreeNode(); objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlWeapon["name"].InnerText; if (objXmlWeapon["rating"] != null) { objChildChild.Text += " " + LanguageManager.GetString("String_Rating") + " " + objXmlWeapon["rating"].InnerText; } objChild.Nodes.Add(objChildChild); objChild.Expand(); } objParent.Nodes.Add(objChild); objParent.Expand(); } break; } } }
private static void PrintPowerInfo(XmlTextWriter objWriter, XPathNavigator xmlSpiritPowersBaseChummerNode, XPathNavigator xmlCritterPowersBaseChummerNode, XmlNode xmlPowerEntryNode, string strLanguageToPrint) { StringBuilder strExtra = new StringBuilder(); string strSelect = xmlPowerEntryNode.SelectSingleNode("@select")?.Value; if (!string.IsNullOrEmpty(strSelect)) { strExtra.Append(LanguageManager.TranslateExtra(strSelect, strLanguageToPrint)); } string strSource = string.Empty; string strPage = string.Empty; string strPowerName = xmlPowerEntryNode.InnerText; string strEnglishName = strPowerName; string strEnglishCategory = string.Empty; string strCategory = string.Empty; string strDisplayType = string.Empty; string strDisplayAction = string.Empty; string strDisplayRange = string.Empty; string strDisplayDuration = string.Empty; XPathNavigator objXmlPowerNode = xmlSpiritPowersBaseChummerNode.SelectSingleNode("powers/power[name = \"" + strPowerName + "\"]") ?? xmlSpiritPowersBaseChummerNode.SelectSingleNode("powers/power[starts-with(\"" + strPowerName + "\", name)]") ?? xmlCritterPowersBaseChummerNode.SelectSingleNode("powers/power[name = \"" + strPowerName + "\"]") ?? xmlCritterPowersBaseChummerNode.SelectSingleNode("powers/power[starts-with(\"" + strPowerName + "\", name)]"); if (objXmlPowerNode != null) { objXmlPowerNode.TryGetStringFieldQuickly("source", ref strSource); if (!objXmlPowerNode.TryGetStringFieldQuickly("altpage", ref strPage)) { objXmlPowerNode.TryGetStringFieldQuickly("page", ref strPage); } objXmlPowerNode.TryGetStringFieldQuickly("name", ref strEnglishName); bool blnExtrasAdded = false; foreach (string strLoopExtra in strPowerName.TrimStartOnce(strEnglishName).Trim().TrimStartOnce('(').TrimEndOnce(')').Split(',')) { blnExtrasAdded = true; strExtra.Append(LanguageManager.TranslateExtra(strLoopExtra, strLanguageToPrint)); strExtra.Append(", "); } if (blnExtrasAdded) { strExtra.Length -= 2; } if (!objXmlPowerNode.TryGetStringFieldQuickly("translate", ref strPowerName)) { strPowerName = strEnglishName; } objXmlPowerNode.TryGetStringFieldQuickly("category", ref strEnglishCategory); strCategory = xmlSpiritPowersBaseChummerNode.SelectSingleNode("categories/category[. = \"" + strEnglishCategory + "\"]/@translate")?.Value ?? strEnglishCategory; switch (objXmlPowerNode.SelectSingleNode("type")?.Value) { case "M": strDisplayType = LanguageManager.GetString("String_SpellTypeMana", strLanguageToPrint); break; case "P": strDisplayType = LanguageManager.GetString("String_SpellTypePhysical", strLanguageToPrint); break; } switch (objXmlPowerNode.SelectSingleNode("action")?.Value) { case "Auto": strDisplayAction = LanguageManager.GetString("String_ActionAutomatic", strLanguageToPrint); break; case "Free": strDisplayAction = LanguageManager.GetString("String_ActionFree", strLanguageToPrint); break; case "Simple": strDisplayAction = LanguageManager.GetString("String_ActionSimple", strLanguageToPrint); break; case "Complex": strDisplayAction = LanguageManager.GetString("String_ActionComplex", strLanguageToPrint); break; case "Special": strDisplayAction = LanguageManager.GetString("String_SpellDurationSpecial", strLanguageToPrint); break; } switch (objXmlPowerNode.SelectSingleNode("duration")?.Value) { case "Instant": strDisplayDuration = LanguageManager.GetString("String_SpellDurationInstantLong", strLanguageToPrint); break; case "Sustained": strDisplayDuration = LanguageManager.GetString("String_SpellDurationSustained", strLanguageToPrint); break; case "Always": strDisplayDuration = LanguageManager.GetString("String_SpellDurationAlways", strLanguageToPrint); break; case "Special": strDisplayDuration = LanguageManager.GetString("String_SpellDurationSpecial", strLanguageToPrint); break; } if (objXmlPowerNode.TryGetStringFieldQuickly("range", ref strDisplayRange) && strLanguageToPrint != GlobalOptions.DefaultLanguage) { strDisplayRange = strDisplayRange.CheapReplace("Self", () => LanguageManager.GetString("String_SpellRangeSelf", strLanguageToPrint)) .CheapReplace("Special", () => LanguageManager.GetString("String_SpellDurationSpecial", strLanguageToPrint)) .CheapReplace("LOS", () => LanguageManager.GetString("String_SpellRangeLineOfSight", strLanguageToPrint)) .CheapReplace("LOI", () => LanguageManager.GetString("String_SpellRangeLineOfInfluence", strLanguageToPrint)) .CheapReplace("T", () => LanguageManager.GetString("String_SpellRangeTouch", strLanguageToPrint)) .CheapReplace("(A)", () => '(' + LanguageManager.GetString("String_SpellRangeArea", strLanguageToPrint) + ')') .CheapReplace("MAG", () => LanguageManager.GetString("String_AttributeMAGShort", strLanguageToPrint)); } } if (string.IsNullOrEmpty(strDisplayType)) { strDisplayType = LanguageManager.GetString("String_None", strLanguageToPrint); } if (string.IsNullOrEmpty(strDisplayAction)) { strDisplayAction = LanguageManager.GetString("String_None", strLanguageToPrint); } objWriter.WriteStartElement("critterpower"); objWriter.WriteElementString("name", strPowerName); objWriter.WriteElementString("name_english", strEnglishName); objWriter.WriteElementString("extra", strExtra.ToString()); objWriter.WriteElementString("category", strCategory); objWriter.WriteElementString("category_english", strEnglishCategory); objWriter.WriteElementString("type", strDisplayType); objWriter.WriteElementString("action", strDisplayAction); objWriter.WriteElementString("range", strDisplayRange); objWriter.WriteElementString("duration", strDisplayDuration); objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(strSource, strLanguageToPrint)); objWriter.WriteElementString("page", strPage); objWriter.WriteEndElement(); }
/// <summary> /// Returns a current language translation given an improvement name. /// </summary> /// <param name="strImprovementType"> The selector for the target translation. Often just _strSelect. </param> /// <param name="strToTranslate"> The string which to translate. Usually name. Guid in the case of adept powers.</param> /// <returns></returns> private string TranslateField(string strImprovementType, string strToTranslate) { XmlNode objXmlNode; switch (strImprovementType) { case "SelectAttribute": case "SelectPhysicalAttribute": case "SelectMentalAttribute": case "SelectSpecialAttribute": return(strToTranslate == "MAGAdept" ? LanguageManager.GetString("String_AttributeMAGShort") + LanguageManager.GetString("String_Space") + '(' + LanguageManager.GetString("String_DescAdept") + ')' : LanguageManager.GetString("String_Attribute" + strToTranslate + "Short")); case "SelectSkill": if (strToTranslate.Contains("Exotic Melee Weapon") || strToTranslate.Contains("Exotic Ranged Weapon") || strToTranslate.Contains("Pilot Exotic Vehicle")) { string[] astrToTranslateParts = strToTranslate.Split('('); astrToTranslateParts[0] = astrToTranslateParts[0].Trim(); astrToTranslateParts[1] = astrToTranslateParts[1].Substring(0, astrToTranslateParts[1].Length - 1); objXmlNode = XmlManager.Load("skills.xml").SelectSingleNode("/chummer/skills/skill[name = \"" + astrToTranslateParts[0] + "\"]"); string strFirstPartTranslated = objXmlNode?.SelectSingleNode("translate")?.InnerText ?? objXmlNode?.SelectSingleNode("name")?.InnerText ?? astrToTranslateParts[0]; return(strFirstPartTranslated + LanguageManager.GetString("String_Space") + '(' + LanguageManager.TranslateExtra(astrToTranslateParts[1]) + ')'); } else { objXmlNode = XmlManager.Load("skills.xml").SelectSingleNode("/chummer/skills/skill[name = \"" + strToTranslate + "\"]"); return(objXmlNode?.SelectSingleNode("translate")?.InnerText ?? objXmlNode?.SelectSingleNode("name")?.InnerText ?? strToTranslate); } case "SelectKnowSkill": objXmlNode = XmlManager.Load("skills.xml").SelectSingleNode("/chummer/knowledgeskills/skill[name = \"" + strToTranslate + "\"]"); return(objXmlNode?.SelectSingleNode("translate")?.InnerText ?? objXmlNode?.SelectSingleNode("name")?.InnerText ?? strToTranslate); case "SelectSkillCategory": objXmlNode = XmlManager.Load("skills.xml").SelectSingleNode("/chummer/categories/category[. = \"" + strToTranslate + "\"]"); return(objXmlNode?.Attributes?["translate"]?.InnerText ?? objXmlNode?.SelectSingleNode(".")?.InnerText ?? strToTranslate); case "SelectSkillGroup": objXmlNode = XmlManager.Load("skills.xml").SelectSingleNode("/chummer/skillgroups/name[. = \"" + strToTranslate + "\"]"); return(objXmlNode?.Attributes?["translate"]?.InnerText ?? objXmlNode?.SelectSingleNode(".")?.InnerText ?? strToTranslate); case "SelectWeaponCategory": objXmlNode = XmlManager.Load("weapons.xml").SelectSingleNode("/chummer/categories/category[. = \"" + strToTranslate + "\"]"); return(objXmlNode?.Attributes?["translate"]?.InnerText ?? objXmlNode?.SelectSingleNode(".")?.InnerText ?? strToTranslate); case "SelectSpellCategory": objXmlNode = XmlManager.Load("spells.xml").SelectSingleNode("/chummer/categories/category[. = \"" + strToTranslate + "\"]"); return(objXmlNode?.Attributes?["translate"]?.InnerText ?? objXmlNode?.SelectSingleNode(".")?.InnerText ?? strToTranslate); case "SelectAdeptPower": objXmlNode = XmlManager.Load("powers.xml").SelectSingleNode("/chummer/powers/power[id = \"" + strToTranslate + "\" or name = \"" + strToTranslate + "\"]"); return(objXmlNode?.SelectSingleNode("translate")?.InnerText ?? objXmlNode?.SelectSingleNode("name")?.InnerText ?? strToTranslate); default: return(strToTranslate); } }