From dcf6f37a941a2c7b0fb8c69f6b15fed8a2f1f2ce Mon Sep 17 00:00:00 2001 From: KorGgenT Date: Thu, 28 Nov 2019 21:43:11 -0500 Subject: [PATCH] MonsterForm updates - combat effectiveness panel with various controls - path settings panel --- MonsterForm.Designer.cs | 1117 +++++++++++++++-- MonsterForm.cs | 78 +- MonsterForm.resx | 54 + .../DataSources/PathSettingsData.datasource | 10 + cdda-item-creator.csproj | 2 + cdda-item-creator.pdb | Bin 126464 -> 144896 bytes custom_json.cs | 44 + mtype.cs | 30 +- spell_form.cs | 4 +- 9 files changed, 1222 insertions(+), 117 deletions(-) create mode 100644 Properties/DataSources/PathSettingsData.datasource create mode 100644 custom_json.cs diff --git a/MonsterForm.Designer.cs b/MonsterForm.Designer.cs index 2c5e84a..3cf65f8 100644 --- a/MonsterForm.Designer.cs +++ b/MonsterForm.Designer.cs @@ -47,36 +47,121 @@ private void InitializeComponent() this.symbolTextBox = new System.Windows.Forms.TextBox(); this.symbolLabel = new System.Windows.Forms.Label(); this.armorPanel = new System.Windows.Forms.Panel(); - this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); - this.numericUpDown2 = new System.Windows.Forms.NumericUpDown(); - this.numericUpDown3 = new System.Windows.Forms.NumericUpDown(); - this.numericUpDown4 = new System.Windows.Forms.NumericUpDown(); - this.numericUpDown5 = new System.Windows.Forms.NumericUpDown(); - this.armorLabel = new System.Windows.Forms.Label(); - this.bashArmorLabel = new System.Windows.Forms.Label(); - this.cutArmorLabel = new System.Windows.Forms.Label(); - this.stabArmorLabel = new System.Windows.Forms.Label(); - this.acidArmorLabel = new System.Windows.Forms.Label(); this.fireArmorLabel = new System.Windows.Forms.Label(); + this.acidArmorLabel = new System.Windows.Forms.Label(); + this.stabArmorLabel = new System.Windows.Forms.Label(); + this.cutArmorLabel = new System.Windows.Forms.Label(); + this.bashArmorLabel = new System.Windows.Forms.Label(); + this.armorLabel = new System.Windows.Forms.Label(); + this.stabArmorUpDown = new System.Windows.Forms.NumericUpDown(); + this.acidArmorUpDown = new System.Windows.Forms.NumericUpDown(); + this.cutArmorUpDown = new System.Windows.Forms.NumericUpDown(); + this.fireArmorUpDown = new System.Windows.Forms.NumericUpDown(); + this.bashArmorUpDown = new System.Windows.Forms.NumericUpDown(); this.bodytypeComboBox = new System.Windows.Forms.ComboBox(); this.bodytypeId = new System.Windows.Forms.Label(); this.descriptionTextBox = new System.Windows.Forms.TextBox(); this.descriptionLabel = new System.Windows.Forms.Label(); this.colorComboBox = new System.Windows.Forms.ComboBox(); this.colorLabel = new System.Windows.Forms.Label(); + this.materialDataGrid = new System.Windows.Forms.DataGridView(); + this.Material = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.materialBindingSource = new System.Windows.Forms.BindingSource(this.components); + this.speciesDataGrid = new System.Windows.Forms.DataGridView(); + this.species = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.categoriesDataGrid = new System.Windows.Forms.DataGridView(); + this.Categories = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.label1 = new System.Windows.Forms.Label(); + this.defaultFactionLabel = new System.Windows.Forms.Label(); + this.defaultFactionTextBox = new System.Windows.Forms.TextBox(); + this.looksLikeTextBox = new System.Windows.Forms.TextBox(); + this.diffUpDown = new System.Windows.Forms.NumericUpDown(); + this.diffLabel = new System.Windows.Forms.Label(); + this.difficultyLabel = new System.Windows.Forms.Label(); + this.aggressionUpDown = new System.Windows.Forms.NumericUpDown(); + this.aggressionLabel = new System.Windows.Forms.Label(); + this.combatEffectivenessPanel = new System.Windows.Forms.Panel(); + this.damageInstanceTypeComboBox = new System.Windows.Forms.ComboBox(); + this.damageInstanceDataGrid = new System.Windows.Forms.DataGridView(); + this.Type = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Amount = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.ArmorPenetration = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.ArmorMultiplier = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.DamageMultiplier = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dodgeLabel = new System.Windows.Forms.Label(); + this.dodgeUpDown = new System.Windows.Forms.NumericUpDown(); + this.grabStrengthLabel = new System.Windows.Forms.Label(); + this.grabStrengthUpDown = new System.Windows.Forms.NumericUpDown(); + this.moraleLabel = new System.Windows.Forms.Label(); + this.moraleUpDown = new System.Windows.Forms.NumericUpDown(); + this.speedLabel = new System.Windows.Forms.Label(); + this.speedUpDown = new System.Windows.Forms.NumericUpDown(); + this.damageInstanceArmorPenetrationUpDown = new System.Windows.Forms.NumericUpDown(); + this.damageInstanceAmountUpDown = new System.Windows.Forms.NumericUpDown(); + this.damageInstanceArmorMultiplierUpDown = new System.Windows.Forms.NumericUpDown(); + this.damageInstanceDamageMultiplierUpDown = new System.Windows.Forms.NumericUpDown(); + this.damageInstanceAddButton = new System.Windows.Forms.Button(); + this.meleeDamageLabel = new System.Windows.Forms.Label(); + this.bonusCutUpDown = new System.Windows.Forms.NumericUpDown(); + this.bonusCutLabel = new System.Windows.Forms.Label(); + this.meleeDiceLabel = new System.Windows.Forms.Label(); + this.meleeDiceUpdown = new System.Windows.Forms.NumericUpDown(); + this.meleeDiceSidesUpDown = new System.Windows.Forms.NumericUpDown(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.meleeDamageRangeLabel = new System.Windows.Forms.Label(); + this.meleeSkillUpDown = new System.Windows.Forms.NumericUpDown(); + this.meleeSkillLabel = new System.Windows.Forms.Label(); this.mtypeBindingSource = new System.Windows.Forms.BindingSource(this.components); this.monsterNameStringsBindingSource = new System.Windows.Forms.BindingSource(this.components); + this.pathSettingsPanel = new System.Windows.Forms.Panel(); + this.pathSettingsMaxDistUpDown = new System.Windows.Forms.NumericUpDown(); + this.pathSettingsMaxLengthUpDown = new System.Windows.Forms.NumericUpDown(); + this.pathSettingsBashStrengthUpDown = new System.Windows.Forms.NumericUpDown(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.checkBox3 = new System.Windows.Forms.CheckBox(); + this.label7 = new System.Windows.Forms.Label(); + this.pathSettingsDataBindingSource = new System.Windows.Forms.BindingSource(this.components); ((System.ComponentModel.ISupportInitialize)(this.hpUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.volumeUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.weightUpDown)).BeginInit(); this.armorPanel.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDown3)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDown4)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDown5)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.stabArmorUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.acidArmorUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.cutArmorUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.fireArmorUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bashArmorUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.materialDataGrid)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.materialBindingSource)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.speciesDataGrid)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.categoriesDataGrid)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.diffUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.aggressionUpDown)).BeginInit(); + this.combatEffectivenessPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.damageInstanceDataGrid)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dodgeUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.grabStrengthUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.moraleUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.speedUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.damageInstanceArmorPenetrationUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.damageInstanceAmountUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.damageInstanceArmorMultiplierUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.damageInstanceDamageMultiplierUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bonusCutUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.meleeDiceUpdown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.meleeDiceSidesUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.meleeSkillUpDown)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.mtypeBindingSource)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.monsterNameStringsBindingSource)).BeginInit(); + this.pathSettingsPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pathSettingsMaxDistUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pathSettingsMaxLengthUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pathSettingsBashStrengthUpDown)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pathSettingsDataBindingSource)).BeginInit(); this.SuspendLayout(); // // nameTextBox @@ -143,7 +228,7 @@ private void InitializeComponent() // hpUpDown // this.hpUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "Hp", true)); - this.hpUpDown.Location = new System.Drawing.Point(224, 64); + this.hpUpDown.Location = new System.Drawing.Point(81, 8); this.hpUpDown.Maximum = new decimal(new int[] { 99999, 0, @@ -166,7 +251,7 @@ private void InitializeComponent() // hpLabel // this.hpLabel.AutoSize = true; - this.hpLabel.Location = new System.Drawing.Point(226, 48); + this.hpLabel.Location = new System.Drawing.Point(53, 10); this.hpLabel.Name = "hpLabel"; this.hpLabel.Size = new System.Drawing.Size(22, 13); this.hpLabel.TabIndex = 8; @@ -284,55 +369,60 @@ private void InitializeComponent() this.armorPanel.Controls.Add(this.cutArmorLabel); this.armorPanel.Controls.Add(this.bashArmorLabel); this.armorPanel.Controls.Add(this.armorLabel); - this.armorPanel.Controls.Add(this.numericUpDown5); - this.armorPanel.Controls.Add(this.numericUpDown4); - this.armorPanel.Controls.Add(this.numericUpDown3); - this.armorPanel.Controls.Add(this.numericUpDown2); - this.armorPanel.Controls.Add(this.numericUpDown1); - this.armorPanel.Location = new System.Drawing.Point(347, 26); + this.armorPanel.Controls.Add(this.stabArmorUpDown); + this.armorPanel.Controls.Add(this.acidArmorUpDown); + this.armorPanel.Controls.Add(this.cutArmorUpDown); + this.armorPanel.Controls.Add(this.fireArmorUpDown); + this.armorPanel.Controls.Add(this.bashArmorUpDown); + this.armorPanel.Location = new System.Drawing.Point(347, 25); this.armorPanel.Name = "armorPanel"; this.armorPanel.Size = new System.Drawing.Size(93, 150); this.armorPanel.TabIndex = 50; // - // numericUpDown1 + // fireArmorLabel // - this.numericUpDown1.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "ArmorBash", true)); - this.numericUpDown1.Location = new System.Drawing.Point(36, 19); - this.numericUpDown1.Name = "numericUpDown1"; - this.numericUpDown1.Size = new System.Drawing.Size(50, 20); - this.numericUpDown1.TabIndex = 0; + this.fireArmorLabel.AutoSize = true; + this.fireArmorLabel.Location = new System.Drawing.Point(10, 127); + this.fireArmorLabel.Name = "fireArmorLabel"; + this.fireArmorLabel.Size = new System.Drawing.Size(24, 13); + this.fireArmorLabel.TabIndex = 10; + this.fireArmorLabel.Text = "Fire"; // - // numericUpDown2 + // acidArmorLabel // - this.numericUpDown2.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "ArmorFire", true)); - this.numericUpDown2.Location = new System.Drawing.Point(36, 124); - this.numericUpDown2.Name = "numericUpDown2"; - this.numericUpDown2.Size = new System.Drawing.Size(50, 20); - this.numericUpDown2.TabIndex = 1; + this.acidArmorLabel.AutoSize = true; + this.acidArmorLabel.Location = new System.Drawing.Point(6, 101); + this.acidArmorLabel.Name = "acidArmorLabel"; + this.acidArmorLabel.Size = new System.Drawing.Size(28, 13); + this.acidArmorLabel.TabIndex = 9; + this.acidArmorLabel.Text = "Acid"; // - // numericUpDown3 + // stabArmorLabel // - this.numericUpDown3.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "ArmorCut", true)); - this.numericUpDown3.Location = new System.Drawing.Point(36, 45); - this.numericUpDown3.Name = "numericUpDown3"; - this.numericUpDown3.Size = new System.Drawing.Size(50, 20); - this.numericUpDown3.TabIndex = 2; + this.stabArmorLabel.AutoSize = true; + this.stabArmorLabel.Location = new System.Drawing.Point(5, 75); + this.stabArmorLabel.Name = "stabArmorLabel"; + this.stabArmorLabel.Size = new System.Drawing.Size(29, 13); + this.stabArmorLabel.TabIndex = 8; + this.stabArmorLabel.Text = "Stab"; // - // numericUpDown4 + // cutArmorLabel // - this.numericUpDown4.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "ArmorAcid", true)); - this.numericUpDown4.Location = new System.Drawing.Point(36, 98); - this.numericUpDown4.Name = "numericUpDown4"; - this.numericUpDown4.Size = new System.Drawing.Size(50, 20); - this.numericUpDown4.TabIndex = 3; + this.cutArmorLabel.AutoSize = true; + this.cutArmorLabel.Location = new System.Drawing.Point(11, 48); + this.cutArmorLabel.Name = "cutArmorLabel"; + this.cutArmorLabel.Size = new System.Drawing.Size(23, 13); + this.cutArmorLabel.TabIndex = 7; + this.cutArmorLabel.Text = "Cut"; // - // numericUpDown5 + // bashArmorLabel // - this.numericUpDown5.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "ArmorStab", true)); - this.numericUpDown5.Location = new System.Drawing.Point(36, 72); - this.numericUpDown5.Name = "numericUpDown5"; - this.numericUpDown5.Size = new System.Drawing.Size(50, 20); - this.numericUpDown5.TabIndex = 4; + this.bashArmorLabel.AutoSize = true; + this.bashArmorLabel.Location = new System.Drawing.Point(3, 22); + this.bashArmorLabel.Name = "bashArmorLabel"; + this.bashArmorLabel.Size = new System.Drawing.Size(31, 13); + this.bashArmorLabel.TabIndex = 6; + this.bashArmorLabel.Text = "Bash"; // // armorLabel // @@ -344,50 +434,45 @@ private void InitializeComponent() this.armorLabel.TabIndex = 5; this.armorLabel.Text = "Armor"; // - // bashArmorLabel + // stabArmorUpDown // - this.bashArmorLabel.AutoSize = true; - this.bashArmorLabel.Location = new System.Drawing.Point(3, 22); - this.bashArmorLabel.Name = "bashArmorLabel"; - this.bashArmorLabel.Size = new System.Drawing.Size(31, 13); - this.bashArmorLabel.TabIndex = 6; - this.bashArmorLabel.Text = "Bash"; + this.stabArmorUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "ArmorStab", true)); + this.stabArmorUpDown.Location = new System.Drawing.Point(36, 72); + this.stabArmorUpDown.Name = "stabArmorUpDown"; + this.stabArmorUpDown.Size = new System.Drawing.Size(50, 20); + this.stabArmorUpDown.TabIndex = 4; // - // cutArmorLabel + // acidArmorUpDown // - this.cutArmorLabel.AutoSize = true; - this.cutArmorLabel.Location = new System.Drawing.Point(11, 48); - this.cutArmorLabel.Name = "cutArmorLabel"; - this.cutArmorLabel.Size = new System.Drawing.Size(23, 13); - this.cutArmorLabel.TabIndex = 7; - this.cutArmorLabel.Text = "Cut"; + this.acidArmorUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "ArmorAcid", true)); + this.acidArmorUpDown.Location = new System.Drawing.Point(36, 98); + this.acidArmorUpDown.Name = "acidArmorUpDown"; + this.acidArmorUpDown.Size = new System.Drawing.Size(50, 20); + this.acidArmorUpDown.TabIndex = 3; // - // stabArmorLabel + // cutArmorUpDown // - this.stabArmorLabel.AutoSize = true; - this.stabArmorLabel.Location = new System.Drawing.Point(5, 75); - this.stabArmorLabel.Name = "stabArmorLabel"; - this.stabArmorLabel.Size = new System.Drawing.Size(29, 13); - this.stabArmorLabel.TabIndex = 8; - this.stabArmorLabel.Text = "Stab"; + this.cutArmorUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "ArmorCut", true)); + this.cutArmorUpDown.Location = new System.Drawing.Point(36, 45); + this.cutArmorUpDown.Name = "cutArmorUpDown"; + this.cutArmorUpDown.Size = new System.Drawing.Size(50, 20); + this.cutArmorUpDown.TabIndex = 2; // - // acidArmorLabel + // fireArmorUpDown // - this.acidArmorLabel.AutoSize = true; - this.acidArmorLabel.Location = new System.Drawing.Point(6, 101); - this.acidArmorLabel.Name = "acidArmorLabel"; - this.acidArmorLabel.Size = new System.Drawing.Size(28, 13); - this.acidArmorLabel.TabIndex = 9; - this.acidArmorLabel.Text = "Acid"; + this.fireArmorUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "ArmorFire", true)); + this.fireArmorUpDown.Location = new System.Drawing.Point(36, 124); + this.fireArmorUpDown.Name = "fireArmorUpDown"; + this.fireArmorUpDown.Size = new System.Drawing.Size(50, 20); + this.fireArmorUpDown.TabIndex = 1; // - // fireArmorLabel + // bashArmorUpDown // - this.fireArmorLabel.AutoSize = true; - this.fireArmorLabel.Location = new System.Drawing.Point(10, 127); - this.fireArmorLabel.Name = "fireArmorLabel"; - this.fireArmorLabel.Size = new System.Drawing.Size(24, 13); - this.fireArmorLabel.TabIndex = 10; - this.fireArmorLabel.Text = "Fire"; + this.bashArmorUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "ArmorBash", true)); + this.bashArmorUpDown.Location = new System.Drawing.Point(36, 19); + this.bashArmorUpDown.Name = "bashArmorUpDown"; + this.bashArmorUpDown.Size = new System.Drawing.Size(50, 20); + this.bashArmorUpDown.TabIndex = 0; // // bodytypeComboBox // @@ -409,7 +494,7 @@ private void InitializeComponent() // bodytypeId // this.bodytypeId.AutoSize = true; - this.bodytypeId.Location = new System.Drawing.Point(119, 48); + this.bodytypeId.Location = new System.Drawing.Point(119, 49); this.bodytypeId.Name = "bodytypeId"; this.bodytypeId.Size = new System.Drawing.Size(58, 13); this.bodytypeId.TabIndex = 52; @@ -418,7 +503,7 @@ private void InitializeComponent() // descriptionTextBox // this.descriptionTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.mtypeBindingSource, "Description", true)); - this.descriptionTextBox.Location = new System.Drawing.Point(12, 104); + this.descriptionTextBox.Location = new System.Drawing.Point(12, 142); this.descriptionTextBox.Multiline = true; this.descriptionTextBox.Name = "descriptionTextBox"; this.descriptionTextBox.Size = new System.Drawing.Size(206, 72); @@ -427,7 +512,7 @@ private void InitializeComponent() // descriptionLabel // this.descriptionLabel.AutoSize = true; - this.descriptionLabel.Location = new System.Drawing.Point(12, 88); + this.descriptionLabel.Location = new System.Drawing.Point(12, 126); this.descriptionLabel.Name = "descriptionLabel"; this.descriptionLabel.Size = new System.Drawing.Size(60, 13); this.descriptionLabel.TabIndex = 54; @@ -451,6 +536,597 @@ private void InitializeComponent() this.colorLabel.TabIndex = 56; this.colorLabel.Text = "Color"; // + // materialDataGrid + // + this.materialDataGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.materialDataGrid.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Material}); + this.materialDataGrid.Location = new System.Drawing.Point(12, 220); + this.materialDataGrid.Name = "materialDataGrid"; + this.materialDataGrid.Size = new System.Drawing.Size(206, 68); + this.materialDataGrid.TabIndex = 57; + // + // Material + // + this.Material.HeaderText = "Material"; + this.Material.Name = "Material"; + this.Material.Width = 130; + // + // materialBindingSource + // + this.materialBindingSource.DataMember = "Material"; + this.materialBindingSource.DataSource = this.mtypeBindingSource; + // + // speciesDataGrid + // + this.speciesDataGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.speciesDataGrid.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.species}); + this.speciesDataGrid.Location = new System.Drawing.Point(12, 294); + this.speciesDataGrid.Name = "speciesDataGrid"; + this.speciesDataGrid.Size = new System.Drawing.Size(206, 68); + this.speciesDataGrid.TabIndex = 58; + // + // species + // + this.species.HeaderText = "Species"; + this.species.Name = "species"; + this.species.Width = 130; + // + // categoriesDataGrid + // + this.categoriesDataGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.categoriesDataGrid.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Categories}); + this.categoriesDataGrid.Location = new System.Drawing.Point(12, 368); + this.categoriesDataGrid.Name = "categoriesDataGrid"; + this.categoriesDataGrid.Size = new System.Drawing.Size(206, 68); + this.categoriesDataGrid.TabIndex = 59; + // + // Categories + // + this.Categories.HeaderText = "Categories"; + this.Categories.Name = "Categories"; + this.Categories.Width = 130; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(119, 88); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(59, 13); + this.label1.TabIndex = 63; + this.label1.Text = "Looks Like"; + // + // defaultFactionLabel + // + this.defaultFactionLabel.AutoSize = true; + this.defaultFactionLabel.Location = new System.Drawing.Point(12, 87); + this.defaultFactionLabel.Name = "defaultFactionLabel"; + this.defaultFactionLabel.Size = new System.Drawing.Size(79, 13); + this.defaultFactionLabel.TabIndex = 61; + this.defaultFactionLabel.Text = "Default Faction"; + // + // defaultFactionTextBox + // + this.defaultFactionTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.mtypeBindingSource, "DefaultFaction", true)); + this.defaultFactionTextBox.Location = new System.Drawing.Point(12, 103); + this.defaultFactionTextBox.Name = "defaultFactionTextBox"; + this.defaultFactionTextBox.Size = new System.Drawing.Size(100, 20); + this.defaultFactionTextBox.TabIndex = 60; + // + // looksLikeTextBox + // + this.looksLikeTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.mtypeBindingSource, "LooksLike", true)); + this.looksLikeTextBox.Location = new System.Drawing.Point(118, 103); + this.looksLikeTextBox.Name = "looksLikeTextBox"; + this.looksLikeTextBox.Size = new System.Drawing.Size(100, 20); + this.looksLikeTextBox.TabIndex = 64; + // + // diffUpDown + // + this.diffUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "Diff", true)); + this.diffUpDown.Location = new System.Drawing.Point(224, 179); + this.diffUpDown.Maximum = new decimal(new int[] { + 99999, + 0, + 0, + 0}); + this.diffUpDown.Minimum = new decimal(new int[] { + 99999, + 0, + 0, + -2147483648}); + this.diffUpDown.Name = "diffUpDown"; + this.diffUpDown.Size = new System.Drawing.Size(58, 20); + this.diffUpDown.TabIndex = 65; + // + // diffLabel + // + this.diffLabel.AutoSize = true; + this.diffLabel.Location = new System.Drawing.Point(218, 166); + this.diffLabel.Name = "diffLabel"; + this.diffLabel.Size = new System.Drawing.Size(87, 13); + this.diffLabel.TabIndex = 66; + this.diffLabel.Text = "Difficulty Modifier"; + // + // difficultyLabel + // + this.difficultyLabel.AutoSize = true; + this.difficultyLabel.Location = new System.Drawing.Point(443, 9); + this.difficultyLabel.Name = "difficultyLabel"; + this.difficultyLabel.Size = new System.Drawing.Size(182, 13); + this.difficultyLabel.TabIndex = 67; + this.difficultyLabel.Text = "Calculated Difficulty (click to update):"; + this.difficultyLabel.Click += new System.EventHandler(this.difficultyLabel_Click); + // + // aggressionUpDown + // + this.aggressionUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "Aggression", true)); + this.aggressionUpDown.Location = new System.Drawing.Point(81, 59); + this.aggressionUpDown.Minimum = new decimal(new int[] { + 100, + 0, + 0, + -2147483648}); + this.aggressionUpDown.Name = "aggressionUpDown"; + this.aggressionUpDown.Size = new System.Drawing.Size(58, 20); + this.aggressionUpDown.TabIndex = 68; + // + // aggressionLabel + // + this.aggressionLabel.AutoSize = true; + this.aggressionLabel.Location = new System.Drawing.Point(18, 60); + this.aggressionLabel.Name = "aggressionLabel"; + this.aggressionLabel.Size = new System.Drawing.Size(59, 13); + this.aggressionLabel.TabIndex = 69; + this.aggressionLabel.Text = "Aggression"; + // + // combatEffectivenessPanel + // + this.combatEffectivenessPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.combatEffectivenessPanel.Controls.Add(this.meleeSkillLabel); + this.combatEffectivenessPanel.Controls.Add(this.meleeSkillUpDown); + this.combatEffectivenessPanel.Controls.Add(this.meleeDamageRangeLabel); + this.combatEffectivenessPanel.Controls.Add(this.label3); + this.combatEffectivenessPanel.Controls.Add(this.label2); + this.combatEffectivenessPanel.Controls.Add(this.meleeDiceSidesUpDown); + this.combatEffectivenessPanel.Controls.Add(this.meleeDiceUpdown); + this.combatEffectivenessPanel.Controls.Add(this.meleeDiceLabel); + this.combatEffectivenessPanel.Controls.Add(this.bonusCutLabel); + this.combatEffectivenessPanel.Controls.Add(this.bonusCutUpDown); + this.combatEffectivenessPanel.Controls.Add(this.meleeDamageLabel); + this.combatEffectivenessPanel.Controls.Add(this.damageInstanceAddButton); + this.combatEffectivenessPanel.Controls.Add(this.damageInstanceDamageMultiplierUpDown); + this.combatEffectivenessPanel.Controls.Add(this.damageInstanceArmorMultiplierUpDown); + this.combatEffectivenessPanel.Controls.Add(this.damageInstanceAmountUpDown); + this.combatEffectivenessPanel.Controls.Add(this.damageInstanceArmorPenetrationUpDown); + this.combatEffectivenessPanel.Controls.Add(this.damageInstanceTypeComboBox); + this.combatEffectivenessPanel.Controls.Add(this.damageInstanceDataGrid); + this.combatEffectivenessPanel.Controls.Add(this.dodgeLabel); + this.combatEffectivenessPanel.Controls.Add(this.dodgeUpDown); + this.combatEffectivenessPanel.Controls.Add(this.grabStrengthLabel); + this.combatEffectivenessPanel.Controls.Add(this.grabStrengthUpDown); + this.combatEffectivenessPanel.Controls.Add(this.moraleLabel); + this.combatEffectivenessPanel.Controls.Add(this.moraleUpDown); + this.combatEffectivenessPanel.Controls.Add(this.speedLabel); + this.combatEffectivenessPanel.Controls.Add(this.aggressionLabel); + this.combatEffectivenessPanel.Controls.Add(this.speedUpDown); + this.combatEffectivenessPanel.Controls.Add(this.aggressionUpDown); + this.combatEffectivenessPanel.Controls.Add(this.hpUpDown); + this.combatEffectivenessPanel.Controls.Add(this.hpLabel); + this.combatEffectivenessPanel.Location = new System.Drawing.Point(229, 205); + this.combatEffectivenessPanel.Name = "combatEffectivenessPanel"; + this.combatEffectivenessPanel.Size = new System.Drawing.Size(530, 199); + this.combatEffectivenessPanel.TabIndex = 70; + // + // damageInstanceTypeComboBox + // + this.damageInstanceTypeComboBox.AutoCompleteCustomSource.AddRange(new string[] { + "true", + "biological", + "bash", + "cut", + "acid", + "stab", + "heat", + "cold", + "electric"}); + this.damageInstanceTypeComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.damageInstanceTypeComboBox.Items.AddRange(new object[] { + "true", + "biological", + "bash", + "cut", + "acid", + "stab", + "heat", + "cold", + "electric"}); + this.damageInstanceTypeComboBox.Location = new System.Drawing.Point(186, 23); + this.damageInstanceTypeComboBox.Name = "damageInstanceTypeComboBox"; + this.damageInstanceTypeComboBox.Size = new System.Drawing.Size(67, 21); + this.damageInstanceTypeComboBox.TabIndex = 71; + // + // damageInstanceDataGrid + // + this.damageInstanceDataGrid.AllowUserToAddRows = false; + this.damageInstanceDataGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.damageInstanceDataGrid.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Type, + this.Amount, + this.ArmorPenetration, + this.ArmorMultiplier, + this.DamageMultiplier}); + this.damageInstanceDataGrid.Location = new System.Drawing.Point(145, 46); + this.damageInstanceDataGrid.Name = "damageInstanceDataGrid"; + this.damageInstanceDataGrid.ReadOnly = true; + this.damageInstanceDataGrid.Size = new System.Drawing.Size(370, 122); + this.damageInstanceDataGrid.TabIndex = 76; + // + // Type + // + this.Type.HeaderText = "Type"; + this.Type.Name = "Type"; + this.Type.ReadOnly = true; + this.Type.Width = 65; + // + // Amount + // + this.Amount.HeaderText = "Amount"; + this.Amount.Name = "Amount"; + this.Amount.ReadOnly = true; + this.Amount.Width = 50; + // + // ArmorPenetration + // + this.ArmorPenetration.HeaderText = "Armor Penetration"; + this.ArmorPenetration.Name = "ArmorPenetration"; + this.ArmorPenetration.ReadOnly = true; + this.ArmorPenetration.Width = 65; + // + // ArmorMultiplier + // + this.ArmorMultiplier.HeaderText = "Armor Multiplier"; + this.ArmorMultiplier.Name = "ArmorMultiplier"; + this.ArmorMultiplier.ReadOnly = true; + this.ArmorMultiplier.Width = 65; + // + // DamageMultiplier + // + this.DamageMultiplier.HeaderText = "Damage Multiplier"; + this.DamageMultiplier.Name = "DamageMultiplier"; + this.DamageMultiplier.ReadOnly = true; + this.DamageMultiplier.Width = 65; + // + // dodgeLabel + // + this.dodgeLabel.AutoSize = true; + this.dodgeLabel.Location = new System.Drawing.Point(36, 137); + this.dodgeLabel.Name = "dodgeLabel"; + this.dodgeLabel.Size = new System.Drawing.Size(39, 13); + this.dodgeLabel.TabIndex = 75; + this.dodgeLabel.Text = "Dodge"; + // + // dodgeUpDown + // + this.dodgeUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "Dodge", true)); + this.dodgeUpDown.Location = new System.Drawing.Point(81, 137); + this.dodgeUpDown.Maximum = new decimal(new int[] { + 99999, + 0, + 0, + 0}); + this.dodgeUpDown.Name = "dodgeUpDown"; + this.dodgeUpDown.Size = new System.Drawing.Size(58, 20); + this.dodgeUpDown.TabIndex = 74; + // + // grabStrengthLabel + // + this.grabStrengthLabel.AutoSize = true; + this.grabStrengthLabel.Location = new System.Drawing.Point(2, 113); + this.grabStrengthLabel.Name = "grabStrengthLabel"; + this.grabStrengthLabel.Size = new System.Drawing.Size(73, 13); + this.grabStrengthLabel.TabIndex = 73; + this.grabStrengthLabel.Text = "Grab Strength"; + // + // grabStrengthUpDown + // + this.grabStrengthUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "GrabStrength", true)); + this.grabStrengthUpDown.Location = new System.Drawing.Point(81, 111); + this.grabStrengthUpDown.Maximum = new decimal(new int[] { + 99999, + 0, + 0, + 0}); + this.grabStrengthUpDown.Minimum = new decimal(new int[] { + 99999, + 0, + 0, + -2147483648}); + this.grabStrengthUpDown.Name = "grabStrengthUpDown"; + this.grabStrengthUpDown.Size = new System.Drawing.Size(58, 20); + this.grabStrengthUpDown.TabIndex = 72; + // + // moraleLabel + // + this.moraleLabel.AutoSize = true; + this.moraleLabel.Location = new System.Drawing.Point(36, 87); + this.moraleLabel.Name = "moraleLabel"; + this.moraleLabel.Size = new System.Drawing.Size(39, 13); + this.moraleLabel.TabIndex = 71; + this.moraleLabel.Text = "Morale"; + // + // moraleUpDown + // + this.moraleUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "Morale", true)); + this.moraleUpDown.Location = new System.Drawing.Point(81, 85); + this.moraleUpDown.Maximum = new decimal(new int[] { + 99999, + 0, + 0, + 0}); + this.moraleUpDown.Minimum = new decimal(new int[] { + 99999, + 0, + 0, + -2147483648}); + this.moraleUpDown.Name = "moraleUpDown"; + this.moraleUpDown.Size = new System.Drawing.Size(58, 20); + this.moraleUpDown.TabIndex = 70; + // + // speedLabel + // + this.speedLabel.AutoSize = true; + this.speedLabel.Location = new System.Drawing.Point(38, 36); + this.speedLabel.Name = "speedLabel"; + this.speedLabel.Size = new System.Drawing.Size(38, 13); + this.speedLabel.TabIndex = 1; + this.speedLabel.Text = "Speed"; + // + // speedUpDown + // + this.speedUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "Speed", true)); + this.speedUpDown.Location = new System.Drawing.Point(81, 34); + this.speedUpDown.Maximum = new decimal(new int[] { + 99999, + 0, + 0, + 0}); + this.speedUpDown.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.speedUpDown.Name = "speedUpDown"; + this.speedUpDown.Size = new System.Drawing.Size(58, 20); + this.speedUpDown.TabIndex = 0; + this.speedUpDown.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // damageInstanceArmorPenetrationUpDown + // + this.damageInstanceArmorPenetrationUpDown.Location = new System.Drawing.Point(303, 24); + this.damageInstanceArmorPenetrationUpDown.Maximum = new decimal(new int[] { + 99999, + 0, + 0, + 0}); + this.damageInstanceArmorPenetrationUpDown.Name = "damageInstanceArmorPenetrationUpDown"; + this.damageInstanceArmorPenetrationUpDown.Size = new System.Drawing.Size(58, 20); + this.damageInstanceArmorPenetrationUpDown.TabIndex = 77; + // + // damageInstanceAmountUpDown + // + this.damageInstanceAmountUpDown.Location = new System.Drawing.Point(259, 24); + this.damageInstanceAmountUpDown.Maximum = new decimal(new int[] { + 99999, + 0, + 0, + 0}); + this.damageInstanceAmountUpDown.Name = "damageInstanceAmountUpDown"; + this.damageInstanceAmountUpDown.Size = new System.Drawing.Size(38, 20); + this.damageInstanceAmountUpDown.TabIndex = 78; + // + // damageInstanceArmorMultiplierUpDown + // + this.damageInstanceArmorMultiplierUpDown.DecimalPlaces = 3; + this.damageInstanceArmorMultiplierUpDown.Increment = new decimal(new int[] { + 5, + 0, + 0, + 131072}); + this.damageInstanceArmorMultiplierUpDown.Location = new System.Drawing.Point(367, 24); + this.damageInstanceArmorMultiplierUpDown.Maximum = new decimal(new int[] { + 99999, + 0, + 0, + 0}); + this.damageInstanceArmorMultiplierUpDown.Name = "damageInstanceArmorMultiplierUpDown"; + this.damageInstanceArmorMultiplierUpDown.Size = new System.Drawing.Size(62, 20); + this.damageInstanceArmorMultiplierUpDown.TabIndex = 79; + this.damageInstanceArmorMultiplierUpDown.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // damageInstanceDamageMultiplierUpDown + // + this.damageInstanceDamageMultiplierUpDown.DecimalPlaces = 3; + this.damageInstanceDamageMultiplierUpDown.Increment = new decimal(new int[] { + 5, + 0, + 0, + 131072}); + this.damageInstanceDamageMultiplierUpDown.Location = new System.Drawing.Point(435, 24); + this.damageInstanceDamageMultiplierUpDown.Maximum = new decimal(new int[] { + 99999, + 0, + 0, + 0}); + this.damageInstanceDamageMultiplierUpDown.Name = "damageInstanceDamageMultiplierUpDown"; + this.damageInstanceDamageMultiplierUpDown.Size = new System.Drawing.Size(62, 20); + this.damageInstanceDamageMultiplierUpDown.TabIndex = 80; + this.damageInstanceDamageMultiplierUpDown.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // damageInstanceAddButton + // + this.damageInstanceAddButton.Location = new System.Drawing.Point(145, 22); + this.damageInstanceAddButton.Name = "damageInstanceAddButton"; + this.damageInstanceAddButton.Size = new System.Drawing.Size(35, 23); + this.damageInstanceAddButton.TabIndex = 81; + this.damageInstanceAddButton.Text = "Add"; + this.damageInstanceAddButton.UseVisualStyleBackColor = true; + this.damageInstanceAddButton.Click += new System.EventHandler(this.damageInstanceAddButton_Click); + // + // meleeDamageLabel + // + this.meleeDamageLabel.AutoSize = true; + this.meleeDamageLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.meleeDamageLabel.Location = new System.Drawing.Point(243, 2); + this.meleeDamageLabel.Name = "meleeDamageLabel"; + this.meleeDamageLabel.Size = new System.Drawing.Size(129, 20); + this.meleeDamageLabel.TabIndex = 82; + this.meleeDamageLabel.Text = "Melee Damage"; + // + // bonusCutUpDown + // + this.bonusCutUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "MeleeCut", true)); + this.bonusCutUpDown.Location = new System.Drawing.Point(81, 162); + this.bonusCutUpDown.Maximum = new decimal(new int[] { + 99999, + 0, + 0, + 0}); + this.bonusCutUpDown.Name = "bonusCutUpDown"; + this.bonusCutUpDown.Size = new System.Drawing.Size(58, 20); + this.bonusCutUpDown.TabIndex = 83; + this.bonusCutUpDown.ValueChanged += new System.EventHandler(this.bonusCutUpDown_ValueChanged); + // + // bonusCutLabel + // + this.bonusCutLabel.AutoSize = true; + this.bonusCutLabel.Location = new System.Drawing.Point(20, 164); + this.bonusCutLabel.Name = "bonusCutLabel"; + this.bonusCutLabel.Size = new System.Drawing.Size(56, 13); + this.bonusCutLabel.TabIndex = 84; + this.bonusCutLabel.Text = "Bonus Cut"; + // + // meleeDiceLabel + // + this.meleeDiceLabel.AutoSize = true; + this.meleeDiceLabel.Location = new System.Drawing.Point(271, 171); + this.meleeDiceLabel.Name = "meleeDiceLabel"; + this.meleeDiceLabel.Size = new System.Drawing.Size(61, 13); + this.meleeDiceLabel.TabIndex = 85; + this.meleeDiceLabel.Text = "Melee Dice"; + // + // meleeDiceUpdown + // + this.meleeDiceUpdown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "MeleeDice", true)); + this.meleeDiceUpdown.Location = new System.Drawing.Point(338, 169); + this.meleeDiceUpdown.Maximum = new decimal(new int[] { + 99999, + 0, + 0, + 0}); + this.meleeDiceUpdown.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.meleeDiceUpdown.Name = "meleeDiceUpdown"; + this.meleeDiceUpdown.Size = new System.Drawing.Size(41, 20); + this.meleeDiceUpdown.TabIndex = 86; + this.meleeDiceUpdown.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.meleeDiceUpdown.ValueChanged += new System.EventHandler(this.meleeDiceUpdown_ValueChanged); + // + // meleeDiceSidesUpDown + // + this.meleeDiceSidesUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "MeleeDiceSides", true)); + this.meleeDiceSidesUpDown.Location = new System.Drawing.Point(396, 169); + this.meleeDiceSidesUpDown.Maximum = new decimal(new int[] { + 99999, + 0, + 0, + 0}); + this.meleeDiceSidesUpDown.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.meleeDiceSidesUpDown.Name = "meleeDiceSidesUpDown"; + this.meleeDiceSidesUpDown.Size = new System.Drawing.Size(46, 20); + this.meleeDiceSidesUpDown.TabIndex = 87; + this.meleeDiceSidesUpDown.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.meleeDiceSidesUpDown.ValueChanged += new System.EventHandler(this.meleeDiceSidesUpDown_ValueChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(381, 172); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(13, 13); + this.label2.TabIndex = 88; + this.label2.Text = "d"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(448, 172); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(19, 13); + this.label3.TabIndex = 89; + this.label3.Text = "=>"; + // + // meleeDamageRangeLabel + // + this.meleeDamageRangeLabel.AutoSize = true; + this.meleeDamageRangeLabel.Location = new System.Drawing.Point(473, 172); + this.meleeDamageRangeLabel.Name = "meleeDamageRangeLabel"; + this.meleeDamageRangeLabel.Size = new System.Drawing.Size(28, 13); + this.meleeDamageRangeLabel.TabIndex = 90; + this.meleeDamageRangeLabel.Text = "1 - 1"; + this.meleeDamageRangeLabel.Click += new System.EventHandler(this.meleeDamageRangeLabel_Click); + // + // meleeSkillUpDown + // + this.meleeSkillUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.mtypeBindingSource, "MeleeSkill", true)); + this.meleeSkillUpDown.Location = new System.Drawing.Point(209, 170); + this.meleeSkillUpDown.Maximum = new decimal(new int[] { + 99999, + 0, + 0, + 0}); + this.meleeSkillUpDown.Name = "meleeSkillUpDown"; + this.meleeSkillUpDown.Size = new System.Drawing.Size(58, 20); + this.meleeSkillUpDown.TabIndex = 91; + // + // meleeSkillLabel + // + this.meleeSkillLabel.AutoSize = true; + this.meleeSkillLabel.Location = new System.Drawing.Point(146, 172); + this.meleeSkillLabel.Name = "meleeSkillLabel"; + this.meleeSkillLabel.Size = new System.Drawing.Size(58, 13); + this.meleeSkillLabel.TabIndex = 92; + this.meleeSkillLabel.Text = "Melee Skill"; + // // mtypeBindingSource // this.mtypeBindingSource.DataSource = typeof(cdda_item_creator.Mtype); @@ -459,11 +1135,161 @@ private void InitializeComponent() // this.monsterNameStringsBindingSource.DataSource = typeof(cdda_item_creator.Translation); // + // pathSettingsPanel + // + this.pathSettingsPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pathSettingsPanel.Controls.Add(this.label7); + this.pathSettingsPanel.Controls.Add(this.checkBox3); + this.pathSettingsPanel.Controls.Add(this.checkBox2); + this.pathSettingsPanel.Controls.Add(this.checkBox1); + this.pathSettingsPanel.Controls.Add(this.label6); + this.pathSettingsPanel.Controls.Add(this.label5); + this.pathSettingsPanel.Controls.Add(this.label4); + this.pathSettingsPanel.Controls.Add(this.pathSettingsBashStrengthUpDown); + this.pathSettingsPanel.Controls.Add(this.pathSettingsMaxLengthUpDown); + this.pathSettingsPanel.Controls.Add(this.pathSettingsMaxDistUpDown); + this.pathSettingsPanel.Location = new System.Drawing.Point(446, 104); + this.pathSettingsPanel.Name = "pathSettingsPanel"; + this.pathSettingsPanel.Size = new System.Drawing.Size(251, 95); + this.pathSettingsPanel.TabIndex = 71; + // + // pathSettingsMaxDistUpDown + // + this.pathSettingsMaxDistUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.pathSettingsDataBindingSource, "MaxDist", true)); + this.pathSettingsMaxDistUpDown.Location = new System.Drawing.Point(77, 25); + this.pathSettingsMaxDistUpDown.Name = "pathSettingsMaxDistUpDown"; + this.pathSettingsMaxDistUpDown.Size = new System.Drawing.Size(50, 20); + this.pathSettingsMaxDistUpDown.TabIndex = 0; + // + // pathSettingsMaxLengthUpDown + // + this.pathSettingsMaxLengthUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.pathSettingsDataBindingSource, "MaxLength", true)); + this.pathSettingsMaxLengthUpDown.Location = new System.Drawing.Point(77, 47); + this.pathSettingsMaxLengthUpDown.Minimum = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + this.pathSettingsMaxLengthUpDown.Name = "pathSettingsMaxLengthUpDown"; + this.pathSettingsMaxLengthUpDown.Size = new System.Drawing.Size(50, 20); + this.pathSettingsMaxLengthUpDown.TabIndex = 1; + this.pathSettingsMaxLengthUpDown.Value = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + // + // pathSettingsBashStrengthUpDown + // + this.pathSettingsBashStrengthUpDown.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.pathSettingsDataBindingSource, "BashStrength", true)); + this.pathSettingsBashStrengthUpDown.Location = new System.Drawing.Point(77, 69); + this.pathSettingsBashStrengthUpDown.Minimum = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + this.pathSettingsBashStrengthUpDown.Name = "pathSettingsBashStrengthUpDown"; + this.pathSettingsBashStrengthUpDown.Size = new System.Drawing.Size(50, 20); + this.pathSettingsBashStrengthUpDown.TabIndex = 2; + this.pathSettingsBashStrengthUpDown.Value = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(3, 28); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(72, 13); + this.label4.TabIndex = 3; + this.label4.Text = "Max Distance"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(12, 49); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(63, 13); + this.label5.TabIndex = 4; + this.label5.Text = "Max Length"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(1, 68); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(74, 13); + this.label6.TabIndex = 5; + this.label6.Text = "Bash Strength"; + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.DataBindings.Add(new System.Windows.Forms.Binding("Checked", this.pathSettingsDataBindingSource, "AllowOpenDoors", true)); + this.checkBox1.Location = new System.Drawing.Point(133, 29); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(111, 17); + this.checkBox1.TabIndex = 6; + this.checkBox1.Text = "Allow Open Doors"; + this.checkBox1.UseVisualStyleBackColor = true; + // + // checkBox2 + // + this.checkBox2.AutoSize = true; + this.checkBox2.DataBindings.Add(new System.Windows.Forms.Binding("Checked", this.pathSettingsDataBindingSource, "AvoidTraps", true)); + this.checkBox2.Location = new System.Drawing.Point(133, 51); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(83, 17); + this.checkBox2.TabIndex = 7; + this.checkBox2.Text = "Avoid Traps"; + this.checkBox2.UseVisualStyleBackColor = true; + // + // checkBox3 + // + this.checkBox3.AutoSize = true; + this.checkBox3.Checked = true; + this.checkBox3.CheckState = System.Windows.Forms.CheckState.Checked; + this.checkBox3.DataBindings.Add(new System.Windows.Forms.Binding("Checked", this.pathSettingsDataBindingSource, "AllowClimbStairs", true)); + this.checkBox3.Location = new System.Drawing.Point(133, 72); + this.checkBox3.Name = "checkBox3"; + this.checkBox3.Size = new System.Drawing.Size(108, 17); + this.checkBox3.TabIndex = 8; + this.checkBox3.Text = "Allow Climb Stairs"; + this.checkBox3.UseVisualStyleBackColor = true; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label7.Location = new System.Drawing.Point(62, 2); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(118, 20); + this.label7.TabIndex = 9; + this.label7.Text = "Path Settings"; + // + // pathSettingsDataBindingSource + // + this.pathSettingsDataBindingSource.DataSource = typeof(cdda_item_creator.PathSettingsData); + // // MonsterForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.pathSettingsPanel); + this.Controls.Add(this.combatEffectivenessPanel); + this.Controls.Add(this.difficultyLabel); + this.Controls.Add(this.diffLabel); + this.Controls.Add(this.diffUpDown); + this.Controls.Add(this.looksLikeTextBox); + this.Controls.Add(this.label1); + this.Controls.Add(this.defaultFactionLabel); + this.Controls.Add(this.defaultFactionTextBox); + this.Controls.Add(this.categoriesDataGrid); + this.Controls.Add(this.speciesDataGrid); + this.Controls.Add(this.materialDataGrid); this.Controls.Add(this.colorLabel); this.Controls.Add(this.colorComboBox); this.Controls.Add(this.descriptionLabel); @@ -479,8 +1305,6 @@ private void InitializeComponent() this.Controls.Add(this.volumeListbox); this.Controls.Add(this.volumeLabel); this.Controls.Add(this.volumeUpDown); - this.Controls.Add(this.hpLabel); - this.Controls.Add(this.hpUpDown); this.Controls.Add(this.pluralNameLabel); this.Controls.Add(this.pluralNameTextBox); this.Controls.Add(this.idLabel); @@ -495,13 +1319,40 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.weightUpDown)).EndInit(); this.armorPanel.ResumeLayout(false); this.armorPanel.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDown3)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDown4)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDown5)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.stabArmorUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.acidArmorUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.cutArmorUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.fireArmorUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bashArmorUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.materialDataGrid)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.materialBindingSource)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.speciesDataGrid)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.categoriesDataGrid)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.diffUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.aggressionUpDown)).EndInit(); + this.combatEffectivenessPanel.ResumeLayout(false); + this.combatEffectivenessPanel.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.damageInstanceDataGrid)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dodgeUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.grabStrengthUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.moraleUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.speedUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.damageInstanceArmorPenetrationUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.damageInstanceAmountUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.damageInstanceArmorMultiplierUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.damageInstanceDamageMultiplierUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bonusCutUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.meleeDiceUpdown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.meleeDiceSidesUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.meleeSkillUpDown)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.mtypeBindingSource)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.monsterNameStringsBindingSource)).EndInit(); + this.pathSettingsPanel.ResumeLayout(false); + this.pathSettingsPanel.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pathSettingsMaxDistUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pathSettingsMaxLengthUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pathSettingsBashStrengthUpDown)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pathSettingsDataBindingSource)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -529,14 +1380,14 @@ private void InitializeComponent() private System.Windows.Forms.TextBox symbolTextBox; private System.Windows.Forms.Label symbolLabel; private System.Windows.Forms.Panel armorPanel; - private System.Windows.Forms.NumericUpDown numericUpDown1; + private System.Windows.Forms.NumericUpDown bashArmorUpDown; private System.Windows.Forms.Label cutArmorLabel; private System.Windows.Forms.Label bashArmorLabel; private System.Windows.Forms.Label armorLabel; - private System.Windows.Forms.NumericUpDown numericUpDown5; - private System.Windows.Forms.NumericUpDown numericUpDown4; - private System.Windows.Forms.NumericUpDown numericUpDown3; - private System.Windows.Forms.NumericUpDown numericUpDown2; + private System.Windows.Forms.NumericUpDown stabArmorUpDown; + private System.Windows.Forms.NumericUpDown acidArmorUpDown; + private System.Windows.Forms.NumericUpDown cutArmorUpDown; + private System.Windows.Forms.NumericUpDown fireArmorUpDown; private System.Windows.Forms.Label acidArmorLabel; private System.Windows.Forms.Label stabArmorLabel; private System.Windows.Forms.Label fireArmorLabel; @@ -546,5 +1397,65 @@ private void InitializeComponent() private System.Windows.Forms.Label descriptionLabel; private System.Windows.Forms.ComboBox colorComboBox; private System.Windows.Forms.Label colorLabel; + private System.Windows.Forms.DataGridView materialDataGrid; + private System.Windows.Forms.BindingSource materialBindingSource; + private System.Windows.Forms.DataGridViewTextBoxColumn Material; + private System.Windows.Forms.DataGridView speciesDataGrid; + private System.Windows.Forms.DataGridViewTextBoxColumn species; + private System.Windows.Forms.DataGridView categoriesDataGrid; + private System.Windows.Forms.DataGridViewTextBoxColumn Categories; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label defaultFactionLabel; + private System.Windows.Forms.TextBox defaultFactionTextBox; + private System.Windows.Forms.TextBox looksLikeTextBox; + private System.Windows.Forms.NumericUpDown diffUpDown; + private System.Windows.Forms.Label diffLabel; + private System.Windows.Forms.Label difficultyLabel; + private System.Windows.Forms.NumericUpDown aggressionUpDown; + private System.Windows.Forms.Label aggressionLabel; + private System.Windows.Forms.Panel combatEffectivenessPanel; + private System.Windows.Forms.NumericUpDown speedUpDown; + private System.Windows.Forms.Label moraleLabel; + private System.Windows.Forms.NumericUpDown moraleUpDown; + private System.Windows.Forms.Label speedLabel; + private System.Windows.Forms.Label dodgeLabel; + private System.Windows.Forms.NumericUpDown dodgeUpDown; + private System.Windows.Forms.Label grabStrengthLabel; + private System.Windows.Forms.NumericUpDown grabStrengthUpDown; + private System.Windows.Forms.DataGridView damageInstanceDataGrid; + private System.Windows.Forms.ComboBox damageInstanceTypeComboBox; + private System.Windows.Forms.DataGridViewTextBoxColumn Type; + private System.Windows.Forms.DataGridViewTextBoxColumn Amount; + private System.Windows.Forms.DataGridViewTextBoxColumn ArmorPenetration; + private System.Windows.Forms.DataGridViewTextBoxColumn ArmorMultiplier; + private System.Windows.Forms.DataGridViewTextBoxColumn DamageMultiplier; + private System.Windows.Forms.Button damageInstanceAddButton; + private System.Windows.Forms.NumericUpDown damageInstanceDamageMultiplierUpDown; + private System.Windows.Forms.NumericUpDown damageInstanceArmorMultiplierUpDown; + private System.Windows.Forms.NumericUpDown damageInstanceAmountUpDown; + private System.Windows.Forms.NumericUpDown damageInstanceArmorPenetrationUpDown; + private System.Windows.Forms.Label meleeDamageLabel; + private System.Windows.Forms.NumericUpDown bonusCutUpDown; + private System.Windows.Forms.Label bonusCutLabel; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.NumericUpDown meleeDiceSidesUpDown; + private System.Windows.Forms.NumericUpDown meleeDiceUpdown; + private System.Windows.Forms.Label meleeDiceLabel; + private System.Windows.Forms.Label meleeDamageRangeLabel; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label meleeSkillLabel; + private System.Windows.Forms.NumericUpDown meleeSkillUpDown; + private System.Windows.Forms.Panel pathSettingsPanel; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.CheckBox checkBox3; + private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.NumericUpDown pathSettingsBashStrengthUpDown; + private System.Windows.Forms.NumericUpDown pathSettingsMaxLengthUpDown; + private System.Windows.Forms.NumericUpDown pathSettingsMaxDistUpDown; + private System.Windows.Forms.BindingSource pathSettingsDataBindingSource; } } \ No newline at end of file diff --git a/MonsterForm.cs b/MonsterForm.cs index 250ecb0..dcf8028 100644 --- a/MonsterForm.cs +++ b/MonsterForm.cs @@ -30,17 +30,44 @@ public MonsterForm() loadColors(); mtypeBindingSource.Add(main_monster); monsterNameStringsBindingSource.Add(main_monster.Name); + pathSettingsDataBindingSource.Add(main_monster.PathSettings); volumeListbox.SelectedIndex = 0; weightComboBox.SelectedIndex = 1; colorComboBox.SelectedIndex = 0; + damageInstanceTypeComboBox.SelectedIndex = 0; } - - private void clipboardButton_Click(object sender, EventArgs e) + private List ListDataUpdater( DataGridView info ) + { + List ret = null; + if( info.Rows.Count > 0) + { + ret = new List { }; + } + foreach(DataGridViewRow row in info.Rows) + { + string text = (string)row.Cells[0].Value; + if( text != null) + { + ret.Add(text); + } + } + return ret; + } + private void UpdateMonsterDataGrid() { main_monster.UpdateVolume((int)volumeUpDown.Value, volumeListbox.Text); main_monster.UpdateWeight((int)weightUpDown.Value, weightComboBox.Text); - DefaultContractResolver contractResolver = new DefaultContractResolver + main_monster.Material = ListDataUpdater(materialDataGrid); + main_monster.Species = ListDataUpdater(speciesDataGrid); + main_monster.Categories = ListDataUpdater(categoriesDataGrid); + } + + private void clipboardButton_Click(object sender, EventArgs e) + { + UpdateMonsterDataGrid(); + + IgnoreEmptyEnumerablesResolver contractResolver = new IgnoreEmptyEnumerablesResolver { NamingStrategy = new SnakeCaseNamingStrategy() }; @@ -55,5 +82,50 @@ private void clipboardButton_Click(object sender, EventArgs e) } )); } + + private void damageInstanceAddButton_Click(object sender, EventArgs e) + { + damageInstanceDataGrid.Rows.Add( + damageInstanceTypeComboBox.Text, + damageInstanceAmountUpDown.Value, + damageInstanceArmorPenetrationUpDown.Value, + damageInstanceArmorMultiplierUpDown.Value, + damageInstanceDamageMultiplierUpDown.Value + ); + } + + private void difficultyLabel_Click(object sender, EventArgs e) + { + UpdateMonsterDataGrid(); + difficultyLabel.Text = "Calculated Difficulty (click to update): " + main_monster.Difficulty().ToString(); + } + private void UpdateMeleeDamageRange() + { + int min_damage = main_monster.MeleeDice; + int max_damage = min_damage * main_monster.MeleeDiceSides; + min_damage += main_monster.MeleeCut; + max_damage += main_monster.MeleeCut; + meleeDamageRangeLabel.Text = min_damage.ToString() + " - " + max_damage.ToString(); + meleeDamageRangeLabel.Refresh(); + } + private void meleeDiceUpdown_ValueChanged(object sender, EventArgs e) + { + UpdateMeleeDamageRange(); + } + + private void meleeDiceSidesUpDown_ValueChanged(object sender, EventArgs e) + { + UpdateMeleeDamageRange(); + } + + private void bonusCutUpDown_ValueChanged(object sender, EventArgs e) + { + UpdateMeleeDamageRange(); + } + + private void meleeDamageRangeLabel_Click(object sender, EventArgs e) + { + UpdateMeleeDamageRange(); + } } } diff --git a/MonsterForm.resx b/MonsterForm.resx index 7002043..e0aeea4 100644 --- a/MonsterForm.resx +++ b/MonsterForm.resx @@ -123,10 +123,64 @@ 17, 17 + + True + + + True + + + 428, 17 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + 17, 17 182, 17 + + 603, 17 + \ No newline at end of file diff --git a/Properties/DataSources/PathSettingsData.datasource b/Properties/DataSources/PathSettingsData.datasource new file mode 100644 index 0000000..7a95bd6 --- /dev/null +++ b/Properties/DataSources/PathSettingsData.datasource @@ -0,0 +1,10 @@ + + + + cdda_item_creator.PathSettingsData, cdda-item-creator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + \ No newline at end of file diff --git a/cdda-item-creator.csproj b/cdda-item-creator.csproj index f229c31..0107fcb 100644 --- a/cdda-item-creator.csproj +++ b/cdda-item-creator.csproj @@ -49,6 +49,7 @@ + Form @@ -95,6 +96,7 @@ + SettingsSingleFileGenerator Settings.Designer.cs diff --git a/cdda-item-creator.pdb b/cdda-item-creator.pdb index ecc9fe3779b6d720541398a7bdd5ab451a5d5310..90a9f40e22ccf43100b477084d82c41cba68fa7f 100644 GIT binary patch literal 144896 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

P9rJP(vlC$zI~Q#7=wsHnK8MxG5Owby&{!}`kF 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 MuUGO!wK09(OMuooNz$AIjDn}fEXGmv>& z27n=8Bp3@SK^>S4=7A+(C6KvQwt($m57-ZmfRi8#=Togg2y_Sepa>L$5>O6m!6L96 ztOYWM$u_VX>;s3u36Ozv^K8%_bOkc^NC6lIMu9RQbBoLX4PZW424wD#4PYnO3yuN# zAxm@67IX$VU;r2i#)3L98_WYsz)G+VYzKS5esBbw1X=h_*cyaDcaRTc{)}Q!0?I)x zs0VYwBCs5+1)G4(eX$$t1BXCrIr}3Z_kU9FfB&Mt|NZRmr>PqLzllHy=kGWzPP&+T z!*XhfZ$KWtCioqYW|1R{14L2TYLN1+v~BG@oq1r33IhXU;ok5yotn1 z&Ho@VGjlX({8IBj*!@WQRcihRjfh-6GmFF}HUEP~1DF4TMdFg0|3SlHpQ}k+Qu99~ zk4tL)hvacd&Hs=*E~)t+lE)=A|3mV)q~?D}9+%Yo4;mM_eP|XrPN(L7&}iWHXRt_I zQu9A(IB=^pSR^j@mg_spBr)E$5H{R8^B3F_4HnTo4cpaBiMOTZf6&0-_H3|7%u@3| zXgF}oIavI-R5t$pu?Qu99~k4tL)hvacd&Hs=*E~)t+lE)=A|3mV) zq~?D}9+#$7xTmcqFaEqIHUC5Mn5E`_IKBBFBzp24Y)l-p@p(OX6EwvM_O&1k9tXdR z!!?J4Jzqhod%6ePwa9vZzAO9Fn)o4j+x_Y08VF8NV{591)Au~xN?4OCxFQg}tzB~F zvszeUb5H#ACyDSU1Td2p{H^AH_^)dx9YFWpxd6VBsKp-bk>?PikTTAc)C3`{{v$1sh2KL&c)64vu*x|pQB#C07t=} zfm}D1Yy+=?UxHtO?EpU&P0ay;7<>bifYIPiAm=?}K^Tk!rJxK% zz<4kL;4<~!bPkA}C~p_|EqD#=2CsvE2mb-~fH%PJ!0*9c@JH|m@GzJU7Jx^=La+!d z2LA{i1M-`_rQmV!Bd`oS0e%dg1k1q+@Dz9&tOTpTPrx%^HCO}w*2`Z|;IY4Tp{epx M5lBVgtcbw>0WsOj`2YX_ diff --git a/custom_json.cs b/custom_json.cs new file mode 100644 index 0000000..9a1c1e5 --- /dev/null +++ b/custom_json.cs @@ -0,0 +1,44 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace cdda_item_creator +{ + public class IgnoreEmptyEnumerablesResolver : DefaultContractResolver + { + protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) + { + JsonProperty property = base.CreateProperty(member, memberSerialization); + + if (property.DeclaringType is IEnumerable) + { + property.ShouldSerialize = instance => + { + IEnumerable enumer = instance + .GetType() + .GetProperty(property.PropertyName) + .GetValue(instance, null) as IEnumerable; + + if (enumer != null) + { + // check to see if there is at least one item in the Enumerable + return enumer.GetEnumerator().MoveNext(); + } + else + { + // if the enumerable is null, we defer the decision to NullValueHandling + return true; + } + }; + } + + return property; + } + } +} diff --git a/mtype.cs b/mtype.cs index 87a98dd..0f19efb 100644 --- a/mtype.cs +++ b/mtype.cs @@ -19,20 +19,21 @@ class PathSettingsData { public int MaxDist { get; set; } [DefaultValue(-1)] - public int MaxLength { get; set; } + public int MaxLength { get; set; } = -1; [DefaultValue(-1)] - public int BashStrength { get; set; } + public int BashStrength { get; set; } = -1; [DefaultValue(false)] public bool AllowOpenDoors { get; set; } [DefaultValue(false)] public bool AvoidTraps { get; set; } [DefaultValue(true)] - public bool AllowClimbStairs { get; set; } + public bool AllowClimbStairs { get; set; } = true; } class DamageUnit { - public float amount; + public string Type; + public float Amount; public int ArmorPenetration; [DefaultValue(1.0f)] public float ArmorMultiplier = 1.0f; @@ -64,6 +65,9 @@ class Mtype [DefaultValue("")] public string Volume { get; set; } = ""; public string Color { get; set; } + public List Material { get; set; } + public List Species { get; set; } + public List Categories { get; set; } [DefaultValue("")] public string Weight { get; set; } = ""; public int Speed { get; set; } @@ -74,8 +78,8 @@ class Mtype public float MountableWeightRatio { get; set; } public int AttackCost { get; set; } public int MeleeSkill { get; set; } - public int MeleeDice { get; set; } - public int MeleeDiceSides { get; set; } + public int MeleeDice { get; set; } = 1; + public int MeleeDiceSides { get; set; } = 1; public int GrabStrength { get; set; } public int Dodge { get; set; } public int ArmorBash { get; set; } @@ -94,7 +98,7 @@ class Mtype public int MechStrBonus { get; set; } [DefaultValue("")] public string MechBattery { get; set; } = ""; - public DamageInstance melee_damage; + public DamageInstance MeleeDamage; public int MeleeCut { get; set; } // mandatory json member public string Harvest { get; set; } = ""; @@ -102,7 +106,7 @@ class Mtype public string BurnInto { get; set; } = ""; [DefaultValue(-1)] public int BashSkill { get; set; } = -1; - public PathSettingsData PathSettings { get; set; } + public PathSettingsData PathSettings { get; set; } = new PathSettingsData { }; public void UpdateVolume( int num_part, string unit ) { @@ -113,5 +117,15 @@ public void UpdateWeight( int num_part, string unit ) { Weight = num_part.ToString() + " " + unit; } + + public int Difficulty() + { + int difficulty = (int)((MeleeSkill + 1) * MeleeDice * (MeleeCut + MeleeDiceSides) * 0.04 + + (Dodge + 1) * (3 + ArmorBash + ArmorCut) * 0.04 + + (Diff /* + special_attacks.size() + 8 * emit_fields.size() */)); + difficulty = (int)( difficulty * (Hp + Speed - AttackCost + (Morale + Aggression) * 0.1) * 0.01 + + (VisionDay + 2 * VisionNight) * 0.01); + return difficulty; + } } } diff --git a/spell_form.cs b/spell_form.cs index ee3f4fd..28a6a8c 100644 --- a/spell_form.cs +++ b/spell_form.cs @@ -60,7 +60,6 @@ private void clipboard_button_Click(object sender, EventArgs e) main_spell.AffectedBps = effected_body_part_listbox.CheckedItems.Cast().ToList(); main_spell.EffectTargets = effect_filter_listbox.CheckedItems.Cast().ToList(); - main_spell.ExtraEffects = null; if(additionalSpellGrid.Rows.Count > 0) { main_spell.ExtraEffects = new List { }; @@ -76,7 +75,6 @@ private void clipboard_button_Click(object sender, EventArgs e) main_spell.ExtraEffects.Add(spell); } - main_spell.LearnSpells = null; if (spellsLearnedGrid.Rows.Count > 0) { main_spell.LearnSpells = new Dictionary { }; @@ -87,7 +85,7 @@ private void clipboard_button_Click(object sender, EventArgs e) } - DefaultContractResolver contractResolver = new DefaultContractResolver + IgnoreEmptyEnumerablesResolver contractResolver = new IgnoreEmptyEnumerablesResolver { NamingStrategy = new SnakeCaseNamingStrategy() };