private void tsMetamagicAddArt_Click(object sender, EventArgs e) { if (treMetamagic.SelectedNode.Level != 0) return; int intGrade = 0; foreach (InitiationGrade objGrade in _objCharacter.InitiationGrades) { if (objGrade.InternalId == treMetamagic.SelectedNode.Tag.ToString()) { intGrade = objGrade.Grade; break; } } frmSelectArt frmPickArt = new frmSelectArt(_objCharacter); frmPickArt.WindowMode = frmSelectArt.Mode.Art; frmPickArt.ShowDialog(this); // Make sure a value was selected. if (frmPickArt.DialogResult == DialogResult.Cancel) return; string strArt = frmPickArt.SelectedItem; XmlDocument objXmlDocument = new XmlDocument(); XmlNode objXmlArt; TreeNode objNode = new TreeNode(); Art objArt = new Art(_objCharacter); Improvement.ImprovementSource objSource; objXmlDocument = XmlManager.Instance.Load("metamagic.xml"); objXmlArt = objXmlDocument.SelectSingleNode("/chummer/arts/art[name = \"" + strArt + "\"]"); objSource = Improvement.ImprovementSource.Metamagic; objArt.Create(objXmlArt, _objCharacter, objNode, objSource); objArt.Grade = intGrade; objNode.ContextMenuStrip = cmsInitiationNotes; if (objArt.InternalId == Guid.Empty.ToString()) return; _objCharacter.Arts.Add(objArt); treMetamagic.SelectedNode.Nodes.Add(objNode); treMetamagic.SelectedNode.Expand(); UpdateCharacterInfo(); _blnIsDirty = true; UpdateWindowTitle(); }
private void tsMetamagicAddArt_Click(object sender, EventArgs e) { // Character can only have a number of Metamagics/Echoes equal to their Initiate Grade. Additional ones cost Karma. bool blnPayWithKarma = false; string strType = ""; if (treMetamagic.SelectedNode.Level != 0) return; int intGrade = 0; foreach (InitiationGrade objGrade in _objCharacter.InitiationGrades) { if (objGrade.InternalId == treMetamagic.SelectedNode.Tag.ToString()) { intGrade = objGrade.Grade; break; } } if (blnPayWithKarma && _objCharacter.Karma < _objOptions.KarmaMetamagic) { // Make sure the Karma expense would not put them over the limit. MessageBox.Show(LanguageManager.Instance.GetString("Message_NotEnoughKarma"), LanguageManager.Instance.GetString("MessageTitle_NotEnoughKarma"), MessageBoxButtons.OK, MessageBoxIcon.Information); return; } frmSelectArt frmPickArt = new frmSelectArt(_objCharacter); frmPickArt.WindowMode = frmSelectArt.Mode.Art; frmPickArt.ShowDialog(this); // Make sure a value was selected. if (frmPickArt.DialogResult == DialogResult.Cancel) return; string strArt = frmPickArt.SelectedItem; XmlDocument objXmlDocument = new XmlDocument(); XmlNode objXmlArt; TreeNode objNode = new TreeNode(); Art objArt = new Art(_objCharacter); Improvement.ImprovementSource objSource; objXmlDocument = XmlManager.Instance.Load("metamagic.xml"); objXmlArt = objXmlDocument.SelectSingleNode("/chummer/arts/art[name = \"" + strArt + "\"]"); objSource = Improvement.ImprovementSource.Metamagic; objArt.Create(objXmlArt, _objCharacter, objNode, objSource); objArt.Grade = intGrade; objNode.ContextMenuStrip = cmsInitiationNotes; if (objArt.InternalId == Guid.Empty.ToString()) return; _objCharacter.Arts.Add(objArt); if (blnPayWithKarma) { // Create the Expense Log Entry. ExpenseLogEntry objEntry = new ExpenseLogEntry(); objEntry.Create(_objOptions.KarmaMetamagic * -1, strType + " " + frmPickArt.SelectedItem, ExpenseType.Karma, DateTime.Now); _objCharacter.ExpenseEntries.Add(objEntry); ExpenseUndo objUndo = new ExpenseUndo(); objUndo.CreateKarma(KarmaExpenseType.AddMetamagic, objArt.InternalId); objEntry.Undo = objUndo; // Adjust the character's Karma total. _objCharacter.Karma -= _objOptions.KarmaMetamagic; } treMetamagic.SelectedNode.Nodes.Add(objNode); treMetamagic.SelectedNode.Expand(); UpdateCharacterInfo(); _blnIsDirty = true; UpdateWindowTitle(); }