private void tsVehicleAddWeaponAccessory_Click(object sender, EventArgs e) { // Attempt to locate the selected VehicleWeapon. bool blnWeaponFound = false; Vehicle objFoundVehicle = new Vehicle(_objCharacter); Weapon objWeapon = _objFunctions.FindVehicleWeapon(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles, out objFoundVehicle); if (objWeapon != null) blnWeaponFound = true; if (!blnWeaponFound) { MessageBox.Show(LanguageManager.Instance.GetString("Message_VehicleWeaponAccessories"), LanguageManager.Instance.GetString("MessageTitle_VehicleWeaponAccessories"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Open the Weapons XML file and locate the selected Weapon. XmlDocument objXmlDocument = XmlManager.Instance.Load("weapons.xml"); XmlNode objXmlWeapon = objXmlDocument.SelectSingleNode("/chummer/weapons/weapon[name = \"" + treVehicles.SelectedNode.Text + "\"]"); frmSelectWeaponAccessory frmPickWeaponAccessory = new frmSelectWeaponAccessory(_objCharacter); if (objXmlWeapon == null) { MessageBox.Show(LanguageManager.Instance.GetString("Message_CannotModifyWeapon"), LanguageManager.Instance.GetString("MessageTitle_CannotModifyWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Make sure the Weapon allows Accessories to be added to it. if (!Convert.ToBoolean(objXmlWeapon["allowaccessory"].InnerText)) { MessageBox.Show(LanguageManager.Instance.GetString("Message_CannotModifyWeapon"), LanguageManager.Instance.GetString("MessageTitle_CannotModifyWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else { XmlNodeList objXmlMountList = objXmlWeapon.SelectNodes("accessorymounts/mount"); string strMounts = ""; foreach (XmlNode objXmlMount in objXmlMountList) { // Run through the Weapon's currenct Accessories and filter out any used up Mount points. bool blnFound = false; foreach (WeaponAccessory objCurrentAccessory in objWeapon.WeaponAccessories) { if (objCurrentAccessory.Mount == objXmlMount.InnerText) blnFound = true; } if (!blnFound) strMounts += objXmlMount.InnerText + "/"; } frmPickWeaponAccessory.AllowedMounts = strMounts; } frmPickWeaponAccessory.WeaponCost = objWeapon.Cost; frmPickWeaponAccessory.AccessoryMultiplier = objWeapon.AccessoryMultiplier; frmPickWeaponAccessory.ShowDialog(); if (frmPickWeaponAccessory.DialogResult == DialogResult.Cancel) return; // Locate the selected piece. objXmlWeapon = objXmlDocument.SelectSingleNode("/chummer/accessories/accessory[name = \"" + frmPickWeaponAccessory.SelectedAccessory + "\"]"); TreeNode objNode = new TreeNode(); WeaponAccessory objAccessory = new WeaponAccessory(_objCharacter); objAccessory.Create(objXmlWeapon, objNode, frmPickWeaponAccessory.SelectedMount, Convert.ToInt32(frmPickWeaponAccessory.SelectedRating)); objAccessory.Parent = objWeapon; objWeapon.WeaponAccessories.Add(objAccessory); objNode.ContextMenuStrip = cmsVehicleWeaponAccessory; treVehicles.SelectedNode.Nodes.Add(objNode); treVehicles.SelectedNode.Expand(); if (frmPickWeaponAccessory.AddAgain) tsVehicleAddWeaponAccessory_Click(sender, e); UpdateCharacterInfo(); }
private void tsWeaponAddAccessory_Click(object sender, EventArgs e) { // Make sure a parent item is selected, then open the Select Accessory window. try { if (treWeapons.SelectedNode.Level == 0) { MessageBox.Show(LanguageManager.Instance.GetString("Message_SelectWeaponAccessory"), LanguageManager.Instance.GetString("MessageTitle_SelectWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } catch { MessageBox.Show(LanguageManager.Instance.GetString("Message_SelectWeaponAccessory"), LanguageManager.Instance.GetString("MessageTitle_SelectWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Locate the Weapon that is selected in the Tree. Weapon objWeapon = _objFunctions.FindWeapon(treWeapons.SelectedNode.Tag.ToString(), _objCharacter.Weapons); // Accessories cannot be added to Cyberweapons. if (objWeapon.Cyberware) { MessageBox.Show(LanguageManager.Instance.GetString("Message_CyberweaponNoAccessory"), LanguageManager.Instance.GetString("MessageTitle_CyberweaponNoAccessory"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Open the Weapons XML file and locate the selected Weapon. XmlDocument objXmlDocument = XmlManager.Instance.Load("weapons.xml"); XmlNode objXmlWeapon = objXmlDocument.SelectSingleNode("/chummer/weapons/weapon[name = \"" + objWeapon.Name + "\"]"); frmSelectWeaponAccessory frmPickWeaponAccessory = new frmSelectWeaponAccessory(_objCharacter); if (objXmlWeapon == null) { MessageBox.Show(LanguageManager.Instance.GetString("Message_CannotFindWeapon"), LanguageManager.Instance.GetString("MessageTitle_CannotModifyWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Make sure the Weapon allows Accessories to be added to it. bool blnAllowAccessories = false; if (objXmlWeapon["allowaccessory"] != null) { blnAllowAccessories = Convert.ToBoolean(objXmlWeapon["allowaccessory"].InnerText); } if (!blnAllowAccessories) { MessageBox.Show(LanguageManager.Instance.GetString("Message_CannotModifyWeapon"), LanguageManager.Instance.GetString("MessageTitle_CannotModifyWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else { XmlNodeList objXmlMountList = objXmlWeapon.SelectNodes("accessorymounts/mount"); string strMounts = ""; foreach (XmlNode objXmlMount in objXmlMountList) { bool blnFound = false; foreach (WeaponAccessory objMod in objWeapon.WeaponAccessories) { if (objMod.Mount == objXmlMount.InnerText) { blnFound = true; } } if (!blnFound) { strMounts += objXmlMount.InnerText + "/"; } } // Remove the trailing / if (strMounts != "" && strMounts.Contains('/')) strMounts = strMounts.Substring(0, strMounts.Length - 1); frmPickWeaponAccessory.AllowedMounts = strMounts; } frmPickWeaponAccessory.WeaponCost = objWeapon.Cost; frmPickWeaponAccessory.AccessoryMultiplier = objWeapon.AccessoryMultiplier; frmPickWeaponAccessory.ShowDialog(); if (frmPickWeaponAccessory.DialogResult == DialogResult.Cancel) return; // Locate the selected piece. objXmlWeapon = objXmlDocument.SelectSingleNode("/chummer/accessories/accessory[name = \"" + frmPickWeaponAccessory.SelectedAccessory + "\"]"); TreeNode objNode = new TreeNode(); WeaponAccessory objAccessory = new WeaponAccessory(_objCharacter); objAccessory.Create(objXmlWeapon, objNode, frmPickWeaponAccessory.SelectedMount,Convert.ToInt32(frmPickWeaponAccessory.SelectedRating)); objAccessory.Parent = objWeapon; if (objAccessory.Cost.StartsWith("Variable")) { int intMin = 0; int intMax = 0; string strCost = objAccessory.Cost.Replace("Variable(", string.Empty).Replace(")", string.Empty); if (strCost.Contains("-")) { string[] strValues = strCost.Split('-'); intMin = Convert.ToInt32(strValues[0]); intMax = Convert.ToInt32(strValues[1]); } else intMin = Convert.ToInt32(strCost.Replace("+", string.Empty)); if (intMin != 0 || intMax != 0) { frmSelectNumber frmPickNumber = new frmSelectNumber(); if (intMax == 0) intMax = 1000000; frmPickNumber.Minimum = intMin; frmPickNumber.Maximum = intMax; frmPickNumber.Description = LanguageManager.Instance.GetString("String_SelectVariableCost").Replace("{0}", objAccessory.DisplayNameShort); frmPickNumber.AllowCancel = false; frmPickNumber.ShowDialog(); objAccessory.Cost = frmPickNumber.SelectedValue.ToString(); } } objWeapon.WeaponAccessories.Add(objAccessory); objNode.ContextMenuStrip = cmsWeaponAccessory; treWeapons.SelectedNode.Nodes.Add(objNode); treWeapons.SelectedNode.Expand(); UpdateCharacterInfo(); RefreshSelectedWeapon(); if (frmPickWeaponAccessory.AddAgain) tsWeaponAddAccessory_Click(sender, e); }
private void tsWeaponAddAccessory_Click(object sender, EventArgs e) { // Make sure a parent item is selected, then open the Select Accessory window. try { if (treWeapons.SelectedNode.Level == 0) { MessageBox.Show(LanguageManager.Instance.GetString("Message_SelectWeaponAccessory"), LanguageManager.Instance.GetString("MessageTitle_SelectWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } catch { MessageBox.Show(LanguageManager.Instance.GetString("Message_SelectWeaponAccessory"), LanguageManager.Instance.GetString("MessageTitle_SelectWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Locate the Weapon that is selected in the Tree. Weapon objWeapon = _objFunctions.FindWeapon(treWeapons.SelectedNode.Tag.ToString(), _objCharacter.Weapons); // Accessories cannot be added to Cyberweapons. if (objWeapon.Cyberware) { MessageBox.Show(LanguageManager.Instance.GetString("Message_CyberweaponNoAccessory"), LanguageManager.Instance.GetString("MessageTitle_CyberweaponNoAccessory"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Open the Weapons XML file and locate the selected Weapon. XmlDocument objXmlDocument = XmlManager.Instance.Load("weapons.xml"); XmlNode objXmlWeapon = objXmlDocument.SelectSingleNode("/chummer/weapons/weapon[name = \"" + objWeapon.Name + "\"]"); frmSelectWeaponAccessory frmPickWeaponAccessory = new frmSelectWeaponAccessory(_objCharacter, true); if (objXmlWeapon == null) { MessageBox.Show(LanguageManager.Instance.GetString("Message_CannotModifyWeapon"), LanguageManager.Instance.GetString("MessageTitle_CannotModifyWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Make sure the Weapon allows Accessories to be added to it. if (!Convert.ToBoolean(objXmlWeapon["allowaccessory"].InnerText)) { MessageBox.Show(LanguageManager.Instance.GetString("Message_CannotModifyWeapon"), LanguageManager.Instance.GetString("MessageTitle_CannotModifyWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else { XmlNodeList objXmlMountList = objXmlWeapon.SelectNodes("accessorymounts/mount"); string strMounts = ""; foreach (XmlNode objXmlMount in objXmlMountList) strMounts += objXmlMount.InnerText + "/"; frmPickWeaponAccessory.AllowedMounts = strMounts; } frmPickWeaponAccessory.WeaponCost = objWeapon.Cost; frmPickWeaponAccessory.AccessoryMultiplier = objWeapon.AccessoryMultiplier; frmPickWeaponAccessory.ShowDialog(); if (frmPickWeaponAccessory.DialogResult == DialogResult.Cancel) return; // Locate the selected piece. objXmlWeapon = objXmlDocument.SelectSingleNode("/chummer/accessories/accessory[name = \"" + frmPickWeaponAccessory.SelectedAccessory + "\"]"); TreeNode objNode = new TreeNode(); WeaponAccessory objAccessory = new WeaponAccessory(_objCharacter); objAccessory.Create(objXmlWeapon, objNode, frmPickWeaponAccessory.SelectedMount); objAccessory.Parent = objWeapon; if (objAccessory.Cost.StartsWith("Variable")) { int intMin = 0; int intMax = 0; string strCost = objAccessory.Cost.Replace("Variable(", string.Empty).Replace(")", string.Empty); if (strCost.Contains("-")) { string[] strValues = strCost.Split('-'); intMin = Convert.ToInt32(strValues[0]); intMax = Convert.ToInt32(strValues[1]); } else intMin = Convert.ToInt32(strCost.Replace("+", string.Empty)); if (intMin != 0 || intMax != 0) { frmSelectNumber frmPickNumber = new frmSelectNumber(); if (intMax == 0) intMax = 1000000; frmPickNumber.Minimum = intMin; frmPickNumber.Maximum = intMax; frmPickNumber.Description = LanguageManager.Instance.GetString("String_SelectVariableCost").Replace("{0}", objAccessory.DisplayNameShort); frmPickNumber.AllowCancel = false; frmPickNumber.ShowDialog(); objAccessory.Cost = frmPickNumber.SelectedValue.ToString(); } } // Check the item's Cost and make sure the character can afford it. int intOriginalCost = objWeapon.TotalCost; objWeapon.WeaponAccessories.Add(objAccessory); int intCost = objWeapon.TotalCost - intOriginalCost; // Apply a markup if applicable. if (frmPickWeaponAccessory.Markup != 0) { double dblCost = Convert.ToDouble(intCost, GlobalOptions.Instance.CultureInfo); dblCost *= 1 + (Convert.ToDouble(frmPickWeaponAccessory.Markup, GlobalOptions.Instance.CultureInfo) / 100.0); intCost = Convert.ToInt32(dblCost); } // Multiply the cost if applicable. if (objAccessory.TotalAvail.EndsWith(LanguageManager.Instance.GetString("String_AvailRestricted")) && _objOptions.MultiplyRestrictedCost) intCost *= _objOptions.RestrictedCostMultiplier; if (objAccessory.TotalAvail.EndsWith(LanguageManager.Instance.GetString("String_AvailForbidden")) && _objOptions.MultiplyForbiddenCost) intCost *= _objOptions.ForbiddenCostMultiplier; if (!frmPickWeaponAccessory.FreeCost) { if (intCost > _objCharacter.Nuyen) { objWeapon.WeaponAccessories.Remove(objAccessory); MessageBox.Show(LanguageManager.Instance.GetString("Message_NotEnoughNuyen"), LanguageManager.Instance.GetString("MessageTitle_NotEnoughNuyen"), MessageBoxButtons.OK, MessageBoxIcon.Information); if (frmPickWeaponAccessory.AddAgain) tsWeaponAddAccessory_Click(sender, e); return; } else { // Create the Expense Log Entry. ExpenseLogEntry objExpense = new ExpenseLogEntry(); objExpense.Create(intCost * -1, LanguageManager.Instance.GetString("String_ExpensePurchaseWeaponAccessory") + " " + objAccessory.DisplayNameShort, ExpenseType.Nuyen, DateTime.Now); _objCharacter.ExpenseEntries.Add(objExpense); _objCharacter.Nuyen -= intCost; ExpenseUndo objUndo = new ExpenseUndo(); objUndo.CreateNuyen(NuyenExpenseType.AddWeaponAccessory, objAccessory.InternalId); objExpense.Undo = objUndo; } } objNode.ContextMenuStrip = cmsWeaponAccessory; treWeapons.SelectedNode.Nodes.Add(objNode); treWeapons.SelectedNode.Expand(); UpdateCharacterInfo(); RefreshSelectedWeapon(); _blnIsDirty = true; UpdateWindowTitle(); if (frmPickWeaponAccessory.AddAgain) tsWeaponAddAccessory_Click(sender, e); }
private void tsWeaponAddAccessory_Click(object sender, EventArgs e) { // Make sure a parent item is selected, then open the Select Accessory window. try { if (treWeapons.SelectedNode.Level == 0) { MessageBox.Show(LanguageManager.Instance.GetString("Message_SelectWeaponAccessory"), LanguageManager.Instance.GetString("MessageTitle_SelectWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } catch { MessageBox.Show(LanguageManager.Instance.GetString("Message_SelectWeaponAccessory"), LanguageManager.Instance.GetString("MessageTitle_SelectWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Locate the Weapon that is selected in the Tree. Weapon objWeapon = (Weapon)_objFunctions.FindEquipment(treWeapons.SelectedNode.Tag.ToString(), _objCharacter.Weapons, typeof(Weapon)); // Accessories cannot be added to Cyberweapons. if (objWeapon.Category.StartsWith("Cyberware")) { MessageBox.Show(LanguageManager.Instance.GetString("Message_CyberweaponNoAccessory"), LanguageManager.Instance.GetString("MessageTitle_CyberweaponNoAccessory"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Open the Weapons XML file and locate the selected Weapon. XmlDocument objXmlDocument = XmlManager.Instance.Load("weapons.xml"); XmlNode objXmlWeapon = objXmlDocument.SelectSingleNode("/chummer/weapons/weapon[id = \"" + objWeapon.ExternalId + "\"]"); frmSelectWeaponAccessory frmPickWeaponAccessory = new frmSelectWeaponAccessory(_objCharacter); if (objXmlWeapon == null) { MessageBox.Show(LanguageManager.Instance.GetString("Message_CannotModifyWeapon"), LanguageManager.Instance.GetString("MessageTitle_CannotModifyWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Make sure the Weapon allows Accessories to be added to it. if (!Convert.ToBoolean(objXmlWeapon["allowaccessory"].InnerText)) { MessageBox.Show(LanguageManager.Instance.GetString("Message_CannotModifyWeapon"), LanguageManager.Instance.GetString("MessageTitle_CannotModifyWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else { XmlNodeList objXmlMountList = objXmlWeapon.SelectNodes("accessorymounts/mount"); string strMounts = ""; foreach (XmlNode objXmlMount in objXmlMountList) strMounts += objXmlMount.InnerText + "/"; frmPickWeaponAccessory.AllowedMounts = strMounts; } frmPickWeaponAccessory.WeaponCost = objWeapon.Cost; frmPickWeaponAccessory.AccessoryMultiplier = objWeapon.AccessoryMultiplier; frmPickWeaponAccessory.ShowDialog(); if (frmPickWeaponAccessory.DialogResult == DialogResult.Cancel) return; // Locate the selected piece. objXmlWeapon = objXmlDocument.SelectSingleNode("/chummer/accessories/accessory[name = \"" + frmPickWeaponAccessory.SelectedAccessory + "\"]"); TreeNode objNode = new TreeNode(); WeaponAccessory objAccessory = new WeaponAccessory(_objCharacter); objAccessory.Create(objXmlWeapon, objNode, frmPickWeaponAccessory.SelectedMount); objAccessory.Parent = objWeapon; objWeapon.WeaponAccessories.Add(objAccessory); objNode.ContextMenuStrip = cmsWeaponAccessory; treWeapons.SelectedNode.Nodes.Add(objNode); treWeapons.SelectedNode.Expand(); UpdateCharacterInfo(); RefreshSelectedWeapon(); if (frmPickWeaponAccessory.AddAgain) tsWeaponAddAccessory_Click(sender, e); }
private void tsVehicleAddWeaponAccessory_Click(object sender, EventArgs e) { // Attempt to locate the selected VehicleWeapon. bool blnWeaponFound = false; Vehicle objFoundVehicle = new Vehicle(_objCharacter); Weapon objWeapon = _objFunctions.FindVehicleWeapon(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles, out objFoundVehicle); if (objWeapon != null) blnWeaponFound = true; if (!blnWeaponFound) { MessageBox.Show(LanguageManager.Instance.GetString("Message_VehicleWeaponAccessories"), LanguageManager.Instance.GetString("MessageTitle_VehicleWeaponAccessories"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Open the Weapons XML file and locate the selected Weapon. XmlDocument objXmlDocument = XmlManager.Instance.Load("weapons.xml"); XmlNode objXmlWeapon = objXmlDocument.SelectSingleNode("/chummer/weapons/weapon[name = \"" + treVehicles.SelectedNode.Text + "\"]"); frmSelectWeaponAccessory frmPickWeaponAccessory = new frmSelectWeaponAccessory(_objCharacter, true); if (objXmlWeapon == null) { MessageBox.Show(LanguageManager.Instance.GetString("Message_CannotModifyWeapon"), LanguageManager.Instance.GetString("MessageTitle_CannotModifyWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } // Make sure the Weapon allows Accessories to be added to it. if (!Convert.ToBoolean(objXmlWeapon["allowaccessory"].InnerText)) { MessageBox.Show(LanguageManager.Instance.GetString("Message_CannotModifyWeapon"), LanguageManager.Instance.GetString("MessageTitle_CannotModifyWeapon"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else { XmlNodeList objXmlMountList = objXmlWeapon.SelectNodes("accessorymounts/mount"); string strMounts = ""; foreach (XmlNode objXmlMount in objXmlMountList) { // Run through the Weapon's currenct Accessories and filter out any used up Mount points. bool blnFound = false; foreach (WeaponAccessory objCurrentAccessory in objWeapon.WeaponAccessories) { if (objCurrentAccessory.Mount == objXmlMount.InnerText) blnFound = true; } if (!blnFound) strMounts += objXmlMount.InnerText + "/"; } frmPickWeaponAccessory.AllowedMounts = strMounts; } frmPickWeaponAccessory.WeaponCost = objWeapon.Cost; frmPickWeaponAccessory.AccessoryMultiplier = objWeapon.AccessoryMultiplier; frmPickWeaponAccessory.ShowDialog(); if (frmPickWeaponAccessory.DialogResult == DialogResult.Cancel) return; // Locate the selected piece. objXmlWeapon = objXmlDocument.SelectSingleNode("/chummer/accessories/accessory[name = \"" + frmPickWeaponAccessory.SelectedAccessory + "\"]"); TreeNode objNode = new TreeNode(); WeaponAccessory objAccessory = new WeaponAccessory(_objCharacter); objAccessory.Create(objXmlWeapon, objNode, frmPickWeaponAccessory.SelectedMount); objAccessory.Parent = objWeapon; // Check the item's Cost and make sure the character can afford it. int intOriginalCost = objWeapon.TotalCost; objWeapon.WeaponAccessories.Add(objAccessory); int intCost = objWeapon.TotalCost - intOriginalCost; // Apply a markup if applicable. if (frmPickWeaponAccessory.Markup != 0) { double dblCost = Convert.ToDouble(intCost, GlobalOptions.Instance.CultureInfo); dblCost *= 1 + (Convert.ToDouble(frmPickWeaponAccessory.Markup, GlobalOptions.Instance.CultureInfo) / 100.0); intCost = Convert.ToInt32(dblCost); } // Multiply the cost if applicable. if (objAccessory.TotalAvail.EndsWith(LanguageManager.Instance.GetString("String_AvailRestricted")) && _objOptions.MultiplyRestrictedCost) intCost *= _objOptions.RestrictedCostMultiplier; if (objAccessory.TotalAvail.EndsWith(LanguageManager.Instance.GetString("String_AvailForbidden")) && _objOptions.MultiplyForbiddenCost) intCost *= _objOptions.ForbiddenCostMultiplier; if (!frmPickWeaponAccessory.FreeCost) { if (intCost > _objCharacter.Nuyen) { objWeapon.WeaponAccessories.Remove(objAccessory); MessageBox.Show(LanguageManager.Instance.GetString("Message_NotEnoughNuyen"), LanguageManager.Instance.GetString("MessageTitle_NotEnoughNuyen"), MessageBoxButtons.OK, MessageBoxIcon.Information); if (frmPickWeaponAccessory.AddAgain) tsVehicleAddWeaponAccessory_Click(sender, e); return; } else { // Create the Expense Log Entry. ExpenseLogEntry objExpense = new ExpenseLogEntry(); objExpense.Create(intCost * -1, LanguageManager.Instance.GetString("String_ExpensePurchaseVehicleWeaponAccessory") + " " + objAccessory.DisplayNameShort, ExpenseType.Nuyen, DateTime.Now); _objCharacter.ExpenseEntries.Add(objExpense); _objCharacter.Nuyen -= intCost; ExpenseUndo objUndo = new ExpenseUndo(); objUndo.CreateNuyen(NuyenExpenseType.AddVehicleWeaponAccessory, objAccessory.InternalId); objExpense.Undo = objUndo; } } objNode.ContextMenuStrip = cmsVehicleWeaponAccessory; treVehicles.SelectedNode.Nodes.Add(objNode); treVehicles.SelectedNode.Expand(); if (frmPickWeaponAccessory.AddAgain) tsVehicleAddWeaponAccessory_Click(sender, e); UpdateCharacterInfo(); _blnIsDirty = true; UpdateWindowTitle(); }