diff --git a/pk3DS/Game/GARCReference.cs b/pk3DS/Game/GARCReference.cs
index 6ac0be9..6aaf17e 100644
--- a/pk3DS/Game/GARCReference.cs
+++ b/pk3DS/Game/GARCReference.cs
@@ -114,6 +114,8 @@ public GARCReference getRelativeGARC(int offset, string name = "")
new GARCReference(104, "trclass"),
new GARCReference(105, "trdata"),
new GARCReference(106, "trpoke"),
+
+ new GARCReference(155, "encounterstatic"),
// Varied
new GARCReference(030, "gametext", true),
diff --git a/pk3DS/Main.cs b/pk3DS/Main.cs
index 9b706f6..f879df7 100644
--- a/pk3DS/Main.cs
+++ b/pk3DS/Main.cs
@@ -252,6 +252,9 @@ private void toggleSubEditors()
romfs = new Control[] {B_GameText, B_StoryText, B_Personal, B_Evolution, B_LevelUp, B_Wild, B_MegaEvo, B_EggMove, B_Trainer, B_Item, B_Move, };
exefs = new Control[] {B_TMHM, B_TypeChart};
cro = new Control[] {B_Mart};
+
+ if (Config.Version != GameVersion.SMDEMO)
+ romfs = romfs.Concat(new[] {B_Static}).ToArray();
break;
default:
romfs = exefs = cro = new Control[] {new Label {Text = "No editors available."}};
@@ -898,6 +901,21 @@ private void B_Gift_Click(object sender, EventArgs e)
private void B_Static_Click(object sender, EventArgs e)
{
if (threadActive()) return;
+
+ if (Config.Generation == 7)
+ {
+ new Thread(() =>
+ {
+ var esg = Config.getGARCData("encounterstatic");
+ byte[][] es = esg.Files;
+
+ Invoke((Action)(() => new StaticEncounterEditor7(es).ShowDialog()));
+ esg.Files = es;
+ esg.Save();
+ }).Start();
+ return;
+ }
+
if (DialogResult.Yes != Util.Prompt(MessageBoxButtons.YesNo,
"CRO Editing causes crashes if you do not patch the RO module.", "Continue anyway?"))
return;
diff --git a/pk3DS/Structures/EncounterStatic.cs b/pk3DS/Structures/EncounterStatic.cs
new file mode 100644
index 0000000..40882e1
--- /dev/null
+++ b/pk3DS/Structures/EncounterStatic.cs
@@ -0,0 +1,8 @@
+namespace pk3DS
+{
+ public abstract class EncounterStatic
+ {
+ public abstract int Species { get; set; }
+ public abstract int HeldItem { get; set; }
+ }
+}
diff --git a/pk3DS/Structures/Gen7/EncounterGift7.cs b/pk3DS/Structures/Gen7/EncounterGift7.cs
new file mode 100644
index 0000000..2644c18
--- /dev/null
+++ b/pk3DS/Structures/Gen7/EncounterGift7.cs
@@ -0,0 +1,23 @@
+using System;
+
+namespace pk3DS
+{
+ public class EncounterGift7 : EncounterStatic
+ {
+ public const int SIZE = 0x14;
+ public readonly byte[] Data;
+ public EncounterGift7(byte[] data)
+ {
+ Data = data;
+ }
+ public override int Species
+ {
+ get { return BitConverter.ToUInt16(Data, 0x0); }
+ set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x0); }
+ }
+ public int Form { get { return Data[0x2]; } set { Data[0x2] = (byte)value; } }
+ public int Level { get { return Data[0x3]; } set { Data[0x3] = (byte)value; } }
+ public int Gender { get { return Data[0x4]; } set { Data[0x4] = (byte)value; } }
+ public override int HeldItem { get { return BitConverter.ToUInt16(Data, 0x8); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x8); } }
+ }
+}
diff --git a/pk3DS/Structures/Gen7/EncounterStatic7.cs b/pk3DS/Structures/Gen7/EncounterStatic7.cs
new file mode 100644
index 0000000..51357d0
--- /dev/null
+++ b/pk3DS/Structures/Gen7/EncounterStatic7.cs
@@ -0,0 +1,81 @@
+using System;
+
+namespace pk3DS
+{
+ public class EncounterStatic7 : EncounterStatic
+ {
+ public const int SIZE = 0x38;
+ public readonly byte[] Data;
+ public EncounterStatic7(byte[] data)
+ {
+ Data = data;
+ }
+ public override int Species
+ {
+ get { return BitConverter.ToUInt16(Data, 0x0); }
+ set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x0); }
+ }
+ public int Form { get { return Data[0x2]; } set { Data[0x2] = (byte)value; } }
+ public int Level { get { return Data[0x3]; } set { Data[0x3] = (byte)value; } }
+ public override 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 int[] RelearnMoves
+ {
+ get
+ {
+ return new int[]
+ {
+ BitConverter.ToUInt16(Data, 0xC),
+ BitConverter.ToUInt16(Data, 0xE),
+ BitConverter.ToUInt16(Data, 0x10),
+ BitConverter.ToUInt16(Data, 0x12),
+ };
+ }
+ set
+ {
+ if (value.Length != 4)
+ return;
+ for (int i = 0; i < 4; i++)
+ BitConverter.GetBytes((ushort)value[i]).CopyTo(Data, 0xC + i * 2);
+ }
+ }
+
+ public int[] IVs
+ {
+ get
+ {
+ return new int[]
+ {
+ (sbyte) Data[0x15], (sbyte) Data[0x16], (sbyte) Data[0x17], (sbyte) Data[0x18], (sbyte) Data[0x19], (sbyte) Data[0x1A]
+ };
+ }
+ set
+ {
+ if (value.Length != 6)
+ return;
+ for (int i = 0; i < 6; i++)
+ Data[i + 0x15] = (byte)Convert.ToSByte(value[i]);
+ }
+ }
+ }
+}
diff --git a/pk3DS/Structures/Gen7/EncounterTrade7.cs b/pk3DS/Structures/Gen7/EncounterTrade7.cs
new file mode 100644
index 0000000..29dc428
--- /dev/null
+++ b/pk3DS/Structures/Gen7/EncounterTrade7.cs
@@ -0,0 +1,59 @@
+using System;
+
+namespace pk3DS
+{
+ public class EncounterTrade7 : EncounterStatic
+ {
+ public const int SIZE = 0x34;
+
+ public readonly byte[] Data;
+ public EncounterTrade7(byte[] data)
+ {
+ Data = data;
+ }
+ public override int Species
+ {
+ get { return BitConverter.ToUInt16(Data, 0x0); }
+ set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x0); }
+ }
+ public int Form { get { return Data[0x4]; } set { Data[0x4] = (byte)value; } }
+ public int Level { get { return Data[0x5]; } set { Data[0x5] = (byte)value; } }
+ public int[] IVs
+ {
+ get
+ {
+ return new int[]
+ {
+ (sbyte) Data[0x6], (sbyte) Data[0x7], (sbyte) Data[0x8], (sbyte) Data[0x9], (sbyte) Data[0xA], (sbyte) Data[0xB]
+ };
+ }
+ set
+ {
+ if (value.Length != 6)
+ return;
+ for (int i = 0; i < 6; i++)
+ Data[i + 0x6] = (byte)Convert.ToSByte(value[i]);
+ }
+ }
+ public int Ability { get { return Data[0xC]; } set { Data[0xC] = (byte)value; } }
+ public int Nature { get { return Data[0xD]; } set { Data[0xD] = (byte)value; } }
+ public int Gender { get { return Data[0xE]; } set { Data[0xE] = (byte)value; } }
+ public int TID { get { return BitConverter.ToUInt16(Data, 0x10); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x10); } }
+ public int SID { get { return BitConverter.ToUInt16(Data, 0x12); } set { BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x12); } }
+ public override int HeldItem
+ {
+ get
+ {
+ int item = BitConverter.ToInt16(Data, 0x14);
+ if (item < 0) item = 0;
+ return item;
+ }
+ set
+ {
+ if (value == 0) value = -1;
+ BitConverter.GetBytes((short)value).CopyTo(Data, 0x14);
+ }
+ }
+ public int trGender { get { return Data[0x1A]; } set { Data[0x1A] = (byte)value; } }
+ }
+}
diff --git a/pk3DS/Subforms/Gen7/StaticEncounterEditor7.Designer.cs b/pk3DS/Subforms/Gen7/StaticEncounterEditor7.Designer.cs
new file mode 100644
index 0000000..ec11609
--- /dev/null
+++ b/pk3DS/Subforms/Gen7/StaticEncounterEditor7.Designer.cs
@@ -0,0 +1,507 @@
+namespace pk3DS
+{
+ partial class StaticEncounterEditor7
+ {
+ ///
+ /// 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.TC_Tabs = new System.Windows.Forms.TabControl();
+ this.Tab_Gifts = new System.Windows.Forms.TabPage();
+ this.CB_GHeldItem = new System.Windows.Forms.ComboBox();
+ this.L_GHeldItem = new System.Windows.Forms.Label();
+ this.CB_GSpecies = new System.Windows.Forms.ComboBox();
+ this.L_GForm = new System.Windows.Forms.Label();
+ this.NUD_GForm = new System.Windows.Forms.NumericUpDown();
+ this.L_GLevel = new System.Windows.Forms.Label();
+ this.L_GSpecies = new System.Windows.Forms.Label();
+ this.NUD_GLevel = new System.Windows.Forms.NumericUpDown();
+ this.LB_Gift = new System.Windows.Forms.ListBox();
+ this.Tab_Encounters = new System.Windows.Forms.TabPage();
+ this.CB_EHeldItem = new System.Windows.Forms.ComboBox();
+ this.L_EHeldItem = new System.Windows.Forms.Label();
+ this.CB_ESpecies = new System.Windows.Forms.ComboBox();
+ this.L_EForm = new System.Windows.Forms.Label();
+ this.NUD_EForm = new System.Windows.Forms.NumericUpDown();
+ this.L_ELevel = new System.Windows.Forms.Label();
+ this.L_ESpecies = new System.Windows.Forms.Label();
+ this.NUD_ELevel = new System.Windows.Forms.NumericUpDown();
+ this.LB_Encounter = new System.Windows.Forms.ListBox();
+ this.Tab_Trades = new System.Windows.Forms.TabPage();
+ this.CB_THeldItem = new System.Windows.Forms.ComboBox();
+ this.L_THeldItem = new System.Windows.Forms.Label();
+ this.CB_TSpecies = new System.Windows.Forms.ComboBox();
+ this.L_TForm = new System.Windows.Forms.Label();
+ this.NUD_TForm = new System.Windows.Forms.NumericUpDown();
+ this.L_TLevel = new System.Windows.Forms.Label();
+ this.L_TSpecies = new System.Windows.Forms.Label();
+ this.NUD_TLevel = new System.Windows.Forms.NumericUpDown();
+ this.LB_Trade = new System.Windows.Forms.ListBox();
+ this.B_Save = new System.Windows.Forms.Button();
+ this.TC_Tabs.SuspendLayout();
+ this.Tab_Gifts.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_GForm)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_GLevel)).BeginInit();
+ this.Tab_Encounters.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_EForm)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_ELevel)).BeginInit();
+ this.Tab_Trades.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_TForm)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_TLevel)).BeginInit();
+ this.SuspendLayout();
+ //
+ // TC_Tabs
+ //
+ this.TC_Tabs.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.TC_Tabs.Controls.Add(this.Tab_Gifts);
+ this.TC_Tabs.Controls.Add(this.Tab_Encounters);
+ this.TC_Tabs.Controls.Add(this.Tab_Trades);
+ this.TC_Tabs.Location = new System.Drawing.Point(12, 12);
+ this.TC_Tabs.Name = "TC_Tabs";
+ this.TC_Tabs.SelectedIndex = 0;
+ this.TC_Tabs.Size = new System.Drawing.Size(395, 347);
+ this.TC_Tabs.TabIndex = 0;
+ //
+ // Tab_Gifts
+ //
+ this.Tab_Gifts.Controls.Add(this.CB_GHeldItem);
+ this.Tab_Gifts.Controls.Add(this.L_GHeldItem);
+ this.Tab_Gifts.Controls.Add(this.CB_GSpecies);
+ this.Tab_Gifts.Controls.Add(this.L_GForm);
+ this.Tab_Gifts.Controls.Add(this.NUD_GForm);
+ this.Tab_Gifts.Controls.Add(this.L_GLevel);
+ this.Tab_Gifts.Controls.Add(this.L_GSpecies);
+ this.Tab_Gifts.Controls.Add(this.NUD_GLevel);
+ this.Tab_Gifts.Controls.Add(this.LB_Gift);
+ this.Tab_Gifts.Location = new System.Drawing.Point(4, 22);
+ this.Tab_Gifts.Name = "Tab_Gifts";
+ this.Tab_Gifts.Size = new System.Drawing.Size(387, 321);
+ this.Tab_Gifts.TabIndex = 2;
+ this.Tab_Gifts.Text = "Gifts";
+ this.Tab_Gifts.UseVisualStyleBackColor = true;
+ //
+ // CB_GHeldItem
+ //
+ this.CB_GHeldItem.FormattingEnabled = true;
+ this.CB_GHeldItem.Location = new System.Drawing.Point(230, 91);
+ this.CB_GHeldItem.Name = "CB_GHeldItem";
+ this.CB_GHeldItem.Size = new System.Drawing.Size(121, 21);
+ this.CB_GHeldItem.TabIndex = 8;
+ //
+ // L_GHeldItem
+ //
+ this.L_GHeldItem.Location = new System.Drawing.Point(124, 89);
+ this.L_GHeldItem.Name = "L_GHeldItem";
+ this.L_GHeldItem.Size = new System.Drawing.Size(100, 23);
+ this.L_GHeldItem.TabIndex = 7;
+ this.L_GHeldItem.Text = "Held Item:";
+ this.L_GHeldItem.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // CB_GSpecies
+ //
+ this.CB_GSpecies.FormattingEnabled = true;
+ this.CB_GSpecies.Location = new System.Drawing.Point(230, 18);
+ this.CB_GSpecies.Name = "CB_GSpecies";
+ this.CB_GSpecies.Size = new System.Drawing.Size(121, 21);
+ this.CB_GSpecies.TabIndex = 6;
+ this.CB_GSpecies.SelectedIndexChanged += new System.EventHandler(this.changeSpecies);
+ //
+ // L_GForm
+ //
+ this.L_GForm.Location = new System.Drawing.Point(124, 62);
+ this.L_GForm.Name = "L_GForm";
+ this.L_GForm.Size = new System.Drawing.Size(100, 23);
+ this.L_GForm.TabIndex = 5;
+ this.L_GForm.Text = "Form:";
+ this.L_GForm.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // NUD_GForm
+ //
+ this.NUD_GForm.Location = new System.Drawing.Point(230, 65);
+ this.NUD_GForm.Maximum = new decimal(new int[] {
+ 255,
+ 0,
+ 0,
+ 0});
+ this.NUD_GForm.Name = "NUD_GForm";
+ this.NUD_GForm.Size = new System.Drawing.Size(48, 20);
+ this.NUD_GForm.TabIndex = 4;
+ this.NUD_GForm.Value = new decimal(new int[] {
+ 100,
+ 0,
+ 0,
+ 0});
+ //
+ // L_GLevel
+ //
+ this.L_GLevel.Location = new System.Drawing.Point(124, 39);
+ this.L_GLevel.Name = "L_GLevel";
+ this.L_GLevel.Size = new System.Drawing.Size(100, 23);
+ this.L_GLevel.TabIndex = 3;
+ this.L_GLevel.Text = "Level:";
+ this.L_GLevel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // L_GSpecies
+ //
+ this.L_GSpecies.Location = new System.Drawing.Point(124, 16);
+ this.L_GSpecies.Name = "L_GSpecies";
+ this.L_GSpecies.Size = new System.Drawing.Size(100, 23);
+ this.L_GSpecies.TabIndex = 2;
+ this.L_GSpecies.Text = "Species:";
+ this.L_GSpecies.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // NUD_GLevel
+ //
+ this.NUD_GLevel.Location = new System.Drawing.Point(230, 42);
+ this.NUD_GLevel.Maximum = new decimal(new int[] {
+ 255,
+ 0,
+ 0,
+ 0});
+ this.NUD_GLevel.Name = "NUD_GLevel";
+ this.NUD_GLevel.Size = new System.Drawing.Size(48, 20);
+ this.NUD_GLevel.TabIndex = 1;
+ this.NUD_GLevel.Value = new decimal(new int[] {
+ 100,
+ 0,
+ 0,
+ 0});
+ //
+ // LB_Gift
+ //
+ this.LB_Gift.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.LB_Gift.FormattingEnabled = true;
+ this.LB_Gift.Location = new System.Drawing.Point(3, 3);
+ this.LB_Gift.Name = "LB_Gift";
+ this.LB_Gift.Size = new System.Drawing.Size(115, 316);
+ this.LB_Gift.TabIndex = 0;
+ this.LB_Gift.SelectedIndexChanged += new System.EventHandler(this.LB_Gift_SelectedIndexChanged);
+ //
+ // Tab_Encounters
+ //
+ this.Tab_Encounters.Controls.Add(this.CB_EHeldItem);
+ this.Tab_Encounters.Controls.Add(this.L_EHeldItem);
+ this.Tab_Encounters.Controls.Add(this.CB_ESpecies);
+ this.Tab_Encounters.Controls.Add(this.L_EForm);
+ this.Tab_Encounters.Controls.Add(this.NUD_EForm);
+ this.Tab_Encounters.Controls.Add(this.L_ELevel);
+ this.Tab_Encounters.Controls.Add(this.L_ESpecies);
+ this.Tab_Encounters.Controls.Add(this.NUD_ELevel);
+ this.Tab_Encounters.Controls.Add(this.LB_Encounter);
+ this.Tab_Encounters.Location = new System.Drawing.Point(4, 22);
+ this.Tab_Encounters.Name = "Tab_Encounters";
+ this.Tab_Encounters.Padding = new System.Windows.Forms.Padding(3);
+ this.Tab_Encounters.Size = new System.Drawing.Size(387, 321);
+ this.Tab_Encounters.TabIndex = 0;
+ this.Tab_Encounters.Text = "Encounters";
+ this.Tab_Encounters.UseVisualStyleBackColor = true;
+ //
+ // CB_EHeldItem
+ //
+ this.CB_EHeldItem.FormattingEnabled = true;
+ this.CB_EHeldItem.Location = new System.Drawing.Point(230, 91);
+ this.CB_EHeldItem.Name = "CB_EHeldItem";
+ this.CB_EHeldItem.Size = new System.Drawing.Size(121, 21);
+ this.CB_EHeldItem.TabIndex = 16;
+ //
+ // L_EHeldItem
+ //
+ this.L_EHeldItem.Location = new System.Drawing.Point(124, 89);
+ this.L_EHeldItem.Name = "L_EHeldItem";
+ this.L_EHeldItem.Size = new System.Drawing.Size(100, 23);
+ this.L_EHeldItem.TabIndex = 15;
+ this.L_EHeldItem.Text = "Held Item:";
+ this.L_EHeldItem.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // CB_ESpecies
+ //
+ this.CB_ESpecies.FormattingEnabled = true;
+ this.CB_ESpecies.Location = new System.Drawing.Point(230, 18);
+ this.CB_ESpecies.Name = "CB_ESpecies";
+ this.CB_ESpecies.Size = new System.Drawing.Size(121, 21);
+ this.CB_ESpecies.TabIndex = 14;
+ this.CB_ESpecies.SelectedIndexChanged += new System.EventHandler(this.changeSpecies);
+ //
+ // L_EForm
+ //
+ this.L_EForm.Location = new System.Drawing.Point(124, 62);
+ this.L_EForm.Name = "L_EForm";
+ this.L_EForm.Size = new System.Drawing.Size(100, 23);
+ this.L_EForm.TabIndex = 13;
+ this.L_EForm.Text = "Form:";
+ this.L_EForm.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // NUD_EForm
+ //
+ this.NUD_EForm.Location = new System.Drawing.Point(230, 65);
+ this.NUD_EForm.Maximum = new decimal(new int[] {
+ 255,
+ 0,
+ 0,
+ 0});
+ this.NUD_EForm.Name = "NUD_EForm";
+ this.NUD_EForm.Size = new System.Drawing.Size(48, 20);
+ this.NUD_EForm.TabIndex = 12;
+ this.NUD_EForm.Value = new decimal(new int[] {
+ 100,
+ 0,
+ 0,
+ 0});
+ //
+ // L_ELevel
+ //
+ this.L_ELevel.Location = new System.Drawing.Point(124, 39);
+ this.L_ELevel.Name = "L_ELevel";
+ this.L_ELevel.Size = new System.Drawing.Size(100, 23);
+ this.L_ELevel.TabIndex = 11;
+ this.L_ELevel.Text = "Level:";
+ this.L_ELevel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // L_ESpecies
+ //
+ this.L_ESpecies.Location = new System.Drawing.Point(124, 16);
+ this.L_ESpecies.Name = "L_ESpecies";
+ this.L_ESpecies.Size = new System.Drawing.Size(100, 23);
+ this.L_ESpecies.TabIndex = 10;
+ this.L_ESpecies.Text = "Species:";
+ this.L_ESpecies.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // NUD_ELevel
+ //
+ this.NUD_ELevel.Location = new System.Drawing.Point(230, 42);
+ this.NUD_ELevel.Maximum = new decimal(new int[] {
+ 255,
+ 0,
+ 0,
+ 0});
+ this.NUD_ELevel.Name = "NUD_ELevel";
+ this.NUD_ELevel.Size = new System.Drawing.Size(48, 20);
+ this.NUD_ELevel.TabIndex = 9;
+ this.NUD_ELevel.Value = new decimal(new int[] {
+ 100,
+ 0,
+ 0,
+ 0});
+ //
+ // LB_Encounter
+ //
+ this.LB_Encounter.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.LB_Encounter.FormattingEnabled = true;
+ this.LB_Encounter.Location = new System.Drawing.Point(3, 3);
+ this.LB_Encounter.Name = "LB_Encounter";
+ this.LB_Encounter.Size = new System.Drawing.Size(115, 316);
+ this.LB_Encounter.TabIndex = 1;
+ this.LB_Encounter.SelectedIndexChanged += new System.EventHandler(this.LB_Encounter_SelectedIndexChanged);
+ //
+ // Tab_Trades
+ //
+ this.Tab_Trades.Controls.Add(this.CB_THeldItem);
+ this.Tab_Trades.Controls.Add(this.L_THeldItem);
+ this.Tab_Trades.Controls.Add(this.CB_TSpecies);
+ this.Tab_Trades.Controls.Add(this.L_TForm);
+ this.Tab_Trades.Controls.Add(this.NUD_TForm);
+ this.Tab_Trades.Controls.Add(this.L_TLevel);
+ this.Tab_Trades.Controls.Add(this.L_TSpecies);
+ this.Tab_Trades.Controls.Add(this.NUD_TLevel);
+ this.Tab_Trades.Controls.Add(this.LB_Trade);
+ this.Tab_Trades.Location = new System.Drawing.Point(4, 22);
+ this.Tab_Trades.Name = "Tab_Trades";
+ this.Tab_Trades.Padding = new System.Windows.Forms.Padding(3);
+ this.Tab_Trades.Size = new System.Drawing.Size(387, 321);
+ this.Tab_Trades.TabIndex = 1;
+ this.Tab_Trades.Text = "Trades";
+ this.Tab_Trades.UseVisualStyleBackColor = true;
+ //
+ // CB_THeldItem
+ //
+ this.CB_THeldItem.FormattingEnabled = true;
+ this.CB_THeldItem.Location = new System.Drawing.Point(230, 91);
+ this.CB_THeldItem.Name = "CB_THeldItem";
+ this.CB_THeldItem.Size = new System.Drawing.Size(121, 21);
+ this.CB_THeldItem.TabIndex = 24;
+ //
+ // L_THeldItem
+ //
+ this.L_THeldItem.Location = new System.Drawing.Point(124, 89);
+ this.L_THeldItem.Name = "L_THeldItem";
+ this.L_THeldItem.Size = new System.Drawing.Size(100, 23);
+ this.L_THeldItem.TabIndex = 23;
+ this.L_THeldItem.Text = "Held Item:";
+ this.L_THeldItem.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // CB_TSpecies
+ //
+ this.CB_TSpecies.FormattingEnabled = true;
+ this.CB_TSpecies.Location = new System.Drawing.Point(230, 18);
+ this.CB_TSpecies.Name = "CB_TSpecies";
+ this.CB_TSpecies.Size = new System.Drawing.Size(121, 21);
+ this.CB_TSpecies.TabIndex = 22;
+ this.CB_TSpecies.SelectedIndexChanged += new System.EventHandler(this.changeSpecies);
+ //
+ // L_TForm
+ //
+ this.L_TForm.Location = new System.Drawing.Point(124, 62);
+ this.L_TForm.Name = "L_TForm";
+ this.L_TForm.Size = new System.Drawing.Size(100, 23);
+ this.L_TForm.TabIndex = 21;
+ this.L_TForm.Text = "Form:";
+ this.L_TForm.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // NUD_TForm
+ //
+ this.NUD_TForm.Location = new System.Drawing.Point(230, 65);
+ this.NUD_TForm.Maximum = new decimal(new int[] {
+ 255,
+ 0,
+ 0,
+ 0});
+ this.NUD_TForm.Name = "NUD_TForm";
+ this.NUD_TForm.Size = new System.Drawing.Size(48, 20);
+ this.NUD_TForm.TabIndex = 20;
+ this.NUD_TForm.Value = new decimal(new int[] {
+ 100,
+ 0,
+ 0,
+ 0});
+ //
+ // L_TLevel
+ //
+ this.L_TLevel.Location = new System.Drawing.Point(124, 39);
+ this.L_TLevel.Name = "L_TLevel";
+ this.L_TLevel.Size = new System.Drawing.Size(100, 23);
+ this.L_TLevel.TabIndex = 19;
+ this.L_TLevel.Text = "Level:";
+ this.L_TLevel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // L_TSpecies
+ //
+ this.L_TSpecies.Location = new System.Drawing.Point(124, 16);
+ this.L_TSpecies.Name = "L_TSpecies";
+ this.L_TSpecies.Size = new System.Drawing.Size(100, 23);
+ this.L_TSpecies.TabIndex = 18;
+ this.L_TSpecies.Text = "Species:";
+ this.L_TSpecies.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
+ // NUD_TLevel
+ //
+ this.NUD_TLevel.Location = new System.Drawing.Point(230, 42);
+ this.NUD_TLevel.Maximum = new decimal(new int[] {
+ 255,
+ 0,
+ 0,
+ 0});
+ this.NUD_TLevel.Name = "NUD_TLevel";
+ this.NUD_TLevel.Size = new System.Drawing.Size(48, 20);
+ this.NUD_TLevel.TabIndex = 17;
+ this.NUD_TLevel.Value = new decimal(new int[] {
+ 100,
+ 0,
+ 0,
+ 0});
+ //
+ // LB_Trade
+ //
+ this.LB_Trade.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.LB_Trade.FormattingEnabled = true;
+ this.LB_Trade.Location = new System.Drawing.Point(3, 3);
+ this.LB_Trade.Name = "LB_Trade";
+ this.LB_Trade.Size = new System.Drawing.Size(115, 316);
+ this.LB_Trade.TabIndex = 2;
+ this.LB_Trade.SelectedIndexChanged += new System.EventHandler(this.LB_Trade_SelectedIndexChanged);
+ //
+ // B_Save
+ //
+ this.B_Save.Location = new System.Drawing.Point(328, 365);
+ this.B_Save.Name = "B_Save";
+ this.B_Save.Size = new System.Drawing.Size(75, 23);
+ this.B_Save.TabIndex = 1;
+ this.B_Save.Text = "Save";
+ this.B_Save.UseVisualStyleBackColor = true;
+ this.B_Save.Click += new System.EventHandler(this.B_Save_Click);
+ //
+ // StaticEncounterEditor7
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(419, 395);
+ this.Controls.Add(this.B_Save);
+ this.Controls.Add(this.TC_Tabs);
+ this.Name = "StaticEncounterEditor7";
+ this.Text = "StaticEncounterEditor7";
+ this.TC_Tabs.ResumeLayout(false);
+ this.Tab_Gifts.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_GForm)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_GLevel)).EndInit();
+ this.Tab_Encounters.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_EForm)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_ELevel)).EndInit();
+ this.Tab_Trades.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_TForm)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.NUD_TLevel)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TabControl TC_Tabs;
+ private System.Windows.Forms.TabPage Tab_Encounters;
+ private System.Windows.Forms.TabPage Tab_Trades;
+ private System.Windows.Forms.TabPage Tab_Gifts;
+ private System.Windows.Forms.ListBox LB_Gift;
+ private System.Windows.Forms.ListBox LB_Encounter;
+ private System.Windows.Forms.ListBox LB_Trade;
+ private System.Windows.Forms.Button B_Save;
+ private System.Windows.Forms.NumericUpDown NUD_GLevel;
+ private System.Windows.Forms.Label L_GSpecies;
+ private System.Windows.Forms.Label L_GForm;
+ private System.Windows.Forms.NumericUpDown NUD_GForm;
+ private System.Windows.Forms.Label L_GLevel;
+ private System.Windows.Forms.ComboBox CB_GSpecies;
+ private System.Windows.Forms.ComboBox CB_GHeldItem;
+ private System.Windows.Forms.Label L_GHeldItem;
+ private System.Windows.Forms.ComboBox CB_EHeldItem;
+ private System.Windows.Forms.Label L_EHeldItem;
+ private System.Windows.Forms.ComboBox CB_ESpecies;
+ private System.Windows.Forms.Label L_EForm;
+ private System.Windows.Forms.NumericUpDown NUD_EForm;
+ private System.Windows.Forms.Label L_ELevel;
+ private System.Windows.Forms.Label L_ESpecies;
+ private System.Windows.Forms.NumericUpDown NUD_ELevel;
+ private System.Windows.Forms.ComboBox CB_THeldItem;
+ private System.Windows.Forms.Label L_THeldItem;
+ private System.Windows.Forms.ComboBox CB_TSpecies;
+ private System.Windows.Forms.Label L_TForm;
+ private System.Windows.Forms.NumericUpDown NUD_TForm;
+ private System.Windows.Forms.Label L_TLevel;
+ private System.Windows.Forms.Label L_TSpecies;
+ private System.Windows.Forms.NumericUpDown NUD_TLevel;
+ }
+}
\ No newline at end of file
diff --git a/pk3DS/Subforms/Gen7/StaticEncounterEditor7.cs b/pk3DS/Subforms/Gen7/StaticEncounterEditor7.cs
new file mode 100644
index 0000000..4c486e1
--- /dev/null
+++ b/pk3DS/Subforms/Gen7/StaticEncounterEditor7.cs
@@ -0,0 +1,239 @@
+using System;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace pk3DS
+{
+ public partial class StaticEncounterEditor7 : Form
+ {
+ private readonly byte[][] files;
+ private readonly EncounterGift7[] Gifts;
+ private readonly EncounterStatic7[] Encounters;
+ private readonly EncounterTrade7[] Trades;
+ private readonly string[] movelist = Main.getText(TextName.MoveNames);
+ private readonly string[] itemlist = Main.getText(TextName.ItemNames);
+ private readonly string[] specieslist = Main.getText(TextName.SpeciesNames);
+ private readonly string[] natures = Main.getText(TextName.Natures);
+
+ public StaticEncounterEditor7(byte[][] infiles)
+ {
+ InitializeComponent();
+ files = infiles;
+
+ // File 0: Gifts
+ {
+ byte[] data = files[0];
+ Gifts = new EncounterGift7[data.Length / EncounterGift7.SIZE];
+ for (int i = 0; i < data.Length; i += EncounterGift7.SIZE)
+ {
+ byte[] entry = new byte[EncounterGift7.SIZE];
+ Array.Copy(data, i, entry, 0, entry.Length);
+ Gifts[i/EncounterGift7.SIZE] = new EncounterGift7(entry);
+ }
+ }
+
+ // File 1: Encounters
+ {
+ byte[] data = files[1];
+ Encounters = new EncounterStatic7[data.Length / EncounterStatic7.SIZE];
+ for (int i = 0; i < data.Length; i += EncounterStatic7.SIZE)
+ {
+ byte[] entry = new byte[EncounterStatic7.SIZE];
+ Array.Copy(data, i, entry, 0, entry.Length);
+ Encounters[i/EncounterStatic7.SIZE] = new EncounterStatic7(entry);
+ }
+ }
+
+ // File 4: Trades
+ {
+ byte[] data = files[4];
+ Trades = new EncounterTrade7[data.Length / EncounterTrade7.SIZE];
+ for (int i = 0; i < data.Length; i += EncounterTrade7.SIZE)
+ {
+ byte[] entry = new byte[EncounterTrade7.SIZE];
+ Array.Copy(data, i, entry, 0, entry.Length);
+ Trades[i/EncounterTrade7.SIZE] = new EncounterTrade7(entry);
+ }
+ }
+
+ itemlist[0] = specieslist[0] = "(None)";
+ foreach (var s in specieslist)
+ {
+ CB_GSpecies.Items.Add(s);
+ CB_ESpecies.Items.Add(s);
+ CB_TSpecies.Items.Add(s);
+ }
+ foreach (var s in itemlist)
+ {
+ CB_GHeldItem.Items.Add(s);
+ CB_EHeldItem.Items.Add(s);
+ CB_THeldItem.Items.Add(s);
+ }
+
+ LB_Gift.Items.Clear();
+ LB_Encounter.Items.Clear();
+ LB_Trade.Items.Clear();
+
+ for (int i = 0; i < Gifts.Length; i++)
+ LB_Gift.Items.Add(getEntryText(Gifts[i], i));
+ for (int i = 0; i < Encounters.Length; i++)
+ LB_Encounter.Items.Add(getEntryText(Encounters[i], i));
+ for (int i = 0; i < Trades.Length; i++)
+ LB_Trade.Items.Add(getEntryText(Trades[i], i));
+
+ LB_Gift.SelectedIndex = 0;
+ LB_Encounter.SelectedIndex = 0;
+ LB_Trade.SelectedIndex = 0;
+ }
+
+ private int gEntry = -1;
+ private int eEntry = -1;
+ private int tEntry = -1;
+
+ private void B_Save_Click(object sender, EventArgs e)
+ {
+ setGift();
+ setEncounters();
+ setTrade();
+ saveData();
+ Close();
+ }
+
+ private void saveData()
+ {
+ files[0] = Gifts.SelectMany(file => file.Data).ToArray();
+ files[1] = Encounters.SelectMany(file => file.Data).ToArray();
+ files[4] = Trades.SelectMany(file => file.Data).ToArray();
+ }
+
+ private string getEntryText(int species, int entry)
+ {
+ return $"{entry.ToString("00")} - {specieslist[species]}";
+ }
+ private string getEntryText(EncounterStatic enc, int entry)
+ {
+ return getEntryText(enc.Species, entry);
+ }
+
+ private void LB_Gift_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ setGift();
+ gEntry = LB_Gift.SelectedIndex;
+ getGift();
+ }
+ private void LB_Encounter_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ setEncounters();
+ eEntry = LB_Encounter.SelectedIndex;
+ getEncounters();
+ }
+ private void LB_Trade_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ setTrade();
+ tEntry = LB_Trade.SelectedIndex;
+ getTrade();
+ }
+
+ private bool loading;
+ private void getGift()
+ {
+ if (gEntry < 0)
+ return;
+
+ loading = true;
+ var entry = Gifts[gEntry];
+ CB_GSpecies.SelectedIndex = entry.Species;
+ CB_GHeldItem.SelectedIndex = entry.HeldItem;
+ NUD_GLevel.Value = entry.Level;
+ NUD_GForm.Value = entry.Form;
+ loading = false;
+ }
+ private void setGift()
+ {
+ if (gEntry < 0)
+ return;
+
+ var entry = Gifts[gEntry];
+ entry.Species = CB_GSpecies.SelectedIndex;
+ entry.HeldItem = CB_GHeldItem.SelectedIndex;
+ entry.Level = (int)NUD_GLevel.Value;
+ entry.Form = (int)NUD_GForm.Value;
+ }
+ private void getEncounters()
+ {
+ if (eEntry < 0)
+ return;
+
+ loading = true;
+ var entry = Encounters[eEntry];
+ CB_ESpecies.SelectedIndex = entry.Species;
+ CB_EHeldItem.SelectedIndex = entry.HeldItem;
+ NUD_ELevel.Value = entry.Level;
+ NUD_EForm.Value = entry.Form;
+ loading = false;
+ }
+ private void setEncounters()
+ {
+ if (eEntry < 0)
+ return;
+
+ var entry = Encounters[eEntry];
+ entry.Species = CB_ESpecies.SelectedIndex;
+ entry.HeldItem = CB_EHeldItem.SelectedIndex;
+ entry.Level = (int)NUD_ELevel.Value;
+ entry.Form = (int)NUD_EForm.Value;
+ }
+ private void getTrade()
+ {
+ if (tEntry < 0)
+ return;
+
+ loading = true;
+ var entry = Trades[tEntry];
+ CB_TSpecies.SelectedIndex = entry.Species;
+ CB_THeldItem.SelectedIndex = entry.HeldItem;
+ NUD_TLevel.Value = entry.Level;
+ NUD_TForm.Value = entry.Form;
+ loading = false;
+ }
+ private void setTrade()
+ {
+ if (tEntry < 0)
+ return;
+
+ var entry = Trades[tEntry];
+ entry.Species = CB_TSpecies.SelectedIndex;
+ entry.HeldItem = CB_THeldItem.SelectedIndex;
+ entry.Level = (int)NUD_TLevel.Value;
+ entry.Form = (int)NUD_TForm.Value;
+ }
+
+ private void changeSpecies(object sender, EventArgs e)
+ {
+ if (loading)
+ return;
+ var cb = sender as ComboBox;
+ if (cb == null)
+ return;
+
+ if (sender == CB_GSpecies)
+ {
+ var entry = Gifts[gEntry];
+ entry.Species = cb.SelectedIndex;
+ LB_Gift.Items[gEntry] = getEntryText(entry, gEntry);
+ }
+ if (sender == CB_ESpecies)
+ {
+ var entry = Encounters[eEntry];
+ entry.Species = cb.SelectedIndex;
+ LB_Encounter.Items[eEntry] = getEntryText(entry, eEntry);
+ }
+ if (sender == CB_TSpecies)
+ {
+ var entry = Trades[tEntry];
+ entry.Species = cb.SelectedIndex;
+ LB_Trade.Items[tEntry] = getEntryText(entry, tEntry);
+ }
+ }
+ }
+}
diff --git a/pk3DS/Subforms/Gen7/StaticEncounterEditor7.resx b/pk3DS/Subforms/Gen7/StaticEncounterEditor7.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/pk3DS/Subforms/Gen7/StaticEncounterEditor7.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 6c1f502..c357695 100644
--- a/pk3DS/pk3DS.csproj
+++ b/pk3DS/pk3DS.csproj
@@ -66,6 +66,10 @@
+
+
+
+
Form
@@ -173,6 +177,12 @@
MapPermView.cs
+
+ Form
+
+
+ StaticEncounterEditor7.cs
+
Form
@@ -399,6 +409,9 @@
MapPermView.cs
+
+ StaticEncounterEditor7.cs
+
TMEditor7.cs