Entralink forest editor:

- Added gender filters
- Added form filters and changed forms to text based combobox
- Added no-sprite warning for those pokemon without sprite
- Added import/export buttons for whole forest (decripted, efdd file) and areas (pokeCgear/pikasav phl format)
- Added dream world "simulation" (easy buttons to add legit dream pokemon from each dream world area)

To do: add PGL Promotion pokémon
This commit is contained in:
suloku 2016-06-15 16:17:52 +02:00
parent 3633282ced
commit 18fe8d9e5d
10 changed files with 3368 additions and 37 deletions

View File

@ -50,6 +50,10 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Editors\Entralink_DreamWorld.cs" />
<Compile Include="Editors\Entralink_DreamWorld.Designer.cs">
<DependentUpon>Entralink_DreamWorld.cs</DependentUpon>
</Compile>
<Compile Include="Editors\KeySystem.cs" />
<Compile Include="Editors\KeySystem.Designer.cs">
<DependentUpon>KeySystem.cs</DependentUpon>
@ -99,6 +103,9 @@
<EmbeddedResource Include="Editors\Entralink.resx">
<DependentUpon>Entralink.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Editors\Entralink_DreamWorld.resx">
<DependentUpon>Entralink_DreamWorld.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Editors\Grotto.resx">
<DependentUpon>Grotto.cs</DependentUpon>
</EmbeddedResource>

View File

@ -47,7 +47,7 @@ namespace BW_tool
private System.Windows.Forms.ComboBox spbox1;
private System.Windows.Forms.ComboBox move1box;
private System.Windows.Forms.ComboBox genderbox1;
private System.Windows.Forms.NumericUpDown formbox1;
private System.Windows.Forms.ComboBox formbox1;
private System.Windows.Forms.ComboBox unlock9;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
@ -73,6 +73,20 @@ namespace BW_tool
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Button saveexit_but;
private System.Windows.Forms.Button exit_but;
private System.Windows.Forms.Button export_area;
private System.Windows.Forms.Button import_area;
private System.Windows.Forms.Button export_forest;
private System.Windows.Forms.Button import_forest;
private System.Windows.Forms.Label sprite_warning;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Button pkmcafe_but;
private System.Windows.Forms.Button dream_but;
private System.Windows.Forms.Button icy_but;
private System.Windows.Forms.Button rugged_but;
private System.Windows.Forms.Button spooky_but;
private System.Windows.Forms.Button spark_but;
private System.Windows.Forms.Button wind_but;
private System.Windows.Forms.Button pleasant_but;
/// <summary>
/// Disposes resources used by the form.
@ -126,7 +140,6 @@ namespace BW_tool
this.spbox1 = new System.Windows.Forms.ComboBox();
this.move1box = new System.Windows.Forms.ComboBox();
this.genderbox1 = new System.Windows.Forms.ComboBox();
this.formbox1 = new System.Windows.Forms.NumericUpDown();
this.label1 = new System.Windows.Forms.Label();
this.unlock8box = new System.Windows.Forms.ComboBox();
this.label3 = new System.Windows.Forms.Label();
@ -152,10 +165,25 @@ namespace BW_tool
this.animbox1 = new System.Windows.Forms.ComboBox();
this.saveexit_but = new System.Windows.Forms.Button();
this.exit_but = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.formbox1)).BeginInit();
this.export_area = new System.Windows.Forms.Button();
this.import_area = new System.Windows.Forms.Button();
this.export_forest = new System.Windows.Forms.Button();
this.import_forest = new System.Windows.Forms.Button();
this.sprite_warning = new System.Windows.Forms.Label();
this.formbox1 = new System.Windows.Forms.ComboBox();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.pkmcafe_but = new System.Windows.Forms.Button();
this.dream_but = new System.Windows.Forms.Button();
this.icy_but = new System.Windows.Forms.Button();
this.rugged_but = new System.Windows.Forms.Button();
this.spooky_but = new System.Windows.Forms.Button();
this.spark_but = new System.Windows.Forms.Button();
this.wind_but = new System.Windows.Forms.Button();
this.pleasant_but = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.slot)).BeginInit();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.groupBox2.SuspendLayout();
this.SuspendLayout();
//
// check9r
@ -555,10 +583,10 @@ namespace BW_tool
"026 - Raichu",
"027 - Sandshrew",
"028 - Sandslash",
"029 - Nidoran?",
"029 - Nidoran (F)",
"030 - Nidorina",
"031 - Nidoqueen",
"032 - Nidoran?",
"032 - Nidoran(M)",
"033 - Nidorino",
"034 - Nidoking",
"035 - Clefairy",
@ -1180,6 +1208,7 @@ namespace BW_tool
this.spbox1.Name = "spbox1";
this.spbox1.Size = new System.Drawing.Size(141, 21);
this.spbox1.TabIndex = 190;
this.spbox1.SelectedIndexChanged += new System.EventHandler(this.Spbox1SelectedIndexChanged);
//
// move1box
//
@ -1761,13 +1790,6 @@ namespace BW_tool
this.genderbox1.Size = new System.Drawing.Size(94, 21);
this.genderbox1.TabIndex = 54;
//
// formbox1
//
this.formbox1.Location = new System.Drawing.Point(658, 60);
this.formbox1.Name = "formbox1";
this.formbox1.Size = new System.Drawing.Size(98, 20);
this.formbox1.TabIndex = 62;
//
// label1
//
this.label1.Location = new System.Drawing.Point(12, 333);
@ -1999,9 +2021,9 @@ namespace BW_tool
//
// label8
//
this.label8.Location = new System.Drawing.Point(216, 40);
this.label8.Location = new System.Drawing.Point(215, 43);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(44, 17);
this.label8.Size = new System.Drawing.Size(44, 12);
this.label8.TabIndex = 197;
this.label8.Text = " Slot";
//
@ -2009,14 +2031,15 @@ namespace BW_tool
//
this.animbox1.FormattingEnabled = true;
this.animbox1.Items.AddRange(new object[] {
" randomly turning around",
" randomly walking",
" randomly walking",
" walking up/down",
" walking left/right",
" walking left/right and randomly looking up/down",
" turning around clockwise",
" turning around counterclockwise"});
"Randomly turning around",
"Randomly walking",
"Randomly walking",
"Walking up/down",
"Walking left/right",
"Walking left/right and randomly looking up/down",
"Turning around clockwise",
"Turning around counterclockwise",
"--- Randomize ---"});
this.animbox1.Location = new System.Drawing.Point(762, 60);
this.animbox1.Name = "animbox1";
this.animbox1.Size = new System.Drawing.Size(243, 21);
@ -2024,7 +2047,7 @@ namespace BW_tool
//
// saveexit_but
//
this.saveexit_but.Location = new System.Drawing.Point(40, 513);
this.saveexit_but.Location = new System.Drawing.Point(906, 511);
this.saveexit_but.Name = "saveexit_but";
this.saveexit_but.Size = new System.Drawing.Size(99, 29);
this.saveexit_but.TabIndex = 200;
@ -2034,7 +2057,7 @@ namespace BW_tool
//
// exit_but
//
this.exit_but.Location = new System.Drawing.Point(40, 480);
this.exit_but.Location = new System.Drawing.Point(906, 478);
this.exit_but.Name = "exit_but";
this.exit_but.Size = new System.Drawing.Size(97, 27);
this.exit_but.TabIndex = 199;
@ -2042,11 +2065,174 @@ namespace BW_tool
this.exit_but.UseVisualStyleBackColor = true;
this.exit_but.Click += new System.EventHandler(this.Exit_butClick);
//
// export_area
//
this.export_area.Location = new System.Drawing.Point(12, 420);
this.export_area.Name = "export_area";
this.export_area.Size = new System.Drawing.Size(84, 23);
this.export_area.TabIndex = 201;
this.export_area.Text = "Export Area";
this.export_area.UseVisualStyleBackColor = true;
this.export_area.Click += new System.EventHandler(this.Export_areaClick);
//
// import_area
//
this.import_area.Location = new System.Drawing.Point(102, 420);
this.import_area.Name = "import_area";
this.import_area.Size = new System.Drawing.Size(87, 23);
this.import_area.TabIndex = 202;
this.import_area.Text = "Import Area";
this.import_area.UseVisualStyleBackColor = true;
this.import_area.Click += new System.EventHandler(this.Import_areaClick);
//
// export_forest
//
this.export_forest.Location = new System.Drawing.Point(9, 517);
this.export_forest.Name = "export_forest";
this.export_forest.Size = new System.Drawing.Size(87, 23);
this.export_forest.TabIndex = 203;
this.export_forest.Text = "Export Forest";
this.export_forest.UseVisualStyleBackColor = true;
this.export_forest.Click += new System.EventHandler(this.Export_forestClick);
//
// import_forest
//
this.import_forest.Location = new System.Drawing.Point(102, 517);
this.import_forest.Name = "import_forest";
this.import_forest.Size = new System.Drawing.Size(87, 23);
this.import_forest.TabIndex = 204;
this.import_forest.Text = "Import Forest";
this.import_forest.UseVisualStyleBackColor = true;
this.import_forest.Click += new System.EventHandler(this.Import_forestClick);
//
// sprite_warning
//
this.sprite_warning.ForeColor = System.Drawing.Color.Red;
this.sprite_warning.Location = new System.Drawing.Point(266, 21);
this.sprite_warning.Name = "sprite_warning";
this.sprite_warning.Size = new System.Drawing.Size(244, 23);
this.sprite_warning.TabIndex = 205;
this.sprite_warning.Text = "Selected species does not have a sprite for BW2";
//
// formbox1
//
this.formbox1.FormattingEnabled = true;
this.formbox1.Items.AddRange(new object[] {
""});
this.formbox1.Location = new System.Drawing.Point(658, 60);
this.formbox1.Name = "formbox1";
this.formbox1.Size = new System.Drawing.Size(98, 21);
this.formbox1.TabIndex = 206;
//
// groupBox2
//
this.groupBox2.Controls.Add(this.pkmcafe_but);
this.groupBox2.Controls.Add(this.dream_but);
this.groupBox2.Controls.Add(this.icy_but);
this.groupBox2.Controls.Add(this.rugged_but);
this.groupBox2.Controls.Add(this.spooky_but);
this.groupBox2.Controls.Add(this.spark_but);
this.groupBox2.Controls.Add(this.wind_but);
this.groupBox2.Controls.Add(this.pleasant_but);
this.groupBox2.Location = new System.Drawing.Point(864, 187);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(141, 256);
this.groupBox2.TabIndex = 207;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "Dream World";
//
// pkmcafe_but
//
this.pkmcafe_but.Location = new System.Drawing.Point(6, 222);
this.pkmcafe_but.Name = "pkmcafe_but";
this.pkmcafe_but.Size = new System.Drawing.Size(129, 23);
this.pkmcafe_but.TabIndex = 7;
this.pkmcafe_but.Text = "Pokémon Café Forest";
this.pkmcafe_but.UseVisualStyleBackColor = true;
this.pkmcafe_but.Click += new System.EventHandler(this.pkmcafe_butClick);
//
// dream_but
//
this.dream_but.Location = new System.Drawing.Point(6, 193);
this.dream_but.Name = "dream_but";
this.dream_but.Size = new System.Drawing.Size(129, 23);
this.dream_but.TabIndex = 6;
this.dream_but.Text = "Dream Park";
this.dream_but.UseVisualStyleBackColor = true;
this.dream_but.Click += new System.EventHandler(this.Dream_butClick);
//
// icy_but
//
this.icy_but.Location = new System.Drawing.Point(6, 164);
this.icy_but.Name = "icy_but";
this.icy_but.Size = new System.Drawing.Size(129, 23);
this.icy_but.TabIndex = 5;
this.icy_but.Text = "Icy Cave";
this.icy_but.UseVisualStyleBackColor = true;
this.icy_but.Click += new System.EventHandler(this.Icy_butClick);
//
// rugged_but
//
this.rugged_but.Location = new System.Drawing.Point(6, 135);
this.rugged_but.Name = "rugged_but";
this.rugged_but.Size = new System.Drawing.Size(129, 23);
this.rugged_but.TabIndex = 4;
this.rugged_but.Text = "Rugged Mountain";
this.rugged_but.UseVisualStyleBackColor = true;
this.rugged_but.Click += new System.EventHandler(this.Rugged_butClick);
//
// spooky_but
//
this.spooky_but.Location = new System.Drawing.Point(6, 106);
this.spooky_but.Name = "spooky_but";
this.spooky_but.Size = new System.Drawing.Size(129, 23);
this.spooky_but.TabIndex = 3;
this.spooky_but.Text = "Spooky Manor";
this.spooky_but.UseVisualStyleBackColor = true;
this.spooky_but.Click += new System.EventHandler(this.Spooky_butClick);
//
// spark_but
//
this.spark_but.Location = new System.Drawing.Point(6, 77);
this.spark_but.Name = "spark_but";
this.spark_but.Size = new System.Drawing.Size(129, 23);
this.spark_but.TabIndex = 2;
this.spark_but.Text = "Sparkling Sea";
this.spark_but.UseVisualStyleBackColor = true;
this.spark_but.Click += new System.EventHandler(this.Spark_butClick);
//
// wind_but
//
this.wind_but.Location = new System.Drawing.Point(6, 48);
this.wind_but.Name = "wind_but";
this.wind_but.Size = new System.Drawing.Size(129, 23);
this.wind_but.TabIndex = 1;
this.wind_but.Text = "Windswept Sky";
this.wind_but.UseVisualStyleBackColor = true;
this.wind_but.Click += new System.EventHandler(this.Wind_butClick);
//
// pleasant_but
//
this.pleasant_but.Location = new System.Drawing.Point(6, 19);
this.pleasant_but.Name = "pleasant_but";
this.pleasant_but.Size = new System.Drawing.Size(129, 23);
this.pleasant_but.TabIndex = 0;
this.pleasant_but.Text = "Pleasant Forest";
this.pleasant_but.UseVisualStyleBackColor = true;
this.pleasant_but.Click += new System.EventHandler(this.Pleasant_butClick);
//
// Entralink
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1014, 552);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.formbox1);
this.Controls.Add(this.sprite_warning);
this.Controls.Add(this.import_forest);
this.Controls.Add(this.export_forest);
this.Controls.Add(this.import_area);
this.Controls.Add(this.export_area);
this.Controls.Add(this.saveexit_but);
this.Controls.Add(this.exit_but);
this.Controls.Add(this.animbox1);
@ -2067,16 +2253,15 @@ namespace BW_tool
this.Controls.Add(this.unlock8box);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.formbox1);
this.Controls.Add(this.genderbox1);
this.Controls.Add(this.move1box);
this.Controls.Add(this.spbox1);
this.Name = "Entralink";
this.Text = "Entralink Forest";
((System.ComponentModel.ISupportInitialize)(this.formbox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.slot)).EndInit();
this.groupBox1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.groupBox2.ResumeLayout(false);
this.ResumeLayout(false);
}

View File

@ -18,7 +18,7 @@ namespace BW_tool
/// </summary>
public partial class Entralink : Form
{
FOREST forest;
public static FOREST forest;
List<RadioButton> checkboxlist = new List<RadioButton>();
public Entralink()
{
@ -26,6 +26,7 @@ namespace BW_tool
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
sprite_warning.Text = "";
checkboxlist.Add(checkdeep);
checkboxlist.Add(check9c);
@ -185,6 +186,7 @@ namespace BW_tool
}
updateGrid();
updateslot();
}
@ -193,7 +195,7 @@ namespace BW_tool
spbox1.SelectedIndex = forest.Species;
move1box.SelectedIndex = forest.Move;
genderbox1.SelectedIndex = forest.Gender;
formbox1.Value = forest.Form;
formbox1.SelectedIndex = forest.Form;
animbox1.SelectedIndex = (forest.Animation/2);
}
@ -261,9 +263,16 @@ namespace BW_tool
{
slot.Value = (int)dataGridView1.CurrentRow.Index;
}
int animation()
{
if (animbox1.SelectedIndex > 7)
return Entralink_DreamWorld.random_form_anim();
else
return (int)(animbox1.SelectedIndex*2);
}
void Add_pkmClick(object sender, EventArgs e)
{
forest.add_pkm(forest.create_pkm((int)spbox1.SelectedIndex, (int)move1box.SelectedIndex, (int)genderbox1.SelectedIndex, (int)formbox1.Value, (int)(animbox1.SelectedIndex*2)));
forest.add_pkm(forest.create_pkm((int)spbox1.SelectedIndex, (int)move1box.SelectedIndex, (int)genderbox1.SelectedIndex, (int)formbox1.SelectedIndex, animation()));
updateGrid();
}
void Del_pkmClick(object sender, EventArgs e)
@ -273,8 +282,16 @@ namespace BW_tool
}
void Edit_pkmClick(object sender, EventArgs e)
{
forest.edit_pkm(forest.create_pkm((int)spbox1.SelectedIndex, (int)move1box.SelectedIndex, (int)genderbox1.SelectedIndex, (int)formbox1.Value, (int)(animbox1.SelectedIndex*2)));
updateGrid();
//If slot is empty, add pokemon instead
if (forest.is_pkm_empty() == true)
{
forest.add_pkm(forest.create_pkm((int)spbox1.SelectedIndex, (int)move1box.SelectedIndex, (int)genderbox1.SelectedIndex, (int)formbox1.SelectedIndex, animation()));
updateGrid();
}else
{
forest.edit_pkm(forest.create_pkm((int)spbox1.SelectedIndex, (int)move1box.SelectedIndex, (int)genderbox1.SelectedIndex, (int)formbox1.SelectedIndex, animation()));
updateGrid();
}
}
void Exit_butClick(object sender, EventArgs e)
{
@ -289,6 +306,349 @@ namespace BW_tool
this.Close();
}
void Export_areaClick(object sender, EventArgs e)
{
forest.dump_area();
}
void Import_areaClick(object sender, EventArgs e)
{
forest.import_area();
updatearea();
}
void Export_forestClick(object sender, EventArgs e)
{
forest.export_forest();
updatearea();
}
void Import_forestClick(object sender, EventArgs e)
{
forest.import_forest();
updatearea();
}
public static int[] BW2_sprites =
{
505, 507, 510, 511, 513, 515, 519, 523, 525, 527,
529, 531, 533, 535, 538, 539, 542, 545, 546, 548,
550, 553, 556, 558, 559, 531, 564, 569, 572, 575,
578, 580, 582, 587, 588, 594, 596, 600, 605, 607,
610, 613, 616, 618, 619, 621, 622, 624, 626, 628,
630, 631, 632
};
public static int[] BW_femaleonly =
{
029, 030, 031, 113, 115, 124, 238, 241, 242, 314,
380, 413, 416, 440, 478, 488, 548, 549, 629, 630
};
public static int[] BW_maleonly =
{
032, 033, 034, 106, 107, 128, 236, 237, 313, 381,
414, 475, 538, 539, 627, 628, 641, 642, 645
};
public static int[] BW_genderless =
{
081, 082, 100, 101, 120, 121, 132, 137, 144, 145,
146, 150, 151, 201, 233, 243, 244, 245, 249, 250,
251, 292, 337, 338, 343, 344, 374, 375, 376, 377,
378, 379, 382, 383, 384, 385, 386, 436, 437, 462,
474, 479, 480, 481, 482, 483, 484, 486, 487, 489,
490, 491, 492, 493, 494, 599, 600, 601, 615, 622,
623, 638, 639, 640, 643, 644, 646, 647, 648, 649
};
public static int[] BW_forms =
{
201, 386, 412, 413, 422, 423, 479, 487, 492, 550,
585, 586, 648
};
void Spbox1SelectedIndexChanged(object sender, EventArgs e)
{
//Handle species without sprites
int i = 0;
if (MainForm.save.B2W2 == true && spbox1.SelectedIndex > 493)
{
for (i=0;i<53;i++)
{
if (spbox1.SelectedIndex == BW2_sprites[i])
{
sprite_warning.Text = "";
break;
}else
sprite_warning.Text = "Selected species does not have a sprite for BW2";
}
}
else if (spbox1.SelectedIndex > 493)
{
sprite_warning.Text = "Selected species does not have a sprite for BW";
}
else
{
sprite_warning.Text = "";
}
//Handle genders
bool special_gender = false;
for(i=0;i<BW_femaleonly.Length;i++)
{
if(spbox1.SelectedIndex == BW_femaleonly[i])
{
//Only female
special_gender = true;
genderbox1.SelectedIndex = 1;
genderbox1.Enabled = false;
}
}
for(i=0;i<BW_maleonly.Length;i++)
{
if(spbox1.SelectedIndex == BW_maleonly[i])
{
//Only male
special_gender = true;
genderbox1.SelectedIndex = 0;
genderbox1.Enabled = false;
}
}
for(i=0;i<BW_genderless.Length;i++)
{
if(spbox1.SelectedIndex == BW_genderless[i])
{
//Only genderless
special_gender = true;
genderbox1.Items.AddRange(new object[] {
"Male",
"Female",
"Genderless"});
genderbox1.SelectedIndex = 2;
genderbox1.Enabled = false;
}
}
if (special_gender == false)
{
//Re-enable list
genderbox1.Enabled = true;
genderbox1.Items.AddRange(new object[] {
"Male",
"Female"});
}
//Handle forms
formbox1.Enabled = true;
formbox1.Items.Clear();
switch (spbox1.SelectedIndex)
{
case 201:
formbox1.Items.AddRange(new object[] {
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K",
"L",
"M",
"N",
"O",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z",
"!",
"?"});
if (forest.Form > 27)
formbox1.SelectedIndex = 0;
else
formbox1.SelectedIndex = forest.Form;
break;
case 386:
formbox1.Items.AddRange(new object[] {
"Normal",
"Attack",
"Defense",
"Speed"});
if (forest.Form > 4)
formbox1.SelectedIndex = 0;
else
formbox1.SelectedIndex = forest.Form;
break;
case 412:
case 413:
formbox1.Items.AddRange(new object[] {
"Plant",
"Sand",
"Trash"});
if (forest.Form > 3)
formbox1.SelectedIndex = 0;
else
formbox1.SelectedIndex = forest.Form;
break;
case 422:
case 423:
formbox1.Items.AddRange(new object[] {
"West Sea",
"East Sea"});
if (forest.Form > 2)
formbox1.SelectedIndex = 0;
else
formbox1.SelectedIndex = forest.Form;
break;
case 479:
formbox1.Items.AddRange(new object[] {
"Normal",
"Heat",
"Wash",
"Frost",
"Fan",
"Mow"});
if (forest.Form > 6)
formbox1.SelectedIndex = 0;
else
formbox1.SelectedIndex = forest.Form;
break;
case 487:
formbox1.Items.AddRange(new object[] {
"Altered",
"Origin"});
if (forest.Form > 2)
formbox1.SelectedIndex = 0;
else
formbox1.SelectedIndex = forest.Form;
break;
case 492:
formbox1.Items.AddRange(new object[] {
"Land",
"Sky"});
if (forest.Form > 2)
formbox1.SelectedIndex = 0;
else
formbox1.SelectedIndex = forest.Form;
break;
case 550:
formbox1.Items.AddRange(new object[] {
"Red",
"Blue"});
if (forest.Form > 2)
formbox1.SelectedIndex = 0;
else
formbox1.SelectedIndex = forest.Form;
break;
case 585:
case 586:
formbox1.Items.AddRange(new object[] {
"Winter",
"Spring",
"Summer",
"Autumn"});
if (forest.Form > 4)
formbox1.SelectedIndex = 0;
else
formbox1.SelectedIndex = forest.Form;
break;
case 648:
formbox1.Items.AddRange(new object[] {
"Aria",
"Pirouette"});
if (forest.Form > 2)
formbox1.SelectedIndex = 0;
else
formbox1.SelectedIndex = forest.Form;
break;
default:
formbox1.Enabled = false;
formbox1.Items.Add("");
formbox1.SelectedIndex = 0;
break;
}
}
public static UInt32 dream_pkm = 0;
void add_dw_pkm()
{
//Add dream pokemon!
if (dream_pkm != 0)
{
//If slot is empty, add pokemon instead
if (forest.is_pkm_empty() == true)
{
forest.add_pkm(dream_pkm);
updateGrid();
}else
{
forest.edit_pkm(dream_pkm);
updateGrid();
}
}
dream_pkm = 0;
}
void Pleasant_butClick(object sender, EventArgs e)
{
Form dreamworld = new Entralink_DreamWorld(0, "Pleasant Forest");
dreamworld.ShowDialog();
add_dw_pkm();
}
void Wind_butClick(object sender, EventArgs e)
{
Form dreamworld = new Entralink_DreamWorld(1, "Windswept Sky");
dreamworld.ShowDialog();
add_dw_pkm();
}
void Spark_butClick(object sender, EventArgs e)
{
Form dreamworld = new Entralink_DreamWorld(2, "Sparkling Sea");
dreamworld.ShowDialog();
add_dw_pkm();
}
void Spooky_butClick(object sender, EventArgs e)
{
Form dreamworld = new Entralink_DreamWorld(3, "Spooky Manor");
dreamworld.ShowDialog();
add_dw_pkm();
}
void Rugged_butClick(object sender, EventArgs e)
{
Form dreamworld = new Entralink_DreamWorld(4, "Rugged Mountain");
dreamworld.ShowDialog();
add_dw_pkm();
}
void Icy_butClick(object sender, EventArgs e)
{
Form dreamworld = new Entralink_DreamWorld(5, "Icy Cave");
dreamworld.ShowDialog();
add_dw_pkm();
}
void Dream_butClick(object sender, EventArgs e)
{
Form dreamworld = new Entralink_DreamWorld(6, "Dream Park");
dreamworld.ShowDialog();
add_dw_pkm();
}
void pkmcafe_butClick(object sender, EventArgs e)
{
Form dreamworld = new Entralink_DreamWorld(7, "Pokémon Café Forest");
dreamworld.ShowDialog();
add_dw_pkm();
}
public class FOREST
@ -339,6 +699,84 @@ namespace BW_tool
}else
return -1;
}
public void dump_area()
{
int tmp_slot = indexpkm;
byte[] phl = new byte[4*20];
indexpkm = 0;
if(area > 0 && area < 4) //Area 9 ony holds 10 pokes
{
for (indexpkm=0;indexpkm<10;indexpkm++)
{
BitConverter.GetBytes(get_pkm()).CopyTo(phl, indexpkm*4);
}
}
else
{
for (indexpkm=0;indexpkm<20;indexpkm++)
{
BitConverter.GetBytes(get_pkm()).CopyTo(phl, indexpkm*4);
}
}
indexpkm = tmp_slot;
FileIO.save_file(phl, "Entree Forest Area data|*.phl|All Files (*.*)|*.*");
}
public void import_area()
{
byte[] phl = new byte[4*20];
string path = null;
FileIO.load_file(ref phl, ref path, "Entree Forest Area data|*.phl|All Files (*.*)|*.*");
UInt32 temp_pkm = 0;
indexpkm = 0;
if(area > 0 && area < 4) //Area 9 ony holds 10 pokes
{
for (indexpkm=0;indexpkm<10;indexpkm++)
{
temp_pkm = BitConverter.ToUInt32(phl, indexpkm*4);
edit_pkm(temp_pkm);
}
}
else
{
for (indexpkm=0;indexpkm<20;indexpkm++)
{
temp_pkm = BitConverter.ToUInt32(phl, indexpkm*4);
edit_pkm(temp_pkm);
}
}
indexpkm = 0;
}
public void export_forest()
{
FileIO.save_file(Data, "Entralink Forest Decrypted Data|*.efdd|All Files (*.*)|*.*");
}
public void import_forest()
{
byte[] forest = new byte[2304];
string path = null;
FileIO.load_file(ref forest, ref path, "Entralink Forest Decrypted Data|*.efdd|All Files (*.*)|*.*");
Data = forest;
indexpkm = 0;
}
/*
Pokemon Structure (4 bytes)
@ -379,10 +817,14 @@ Bits
else
return false;
}
public UInt32 get_pkm() //Relies on current indexpkm
{
return BitConverter.ToUInt32(Data, get_pkmoffset());
}
//Build a u32 pkm for entralink forest
public UInt32 create_pkm(int sp, int mv, int gdr, int frm, int anim)
{
return (UInt32) ( (sp) | (mv << 11) | (gdr << 21) | (frm << 23) | (anim << 27) );
return (UInt32) ( (sp&0x7FF) | ((mv&0x3FF) << 11) | ((gdr&0x3) << 21) | ((frm&0x1F) << 23) | ((anim&0xF) << 27) );
}
//Sets pkm data to current slot
public void edit_pkm(UInt32 pkm)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,602 @@
/*
* Created by SharpDevelop.
* User: sergi
* Date: 15/06/2016
* Time: 10:30
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Drawing;
using System.Windows.Forms;
namespace BW_tool
{
/// <summary>
/// Description of Entralink_DreamWorld.
/// </summary>
public partial class Entralink_DreamWorld : Form
{
public Entralink_DreamWorld(int DW, string Area)
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
area_label.Text = Area;
exclusive_label.Text = "";
world = DW;
setup_world();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
private int world = 0;
private void setup_world()
{
switch (world)
{
case 0://Pleasant forest
speciesbox.Items.Clear();
speciesbox.Items.AddRange(new object[] {
"Rattata",
"Nidoran (F) (BW*)",
"Nidoran (M) (BW*)",
"Oddish",
"Bellsprout",
"Ponyta",
"Farfetch'd",
"Doduo",
"Exeggcute",
"Lickitung",
"Tangela",
"Kangaskhan",
"Sentret",
"Igglybuff (BW*)",
"Mareep",
"Hoppip (BW*)",
"Sunkern",
"Stantler",
"Poochyena",
"Lotad (BW*)",
"Taillow (BW*)",
"Surskit",
"Bidoof",
"Shinx",
"Tympole (B2W2*)",
"Cottonee (B2W2*)",
"Petilil (B2W2*)",
"Karrablast (B2W2*)",
"Shelmet (B2W2*)",
"Glameow",
"Scolipede (B2W2*)",
"Psyduck",
"Growlithe",
"Scyther",
"Tauros",
"Marill",
"Sudowoodo",
"Girafarig",
"Miltank",
"Zigzagoon",
"Electrike (BW*)",
"Castform (BW*)",
"Pachirisu (BW*)",
"Buneary",
"Vulpix",
"Poliwag",
"Natu",
"Elekid",
"Skitty"});
speciesbox.SelectedIndex = 0;
break;
case 1://Windskept Sky
speciesbox.Items.Clear();
speciesbox.Items.AddRange(new object[] {
"Butterfree (BW*)",
"Pidgey",
"Spearow",
"Zubat",
"Aerodactyl",
"Hoothoot (BW*)",
"Ledyba",
"Hoppip",
"Yanma",
"Murkrow",
"Gligar",
"Delibird",
"Taillow",
"Wingull (BW*)",
"Swablu (BW*)",
"Staravia",
"Pidove (B2W2*)",
"Sigilyph (B2W2*)",
"Ducklett (B2W2*)",
"Emolga (B2W2*)",
"Skarmory",
"Tropius",
"Drifloon (BW*)",
"Chatot (BW*)"});
speciesbox.SelectedIndex = 0;
break;
case 2:
speciesbox.Items.Clear();
speciesbox.Items.AddRange(new object[] {
"Slowpoke (BW*)",
"Seel",
"Shellder",
"Krabby (BW*)",
"Horsea",
"Goldeen",
"Seaking (BW*)",
"Staryu (BW*)",
"Magikarp",
"Omanyte",
"Kabuto",
"Chinchou",
"Wooper",
"Qwilfish",
"Corsola (BW*)",
"Remoraid",
"Mantine",
"Wailmer",
"Barboach",
"Clamperl",
"Relicanth",
"Luvdisc",
"Buizel",
"Finneon",
"Basculin (Red Striped) (B2W2*)",
"Basculin (Blue Striped) (B2W2*)",
"Alomomola (B2W2*)",
"Stunfisk (B2W2*)",
"Tirtouga (B2W2*)",
"Tentacool",
"Carvanha",
"Corphish",
"Lileep",
"Anorith",
"Feebas",
"Shellos (West Sea) (BW*)",
"Shellos (East Sea) (BW*)",
"Lapras",
"Dratini"});
speciesbox.SelectedIndex = 0;
break;
case 3: // Spooky Mannor
speciesbox.Items.Clear();
speciesbox.Items.AddRange(new object[] {
"Gastly",
"Drowzee",
"Mr. Mime",
"Spinarak",
"Misdreavus",
"Wobbuffet (BW*)",
"Houndour",
"Smoochum (BW*)",
"Mawile (BW*)",
"Meditite (BW*)",
"Spoink",
"Shuppet",
"Duskull",
"Chimecho",
"Stunky",
"Bronzor (BW*)",
"Elgyem (B2W2*)",
"Pawniard (B2W2*)",
"Galvantula (B2W2*)",
"Meowth (BW*)",
"Snubbull",
"Smeargle",
"Volbeat",
"Illumise",
"Rotom (BW*)",
"Abra",
"Ralts (BW*)",
"Sableye (BW*)",
"Spiritomb (BW*)",
"Duosion (B2W2*)",
"Golett (B2W2*)"});
speciesbox.SelectedIndex = 0;
break;
case 4:
speciesbox.Items.Clear();
speciesbox.Items.AddRange(new object[] {
"Mankey (BW*)",
"Machop",
"Magnemite",
"Koffing",
"Rhyhorn (BW*)",
"Slugma",
"Phanpy (BW*)",
"Larvitar",
"Torkoal",
"Trapinch",
"Cacnea",
"Burmy",
"Hippopotas",
"Skorupi (BW*)",
"Heatmor (B2W2*)",
"Durant (B2W2*)",
"Maractus (B2W2*)",
"Crustle (B2W2*)",
"Magby",
"Teddiursa (BW*)",
"Makuhita (BW*)",
"Numel",
"Spinda (BW*)",
"Absol",
"Beldum (BW*)",
"Croagunk",
"Tyrogue",
"Bagon",
"Krookodile (B2W2*)",
"Riolu (BW*)"});
speciesbox.SelectedIndex = 0;
break;
case 5: //Icy cave
speciesbox.Items.Clear();
speciesbox.Items.AddRange(new object[] {
"Sandshrew",
"Geodude",
"Onix",
"Voltorb",
"Cubone",
"Cleffa (BW*)",
"Shuckle (BW*)",
"Whismur",
"Nosepass (BW*)",
"Aron",
"Lunatone",
"Solrock",
"Baltoy",
"Spheal (BW*)",
"Cranidos (BW*)",
"Snover",
"Drilbur (B2W2*)",
"Druddigon (B2W2*)",
"Diglett",
"Dunsparce (BW*)",
"Boldore (B2W2*)",
"Vanillish (B2W2*)",
"Klang (B2W2*)",
"Sneasel",
"Snorunt",
"Shieldon (BW*)",
"Swinub",
"Gible",
"Axew (B2W2*)"});
speciesbox.SelectedIndex = 0;
break;
case 6: //Dream Park
speciesbox.Items.Clear();
speciesbox.Items.AddRange(new object[] {
"Paras",
"Pineco",
"Wurmple",
"Seedot",
"Slakoth",
"Nincada",
"Plusle",
"Minun",
"Gulpin",
"Kecleon",
"Kricketot",
"Cherubi",
"Carnivine",
"Audino (B2W2*)",
"Throh (B2W2*)",
"Sawk (B2W2*)",
"Scraggy (B2W2*)",
"Venonat (BW*)",
"Grimer (BW*)",
"Combee (BW*)",
"Beedrill (BW*)",
"Ekans",
"Togepi",
"Aipom",
"Shroomish",
"Gurdurr (B2W2*)",
"Roselia",
"Zangoose (BW*)",
"Seviper (BW*)",
"Chansey",
"Pinsir",
"Eevee",
"Snorlax",
"Heracross"});
speciesbox.SelectedIndex = 0;
break;
case 7://Pokemon Cafe forest
speciesbox.Items.Clear();
speciesbox.Items.AddRange(new object[] {
"Poliwhirl",
"Eevee",
"Smeargle",
"Burmy"});
speciesbox.SelectedIndex = 0;
break;
}
atkA.Checked = true;
update_atk();
}
void Ok_butClick(object sender, EventArgs e)
{
//Handle forms
if (world == 2 && (speciesbox.SelectedIndex == 25 || speciesbox.SelectedIndex == 36 )) //Blue basculin, East Sea shellos
Entralink.dream_pkm = Entralink.forest.create_pkm(world_species[world][speciesbox.SelectedIndex], world_attacks[world][speciesbox.SelectedIndex][atk], gender, 1, random_form_anim());
else
Entralink.dream_pkm = Entralink.forest.create_pkm(world_species[world][speciesbox.SelectedIndex], world_attacks[world][speciesbox.SelectedIndex][atk], gender, 0, random_form_anim());
this.Close();
}
void Cancel_butClick(object sender, EventArgs e)
{
this.Close();
}
void SpeciesboxSelectedIndexChanged(object sender, EventArgs e)
{
//atkA.Checked = true;
update_atk();
update_gnd();
int i=0;
bool exclusive = false;
if (MainForm.save.B2W2 == true)
{
for(i=0;i<world_BW1_exclusives[world].Length;i++)
{
if(world_BW1_exclusives[world][i] == world_species[world][speciesbox.SelectedIndex])
{
exclusive = true;
}
}
if (exclusive == true)
{
exclusive_label.Text = "BW Only";
ok_but.Enabled = false;
}
}else
{
for(i=0;i<world_BW2_exclusives[world].Length;i++)
{
if(world_BW2_exclusives[world][i] == world_species[world][speciesbox.SelectedIndex])
{
exclusive = true;
}
}
if (exclusive == true)
{
exclusive_label.Text = "B2W2 Only";
ok_but.Enabled = false;
}
}
if (exclusive == false)
{
exclusive_label.Text = "";
ok_but.Enabled = true;
}
}
int[][] world_species = new int[][]
{
new int[]{019, 029, 032, 043, 069, 077, 083, 084, 102, 108, 114, 115, 161, 174, 179, 187, 191, 234, 261, 270, 276, 283, 399, 403, 535, 546, 548, 588, 616, 431, 545, 054, 058, 123, 128, 183, 185, 203, 241, 263, 309, 351, 417, 427, 037, 060, 177, 239, 300},
new int[]{12, 16, 21, 41, 142, 163, 165, 187, 193, 198, 207, 225, 276, 278, 333, 397, 519, 561, 580, 587, 227, 357, 425, 441},
new int[]{79, 86, 90, 98, 116, 118, 119, 120, 129, 138, 140, 170, 194, 211, 222, 223, 226, 320, 339, 366, 369, 370, 418, 456, 550, 550, 594, 618, 564, 72, 318, 341, 345, 347, 349, 422, 422, 131, 147},
new int[]{92, 96, 122, 167, 200, 202, 228, 238, 303, 307, 325, 353, 355, 358, 434, 436, 605, 624, 596, 52, 209, 235, 313, 314, 479, 63, 280, 302, 442, 578, 622},
new int[]{56, 66, 81, 109, 111, 218, 231, 246, 324, 328, 331, 412, 449, 451, 631, 632, 556, 558, 240, 216, 296, 322, 327, 359, 374, 453, 236, 371, 553, 447},
new int[]{27, 74, 95, 100, 104, 173, 213, 293, 299, 304, 337, 338, 343, 363, 408, 459, 529, 621, 50, 206, 525, 583, 600, 215, 361, 410, 220, 443, 610},
new int[]{46, 204, 265, 273, 287, 290, 311, 312, 316, 352, 401, 420, 455, 531, 538, 539, 559, 48, 88, 415, 15, 23, 175, 190, 285, 533, 315, 335, 336, 113, 127, 133, 143, 214},
new int[]{061, 133, 235, 412} //Pokemon Cafe forest
};
int[][][] world_attacks = new int[][][]
{
new int[][]{ new int[]{98, 382, 231}, new int[]{10, 389, 162}, new int[]{64, 68, 162}, new int[]{230, 298, 202}, new int[]{22, 235, 402}, new int[]{33, 37, 257}, new int[]{210, 355, 348}, new int[]{45, 175, 355}, new int[]{140, 235, 202}, new int[]{122, 214, 431}, new int[]{79, 73, 402}, new int[]{252, 68, 409}, new int[]{10, 203, 343}, new int[]{47, 313, 270}, new int[]{84, 115, 351}, new int[]{235, 270, 331}, new int[]{72, 230, 414}, new int[]{33, 50, 285}, new int[]{336, 305, 399}, new int[]{71, 73, 352}, new int[]{64, 119, 366}, new int[]{145, 56, 202}, new int[]{33, 401, 290}, new int[]{268, 393, 400}, new int[]{496, 414, 352}, new int[]{73, 227, 388}, new int[]{79, 204, 230}, new int[]{203, 224, 450}, new int[]{51, 226, 227}, new int[]{252, 372, 290}, new int[]{342, 390, 276}, new int[]{346, 227, 362}, new int[]{44, 34, 203}, new int[]{98, 226, 366}, new int[]{99, 231, 431}, new int[]{111, 453, 8}, new int[]{175, 205, 272}, new int[]{93, 243, 285}, new int[]{111, 174, 231}, new int[]{33, 271, 387}, new int[]{86, 423, 324}, new int[]{52, 466, 352}, new int[]{98, 343, 351}, new int[]{193, 252, 409}, new int[]{46, 257, 399}, new int[]{95, 54, 214}, new int[]{101, 297, 202}, new int[]{84, 238, 393}, new int[]{193, 321, 445} },
new int[][]{ new int[]{93, 355, 314}, new int[]{16, 211, 290}, new int[]{64, 185, 211}, new int[]{48, 95, 162}, new int[]{44, 372, 446}, new int[]{193, 101, 278}, new int[]{4, 450, 9}, new int[]{235, 227, 340}, new int[]{98, 364, 202}, new int[]{64, 109, 355}, new int[]{28, 364, 366}, new int[]{217, 420, 264}, new int[]{64, 203, 413}, new int[]{55, 239, 351}, new int[]{64, 297, 355}, new int[]{17, 297, 366}, new int[]{16, 95, 234}, new int[]{95, 500, 257}, new int[]{432, 362, 382}, new int[]{98, 403, 204}, new int[]{64, 65, 355}, new int[]{16, 73, 318}, new int[]{107, 95, 285}, new int[]{119, 417, 272} },
new int[][]{ new int[]{281, 335, 362}, new int[]{29, 333, 214}, new int[]{110, 112, 196}, new int[]{11, 133, 290}, new int[]{145, 190, 362}, new int[]{64, 60, 352}, new int[]{352, 214, 203}, new int[]{55, 278, 196}, new int[]{150, 175, 340}, new int[]{44, 330, 196}, new int[]{71, 175, 446}, new int[]{86, 133, 351}, new int[]{55, 34, 401}, new int[]{40, 453, 290}, new int[]{145, 109, 446}, new int[]{199, 350, 362}, new int[]{48, 243, 314}, new int[]{55, 214, 340}, new int[]{189, 214, 209}, new int[]{250, 445, 392}, new int[]{55, 214, 414}, new int[]{204, 300, 196}, new int[]{346, 163, 352}, new int[]{213, 186, 352}, new int[]{29, 97, 428}, new int[]{29, 97, 428}, new int[]{392, 243, 220}, new int[]{189, 174, 281}, new int[]{205, 175, 334}, new int[]{48, 367, 202}, new int[]{44, 37, 399}, new int[]{106, 232, 283}, new int[]{51, 243, 202}, new int[]{10, 446, 440}, new int[]{150, 445, 243}, new int[]{189, 281, 290}, new int[]{189, 281, 290}, new int[]{109, 32, 196}, new int[]{86, 352, 225} },
new int[][]{ new int[]{95, 50, 482}, new int[]{95, 427, 409}, new int[]{112, 298, 285}, new int[]{40, 527, 450}, new int[]{149, 194, 517}, new int[]{243, 204, 227}, new int[]{336, 364, 399}, new int[]{186, 445, 285}, new int[]{313, 424, 8}, new int[]{96, 409, 203}, new int[]{149, 285, 278}, new int[]{101, 194, 220}, new int[]{50, 220, 271}, new int[]{35, 95, 304}, new int[]{103, 492, 389}, new int[]{95, 285, 356}, new int[]{377, 112, 417}, new int[]{210, 427, 389}, new int[]{486, 50, 228}, new int[]{10, 95, 290}, new int[]{204, 370, 38}, new int[]{166, 445, 214}, new int[]{148, 271, 366}, new int[]{204, 313, 366}, new int[]{86, 351, 324}, new int[]{100, 285, 356}, new int[]{93, 194, 270}, new int[]{193, 389, 180}, new int[]{180, 220, 196}, new int[]{105, 286, 271}, new int[]{205, 7, 9} },
new int[][]{ new int[]{67, 179, 9}, new int[]{67, 418, 270}, new int[]{319, 278, 356}, new int[]{123, 399, 482}, new int[]{30, 68, 38}, new int[]{52, 517, 257}, new int[]{175, 484, 402}, new int[]{44, 399, 446}, new int[]{52, 90, 446}, new int[]{44, 324, 202}, new int[]{71, 298, 9}, new int[]{182, 450, 173}, new int[]{44, 254, 276}, new int[]{44, 97, 401}, new int[]{510, 257, 202}, new int[]{210, 203, 422}, new int[]{42, 73, 191}, new int[]{157, 68, 400}, new int[]{52, 9, 257}, new int[]{313, 242, 264}, new int[]{292, 270, 8}, new int[]{52, 34, 257}, new int[]{383, 252, 276}, new int[]{364, 224, 276}, new int[]{36, 428, 442}, new int[]{40, 409, 441}, new int[]{252, 364, 183}, new int[]{44, 349, 200}, new int[]{242, 68, 212}, new int[]{203, 418, 264} },
new int[][]{ new int[]{28, 68, 162}, new int[]{111, 446, 431}, new int[]{20, 446, 431}, new int[]{268, 324, 363}, new int[]{125, 195, 67}, new int[]{227, 312, 214}, new int[]{227, 270, 504}, new int[]{253, 283, 428}, new int[]{33, 446, 246}, new int[]{106, 283, 457}, new int[]{93, 414, 236}, new int[]{93, 428, 234}, new int[]{229, 356, 428}, new int[]{181, 90, 401}, new int[]{29, 442, 7}, new int[]{75, 419, 202}, new int[]{229, 319, 431}, new int[]{44, 424, 389}, new int[]{28, 251, 446}, new int[]{111, 277, 446}, new int[]{479, 174, 484}, new int[]{429, 420, 286}, new int[]{451, 356, 393}, new int[]{269, 8, 67}, new int[]{181, 311, 352}, new int[]{182, 68, 90}, new int[]{316, 246, 333}, new int[]{82, 200, 203}, new int[]{82, 68, 400} },
new int[][]{ new int[]{78, 440, 235}, new int[]{120, 390, 356}, new int[]{40, 450, 173}, new int[]{74, 331, 492}, new int[]{281, 400, 389}, new int[]{141, 203, 400}, new int[]{86, 435, 324}, new int[]{86, 435, 324}, new int[]{139, 151, 202}, new int[]{185, 285, 513}, new int[]{522, 283, 253}, new int[]{73, 505, 331}, new int[]{44, 476, 380}, new int[]{270, 227, 281}, new int[]{20, 8, 276}, new int[]{249, 9, 530}, new int[]{67, 252, 409}, new int[]{50, 226, 285}, new int[]{139, 114, 425}, new int[]{16, 366, 314}, new int[]{31, 314, 210}, new int[]{40, 251, 399}, new int[]{118, 381, 253}, new int[]{10, 252, 7}, new int[]{78, 331, 264}, new int[]{67, 183, 409}, new int[]{74, 79, 129}, new int[]{98, 458, 67}, new int[]{44, 34, 401}, new int[]{45, 68, 270}, new int[]{11, 370, 382}, new int[]{28, 204, 129}, new int[]{133, 7, 278}, new int[]{30, 175, 264} },
new int[][]{ new int[]{240, 114, 352}, new int[]{ 270, 204, 129}, new int[]{ 166, 445, 214}, new int[]{ 182, 450, 173} } //Pokemon Cafe forest
};
/* Method deprecated, it seems there's no gender restriction outside pokemon being male/female only or genderless
int[][] world_gender = new int[][]
{
// 0: only male, 1: only female, 2: genderless, 3: male/female
new int[]{0, 0},
new int[]{0, 0},
new int[]{0, 0},
new int[]{0, 0},
new int[]{0, 0},
new int[]{0, 0},
new int[]{0, 0},
new int[]{3, 3, 3, 3} //Pokemon Cafe forest
};
*/
int[][] world_BW1_exclusives = new int[][]
{
new int[]{029, 032, 174, 187, 270, 276, 283, 309, 351, 417},//Pleasant Forest
new int[]{012, 163, 278, 333, 425, 441},//Windswept Sky
new int[]{079, 098, 119, 120, 222, 422, 422},
new int[]{202, 238, 303, 307, 436, 052, 479, 280, 302, 442},
new int[]{056, 111, 231, 451, 216, 296, 327, 374, 447},
new int[]{173, 213, 299, 363, 408, 206, 410},
new int[]{048, 88, 415, 15, 335, 336},
new int[]{0} //Pokemon Cafe forest
};
int[][] world_BW2_exclusives = new int[][]
{
new int[]{535, 546, 548, 588, 616, 545},//Pleasant Forest
new int[]{519, 561, 580, 587},//Windswept Sky
new int[]{550, 550, 594, 618, 564},
new int[]{605, 624, 596, 578},
new int[]{631, 632, 556, 558, 553},
new int[]{529, 621, 525, 583, 600, 610},
new int[]{531, 538, 539, 559, 533},
new int[]{0} //Pokemon Cafe forest
};
public static int random_form_anim()
{
Random rnd = new Random(Guid.NewGuid().GetHashCode());
int anim = rnd.Next(15);
if (IsOdd(anim) == true)
anim = anim-1;
return anim;
}
public static bool IsOdd(int value)
{
return value % 2 != 0;
}
private int atk = 0;
private void update_atk()
{
if (atkA.Checked == true)
atk = 0;
else if (atkB.Checked == true)
atk = 1;
else if (atkC.Checked == true)
atk = 2;
moveboxA.SelectedIndex = world_attacks[world][speciesbox.SelectedIndex][0];
movebox.SelectedIndex = world_attacks[world][speciesbox.SelectedIndex][1];
moveboxC.SelectedIndex = world_attacks[world][speciesbox.SelectedIndex][2];
}
void AtkACheckedChanged(object sender, EventArgs e)
{
update_atk();
}
void AtkBCheckedChanged(object sender, EventArgs e)
{
update_atk();
}
void AtkCCheckedChanged(object sender, EventArgs e)
{
update_atk();
}
private int gender = 0;
private void update_gnd()
{
//Handle genders
bool special_gender = false;
int i=0;
for(i=0;i<Entralink.BW_femaleonly.Length;i++)
{
if(world_species[world][speciesbox.SelectedIndex] == Entralink.BW_femaleonly[i])
{
//Only female
special_gender = true;
gnd_female.Checked = true;
gnd_male.Enabled = false;
gnd_female.Enabled = true;
gnd_none.Enabled = false;
}
}
for(i=0;i<Entralink.BW_maleonly.Length;i++)
{
if(world_species[world][speciesbox.SelectedIndex] == Entralink.BW_maleonly[i])
{
//Only male
special_gender = true;
gnd_male.Checked = true;
gnd_male.Enabled = true;
gnd_female.Enabled = false;
gnd_none.Enabled = false;
}
}
for(i=0;i<Entralink.BW_genderless.Length;i++)
{
if(world_species[world][speciesbox.SelectedIndex] == Entralink.BW_genderless[i])
{
//Only genderless
special_gender = true;
gnd_none.Checked = true;
gnd_male.Enabled = false;
gnd_female.Enabled = false;
gnd_none.Enabled = true;
}
}
if (special_gender == false)
{
//Male/female
if (gender == 2)
gnd_male.Checked = true;
if (gnd_male.Checked == false && gnd_female.Checked == false && gnd_none.Checked == false)
gnd_male.Checked = true;
gnd_male.Enabled = true;
gnd_female.Enabled = true;
gnd_none.Enabled = false;
}
/*
switch(world_gender[world][speciesbox.SelectedIndex])
{
case 0://male only
gnd_male.Checked = true;
gnd_male.Enabled = true;
gnd_female.Enabled = false;
gnd_none.Enabled = false;
break;
case 1://female only
gnd_female.Checked = true;
gnd_male.Enabled = false;
gnd_female.Enabled = true;
gnd_none.Enabled = false;
break;
case 2://genderless
gnd_none.Checked = true;
gnd_male.Enabled = false;
gnd_female.Enabled = false;
gnd_none.Enabled = true;
break;
default://male/female
if (gender == 2)
gnd_male.Checked = true;
if (gnd_male.Checked == false && gnd_female.Checked == false && gnd_none.Checked == false)
gnd_male.Checked = true;
gnd_male.Enabled = true;
gnd_female.Enabled = true;
gnd_none.Enabled = false;
break;
}
*/
if (gnd_male.Checked == true)
gender = 0;
else if (gnd_female.Checked == true)
gender = 1;
else if (gnd_none.Checked == true)
gender = 2;
}
void Gnd_maleCheckedChanged(object sender, EventArgs e)
{
update_gnd();
}
void Gnd_femaleCheckedChanged(object sender, EventArgs e)
{
update_gnd();
}
void Gnd_noneCheckedChanged(object sender, EventArgs e)
{
update_gnd();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -557,7 +557,7 @@ namespace BW_tool
// unknowngrottobox
//
this.unknowngrottobox.Location = new System.Drawing.Point(538, 89);
this.unknowngrottobox.Maximum = new decimal(new int[] {
this.unknowngrottobox.Maximum = new decimal(new int[]{
255,
0,
0,

View File

@ -68,7 +68,7 @@ namespace BW_tool
// day
//
this.day.Location = new System.Drawing.Point(49, 39);
this.day.Maximum = new decimal(new int[] {
this.day.Maximum = new decimal(new int[]{
31,
0,
0,
@ -81,7 +81,7 @@ namespace BW_tool
// month
//
this.month.Location = new System.Drawing.Point(140, 39);
this.month.Maximum = new decimal(new int[] {
this.month.Maximum = new decimal(new int[]{
12,
0,
0,
@ -94,7 +94,7 @@ namespace BW_tool
// year
//
this.year.Location = new System.Drawing.Point(229, 39);
this.year.Maximum = new decimal(new int[] {
this.year.Maximum = new decimal(new int[]{
127,
0,
0,

View File

@ -45,7 +45,7 @@ namespace BW_tool
// record_value
//
this.record_value.Location = new System.Drawing.Point(284, 50);
this.record_value.Maximum = new decimal(new int[] {
this.record_value.Maximum = new decimal(new int[]{
-1,
0,
0,

View File

@ -95,5 +95,21 @@ namespace BW_tool
MessageBox.Show("File Saved.", "Save file");
}
}
public static void save_file(byte[] buffer, string filter)
{ //if (savegamename.Text.Length < 1) return;
if (buffer == null) return;
SaveFileDialog saveFD = new SaveFileDialog();
//saveFD.InitialDirectory = "c:\\";
saveFD.Filter = filter;
if (saveFD.ShowDialog() == DialogResult.OK)
{
System.IO.FileStream saveFile;
saveFile = new FileStream(saveFD.FileName, FileMode.Create);
//Write file
saveFile.Write(buffer, 0, buffer.Length);
saveFile.Close();
MessageBox.Show("File Saved.", "Save file");
}
}
}
}