diff --git a/pk3DS/Main.Designer.cs b/pk3DS/Main.Designer.cs
index f3f7db8..bbf6519 100644
--- a/pk3DS/Main.Designer.cs
+++ b/pk3DS/Main.Designer.cs
@@ -62,6 +62,7 @@ private void InitializeComponent()
this.unPackBCLIMToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_BLZ = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_LZ11 = new System.Windows.Forms.ToolStripMenuItem();
+ this.Menu_Shuffler = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_Rebuild = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_RomFS = new System.Windows.Forms.ToolStripMenuItem();
this.Menu_ExeFS = new System.Windows.Forms.ToolStripMenuItem();
@@ -78,7 +79,7 @@ private void InitializeComponent()
this.B_Gift = new System.Windows.Forms.Button();
this.B_TypeChart = new System.Windows.Forms.Button();
this.B_Starter = new System.Windows.Forms.Button();
- this.Menu_Shuffler = new System.Windows.Forms.ToolStripMenuItem();
+ this.B_Static = new System.Windows.Forms.Button();
this.GB_RomFS.SuspendLayout();
this.GB_ExeFS.SuspendLayout();
this.menuStrip1.SuspendLayout();
@@ -396,7 +397,7 @@ private void InitializeComponent()
this.Menu_Rebuild,
this.Menu_SMDH});
this.Menu_Tools.Name = "Menu_Tools";
- this.Menu_Tools.Size = new System.Drawing.Size(48, 20);
+ this.Menu_Tools.Size = new System.Drawing.Size(47, 20);
this.Menu_Tools.Text = "Tools";
//
// Menu_Restore
@@ -439,6 +440,14 @@ private void InitializeComponent()
this.Menu_LZ11.Text = "(de)Compress LZ11";
this.Menu_LZ11.Click += new System.EventHandler(this.Menu_LZ11_Click);
//
+ // Menu_Shuffler
+ //
+ this.Menu_Shuffler.Enabled = false;
+ this.Menu_Shuffler.Name = "Menu_Shuffler";
+ this.Menu_Shuffler.Size = new System.Drawing.Size(176, 22);
+ this.Menu_Shuffler.Text = "GARC Shuffler";
+ this.Menu_Shuffler.Click += new System.EventHandler(this.Menu_Shuffler_Click);
+ //
// Menu_Rebuild
//
this.Menu_Rebuild.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -552,6 +561,7 @@ private void InitializeComponent()
//
this.GB_CRO.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
+ this.GB_CRO.Controls.Add(this.B_Static);
this.GB_CRO.Controls.Add(this.B_Gift);
this.GB_CRO.Controls.Add(this.B_TypeChart);
this.GB_CRO.Controls.Add(this.B_Starter);
@@ -593,13 +603,15 @@ private void InitializeComponent()
this.B_Starter.UseVisualStyleBackColor = true;
this.B_Starter.Click += new System.EventHandler(this.B_Starter_Click);
//
- // Menu_Shuffler
+ // B_Static
//
- this.Menu_Shuffler.Enabled = false;
- this.Menu_Shuffler.Name = "Menu_Shuffler";
- this.Menu_Shuffler.Size = new System.Drawing.Size(176, 22);
- this.Menu_Shuffler.Text = "GARC Shuffler";
- this.Menu_Shuffler.Click += new System.EventHandler(this.Menu_Shuffler_Click);
+ this.B_Static.Location = new System.Drawing.Point(324, 19);
+ this.B_Static.Name = "B_Static";
+ this.B_Static.Size = new System.Drawing.Size(100, 23);
+ this.B_Static.TabIndex = 3;
+ this.B_Static.Text = "Static Encounters";
+ this.B_Static.UseVisualStyleBackColor = true;
+ this.B_Static.Click += new System.EventHandler(this.B_Static_Click);
//
// Main
//
@@ -684,5 +696,6 @@ private void InitializeComponent()
private System.Windows.Forms.ToolStripMenuItem Menu_CRO;
private System.Windows.Forms.Button B_Gift;
private System.Windows.Forms.ToolStripMenuItem Menu_Shuffler;
+ private System.Windows.Forms.Button B_Static;
}
}
\ No newline at end of file
diff --git a/pk3DS/Main.cs b/pk3DS/Main.cs
index b3bd487..9c5e454 100644
--- a/pk3DS/Main.cs
+++ b/pk3DS/Main.cs
@@ -727,6 +727,20 @@ private void B_Gift_Click(object sender, EventArgs e)
}
new Gifts().ShowDialog();
}
+ private void B_Static_Click(object sender, EventArgs e)
+ {
+ if (threadActive()) return;
+ if (DialogResult.Yes != Util.Prompt(MessageBoxButtons.YesNo,
+ "CRO Editing causes crashes if you do not patch the RO module.", "Continue anyway?"))
+ return;
+ string CRO = Path.Combine(RomFSPath, "DllField.cro");
+ if (!File.Exists(CRO))
+ {
+ Util.Error("File Missing!", "DllField.cro was not found in your RomFS folder!");
+ return;
+ }
+ new StaticEncounters().ShowDialog();
+ }
private void backupCROs(bool overwrite, string path)
{
if (!Directory.Exists(path))
diff --git a/pk3DS/Structs.cs b/pk3DS/Structs.cs
index 9e3c7ab..06d59e5 100644
--- a/pk3DS/Structs.cs
+++ b/pk3DS/Structs.cs
@@ -872,6 +872,49 @@ public byte[] Write()
}
}
}
+ public class EncounterStatic
+ {
+ // All
+ public readonly byte[] Data;
+
+ public ushort Species
+ {
+ get { return BitConverter.ToUInt16(Data, 0x0); }
+ set { BitConverter.GetBytes(value).CopyTo(Data, 0x0); }
+ }
+ public byte Form { get { return Data[0x2]; } set { Data[0x2] = value; } }
+ public byte Level { get { return Data[0x3]; } set { Data[0x3] = value; } }
+ public int HeldItem
+ {
+ get
+ {
+ int item = BitConverter.ToInt16(Data, 0x4);
+ if (item < 0) item = 0;
+ return item;
+ }
+ set
+ {
+ if (value == 0) value = -1;
+ BitConverter.GetBytes((short)value).CopyTo(Data, 0x4);
+ }
+ }
+
+ public bool ShinyLock { get { return (Data[0x6] & 2) >> 1 == 1; } set { Data[0x6] = (byte)(Data[0x6] & ~2 | (value ? 2 : 0)); } }
+ public int Gender { get { return (Data[0x6] & 0xC) >> 2; } set { Data[0x6] = (byte)(Data[0x6] & ~0xC | ((value & 3) << 2)); } }
+ public int Ability { get { return (Data[0x6] & 0x70) >> 4; } set { Data[0x6] = (byte)(Data[0x6] & ~0x70 | ((value & 7) << 4)); } }
+
+ public bool IV3 { get { return (Data[0x7] & 1) >> 0 == 1; } set { Data[0x7] = (byte)(Data[0x7] & ~1 | (value ? 1 : 0)); } }
+ public bool IV3_1 { get { return (Data[0x7] & 2) >> 1 == 1; } set { Data[0x7] = (byte)(Data[0x7] & ~2 | (value ? 2 : 0)); } }
+
+ public EncounterStatic(byte[] data)
+ {
+ Data = (byte[])data.Clone();
+ }
+ public byte[] Write()
+ {
+ return (byte[])Data.Clone();
+ }
+ }
public class MegaEvolutions
{
public ushort[] Form, Method, Argument, u6;
diff --git a/pk3DS/Subforms/StaticEncounters.Designer.cs b/pk3DS/Subforms/StaticEncounters.Designer.cs
new file mode 100644
index 0000000..acfed48
--- /dev/null
+++ b/pk3DS/Subforms/StaticEncounters.Designer.cs
@@ -0,0 +1,318 @@
+namespace pk3DS
+{
+ partial class StaticEncounters
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.B_Cancel = new System.Windows.Forms.Button();
+ this.B_Save = new System.Windows.Forms.Button();
+ this.LB_Gifts = new System.Windows.Forms.ListBox();
+ this.CB_Species = new System.Windows.Forms.ComboBox();
+ this.L_Species = new System.Windows.Forms.Label();
+ this.NUD_Level = new System.Windows.Forms.NumericUpDown();
+ this.L_Level = new System.Windows.Forms.Label();
+ this.NUD_Form = new System.Windows.Forms.NumericUpDown();
+ this.L_Form = new System.Windows.Forms.Label();
+ this.B_RandAll = new System.Windows.Forms.Button();
+ this.L_HeldItem = new System.Windows.Forms.Label();
+ this.CB_HeldItem = new System.Windows.Forms.ComboBox();
+ this.NUD_Ability = new System.Windows.Forms.NumericUpDown();
+ this.L_Ability = new System.Windows.Forms.Label();
+ this.NUD_Gender = new System.Windows.Forms.NumericUpDown();
+ this.L_Gender = new System.Windows.Forms.Label();
+ this.CHK_3IV = new System.Windows.Forms.CheckBox();
+ this.CHK_NoShiny = new System.Windows.Forms.CheckBox();
+ this.CHK_3IV_2 = new System.Windows.Forms.CheckBox();
+ this.label1 = new System.Windows.Forms.Label();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_Level)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_Form)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_Ability)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_Gender)).BeginInit();
+ this.SuspendLayout();
+ //
+ // B_Cancel
+ //
+ this.B_Cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.B_Cancel.Location = new System.Drawing.Point(211, 296);
+ this.B_Cancel.Name = "B_Cancel";
+ this.B_Cancel.Size = new System.Drawing.Size(70, 23);
+ this.B_Cancel.TabIndex = 467;
+ this.B_Cancel.Text = "Cancel";
+ this.B_Cancel.UseVisualStyleBackColor = true;
+ this.B_Cancel.Click += new System.EventHandler(this.B_Cancel_Click);
+ //
+ // B_Save
+ //
+ this.B_Save.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.B_Save.Location = new System.Drawing.Point(282, 296);
+ this.B_Save.Name = "B_Save";
+ this.B_Save.Size = new System.Drawing.Size(70, 23);
+ this.B_Save.TabIndex = 466;
+ this.B_Save.Text = "Save";
+ this.B_Save.UseVisualStyleBackColor = true;
+ this.B_Save.Click += new System.EventHandler(this.B_Save_Click);
+ //
+ // LB_Gifts
+ //
+ this.LB_Gifts.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.LB_Gifts.FormattingEnabled = true;
+ this.LB_Gifts.Location = new System.Drawing.Point(12, 12);
+ this.LB_Gifts.Name = "LB_Gifts";
+ this.LB_Gifts.Size = new System.Drawing.Size(110, 303);
+ this.LB_Gifts.TabIndex = 468;
+ this.LB_Gifts.SelectedIndexChanged += new System.EventHandler(this.changeIndex);
+ //
+ // CB_Species
+ //
+ this.CB_Species.FormattingEnabled = true;
+ this.CB_Species.Location = new System.Drawing.Point(196, 12);
+ this.CB_Species.Name = "CB_Species";
+ this.CB_Species.Size = new System.Drawing.Size(121, 21);
+ this.CB_Species.TabIndex = 469;
+ this.CB_Species.SelectedIndexChanged += new System.EventHandler(this.changeSpecies);
+ //
+ // L_Species
+ //
+ this.L_Species.Location = new System.Drawing.Point(96, 12);
+ this.L_Species.Name = "L_Species";
+ this.L_Species.Size = new System.Drawing.Size(94, 21);
+ this.L_Species.TabIndex = 477;
+ this.L_Species.Text = "Species:";
+ this.L_Species.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // NUD_Level
+ //
+ this.NUD_Level.Location = new System.Drawing.Point(196, 66);
+ this.NUD_Level.Name = "NUD_Level";
+ this.NUD_Level.Size = new System.Drawing.Size(41, 20);
+ this.NUD_Level.TabIndex = 479;
+ this.NUD_Level.Value = new decimal(new int[] {
+ 100,
+ 0,
+ 0,
+ 0});
+ //
+ // L_Level
+ //
+ this.L_Level.Location = new System.Drawing.Point(97, 64);
+ this.L_Level.Name = "L_Level";
+ this.L_Level.Size = new System.Drawing.Size(94, 21);
+ this.L_Level.TabIndex = 480;
+ this.L_Level.Text = "Level:";
+ this.L_Level.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // NUD_Form
+ //
+ this.NUD_Form.Location = new System.Drawing.Point(283, 66);
+ this.NUD_Form.Name = "NUD_Form";
+ this.NUD_Form.Size = new System.Drawing.Size(34, 20);
+ this.NUD_Form.TabIndex = 481;
+ //
+ // L_Form
+ //
+ this.L_Form.Location = new System.Drawing.Point(189, 64);
+ this.L_Form.Name = "L_Form";
+ this.L_Form.Size = new System.Drawing.Size(94, 21);
+ this.L_Form.TabIndex = 482;
+ this.L_Form.Text = "Form:";
+ this.L_Form.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // B_RandAll
+ //
+ this.B_RandAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.B_RandAll.Location = new System.Drawing.Point(128, 296);
+ this.B_RandAll.Name = "B_RandAll";
+ this.B_RandAll.Size = new System.Drawing.Size(83, 23);
+ this.B_RandAll.TabIndex = 496;
+ this.B_RandAll.Text = "Randomize All";
+ this.B_RandAll.UseVisualStyleBackColor = true;
+ this.B_RandAll.Click += new System.EventHandler(this.B_RandAll_Click);
+ //
+ // L_HeldItem
+ //
+ this.L_HeldItem.Location = new System.Drawing.Point(96, 38);
+ this.L_HeldItem.Name = "L_HeldItem";
+ this.L_HeldItem.Size = new System.Drawing.Size(94, 21);
+ this.L_HeldItem.TabIndex = 478;
+ this.L_HeldItem.Text = "Held Item:";
+ this.L_HeldItem.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // CB_HeldItem
+ //
+ this.CB_HeldItem.FormattingEnabled = true;
+ this.CB_HeldItem.Location = new System.Drawing.Point(196, 39);
+ this.CB_HeldItem.Name = "CB_HeldItem";
+ this.CB_HeldItem.Size = new System.Drawing.Size(121, 21);
+ this.CB_HeldItem.TabIndex = 470;
+ //
+ // NUD_Ability
+ //
+ this.NUD_Ability.Location = new System.Drawing.Point(284, 91);
+ this.NUD_Ability.Maximum = new decimal(new int[] {
+ 3,
+ 0,
+ 0,
+ 0});
+ this.NUD_Ability.Name = "NUD_Ability";
+ this.NUD_Ability.Size = new System.Drawing.Size(34, 20);
+ this.NUD_Ability.TabIndex = 492;
+ //
+ // L_Ability
+ //
+ this.L_Ability.Location = new System.Drawing.Point(190, 89);
+ this.L_Ability.Name = "L_Ability";
+ this.L_Ability.Size = new System.Drawing.Size(94, 21);
+ this.L_Ability.TabIndex = 493;
+ this.L_Ability.Text = "Ability:";
+ this.L_Ability.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // NUD_Gender
+ //
+ this.NUD_Gender.Location = new System.Drawing.Point(284, 117);
+ this.NUD_Gender.Maximum = new decimal(new int[] {
+ 2,
+ 0,
+ 0,
+ 0});
+ this.NUD_Gender.Name = "NUD_Gender";
+ this.NUD_Gender.Size = new System.Drawing.Size(34, 20);
+ this.NUD_Gender.TabIndex = 494;
+ //
+ // L_Gender
+ //
+ this.L_Gender.Location = new System.Drawing.Point(190, 115);
+ this.L_Gender.Name = "L_Gender";
+ this.L_Gender.Size = new System.Drawing.Size(94, 21);
+ this.L_Gender.TabIndex = 495;
+ this.L_Gender.Text = "Gender:";
+ this.L_Gender.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // CHK_3IV
+ //
+ this.CHK_3IV.AutoSize = true;
+ this.CHK_3IV.Location = new System.Drawing.Point(132, 118);
+ this.CHK_3IV.Name = "CHK_3IV";
+ this.CHK_3IV.Size = new System.Drawing.Size(42, 17);
+ this.CHK_3IV.TabIndex = 497;
+ this.CHK_3IV.Text = "3IV";
+ this.CHK_3IV.UseVisualStyleBackColor = true;
+ //
+ // CHK_NoShiny
+ //
+ this.CHK_NoShiny.AutoSize = true;
+ this.CHK_NoShiny.Location = new System.Drawing.Point(132, 92);
+ this.CHK_NoShiny.Name = "CHK_NoShiny";
+ this.CHK_NoShiny.Size = new System.Drawing.Size(79, 17);
+ this.CHK_NoShiny.TabIndex = 498;
+ this.CHK_NoShiny.Text = "Shiny Lock";
+ this.CHK_NoShiny.UseVisualStyleBackColor = true;
+ //
+ // CHK_3IV_2
+ //
+ this.CHK_3IV_2.AutoSize = true;
+ this.CHK_3IV_2.Location = new System.Drawing.Point(132, 141);
+ this.CHK_3IV_2.Name = "CHK_3IV_2";
+ this.CHK_3IV_2.Size = new System.Drawing.Size(54, 17);
+ this.CHK_3IV_2.TabIndex = 499;
+ this.CHK_3IV_2.Text = "3IV_2";
+ this.CHK_3IV_2.UseVisualStyleBackColor = true;
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(201, 142);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(117, 130);
+ this.label1.TabIndex = 500;
+ this.label1.Text = "Ability:\r\n0: Random\r\n1: Ability 0\r\n2: Ability 1\r\n3: Hidden\r\n\r\nGender:\r\n0: Random/" +
+ "Genderless\r\n1: Male\r\n2: Female";
+ //
+ // StaticEncounters
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(364, 331);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.CHK_3IV_2);
+ this.Controls.Add(this.CHK_NoShiny);
+ this.Controls.Add(this.CHK_3IV);
+ this.Controls.Add(this.B_RandAll);
+ this.Controls.Add(this.L_Gender);
+ this.Controls.Add(this.NUD_Gender);
+ this.Controls.Add(this.LB_Gifts);
+ this.Controls.Add(this.NUD_Level);
+ this.Controls.Add(this.L_Form);
+ this.Controls.Add(this.NUD_Form);
+ this.Controls.Add(this.CB_HeldItem);
+ this.Controls.Add(this.CB_Species);
+ this.Controls.Add(this.B_Cancel);
+ this.Controls.Add(this.B_Save);
+ this.Controls.Add(this.L_Level);
+ this.Controls.Add(this.L_HeldItem);
+ this.Controls.Add(this.L_Species);
+ this.Controls.Add(this.L_Ability);
+ this.Controls.Add(this.NUD_Ability);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.MaximizeBox = false;
+ this.MinimumSize = new System.Drawing.Size(380, 370);
+ this.Name = "StaticEncounters";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Static Encounter Editor";
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_Level)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_Form)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_Ability)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_Gender)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button B_Cancel;
+ private System.Windows.Forms.Button B_Save;
+ private System.Windows.Forms.ListBox LB_Gifts;
+ private System.Windows.Forms.ComboBox CB_Species;
+ private System.Windows.Forms.Label L_Species;
+ private System.Windows.Forms.NumericUpDown NUD_Level;
+ private System.Windows.Forms.Label L_Level;
+ private System.Windows.Forms.NumericUpDown NUD_Form;
+ private System.Windows.Forms.Label L_Form;
+ private System.Windows.Forms.Button B_RandAll;
+ private System.Windows.Forms.Label L_Gender;
+ private System.Windows.Forms.NumericUpDown NUD_Gender;
+ private System.Windows.Forms.Label L_Ability;
+ private System.Windows.Forms.NumericUpDown NUD_Ability;
+ private System.Windows.Forms.ComboBox CB_HeldItem;
+ private System.Windows.Forms.Label L_HeldItem;
+ private System.Windows.Forms.CheckBox CHK_3IV;
+ private System.Windows.Forms.CheckBox CHK_NoShiny;
+ private System.Windows.Forms.CheckBox CHK_3IV_2;
+ private System.Windows.Forms.Label label1;
+ }
+}
\ No newline at end of file
diff --git a/pk3DS/Subforms/StaticEncounters.cs b/pk3DS/Subforms/StaticEncounters.cs
new file mode 100644
index 0000000..0bcbc4c
--- /dev/null
+++ b/pk3DS/Subforms/StaticEncounters.cs
@@ -0,0 +1,162 @@
+using System;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace pk3DS
+{
+ public partial class StaticEncounters : Form
+ {
+ public StaticEncounters()
+ {
+ specieslist[0] = "---";
+ Array.Resize(ref specieslist, 722);
+ if (!File.Exists(FieldPath))
+ {
+ Util.Error("CRO does not exist! Closing.", FieldPath);
+ Close();
+ }
+ InitializeComponent();
+
+ specieslist[0] = "---";
+ abilitylist[0] = itemlist[0] = movelist[0] = "(None)"; // blank == -1
+
+ CB_Species.Items.Clear();
+ foreach (string s in specieslist)
+ CB_Species.Items.Add(s);
+ CB_HeldItem.Items.Clear();
+ foreach (string s in itemlist)
+ CB_HeldItem.Items.Add(s);
+ loadData();
+ }
+ private readonly string FieldPath = Path.Combine(Main.RomFSPath, "DllField.cro");
+ private byte[] FieldData;
+ private readonly int fieldOffset = Main.oras ? 0xF1B20 : 0xEE478;
+ private const int fieldSize = 0xC;
+ private readonly int count = Main.oras ? 0x3B : 0xC;
+ private EncounterStatic[] GiftData;
+ private readonly string[] abilitylist = Main.getText(Main.oras ? 37 : 34);
+ private readonly string[] movelist = Main.getText(Main.oras ? 14 : 13);
+ private readonly string[] itemlist = Main.getText(Main.oras ? 114 : 96);
+ private readonly string[] specieslist = Main.getText(Main.oras ? 98 : 80);
+ private void B_Save_Click(object sender, EventArgs e)
+ {
+ saveEntry();
+ saveData();
+ Close();
+ }
+ private void B_Cancel_Click(object sender, EventArgs e)
+ {
+ Close();
+ }
+ private void loadData()
+ {
+ FieldData = File.ReadAllBytes(FieldPath);
+ GiftData = new EncounterStatic[count];
+ LB_Gifts.Items.Clear();
+ for (int i = 0; i < GiftData.Length; i++)
+ {
+ GiftData[i] = new EncounterStatic(FieldData.Skip(fieldOffset + i * fieldSize).Take(fieldSize).ToArray());
+ LB_Gifts.Items.Add($"{i.ToString("00")} - {specieslist[GiftData[i].Species]}");
+ }
+ loaded = true;
+ LB_Gifts.SelectedIndex = 0;
+ }
+ private void saveData()
+ {
+ for (int i = 0; i < GiftData.Length; i++)
+ {
+ int offset = fieldOffset + i*fieldSize;
+ // Write new data
+ Array.Copy(GiftData[i].Write(), 0, FieldData, offset, fieldSize);
+ }
+ File.WriteAllBytes(FieldPath, FieldData);
+ }
+
+ private int entry = -1;
+ private bool loaded;
+ private void changeIndex(object sender, EventArgs e)
+ {
+ if (LB_Gifts.SelectedIndex < 0)
+ return;
+ if (!loaded)
+ return;
+ if (entry != -1)
+ saveEntry();
+ entry = LB_Gifts.SelectedIndex;
+ loadEntry();
+ }
+ private void loadEntry()
+ {
+ bool oldloaded = loaded;
+ loaded = false;
+ CB_Species.SelectedIndex = GiftData[entry].Species;
+ CB_HeldItem.SelectedIndex = GiftData[entry].HeldItem;
+ NUD_Level.Value = GiftData[entry].Level;
+ NUD_Form.Value = GiftData[entry].Form;
+ NUD_Ability.Value = GiftData[entry].Ability;
+ NUD_Gender.Value = GiftData[entry].Gender;
+
+ CHK_NoShiny.Checked = GiftData[entry].ShinyLock;
+ CHK_3IV.Checked = GiftData[entry].IV3;
+ CHK_3IV_2.Checked = GiftData[entry].IV3_1;
+ loaded |= oldloaded;
+ }
+ private void saveEntry()
+ {
+ GiftData[entry].Species = (ushort)CB_Species.SelectedIndex;
+ GiftData[entry].HeldItem = CB_HeldItem.SelectedIndex;
+ GiftData[entry].Level = (byte)NUD_Level.Value;
+ GiftData[entry].Form = (byte)NUD_Form.Value;
+ GiftData[entry].Ability = (sbyte)NUD_Ability.Value;
+ GiftData[entry].Gender = (sbyte)NUD_Gender.Value;
+
+ GiftData[entry].ShinyLock = CHK_NoShiny.Checked;
+ GiftData[entry].IV3 = CHK_3IV.Checked;
+ GiftData[entry].IV3_1 = CHK_3IV_2.Checked;
+ }
+
+ private void B_RandAll_Click(object sender, EventArgs e)
+ {
+ DialogResult ync = Util.Prompt(MessageBoxButtons.YesNoCancel,
+ "Randomize by BST: Yes" + Environment.NewLine +
+ "Randomize Randomly: No" + Environment.NewLine +
+ "Abort: Cancel");
+ if (ync != DialogResult.Yes && ync != DialogResult.No)
+ return;
+ if (ync == DialogResult.No)
+ {
+ for (int i = 0; i < LB_Gifts.Items.Count; i++)
+ {
+ LB_Gifts.SelectedIndex = i;
+ int species = Util.rand.Next(1, 721);
+ CB_Species.SelectedIndex = species;
+ }
+ return;
+ }
+
+ // Randomize by BST
+ int[] sL = Randomizer.getSpeciesList(G1: true, G2: true, G3: true, G4: true, G5: true, G6: true, L: false, E: false, Shedinja: false);
+ int ctr = 0;
+ for (int i = 0; i < LB_Gifts.Items.Count; i++)
+ {
+ LB_Gifts.SelectedIndex = i;
+ int species = CB_Species.SelectedIndex;
+
+ int bst = Main.SpeciesStat[species].BST;
+ int tries = 0;
+ var pkm = Main.SpeciesStat[species = Randomizer.getRandomSpecies(ref sL, ref ctr)];
+ while (!((pkm.BST*(5 - ++tries/722)/6 < bst) && pkm.BST*(6 + ++tries/722)/5 > bst))
+ pkm = Main.SpeciesStat[species = Randomizer.getRandomSpecies(ref sL, ref ctr)];
+
+ CB_Species.SelectedIndex = species;
+ }
+ }
+
+ private void changeSpecies(object sender, EventArgs e)
+ {
+ int index = LB_Gifts.SelectedIndex;
+ LB_Gifts.Items[index] = index.ToString("00") + " - " + CB_Species.Text;
+ }
+ }
+}
\ No newline at end of file
diff --git a/pk3DS/Subforms/StaticEncounters.resx b/pk3DS/Subforms/StaticEncounters.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/pk3DS/Subforms/StaticEncounters.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/pk3DS/pk3DS.csproj b/pk3DS/pk3DS.csproj
index 4f1808b..7643958 100644
--- a/pk3DS/pk3DS.csproj
+++ b/pk3DS/pk3DS.csproj
@@ -69,6 +69,12 @@
+
+ Form
+
+
+ StaticEncounters.cs
+
Form
@@ -255,6 +261,9 @@
About.cs
+
+ StaticEncounters.cs
+
Gifts.cs