Added ability to edit trainer pokemon ability and gender for HGSS

This commit is contained in:
OtakuGracie
2023-07-22 00:08:48 -04:00
committed by AdAstra-LD
parent fb37351952
commit cda607dba8
6 changed files with 437 additions and 132 deletions

View File

@@ -156,6 +156,7 @@
</Compile>
<Compile Include="ROMFiles\RomFile.cs" />
<Compile Include="ROMFiles\ScriptAction.cs" />
<Compile Include="ROMFiles\SpeciesFile.cs" />
<Compile Include="ROMFiles\TrainerFile.cs" />
<Compile Include="ROMToolboxDialog.cs">
<SubType>Form</SubType>

View File

@@ -632,6 +632,8 @@
this.addTrainerButton = new System.Windows.Forms.Button();
this.groupBox28 = new System.Windows.Forms.GroupBox();
this.party6GroupBox = new System.Windows.Forms.GroupBox();
this.partyAbility6ComboBox = new System.Windows.Forms.ComboBox();
this.partyGender6ComboBox = new System.Windows.Forms.ComboBox();
this.partyPokemonItemPictureBox6 = new System.Windows.Forms.PictureBox();
this.label60 = new System.Windows.Forms.Label();
this.label61 = new System.Windows.Forms.Label();
@@ -648,6 +650,8 @@
this.partyPokemon6PictureBox = new System.Windows.Forms.PictureBox();
this.partyPokemon6ComboBox = new DSPRE.InputComboBox();
this.party5GroupBox = new System.Windows.Forms.GroupBox();
this.partyAbility5ComboBox = new System.Windows.Forms.ComboBox();
this.partyGender5ComboBox = new System.Windows.Forms.ComboBox();
this.partyPokemonItemPictureBox5 = new System.Windows.Forms.PictureBox();
this.label57 = new System.Windows.Forms.Label();
this.label58 = new System.Windows.Forms.Label();
@@ -664,6 +668,8 @@
this.partyPokemon5PictureBox = new System.Windows.Forms.PictureBox();
this.partyPokemon5ComboBox = new DSPRE.InputComboBox();
this.party4GroupBox = new System.Windows.Forms.GroupBox();
this.partyAbility4ComboBox = new System.Windows.Forms.ComboBox();
this.partyGender4ComboBox = new System.Windows.Forms.ComboBox();
this.partyPokemonItemPictureBox4 = new System.Windows.Forms.PictureBox();
this.label54 = new System.Windows.Forms.Label();
this.label55 = new System.Windows.Forms.Label();
@@ -680,6 +686,8 @@
this.partyPokemon4PictureBox = new System.Windows.Forms.PictureBox();
this.partyPokemon4ComboBox = new DSPRE.InputComboBox();
this.party3GroupBox = new System.Windows.Forms.GroupBox();
this.partyAbility3ComboBox = new System.Windows.Forms.ComboBox();
this.partyGender3ComboBox = new System.Windows.Forms.ComboBox();
this.partyPokemonItemPictureBox3 = new System.Windows.Forms.PictureBox();
this.label51 = new System.Windows.Forms.Label();
this.label52 = new System.Windows.Forms.Label();
@@ -696,6 +704,8 @@
this.partyPokemon3PictureBox = new System.Windows.Forms.PictureBox();
this.partyPokemon3ComboBox = new DSPRE.InputComboBox();
this.party2GroupBox = new System.Windows.Forms.GroupBox();
this.partyAbility2ComboBox = new System.Windows.Forms.ComboBox();
this.partyGender2ComboBox = new System.Windows.Forms.ComboBox();
this.partyPokemonItemPictureBox2 = new System.Windows.Forms.PictureBox();
this.label48 = new System.Windows.Forms.Label();
this.label49 = new System.Windows.Forms.Label();
@@ -712,6 +722,7 @@
this.partyPokemon2PictureBox = new System.Windows.Forms.PictureBox();
this.partyPokemon2ComboBox = new DSPRE.InputComboBox();
this.party1GroupBox = new System.Windows.Forms.GroupBox();
this.partyAbility1ComboBox = new System.Windows.Forms.ComboBox();
this.partyPokemonItemPictureBox1 = new System.Windows.Forms.PictureBox();
this.label47 = new System.Windows.Forms.Label();
this.label46 = new System.Windows.Forms.Label();
@@ -884,6 +895,7 @@
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.directoryEntry1 = new System.DirectoryServices.DirectoryEntry();
this.directoryEntry2 = new System.DirectoryServices.DirectoryEntry();
this.partyGender1ComboBox = new System.Windows.Forms.ComboBox();
this.mainTabControl.SuspendLayout();
this.headerEditorTabPage.SuspendLayout();
this.worldmapCoordsGroupBox.SuspendLayout();
@@ -1151,7 +1163,7 @@
this.mainTabControl.Location = new System.Drawing.Point(11, 72);
this.mainTabControl.Name = "mainTabControl";
this.mainTabControl.SelectedIndex = 0;
this.mainTabControl.Size = new System.Drawing.Size(1193, 646);
this.mainTabControl.Size = new System.Drawing.Size(1193, 730);
this.mainTabControl.TabIndex = 5;
this.mainTabControl.Visible = false;
this.mainTabControl.SelectedIndexChanged += new System.EventHandler(this.mainTabControl_SelectedIndexChanged);
@@ -1186,7 +1198,7 @@
this.headerEditorTabPage.Location = new System.Drawing.Point(4, 23);
this.headerEditorTabPage.Name = "headerEditorTabPage";
this.headerEditorTabPage.Padding = new System.Windows.Forms.Padding(3);
this.headerEditorTabPage.Size = new System.Drawing.Size(1185, 619);
this.headerEditorTabPage.Size = new System.Drawing.Size(1185, 703);
this.headerEditorTabPage.TabIndex = 0;
this.headerEditorTabPage.Text = "Header Editor";
//
@@ -2574,7 +2586,7 @@
this.matrixEditorTabPage.Location = new System.Drawing.Point(4, 23);
this.matrixEditorTabPage.Name = "matrixEditorTabPage";
this.matrixEditorTabPage.Padding = new System.Windows.Forms.Padding(3);
this.matrixEditorTabPage.Size = new System.Drawing.Size(1185, 619);
this.matrixEditorTabPage.Size = new System.Drawing.Size(1185, 703);
this.matrixEditorTabPage.TabIndex = 1;
this.matrixEditorTabPage.Text = "Matrix Editor";
//
@@ -2595,7 +2607,7 @@
this.setSpawnPointButton.Image = global::DSPRE.Properties.Resources.spawnCoordsMatrixeditorIcon;
this.setSpawnPointButton.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.setSpawnPointButton.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.setSpawnPointButton.Location = new System.Drawing.Point(11, 521);
this.setSpawnPointButton.Location = new System.Drawing.Point(11, 605);
this.setSpawnPointButton.Name = "setSpawnPointButton";
this.setSpawnPointButton.Size = new System.Drawing.Size(117, 43);
this.setSpawnPointButton.TabIndex = 32;
@@ -2767,7 +2779,7 @@
this.matrixTabControl.Multiline = true;
this.matrixTabControl.Name = "matrixTabControl";
this.matrixTabControl.SelectedIndex = 0;
this.matrixTabControl.Size = new System.Drawing.Size(1040, 602);
this.matrixTabControl.Size = new System.Drawing.Size(1040, 686);
this.matrixTabControl.TabIndex = 18;
//
// headersTabPage
@@ -2776,7 +2788,7 @@
this.headersTabPage.Location = new System.Drawing.Point(4, 22);
this.headersTabPage.Name = "headersTabPage";
this.headersTabPage.Padding = new System.Windows.Forms.Padding(3);
this.headersTabPage.Size = new System.Drawing.Size(1032, 576);
this.headersTabPage.Size = new System.Drawing.Size(1032, 660);
this.headersTabPage.TabIndex = 1;
this.headersTabPage.Text = "Map Headers";
this.headersTabPage.UseVisualStyleBackColor = true;
@@ -2839,7 +2851,7 @@
this.heightsTabPage.Controls.Add(this.heightsGridView);
this.heightsTabPage.Location = new System.Drawing.Point(4, 22);
this.heightsTabPage.Name = "heightsTabPage";
this.heightsTabPage.Size = new System.Drawing.Size(1032, 576);
this.heightsTabPage.Size = new System.Drawing.Size(1032, 660);
this.heightsTabPage.TabIndex = 2;
this.heightsTabPage.Text = "Map Heights";
this.heightsTabPage.UseVisualStyleBackColor = true;
@@ -2902,7 +2914,7 @@
this.mapFilesTabPage.Controls.Add(this.mapFilesGridView);
this.mapFilesTabPage.Location = new System.Drawing.Point(4, 22);
this.mapFilesTabPage.Name = "mapFilesTabPage";
this.mapFilesTabPage.Size = new System.Drawing.Size(1032, 576);
this.mapFilesTabPage.Size = new System.Drawing.Size(1032, 660);
this.mapFilesTabPage.TabIndex = 3;
this.mapFilesTabPage.Text = "Map Files";
this.mapFilesTabPage.UseVisualStyleBackColor = true;
@@ -3042,7 +3054,7 @@
this.saveMatrixButton.Image = global::DSPRE.Properties.Resources.save_rom;
this.saveMatrixButton.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.saveMatrixButton.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.saveMatrixButton.Location = new System.Drawing.Point(11, 566);
this.saveMatrixButton.Location = new System.Drawing.Point(11, 650);
this.saveMatrixButton.Name = "saveMatrixButton";
this.saveMatrixButton.Size = new System.Drawing.Size(117, 43);
this.saveMatrixButton.TabIndex = 22;
@@ -3071,7 +3083,7 @@
this.mapEditorTabPage.Location = new System.Drawing.Point(4, 23);
this.mapEditorTabPage.Name = "mapEditorTabPage";
this.mapEditorTabPage.Padding = new System.Windows.Forms.Padding(3);
this.mapEditorTabPage.Size = new System.Drawing.Size(1185, 619);
this.mapEditorTabPage.Size = new System.Drawing.Size(1185, 703);
this.mapEditorTabPage.TabIndex = 2;
this.mapEditorTabPage.Text = "Map Editor";
this.mapEditorTabPage.Enter += new System.EventHandler(this.mapEditorTabPage_Enter);
@@ -4365,7 +4377,7 @@
this.radio3D.AutoSize = true;
this.radio3D.Checked = true;
this.radio3D.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.radio3D.Location = new System.Drawing.Point(1140, 542);
this.radio3D.Location = new System.Drawing.Point(1140, 626);
this.radio3D.Name = "radio3D";
this.radio3D.Size = new System.Drawing.Size(31, 23);
this.radio3D.TabIndex = 26;
@@ -4380,7 +4392,7 @@
this.radio2D.Appearance = System.Windows.Forms.Appearance.Button;
this.radio2D.AutoSize = true;
this.radio2D.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.radio2D.Location = new System.Drawing.Point(1140, 566);
this.radio2D.Location = new System.Drawing.Point(1140, 650);
this.radio2D.Name = "radio2D";
this.radio2D.Size = new System.Drawing.Size(31, 23);
this.radio2D.TabIndex = 25;
@@ -4395,7 +4407,7 @@
this.wireframeCheckBox.Appearance = System.Windows.Forms.Appearance.Button;
this.wireframeCheckBox.AutoSize = true;
this.wireframeCheckBox.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.wireframeCheckBox.Location = new System.Drawing.Point(1140, 590);
this.wireframeCheckBox.Location = new System.Drawing.Point(1140, 674);
this.wireframeCheckBox.Name = "wireframeCheckBox";
this.wireframeCheckBox.Size = new System.Drawing.Size(31, 23);
this.wireframeCheckBox.TabIndex = 27;
@@ -4410,7 +4422,7 @@
this.nsbtxEditorTabPage.Location = new System.Drawing.Point(4, 23);
this.nsbtxEditorTabPage.Name = "nsbtxEditorTabPage";
this.nsbtxEditorTabPage.Padding = new System.Windows.Forms.Padding(3);
this.nsbtxEditorTabPage.Size = new System.Drawing.Size(1185, 619);
this.nsbtxEditorTabPage.Size = new System.Drawing.Size(1185, 703);
this.nsbtxEditorTabPage.TabIndex = 6;
this.nsbtxEditorTabPage.Text = "NSBTX Editor";
this.nsbtxEditorTabPage.UseVisualStyleBackColor = true;
@@ -4951,7 +4963,7 @@
this.eventEditorTabPage.Location = new System.Drawing.Point(4, 23);
this.eventEditorTabPage.Name = "eventEditorTabPage";
this.eventEditorTabPage.Padding = new System.Windows.Forms.Padding(3);
this.eventEditorTabPage.Size = new System.Drawing.Size(1185, 619);
this.eventEditorTabPage.Size = new System.Drawing.Size(1185, 703);
this.eventEditorTabPage.TabIndex = 3;
this.eventEditorTabPage.Text = "Event Editor";
this.eventEditorTabPage.Enter += new System.EventHandler(this.eventEditorTabPage_Enter);
@@ -6996,7 +7008,7 @@
this.scriptEditorTabPage.Location = new System.Drawing.Point(4, 23);
this.scriptEditorTabPage.Name = "scriptEditorTabPage";
this.scriptEditorTabPage.Padding = new System.Windows.Forms.Padding(3);
this.scriptEditorTabPage.Size = new System.Drawing.Size(1185, 619);
this.scriptEditorTabPage.Size = new System.Drawing.Size(1185, 703);
this.scriptEditorTabPage.TabIndex = 4;
this.scriptEditorTabPage.Text = "Script Editor";
this.scriptEditorTabPage.UseVisualStyleBackColor = true;
@@ -7735,7 +7747,7 @@
this.textEditorTabPage.Location = new System.Drawing.Point(4, 23);
this.textEditorTabPage.Name = "textEditorTabPage";
this.textEditorTabPage.Padding = new System.Windows.Forms.Padding(3);
this.textEditorTabPage.Size = new System.Drawing.Size(1185, 619);
this.textEditorTabPage.Size = new System.Drawing.Size(1185, 703);
this.textEditorTabPage.TabIndex = 5;
this.textEditorTabPage.Text = "Text Editor";
this.textEditorTabPage.UseVisualStyleBackColor = true;
@@ -8159,7 +8171,7 @@
this.cameraEditorTabPage.ImageIndex = 7;
this.cameraEditorTabPage.Location = new System.Drawing.Point(4, 23);
this.cameraEditorTabPage.Name = "cameraEditorTabPage";
this.cameraEditorTabPage.Size = new System.Drawing.Size(1185, 619);
this.cameraEditorTabPage.Size = new System.Drawing.Size(1185, 703);
this.cameraEditorTabPage.TabIndex = 7;
this.cameraEditorTabPage.Text = "Camera Editor";
this.cameraEditorTabPage.UseVisualStyleBackColor = true;
@@ -8353,7 +8365,7 @@
this.trainerEditorTabPage.ImageIndex = 8;
this.trainerEditorTabPage.Location = new System.Drawing.Point(4, 23);
this.trainerEditorTabPage.Name = "trainerEditorTabPage";
this.trainerEditorTabPage.Size = new System.Drawing.Size(1185, 619);
this.trainerEditorTabPage.Size = new System.Drawing.Size(1185, 703);
this.trainerEditorTabPage.TabIndex = 8;
this.trainerEditorTabPage.Text = "Trainer Editor";
this.trainerEditorTabPage.UseVisualStyleBackColor = true;
@@ -8520,13 +8532,15 @@
this.groupBox28.Controls.Add(this.party1GroupBox);
this.groupBox28.Location = new System.Drawing.Point(439, 75);
this.groupBox28.Name = "groupBox28";
this.groupBox28.Size = new System.Drawing.Size(731, 534);
this.groupBox28.Size = new System.Drawing.Size(731, 625);
this.groupBox28.TabIndex = 32;
this.groupBox28.TabStop = false;
this.groupBox28.Text = "Party";
//
// party6GroupBox
//
this.party6GroupBox.Controls.Add(this.partyAbility6ComboBox);
this.party6GroupBox.Controls.Add(this.partyGender6ComboBox);
this.party6GroupBox.Controls.Add(this.partyPokemonItemPictureBox6);
this.party6GroupBox.Controls.Add(this.label60);
this.party6GroupBox.Controls.Add(this.label61);
@@ -8539,13 +8553,35 @@
this.party6GroupBox.Controls.Add(this.partyPokemon6PictureBox);
this.party6GroupBox.Controls.Add(this.partyPokemon6ComboBox);
this.party6GroupBox.Enabled = false;
this.party6GroupBox.Location = new System.Drawing.Point(371, 355);
this.party6GroupBox.Location = new System.Drawing.Point(371, 418);
this.party6GroupBox.Name = "party6GroupBox";
this.party6GroupBox.Size = new System.Drawing.Size(343, 162);
this.party6GroupBox.Size = new System.Drawing.Size(343, 189);
this.party6GroupBox.TabIndex = 13;
this.party6GroupBox.TabStop = false;
this.party6GroupBox.Text = "Pokemon 6";
//
// partyAbility6ComboBox
//
this.partyAbility6ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.partyAbility6ComboBox.FormattingEnabled = true;
this.partyAbility6ComboBox.Location = new System.Drawing.Point(15, 157);
this.partyAbility6ComboBox.Name = "partyAbility6ComboBox";
this.partyAbility6ComboBox.Size = new System.Drawing.Size(121, 21);
this.partyAbility6ComboBox.TabIndex = 19;
//
// partyGender6ComboBox
//
this.partyGender6ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.partyGender6ComboBox.FormattingEnabled = true;
this.partyGender6ComboBox.Items.AddRange(new object[] {
"Default Gender",
"Force Male",
"Force Female"});
this.partyGender6ComboBox.Location = new System.Drawing.Point(154, 157);
this.partyGender6ComboBox.Name = "partyGender6ComboBox";
this.partyGender6ComboBox.Size = new System.Drawing.Size(121, 21);
this.partyGender6ComboBox.TabIndex = 15;
//
// partyPokemonItemPictureBox6
//
this.partyPokemonItemPictureBox6.Image = global::DSPRE.Properties.Resources.IconItem;
@@ -8648,7 +8684,7 @@
//
this.partyIV6UpDown.Location = new System.Drawing.Point(48, 98);
this.partyIV6UpDown.Maximum = new decimal(new int[] {
65535,
255,
0,
0,
0});
@@ -8719,6 +8755,8 @@
//
// party5GroupBox
//
this.party5GroupBox.Controls.Add(this.partyAbility5ComboBox);
this.party5GroupBox.Controls.Add(this.partyGender5ComboBox);
this.party5GroupBox.Controls.Add(this.partyPokemonItemPictureBox5);
this.party5GroupBox.Controls.Add(this.label57);
this.party5GroupBox.Controls.Add(this.label58);
@@ -8731,13 +8769,35 @@
this.party5GroupBox.Controls.Add(this.partyPokemon5PictureBox);
this.party5GroupBox.Controls.Add(this.partyPokemon5ComboBox);
this.party5GroupBox.Enabled = false;
this.party5GroupBox.Location = new System.Drawing.Point(16, 355);
this.party5GroupBox.Location = new System.Drawing.Point(16, 418);
this.party5GroupBox.Name = "party5GroupBox";
this.party5GroupBox.Size = new System.Drawing.Size(343, 162);
this.party5GroupBox.Size = new System.Drawing.Size(343, 189);
this.party5GroupBox.TabIndex = 12;
this.party5GroupBox.TabStop = false;
this.party5GroupBox.Text = "Pokemon 5";
//
// partyAbility5ComboBox
//
this.partyAbility5ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.partyAbility5ComboBox.FormattingEnabled = true;
this.partyAbility5ComboBox.Location = new System.Drawing.Point(15, 157);
this.partyAbility5ComboBox.Name = "partyAbility5ComboBox";
this.partyAbility5ComboBox.Size = new System.Drawing.Size(121, 21);
this.partyAbility5ComboBox.TabIndex = 18;
//
// partyGender5ComboBox
//
this.partyGender5ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.partyGender5ComboBox.FormattingEnabled = true;
this.partyGender5ComboBox.Items.AddRange(new object[] {
"Default Gender",
"Force Male",
"Force Female"});
this.partyGender5ComboBox.Location = new System.Drawing.Point(156, 157);
this.partyGender5ComboBox.Name = "partyGender5ComboBox";
this.partyGender5ComboBox.Size = new System.Drawing.Size(121, 21);
this.partyGender5ComboBox.TabIndex = 14;
//
// partyPokemonItemPictureBox5
//
this.partyPokemonItemPictureBox5.Image = global::DSPRE.Properties.Resources.IconItem;
@@ -8840,7 +8900,7 @@
//
this.partyIV5UpDown.Location = new System.Drawing.Point(48, 98);
this.partyIV5UpDown.Maximum = new decimal(new int[] {
65535,
255,
0,
0,
0});
@@ -8911,6 +8971,8 @@
//
// party4GroupBox
//
this.party4GroupBox.Controls.Add(this.partyAbility4ComboBox);
this.party4GroupBox.Controls.Add(this.partyGender4ComboBox);
this.party4GroupBox.Controls.Add(this.partyPokemonItemPictureBox4);
this.party4GroupBox.Controls.Add(this.label54);
this.party4GroupBox.Controls.Add(this.label55);
@@ -8923,13 +8985,35 @@
this.party4GroupBox.Controls.Add(this.partyPokemon4PictureBox);
this.party4GroupBox.Controls.Add(this.partyPokemon4ComboBox);
this.party4GroupBox.Enabled = false;
this.party4GroupBox.Location = new System.Drawing.Point(371, 189);
this.party4GroupBox.Location = new System.Drawing.Point(371, 225);
this.party4GroupBox.Name = "party4GroupBox";
this.party4GroupBox.Size = new System.Drawing.Size(343, 162);
this.party4GroupBox.Size = new System.Drawing.Size(343, 185);
this.party4GroupBox.TabIndex = 11;
this.party4GroupBox.TabStop = false;
this.party4GroupBox.Text = "Pokemon 4";
//
// partyAbility4ComboBox
//
this.partyAbility4ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.partyAbility4ComboBox.FormattingEnabled = true;
this.partyAbility4ComboBox.Location = new System.Drawing.Point(15, 157);
this.partyAbility4ComboBox.Name = "partyAbility4ComboBox";
this.partyAbility4ComboBox.Size = new System.Drawing.Size(121, 21);
this.partyAbility4ComboBox.TabIndex = 17;
//
// partyGender4ComboBox
//
this.partyGender4ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.partyGender4ComboBox.FormattingEnabled = true;
this.partyGender4ComboBox.Items.AddRange(new object[] {
"Default Gender",
"Force Male",
"Force Female"});
this.partyGender4ComboBox.Location = new System.Drawing.Point(154, 157);
this.partyGender4ComboBox.Name = "partyGender4ComboBox";
this.partyGender4ComboBox.Size = new System.Drawing.Size(121, 21);
this.partyGender4ComboBox.TabIndex = 16;
//
// partyPokemonItemPictureBox4
//
this.partyPokemonItemPictureBox4.Image = global::DSPRE.Properties.Resources.IconItem;
@@ -9032,7 +9116,7 @@
//
this.partyIV4UpDown.Location = new System.Drawing.Point(48, 98);
this.partyIV4UpDown.Maximum = new decimal(new int[] {
65535,
255,
0,
0,
0});
@@ -9103,6 +9187,8 @@
//
// party3GroupBox
//
this.party3GroupBox.Controls.Add(this.partyAbility3ComboBox);
this.party3GroupBox.Controls.Add(this.partyGender3ComboBox);
this.party3GroupBox.Controls.Add(this.partyPokemonItemPictureBox3);
this.party3GroupBox.Controls.Add(this.label51);
this.party3GroupBox.Controls.Add(this.label52);
@@ -9115,13 +9201,35 @@
this.party3GroupBox.Controls.Add(this.partyPokemon3PictureBox);
this.party3GroupBox.Controls.Add(this.partyPokemon3ComboBox);
this.party3GroupBox.Enabled = false;
this.party3GroupBox.Location = new System.Drawing.Point(16, 189);
this.party3GroupBox.Location = new System.Drawing.Point(16, 225);
this.party3GroupBox.Name = "party3GroupBox";
this.party3GroupBox.Size = new System.Drawing.Size(343, 162);
this.party3GroupBox.Size = new System.Drawing.Size(343, 187);
this.party3GroupBox.TabIndex = 10;
this.party3GroupBox.TabStop = false;
this.party3GroupBox.Text = "Pokemon 3";
//
// partyAbility3ComboBox
//
this.partyAbility3ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.partyAbility3ComboBox.FormattingEnabled = true;
this.partyAbility3ComboBox.Location = new System.Drawing.Point(15, 157);
this.partyAbility3ComboBox.Name = "partyAbility3ComboBox";
this.partyAbility3ComboBox.Size = new System.Drawing.Size(121, 21);
this.partyAbility3ComboBox.TabIndex = 14;
//
// partyGender3ComboBox
//
this.partyGender3ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.partyGender3ComboBox.FormattingEnabled = true;
this.partyGender3ComboBox.Items.AddRange(new object[] {
"Default Gender",
"Force Male",
"Force Female"});
this.partyGender3ComboBox.Location = new System.Drawing.Point(156, 157);
this.partyGender3ComboBox.Name = "partyGender3ComboBox";
this.partyGender3ComboBox.Size = new System.Drawing.Size(121, 21);
this.partyGender3ComboBox.TabIndex = 13;
//
// partyPokemonItemPictureBox3
//
this.partyPokemonItemPictureBox3.Image = global::DSPRE.Properties.Resources.IconItem;
@@ -9224,7 +9332,7 @@
//
this.partyIV3UpDown.Location = new System.Drawing.Point(48, 98);
this.partyIV3UpDown.Maximum = new decimal(new int[] {
65535,
255,
0,
0,
0});
@@ -9295,6 +9403,8 @@
//
// party2GroupBox
//
this.party2GroupBox.Controls.Add(this.partyAbility2ComboBox);
this.party2GroupBox.Controls.Add(this.partyGender2ComboBox);
this.party2GroupBox.Controls.Add(this.partyPokemonItemPictureBox2);
this.party2GroupBox.Controls.Add(this.label48);
this.party2GroupBox.Controls.Add(this.label49);
@@ -9309,11 +9419,33 @@
this.party2GroupBox.Enabled = false;
this.party2GroupBox.Location = new System.Drawing.Point(371, 23);
this.party2GroupBox.Name = "party2GroupBox";
this.party2GroupBox.Size = new System.Drawing.Size(343, 162);
this.party2GroupBox.Size = new System.Drawing.Size(343, 196);
this.party2GroupBox.TabIndex = 10;
this.party2GroupBox.TabStop = false;
this.party2GroupBox.Text = "Pokemon 2";
//
// partyAbility2ComboBox
//
this.partyAbility2ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.partyAbility2ComboBox.FormattingEnabled = true;
this.partyAbility2ComboBox.Location = new System.Drawing.Point(15, 162);
this.partyAbility2ComboBox.Name = "partyAbility2ComboBox";
this.partyAbility2ComboBox.Size = new System.Drawing.Size(121, 21);
this.partyAbility2ComboBox.TabIndex = 18;
//
// partyGender2ComboBox
//
this.partyGender2ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.partyGender2ComboBox.FormattingEnabled = true;
this.partyGender2ComboBox.Items.AddRange(new object[] {
"Default Gender",
"Force Male",
"Force Female"});
this.partyGender2ComboBox.Location = new System.Drawing.Point(154, 162);
this.partyGender2ComboBox.Name = "partyGender2ComboBox";
this.partyGender2ComboBox.Size = new System.Drawing.Size(121, 21);
this.partyGender2ComboBox.TabIndex = 17;
//
// partyPokemonItemPictureBox2
//
this.partyPokemonItemPictureBox2.Image = global::DSPRE.Properties.Resources.IconItem;
@@ -9416,7 +9548,7 @@
//
this.partyIV2UpDown.Location = new System.Drawing.Point(48, 98);
this.partyIV2UpDown.Maximum = new decimal(new int[] {
65535,
255,
0,
0,
0});
@@ -9487,6 +9619,8 @@
//
// party1GroupBox
//
this.party1GroupBox.Controls.Add(this.partyAbility1ComboBox);
this.party1GroupBox.Controls.Add(this.partyGender1ComboBox);
this.party1GroupBox.Controls.Add(this.partyPokemonItemPictureBox1);
this.party1GroupBox.Controls.Add(this.label47);
this.party1GroupBox.Controls.Add(this.label46);
@@ -9501,11 +9635,20 @@
this.party1GroupBox.Enabled = false;
this.party1GroupBox.Location = new System.Drawing.Point(16, 23);
this.party1GroupBox.Name = "party1GroupBox";
this.party1GroupBox.Size = new System.Drawing.Size(343, 162);
this.party1GroupBox.Size = new System.Drawing.Size(343, 196);
this.party1GroupBox.TabIndex = 0;
this.party1GroupBox.TabStop = false;
this.party1GroupBox.Text = "Pokemon 1";
//
// partyAbility1ComboBox
//
this.partyAbility1ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.partyAbility1ComboBox.FormattingEnabled = true;
this.partyAbility1ComboBox.Location = new System.Drawing.Point(15, 162);
this.partyAbility1ComboBox.Name = "partyAbility1ComboBox";
this.partyAbility1ComboBox.Size = new System.Drawing.Size(121, 21);
this.partyAbility1ComboBox.TabIndex = 13;
//
// partyPokemonItemPictureBox1
//
this.partyPokemonItemPictureBox1.Image = global::DSPRE.Properties.Resources.IconItem;
@@ -9608,7 +9751,7 @@
//
this.partyIV1UpDown.Location = new System.Drawing.Point(48, 98);
this.partyIV1UpDown.Maximum = new decimal(new int[] {
65535,
255,
0,
0,
0});
@@ -10136,7 +10279,7 @@
this.tableEditorTabPage.Location = new System.Drawing.Point(4, 23);
this.tableEditorTabPage.Name = "tableEditorTabPage";
this.tableEditorTabPage.Padding = new System.Windows.Forms.Padding(3);
this.tableEditorTabPage.Size = new System.Drawing.Size(1185, 619);
this.tableEditorTabPage.Size = new System.Drawing.Size(1185, 703);
this.tableEditorTabPage.TabIndex = 9;
this.tableEditorTabPage.Text = "Table Editor";
this.tableEditorTabPage.UseVisualStyleBackColor = true;
@@ -10650,8 +10793,8 @@
this.menuStrip1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem,
this.menuViewToolStripMenuItem,
this.aboutToolStripMenuItem,
this.menuViewToolStripMenuItem,
this.aboutToolStripMenuItem1});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
@@ -10905,14 +11048,14 @@
// essentialToolStripMenuItem
//
this.essentialToolStripMenuItem.Name = "essentialToolStripMenuItem";
this.essentialToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.essentialToolStripMenuItem.Size = new System.Drawing.Size(127, 22);
this.essentialToolStripMenuItem.Text = "Essential";
this.essentialToolStripMenuItem.MouseDown += new System.Windows.Forms.MouseEventHandler(this.simpleToolStripMenuItem_MouseDown);
//
// simpleToolStripMenuItem
//
this.simpleToolStripMenuItem.Name = "simpleToolStripMenuItem";
this.simpleToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.simpleToolStripMenuItem.Size = new System.Drawing.Size(127, 22);
this.simpleToolStripMenuItem.Text = "Simple";
this.simpleToolStripMenuItem.MouseDown += new System.Windows.Forms.MouseEventHandler(this.simpleToolStripMenuItem_MouseDown);
//
@@ -10921,14 +11064,14 @@
this.advancedStripMenuItem.Checked = true;
this.advancedStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
this.advancedStripMenuItem.Name = "advancedStripMenuItem";
this.advancedStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.advancedStripMenuItem.Size = new System.Drawing.Size(127, 22);
this.advancedStripMenuItem.Text = "Advanced";
this.advancedStripMenuItem.MouseDown += new System.Windows.Forms.MouseEventHandler(this.simpleToolStripMenuItem_MouseDown);
//
// fullViewToolStripMenuItem
//
this.fullViewToolStripMenuItem.Name = "fullViewToolStripMenuItem";
this.fullViewToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.fullViewToolStripMenuItem.Size = new System.Drawing.Size(127, 22);
this.fullViewToolStripMenuItem.Text = "Complete";
this.fullViewToolStripMenuItem.MouseDown += new System.Windows.Forms.MouseEventHandler(this.simpleToolStripMenuItem_MouseDown);
//
@@ -10945,7 +11088,7 @@
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.statusLabel,
this.toolStripProgressBar});
this.statusStrip1.Location = new System.Drawing.Point(0, 721);
this.statusStrip1.Location = new System.Drawing.Point(0, 805);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(1214, 22);
this.statusStrip1.TabIndex = 13;
@@ -11308,12 +11451,25 @@
//
this.openFileDialog1.FileName = "openFileDialog1";
//
// partyGender1ComboBox
//
this.partyGender1ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.partyGender1ComboBox.FormattingEnabled = true;
this.partyGender1ComboBox.Items.AddRange(new object[] {
"Default Gender",
"Force Male",
"Force Female"});
this.partyGender1ComboBox.Location = new System.Drawing.Point(156, 162);
this.partyGender1ComboBox.Name = "partyGender1ComboBox";
this.partyGender1ComboBox.Size = new System.Drawing.Size(121, 21);
this.partyGender1ComboBox.TabIndex = 12;
//
// MainProgram
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1214, 743);
this.ClientSize = new System.Drawing.Size(1214, 827);
this.Controls.Add(this.versionLabel);
this.Controls.Add(this.languageLabel);
this.Controls.Add(this.gameIcon);
@@ -11327,7 +11483,7 @@
this.MainMenuStrip = this.menuStrip1;
this.MaximizeBox = false;
this.Name = "MainProgram";
this.Text = "DS Pokémon Rom Editor Reloaded 1.9.3 (Nømura, AdAstra/LD3005)";
this.Text = "DS Pokémon Rom Editor Reloaded 1.9.2 (Nømura, AdAstra/LD3005)";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainProgram_FormClosing);
this.mainTabControl.ResumeLayout(false);
this.headerEditorTabPage.ResumeLayout(false);
@@ -12492,6 +12648,18 @@
private System.Windows.Forms.Button glbExportButton;
private System.Windows.Forms.Button sortOWsByIDAscButton;
private System.Windows.Forms.Button sortOWsByIDDescButton;
private System.Windows.Forms.ComboBox partyGender6ComboBox;
private System.Windows.Forms.ComboBox partyGender5ComboBox;
private System.Windows.Forms.ComboBox partyGender4ComboBox;
private System.Windows.Forms.ComboBox partyGender3ComboBox;
private System.Windows.Forms.ComboBox partyGender2ComboBox;
private System.Windows.Forms.ComboBox partyAbility1ComboBox;
private System.Windows.Forms.ComboBox partyAbility6ComboBox;
private System.Windows.Forms.ComboBox partyAbility5ComboBox;
private System.Windows.Forms.ComboBox partyAbility4ComboBox;
private System.Windows.Forms.ComboBox partyAbility3ComboBox;
private System.Windows.Forms.ComboBox partyAbility2ComboBox;
private System.Windows.Forms.ComboBox partyGender1ComboBox;
}
}

View File

@@ -1192,8 +1192,6 @@ namespace DSPRE {
flagVal += (byte)Math.Pow(2, 5);
if (flag6CheckBox.Checked)
flagVal += (byte)Math.Pow(2, 6);
//if (flag7CheckBox.Checked)
// flagVal += (byte)Math.Pow(2, 7);
}
currentHeader.flags = flagVal;
}
@@ -1297,7 +1295,6 @@ namespace DSPRE {
flag4CheckBox.Checked = ba[4];
flag5CheckBox.Checked = ba[5];
flag6CheckBox.Checked = ba[6];
//flag6CheckBox.Checked = ba[7];
}
}
private void eventsTabControl_SelectedIndexChanged(object sender, EventArgs e) {
@@ -1792,9 +1789,6 @@ namespace DSPRE {
case gFamEnum.HGSS:
HeaderHGSS ch = (HeaderHGSS)currentHeader;
ch.locationType = (byte)areaSettingsComboBox.SelectedIndex;
//areaImageLabel.Text = "Area icon";
//areaIconComboBox.Enabled = true;
//areaIconPictureBox.Visible = true;
break;
}
}
@@ -2551,13 +2545,7 @@ namespace DSPRE {
if (gameFamily.Equals(gFamEnum.DP)) {
foreach (ushort r in result) {
HeaderDP hdp;
////Dynamic headers patch unsupported in DP
//if (ROMToolboxDialog.flag_DynamicHeadersPatchApplied || ROMToolboxDialog.CheckFilesDynamicHeadersPatchApplied()) {
// hdp = (HeaderDP)MapHeader.LoadFromFile(RomInfo.gameDirs[DirNames.dynamicHeaders].unpackedDir + "\\" + r.ToString("D4"), r, 0);
//} else {
hdp = (HeaderDP)MapHeader.LoadFromARM9(r);
//}
hdp = (HeaderDP)MapHeader.LoadFromARM9(r);
if (hdp.locationName != 0) {
headerID = hdp.ID;
@@ -2947,6 +2935,16 @@ namespace DSPRE {
#region Variables & Constants
public const int mapEditorSquareSize = 19;
/* Trainer Editor */
private const int POKEMON_NUM_POSSIBLE_ABILITIES = 2;
private const int TRAINER_PARTY_POKEMON_GENDER_DEFAULT_INDEX = 0;
public const int TRAINER_PARTY_POKEMON_GENDER_MALE_INDEX = 1;
public const int TRAINER_PARTY_POKEMON_GENDER_FEMALE_INDEX = 2;
public const int TRAINER_PARTY_POKEMON_ABILITY_SLOT1_INDEX = 0;
public const int TRAINER_PARTY_POKEMON_ABILITY_SLOT2_INDEX = 1;
/* Map Rotation vars */
public bool lRot;
public bool rRot;
@@ -4698,6 +4696,8 @@ namespace DSPRE {
public Rectangle eventMatrixRectangle;
#endregion
#region Subroutines
private void itemsSelectorHelpBtn_Click(object sender, EventArgs e) {
MessageBox.Show("This selector allows you to pick a preset Ground Item script from the game data.\n" +
@@ -6903,14 +6903,12 @@ namespace DSPRE {
}
private void InitBookmarkMargin(Scintilla textArea) {
//TextArea.SetFoldMarginColor(true, IntToColor(BACK_COLOR));
var margin = textArea.Margins[BOOKMARK_MARGIN];
margin.Width = 20;
margin.Sensitive = true;
margin.Type = MarginType.Symbol;
margin.Mask = (1 << BOOKMARK_MARKER);
//margin.Cursor = MarginCursor.Arrow;
var marker = textArea.Markers[BOOKMARK_MARKER];
marker.Symbol = MarkerSymbol.Circle;
@@ -6983,20 +6981,12 @@ namespace DSPRE {
#region Main Menu Commands
//private void selectLineToolStripMenuItem_Click(object sender, EventArgs e) {
// Line line = TextArea.Lines[TextArea.CurrentLine];
// TextArea.SetSelection(line.Position + line.Length, line.Position);
//}
private void scriptEditorWordWrapCheckbox_CheckedChanged(object sender, EventArgs e) {
ScriptTextArea.WrapMode = scriptEditorWordWrapCheckbox.Checked ? ScintillaNET.WrapMode.Word : ScintillaNET.WrapMode.None;
FunctionTextArea.WrapMode = scriptEditorWordWrapCheckbox.Checked ? ScintillaNET.WrapMode.Word : ScintillaNET.WrapMode.None;
ActionTextArea.WrapMode = scriptEditorWordWrapCheckbox.Checked ? ScintillaNET.WrapMode.Word : ScintillaNET.WrapMode.None;
}
//private void indentGuidesCheckbox_CheckedChanged(object sender, EventArgs e) {
// ScriptTextArea.IndentationGuides = scriptEditorIndentGuidesCheckbox.Checked ? IndentView.LookBoth : IndentView.None;
// FunctionTextArea.IndentationGuides = scriptEditorIndentGuidesCheckbox.Checked ? IndentView.LookBoth : IndentView.None;
// ActionTextArea.IndentationGuides = scriptEditorIndentGuidesCheckbox.Checked ? IndentView.LookBoth : IndentView.None;
//}
private void viewWhiteSpacesButton_Click(object sender, EventArgs e) {
ScriptTextArea.ViewWhitespace = scriptEditorWhitespacesCheckbox.Checked ? WhitespaceMode.VisibleAlways : WhitespaceMode.Invisible;
@@ -8170,7 +8160,6 @@ namespace DSPRE {
if (matchingPalette == null) {
statusLabelError("Couldn't find a palette to match " + '"' + findThis + '"', severe: false);
} else {
//palettesListBox.SelectedIndex = 0;
palettesListBox.SelectedItem = matchingPalette;
statusLabelMessage("Ready");
}
@@ -8453,7 +8442,6 @@ namespace DSPRE {
SaveCameraTable(DSUtils.GetOverlayPath(RomInfo.cameraTblOverlayNumber), overlayCameraTblOffset);
}
private void cameraEditorDataGridView_CellValidated(object sender, DataGridViewCellEventArgs e) {
//cameraEditorDataGridView.Columns[0].ValueType = typeof(int);
currentCameraTable[e.RowIndex][e.ColumnIndex] = cameraEditorDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
cameraEditorDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = currentCameraTable[e.RowIndex][e.ColumnIndex];
}
@@ -8538,12 +8526,18 @@ namespace DSPRE {
private List<ComboBox> partyItemsComboboxList = new List<ComboBox>();
private List<GroupBox> partyMovesGroupboxList = new List<GroupBox>();
private List<NumericUpDown> partyLevelUpdownList = new List<NumericUpDown>();
private List<ComboBox> partyGenderComboBoxList = new List<ComboBox>();
private List<ComboBox> partyAbilityComboBoxList = new List<ComboBox>();
private List<NumericUpDown> partyIVUpdownList = new List<NumericUpDown>();
private List<NumericUpDown> partyBallUpdownList = new List<NumericUpDown>();
private List<GroupBox> partyGroupboxList = new List<GroupBox>();
private List<PictureBox> partyPokemonPictureBoxList = new List<PictureBox>();
private List<PictureBox> partyPokemonItemIconList = new List<PictureBox>();
string[] abilityNames;
private Tuple<int, int>[] pokemonSpeciesAbilities;
TrainerFile currentTrainerFile;
PaletteBase trainerPal;
ImageBase trainerTile;
@@ -8591,9 +8585,13 @@ namespace DSPRE {
DirNames.trainerParty,
DirNames.trainerGraphics,
DirNames.textArchives,
DirNames.monIcons
DirNames.monIcons,
DirNames.speciesData
});
int numPokemonSpecies = Directory.GetFiles(RomInfo.gameDirs[DirNames.speciesData].unpackedDir, "*").Count();
pokemonSpeciesAbilities = new Tuple<int, int>[numPokemonSpecies];
RomInfo.SetMonIconsPalTableAddress();
partyPokemonComboboxList.Clear();
@@ -8620,6 +8618,22 @@ namespace DSPRE {
partyLevelUpdownList.Add(partyLevel5UpDown);
partyLevelUpdownList.Add(partyLevel6UpDown);
partyGenderComboBoxList.Clear();
partyGenderComboBoxList.Add(partyGender1ComboBox);
partyGenderComboBoxList.Add(partyGender2ComboBox);
partyGenderComboBoxList.Add(partyGender3ComboBox);
partyGenderComboBoxList.Add(partyGender4ComboBox);
partyGenderComboBoxList.Add(partyGender5ComboBox);
partyGenderComboBoxList.Add(partyGender6ComboBox);
partyAbilityComboBoxList.Clear();
partyAbilityComboBoxList.Add(partyAbility1ComboBox);
partyAbilityComboBoxList.Add(partyAbility2ComboBox);
partyAbilityComboBoxList.Add(partyAbility3ComboBox);
partyAbilityComboBoxList.Add(partyAbility4ComboBox);
partyAbilityComboBoxList.Add(partyAbility5ComboBox);
partyAbilityComboBoxList.Add(partyAbility6ComboBox);
partyIVUpdownList.Clear();
partyIVUpdownList.Add(partyIV1UpDown);
partyIVUpdownList.Add(partyIV2UpDown);
@@ -8683,11 +8697,15 @@ namespace DSPRE {
trainerClassListBox.Items.Add("[" + i.ToString("D3") + "]" + " " + classNames[i]);
}
string[] itemNames = RomInfo.GetItemNames();
string[] pokeNames = RomInfo.GetPokemonNames();
string[] moveNames = RomInfo.GetAttackNames();
abilityNames = RomInfo.GetAbilityNames();
foreach(Control c in trainerItemsGroupBox.Controls) {
pokemonSpeciesAbilities = getPokemonAbilities(numPokemonSpecies);
foreach (Control c in trainerItemsGroupBox.Controls) {
if (c is ComboBox) {
(c as ComboBox).DataSource = new BindingSource(itemNames, string.Empty);
}
@@ -8774,6 +8792,30 @@ namespace DSPRE {
partyIVUpdownList[i].Value = currentTrainerFile.party[i].difficulty;
partyBallUpdownList[i].Value = currentTrainerFile.party[i].ballSeals;
setTrainerPartyPokemonAbilities(i);
if (gameFamily == gFamEnum.HGSS)
{
if (currentTrainerFile.party[i].genderAndAbilityFlags.HasFlag(PartyPokemon.GenderAndAbilityFlags.FORCE_MALE))
partyGenderComboBoxList[i].SelectedIndex = TRAINER_PARTY_POKEMON_GENDER_MALE_INDEX;
else if (currentTrainerFile.party[i].genderAndAbilityFlags.HasFlag(PartyPokemon.GenderAndAbilityFlags.FORCE_FEMALE))
partyGenderComboBoxList[i].SelectedIndex = TRAINER_PARTY_POKEMON_GENDER_FEMALE_INDEX;
else
partyGenderComboBoxList[i].SelectedIndex = TRAINER_PARTY_POKEMON_GENDER_DEFAULT_INDEX;
if (currentTrainerFile.party[i].genderAndAbilityFlags.HasFlag(PartyPokemon.GenderAndAbilityFlags.ABILITY_SLOT2))
partyAbilityComboBoxList[i].SelectedIndex = TRAINER_PARTY_POKEMON_ABILITY_SLOT2_INDEX;
else
partyAbilityComboBoxList[i].SelectedIndex = TRAINER_PARTY_POKEMON_ABILITY_SLOT1_INDEX;
}
else
{
partyGenderComboBoxList[i].SelectedIndex = TRAINER_PARTY_POKEMON_GENDER_DEFAULT_INDEX;
partyGenderComboBoxList[i].Enabled = false;
}
if (currentTrainerFile.party[i].moves == null) {
for (int j = 0; j < Party.MOVES_PER_POKE; j++) {
(partyMovesGroupboxList[i].Controls[j] as ComboBox).SelectedIndex = 0;
@@ -8857,30 +8899,42 @@ namespace DSPRE {
} catch (FormatException) {
return Properties.Resources.IconPokeball;
}
// default:
//partyPokemonPictureBoxList[partyPos].Image = cb.SelectedIndex > 0 ? (Image)Properties.PokePics.ResourceManager.GetObject(FixPokenameString(PokeDatabase.System.pokeNames[(ushort)cb.SelectedIndex])) : global::DSPRE.Properties.Resources.IconPokeball;
}
private void partyPokemon1ComboBox_SelectedIndexChanged(object sender, EventArgs e) {
ShowPartyPokemonPic(0);
//event handler is called before currentTrainerFile is set, need to null check to avoid null object reference
if (currentTrainerFile != null)
setTrainerPartyPokemonAbilities(0);
}
private void partyPokemon2ComboBox_SelectedIndexChanged(object sender, EventArgs e) {
ShowPartyPokemonPic(1);
if (currentTrainerFile != null)
setTrainerPartyPokemonAbilities(1);
}
private void partyPokemon3ComboBox_SelectedIndexChanged(object sender, EventArgs e) {
ShowPartyPokemonPic(2);
if (currentTrainerFile != null)
setTrainerPartyPokemonAbilities(2);
}
private void partyPokemon4ComboBox_SelectedIndexChanged(object sender, EventArgs e) {
ShowPartyPokemonPic(3);
if (currentTrainerFile != null)
setTrainerPartyPokemonAbilities(3);
}
private void partyPokemon5ComboBox_SelectedIndexChanged(object sender, EventArgs e) {
ShowPartyPokemonPic(4);
if (currentTrainerFile != null)
setTrainerPartyPokemonAbilities(4);
}
private void partyPokemon6ComboBox_SelectedIndexChanged(object sender, EventArgs e) {
ShowPartyPokemonPic(5);
if (currentTrainerFile != null)
setTrainerPartyPokemonAbilities(5);
}
private void showTrainerEditorItemPic(byte partyPos) {
@@ -8928,11 +8982,6 @@ namespace DSPRE {
for (int i = Math.Min(currentTrainerFile.trp.partyCount, (int)partyCountUpDown.Value); i < TrainerFile.POKE_IN_PARTY; i++) {
currentTrainerFile.party[i] = new PartyPokemon(currentTrainerFile.trp.chooseItems, currentTrainerFile.trp.chooseMoves);
}
//if (!disableHandlers) {
// RefreshTrainerPartyGUI();
// RefreshTrainerPropertiesGUI();
//}
}
private void trainerMovesCheckBox_CheckedChanged(object sender, EventArgs e) {
@@ -9002,7 +9051,32 @@ namespace DSPRE {
currentTrainerFile.party[i].heldItem = (ushort)partyItemsComboboxList[i].SelectedIndex;
}
currentTrainerFile.party[i].difficulty = (ushort)partyIVUpdownList[i].Value;
currentTrainerFile.party[i].difficulty = (byte)partyIVUpdownList[i].Value;
/* this is a bit weird but if gender is set to anything other than default without setting the ability_slot1 flag it will be slot 2
* so setting the force_female flag but not ability_slot1 flag means the pokemon will be female with ability set to slot 2 (or slot 1 if there is no second ability)
* in order to set gender to not default with ability 1 you must have the ability_slot1 flag set
* gender is never set using this bitfield in the base games but it does work
*/
switch (partyGenderComboBoxList[i].SelectedIndex)
{
case TRAINER_PARTY_POKEMON_GENDER_DEFAULT_INDEX:
currentTrainerFile.party[i].genderAndAbilityFlags = PartyPokemon.GenderAndAbilityFlags.NO_FLAGS;
break;
case TRAINER_PARTY_POKEMON_GENDER_MALE_INDEX:
currentTrainerFile.party[i].genderAndAbilityFlags = PartyPokemon.GenderAndAbilityFlags.FORCE_MALE;
break;
case TRAINER_PARTY_POKEMON_GENDER_FEMALE_INDEX:
currentTrainerFile.party[i].genderAndAbilityFlags = PartyPokemon.GenderAndAbilityFlags.FORCE_FEMALE;
break;
}
if (partyAbilityComboBoxList[i].SelectedIndex == TRAINER_PARTY_POKEMON_ABILITY_SLOT2_INDEX)
currentTrainerFile.party[i].genderAndAbilityFlags |= PartyPokemon.GenderAndAbilityFlags.ABILITY_SLOT2;
else
currentTrainerFile.party[i].genderAndAbilityFlags |= PartyPokemon.GenderAndAbilityFlags.ABILITY_SLOT1;
currentTrainerFile.party[i].ballSeals = (ushort)partyBallUpdownList[i].Value;
}
@@ -9244,7 +9318,6 @@ namespace DSPRE {
}
disableHandlers = false;
//trainerClassListBox_SelectedIndexChanged(null, null);
if ( gameFamily.Equals(gFamEnum.HGSS) && tableEditorIsReady ) {
pbEffectsTrainerCombobox.Items[selectedTrClass] = trainerClassListBox.Items[selectedTrClass];
for (int i = 0; i < vsTrainerEffectsList.Count; i++) {
@@ -9259,6 +9332,49 @@ namespace DSPRE {
private void trClassFramePreviewUpDown_ValueChanged(object sender, EventArgs e) {
UpdateTrainerClassPic(trainerClassPicBox, (int)((NumericUpDown)sender).Value);
}
private Tuple<int, int>[] getPokemonAbilities(int numPokemonSpecies)
{
SpeciesFile species;
var pokemonSpeciesAbilities = new Tuple<int, int>[numPokemonSpecies];
for (int i = 0; i < numPokemonSpecies; i++)
{
species = new SpeciesFile(new FileStream(RomInfo.gameDirs[DirNames.speciesData].unpackedDir + "\\" + i.ToString("D4"), FileMode.Open));
pokemonSpeciesAbilities[i] = new Tuple<int, int>(species.Ability1, species.Ability2);
}
return pokemonSpeciesAbilities;
}
private (string ability1, string ability2) getPokemonAbilityNames(int pokemonID)
{
return (abilityNames[pokemonSpeciesAbilities[pokemonID].Item1],
abilityNames[pokemonSpeciesAbilities[pokemonID].Item2]);
}
private void setTrainerPartyPokemonAbilities(int partyPokemonPosition)
{
(string ability1, string ability2) currentPartyPokemonAbilities = getPokemonAbilityNames(partyPokemonComboboxList[partyPokemonPosition].SelectedIndex);
partyAbilityComboBoxList[partyPokemonPosition].Items.Clear();
partyAbilityComboBoxList[partyPokemonPosition].Items.Add(currentPartyPokemonAbilities.ability1);
//if the name " -" is returned for ability 2 then there is no ability 2
if (!currentPartyPokemonAbilities.ability2.Equals(" -") && gameFamily == gFamEnum.HGSS)
{
partyAbilityComboBoxList[partyPokemonPosition].Items.Add(currentPartyPokemonAbilities.ability2);
partyAbilityComboBoxList[partyPokemonPosition].Enabled = true;
}
else
{
partyAbilityComboBoxList[partyPokemonPosition].Enabled = false;
}
partyAbilityComboBoxList[partyPokemonPosition].SelectedIndex = TRAINER_PARTY_POKEMON_ABILITY_SLOT1_INDEX;
}
#endregion
#region Table Editor

View File

@@ -956,7 +956,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACM
EgAAAk1TRnQBSQFMAgEBCgEAAegBGgHoARoBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
EgAAAk1TRnQBSQFMAgEBCgEAAUgBGwFIARsBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA

View File

@@ -1,7 +1,9 @@
using System;
using ScintillaNET;
using System;
using System.Collections;
using System.IO;
using System.Windows.Forms;
using static DSPRE.ROMFiles.PartyPokemon;
namespace DSPRE.ROMFiles {
public class PartyPokemon : RomFile {
@@ -15,37 +17,39 @@ namespace DSPRE.ROMFiles {
public ushort? pokeID = null;
public ushort formID = 0;
public ushort level = 0;
public ushort difficulty = 0;
public byte difficulty = 0;
public GenderAndAbilityFlags genderAndAbilityFlags;
public ushort ballSeals = 0;
public ushort? heldItem = null;
public ushort[] moves = null;
public enum GenderAndAbilityFlags
{
NO_FLAGS = 0,
FORCE_MALE = 0x1,
FORCE_FEMALE = 0x2,
ABILITY_SLOT1 = 0x10,
ABILITY_SLOT2 = 0x20
}
#endregion
#region Constructor
public PartyPokemon(bool hasItems = false, bool hasMoves = false) {
UpdateItemsAndMoves(hasItems, hasMoves);
public PartyPokemon(bool chooseItems = false, bool chooseMoves = false) {
UpdateItemsAndMoves(chooseItems, chooseMoves);
}
public PartyPokemon(ushort difficulty, ushort Level, ushort pokeNum, ushort ballSealConfig, ushort? heldItem = null, ushort[] moves = null) {
public PartyPokemon(byte difficulty, GenderAndAbilityFlags genderAndAbilityFlags, ushort Level, ushort pokeNum, ushort ballSealConfig, ushort? heldItem = null, ushort[] moves = null) {
pokeID = pokeNum;
level = Level;
this.difficulty = difficulty;
this.genderAndAbilityFlags = genderAndAbilityFlags;
ballSeals = ballSealConfig;
this.heldItem = heldItem;
this.moves = moves;
}
public PartyPokemon(ushort difficulty, ushort Level, ushort pokeNum, ushort? heldItem = null, ushort[] moves = null)
{
// Simply adding a new constructor for Diamond and Pearl since they dont have ball seal config
pokeID = pokeNum;
level = Level;
this.difficulty = difficulty;
this.heldItem = heldItem;
this.moves = moves;
}
public PartyPokemon(ushort difficulty, ushort Level, ushort pokeNum, ushort formNum, ushort ballSealConfig, ushort? heldItem = null, ushort[] moves = null) :
this(difficulty, Level, pokeNum, ballSealConfig, heldItem, moves) {
public PartyPokemon(byte difficulty, GenderAndAbilityFlags genderAndAbilityFlags, ushort Level, ushort pokeNum, ushort formNum, ushort ballSealConfig, ushort? heldItem = null, ushort[] moves = null) :
this(difficulty, genderAndAbilityFlags, Level, pokeNum, ballSealConfig, heldItem, moves) {
formID = formNum;
}
@@ -53,6 +57,7 @@ namespace DSPRE.ROMFiles {
MemoryStream newData = new MemoryStream();
using (BinaryWriter writer = new BinaryWriter(newData)) {
writer.Write(difficulty);
writer.Write((byte)genderAndAbilityFlags);
writer.Write(level);
writer.Write(pokeID ?? 0);
@@ -65,16 +70,15 @@ namespace DSPRE.ROMFiles {
writer.Write(move);
}
}
if(RomInfo.gameFamily == RomInfo.gFamEnum.HGSS || RomInfo.gameFamily == RomInfo.gFamEnum.Plat)
writer.Write(ballSeals); // Diamond and Pearl apparently dont save ball capsule data in enemy trainer pokedata!!!
writer.Write(ballSeals);
}
return newData.ToArray();
}
public void UpdateItemsAndMoves(bool hasItems = false, bool hasMoves = false) {
if (hasItems) {
public void UpdateItemsAndMoves(bool chooseItems = false, bool chooseMoves = false) {
if (chooseItems) {
this.heldItem = 0;
}
if (hasMoves) {
if (chooseMoves) {
this.moves = new ushort[4];
}
}
@@ -118,8 +122,8 @@ namespace DSPRE.ROMFiles {
trainerID = ID;
using (BinaryReader reader = new BinaryReader(trainerPropertiesStream)) {
byte flags = reader.ReadByte();
chooseMoves = ((flags >> 0) & 1) != 0;
chooseItems = ((flags >> 1) & 1) != 0;
chooseMoves = (flags & 1) != 0;
chooseItems = (flags & 2) != 0;
trainerClass = reader.ReadByte();
trDataUnknown = reader.ReadByte();
@@ -201,19 +205,20 @@ namespace DSPRE.ROMFiles {
trp.partyCount = (byte)((flags & 28) >> 2);
}
int divisor = 8;
int dividend = 8;
if (trp.chooseMoves) {
divisor += Party.MOVES_PER_POKE * sizeof(ushort);
dividend += Party.MOVES_PER_POKE * sizeof(ushort);
}
if (trp.chooseItems) {
divisor += sizeof(ushort);
dividend += sizeof(ushort);
}
int endval = Math.Min((int)(partyData.Length - 1 / divisor), trp.partyCount);
int endval = Math.Min((int)(partyData.Length - 1 / dividend), trp.partyCount);
this.content = new PartyPokemon[maxPoke];
for (int i = 0; i < endval; i++) {
ushort unknown1 = reader.ReadUInt16();
byte difficulty = reader.ReadByte();
GenderAndAbilityFlags genderAndAbilityFlags = (GenderAndAbilityFlags)reader.ReadByte();
ushort level = reader.ReadUInt16();
ushort monFull = reader.ReadUInt16();
@@ -234,11 +239,7 @@ namespace DSPRE.ROMFiles {
}
}
if (RomInfo.gameFamily == RomInfo.gFamEnum.HGSS || RomInfo.gameFamily == RomInfo.gFamEnum.Plat) {
content[i] = new PartyPokemon(unknown1, level, pokemon, form_no, reader.ReadUInt16(), heldItem, moves);
} else {
content[i] = new PartyPokemon(unknown1, level, pokemon, form_no, heldItem, moves); // Diamond and Pearl apparently dont save ball capsule data in enemy trainer pokedata!!!
}
content[i] = new PartyPokemon(difficulty, genderAndAbilityFlags, level, pokemon, form_no, reader.ReadUInt16(), heldItem, moves);
}
for (int i = endval; i < maxPoke; i++) {
content[i] = new PartyPokemon();
@@ -262,7 +263,12 @@ namespace DSPRE.ROMFiles {
return "Empty";
} else {
string buffer = "";
byte nonEmptyCtr = CountNonEmptyMons();
byte nonEmptyCtr = 0;
foreach(PartyPokemon p in this.content) {
if (!p.CheckEmpty()) {
nonEmptyCtr++;
}
}
buffer += nonEmptyCtr + " Poke ";
if (this.trp.chooseMoves) {
buffer += ", moves ";
@@ -273,18 +279,6 @@ namespace DSPRE.ROMFiles {
return buffer;
}
}
public byte CountNonEmptyMons() {
byte nonEmptyCtr = 0;
foreach (PartyPokemon p in this.content) {
if (!p.CheckEmpty()) {
nonEmptyCtr++;
}
}
return nonEmptyCtr;
}
public override byte[] ToByteArray() {
MemoryStream newData = new MemoryStream();
using (BinaryWriter writer = new BinaryWriter(newData)) {
@@ -308,7 +302,6 @@ namespace DSPRE.ROMFiles {
public class TrainerFile : RomFile {
public const int POKE_IN_PARTY = 6;
public static readonly string NAME_NOT_FOUND = "NAME READ ERROR";
public static int maxNameLen = 7;
#region Fields
public string name;
@@ -335,6 +328,7 @@ namespace DSPRE.ROMFiles {
MemoryStream newData = new MemoryStream();
using (BinaryWriter writer = new BinaryWriter(newData)) {
writer.Write(name);
byte[] trDat = trp.ToByteArray();
writer.Write((byte)trDat.Length);
writer.Write(trDat);
@@ -348,8 +342,7 @@ namespace DSPRE.ROMFiles {
public void SaveToFileExplorePath(string suggestedFileName, bool showSuccessMessage = true) {
SaveToFileExplorePath("Gen IV Trainer File", "trf", suggestedFileName, showSuccessMessage);
}
}
#endregion
}

View File

@@ -56,6 +56,7 @@ namespace DSPRE {
public static uint monIconPalTableAddress { get; private set; }
public static int nullEncounterID { get; private set; }
public static int abilityNamesTextNumber { get; private set; }
public static int attackNamesTextNumber { get; private set; }
public static int[] pokemonNamesTextNumbers { get; private set; }
public static int itemNamesTextNumber { get; private set; }
@@ -109,6 +110,8 @@ namespace DSPRE {
German
}
public enum DirNames : byte {
speciesData,
synthOverlay,
dynamicHeaders,
@@ -169,6 +172,7 @@ namespace DSPRE {
SetHeaderTableOffset();
SetNullEncounterID();
SetAbilityNamesTextNumber();
SetAttackNamesTextNumber();
SetPokemonNamesTextNumber();
SetItemNamesTextNumber();
@@ -759,6 +763,25 @@ namespace DSPRE {
break;
}
}
private void SetAbilityNamesTextNumber()
{
switch (gameFamily)
{
case gFamEnum.DP:
abilityNamesTextNumber = 552;
break;
case gFamEnum.Plat:
abilityNamesTextNumber = 610;
break;
case gFamEnum.HGSS:
abilityNamesTextNumber = 720;
break;
default:
break;
}
}
private void SetAttackNamesTextNumber() {
switch (gameFamily) {
case gFamEnum.DP:
@@ -862,6 +885,7 @@ namespace DSPRE {
return itemNames.messages.GetRange(startIndex, count == null ? itemNames.messages.Count-1 : (int)count).ToArray();
}
public static string[] GetPokemonNames() => new TextArchive(pokemonNamesTextNumbers[0]).messages.ToArray();
public static string[] GetAbilityNames() => new TextArchive(abilityNamesTextNumber).messages.ToArray();
public static string[] GetAttackNames() => new TextArchive(attackNamesTextNumber).messages.ToArray();
public int GetAreaDataCount() => Directory.GetFiles(gameDirs[DirNames.areaData].unpackedDir).Length;
public int GetMapTexturesCount() => Directory.GetFiles(gameDirs[DirNames.mapTextures].unpackedDir).Length;
@@ -948,6 +972,7 @@ namespace DSPRE {
suffix = "_release";
packedDirsDict = new Dictionary<DirNames, string>() {
[DirNames.speciesData] = @"data\poketool\personal\personal.narc",
[DirNames.synthOverlay] = @"data\data\weather_sys.narc",
[DirNames.textArchives] = @"data\msgdata\msg.narc",
@@ -976,6 +1001,7 @@ namespace DSPRE {
break;
case gFamEnum.Plat:
packedDirsDict = new Dictionary<DirNames, string>() {
[DirNames.speciesData] = @"data\poketool\personal\pl_personal.narc",
[DirNames.synthOverlay] = @"data\data\weather_sys.narc",
[DirNames.dynamicHeaders] = @"data\debug\cb_edit\d_test.narc",
@@ -1006,6 +1032,7 @@ namespace DSPRE {
break;
case gFamEnum.HGSS:
packedDirsDict = new Dictionary<DirNames, string>() {
[DirNames.speciesData] = @"data\a\0\0\2",
[DirNames.synthOverlay] = @"data\a\0\2\8",
[DirNames.dynamicHeaders] = @"data\a\0\5\0",