First release, probably lots of unknown bugs.

This commit is contained in:
suloku 2016-10-31 00:26:32 +01:00
commit f0660e1c7a
55 changed files with 47659 additions and 0 deletions

236
.gitignore vendored Normal file
View File

@ -0,0 +1,236 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
artifacts/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Microsoft Azure ApplicationInsights config file
ApplicationInsights.config
# Windows Store app package directory
AppPackages/
BundleArtifacts/
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
# FAKE - F# Make
.fake/

18
WC3_TOOL.sln Normal file
View File

@ -0,0 +1,18 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 5.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WC3_TOOL", "WC3_TOOL\WC3_TOOL.csproj", "{1E65C335-2DE3-410B-B713-5F7B023106CD}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1E65C335-2DE3-410B-B713-5F7B023106CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1E65C335-2DE3-410B-B713-5F7B023106CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1E65C335-2DE3-410B-B713-5F7B023106CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1E65C335-2DE3-410B-B713-5F7B023106CD}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

399
wc3_tool/EventTool.Designer.cs generated Normal file
View File

@ -0,0 +1,399 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 29/04/2016
* Time: 13:45
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
namespace WC3_TOOL
{
partial class EventTool
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
private System.Windows.Forms.Button load_save_but;
private System.Windows.Forms.TextBox sav3_path;
private System.Windows.Forms.Button region_but;
private System.Windows.Forms.ComboBox game_box;
private System.Windows.Forms.ComboBox language_box;
private System.Windows.Forms.Label region_lab;
private System.Windows.Forms.Button inject_sav;
private System.Windows.Forms.RadioButton jap_eon;
private System.Windows.Forms.RadioButton jap_aurora;
private System.Windows.Forms.GroupBox JAP_group;
private System.Windows.Forms.RadioButton jap_old;
private System.Windows.Forms.RadioButton jap_mystic;
private System.Windows.Forms.GroupBox USA_group;
private System.Windows.Forms.RadioButton usa_eon_italy;
private System.Windows.Forms.RadioButton usa_mystic;
private System.Windows.Forms.RadioButton usa_aurora;
private System.Windows.Forms.RadioButton usa_eon_ecard;
private System.Windows.Forms.GroupBox EUR_group;
private System.Windows.Forms.RadioButton eur_eon;
private System.Windows.Forms.RadioButton eur_aurora;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
/// <summary>
/// Disposes resources used by the form.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
this.load_save_but = new System.Windows.Forms.Button();
this.sav3_path = new System.Windows.Forms.TextBox();
this.region_but = new System.Windows.Forms.Button();
this.game_box = new System.Windows.Forms.ComboBox();
this.language_box = new System.Windows.Forms.ComboBox();
this.region_lab = new System.Windows.Forms.Label();
this.inject_sav = new System.Windows.Forms.Button();
this.jap_eon = new System.Windows.Forms.RadioButton();
this.jap_aurora = new System.Windows.Forms.RadioButton();
this.JAP_group = new System.Windows.Forms.GroupBox();
this.jap_old = new System.Windows.Forms.RadioButton();
this.jap_mystic = new System.Windows.Forms.RadioButton();
this.USA_group = new System.Windows.Forms.GroupBox();
this.usa_eon_italy = new System.Windows.Forms.RadioButton();
this.usa_mystic = new System.Windows.Forms.RadioButton();
this.usa_aurora = new System.Windows.Forms.RadioButton();
this.usa_eon_ecard = new System.Windows.Forms.RadioButton();
this.EUR_group = new System.Windows.Forms.GroupBox();
this.eur_eon = new System.Windows.Forms.RadioButton();
this.eur_aurora = new System.Windows.Forms.RadioButton();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.JAP_group.SuspendLayout();
this.USA_group.SuspendLayout();
this.EUR_group.SuspendLayout();
this.SuspendLayout();
//
// load_save_but
//
this.load_save_but.Location = new System.Drawing.Point(13, 10);
this.load_save_but.Name = "load_save_but";
this.load_save_but.Size = new System.Drawing.Size(91, 23);
this.load_save_but.TabIndex = 1;
this.load_save_but.Text = "Load Save File";
this.load_save_but.UseVisualStyleBackColor = true;
this.load_save_but.Click += new System.EventHandler(this.Load_save_butClick);
//
// sav3_path
//
this.sav3_path.Location = new System.Drawing.Point(13, 39);
this.sav3_path.Name = "sav3_path";
this.sav3_path.ReadOnly = true;
this.sav3_path.Size = new System.Drawing.Size(588, 20);
this.sav3_path.TabIndex = 5;
//
// region_but
//
this.region_but.Enabled = false;
this.region_but.Location = new System.Drawing.Point(460, 10);
this.region_but.Name = "region_but";
this.region_but.Size = new System.Drawing.Size(92, 23);
this.region_but.TabIndex = 15;
this.region_but.Text = "Override Region";
this.region_but.UseVisualStyleBackColor = true;
this.region_but.Click += new System.EventHandler(this.Region_butClick);
//
// game_box
//
this.game_box.Enabled = false;
this.game_box.FormattingEnabled = true;
this.game_box.Items.AddRange(new object[] {
"Ruby/Saphire",
"Emerald",
"Fire Red/Leaf Green"});
this.game_box.Location = new System.Drawing.Point(110, 12);
this.game_box.Name = "game_box";
this.game_box.Size = new System.Drawing.Size(149, 21);
this.game_box.TabIndex = 21;
this.game_box.SelectedIndexChanged += new System.EventHandler(this.Game_boxSelectedIndexChanged);
//
// language_box
//
this.language_box.Enabled = false;
this.language_box.FormattingEnabled = true;
this.language_box.Items.AddRange(new object[] {
"Japanesse",
"English",
"French",
"Italian",
"German",
"Korean (not used)",
"Spanish"});
this.language_box.Location = new System.Drawing.Point(264, 12);
this.language_box.Name = "language_box";
this.language_box.Size = new System.Drawing.Size(121, 21);
this.language_box.TabIndex = 22;
this.language_box.SelectedIndexChanged += new System.EventHandler(this.Language_boxSelectedIndexChanged);
//
// region_lab
//
this.region_lab.Location = new System.Drawing.Point(391, 15);
this.region_lab.Name = "region_lab";
this.region_lab.Size = new System.Drawing.Size(63, 18);
this.region_lab.TabIndex = 23;
this.region_lab.Text = "Region";
//
// inject_sav
//
this.inject_sav.Location = new System.Drawing.Point(441, 185);
this.inject_sav.Name = "inject_sav";
this.inject_sav.Size = new System.Drawing.Size(144, 23);
this.inject_sav.TabIndex = 28;
this.inject_sav.Text = "Inject and Save";
this.inject_sav.UseVisualStyleBackColor = true;
this.inject_sav.Click += new System.EventHandler(this.Inject_savClick);
//
// jap_eon
//
this.jap_eon.Location = new System.Drawing.Point(6, 19);
this.jap_eon.Name = "jap_eon";
this.jap_eon.Size = new System.Drawing.Size(144, 24);
this.jap_eon.TabIndex = 29;
this.jap_eon.TabStop = true;
this.jap_eon.Text = "Eon Ticket (R/S/E)";
this.jap_eon.UseVisualStyleBackColor = true;
//
// jap_aurora
//
this.jap_aurora.Location = new System.Drawing.Point(6, 49);
this.jap_aurora.Name = "jap_aurora";
this.jap_aurora.Size = new System.Drawing.Size(170, 24);
this.jap_aurora.TabIndex = 30;
this.jap_aurora.TabStop = true;
this.jap_aurora.Text = "Aurora Ticket 2004 (FR/LG)";
this.jap_aurora.UseVisualStyleBackColor = true;
//
// JAP_group
//
this.JAP_group.Controls.Add(this.jap_old);
this.JAP_group.Controls.Add(this.jap_mystic);
this.JAP_group.Controls.Add(this.jap_aurora);
this.JAP_group.Controls.Add(this.jap_eon);
this.JAP_group.Enabled = false;
this.JAP_group.Location = new System.Drawing.Point(13, 65);
this.JAP_group.Name = "JAP_group";
this.JAP_group.Size = new System.Drawing.Size(192, 143);
this.JAP_group.TabIndex = 31;
this.JAP_group.TabStop = false;
this.JAP_group.Text = "Japanesse";
//
// jap_old
//
this.jap_old.Location = new System.Drawing.Point(6, 109);
this.jap_old.Name = "jap_old";
this.jap_old.Size = new System.Drawing.Size(170, 24);
this.jap_old.TabIndex = 32;
this.jap_old.TabStop = true;
this.jap_old.Text = "Old Sea Map (E)";
this.jap_old.UseVisualStyleBackColor = true;
//
// jap_mystic
//
this.jap_mystic.Location = new System.Drawing.Point(6, 79);
this.jap_mystic.Name = "jap_mystic";
this.jap_mystic.Size = new System.Drawing.Size(170, 24);
this.jap_mystic.TabIndex = 31;
this.jap_mystic.TabStop = true;
this.jap_mystic.Text = "Mystic Ticket 2005 (FR/LG/E)";
this.jap_mystic.UseVisualStyleBackColor = true;
//
// USA_group
//
this.USA_group.Controls.Add(this.usa_eon_italy);
this.USA_group.Controls.Add(this.usa_mystic);
this.USA_group.Controls.Add(this.usa_aurora);
this.USA_group.Controls.Add(this.usa_eon_ecard);
this.USA_group.Enabled = false;
this.USA_group.Location = new System.Drawing.Point(211, 65);
this.USA_group.Name = "USA_group";
this.USA_group.Size = new System.Drawing.Size(192, 143);
this.USA_group.TabIndex = 33;
this.USA_group.TabStop = false;
this.USA_group.Text = "USA/EUR (english only)";
//
// usa_eon_italy
//
this.usa_eon_italy.Location = new System.Drawing.Point(6, 49);
this.usa_eon_italy.Name = "usa_eon_italy";
this.usa_eon_italy.Size = new System.Drawing.Size(180, 24);
this.usa_eon_italy.TabIndex = 32;
this.usa_eon_italy.TabStop = true;
this.usa_eon_italy.Text = "Eon Ticket (R/S) (Nintendo Italy)";
this.usa_eon_italy.UseVisualStyleBackColor = true;
//
// usa_mystic
//
this.usa_mystic.Location = new System.Drawing.Point(6, 109);
this.usa_mystic.Name = "usa_mystic";
this.usa_mystic.Size = new System.Drawing.Size(170, 24);
this.usa_mystic.TabIndex = 31;
this.usa_mystic.TabStop = true;
this.usa_mystic.Text = "Mystic Ticket (E)";
this.usa_mystic.UseVisualStyleBackColor = true;
//
// usa_aurora
//
this.usa_aurora.Location = new System.Drawing.Point(6, 79);
this.usa_aurora.Name = "usa_aurora";
this.usa_aurora.Size = new System.Drawing.Size(170, 24);
this.usa_aurora.TabIndex = 30;
this.usa_aurora.TabStop = true;
this.usa_aurora.Text = "Aurora Ticket (FR/LG/E)";
this.usa_aurora.UseVisualStyleBackColor = true;
//
// usa_eon_ecard
//
this.usa_eon_ecard.Location = new System.Drawing.Point(6, 19);
this.usa_eon_ecard.Name = "usa_eon_ecard";
this.usa_eon_ecard.Size = new System.Drawing.Size(168, 24);
this.usa_eon_ecard.TabIndex = 29;
this.usa_eon_ecard.TabStop = true;
this.usa_eon_ecard.Text = "Eon Ticket (R/S) (e-card)";
this.usa_eon_ecard.UseVisualStyleBackColor = true;
//
// EUR_group
//
this.EUR_group.Controls.Add(this.eur_eon);
this.EUR_group.Controls.Add(this.eur_aurora);
this.EUR_group.Enabled = false;
this.EUR_group.Location = new System.Drawing.Point(409, 65);
this.EUR_group.Name = "EUR_group";
this.EUR_group.Size = new System.Drawing.Size(192, 103);
this.EUR_group.TabIndex = 34;
this.EUR_group.TabStop = false;
this.EUR_group.Text = "EUR (non english)";
//
// eur_eon
//
this.eur_eon.Location = new System.Drawing.Point(6, 19);
this.eur_eon.Name = "eur_eon";
this.eur_eon.Size = new System.Drawing.Size(180, 24);
this.eur_eon.TabIndex = 32;
this.eur_eon.TabStop = true;
this.eur_eon.Text = "Eon Ticket (R/S) (Nintendo Italy)";
this.eur_eon.UseVisualStyleBackColor = true;
//
// eur_aurora
//
this.eur_aurora.Location = new System.Drawing.Point(6, 49);
this.eur_aurora.Name = "eur_aurora";
this.eur_aurora.Size = new System.Drawing.Size(170, 24);
this.eur_aurora.TabIndex = 30;
this.eur_aurora.TabStop = true;
this.eur_aurora.Text = "Aurora Ticket (FR/LG/E)";
this.eur_aurora.UseVisualStyleBackColor = true;
//
// label1
//
this.label1.Location = new System.Drawing.Point(13, 217);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(588, 19);
this.label1.TabIndex = 35;
this.label1.Text = "Note: The following events are still missing:";
//
// label2
//
this.label2.Location = new System.Drawing.Point(33, 236);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(273, 23);
this.label2.TabIndex = 36;
this.label2.Text = "- \"MYSTIC TICKET\" (US/English) (FR/LG and E)";
//
// label3
//
this.label3.Location = new System.Drawing.Point(33, 251);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(494, 18);
this.label3.TabIndex = 37;
this.label3.Text = "- \"MYSTIC TICKET\" TCG WORLD CHAMPIONSHIPS 2005 (US/English) (FR/LG)";
//
// label4
//
this.label4.Location = new System.Drawing.Point(33, 267);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(444, 23);
this.label4.TabIndex = 38;
this.label4.Text = "- \"MYSTIC TICKET\" POKÉMON ROCKS AMERICA 2005 (US/English) (FR/LG and E)";
//
// label5
//
this.label5.Location = new System.Drawing.Point(33, 282);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(421, 23);
this.label5.TabIndex = 39;
this.label5.Text = "- All Pokémon Egg WonderCards for FR/LG and E.";
//
// label6
//
this.label6.Location = new System.Drawing.Point(13, 304);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(552, 31);
this.label6.TabIndex = 40;
this.label6.Text = "If you own any of these events and want to contribute want to contribute to this " +
"project, please contact suloku or ajxpkm at projectpokemon.org forums or send an" +
" e-mail to gen3mysterygift@gmail.com";
//
// EventTool
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(610, 340);
this.Controls.Add(this.label6);
this.Controls.Add(this.label5);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.EUR_group);
this.Controls.Add(this.USA_group);
this.Controls.Add(this.JAP_group);
this.Controls.Add(this.inject_sav);
this.Controls.Add(this.region_lab);
this.Controls.Add(this.language_box);
this.Controls.Add(this.game_box);
this.Controls.Add(this.region_but);
this.Controls.Add(this.sav3_path);
this.Controls.Add(this.load_save_but);
this.Name = "EventTool";
this.Text = "Gen3 Event Tool 0.1 by suloku";
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.EventToolDragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.EventToolDragEnter);
this.JAP_group.ResumeLayout(false);
this.USA_group.ResumeLayout(false);
this.EUR_group.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
}
}

871
wc3_tool/EventTool.cs Normal file
View File

@ -0,0 +1,871 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 29/04/2016
* Time: 13:45
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Reflection;
using System.Resources;
namespace WC3_TOOL
{
/// <summary>
/// Description of EventTool.
/// </summary>
public partial class EventTool : Form
{
public EventTool()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
region_lab.Text = "";
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
ResourceManager Tickets = new ResourceManager("WC3_tool.WC3.Tickets", Assembly.GetExecutingAssembly());
public string savfilter = "RAW Save file|*.sav;*sa1;*sa2|All Files (*.*)|*.*";
public string wc3filter = "Wonder Card file|*.wc3|All Files (*.*)|*.*";
public string wcnfilter = "Wonder News file|*.wn3|All Files (*.*)|*.*";
public string me3filter = "Mistery Event file|*.me3|All Files (*.*)|*.*";
public string ectfilter = "e-card Trainer file|*.ect|All Files (*.*)|*.*";
public string berryfilter = "e-card Berry file|*.ecb|All Files (*.*)|*.*";
public byte[] savbuffer;
public byte[] wc3new;
public byte[] wcnnew;
public byte[] me3file;
public byte[] ectfile;
public byte[] berryfile;
public static SAV3 sav3file;
void Button1Click(object sender, EventArgs e)
{
Form wc3edit = new WC3_editor();
wc3edit.ShowDialog();
}
void Load_save(string path)
{
int filesize = FileIO.load_file(ref savbuffer, ref path, savfilter);
if( filesize == SAV3.SAVE_SIZE)
{
sav3_path.Text = path;
sav3file = new SAV3(savbuffer);
region_but.Enabled = false;
switch(sav3file.game)
{
case 0:
//Gamelabel.Text = "Ruby/Sapphire";
break;
case 1:
//Gamelabel.Text = "Emerald";
break;
case 2:
//Gamelabel.Text = "Fire Red/Leaf Green";
break;
default:
//Gamelabel.Text = "Can't autodetect save game";
break;
}
if(sav3file.isjap == true)
region_lab.Text = "JAP";
else
region_lab.Text = "USA/EUR";
region_but.Enabled = true;
language_box.SelectedIndex = sav3file.language-1;
game_box.SelectedIndex = sav3file.game;
if (sav3file.isjap == true && sav3file.language != 1)
{
DialogResult dialogResult = MessageBox.Show("Region/language autodetection inconsistency.\n\nIs this a japanesse savegame?", "Region Input", MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
sav3file.isjap = true;
region_lab.Text = "JAP";
language_box.SelectedIndex = 0;
}
else if (dialogResult == DialogResult.No)
{
sav3file.isjap = false;
region_lab.Text = "USA/EUR";
}
}
sav3file.updateOffsets();
}else if (filesize == -1){
;
}else{
MessageBox.Show("Invalid file.");
}
}
void Load_save_butClick(object sender, EventArgs e)
{
Load_save(null);
}
void Export_wc3butClick(object sender, EventArgs e)
{
if(sav3file.has_WC == false)
MessageBox.Show("Save file does not contain WonderCard data.");
else
FileIO.save_data(sav3file.get_WC3(), wc3filter);
}
void Inject_wc3_butClick(object sender, EventArgs e)
{
if(sav3file.has_WC == true)
{
DialogResult dialogResult = MessageBox.Show("Savefile already has a WonderCard. Overwrite?", "WonderCard Injection", MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.No)
{
return;
}
}
if (sav3file.has_mistery_gift == true)
{
string path = null;
int filesize = FileIO.load_file(ref wc3new, ref path, wc3filter);
if( (filesize == wc3.SIZE_WC3 && sav3file.isjap == false) || (filesize == wc3.SIZE_WC3_jap && sav3file.isjap == true) )
{
sav3file.set_WC3(wc3new);
//custom_script.Checked = true;
//Add fix sav3 checksum func3
sav3file.update_section_chk(4);
MessageBox.Show("WC3 injected.");
FileIO.save_data(sav3file.Data, savfilter);
}else if (filesize == -1){
;
}else{
MessageBox.Show("Invalid file size.");
}
}else
{
MessageBox.Show("Save file does not have Mistery Gift enabled.");
}
}
void Export_wcnClick(object sender, EventArgs e)
{
if(sav3file.has_WCN == false)
MessageBox.Show("Save file does not contain Wonder News data.");
else
FileIO.save_data(sav3file.get_WCN(), wcnfilter);
}
void Inject_wcnClick(object sender, EventArgs e)
{
if (sav3file.has_mistery_gift == true)
{
string path = null;
int filesize = FileIO.load_file(ref wcnnew, ref path, wcnfilter);
if( (filesize == SAV3.WCN_SIZE && sav3file.isjap == false) || (filesize == SAV3.WCN_SIZE_jap && sav3file.isjap == true) )
{
sav3file.set_WCN(wcnnew);
//custom_script.Checked = true;
//Add fix sav3 checksum func3
sav3file.update_section_chk(4);
MessageBox.Show("WC News injected.");
FileIO.save_data(sav3file.Data, savfilter);
}else if (filesize == -1){
;
}else{
MessageBox.Show("Invalid file size.");
}
}else
{
MessageBox.Show("Save file does not have Mistery Gift enabled.");
}
}
void Wcn_edit_butClick(object sender, EventArgs e)
{
Form wcnedit = new WCN_editor();
wcnedit.ShowDialog();
}
void Export_me3_butClick(object sender, EventArgs e)
{
int check = sav3file.has_ME3();
if(check == 0)
MessageBox.Show("Save file does not contain Mistery Event Data.");
else if(check == 2)
MessageBox.Show("Save file does contain Mistery Event Data, but the script has already been erased from savedata.");
if (check != 0)
FileIO.save_data(sav3file.get_ME3(), me3filter);
}
void Inject_me3_butClick(object sender, EventArgs e)
{
if (sav3file.has_mistery_event == true || sav3file.game == 1)
{
if (sav3file.game == 1)
MessageBox.Show("Mistery Event was removed from non Japanesse Emerald.\n\tYou can still inject the data at your own risk.");
string path = null;
int filesize = FileIO.load_file(ref me3file, ref path, me3filter);
if( filesize == sav3file.me3_size )
{
ME3 me3_struct = new ME3(me3file, filesize);
if (sav3file.game != me3_struct.isemerald)
{
MessageBox.Show("This ME3 file is not for this game!");
}else
{
sav3file.set_ME3(me3file);
//custom_script.Checked = true;
//Add fix sav3 checksum func3
sav3file.update_section_chk(4);
MessageBox.Show("Mistery event injected.");
FileIO.save_data(sav3file.Data, savfilter);
}
}else if (filesize == -1){
;
}else{
MessageBox.Show("Invalid file size.");
}
}else
{
MessageBox.Show("Save file does not have Mistery Event enabled.");
}
}
void Me3_editor_butClick(object sender, EventArgs e)
{
Form me3edit = new ME3_editor();
me3edit.ShowDialog();
}
void Eon_em_butClick(object sender, EventArgs e)
{
MessageBox.Show("This will enable the Eon ticket event as distributed in Japan.\nKeep in mind this event was never available outside Japan.\nIf you want a legit EON ticket in Emerald, you have to Mix Records with a Ruby/Saphire game with distributable EON ticket.");
sav3file.enable_eon_emerald();
MessageBox.Show("Mistery event EON Ticket injected.\n\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
void EnableMisteryGiftEventToolStripMenuItemClick(object sender, EventArgs e)
{
sav3file.enable_Mistery();
FileIO.save_data(sav3file.Data, savfilter);
}
void Region_butClick(object sender, EventArgs e)
{
/*
sav3file.prompt_region("Is this a Japanese savegame?");
if (sav3file.isjap)
region_text.Text = "JAP";
else
region_text.Text = "USA/EUR";
*/
game_box.Enabled = true;
language_box.Enabled = true;
}
void FixSectionChecksumsToolStripMenuItemClick(object sender, EventArgs e)
{
sav3file.fix_section_checksums();
FileIO.save_data(sav3file.Data, savfilter);
}
void Decor_butClick(object sender, EventArgs e)
{
Form decoredit = new Decor_editor(sav3file);
decoredit.ShowDialog();
}
void Ect_edit_butClick(object sender, EventArgs e)
{
Form ectedit = new ECT_editor();
ectedit.ShowDialog();
}
void Export_ect_butClick(object sender, EventArgs e)
{
/*int check = sav3file.has_ME3();
if(check == 0)
MessageBox.Show("Save file does not contain Mistery Event Data.");
else if(check == 2)
MessageBox.Show("Save file does contain Mistery Event Data, but the script has already been erased from savedata.");
if (check != 0)*/
FileIO.save_data(sav3file.get_ECT(), ectfilter);
}
void Inject_ect_butClick(object sender, EventArgs e)
{
//if (sav3file.has_mistery_event == true || sav3file.game == 1)
//{
if (sav3file.game == 1)
MessageBox.Show("Mistery Event was removed from non Japanesse Emerald.\n\tYou can still inject the data at your own risk.");
string path = null;
int filesize = FileIO.load_file(ref ectfile, ref path, ectfilter);
if( filesize == ECT.SIZE_ECT )
{
sav3file.set_ECT(ectfile);
sav3file.update_section_chk(0);
MessageBox.Show("e-card Trainer injected.");
FileIO.save_data(sav3file.Data, savfilter);
}else if (filesize == -1){
;
}else{
MessageBox.Show("Invalid file size.");
}
//}else
//{
// MessageBox.Show("Save file does not have Mistery Event enabled.");
//}
}
void EventToolDragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
void EventToolDragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
Load_save(files[0]);
}
void Game_boxSelectedIndexChanged(object sender, EventArgs e)
{
sav3file.game = game_box.SelectedIndex;
sav3file.updateOffsets();
switch (game_box.SelectedIndex)
{
case 0: //RS
jap_eon.Enabled = true;
jap_aurora.Enabled = false;
jap_mystic.Enabled = false;
jap_old.Enabled = false;
usa_eon_ecard.Enabled = true;
usa_eon_italy.Enabled = true;
usa_aurora.Enabled = false;
usa_mystic.Enabled = false;
eur_eon.Enabled = true;
eur_aurora.Enabled = false;
break;
case 1: //E
jap_eon.Enabled = true;
jap_aurora.Enabled = false; //No aurora for japanesse?
jap_mystic.Enabled = true;
jap_old.Enabled = true;
usa_eon_ecard.Enabled = false;
usa_eon_italy.Enabled = false;
usa_aurora.Enabled = true;
usa_mystic.Enabled = true;
eur_eon.Enabled = false;
eur_aurora.Enabled = true;
break;
case 2: //FRLG
jap_eon.Enabled = false;
jap_aurora.Enabled = true;
jap_mystic.Enabled = true;
jap_old.Enabled = false;
usa_eon_ecard.Enabled = false;
usa_eon_italy.Enabled = false;
usa_aurora.Enabled = true;
usa_mystic.Enabled = false;
eur_eon.Enabled = false;
eur_aurora.Enabled = true;
break;
}
//Uncheck all
jap_eon.Checked = false;
jap_aurora.Checked = false;
jap_mystic.Checked = false;
jap_old.Checked = false;
usa_eon_ecard.Checked = false;
usa_eon_italy.Checked = false;
usa_aurora.Checked = false;
usa_mystic.Checked = false;
eur_eon.Checked = false;
eur_aurora.Checked = false;
}
void Language_boxSelectedIndexChanged(object sender, EventArgs e)
{
sav3file.language = language_box.SelectedIndex+1;
if(sav3file.language == 1)
sav3file.isjap = true;
else
sav3file.isjap = false;
if(sav3file.isjap == true)
region_lab.Text = "JAP";
else
region_lab.Text = "USA/EUR";
sav3file.updateOffsets();
switch (language_box.SelectedIndex)
{
case 0://JAP
JAP_group.Enabled = true;
USA_group.Enabled = false;
EUR_group.Enabled = false;
break;
case 1://English
JAP_group.Enabled = false;
USA_group.Enabled = true;
EUR_group.Enabled = false;
break;
case 2://French
JAP_group.Enabled = false;
USA_group.Enabled = false;
EUR_group.Enabled = true;
break;
case 3://Italian
JAP_group.Enabled = false;
USA_group.Enabled = false;
EUR_group.Enabled = true;
break;
case 4://German
JAP_group.Enabled = false;
USA_group.Enabled = false;
EUR_group.Enabled = true;
break;
case 5://Korean
JAP_group.Enabled = false;
USA_group.Enabled = false;
EUR_group.Enabled = false;
break;
case 6://Spanish
JAP_group.Enabled = false;
USA_group.Enabled = false;
EUR_group.Enabled = true;
break;
}
//Uncheck all
jap_eon.Checked = false;
jap_aurora.Checked = false;
jap_mystic.Checked = false;
jap_old.Checked = false;
usa_eon_ecard.Checked = false;
usa_eon_italy.Checked = false;
usa_aurora.Checked = false;
usa_mystic.Checked = false;
eur_eon.Checked = false;
eur_aurora.Checked = false;
}
void Inject_savClick(object sender, EventArgs e)
{
switch (language_box.SelectedIndex)
{
case 0://JAP
if (jap_eon.Checked == true)
{
if (sav3file.has_mistery_event == true)
{
if (game_box.SelectedIndex == 0) //RS
{
sav3file.set_ME3((byte[]) Tickets.GetObject("JAP_EON_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Eon Ticket Mistery Event injected.\n\nGo see your father at Petalburg Gym.");
FileIO.save_data(sav3file.Data, savfilter);
}
else if (game_box.SelectedIndex == 1) //E
{
sav3file.enable_eon_emerald();
MessageBox.Show("Eon Ticket Mistery Event injected.\nGo see the man in blue at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
}
else
{
MessageBox.Show("Please enable Mistery Event in the savefile.");
}
}
else if (jap_aurora.Checked == true)
{
if (game_box.SelectedIndex == 2) //FRLG
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("JAP_AURORA_FRLG_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Aurora Ticket Wondercard injected.\nGo see the man in green at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable mistery gift in the savefile.");
}
}
}
else if (jap_mystic.Checked == true)
{
if (game_box.SelectedIndex == 1) //E
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("JAP_MYSTIC_E_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Mystic Ticket Wondercard injected.\nGo see the man in blue at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable Mistery Gift in the savefile.");
}
}
else if (game_box.SelectedIndex == 2) //FRLG
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("JAP_MYSTIC_FRLG_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Mystic Ticket Wondercard injected.\nGo see the man in green at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable Mistery Gift in the savefile.");
}
}
}
else if (jap_old.Checked == true)
{
if (game_box.SelectedIndex == 1) //E
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("JAP_OLDMAP_E_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Old Map Wondercard injected.\nGo see the man in green at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable Mistery Gift in the savefile.");
}
}
}
break;
case 1://English
if (usa_eon_ecard.Checked == true)
{
if (sav3file.has_mistery_event == true)
{
if (game_box.SelectedIndex == 0) //RS
{
sav3file.set_ME3((byte[]) Tickets.GetObject("USA_EON_ECARD_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Eon Ticket Mistery Event injected.\n\nGo see your father at Petalburg Gym.");
FileIO.save_data(sav3file.Data, savfilter);
}
}
else
{
MessageBox.Show("Please enable Mistery Event in the savefile.");
}
}
else if (usa_eon_italy.Checked == true)
{
if (sav3file.has_mistery_event == true)
{
if (game_box.SelectedIndex == 0) //RS
{
sav3file.set_ME3((byte[]) Tickets.GetObject("USA_EON_ITALY_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Eon Ticket Mistery Event injected.\n\nGo see your father at Petalburg Gym.");
FileIO.save_data(sav3file.Data, savfilter);
}
}
else
{
MessageBox.Show("Please enable Mistery Event in the savefile.");
}
}
else if (usa_aurora.Checked == true)
{
if (game_box.SelectedIndex == 1) //E
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("USA_AURORA_E_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Aurora Ticket Wondercard injected.\nGo see the man in blue at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable mistery gift in the savefile.");
}
}
else if (game_box.SelectedIndex == 2) //FRLG
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("USA_AURORA_FRLG_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Aurora Ticket Wondercard injected.\nGo see the man in green at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable mistery gift in the savefile.");
}
}
}
else if (usa_mystic.Checked == true)
{
if (game_box.SelectedIndex == 1) //E
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("USA_MYSTIC_E_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Mystic Ticket Wondercard injected.\nGo see the man in blue at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable Mistery Gift in the savefile.");
}
}/*
else if (game_box.SelectedIndex == 2) //FRLG
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("USA_MYSTIC_FRLG_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Mystic Ticket Wondercard injected.\nGo see the man in green at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable Mistery Gift in the savefile.");
}
}*/
}
break;
case 2://French
if (eur_eon.Checked == true)
{
if (sav3file.has_mistery_event == true)
{
if (game_box.SelectedIndex == 0) //RS
{
sav3file.set_ME3((byte[]) Tickets.GetObject("FR_EON_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Eon Ticket Mistery Event injected.\n\nGo see your father at Petalburg Gym.");
FileIO.save_data(sav3file.Data, savfilter);
}
}
else
{
MessageBox.Show("Please enable Mistery Event in the savefile.");
}
}
else if (eur_aurora.Checked == true)
{
if (game_box.SelectedIndex == 1) //E
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("FR_AURORA_E_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Aurora Ticket Wondercard injected.\nGo see the man in blue at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable mistery gift in the savefile.");
}
}
else if (game_box.SelectedIndex == 2) //FRLG
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("FR_AURORA_FRLG_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Aurora Ticket Wondercard injected.\nGo see the man in green at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable mistery gift in the savefile.");
}
}
}
break;
case 3://Italian
if (eur_eon.Checked == true)
{
if (sav3file.has_mistery_event == true)
{
if (game_box.SelectedIndex == 0) //RS
{
sav3file.set_ME3((byte[]) Tickets.GetObject("IT_EON_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Eon Ticket Mistery Event injected.\n\nGo see your father at Petalburg Gym.");
FileIO.save_data(sav3file.Data, savfilter);
}
}
else
{
MessageBox.Show("Please enable Mistery Event in the savefile.");
}
}
else if (eur_aurora.Checked == true)
{
if (game_box.SelectedIndex == 1) //E
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("IT_AURORA_E_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Aurora Ticket Wondercard injected.\nGo see the man in blue at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable mistery gift in the savefile.");
}
}
else if (game_box.SelectedIndex == 2) //FRLG
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("IT_AURORA_FRLG_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Aurora Ticket Wondercard injected.\nGo see the man in green at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable mistery gift in the savefile.");
}
}
}
break;
case 4://German
if (eur_eon.Checked == true)
{
if (sav3file.has_mistery_event == true)
{
if (game_box.SelectedIndex == 0) //RS
{
sav3file.set_ME3((byte[]) Tickets.GetObject("DE_EON_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Eon Ticket Mistery Event injected.\n\nGo see your father at Petalburg Gym.");
FileIO.save_data(sav3file.Data, savfilter);
}
}
else
{
MessageBox.Show("Please enable Mistery Event in the savefile.");
}
}
else if (eur_aurora.Checked == true)
{
if (game_box.SelectedIndex == 1) //E
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("DE_AURORA_E_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Aurora Ticket Wondercard injected.\nGo see the man in blue at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable mistery gift in the savefile.");
}
}
else if (game_box.SelectedIndex == 2) //FRLG
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("DE_AURORA_FRLG_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Aurora Ticket Wondercard injected.\nGo see the man in green at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable mistery gift in the savefile.");
}
}
}
break;
case 5://Korean
break;
case 6://Spanish
if (eur_eon.Checked == true)
{
if (sav3file.has_mistery_event == true)
{
if (game_box.SelectedIndex == 0) //RS
{
sav3file.set_ME3((byte[]) Tickets.GetObject("SP_EON_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Eon Ticket Mistery Event injected.\n\nGo see your father at Petalburg Gym.");
FileIO.save_data(sav3file.Data, savfilter);
}
}
else
{
MessageBox.Show("Please enable Mistery Event in the savefile.");
}
}
else if (eur_aurora.Checked == true)
{
if (game_box.SelectedIndex == 1) //E
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("SP_AURORA_E_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Aurora Ticket Wondercard injected.\nGo see the man in blue at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable mistery gift in the savefile.");
}
}
else if (game_box.SelectedIndex == 2) //FRLG
{
if (sav3file.has_mistery_gift == true)
{
sav3file.set_WC3((byte[]) Tickets.GetObject("SP_AURORA_FRLG_FILE"));
sav3file.update_section_chk(4);
MessageBox.Show("Aurora Ticket Wondercard injected.\nGo see the man in green at pokemon's center 2nd floor.\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
else
{
MessageBox.Show("Please enable mistery gift in the savefile.");
}
}
}
break;
}
}
}
}

120
wc3_tool/EventTool.resx Normal file
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>

570
wc3_tool/MainScreen.Designer.cs generated Normal file
View File

@ -0,0 +1,570 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 29/04/2016
* Time: 13:45
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
namespace WC3_TOOL
{
partial class MainScreen
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
private System.Windows.Forms.Button wc3_editor_but;
private System.Windows.Forms.Button load_save_but;
private System.Windows.Forms.Button inject_wc3_but;
private System.Windows.Forms.Button export_wc3but;
private System.Windows.Forms.TextBox sav3_path;
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem menuToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem exportSortedSavefileToolStripMenuItem;
private System.Windows.Forms.Button export_wcn;
private System.Windows.Forms.Button inject_wcn;
private System.Windows.Forms.Button wcn_edit_but;
private System.Windows.Forms.Button export_me3_but;
private System.Windows.Forms.Button inject_me3_but;
private System.Windows.Forms.Button me3_editor_but;
private System.Windows.Forms.Button eon_em_but;
private System.Windows.Forms.ToolStripMenuItem extraToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem enableMisteryGiftMainScreenStripMenuItem;
private System.Windows.Forms.Button region_but;
private System.Windows.Forms.ToolStripMenuItem fixSectionChecksumsToolStripMenuItem;
private System.Windows.Forms.Button decor_but;
private System.Windows.Forms.Button ect_edit_but;
private System.Windows.Forms.Button export_ect_but;
private System.Windows.Forms.Button inject_ect_but;
private System.Windows.Forms.ComboBox game_box;
private System.Windows.Forms.ComboBox language_box;
private System.Windows.Forms.Label region_lab;
private System.Windows.Forms.ToolStripMenuItem exportOldSaveToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem clearEggEventFlagToolStripMenuItem;
private System.Windows.Forms.Button export_eberry;
private System.Windows.Forms.Button inject_eberry;
private System.Windows.Forms.Button ecb_edit_but;
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem1;
private System.Windows.Forms.Button tvswarm_but;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.GroupBox groupBox4;
private System.Windows.Forms.Button events_distro_but;
/// <summary>
/// Disposes resources used by the form.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
this.wc3_editor_but = new System.Windows.Forms.Button();
this.load_save_but = new System.Windows.Forms.Button();
this.inject_wc3_but = new System.Windows.Forms.Button();
this.export_wc3but = new System.Windows.Forms.Button();
this.sav3_path = new System.Windows.Forms.TextBox();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.menuToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.exportSortedSavefileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.exportOldSaveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.fixSectionChecksumsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.extraToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.enableMisteryGiftMainScreenStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.clearEggEventFlagToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.export_wcn = new System.Windows.Forms.Button();
this.inject_wcn = new System.Windows.Forms.Button();
this.wcn_edit_but = new System.Windows.Forms.Button();
this.export_me3_but = new System.Windows.Forms.Button();
this.inject_me3_but = new System.Windows.Forms.Button();
this.me3_editor_but = new System.Windows.Forms.Button();
this.eon_em_but = new System.Windows.Forms.Button();
this.region_but = new System.Windows.Forms.Button();
this.decor_but = new System.Windows.Forms.Button();
this.ect_edit_but = new System.Windows.Forms.Button();
this.export_ect_but = new System.Windows.Forms.Button();
this.inject_ect_but = new System.Windows.Forms.Button();
this.game_box = new System.Windows.Forms.ComboBox();
this.language_box = new System.Windows.Forms.ComboBox();
this.region_lab = new System.Windows.Forms.Label();
this.export_eberry = new System.Windows.Forms.Button();
this.inject_eberry = new System.Windows.Forms.Button();
this.ecb_edit_but = new System.Windows.Forms.Button();
this.tvswarm_but = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.groupBox4 = new System.Windows.Forms.GroupBox();
this.events_distro_but = new System.Windows.Forms.Button();
this.menuStrip1.SuspendLayout();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.groupBox3.SuspendLayout();
this.groupBox4.SuspendLayout();
this.SuspendLayout();
//
// wc3_editor_but
//
this.wc3_editor_but.Location = new System.Drawing.Point(132, 33);
this.wc3_editor_but.Name = "wc3_editor_but";
this.wc3_editor_but.Size = new System.Drawing.Size(75, 23);
this.wc3_editor_but.TabIndex = 0;
this.wc3_editor_but.Text = "WC3 Editor";
this.wc3_editor_but.UseVisualStyleBackColor = true;
this.wc3_editor_but.Click += new System.EventHandler(this.Button1Click);
//
// load_save_but
//
this.load_save_but.Location = new System.Drawing.Point(12, 37);
this.load_save_but.Name = "load_save_but";
this.load_save_but.Size = new System.Drawing.Size(91, 23);
this.load_save_but.TabIndex = 1;
this.load_save_but.Text = "Load Save File";
this.load_save_but.UseVisualStyleBackColor = true;
this.load_save_but.Click += new System.EventHandler(this.Load_save_butClick);
//
// inject_wc3_but
//
this.inject_wc3_but.Enabled = false;
this.inject_wc3_but.Location = new System.Drawing.Point(6, 49);
this.inject_wc3_but.Name = "inject_wc3_but";
this.inject_wc3_but.Size = new System.Drawing.Size(120, 23);
this.inject_wc3_but.TabIndex = 2;
this.inject_wc3_but.Text = "Inject WC3";
this.inject_wc3_but.UseVisualStyleBackColor = true;
this.inject_wc3_but.Click += new System.EventHandler(this.Inject_wc3_butClick);
//
// export_wc3but
//
this.export_wc3but.Enabled = false;
this.export_wc3but.Location = new System.Drawing.Point(6, 20);
this.export_wc3but.Name = "export_wc3but";
this.export_wc3but.Size = new System.Drawing.Size(120, 23);
this.export_wc3but.TabIndex = 4;
this.export_wc3but.Text = "Export WC3";
this.export_wc3but.UseVisualStyleBackColor = true;
this.export_wc3but.Click += new System.EventHandler(this.Export_wc3butClick);
//
// sav3_path
//
this.sav3_path.Location = new System.Drawing.Point(12, 66);
this.sav3_path.Name = "sav3_path";
this.sav3_path.ReadOnly = true;
this.sav3_path.Size = new System.Drawing.Size(665, 20);
this.sav3_path.TabIndex = 5;
//
// menuStrip1
//
this.menuStrip1.BackColor = System.Drawing.SystemColors.ControlLight;
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menuToolStripMenuItem,
this.extraToolStripMenuItem,
this.aboutToolStripMenuItem1});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(687, 24);
this.menuStrip1.TabIndex = 6;
this.menuStrip1.Text = "menuStrip1";
//
// menuToolStripMenuItem
//
this.menuToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.exportSortedSavefileToolStripMenuItem,
this.fixSectionChecksumsToolStripMenuItem});
this.menuToolStripMenuItem.Name = "menuToolStripMenuItem";
this.menuToolStripMenuItem.Size = new System.Drawing.Size(50, 20);
this.menuToolStripMenuItem.Text = "Menu";
//
// exportSortedSavefileToolStripMenuItem
//
this.exportSortedSavefileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem1,
this.exportOldSaveToolStripMenuItem});
this.exportSortedSavefileToolStripMenuItem.Name = "exportSortedSavefileToolStripMenuItem";
this.exportSortedSavefileToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.exportSortedSavefileToolStripMenuItem.Text = "Export sorted savefile (current)";
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Enabled = false;
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(174, 22);
this.toolStripMenuItem1.Text = "Export current save";
this.toolStripMenuItem1.Click += new System.EventHandler(this.ToolStripMenuItem1Click);
//
// exportOldSaveToolStripMenuItem
//
this.exportOldSaveToolStripMenuItem.Enabled = false;
this.exportOldSaveToolStripMenuItem.Name = "exportOldSaveToolStripMenuItem";
this.exportOldSaveToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
this.exportOldSaveToolStripMenuItem.Text = "Export old save";
this.exportOldSaveToolStripMenuItem.Click += new System.EventHandler(this.ExportOldSaveToolStripMenuItemClick);
//
// fixSectionChecksumsToolStripMenuItem
//
this.fixSectionChecksumsToolStripMenuItem.Enabled = false;
this.fixSectionChecksumsToolStripMenuItem.Name = "fixSectionChecksumsToolStripMenuItem";
this.fixSectionChecksumsToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
this.fixSectionChecksumsToolStripMenuItem.Text = "Fix Section Checksums";
this.fixSectionChecksumsToolStripMenuItem.Click += new System.EventHandler(this.FixSectionChecksumsToolStripMenuItemClick);
//
// extraToolStripMenuItem
//
this.extraToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.enableMisteryGiftMainScreenStripMenuItem,
this.clearEggEventFlagToolStripMenuItem});
this.extraToolStripMenuItem.Name = "extraToolStripMenuItem";
this.extraToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
this.extraToolStripMenuItem.Text = "Extra";
//
// enableMisteryGiftMainScreenStripMenuItem
//
this.enableMisteryGiftMainScreenStripMenuItem.Enabled = false;
this.enableMisteryGiftMainScreenStripMenuItem.Name = "enableMisteryGiftMainScreenStripMenuItem";
this.enableMisteryGiftMainScreenStripMenuItem.Size = new System.Drawing.Size(207, 22);
this.enableMisteryGiftMainScreenStripMenuItem.Text = "Enable Mistery Gift/Event";
this.enableMisteryGiftMainScreenStripMenuItem.Click += new System.EventHandler(this.EnableMisteryGiftMainScreenStripMenuItemClick);
//
// clearEggEventFlagToolStripMenuItem
//
this.clearEggEventFlagToolStripMenuItem.Enabled = false;
this.clearEggEventFlagToolStripMenuItem.Name = "clearEggEventFlagToolStripMenuItem";
this.clearEggEventFlagToolStripMenuItem.Size = new System.Drawing.Size(207, 22);
this.clearEggEventFlagToolStripMenuItem.Text = "Clear Egg Event Flag";
this.clearEggEventFlagToolStripMenuItem.Click += new System.EventHandler(this.ClearEggEventFlagToolStripMenuItemClick);
//
// aboutToolStripMenuItem1
//
this.aboutToolStripMenuItem1.Name = "aboutToolStripMenuItem1";
this.aboutToolStripMenuItem1.Size = new System.Drawing.Size(52, 20);
this.aboutToolStripMenuItem1.Text = "About";
this.aboutToolStripMenuItem1.Click += new System.EventHandler(this.AboutToolStripMenuItem1Click);
//
// export_wcn
//
this.export_wcn.Enabled = false;
this.export_wcn.Location = new System.Drawing.Point(6, 78);
this.export_wcn.Name = "export_wcn";
this.export_wcn.Size = new System.Drawing.Size(120, 23);
this.export_wcn.TabIndex = 7;
this.export_wcn.Text = "Export Wonder News";
this.export_wcn.UseVisualStyleBackColor = true;
this.export_wcn.Click += new System.EventHandler(this.Export_wcnClick);
//
// inject_wcn
//
this.inject_wcn.Enabled = false;
this.inject_wcn.Location = new System.Drawing.Point(6, 107);
this.inject_wcn.Name = "inject_wcn";
this.inject_wcn.Size = new System.Drawing.Size(120, 23);
this.inject_wcn.TabIndex = 8;
this.inject_wcn.Text = "Inject Wonder News";
this.inject_wcn.UseVisualStyleBackColor = true;
this.inject_wcn.Click += new System.EventHandler(this.Inject_wcnClick);
//
// wcn_edit_but
//
this.wcn_edit_but.Location = new System.Drawing.Point(132, 91);
this.wcn_edit_but.Name = "wcn_edit_but";
this.wcn_edit_but.Size = new System.Drawing.Size(75, 23);
this.wcn_edit_but.TabIndex = 9;
this.wcn_edit_but.Text = "WN3 Editor";
this.wcn_edit_but.UseVisualStyleBackColor = true;
this.wcn_edit_but.Click += new System.EventHandler(this.Wcn_edit_butClick);
//
// export_me3_but
//
this.export_me3_but.Enabled = false;
this.export_me3_but.Location = new System.Drawing.Point(6, 33);
this.export_me3_but.Name = "export_me3_but";
this.export_me3_but.Size = new System.Drawing.Size(120, 23);
this.export_me3_but.TabIndex = 10;
this.export_me3_but.Text = "Export ME3";
this.export_me3_but.UseVisualStyleBackColor = true;
this.export_me3_but.Click += new System.EventHandler(this.Export_me3_butClick);
//
// inject_me3_but
//
this.inject_me3_but.Enabled = false;
this.inject_me3_but.Location = new System.Drawing.Point(6, 62);
this.inject_me3_but.Name = "inject_me3_but";
this.inject_me3_but.Size = new System.Drawing.Size(120, 23);
this.inject_me3_but.TabIndex = 11;
this.inject_me3_but.Text = "Inject ME3";
this.inject_me3_but.UseVisualStyleBackColor = true;
this.inject_me3_but.Click += new System.EventHandler(this.Inject_me3_butClick);
//
// me3_editor_but
//
this.me3_editor_but.Location = new System.Drawing.Point(132, 62);
this.me3_editor_but.Name = "me3_editor_but";
this.me3_editor_but.Size = new System.Drawing.Size(75, 23);
this.me3_editor_but.TabIndex = 12;
this.me3_editor_but.Text = "ME3 Editor";
this.me3_editor_but.UseVisualStyleBackColor = true;
this.me3_editor_but.Click += new System.EventHandler(this.Me3_editor_butClick);
//
// eon_em_but
//
this.eon_em_but.Enabled = false;
this.eon_em_but.Location = new System.Drawing.Point(6, 91);
this.eon_em_but.Name = "eon_em_but";
this.eon_em_but.Size = new System.Drawing.Size(120, 23);
this.eon_em_but.TabIndex = 13;
this.eon_em_but.Text = "EON Ticket (Emerald)";
this.eon_em_but.UseVisualStyleBackColor = true;
this.eon_em_but.Click += new System.EventHandler(this.Eon_em_butClick);
//
// region_but
//
this.region_but.Enabled = false;
this.region_but.Location = new System.Drawing.Point(459, 37);
this.region_but.Name = "region_but";
this.region_but.Size = new System.Drawing.Size(92, 23);
this.region_but.TabIndex = 15;
this.region_but.Text = "Override Region";
this.region_but.UseVisualStyleBackColor = true;
this.region_but.Click += new System.EventHandler(this.Region_butClick);
//
// decor_but
//
this.decor_but.Enabled = false;
this.decor_but.Location = new System.Drawing.Point(6, 19);
this.decor_but.Name = "decor_but";
this.decor_but.Size = new System.Drawing.Size(120, 23);
this.decor_but.TabIndex = 16;
this.decor_but.Text = "Decoration Editor";
this.decor_but.UseVisualStyleBackColor = true;
this.decor_but.Click += new System.EventHandler(this.Decor_butClick);
//
// ect_edit_but
//
this.ect_edit_but.Location = new System.Drawing.Point(132, 30);
this.ect_edit_but.Name = "ect_edit_but";
this.ect_edit_but.Size = new System.Drawing.Size(75, 23);
this.ect_edit_but.TabIndex = 17;
this.ect_edit_but.Text = "ECT Editor";
this.ect_edit_but.UseVisualStyleBackColor = true;
this.ect_edit_but.Click += new System.EventHandler(this.Ect_edit_butClick);
//
// export_ect_but
//
this.export_ect_but.Enabled = false;
this.export_ect_but.Location = new System.Drawing.Point(6, 17);
this.export_ect_but.Name = "export_ect_but";
this.export_ect_but.Size = new System.Drawing.Size(120, 23);
this.export_ect_but.TabIndex = 18;
this.export_ect_but.Text = "Export ECT";
this.export_ect_but.UseVisualStyleBackColor = true;
this.export_ect_but.Click += new System.EventHandler(this.Export_ect_butClick);
//
// inject_ect_but
//
this.inject_ect_but.Enabled = false;
this.inject_ect_but.Location = new System.Drawing.Point(6, 46);
this.inject_ect_but.Name = "inject_ect_but";
this.inject_ect_but.Size = new System.Drawing.Size(120, 23);
this.inject_ect_but.TabIndex = 19;
this.inject_ect_but.Text = "Inject ECT";
this.inject_ect_but.UseVisualStyleBackColor = true;
this.inject_ect_but.Click += new System.EventHandler(this.Inject_ect_butClick);
//
// game_box
//
this.game_box.Enabled = false;
this.game_box.FormattingEnabled = true;
this.game_box.Items.AddRange(new object[] {
"Ruby/Saphire",
"Emerald",
"Fire Red/Leaf Green"});
this.game_box.Location = new System.Drawing.Point(109, 39);
this.game_box.Name = "game_box";
this.game_box.Size = new System.Drawing.Size(149, 21);
this.game_box.TabIndex = 21;
this.game_box.SelectedIndexChanged += new System.EventHandler(this.Game_boxSelectedIndexChanged);
//
// language_box
//
this.language_box.Enabled = false;
this.language_box.FormattingEnabled = true;
this.language_box.Items.AddRange(new object[] {
"Japanese",
"English",
"French",
"Italian",
"German",
"Korean (not used)",
"Spanish"});
this.language_box.Location = new System.Drawing.Point(263, 39);
this.language_box.Name = "language_box";
this.language_box.Size = new System.Drawing.Size(121, 21);
this.language_box.TabIndex = 22;
this.language_box.SelectedIndexChanged += new System.EventHandler(this.Language_boxSelectedIndexChanged);
//
// region_lab
//
this.region_lab.Location = new System.Drawing.Point(390, 42);
this.region_lab.Name = "region_lab";
this.region_lab.Size = new System.Drawing.Size(63, 18);
this.region_lab.TabIndex = 23;
this.region_lab.Text = "Region";
//
// export_eberry
//
this.export_eberry.Enabled = false;
this.export_eberry.Location = new System.Drawing.Point(6, 75);
this.export_eberry.Name = "export_eberry";
this.export_eberry.Size = new System.Drawing.Size(120, 23);
this.export_eberry.TabIndex = 24;
this.export_eberry.Text = "Export e-berry";
this.export_eberry.UseVisualStyleBackColor = true;
this.export_eberry.Click += new System.EventHandler(this.Export_eberryClick);
//
// inject_eberry
//
this.inject_eberry.Enabled = false;
this.inject_eberry.Location = new System.Drawing.Point(6, 104);
this.inject_eberry.Name = "inject_eberry";
this.inject_eberry.Size = new System.Drawing.Size(120, 23);
this.inject_eberry.TabIndex = 25;
this.inject_eberry.Text = "Inject e-berry";
this.inject_eberry.UseVisualStyleBackColor = true;
this.inject_eberry.Click += new System.EventHandler(this.Inject_eberryClick);
//
// ecb_edit_but
//
this.ecb_edit_but.Location = new System.Drawing.Point(132, 88);
this.ecb_edit_but.Name = "ecb_edit_but";
this.ecb_edit_but.Size = new System.Drawing.Size(75, 22);
this.ecb_edit_but.TabIndex = 26;
this.ecb_edit_but.Text = "ECB Editor";
this.ecb_edit_but.UseVisualStyleBackColor = true;
this.ecb_edit_but.Click += new System.EventHandler(this.Ecb_edit_butClick);
//
// tvswarm_but
//
this.tvswarm_but.Enabled = false;
this.tvswarm_but.Location = new System.Drawing.Point(6, 48);
this.tvswarm_but.Name = "tvswarm_but";
this.tvswarm_but.Size = new System.Drawing.Size(120, 22);
this.tvswarm_but.TabIndex = 27;
this.tvswarm_but.Text = "TV and Swarm";
this.tvswarm_but.UseVisualStyleBackColor = true;
this.tvswarm_but.Click += new System.EventHandler(this.Tvswarm_butClick);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.wcn_edit_but);
this.groupBox1.Controls.Add(this.inject_wcn);
this.groupBox1.Controls.Add(this.export_wcn);
this.groupBox1.Controls.Add(this.export_wc3but);
this.groupBox1.Controls.Add(this.inject_wc3_but);
this.groupBox1.Controls.Add(this.wc3_editor_but);
this.groupBox1.Location = new System.Drawing.Point(12, 92);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(219, 136);
this.groupBox1.TabIndex = 28;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Mistery Gift";
//
// groupBox2
//
this.groupBox2.Controls.Add(this.export_me3_but);
this.groupBox2.Controls.Add(this.inject_me3_but);
this.groupBox2.Controls.Add(this.me3_editor_but);
this.groupBox2.Controls.Add(this.eon_em_but);
this.groupBox2.Location = new System.Drawing.Point(238, 92);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(215, 136);
this.groupBox2.TabIndex = 29;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "Mistery Event";
//
// groupBox3
//
this.groupBox3.Controls.Add(this.ecb_edit_but);
this.groupBox3.Controls.Add(this.inject_eberry);
this.groupBox3.Controls.Add(this.export_eberry);
this.groupBox3.Controls.Add(this.inject_ect_but);
this.groupBox3.Controls.Add(this.export_ect_but);
this.groupBox3.Controls.Add(this.ect_edit_but);
this.groupBox3.Location = new System.Drawing.Point(459, 92);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(217, 136);
this.groupBox3.TabIndex = 30;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "e-Trainer and e-Berry";
//
// groupBox4
//
this.groupBox4.Controls.Add(this.tvswarm_but);
this.groupBox4.Controls.Add(this.decor_but);
this.groupBox4.Location = new System.Drawing.Point(12, 234);
this.groupBox4.Name = "groupBox4";
this.groupBox4.Size = new System.Drawing.Size(141, 79);
this.groupBox4.TabIndex = 31;
this.groupBox4.TabStop = false;
this.groupBox4.Text = "Other";
//
// events_distro_but
//
this.events_distro_but.Location = new System.Drawing.Point(484, 253);
this.events_distro_but.Name = "events_distro_but";
this.events_distro_but.Size = new System.Drawing.Size(182, 51);
this.events_distro_but.TabIndex = 32;
this.events_distro_but.Text = "Official Event Distributor";
this.events_distro_but.UseVisualStyleBackColor = true;
this.events_distro_but.Click += new System.EventHandler(this.Events_distro_butClick);
//
// MainScreen
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(687, 316);
this.Controls.Add(this.events_distro_but);
this.Controls.Add(this.groupBox4);
this.Controls.Add(this.groupBox3);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.region_lab);
this.Controls.Add(this.language_box);
this.Controls.Add(this.game_box);
this.Controls.Add(this.region_but);
this.Controls.Add(this.sav3_path);
this.Controls.Add(this.load_save_but);
this.Controls.Add(this.menuStrip1);
this.Name = "MainScreen";
this.Text = "Mistery Gift Tool 0.1 by suloku";
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.MainScreenDragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.MainScreenDragEnter);
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.groupBox1.ResumeLayout(false);
this.groupBox2.ResumeLayout(false);
this.groupBox3.ResumeLayout(false);
this.groupBox4.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
}
}

471
wc3_tool/MainScreen.cs Normal file
View File

@ -0,0 +1,471 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 29/04/2016
* Time: 13:45
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Reflection;
namespace WC3_TOOL
{
/// <summary>
/// Description of MainScreen.
/// </summary>
public partial class MainScreen : Form
{
public string version()
{
var version = Assembly.GetExecutingAssembly().GetName().Version;
DateTime buildDate = new DateTime(2000, 1, 1).AddDays(version.Build).AddSeconds(version.Revision*2);
return "BUILD "+buildDate.Year.ToString()+buildDate.Month.ToString()+buildDate.Day.ToString()+"_"+buildDate.Hour.ToString()+buildDate.Minute.ToString()+buildDate.Second.ToString();
}
public MainScreen()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
region_lab.Text = "";
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
public static string savfilter = "RAW Save file|*.sav;*sa1;*sa2|All Files (*.*)|*.*";
public string wc3filter = "Wonder Card file|*.wc3|All Files (*.*)|*.*";
public string wcnfilter = "Wonder News file|*.wn3|All Files (*.*)|*.*";
public string me3filter = "Mistery Event file|*.me3|All Files (*.*)|*.*";
public string ectfilter = "e-card Trainer file|*.ect|All Files (*.*)|*.*";
public string berryfilter = "e-card Berry file|*.ecb|All Files (*.*)|*.*";
public byte[] savbuffer;
public byte[] wc3new;
public byte[] wcnnew;
public byte[] me3file;
public byte[] ectfile;
public byte[] berryfile;
public static SAV3 sav3file;
void Button1Click(object sender, EventArgs e)
{
Form wc3edit = new WC3_editor();
wc3edit.ShowDialog();
}
void Load_save(string path)
{
int filesize = FileIO.load_file(ref savbuffer, ref path, savfilter);
if( filesize == SAV3.SAVE_SIZE)
{
sav3_path.Text = path;
sav3file = new SAV3(savbuffer);
export_wc3but.Enabled = false;
inject_wc3_but.Enabled = false;
export_wcn.Enabled = false;
inject_wcn.Enabled = false;
export_me3_but.Enabled = false;
inject_me3_but.Enabled = false;
eon_em_but.Enabled = false;
decor_but.Enabled = false;
export_ect_but.Enabled = false;
inject_ect_but.Enabled = false;
export_eberry.Enabled = false;
inject_eberry.Enabled = false;
tvswarm_but.Enabled = false;
region_but.Enabled = false;
toolStripMenuItem1.Enabled = false;
exportOldSaveToolStripMenuItem.Enabled = false;
enableMisteryGiftMainScreenStripMenuItem.Enabled = false;
fixSectionChecksumsToolStripMenuItem.Enabled = false;
switch(sav3file.game)
{
case 0:
//Gamelabel.Text = "Ruby/Sapphire";
export_me3_but.Enabled = true;
inject_me3_but.Enabled = true;
decor_but.Enabled = true;
export_eberry.Enabled = true;
inject_eberry.Enabled = true;
tvswarm_but.Enabled = true;
break;
case 1:
//Gamelabel.Text = "Emerald";
export_wc3but.Enabled = true;
inject_wc3_but.Enabled = true;
export_wcn.Enabled = true;
inject_wcn.Enabled = true;
export_me3_but.Enabled = true;
inject_me3_but.Enabled = true;
eon_em_but.Enabled = true;
decor_but.Enabled = true;
tvswarm_but.Enabled = true;
break;
case 2:
//Gamelabel.Text = "Fire Red/Leaf Green";
export_wc3but.Enabled = true;
inject_wc3_but.Enabled = true;
export_wcn.Enabled = true;
inject_wcn.Enabled = true;
tvswarm_but.Enabled = false;
break;
default:
//Gamelabel.Text = "Can't autodetect save game";
break;
}
toolStripMenuItem1.Enabled = true;
exportOldSaveToolStripMenuItem.Enabled = true;
enableMisteryGiftMainScreenStripMenuItem.Enabled = true;
fixSectionChecksumsToolStripMenuItem.Enabled = true;
clearEggEventFlagToolStripMenuItem.Enabled = sav3file.has_EggEvent_Flag();
export_ect_but.Enabled = true;
inject_ect_but.Enabled = true;
if(sav3file.isjap == true)
region_lab.Text = "JAP";
else
region_lab.Text = "USA/EUR";
region_but.Enabled = true;
language_box.SelectedIndex = sav3file.language-1;
game_box.SelectedIndex = sav3file.game;
if (sav3file.isjap == true && sav3file.language != 1)
{
DialogResult dialogResult = MessageBox.Show("Region/language autodetection inconsistency.\n\nIs this a japanese savegame?", "Region Input", MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
sav3file.isjap = true;
region_lab.Text = "JAP";
language_box.SelectedIndex = 0;
}
else if (dialogResult == DialogResult.No)
{
sav3file.isjap = false;
region_lab.Text = "USA/EUR";
}
}
sav3file.updateOffsets();
}else if (filesize == -1){
;
}else{
MessageBox.Show("Invalid file.");
}
}
void Load_save_butClick(object sender, EventArgs e)
{
Load_save(null);
}
void Export_wc3butClick(object sender, EventArgs e)
{
if(sav3file.has_WC == false)
MessageBox.Show("Save file does not contain WonderCard data.");
else
FileIO.save_data(sav3file.get_WC3(), wc3filter);
}
void Inject_wc3_butClick(object sender, EventArgs e)
{
if(sav3file.has_WC == true)
{
DialogResult dialogResult = MessageBox.Show("Savefile already has a WonderCard. Overwrite?", "WonderCard Injection", MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.No)
{
return;
}
}
if (sav3file.has_mistery_gift == true)
{
string path = null;
int filesize = FileIO.load_file(ref wc3new, ref path, wc3filter);
if( (filesize == wc3.SIZE_WC3 && sav3file.isjap == false) || (filesize == wc3.SIZE_WC3_jap && sav3file.isjap == true) )
{
sav3file.set_WC3(wc3new);
//custom_script.Checked = true;
//Add fix sav3 checksum func3
sav3file.update_section_chk(4);
MessageBox.Show("WC3 injected.");
FileIO.save_data(sav3file.Data, savfilter);
}else if (filesize == -1){
;
}else{
MessageBox.Show("Invalid file size.");
}
}else
{
MessageBox.Show("Save file does not have Mistery Gift enabled.");
}
}
void Export_wcnClick(object sender, EventArgs e)
{
if(sav3file.has_WCN == false)
MessageBox.Show("Save file does not contain Wonder News data.");
else
FileIO.save_data(sav3file.get_WCN(), wcnfilter);
}
void Inject_wcnClick(object sender, EventArgs e)
{
if (sav3file.has_mistery_gift == true)
{
string path = null;
int filesize = FileIO.load_file(ref wcnnew, ref path, wcnfilter);
if( (filesize == SAV3.WCN_SIZE && sav3file.isjap == false) || (filesize == SAV3.WCN_SIZE_jap && sav3file.isjap == true) )
{
sav3file.set_WCN(wcnnew);
//custom_script.Checked = true;
//Add fix sav3 checksum func3
sav3file.update_section_chk(4);
MessageBox.Show("WC News injected.");
FileIO.save_data(sav3file.Data, savfilter);
}else if (filesize == -1){
;
}else{
MessageBox.Show("Invalid file size.");
}
}else
{
MessageBox.Show("Save file does not have Mistery Gift enabled.");
}
}
void Wcn_edit_butClick(object sender, EventArgs e)
{
Form wcnedit = new WCN_editor();
wcnedit.ShowDialog();
}
void Export_me3_butClick(object sender, EventArgs e)
{
int check = sav3file.has_ME3();
if(check == 0)
MessageBox.Show("Save file does not contain Mistery Event Data.");
else if(check == 2)
MessageBox.Show("Save file does contain Mistery Event Data, but the script has already been erased from savedata.");
if (check != 0)
FileIO.save_data(sav3file.get_ME3(), me3filter);
}
void Inject_me3_butClick(object sender, EventArgs e)
{
if (sav3file.has_mistery_event == true || sav3file.game == 1)
{
if (sav3file.game == 1)
MessageBox.Show("Mistery Event was removed from non Japanese Emerald.\n\tYou can still inject the data at your own risk.");
string path = null;
int filesize = FileIO.load_file(ref me3file, ref path, me3filter);
if( filesize == sav3file.me3_size )
{
ME3 me3_struct = new ME3(me3file, filesize);
if (sav3file.game != me3_struct.isemerald)
{
MessageBox.Show("This ME3 file is not for this game!");
}else
{
sav3file.set_ME3(me3file);
//custom_script.Checked = true;
//Add fix sav3 checksum func3
sav3file.update_section_chk(4);
MessageBox.Show("Mistery event injected.");
FileIO.save_data(sav3file.Data, savfilter);
}
}else if (filesize == -1){
;
}else{
MessageBox.Show("Invalid file size.");
}
}else
{
MessageBox.Show("Save file does not have Mistery Event enabled.");
}
}
void Me3_editor_butClick(object sender, EventArgs e)
{
Form me3edit = new ME3_editor();
me3edit.ShowDialog();
}
void Eon_em_butClick(object sender, EventArgs e)
{
MessageBox.Show("This will enable the Eon ticket event as distributed in Japan.\nKeep in mind this event was never available outside Japan.\nIf you want a legit EON ticket in Emerald, you have to Mix Records with a Ruby/Saphire game with distributable EON ticket.");
sav3file.enable_eon_emerald();
MessageBox.Show("Mistery event EON Ticket injected.\n\nNote: if you saved in the 2nd floor of Pokémon Center, you'll have to exit and enter for the Blue man to appear.");
FileIO.save_data(sav3file.Data, savfilter);
}
void EnableMisteryGiftMainScreenStripMenuItemClick(object sender, EventArgs e)
{
sav3file.enable_Mistery();
FileIO.save_data(sav3file.Data, savfilter);
}
void Region_butClick(object sender, EventArgs e)
{
/*
sav3file.prompt_region("Is this a Japanese savegame?");
if (sav3file.isjap)
region_text.Text = "JAP";
else
region_text.Text = "USA/EUR";
*/
game_box.Enabled = true;
language_box.Enabled = true;
}
void FixSectionChecksumsToolStripMenuItemClick(object sender, EventArgs e)
{
sav3file.fix_section_checksums();
FileIO.save_data(sav3file.Data, savfilter);
}
void Decor_butClick(object sender, EventArgs e)
{
Form decoredit = new Decor_editor(sav3file);
decoredit.ShowDialog();
}
void Ect_edit_butClick(object sender, EventArgs e)
{
Form ectedit = new ECT_editor();
ectedit.ShowDialog();
}
void Export_ect_butClick(object sender, EventArgs e)
{
/*int check = sav3file.has_ME3();
if(check == 0)
MessageBox.Show("Save file does not contain Mistery Event Data.");
else if(check == 2)
MessageBox.Show("Save file does contain Mistery Event Data, but the script has already been erased from savedata.");
if (check != 0)*/
FileIO.save_data(sav3file.get_ECT(), ectfilter);
}
void Inject_ect_butClick(object sender, EventArgs e)
{
//if (sav3file.has_mistery_event == true || sav3file.game == 1)
//{
if (sav3file.game == 1)
MessageBox.Show("Mistery Event was removed from non Japanese Emerald.\n\tYou can still inject the data at your own risk.");
string path = null;
int filesize = FileIO.load_file(ref ectfile, ref path, ectfilter);
if( filesize == ECT.SIZE_ECT )
{
sav3file.set_ECT(ectfile);
sav3file.update_section_chk(0);
MessageBox.Show("e-card Trainer injected.");
FileIO.save_data(sav3file.Data, savfilter);
}else if (filesize == -1){
;
}else{
MessageBox.Show("Invalid file size.");
}
//}else
//{
// MessageBox.Show("Save file does not have Mistery Event enabled.");
//}
}
void MainScreenDragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
void MainScreenDragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
Load_save(files[0]);
}
void Game_boxSelectedIndexChanged(object sender, EventArgs e)
{
sav3file.game = game_box.SelectedIndex;
sav3file.updateOffsets();
}
void Language_boxSelectedIndexChanged(object sender, EventArgs e)
{
sav3file.language = language_box.SelectedIndex+1;
if(sav3file.language == 1)
sav3file.isjap = true;
else
sav3file.isjap = false;
if(sav3file.isjap == true)
region_lab.Text = "JAP";
else
region_lab.Text = "USA/EUR";
sav3file.updateOffsets();
}
void ExportOldSaveToolStripMenuItemClick(object sender, EventArgs e)
{
FileIO.save_data(sav3file.getSortedSave(1), savfilter);
}
void ToolStripMenuItem1Click(object sender, EventArgs e)
{
FileIO.save_data(sav3file.getSortedSave(0), savfilter);
}
void ClearEggEventFlagToolStripMenuItemClick(object sender, EventArgs e)
{
sav3file.clear_EggEvent_Flag();
MessageBox.Show("Egg Event flag cleared.");
FileIO.save_data(sav3file.Data, savfilter);
clearEggEventFlagToolStripMenuItem.Enabled = sav3file.has_EggEvent_Flag();
}
void EnableEnigmaBerryFlagToolStripMenuItemClick(object sender, EventArgs e)
{
}
void Export_eberryClick(object sender, EventArgs e)
{
if(sav3file.has_berry() == true)
{
FileIO.save_data(sav3file.get_ECB(), berryfilter);
}else
{
MessageBox.Show("There's no berry in savefile.");
}
}
void Inject_eberryClick(object sender, EventArgs e)
{
if (sav3file.game == 0)
{
string path = null;
int filesize = FileIO.load_file(ref berryfile, ref path, berryfilter);
if( filesize == SAV3.BERRY_SIZE)
{
sav3file.set_ECB(berryfile);
sav3file.set_Enigma_Flag();
sav3file.update_section_chk(4);
MessageBox.Show("Enigma Berry injected.");
FileIO.save_data(sav3file.Data, savfilter);
}else if (filesize == -1){
;
}else{
MessageBox.Show("Invalid file size.");
}
}
}
void Ecb_edit_butClick(object sender, EventArgs e)
{
Form ecbedit = new ECB_editor();
ecbedit.ShowDialog();
}
void AboutToolStripMenuItem1Click(object sender, EventArgs e)
{
MessageBox.Show("Mistery Gift Tool 0.1 by suloku ("+version()+")\n\nMany thanks to ajxpkm, Real.96, BlackShark, lostaddict, Háčky and many more involved in Mistery Event research!\n\nThe research thread at projectpokemon.org might be of your interest.\n\nIf you want to contribute any missing event, contact suloku or ajxpkm at projectpokemon's forums or gen3mysterygift@gmail.com");
}
void Tvswarm_butClick(object sender, EventArgs e)
{
Form tvswarm = new TV_editor(sav3file);
tvswarm.ShowDialog();
}
void Events_distro_butClick(object sender, EventArgs e)
{
Form distro = new EventTool();
distro.ShowDialog();
}
}
}

123
wc3_tool/MainScreen.resx Normal file
View File

@ -0,0 +1,123 @@
<?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>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

31
wc3_tool/Program.cs Normal file
View File

@ -0,0 +1,31 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 28/04/2016
* Time: 21:22
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Windows.Forms;
namespace WC3_TOOL
{
/// <summary>
/// Class with program entry point.
/// </summary>
internal sealed class Program
{
/// <summary>
/// Program entry point.
/// </summary>
[STAThread]
private static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainScreen());
}
}
}

View File

@ -0,0 +1,31 @@
#region Using directives
using System;
using System.Reflection;
using System.Runtime.InteropServices;
#endregion
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("WC3_TOOL")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WC3_TOOL")]
[assembly: AssemblyCopyright("Copyright 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// This sets the default COM visibility of types in the assembly to invisible.
// If you need to expose a type to COM, use [ComVisible(true)] on that type.
[assembly: ComVisible(false)]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all the values or you can use the default the Revision and
// Build Numbers by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]

191
wc3_tool/WC3/Decor_editor.Designer.cs generated Normal file
View File

@ -0,0 +1,191 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 03/05/2016
* Time: 17:34
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
namespace WC3_TOOL
{
partial class Decor_editor
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
private System.Windows.Forms.ComboBox decortypebox;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.NumericUpDown numericUpDown1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ComboBox decorationbox;
private System.Windows.Forms.Label Decoration;
private System.Windows.Forms.Button save_but;
private System.Windows.Forms.Button add_but;
private System.Windows.Forms.Button del_but;
/// <summary>
/// Disposes resources used by the form.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
this.decortypebox = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.decorationbox = new System.Windows.Forms.ComboBox();
this.Decoration = new System.Windows.Forms.Label();
this.save_but = new System.Windows.Forms.Button();
this.numericUpDown1 = new System.Windows.Forms.NumericUpDown();
this.add_but = new System.Windows.Forms.Button();
this.del_but = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
this.SuspendLayout();
//
// decortypebox
//
this.decortypebox.FormattingEnabled = true;
this.decortypebox.Items.AddRange(new object[] {
"Desk",
"Chair",
"Plant",
"Ornament",
"Mat",
"Poster",
"Doll",
"Cushion"});
this.decortypebox.Location = new System.Drawing.Point(9, 38);
this.decortypebox.Name = "decortypebox";
this.decortypebox.Size = new System.Drawing.Size(297, 21);
this.decortypebox.TabIndex = 0;
this.decortypebox.SelectedIndexChanged += new System.EventHandler(this.DecortypeboxSelectedIndexChanged);
//
// label1
//
this.label1.Location = new System.Drawing.Point(9, 16);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(100, 19);
this.label1.TabIndex = 1;
this.label1.Text = "Decoration type";
//
// label2
//
this.label2.Location = new System.Drawing.Point(9, 73);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(100, 13);
this.label2.TabIndex = 3;
this.label2.Text = "Slot";
//
// decorationbox
//
this.decorationbox.FormattingEnabled = true;
this.decorationbox.Items.AddRange(new object[] {
"Empty",
"Small Desk",
"Pokémon Desk",
"Heavy Desk",
"Ragged Desk",
"Comfort Desk",
"Pretty Desk",
"Brick Desk",
"Camp Desk",
"Hard Desk"});
this.decorationbox.Location = new System.Drawing.Point(135, 88);
this.decorationbox.Name = "decorationbox";
this.decorationbox.Size = new System.Drawing.Size(171, 21);
this.decorationbox.TabIndex = 4;
this.decorationbox.SelectedIndexChanged += new System.EventHandler(this.DecorationboxSelectedIndexChanged);
//
// Decoration
//
this.Decoration.Location = new System.Drawing.Point(135, 73);
this.Decoration.Name = "Decoration";
this.Decoration.Size = new System.Drawing.Size(100, 13);
this.Decoration.TabIndex = 5;
this.Decoration.Text = "Decoration";
//
// save_but
//
this.save_but.Location = new System.Drawing.Point(109, 130);
this.save_but.Name = "save_but";
this.save_but.Size = new System.Drawing.Size(75, 23);
this.save_but.TabIndex = 6;
this.save_but.Text = "Save";
this.save_but.UseVisualStyleBackColor = true;
this.save_but.Click += new System.EventHandler(this.Save_butClick);
//
// numericUpDown1
//
this.numericUpDown1.Location = new System.Drawing.Point(9, 89);
this.numericUpDown1.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.numericUpDown1.Name = "numericUpDown1";
this.numericUpDown1.Size = new System.Drawing.Size(120, 20);
this.numericUpDown1.TabIndex = 2;
this.numericUpDown1.Value = new decimal(new int[] {
1,
0,
0,
0});
this.numericUpDown1.ValueChanged += new System.EventHandler(this.NumericUpDown1ValueChanged);
//
// add_but
//
this.add_but.Location = new System.Drawing.Point(312, 73);
this.add_but.Name = "add_but";
this.add_but.Size = new System.Drawing.Size(37, 23);
this.add_but.TabIndex = 7;
this.add_but.Text = "Add";
this.add_but.UseVisualStyleBackColor = true;
this.add_but.Click += new System.EventHandler(this.Add_butClick);
//
// del_but
//
this.del_but.Location = new System.Drawing.Point(312, 102);
this.del_but.Name = "del_but";
this.del_but.Size = new System.Drawing.Size(37, 23);
this.del_but.TabIndex = 8;
this.del_but.Text = "Del";
this.del_but.UseVisualStyleBackColor = true;
this.del_but.Click += new System.EventHandler(this.Del_butClick);
//
// Decor_editor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(366, 165);
this.Controls.Add(this.del_but);
this.Controls.Add(this.add_but);
this.Controls.Add(this.save_but);
this.Controls.Add(this.Decoration);
this.Controls.Add(this.decorationbox);
this.Controls.Add(this.label2);
this.Controls.Add(this.numericUpDown1);
this.Controls.Add(this.label1);
this.Controls.Add(this.decortypebox);
this.Name = "Decor_editor";
this.Text = "Decoration Inventory Editor";
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit();
this.ResumeLayout(false);
}
}
}

View File

@ -0,0 +1,384 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 03/05/2016
* Time: 17:34
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WC3_TOOL
{
/// <summary>
/// Description of Decor_editor.
/// </summary>
public partial class Decor_editor : Form
{
byte[] decorbuff;
SAV3 sav3file;
public string savfilter = MainScreen.savfilter;
public Decor_editor(SAV3 save)
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
sav3file = save;
decorbuff = sav3file.get_decorations();
decortypebox.SelectedIndex = 0;
numericUpDown1.Maximum = slots_max[decortypebox.SelectedIndex];
decorationbox.SelectedIndex = 0;
load_decor();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
void del_item()
{
int i;
int offset = 0;
for (i=0; i<decortypebox.SelectedIndex; i++)
{
offset = offset + slots_max[i];
}
decorbuff[offset + (int)numericUpDown1.Value - 1] = 0x00;
}
void set_item(int newitem)
{
int i;
int offset = 0;
for (i=0; i<decortypebox.SelectedIndex; i++)
{
offset = offset + slots_max[i];
}
int[] reference = desk_ref;
switch(decortypebox.SelectedIndex)
{
case 0:
reference = desk_ref;
break;
case 1:
reference = chair_ref;
break;
case 2:
reference = plant_ref;
break;
case 3:
reference = ornament_ref;
break;
case 4:
reference = mat_ref;
break;
case 5:
reference = poster_ref;
break;
case 6:
reference = doll_ref;
break;
case 7:
reference = cushion_ref;
break;
}
decorbuff[offset + (int)numericUpDown1.Value - 1] = (byte)reference[newitem];
}
byte get_item(int modifier)
{
int item_index = (int)numericUpDown1.Value-1;
if (item_index + modifier < 0)
modifier = 0;
int i;
int offset = 0;
for (i=0; i<decortypebox.SelectedIndex; i++)
{
offset = offset + slots_max[i];
}
byte item = decorbuff[offset + item_index + modifier];
return item;
}
void load_decor()
{
int i;
byte item = get_item(0);
//MessageBox.Show(item.ToString());
int[] reference = desk_ref;
switch(decortypebox.SelectedIndex)
{
case 0:
reference = desk_ref;
break;
case 1:
reference = chair_ref;
break;
case 2:
reference = plant_ref;
break;
case 3:
reference = ornament_ref;
break;
case 4:
reference = mat_ref;
break;
case 5:
reference = poster_ref;
break;
case 6:
reference = doll_ref;
break;
case 7:
reference = cushion_ref;
break;
}
for (i = 0; i<reference.Length; i++)
{
//MessageBox.Show(reference[i].ToString());
if(item==reference[i]){
decorationbox.SelectedIndex = i + 1;
break;
}else
decorationbox.SelectedIndex = 0;
}
}
int[] desk_ref = {1,2,3,4,5,6,7,8,9};
int[] chair_ref = {10,11,12,13,14,15,16,17,18};
int[] plant_ref = {19,20,21,22,23,24};
int[] ornament_ref = {25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47};
int[] mat_ref = {48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65};
int[] poster_ref = {66,67,68,69,70,71,72,73,74,75};
int[] doll_ref = {76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,111,112,113,114,115,116,117,118,119,120};
int[] cushion_ref = {101,102,103,104,105,106,107,108,109,110};
int[] slots_max = {10,10,10,30,30,10,40,10};
object[] Desks = new object[] {
"Empty",
"Small Desk",
"Pokémon Desk",
"Heavy Desk",
"Ragged Desk",
"Comfort Desk",
"Pretty Desk",
"Brick Desk",
"Camp Desk",
"Hard Desk"};
object[] Chairs = new object[] {
"Empty",
"Small Chair",
"Pokémon Chair",
"Heavy Chair",
"Pretty Chair",
"Comfort Chair",
"Ragged Chair",
"Brick Chair",
"Camp Chair",
"Hard Chair"};
object[] Plants = new object[] {
"Empty",
"Red Plant",
"Tropical Plant",
"Pretty Flowers",
"Colorful Plant",
"Big Plant",
"Gorgeous Plant"};
object[] Ornament = new object[] {
"Empty",
"Red Brick",
"Yellow Brick",
"Blue Brick",
"Red Balloon",
"Blue Balloon",
"Yellow Balloon",
"Red Tent",
"Blue Tent",
"Solid Board",
"Slide",
"Fence Length",
"Fence Width",
"Tire",
"Stand",
"Mud Ball",
"Breakable Door",
"Sand Ornament",
"Silver Shield",
"Gold Shield",
"Glass Ornament",
"TV",
"Round TV",
"Cute TV"};
object[] Mats = new object[] {
"Empty",
"Glitter Mat",
"Jump Mat",
"Spin Mat",
"C Low Note Mat",
"D Note Mat",
"E Note Mat",
"F Note Mat",
"G Note Mat",
"A Note Mat",
"B Note Mat",
"C High Note Mat",
"Surf Mat",
"Thunder Mat",
"Fire Blast Mat",
"Powder Snow Mat",
"Attract Mat",
"Fissure Mat",
"Spikes Mat"};
object[] Posters = new object[] {
"Empty",
"Ball Poster",
"Green Poster",
"Red Poster",
"Blue Poster",
"Cute Poster",
"Pika Poster",
"Long Poster",
"Sea Poster",
"Sky Poster",
"Kiss Poster"};
object[] Dolls = new object[] {
"Empty",
"Pichu Doll",
"Pikachu Doll",
"Marill Doll",
"Togepi Doll",
"Cyndaquil Doll",
"Chikorita Doll",
"Totodile Doll",
"Jigglypuff Doll",
"Meowth Doll",
"Clefairy Doll",
"Ditto Doll",
"Smoochum Doll",
"Treecko Doll",
"Torchic Doll",
"Mudkip Doll",
"Duskull Doll",
"Wynaut Doll",
"Baltoy Doll",
"Kecleon Doll",
"Azurill Doll",
"Skitty Doll",
"Swablu Doll",
"Gulpin Doll",
"Lotad Doll",
"Seedot Doll",
"Snorlax Doll",
"Rhydon Doll",
"Lapras Doll",
"Venusaur Doll",
"Charizard Doll",
"Blastoise Doll",
"Wailmer Doll",
"Regirock Doll",
"Regice Doll",
"Registeel Doll"};
object[] Cushions = new object[] {
"Empty",
"Pika Cushion",
"Round Cushion",
"Kiss Cushion",
"Zigzag Cushion",
"Spin Cushion",
"Diamond Cushion",
"Ball Cushion",
"Grass Cushion",
"Fire Cushion",
"Water Cushion"};
void NumericUpDown1ValueChanged(object sender, EventArgs e)
{
if (get_item(-1) == 0x00) // There was already an empty slot, don't advance
{
if (numericUpDown1.Value - 1 < numericUpDown1.Minimum)
numericUpDown1.Value = numericUpDown1.Minimum;
else
numericUpDown1.Value = numericUpDown1.Value-1;
}else{
load_decor();
}
}
void DecortypeboxSelectedIndexChanged(object sender, EventArgs e)
{
numericUpDown1.Value = 1;
numericUpDown1.Maximum = slots_max[decortypebox.SelectedIndex];
decorationbox.Items.Clear();
switch(decortypebox.SelectedIndex)
{
case 0:
decorationbox.Items.AddRange(Desks);
break;
case 1:
decorationbox.Items.AddRange(Chairs);
break;
case 2:
decorationbox.Items.AddRange(Plants);
break;
case 3:
decorationbox.Items.AddRange(Ornament);
break;
case 4:
decorationbox.Items.AddRange(Mats);
break;
case 5:
decorationbox.Items.AddRange(Posters);
break;
case 6:
decorationbox.Items.AddRange(Dolls);
break;
case 7:
decorationbox.Items.AddRange(Cushions);
break;
}
numericUpDown1.Value = 1;
numericUpDown1.Maximum = slots_max[decortypebox.SelectedIndex];
decorationbox.SelectedIndex = 0;
load_decor();
}
void Save_butClick(object sender, EventArgs e)
{
sav3file.set_decoration(decorbuff);
sav3file.update_section_chk(3);
FileIO.save_data(sav3file.Data, savfilter);
}
void DecorationboxSelectedIndexChanged(object sender, EventArgs e)
{
}
void Add_butClick(object sender, EventArgs e)
{
if (decorationbox.SelectedIndex != 0)
set_item(decorationbox.SelectedIndex-1);
}
void Del_butClick(object sender, EventArgs e)
{
if (numericUpDown1.Value != numericUpDown1.Maximum && get_item(+1) != 0x00)
MessageBox.Show("Please delete only last occupied slot.");
else{
del_item();
load_decor();
}
}
}
}

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>

337
wc3_tool/WC3/ECB.cs Normal file
View File

@ -0,0 +1,337 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 09/05/2016
* Time: 0:54
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WC3_TOOL
{
/// <summary>
/// Description of ECB.
/// </summary>
public class ECB
{
public const int SIZE_ECB = SAV3.BERRY_SIZE;
public const int SIZE_SPRITE = 1152;
public const int SIZE_PALETTE = 32;
// Global Settings
// Save Data Attributes
public byte[] Data;
public bool Edited;
public readonly bool Exportable;
public readonly byte[] BAK;
public string FileName, FilePath;
public ECB(byte[] data)
{
Data = (byte[])(data ?? new byte[SIZE_ECB]).Clone();
BAK = (byte[])Data.Clone();
Exportable = !Data.SequenceEqual(new byte[Data.Length]);
isjap = false;
return;
}
public byte[] getData(int Offset, int Length)
{
return Data.Skip(Offset).Take(Length).ToArray();
}
public void setData(byte[] input, int Offset)
{
input.CopyTo(Data, Offset);
Edited = true;
}
public void fix_berry_checksum()
{
byte[] chk = getData(0, SIZE_ECB-4);
int i;
for(i=0;i<8;i++) //These 8 bytes are taken as 0x00 for chk calculation
{
chk[0xC+i]=0x00;
}
UInt32 checksum = ME3.me3_checksum(chk, chk.Length);
setData(BitConverter.GetBytes(checksum).ToArray(), SIZE_ECB-4);
}
public UInt32 get_berry_checksum()
{
byte[] chk = getData(0, SIZE_ECB-4);
int i;
for(i=0;i<8;i++) //These 8 bytes are taken as 0x00 for chk calculation
{
chk[0xC+i]=0x00;
}
return ME3.me3_checksum(chk, chk.Length);
}
public byte[] get_sprite()
{
return getData(0x1C, SIZE_SPRITE);
}
public void set_sprite(byte[] sprite)
{
if (sprite.Length == SIZE_SPRITE)
setData(sprite, 0x1C);
}
public byte[] get_palette()
{
return getData(0x49C, SIZE_PALETTE);
}
public void set_palette(byte[] palette)
{
if (palette.Length == SIZE_PALETTE)
setData(palette, 0x49C);
}
public byte[] get_full_sprite()
{
byte[] sprite = new byte[SIZE_SPRITE+SIZE_PALETTE];
get_palette().CopyTo(sprite, 0);
get_sprite().CopyTo(sprite, SIZE_PALETTE);
return sprite;
}
public void set_full_sprite(byte[] sprite)
{
set_sprite(sprite.Skip(SIZE_PALETTE).Take(SIZE_SPRITE).ToArray());
set_palette(sprite.Skip(0).Take(SIZE_PALETTE).ToArray());
}
public bool isjap;
public string NAME { get { return PKHeX.PKM.getG3Str(Data.Take(7).ToArray(), isjap); } set { setData(PKHeX.PKM.setG3Str(value, isjap), 0); } }
public byte FIRMNESS { get { return Data[0x7]; } set { Data[0x7] = (byte) value; } }
public UInt16 SIZE { get { return BitConverter.ToUInt16(Data, 0x8); } set { BitConverter.GetBytes((UInt16)value).CopyTo(Data, 0x8);; } }
public byte YIELD_MAX { get { return Data[0xA]; } set { Data[0xA] = (byte) value; } }
public byte YIELD_MIN { get { return Data[0xB]; } set { Data[0xB] = (byte) value; } }
public byte GROWTH { get { return Data[0x14]; } set { Data[0x14] = (byte) value; } }
public byte SPICY { get { return Data[0x15]; } set { Data[0x15] = (byte) value; } }
public byte DRY { get { return Data[0x16]; } set { Data[0x16] = (byte) value; } }
public byte SWEET { get { return Data[0x17]; } set { Data[0x17] = (byte) value; } }
public byte BITTER { get { return Data[0x18]; } set { Data[0x18] = (byte) value; } }
public byte SOUR { get { return Data[0x19]; } set { Data[0x19] = (byte) value; } }
public byte SMOOTH { get { return Data[0x1A]; } set { Data[0x1A] = (byte) value; } }
public string DESC_1 { get { return PKHeX.PKM.getG3Str(Data.Skip(0x4BC).Take(45).ToArray(), isjap); } set { setData(PKHeX.PKM.setG3Str(value, isjap), 0x4BC); } }
public string DESC_2 { get { return PKHeX.PKM.getG3Str(Data.Skip(0x4E9).Take(45).ToArray(), isjap); } set { setData(PKHeX.PKM.setG3Str(value, isjap), 0x4E9); } }
public byte HITEM { get { return Data[0x528]; } set { Data[0x528] = (byte) value; } }
public byte TR_0 { get { return Data[0x516]; } set { Data[0x516] = (byte) value; } }
public bool TR_0_healinfatuation { get { return Convert.ToBoolean((TR_0 >> 07) & 0x01); } set { TR_0 = (byte)((TR_0 & ~(0x01 << 07)) | (byte)((value == true ? 0x01 : 0x00) << 07)); } }
public bool TR_0_firstpkm { get { return Convert.ToBoolean((TR_0 >> 06) & 0x01); } set { TR_0 = (byte)((TR_0 & ~(0x01 << 06)) | (byte)((value == true ? 0x01 : 0x00) << 06)); } }
public int TR_0_direhit { get { return (int)(TR_0 >> 05) & 0x03; } set { TR_0 = (byte)((TR_0 & ~(0x03 << 05)) | (byte)((value > 3 ? 3 : value) << 05)); } }
public int TR_0_attackUP { get { return (int)(TR_0 >> 00) & 0x0f; } set { TR_0 = (byte)((TR_0 & ~(0x0f << 00)) | (byte)((value > 0xf ? 0xf : value) << 00)); } }
public byte TR_1 { get { return Data[0x517]; } set { Data[0x517] = (byte) value; } }
public int TR_1_speedUP { get { return (int)(TR_1 >> 00) & 0x0f; } set { TR_1 = (byte)((TR_1 & ~(0x0f << 00)) | (byte)((value > 0xf ? 0xf : value) << 00)); } }
public int TR_1_defUP { get { return (int)(TR_1 >> 04) & 0x0f; } set { TR_1 = (byte)((TR_1 & ~(0x0f << 04)) | (byte)((value > 0xf ? 0xf : value) << 04)); } }
public byte TR_2 { get { return Data[0x518]; } set { Data[0x518] = (byte) value; } }
public int TR_2_espUP { get { return (int)(TR_2 >> 00) & 0x0f; } set { TR_2 = (byte)((TR_2 & ~(0x0f << 00)) | (byte)((value > 0xf ? 0xf : value) << 00)); } }
public int TR_2_accUP { get { return (int)(TR_2 >> 04) & 0x0f; } set { TR_2 = (byte)((TR_2 & ~(0x0f << 04)) | (byte)((value > 0xf ? 0xf : value) << 04)); } }
public byte TR_3 { get { return Data[0x519]; } set { Data[0x519] = (byte) value; } }
public bool TR_3_guardspec { get { return Convert.ToBoolean((TR_3 >> 07) & 0x01); } set { TR_3 = (byte)((TR_3 & ~(0x01 << 07)) | (byte)((value == true ? 0x01 : 0x00) << 07)); } }
public bool TR_3_lvlUP { get { return Convert.ToBoolean((TR_3 >> 06) & 0x01); } set { TR_3 = (byte)((TR_3 & ~(0x01 << 06)) | (byte)((value == true ? 0x01 : 0x00) << 06)); } }
public bool TR_3_clearSleep { get { return Convert.ToBoolean((TR_3 >> 05) & 0x01); } set { TR_3 = (byte)((TR_3 & ~(0x01 << 05)) | (byte)((value == true ? 0x01 : 0x00) << 05)); } }
public bool TR_3_clearPoison { get { return Convert.ToBoolean((TR_3 >> 04) & 0x01); } set { TR_3 = (byte)((TR_3 & ~(0x01 << 04)) | (byte)((value == true ? 0x01 : 0x00) << 04)); } }
public bool TR_3_clearBurn { get { return Convert.ToBoolean((TR_3 >> 03) & 0x01); } set { TR_3 = (byte)((TR_3 & ~(0x01 << 03)) | (byte)((value == true ? 0x01 : 0x00) << 03)); } }
public bool TR_3_clearIce { get { return Convert.ToBoolean((TR_3 >> 02) & 0x01); } set { TR_3 = (byte)((TR_3 & ~(0x01 << 02)) | (byte)((value == true ? 0x01 : 0x00) << 02)); } }
public bool TR_3_clearPar { get { return Convert.ToBoolean((TR_3 >> 01) & 0x01); } set { TR_3 = (byte)((TR_3 & ~(0x01 << 01)) | (byte)((value == true ? 0x01 : 0x00) << 01)); } }
public bool TR_3_clearConf { get { return Convert.ToBoolean((TR_3 >> 00) & 0x01); } set { TR_3 = (byte)((TR_3 & ~(0x01 << 00)) | (byte)((value == true ? 0x01 : 0x00) << 00)); } }
public byte TR_4 { get { return Data[0x51A]; } set { Data[0x51A] = (byte) value; } }
public bool TR_4_stone { get { return Convert.ToBoolean((TR_4 >> 07) & 0x01); } set { TR_4 = (byte)((TR_4 & ~(0x01 << 07)) | (byte)((value == true ? 0x01 : 0x00) << 07)); } }
public bool TR_4_revive { get { return Convert.ToBoolean((TR_4 >> 06) & 0x01); } set { TR_4 = (byte)((TR_4 & ~(0x01 << 06)) | (byte)((value == true ? 0x01 : 0x00) << 06)); } }
public bool TR_4_maxPPUP { get { return Convert.ToBoolean((TR_4 >> 05) & 0x01); } set { TR_4 = (byte)((TR_4 & ~(0x01 << 05)) | (byte)((value == true ? 0x01 : 0x00) << 05)); } }
public bool TR_4_onlyatack { get { return Convert.ToBoolean((TR_4 >> 04) & 0x01); } set { TR_4 = (byte)((TR_4 & ~(0x01 << 04)) | (byte)((value == true ? 0x01 : 0x00) << 04)); } }
public bool TR_4_healPP { get { return Convert.ToBoolean((TR_4 >> 03) & 0x01); } set { TR_4 = (byte)((TR_4 & ~(0x01 << 03)) | (byte)((value == true ? 0x01 : 0x00) << 03)); } }
public bool TR_4_healHP { get { return Convert.ToBoolean((TR_4 >> 02) & 0x01); } set { TR_4 = (byte)((TR_4 & ~(0x01 << 02)) | (byte)((value == true ? 0x01 : 0x00) << 02)); } }
public bool TR_4_atkEVUP { get { return Convert.ToBoolean((TR_4 >> 01) & 0x01); } set { TR_4 = (byte)((TR_4 & ~(0x01 << 01)) | (byte)((value == true ? 0x01 : 0x00) << 01)); } }
public bool TR_4_hpEVUP { get { return Convert.ToBoolean((TR_4 >> 00) & 0x01); } set { TR_4 = (byte)((TR_4 & ~(0x01 << 00)) | (byte)((value == true ? 0x01 : 0x00) << 00)); } }
public byte TR_5 { get { return Data[0x51B]; } set { Data[0x51B] = (byte) value; } }
public bool TR_5_happy200 { get { return Convert.ToBoolean((TR_5 >> 07) & 0x01); } set { TR_5 = (byte)((TR_5 & ~(0x01 << 07)) | (byte)((value == true ? 0x01 : 0x00) << 07)); } }
public bool TR_5_happy100 { get { return Convert.ToBoolean((TR_5 >> 06) & 0x01); } set { TR_5 = (byte)((TR_5 & ~(0x01 << 06)) | (byte)((value == true ? 0x01 : 0x00) << 06)); } }
public bool TR_5_happy0 { get { return Convert.ToBoolean((TR_5 >> 05) & 0x01); } set { TR_5 = (byte)((TR_5 & ~(0x01 << 05)) | (byte)((value == true ? 0x01 : 0x00) << 05)); } }
public bool TR_5_ppMax { get { return Convert.ToBoolean((TR_5 >> 04) & 0x01); } set { TR_5 = (byte)((TR_5 & ~(0x01 << 04)) | (byte)((value == true ? 0x01 : 0x00) << 04)); } }
public bool TR_5_spdefEVUP { get { return Convert.ToBoolean((TR_5 >> 03) & 0x01); } set { TR_5 = (byte)((TR_5 & ~(0x01 << 03)) | (byte)((value == true ? 0x01 : 0x00) << 03)); } }
public bool TR_5_spatkEVUP { get { return Convert.ToBoolean((TR_5 >> 02) & 0x01); } set { TR_5 = (byte)((TR_5 & ~(0x01 << 02)) | (byte)((value == true ? 0x01 : 0x00) << 02)); } }
public bool TR_5_spEVUP { get { return Convert.ToBoolean((TR_5 >> 01) & 0x01); } set { TR_5 = (byte)((TR_5 & ~(0x01 << 01)) | (byte)((value == true ? 0x01 : 0x00) << 01)); } }
public bool TR_5_defEVUP { get { return Convert.ToBoolean((TR_5 >> 00) & 0x01); } set { TR_5 = (byte)((TR_5 & ~(0x01 << 00)) | (byte)((value == true ? 0x01 : 0x00) << 00)); } }
public byte TR_6 { get { return Data[0x51C]; } set { Data[0x51C] = (byte) value; } }
public sbyte TR_7 { get { return (sbyte)Data[0x51D]; } set { Data[0x51D] = (byte) value; } }
public sbyte TR_8 { get { return (sbyte)Data[0x51E]; } set { Data[0x51E] = (byte) value; } }
public sbyte TR_9 { get { return (sbyte)Data[0x51F]; } set { Data[0x51F] = (byte) value; } }
public byte HPRecovery {
get {
if(TR_4_revive == true || TR_4_healHP == true)
return TR_6;
else
return 0;
}
set {
if(TR_4_revive == true || TR_4_healHP == true)
TR_6 = (byte) value;
} }
public byte PPRecovery {
get {
if(TR_4_healPP == true)
return TR_6;
else
return 0;
}
set {
if(TR_4_healPP == true)
TR_6 = (byte) value;
} }
public sbyte EVchange {
get {
if(TR_5_spEVUP == true || TR_5_defEVUP == true || TR_4_atkEVUP == true ||
TR_4_hpEVUP == true || TR_5_spdefEVUP == true || TR_5_spatkEVUP == true )
return (sbyte)TR_6;
else
return 0;
}
set {
if(TR_5_spEVUP == true || TR_5_defEVUP == true || TR_4_atkEVUP == true ||
TR_4_hpEVUP == true || TR_5_spdefEVUP == true || TR_5_spatkEVUP == true )
TR_6 = (byte) value;
} }
public sbyte Happy200 {
get {
if(TR_4_revive == true || TR_4_healHP == true || TR_4_healPP == true || TR_4_atkEVUP == true ||
TR_4_hpEVUP == true || TR_5_spdefEVUP == true || TR_5_spatkEVUP == true ||
TR_5_spEVUP == true || TR_5_defEVUP == true)
return (sbyte)TR_7;
else
return (sbyte)TR_6;
} set {
if(TR_4_revive == true || TR_4_healHP == true || TR_4_healPP == true || TR_4_atkEVUP == true ||
TR_4_hpEVUP == true || TR_5_spdefEVUP == true || TR_5_spatkEVUP == true ||
TR_5_spEVUP == true || TR_5_defEVUP == true)
TR_7 = (sbyte) value;
else
TR_6 = (byte) value;
} }
public sbyte Happy100 {
get {
if(TR_4_revive == true || TR_4_healHP == true || TR_4_healPP == true || TR_4_atkEVUP == true ||
TR_4_hpEVUP == true || TR_5_spdefEVUP == true || TR_5_spatkEVUP == true ||
TR_5_spEVUP == true || TR_5_defEVUP == true)
{
if(TR_5_happy200 == true)
return (sbyte)TR_8;
else
return (sbyte)TR_7;
}
else{
if(TR_5_happy200 == true)
return (sbyte)TR_7;
else
return (sbyte)TR_6;
}
} set {
if(TR_4_revive == true || TR_4_healHP == true || TR_4_healPP == true || TR_4_atkEVUP == true ||
TR_4_hpEVUP == true || TR_5_spdefEVUP == true || TR_5_spatkEVUP == true ||
TR_5_spEVUP == true || TR_5_defEVUP == true)
{
if(TR_5_happy200 == true)
TR_8 = (sbyte) value;
else
TR_7 = (sbyte) value;
}
else{
if(TR_5_happy200 == true)
TR_7 = (sbyte) value;
else
TR_6 = (byte) value;
}
} }
public sbyte Happy0 {
get {
if(TR_4_revive == true || TR_4_healHP == true || TR_4_healPP == true || TR_4_atkEVUP == true ||
TR_4_hpEVUP == true || TR_5_spdefEVUP == true || TR_5_spatkEVUP == true ||
TR_5_spEVUP == true || TR_5_defEVUP == true)
{
if(TR_5_happy200 == true){
if(TR_5_happy100 == true){
return (sbyte)TR_9;
}else{
return (sbyte)TR_8;}
}else{
if(TR_5_happy100 == true){
return (sbyte)TR_8;}
else{
return (sbyte)TR_7;
}
}
}
else{
if(TR_5_happy200 == true){
if(TR_5_happy100 == true){
return (sbyte)TR_8;}
else{
return (sbyte)TR_7;}
}else{
if(TR_5_happy100 == true){
return (sbyte)TR_7;}
else{
return (sbyte)TR_6;}
}
}
} set {
if(TR_4_revive == true || TR_4_healHP == true || TR_4_healPP == true || TR_4_atkEVUP == true ||
TR_4_hpEVUP == true || TR_5_spdefEVUP == true || TR_5_spatkEVUP == true ||
TR_5_spEVUP == true || TR_5_defEVUP == true)
{
if(TR_5_happy200 == true){
if(TR_5_happy100 == true)
TR_9 = (sbyte) value;
else
TR_8 = (sbyte) value;
}else{
if(TR_5_happy100 == true)
TR_8 = (sbyte) value;
else
TR_7 = (sbyte) value;
}
}
else{
if(TR_5_happy200 == true){
if(TR_5_happy100 == true)
TR_8 = (sbyte) value;
else
TR_7 = (sbyte) value;
}else{
if(TR_5_happy100 == true)
TR_7 = (sbyte) value;
else
TR_6 = (byte) value;
}
}
} }
}
}

1282
wc3_tool/WC3/ECB_editor.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

312
wc3_tool/WC3/ECB_editor.cs Normal file
View File

@ -0,0 +1,312 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 09/05/2016
* Time: 0:59
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WC3_TOOL
{
/// <summary>
/// Description of ECB_editor.
/// </summary>
public partial class ECB_editor : Form
{
public ECB_editor()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
hap200.Minimum = -127;
hap100.Minimum = -127;
happ0.Minimum = -127;
tr6_val.Minimum = 0;
tr6_val.Maximum = 255;
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
public string berryfilter = "e-card Berry file|*.ecb|All Files (*.*)|*.*";
public string berry_sp_filter = "All Files (*.*)|*.*";
public byte[] ecbbuffer;
public byte[] spritebuf;
public byte[] paletebuf;
public static ECB ecbfile;
void Load_ECB(string path)
{
int filesize = FileIO.load_file(ref ecbbuffer, ref path, berryfilter);
if( filesize == ECB.SIZE_ECB )
{
ecb_path.Text = path;
ecbfile = new ECB(ecbbuffer);
update_ecbData();
save_ecb_but.Enabled = true;
palette_export_but.Enabled = true;
palette_import_but.Enabled = true;
sprite_export_but.Enabled = true;
sprite_import_but.Enabled = true;
}else{
MessageBox.Show("Invalid file size.");
}
}
void Load_ecb_butClick(object sender, EventArgs e)
{
Load_ECB(null);
}
void Save_ecb_butClick(object sender, EventArgs e)
{
set_ecbData();
ecbfile.fix_berry_checksum();
//if (ecbfile.Edited)
FileIO.save_data(ecbfile.Data, berryfilter);
//else MessageBox.Show("Save has not been edited");
}
void update_ecbData()
{
name.Text = ecbfile.NAME;
firm_box.SelectedIndex = ecbfile.FIRMNESS-1;
size.Value = ecbfile.SIZE;
yield_max.Value = ecbfile.YIELD_MAX;
yield_min.Value = ecbfile.YIELD_MIN;
growth.Value = ecbfile.GROWTH;
spicy.Value = ecbfile.SPICY;
dry.Value = ecbfile.DRY;
sweet.Value = ecbfile.SWEET;
bitter.Value = ecbfile.BITTER;
sour.Value = ecbfile.SOUR;
smooth.Value = ecbfile.SMOOTH;
desc1.Text = ecbfile.DESC_1;
desc2.Text = ecbfile.DESC_2;
held.Value = ecbfile.HITEM;
heal_burn.Checked = ecbfile.TR_3_clearBurn;
heal_confu.Checked = ecbfile.TR_3_clearConf;
heal_ice.Checked = ecbfile.TR_3_clearIce;
heal_inf.Checked = ecbfile.TR_0_healinfatuation;
heal_para.Checked = ecbfile.TR_3_clearPar;
heal_poison.Checked = ecbfile.TR_3_clearPoison;
heal_sleep.Checked = ecbfile.TR_3_clearSleep;
guard.Checked = ecbfile.TR_3_guardspec;
lvlup.Checked = ecbfile.TR_3_lvlUP;
firstpoke.Checked = ecbfile.TR_0_firstpkm;
direhit.Value = ecbfile.TR_0_direhit;
atkup.Value = ecbfile.TR_0_attackUP;
defup.Value = ecbfile.TR_1_defUP;
speedup.Value = ecbfile.TR_1_speedUP;
spatkup.Value = ecbfile.TR_2_espUP;
accurup.Value = ecbfile.TR_2_accUP;
ev_hp.Checked = ecbfile.TR_4_hpEVUP;
ev_atk.Checked = ecbfile.TR_4_atkEVUP;
ev_def.Checked = ecbfile.TR_5_defEVUP;
ev_speed.Checked = ecbfile.TR_5_spEVUP;
ev_speatk.Checked = ecbfile.TR_5_spatkEVUP;
ev_spedef.Checked = ecbfile.TR_5_spdefEVUP;
if (ecbfile.HPRecovery != 0)
tr6_val.Value = ecbfile.HPRecovery;
else if (ecbfile.PPRecovery != 0)
tr6_val.Value = ecbfile.PPRecovery;
else if (ecbfile.EVchange != 0)
tr6_val.Value = ecbfile.EVchange;
//else if (ecbfile.HPRecovery == 0 && ecbfile.EVchange == 0 && ecbfile.PPRecovery == 0)
// tr6_val.Enabled = false;
heal_hp.Checked = ecbfile.TR_4_healHP;
heal_pp.Checked = ecbfile.TR_4_healPP;
selectedatk.Checked = ecbfile.TR_4_onlyatack;
maxppUP.Checked = ecbfile.TR_4_maxPPUP;
revive.Checked = ecbfile.TR_4_revive;
stone.Checked = ecbfile.TR_4_stone;
ppup.Checked = ecbfile.TR_5_ppMax;
happy200.Checked = ecbfile.TR_5_happy200;
happy100.Checked = ecbfile.TR_5_happy100;
happy0.Checked = ecbfile.TR_5_happy0;
if (happy200.Checked == true)
hap200.Value = ecbfile.Happy200;
else
hap200.Value = 0;
if (happy100.Checked == true)
hap100.Value = ecbfile.Happy100;
else
hap100.Value = 0;
if (happy0.Checked == true)
happ0.Value = ecbfile.Happy0;
else
happ0.Value = 0;
}
void set_ecbData()
{
ecbfile.NAME = name.Text;
ecbfile.FIRMNESS = (byte)(firm_box.SelectedIndex+1);
ecbfile.SIZE = (UInt16) size.Value;
ecbfile.YIELD_MAX = (byte)yield_max.Value;
ecbfile.YIELD_MIN = (byte)yield_min.Value;
ecbfile.GROWTH = (byte)growth.Value;
ecbfile.SPICY = (byte)spicy.Value;
ecbfile.DRY = (byte)dry.Value;
ecbfile.SWEET = (byte)sweet.Value;
ecbfile.BITTER = (byte)bitter.Value;
ecbfile.SOUR = (byte)sour.Value;
ecbfile.SMOOTH = (byte)smooth.Value;
ecbfile.DESC_1 = desc1.Text;
ecbfile.DESC_2 = desc2.Text;
ecbfile.HITEM = (byte) held.Value;
ecbfile.TR_3_clearBurn = heal_burn.Checked;
ecbfile.TR_3_clearConf = heal_confu.Checked ;
ecbfile.TR_3_clearIce = heal_ice.Checked;
ecbfile.TR_0_healinfatuation = heal_inf.Checked;
ecbfile.TR_3_clearPar = heal_para.Checked;
ecbfile.TR_3_clearPoison = heal_poison.Checked;
ecbfile.TR_3_clearSleep = heal_sleep.Checked;
ecbfile.TR_3_guardspec = guard.Checked;
ecbfile.TR_3_lvlUP = lvlup.Checked;
ecbfile.TR_0_firstpkm = firstpoke.Checked;
ecbfile.TR_0_direhit = (int)direhit.Value;
ecbfile.TR_0_attackUP = (int)atkup.Value;
ecbfile.TR_1_defUP = (int)defup.Value;
ecbfile.TR_1_speedUP = (int)speedup.Value;
ecbfile.TR_2_espUP = (int)spatkup.Value;
ecbfile.TR_2_accUP = (int)accurup.Value;
ecbfile.TR_4_hpEVUP = ev_hp.Checked;
ecbfile.TR_4_atkEVUP = ev_atk.Checked;
ecbfile.TR_5_defEVUP = ev_def.Checked;
ecbfile.TR_5_spEVUP = ev_speed.Checked;
ecbfile.TR_5_spatkEVUP = ev_speatk.Checked;
ecbfile.TR_5_spdefEVUP = ev_spedef.Checked;
ecbfile.TR_4_healHP = heal_hp.Checked;
ecbfile.TR_4_healPP = heal_pp.Checked;
ecbfile.TR_4_onlyatack = selectedatk.Checked;
ecbfile.TR_4_maxPPUP = maxppUP.Checked;
ecbfile.TR_4_revive = revive.Checked;
ecbfile.TR_4_stone = stone.Checked;
ecbfile.TR_5_ppMax = ppup.Checked;
//Only put the first value found
if (heal_hp.Checked == true)
ecbfile.HPRecovery = (byte)tr6_val.Value;
else if (heal_pp.Checked == true)
ecbfile.PPRecovery = (byte)tr6_val.Value;
else if (ev_hp.Checked == true || ev_atk.Checked == true || ev_def.Checked == true || ev_speed.Checked == true || ev_speatk.Checked == true || ev_spedef.Checked == true)
ecbfile.EVchange = (sbyte)tr6_val.Value;
ecbfile.TR_5_happy200 = happy200.Checked;
ecbfile.TR_5_happy100 = happy100.Checked;
ecbfile.TR_5_happy0 = happy0.Checked;
ecbfile.Happy200 = (sbyte)hap200.Value;
ecbfile.Happy100 = (sbyte)hap100.Value;
ecbfile.Happy0 = (sbyte)happ0.Value;
}
void Held_helpClick(object sender, EventArgs e)
{
MessageBox.Show("Known values:\n00: No effect\n04: Cures poison (Drash Berry)\n05: Cures burn (Japanese Yago Berry)\n06: Cures freeze (Pumkin Berry)\n08: Cures confusion (Japanese Touga Berry)\n23: Restores a lowered stat (Japanese Ginema Berry)\n28: Cures infatuation (Eggant Berry)");
}
void Sprite_export_butClick(object sender, EventArgs e)
{
FileIO.save_data(ecbfile.get_full_sprite(), berry_sp_filter);
}
void Sprite_import_butClick(object sender, EventArgs e)
{
string path = null;
int filesize = FileIO.load_file(ref spritebuf, ref path, berry_sp_filter);
if( filesize == ECB.SIZE_SPRITE+ECB.SIZE_PALETTE)
{
ecbfile.set_full_sprite(spritebuf);
MessageBox.Show("Berry sprite injected.");
}else if (filesize == -1){
;
}else{
MessageBox.Show("Invalid file size.");
}
}
void Palette_import_butClick(object sender, EventArgs e)
{
string path = null;
int filesize = FileIO.load_file(ref paletebuf, ref path, berry_sp_filter);
if( filesize == ECB.SIZE_PALETTE)
{
ecbfile.set_palette(paletebuf);
MessageBox.Show("Berry palette injected.");
}else if (filesize == -1){
;
}else{
MessageBox.Show("Invalid file size.");
}
}
void Palette_export_butClick(object sender, EventArgs e)
{
FileIO.save_data(ecbfile.get_palette(), berry_sp_filter);
}
void Sprite_helpClick(object sender, EventArgs e)
{
MessageBox.Show("To edit the berry sprite you may use \"Nameless Sprite Editor (NSE) 2.1 beta\".\nSave the berry sprite as \".gba\" file and open in NSE with \"Load ROM\" option, then click navigate and input this values:\n\tImage offset: 20\n\tPalette ofsset: 0\n\tWidth: 6\n\tHeight: 6\n\nThen click open and edit the sprite. To save it simply use file->save or control+S (palette can be edited too, use the palette editor's save button to save it).\n\nTo inject the berry sprite you can simply import the modified berry \".gba\" file");
}
void Jap_encodingCheckedChanged(object sender, EventArgs e)
{
ecbfile.isjap = jap_encoding.Checked;
name.Text = ecbfile.NAME;
desc1.Text = ecbfile.DESC_1;
desc2.Text = ecbfile.DESC_2;
}
void PphelpClick(object sender, EventArgs e)
{
MessageBox.Show("Healing HP and PP are mutually exclusive, you cannot heal PP and HP at the same time. HP takes precedence over PP if both are set. ");
}
void Modifier_helpClick(object sender, EventArgs e)
{
MessageBox.Show("PP restoring items have a maximum of 127.\nFor health restoration, 255 means max health, 254 means half max health, 253 is used by rare candy (only increase with level up).\nFor EV items, 0-127 increases EV, 128-255 decreases EV (128 is -1, 255 is -127).");
}
void NoteClick(object sender, EventArgs e)
{
MessageBox.Show("Keep in mind that there are incompatibilities between flags. For example you can't make an HP restoring berry that also levels up a pokémon and expect it to be usable in battle, since a level up item can only be used from the bag.");
}
void ECB_editorDragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
void ECB_editorDragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
Load_ECB(files[0]);
}
}
}

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>

136
wc3_tool/WC3/ECT.cs Normal file
View File

@ -0,0 +1,136 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 03/05/2016
* Time: 20:54
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WC3_TOOL
{
/// <summary>
/// Description of ECT.
/// </summary>
public class ECT
{
public const int SIZE_ECT = 188;
// Global Settings
// Save Data Attributes
public byte[] Data;
public bool Edited;
public readonly bool Exportable;
public readonly byte[] BAK;
public string FileName, FilePath;
public ECT(byte[] data)
{
Data = (byte[])(data ?? new byte[SIZE_ECT]).Clone();
BAK = (byte[])Data.Clone();
Exportable = !Data.SequenceEqual(new byte[Data.Length]);
return;
}
public byte[] getData(int Offset, int Length)
{
return Data.Skip(Offset).Take(Length).ToArray();
}
public void setData(byte[] input, int Offset)
{
input.CopyTo(Data, Offset);
Edited = true;
}
public static UInt32 ect_checksum(int length, byte[] Data)
{
UInt32 Chk = 0;
int i;
length = length>>2;
Chk=0;
for(i=0; i<length; i++){
Chk = unchecked( Chk + (UInt32) BitConverter.ToUInt32(Data, i*4));
}
return Chk;
}
public void fix_ect_checksum()
{
UInt32 Chk = ect_checksum(SIZE_ECT-4, Data);
//MessageBox.Show("Checksum: " + Chk.ToString("X"));
setData(BitConverter.GetBytes(Chk).ToArray(), SIZE_ECT-4);
}
char[] SYMBOL = {
' ', 'À', 'Á', 'Â', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'こ', 'Î', 'Ï', 'Ò', 'Ó', 'Ô',
'Œ', 'Ù', 'Ú', 'Û', 'Ñ', 'ß', 'à', 'á', 'ね', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'ま',
'î', 'ï', 'ò', 'ó', 'ô', 'œ', 'ù', 'ú', 'û', 'ñ', 'º', 'ª', ' ', '&', '+', 'あ',
'ぃ', 'ぅ', 'ぇ', 'ぉ', ' ', '=', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', '¿', '¡', ' ', ' ', ' ', ' ', ' ', ' ', '<', 'Í', '%', '(', ')', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'â', ' ', ' ', ' ', ' ', ' ', ' ', 'í',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
'ゾ', 'ダ', 'ヂ','ヅ', 'デ', 'ド', 'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ',
'ッ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!', '?', '.', '-', '·',
'…', '“', '”', '', '\'', '♂', '♀', '§', ',', '×', '/', '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', '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', '>',
':', 'Ä', 'Ö', 'Ü', 'ä', 'ö', 'ü', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'
};
public string gba2text(byte[] input)
{
string texto;
texto = "";
foreach (byte value in input)
{
if (value == 0xFF)
break;
else{
string newtext = texto + SYMBOL[value].ToString();
texto = newtext;
}
}
return texto;
}
public byte[] text2gba(string input, int len)
{
byte[] gbatext = new byte[len];
byte i = 0;
int count = 0;
foreach (char value in input)
{
for(i=0;i<0xFF;i++)
{
if (value == SYMBOL[i])
{
if (i==0)
{
gbatext[count] = 0;
break;
}
else
{
gbatext[count] = i;
break;
}
}
}
//MessageBox.Show(gbatext[count].ToString("X"));
count++;
}
if (count < len)
gbatext[count] = 0xFF;
return gbatext;
}
}
}

2128
wc3_tool/WC3/ECT_editor.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

857
wc3_tool/WC3/ECT_editor.cs Normal file
View File

@ -0,0 +1,857 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 03/05/2016
* Time: 20:54
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Reflection;
using System.Resources;
namespace WC3_TOOL
{
/// <summary>
/// Description of ECT_editor.
/// </summary>
public partial class ECT_editor : Form
{
public ECT_editor()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
eng.Checked = true;
update_easychat();
//Trainer list
trainer_class.Items.AddRange(trainer_index_RS);
radio_rs.Checked = true;
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
public string ectfilter = "e-card Trainer file|*.ect|All Files (*.*)|*.*";
public byte[] ectbuffer;
public static ECT ectfile;
int get_chatword(UInt16 word)
{
int i;
for(i=0; i<easy_chat_IDs.Length;i++)
{
if (word == easy_chat_IDs[i])
{
break;
}
}
return i;
}
void update_easychat()
{
object[] easychat = ECT_editor_text.easy_chat_eng;
if (ita.Checked == true)
{
easychat = ECT_editor_text.easy_chat_ita;
}else if (ger.Checked == true)
{
easychat = ECT_editor_text.easy_chat_ger;
}else if (fre.Checked == true)
{
easychat = ECT_editor_text.easy_chat_fre;
}else if (esp.Checked == true)
{
easychat = ECT_editor_text.easy_chat_esp;
}else if (jap.Checked == true)
{
easychat = ECT_editor_text.easy_chat_jap;
}
textA1.Items.Clear();
textA2.Items.Clear();
textA3.Items.Clear();
textA4.Items.Clear();
textA5.Items.Clear();
textA6.Items.Clear();
textB1.Items.Clear();
textB2.Items.Clear();
textB3.Items.Clear();
textB4.Items.Clear();
textB5.Items.Clear();
textB6.Items.Clear();
textC1.Items.Clear();
textC2.Items.Clear();
textC3.Items.Clear();
textC4.Items.Clear();
textC5.Items.Clear();
textC6.Items.Clear();
textA1.Items.AddRange(easychat);
textA2.Items.AddRange(easychat);
textA3.Items.AddRange(easychat);
textA4.Items.AddRange(easychat);
textA5.Items.AddRange(easychat);
textA6.Items.AddRange(easychat);
textB1.Items.AddRange(easychat);
textB2.Items.AddRange(easychat);
textB3.Items.AddRange(easychat);
textB4.Items.AddRange(easychat);
textB5.Items.AddRange(easychat);
textB6.Items.AddRange(easychat);
textC1.Items.AddRange(easychat);
textC2.Items.AddRange(easychat);
textC3.Items.AddRange(easychat);
textC4.Items.AddRange(easychat);
textC5.Items.AddRange(easychat);
textC6.Items.AddRange(easychat);
if (ectfile != null)
{
textA1.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x10, 2), 0));
textA2.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x12, 2), 0));
textA3.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x14, 2), 0));
textA4.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x16, 2), 0));
textA5.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x18, 2), 0));
textA6.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x1A, 2), 0));
textB1.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x1C, 2), 0));
textB2.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x1E, 2), 0));
textB3.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x20, 2), 0));
textB4.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x22, 2), 0));
textB5.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x24, 2), 0));
textB6.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x26, 2), 0));
textC1.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x28, 2), 0));
textC2.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x2A, 2), 0));
textC3.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x2C, 2), 0));
textC4.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x2E, 2), 0));
textC5.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x30, 2), 0));
textC6.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x32, 2), 0));
}
}
void update_ectData()
{
//tower_appearance.SelectedIndex = ectfile.Data[0];
tower_appearance_num.Value = ectfile.Data[0];
trainer_class_value.Value= ectfile.Data[0x1];
tower_floor.Value = ectfile.Data[0x2];
name.Text = PKHeX.PKM.getG3Str(ectfile.getData(0x4, 8), jap_check.Checked);
TID.Value = BitConverter.ToUInt16(ectfile.getData(0xC, 2), 0);
SID.Value = BitConverter.ToUInt16(ectfile.getData(0xE, 2), 0);
textA1.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x10, 2), 0));
textA2.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x12, 2), 0));
textA3.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x14, 2), 0));
textA4.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x16, 2), 0));
textA5.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x18, 2), 0));
textA6.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x1A, 2), 0));
textB1.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x1C, 2), 0));
textB2.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x1E, 2), 0));
textB3.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x20, 2), 0));
textB4.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x22, 2), 0));
textB5.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x24, 2), 0));
textB6.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x26, 2), 0));
textC1.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x28, 2), 0));
textC2.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x2A, 2), 0));
textC3.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x2C, 2), 0));
textC4.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x2E, 2), 0));
textC5.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x30, 2), 0));
textC6.SelectedIndex = get_chatword(BitConverter.ToUInt16(ectfile.getData(0x32, 2), 0));
pkm1.SelectedIndex = BitConverter.ToUInt16(ectfile.getData(0x34, 2), 0);
pkm2.SelectedIndex = BitConverter.ToUInt16(ectfile.getData(0x60, 2), 0);
pkm3.SelectedIndex = BitConverter.ToUInt16(ectfile.getData(0x8C, 2), 0);
}
void set_ectData()
{
ectfile.Data[0] = (byte) tower_appearance_num.Value;
ectfile.Data[0x1] = (byte) trainer_class_value.Value;
ectfile.Data[0x2] = (byte) tower_floor.Value;
ECT_editor.ectfile.setData(PKHeX.PKM.setG3Str(name.Text, jap_check.Checked), (int)0x04);
ectfile.setData(BitConverter.GetBytes((UInt16)TID.Value).ToArray(), (int)0xC);
ectfile.setData(BitConverter.GetBytes((UInt16)SID.Value).ToArray(), (int)0xC);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textA1.SelectedIndex]), 0x10);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textA2.SelectedIndex]), 0x12);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textA3.SelectedIndex]), 0x14);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textA4.SelectedIndex]), 0x16);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textA5.SelectedIndex]), 0x18);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textA6.SelectedIndex]), 0x1A);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textB1.SelectedIndex]), 0x1C);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textB2.SelectedIndex]), 0x1E);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textB3.SelectedIndex]), 0x20);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textB4.SelectedIndex]), 0x22);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textB5.SelectedIndex]), 0x24);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textB6.SelectedIndex]), 0x26);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textC1.SelectedIndex]), 0x28);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textC2.SelectedIndex]), 0x2A);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textC3.SelectedIndex]), 0x2C);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textC4.SelectedIndex]), 0x2E);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textC5.SelectedIndex]), 0x30);
ectfile.setData(BitConverter.GetBytes(easy_chat_IDs[textC6.SelectedIndex]), 0x32);
ectfile.setData(BitConverter.GetBytes((UInt16)pkm1.SelectedIndex).ToArray(), 0x34);
ectfile.setData(BitConverter.GetBytes((UInt16)pkm2.SelectedIndex).ToArray(), 0x60);
ectfile.setData(BitConverter.GetBytes((UInt16)pkm3.SelectedIndex).ToArray(), 0x8C);
}
void Load_ECT(string path)
{
int filesize = FileIO.load_file(ref ectbuffer, ref path, ectfilter);
if( filesize == ECT.SIZE_ECT )
{
ect_path.Text = path;
ectfile = new ECT(ectbuffer);
update_ectData();
save_ect_but.Enabled = true;
pkm1_edit_but.Enabled = true;
pkm2_edit_but.Enabled = true;
pkm3_edit_but.Enabled = true;
jap_check.Enabled = true;
}else{
MessageBox.Show("Invalid file size.");
}
}
void Load_ect_butClick(object sender, EventArgs e)
{
Load_ECT(null);
}
void Save_ect_butClick(object sender, EventArgs e)
{
set_ectData();
ectfile.fix_ect_checksum();
if (ectfile.Edited)
FileIO.save_data(ectfile.Data, ectfilter);
else MessageBox.Show("Save has not been edited");
}
void Helpclass_butClick(object sender, EventArgs e)
{
MessageBox.Show("The classes AQUA ADMIN, MAGMA ADMIN, and WINSTRATE are apparently unavailable, as are the other five Leaders and two Elite Four members. Indices greater than those in the list (0x4C, 0x4F and 0x92) result in mismatches between the trainer class and sprite.\n\nThis value also determines the overworld sprite shown in the Mossdeep house. Some classes and any value greater than the ones listed, will be shown in the overworld as a generic male NPC.\n\nThere are two identical entries for the unused BOARDER class in this list, implying that male and female versions were planned, and three identical entries each for Brendan and May, which might indicate that they were intended to have multiple sprites like the rivals in prior games.");
}
void Pkm1_edit_butClick(object sender, EventArgs e)
{
Form pkedit = new ECT_pkedit(0);
pkedit.ShowDialog();
}
void Pkm2_edit_butClick(object sender, EventArgs e)
{
Form pkedit = new ECT_pkedit(1);
pkedit.ShowDialog();
}
void Pkm3_edit_butClick(object sender, EventArgs e)
{
Form pkedit = new ECT_pkedit(2);
pkedit.ShowDialog();
}
void Jap_checkCheckedChanged(object sender, EventArgs e)
{
name.Text = PKHeX.PKM.getG3Str(ectfile.getData(0x4, 8), jap_check.Checked);
if (jap_check.Checked == true)
MessageBox.Show("Remember Japanese names have a maximum of 5 characters.");
}
object[] trainer_index_RS_other = {
"$00: *AQUA LEADER",
"$01: *TEAM AQUA (♂)",
"$02: *TEAM AQUA (♀)",
"$03: AROMA LADY",
"$04: RUIN MANIAC",
"$05: *INTERVIEWER",
"$06: TUBER (♀)",
"$07: TUBER (♂)",
"$08: COOLTRAINER♂",
"$09: COOLTRAINER♀",
"$0A: HEX MANIAC",
"$0B: LADY",
"$0C: BEAUTY",
"$0D: RICH BOY",
"$0E: POKéMANIAC",
"$0F: SWIMMER♂",
"$10: BLACK BELT",
"$11: GUITARIST",
"$12: KINDLER",
"$13: CAMPER",
"$14: BUG MANIAC",
"$15: PSYCHIC (♂)",
"$16: PSYCHIC (♀)",
"$17: GENTLEMAN",
"$18: *ELITE FOUR (Sidney)",
"$19: *ELITE FOUR (Phoebe)",
"$1A: *LEADER (Roxanne)",
"$1B: *LEADER (Brawly)",
"$1C: *LEADER (Tate&Liza)",
"$1D: SCHOOL KID (♂)",
"$1E: SCHOOL KID (♀)",
"$1F: *SR. AND JR.",
"$20: POKéFAN (♂)",
"$21: POKéFAN (♀)",
"$22: EXPERT (♂)",
"$23: EXPERT (♀)",
"$24: YOUNGSTER",
"$25: *CHAMPION",
"$26: FISHERMAN",
"$27: TRIATHLETE (♂ cycling)",
"$28: TRIATHLETE (♀ cycling)",
"$29: TRIATHLETE (♂ running)",
"$2A: TRIATHLETE (♀ running)",
"$2B: TRIATHLETE (♂ swimming)",
"$2C: TRIATHLETE (♀ swimming)",
"$2D: DRAGON TAMER",
"$2E: BIRD KEEPER",
"$2F: NINJA BOY",
"$30: BATTLE GIRL",
"$31: PARASOL LADY",
"$32: SWIMMER♀",
"$33: PICNICKER",
"$34: *TWINS",
"$35: SAILOR",
"$36: *BOARDER (Youngster)",
"$37: *BOARDER (Youngster)",
"$38: COLLECTOR",
"$39: *PKMN TRAINER (Wally)",
"$3A: *PKMN TRAINER (Brendan)",
"$3B: *PKMN TRAINER (Brendan)",
"$3C: *PKMN TRAINER (Brendan)",
"$3D: *PKMN TRAINER (May)",
"$3E: *PKMN TRAINER (May)",
"$3F: *PKMN TRAINER (May)",
"$40: PKMN BREEDER (♂)",
"$41: PKMN BREEDER (♀)",
"$42: PKMN RANGER (♂)",
"$43: PKMN RANGER (♀)",
"$44: *MAGMA LEADER",
"$45: *TEAM MAGMA (♂)",
"$46: *TEAM MAGMA (♀)",
"$47: LASS",
"$48: BUG CATCHER",
"$49: HIKER",
"$4A: *YOUNG COUPLE",
"$4B: *OLD COUPLE",
"$4C: *SIS AND BRO"};
object[] trainer_index_RS = {
"0x00: Aqua Leader (Archie)",
"0x01: Team Aqua Grunt (Male)",
"0x02: Team Aqua Grunt (Female)",
"0x03: Aroma Lady",
"0x04: Ruin Maniac",
"0x05: Interviewer",
"0x06: Tuber (Female)",
"0x07: Tuber (Male)",
"0x08: Cool Trainer (Male)",
"0x09: Cool Trainer (Female)",
"0x0A: Hex Maniac",
"0x0B: Lady",
"0x0C: Beauty",
"0x0D: Rich Boy",
"0x0E: Pokemaniac",
"0x0F: Swimmer (Male)",
"0x10: Blackbelt",
"0x11: Guitarist",
"0x12: Kindler",
"0x13: Camper",
"0x14: Bug Maniac",
"0x15: Psychic (Male)",
"0x16: Psychic (Female)",
"0x17: Gentleman",
"0x18: Elite Four (Sidney)",
"0x19: Elite Four (Phoebe)",
"0x1A: Leader (Roxanne)",
"0x1B: Leader (Brawly)",
"0x1C: Leader (Tate & Liza)",
"0x1D: School Kid (Male)",
"0x1E: School Kid (Female)",
"0x1F: Sr. and Jr.",
"0x20: Pokefan (Male)",
"0x21: Pokefan (Female)",
"0x22: Expert (Male)",
"0x23: Expert (Female)",
"0x24: Youngster",
"0x25: Champion (Steven)",
"0x26: Fisherman",
"0x27: Triathlete Biker (Male)",
"0x28: Triathlete Biker (Female)",
"0x29: Triathlete Runner (Male)",
"0x2A: Triathlete Runner (Female)",
"0x2B: Triathlete Swimmer (Male)",
"0x2C: Triathlete Swimmer (Female)",
"0x2D: Dragon Tamer",
"0x2E: Bird Keeper",
"0x2F: Ninja Boy",
"0x30: Battle Girl",
"0x31: Parasol Lady",
"0x32: Swimmer (Female)",
"0x33: Picnicker",
"0x34: Twins",
"0x35: Sailor",
"0x36: Boarder",
"0x37: Boarder",
"0x38: Collector",
"0x39: PKMN Trainer (Wally)",
"0x3A: PKMN Trainer (Brendan)",
"0x3B: PKMN Trainer (Brendan)",
"0x3C: PKMN Trainer (Brendan)",
"0x3D: PKMN Trainer (May)",
"0x3E: PKMN Trainer (May)",
"0x3F: PKMN Trainer (May)",
"0x40: PKMN Breeder (Male)",
"0x41: PKMN Breeder (Female)",
"0x42: PKMN Ranger (Male)",
"0x43: PKMN Ranger (Female)",
"0x44: Magma Leader (Maxie)",
"0x45: Team Magma Grunt (Male)",
"0x46: Team Magma Grunt (Female)",
"0x47: Lass",
"0x48: Bug Catcher",
"0x49: Hiker",
"0x4A: Young Couple",
"0x4B: Old Couple",
"0x4C: Sis and Bro",
"<- SET BY INDEX"};
object[] trainer_index_E = {
"0x00: Hiker",
"0x01: Team Aqua Grunt (Male)",
"0x02: PKMN Breeder (Female)",
"0x03: Cooltrainer (Male)",
"0x04: Bird Keeper",
"0x05: Collector",
"0x06: Team Aqua Grunt (Female)",
"0x07: Swimmer (Male)",
"0x08: Team Magma Grunt (Male)",
"0x09: Expert (Male)",
"0x0A: Black Belt",
"0x0B: Aqua Leader (Archie)",
"0x0C: Hex Maniac",
"0x0D: Aroma Lady",
"0x0E: Ruin Maniac",
"0x0F: Interviewer",
"0x10: Tuber (Female)",
"0x11: Tuber (Male)",
"0x12: Cooltrainer (Female)",
"0x13: Lady",
"0x14: Beauty",
"0x15: Rich Boy",
"0x16: Expert (Female)",
"0x17: Pokemaniac",
"0x18: Team Magma Grunt (Female)",
"0x19: Guitarist",
"0x1A: Kindler",
"0x1B: Camper",
"0x1C: Picnicker",
"0x1D: Bug Maniac",
"0x1E: Psychic (Male)",
"0x1F: Psychic (Female)",
"0x20: Gentleman",
"0x21: Elite Four (Sidney)",
"0x22: Elite Four (Phoebe)",
"0x23: Leader (Roxanne)",
"0x24: Leader (Brawly)",
"0x25: Leader (Tate & Liza)",
"0x26: School Kid (Male)",
"0x27: School Kid (Female)",
"0x28: Sr. and Jr.",
"0x29: Pokefan (Male)",
"0x2A: Pokefan (Female)",
"0x2B: Youngster",
"0x2C: Champion (Wallace)",
"0x2D: Fisherman",
"0x2E: Triathlete Biker (Male)",
"0x2F: Triathlete Biker (Female)",
"0x30: Triathlete Runner (Male)",
"0x31: Triathlete Runner (Female)",
"0x32: Triathlete Swimmer (Male)",
"0x33: Triathlete Swimmer (Female)",
"0x34: Dragon Tamer",
"0x35: Ninja Boy",
"0x36: Battle Girl",
"0x37: Parasol Lady",
"0x38: Swimmer (Female)",
"0x39: Twins",
"0x3A: Sailor",
"0x3B: PKMN Trainer (Wally)",
"0x3C: PKMN Trainer (Brendan)",
"0x3D: PKMN Trainer (Brendan)",
"0x3E: PKMN Trainer (Brendan)",
"0x3F: PKMN Trainer (May)",
"0x40: PKMN Trainer (May)",
"0x41: PKMN Trainer (May)",
"0x42: PKMN Breeder (Male)",
"0x43: Bug Catcher",
"0x44: PKMN Ranger (Male)",
"0x45: PKMN Ranger (Female)",
"0x46: Magma Leader (Maxie)",
"0x47: Lass",
"0x48: Young Couple",
"0x49: Old Couple",
"0x4A: Sis and Bro",
"0x4B: PKMN Trainer (Steven)",
"0x4C: Salon Maiden (Anabel)",
"0x4D: Dome Ace (Tucker)",
"0x4E: PKMN Trainer (Red)",
"0x4F: PKMN Trainer (Green)",
"<- SET BY INDEX"};
object[] trainer_index_FRLG = {
"0x00: Aqua Leader (Archie)",
"0x01: Team Aqua Grunt (Male)",
"0x02: Team Aqua Grunt (Female)",
"0x03: Aroma Lady",
"0x04: Ruin Maniac",
"0x05: Interviewer",
"0x06: Tuber (Female)",
"0x07: Tuber (Male)",
"0x08: Cool Trainer (Male)",
"0x09: Cool Trainer (Female)",
"0x0A: Hex Maniac",
"0x0B: Lady",
"0x0C: Beauty",
"0x0D: Rich Boy",
"0x0E: Pokemaniac",
"0x0F: Swimmer (Male)",
"0x10: Blackbelt",
"0x11: Guitarist",
"0x12: Kindler",
"0x13: Camper",
"0x14: Bug Maniac",
"0x15: Psychic (Male)",
"0x16: Psychic (Female)",
"0x17: Gentleman",
"0x18: Elite Four (Sidney)",
"0x19: Elite Four (Phoebe)",
"0x1A: Leader (Roxanne)",
"0x1B: Leader (Brawly)",
"0x1C: Leader (Tate & Liza)",
"0x1D: School Kid (Male)",
"0x1E: School Kid (Female)",
"0x1F: Sr. and Jr.",
"0x20: Pokefan (Male)",
"0x21: Pokefan (Female)",
"0x22: Expert (Male)",
"0x23: Expert (Female)",
"0x24: Youngster",
"0x25: Champion (Steven)",
"0x26: Fisherman",
"0x27: Triathlete Biker (Male)",
"0x28: Triathlete Biker (Female)",
"0x29: Triathlete Runner (Male)",
"0x2A: Triathlete Runner (Female)",
"0x2B: Triathlete Swimmer (Male)",
"0x2C: Triathlete Swimmer (Female)",
"0x2D: Dragon Tamer",
"0x2E: Bird Keeper",
"0x2F: Ninja Boy",
"0x30: Battle Girl",
"0x31: Parasol Lady",
"0x32: Swimmer (Female)",
"0x33: Picnicker",
"0x34: Twins",
"0x35: Sailor",
"0x36: Boarder",
"0x37: Boarder",
"0x38: Collector",
"0x39: PKMN Trainer (Wally)",
"0x3A: PKMN Trainer (Brendan)",
"0x3B: PKMN Trainer (Brendan)",
"0x3C: PKMN Trainer (Brendan)",
"0x3D: PKMN Trainer (May)",
"0x3E: PKMN Trainer (May)",
"0x3F: PKMN Trainer (May)",
"0x40: PKMN Breeder (Male)",
"0x41: PKMN Breeder (Female)",
"0x42: PKMN Ranger (Male)",
"0x43: PKMN Ranger (Female)",
"0x44: Magma Leader (Maxie)",
"0x45: Team Magma Grunt (Male)",
"0x46: Team Magma Grunt (Female)",
"0x47: Lass",
"0x48: Bug Catcher",
"0x49: Hiker",
"0x4A: Young Couple",
"0x4B: Old Couple",
"0x4C: Sis and Bro",
"0x4D: Aqua Admin (Matt)",
"0x4E: Aqua Admin (Shelly)",
"0x4F: Magma Admin (Tabitha)",
"0x50: Magma Admin (Courtney)",
"0x51: Leader (Wattson)",
"0x52: Leader (Flannery)",
"0x53: Leader (Norman)",
"0x54: Leader (Winona)",
"0x55: Leader (Wallace)",
"0x56: Elite Four (Glacia)",
"0x57: Elite Four (Drake)",
"0x58: Youngster (FRLG)",
"0x59: Bug Catcher (FRLG)",
"0x5A: Lass (FRLG)",
"0x5B: Sailor (FRLG)",
"0x5C: Camper (FRLG)",
"0c5D: Picnicker (FRLG)",
"0x5E: Pokemaniac (FRLG)",
"0x5F: Super Nerd",
"0x60: Hiker (FRLG)",
"0x61: Biker (FRLG)",
"0x62: Burglar",
"0x63: Engineer",
"0x64: Fisherman",
"0x65: Swimmer (Male) (FRLG)",
"0x66: Cue Ball",
"0x67: Gamer",
"0x68: Beauty (FRLG)",
"0x69: Swimmer (Female) (FRLG)",
"0x6A: Psychic (Male)",
"0x6B: Rocker",
"0x6C: Juggler",
"0x6D: Tamer",
"0x6E: Bird Keeper (FRLG)",
"0x6F: Blackbelt (FRLG)",
"0x70: Rival (Gary)",
"0x71: Scientist",
"0x72: Boss (Giovanni)",
"0x73: Team Rocket Grunt (Male)",
"0x74: Cooltrainer (Male)",
"0x75: Cooltrainer (Female)",
"0x76: Elite Four (Lorelei)",
"0x77: Elite Four (Bruno)",
"0x78: Leader (Brock)",
"0x79: Leader (Misty)",
"0x7A: Gentleman (FRLG)",
"0x7B: Rival (Gary)",
"0x7C: Champion (Gary)",
"0x7D: Channeler",
"0x7E: Twins (FRLG)",
"0x7F: Cool Couple",
"0x80: Young Couple (FRLG)",
"0x81: Crush Kin",
"0x82: Sis and Bro (FRLG)",
"0x83: PKMN Prof. (Oak)",
"0x84: Player (Brendan)",
"0x85: Player (May)",
"0x86: Player (Red)",
"0x87: Player (Green)",
"0x88: Team Rocket Grunt (Female)",
"0x89: Psychic (Female) (FRLG)",
"0x8A: Crush Girl",
"0x8B: Tuber (Female) (FRLG)",
"0x8C: PKMN Breeder (Female) (FRLG)",
"0x8D: PKMN Ranger (Male) (FRLG)",
"0x8E: PKMN Ranger (Female) (FRLG)",
"0x8F: Aroma Lady (FRLG)",
"0x90: Ruin Maniac (FRLG)",
"0x91: Lady (FRLG)",
"0x92: Painter (Female)",
"<- SET BY INDEX"};
void update_trainer_list()
{
trainer_class.Items.Clear();
if (radio_e.Checked == true)
trainer_class.Items.AddRange(trainer_index_E);
else if(radio_FRLG.Checked == true)
trainer_class.Items.AddRange(trainer_index_FRLG);
else
trainer_class.Items.AddRange(trainer_index_RS);
}
void Radio_rsCheckedChanged(object sender, EventArgs e)
{
update_trainer_list();
}
void Radio_eCheckedChanged(object sender, EventArgs e)
{
update_trainer_list();
}
void Radio_FRLGCheckedChanged(object sender, EventArgs e)
{
update_trainer_list();
}
void NoteClick(object sender, EventArgs e)
{
MessageBox.Show("Easy chat system implementation currently has limitations, pokemon and move groups need more research for their values and won't properly work. All other word groups work fine. There might also be problems between different languages, even though english words are supposed to be translated from japanese.");
}
void Trainer_class_valueValueChanged(object sender, EventArgs e)
{
if(trainer_class_value.Value <= 0x4C && radio_rs.Checked == true)
trainer_class.SelectedIndex = (int)trainer_class_value.Value;
else if(trainer_class_value.Value <= 0x4F && radio_e.Checked == true)
trainer_class.SelectedIndex = (int)trainer_class_value.Value;
else if(trainer_class_value.Value <= 0x92 && radio_FRLG.Checked == true)
trainer_class.SelectedIndex = (int)trainer_class_value.Value;
if(trainer_class_value.Value > 0x4C && radio_rs.Checked == true)
trainer_class.SelectedIndex = 0x4D;
else if(trainer_class_value.Value > 0x4F && radio_e.Checked == true)
trainer_class.SelectedIndex = 0x50;
else if(trainer_class_value.Value > 0x92 && radio_FRLG.Checked == true)
trainer_class.SelectedIndex = 0x93;
}
void Trainer_classSelectedIndexChanged(object sender, EventArgs e)
{
trainer_class_value.Value = trainer_class.SelectedIndex;
}
UInt16[] easy_chat_IDs = new UInt16[]
{
0x0, 0x0115, 0x0116, 0x0117, 0x0118, 0x0119, 0x011A, 0x011B, 0x011C, 0x011D, 0x011E, 0x011F, 0x0120, 0x0121, 0x0122, 0x0123,
0x0124, 0x0125, 0x0126, 0x0127, 0x0128, 0x0129, 0x012A, 0x012B, 0x012C, 0x012D, 0x012E, 0x012F, 0x0130, 0x0131, 0x0132, 0x0133,
0x0134, 0x0135, 0x0136, 0x0137, 0x0138, 0x0139, 0x013A, 0x013B, 0x013C, 0x013D, 0x013E, 0x013F, 0x0140, 0x0141, 0x0142, 0x0143,
0x0144, 0x0145, 0x0146, 0x0147, 0x0148, 0x0149, 0x014A, 0x014B, 0x014C, 0x014D, 0x014E, 0x014F, 0x0150, 0x0151, 0x0152, 0x0153,
0x0154, 0x0155, 0x0156, 0x0157, 0x0158, 0x0159, 0x015A, 0x015B, 0x015C, 0x015D, 0x015E, 0x015F, 0x0160, 0x0161, 0x0162, 0x0163,
0x0164, 0x0165, 0x0166, 0x0167, 0x0168, 0x0169, 0x016A, 0x016B, 0x016C, 0x016D, 0x016E, 0x016F, 0x0170, 0x0171, 0x0172, 0x0173,
0x0174, 0x0175, 0x0176, 0x0177, 0x0178, 0x0179, 0x017A, 0x017B, 0x017C, 0x017D, 0x017E, 0x017F, 0x0180, 0x0181, 0x0182, 0x0183,
0x0184, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189, 0x018A, 0x018B, 0x018C, 0x018D, 0x018E, 0x018F, 0x0190, 0x0191, 0x0192, 0x0193,
0x0194, 0x0195, 0x0196, 0x0197, 0x0198, 0x0199, 0x019A, 0x019B, 0x1, 0x0200, 0x0201, 0x0202, 0x0203, 0x0204, 0x0205, 0x0206, 0x0207,
0x0208, 0x0209, 0x020A, 0x020B, 0x020C, 0x020D, 0x020E, 0x020F, 0x0210, 0x0211, 0x0212, 0x0213, 0x0214, 0x0215, 0x0216, 0x0217, 0x0218,
0x0219, 0x021A, 0x2, 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x040D,
0x040E, 0x040F, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E,
0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440,
0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0x0450, 0x0451,
0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x045D, 0x045E, 0x045F, 0x0460, 0x0461, 0x0462,
0x0463, 0x0464, 0x0465, 0x0466, 0x0467, 0x0468, 0x0469, 0x046A, 0x046B, 0x046C, 0x3, 0x0600, 0x0601, 0x0602, 0x0603, 0x0604, 0x0605,
0x0606, 0x0607, 0x0608, 0x0609, 0x060A, 0x060B, 0x060C, 0x060D, 0x060E, 0x060F, 0x0610, 0x0611, 0x0612, 0x0613, 0x0614, 0x0615, 0x0616,
0x0617, 0x0618, 0x0619, 0x061A, 0x061B, 0x061C, 0x061D, 0x061E, 0x061F, 0x0620, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, 0x0638,
0x0639, 0x063A, 0x063B, 0x063C, 0x063D, 0x063E, 0x4, 0x0800, 0x0801, 0x0802, 0x0803, 0x0804, 0x0805, 0x0806, 0x0807, 0x0808, 0x0809, 0x080A,
0x080B, 0x080C, 0x080D, 0x080E, 0x080F, 0x0810, 0x0811, 0x0812, 0x0813, 0x0814, 0x0815, 0x0816, 0x0817, 0x0818, 0x0819, 0x081A, 0x081B,
0x081C, 0x081D, 0x081E, 0x081F, 0x0820, 0x0821, 0x0822, 0x0823, 0x0824, 0x0825, 0x0826, 0x0827, 0x0828, 0x0829, 0x5, 0x0A00, 0x0A01, 0x0A02,
0x0A03, 0x0A04, 0x0A05, 0x0A06, 0x0A07, 0x0A08, 0x0A09, 0x0A0A, 0x0A0B, 0x0A0C, 0x0A0D, 0x0A0E, 0x0A0F, 0x0A10, 0x0A11, 0x0A12, 0x0A13,
0x0A14, 0x0A15, 0x0A16, 0x0A17, 0x0A18, 0x0A19, 0x0A1A, 0x0A1B, 0x0A1C, 0x0A1D, 0x0A1E, 0x0A1F, 0x0A20, 0x0A21, 0x0A22, 0x0A23, 0x0A24,
0x0A25, 0x0A26, 0x0A27, 0x0A28, 0x0A29, 0x0A2A, 0x0A2B, 0x0A2C, 0x0A2D, 0x0A2E, 0x0A2F, 0x0A30, 0x0A31, 0x0A32, 0x0A33, 0x0A34, 0x0A35,
0x0A36, 0x0A37, 0x0A38, 0x0A39, 0x0A3A, 0x0A3B, 0x0A3C, 0x0A3D, 0x0A3E, 0x0A3F, 0x0A40, 0x0A41, 0x0A42, 0x0A43, 0x0A44, 0x0A45, 0x0A46,
0x0A47, 0x0A48, 0x0A49, 0x0A4A, 0x6, 0x0C00, 0x0C01, 0x0C02, 0x0C03, 0x0C04, 0x0C05, 0x0C06, 0x0C07, 0x0C08, 0x0C09, 0x0C0A, 0x0C0B, 0x0C0C,
0x0C0D, 0x0C0E, 0x0C0F, 0x0C10, 0x0C11, 0x0C12, 0x0C13, 0x0C14, 0x0C15, 0x0C16, 0x0C17, 0x0C18, 0x0C19, 0x0C1A, 0x0C1B, 0x0C1C, 0x0C1D, 0x0C1E,
0x0C1F, 0x0C20, 0x0C21, 0x0C22, 0x0C23, 0x0C24, 0x0C25, 0x0C26, 0x0C27, 0x0C28, 0x0C29, 0x0C2A, 0x0C2B, 0x0C2C, 0x0C2D, 0x0C2E, 0x0C2F, 0x0C30,
0x0C31, 0x0C32, 0x0C33, 0x0C34, 0x0C35, 0x0C36, 0x0C37, 0x0C38, 0x0C39, 0x0C3A, 0x0C3B, 0x0C3C, 0x0C3D, 0x0C3E, 0x7, 0x0E00, 0x0E01, 0x0E02,
0x0E03, 0x0E04, 0x0E05, 0x0E06, 0x0E07, 0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C, 0x0E0D, 0x0E0E, 0x0E0F, 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14,
0x0E15, 0x0E16, 0x0E17, 0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, 0x0E1F, 0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26,
0x0E27, 0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F, 0x0E30, 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37, 0x0E38,
0x0E39, 0x0E3A, 0x0E3B, 0x8, 0x1000, 0x1001, 0x1002, 0x1003, 0x1004, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009, 0x100A, 0x100B, 0x100C, 0x100D,
0x100E, 0x100F, 0x1010, 0x1011, 0x1012, 0x1013, 0x1014, 0x1015, 0x1016, 0x1017, 0x1018, 0x1019, 0x101A, 0x101B, 0x101C, 0x101D, 0x101E, 0x101F,
0x1020, 0x1021, 0x1022, 0x1023, 0x1024, 0x1025, 0x1026, 0x1027, 0x1028, 0x1029, 0x102A, 0x102B, 0x102C, 0x102D, 0x102E, 0x102F, 0x1030, 0x1031,
0x1032, 0x1033, 0x1034, 0x1035, 0x1036, 0x1037, 0x1038, 0x1039, 0x103A, 0x103B, 0x103C, 0x103D, 0x103E, 0x103F, 0x1040, 0x1041, 0x1042, 0x1043,
0x1044, 0x9, 0x1200, 0x1201, 0x1202, 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1208, 0x1209, 0x120A, 0x120B, 0x120C, 0x120D, 0x120E, 0x120F, 0x1210,
0x1211, 0x1212, 0x1213, 0x1214, 0x1215, 0x1216, 0x1217, 0x1218, 0x1219, 0x121A, 0x121B, 0x121C, 0x121D, 0x121E, 0x121F, 0x1220, 0x1221, 0x1222, 0x1223,
0x1224, 0x1225, 0x1226, 0x1227, 0x1228, 0x1229, 0x122A, 0x122B, 0x122C, 0x122D, 0x122E, 0x122F, 0x1230, 0x1231, 0x1232, 0x1233, 0x1234, 0x1235, 0x1236,
0x1237, 0x1238, 0x1239, 0x123A, 0x123B, 0x123C, 0x123D, 0x123E, 0x123F, 0x1240, 0x1241, 0x1242, 0x1243, 0x1244, 0xA, 0x1400, 0x1401, 0x1402, 0x1403,
0x1404, 0x1405, 0x1406, 0x1407, 0x1408, 0x1409, 0x140A, 0x140B, 0x140C, 0x140D, 0x140E, 0x140F, 0x1410, 0x1411, 0x1412, 0x1413, 0x1414, 0x1415, 0x1416,
0x1417, 0x1418, 0x1419, 0x141A, 0x141B, 0x141C, 0x141D, 0x141E, 0x141F, 0x1420, 0x1421, 0x1422, 0x1423, 0x1424, 0x1425, 0x1426, 0x1427, 0x1428, 0x1429,
0x142A, 0x142B, 0x142C, 0x142D, 0x142E, 0x142F, 0x1430, 0x1431, 0x1432, 0x1433, 0x1434, 0x1435, 0x1436, 0x1437, 0x1438, 0x1439, 0x143A, 0x143B, 0x143C,
0x143D, 0x143E, 0x143F, 0x1440, 0x1441, 0x1442, 0x1443, 0x1444, 0xB, 0x1600, 0x1601, 0x1602, 0x1603, 0x1604, 0x1605, 0x1606, 0x1607, 0x1608, 0x1609,
0x160A, 0x160B, 0x160C, 0x160D, 0x160E, 0x160F, 0x1610, 0x1611, 0x1612, 0x1613, 0x1614, 0x1615, 0x1616, 0x1617, 0x1618, 0x1619, 0x161A, 0x161B, 0x161C,
0x161D, 0x161E, 0x161F, 0x1620, 0x1621, 0x1622, 0x1623, 0x1624, 0x1625, 0x1626, 0x1627, 0x1628, 0x1629, 0x162A, 0x162B, 0x162C, 0x162D, 0x162E, 0x162F,
0x1630, 0x1631, 0x1632, 0x1633, 0x1634, 0x1635, 0x1636, 0x1637, 0x1638, 0x1639, 0x163A, 0x163B, 0x163C, 0x163D, 0x163E, 0x163F, 0x1640, 0x1641, 0x1642,
0x1643, 0x1644, 0x1645, 0x1646, 0x1647, 0x1648, 0x1649, 0x164A, 0x164B, 0x164C, 0x164D, 0xC, 0x1800, 0x1801, 0x1802, 0x1803, 0x1804, 0x1805, 0x1806,
0x1807, 0x1808, 0x1809, 0x180A, 0x180B, 0x180C, 0x180D, 0x180E, 0x180F, 0x1810, 0x1811, 0x1812, 0x1813, 0x1814, 0x1815, 0x1816, 0x1817, 0x1818, 0x1819,
0x181A, 0x181B, 0x181C, 0x181D, 0x181E, 0x181F, 0x1820, 0x1821, 0x1822, 0x1823, 0x1824, 0x1825, 0x1826, 0x1827, 0x1828, 0x1829, 0x182A, 0x182B, 0x182C,
0xD, 0x1A00, 0x1A01, 0x1A02, 0x1A03, 0x1A04, 0x1A05, 0x1A06, 0x1A07, 0x1A08, 0x1A09, 0x1A0A, 0x1A0B, 0x1A0C, 0x1A0D, 0x1A0E, 0x1A0F, 0x1A10, 0x1A11,
0x1A12, 0x1A13, 0x1A14, 0x1A15, 0x1A16, 0x1A17, 0x1A18, 0x1A19, 0x1A1A, 0x1A1B, 0x1A1C, 0x1A1D, 0x1A1E, 0x1A1F, 0x1A20, 0x1A21, 0x1A22, 0x1A23, 0x1A24,
0x1A25, 0x1A26, 0x1A27, 0x1A28, 0x1A29, 0x1A2A, 0x1A2B, 0x1A2C, 0x1A2D, 0x1A2E, 0x1A2F, 0x1A30, 0x1A31, 0x1A32, 0x1A33, 0x1A34, 0x1A35, 0xE, 0x1C00,
0x1C01, 0x1C02, 0x1C03, 0x1C04, 0x1C05, 0x1C06, 0x1C07, 0x1C08, 0x1C09, 0x1C0A, 0x1C0B, 0x1C0C, 0x1C0D, 0x1C0E, 0x1C0F, 0x1C10, 0x1C11, 0x1C12, 0x1C13,
0x1C14, 0x1C15, 0x1C16, 0x1C17, 0x1C18, 0x1C19, 0x1C1A, 0x1C1B, 0x1C1C, 0x1C1D, 0x1C1E, 0x1C1F, 0x1C20, 0x1C21, 0x1C22, 0x1C23, 0x1C24, 0x1C25, 0x1C26,
0x1C27, 0x1C28, 0x1C29, 0x1C2A, 0x1C2B, 0x1C2C, 0xF, 0x1E00, 0x1E01, 0x1E02, 0x1E03, 0x1E04, 0x1E05, 0x1E06, 0x1E07, 0x1E08, 0x1E09, 0x1E0A, 0x1E0B,
0x1E0C, 0x1E0D, 0x1E0E, 0x1E0F, 0x1E10, 0x1E11, 0x1E12, 0x1E13, 0x1E14, 0x1E15, 0x1E16, 0x1E17, 0x1E18, 0x1E19, 0x1E1A, 0x1E1B, 0x1E1C, 0x1E1D, 0x1E1E,
0x1E1F, 0x1E20, 0x1E21, 0x1E22, 0x1E23, 0x1E24, 0x1E25, 0x1E26, 0x1E27, 0x1E28, 0x1E29, 0x10, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006,
0x2007, 0x2008, 0x2009, 0x200A, 0x200B, 0x200C, 0x200D, 0x200E, 0x200F, 0x2010, 0x2011, 0x2012, 0x2013, 0x2014, 0x2015, 0x2016, 0x2017, 0x2018, 0x2019,
0x201A, 0x201B, 0x201C, 0x201D, 0x201E, 0x201F, 0x2020, 0x2021, 0x2022, 0x2023, 0x11, 0x2200, 0x2201, 0x2202, 0x2203, 0x2204, 0x2205, 0x2206, 0x2207,
0x2208, 0x2209, 0x220A, 0x220B, 0x220C, 0x220D, 0x220E, 0x220F, 0x2210, 0x2211, 0x2212, 0x2213, 0x2214, 0x2215, 0x2216, 0x2217, 0x2218, 0x2219, 0x221A,
0x221B, 0x221C, 0x12, 0x2402, 0x2403, 0x2409, 0x240D, 0x240F, 0x2410, 0x2413, 0x2414, 0x241C, 0x241D, 0x2425, 0x2426, 0x2427, 0x242C, 0x242F, 0x2431,
0x2432, 0x2435, 0x2436, 0x243C, 0x243E, 0x2442, 0x2443, 0x2444, 0x2446, 0x2447, 0x244A, 0x244C, 0x244E, 0x2451, 0x2455, 0x2457, 0x2458, 0x2459, 0x245A,
0x245B, 0x245E, 0x245F, 0x2461, 0x2463, 0x2467, 0x2468, 0x2469, 0x246A, 0x246C, 0x246D, 0x246E, 0x2472, 0x2474, 0x2475, 0x2477, 0x2478, 0x247A, 0x247B,
0x2480, 0x2481, 0x2484, 0x2486, 0x248D, 0x248E, 0x248F, 0x2491, 0x2493, 0x2495, 0x2498, 0x249D, 0x249F, 0x24A2, 0x24A3, 0x24A6, 0x24A9, 0x24AA, 0x24AB,
0x24AC, 0x24AD, 0x24AF, 0x24B1, 0x24B3, 0x24B4, 0x24B5, 0x24B8, 0x24BE, 0x24C4, 0x24C8, 0x24C9, 0x24CA, 0x24CB, 0x24CC, 0x24CD, 0x24CF, 0x24D1, 0x24D4,
0x24D7, 0x24D8, 0x24DB, 0x24DC, 0x24DD, 0x24E3, 0x24E4, 0x24E5, 0x24E6, 0x24E7, 0x24E9, 0x24EA, 0x24EB, 0x24EE, 0x24F0, 0x24F2, 0x24F4, 0x24F5, 0x24F6,
0x24F7, 0x24F9, 0x24FA, 0x24FD, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, 0x250B, 0x250C, 0x2518, 0x2519, 0x251B, 0x251D,
0x2520, 0x252D, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545,
0x2546, 0x2547, 0x2548, 0x2549, 0x2562, 0x13, 0x2601, 0x2604, 0x2605, 0x2606, 0x2607, 0x2608, 0x260A, 0x260B, 0x260C, 0x260E, 0x2611, 0x2612, 0x2615,
0x2616, 0x2617, 0x2618, 0x2619, 0x261A, 0x261B, 0x261E, 0x261F, 0x2620, 0x2621, 0x2622, 0x2623, 0x2624, 0x2628, 0x2629, 0x262A, 0x262B, 0x262D, 0x262E,
0x2630, 0x2633, 0x2634, 0x2637, 0x2638, 0x2639, 0x263A, 0x263B, 0x263D, 0x263F, 0x2640, 0x2641, 0x2645, 0x2648, 0x2649, 0x264B, 0x264D, 0x264F, 0x2650,
0x2652, 0x2653, 0x2654, 0x2656, 0x265C, 0x265D, 0x2660, 0x2662, 0x2664, 0x2665, 0x2666, 0x266B, 0x266F, 0x2670, 0x2671, 0x2673, 0x2676, 0x2679, 0x267C,
0x267D, 0x267E, 0x267F, 0x2682, 0x2683, 0x2685, 0x2687, 0x2688, 0x2689, 0x268A, 0x268B, 0x268C, 0x2690, 0x2692, 0x2694, 0x2696, 0x2697, 0x2699, 0x269A,
0x269B, 0x269C, 0x269E, 0x26A0, 0x26A1, 0x26A4, 0x26A5, 0x26A7, 0x26A8, 0x26AE, 0x26B0, 0x26B2, 0x26B6, 0x26B7, 0x26B9, 0x26BA, 0x26BB, 0x26BC, 0x26BD,
0x26BF, 0x26C0, 0x26C1, 0x26C2, 0x26C3, 0x26C5, 0x26C6, 0x26C7, 0x26CE, 0x26D0, 0x26D2, 0x26D3, 0x26D5, 0x26D6, 0x26D9, 0x26DA, 0x26DE, 0x26DF, 0x26E0,
0x26E1, 0x26E2, 0x26E8, 0x26EC, 0x26ED, 0x26EF, 0x26F1, 0x26F3, 0x26F8, 0x26FB, 0x26FC, 0x26FE, 0x26FF, 0x2700, 0x2701, 0x270D, 0x270E, 0x270F, 0x2710,
0x2711, 0x2712, 0x2713, 0x2714, 0x2715, 0x2716, 0x2717, 0x271A, 0x271C, 0x271E, 0x271F, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2727, 0x2728,
0x2729, 0x272A, 0x272B, 0x272C, 0x272E, 0x272F, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x274A, 0x274B, 0x274C, 0x274D, 0x274E, 0x274F, 0x2750, 0x2751,
0x2752, 0x2753, 0x2754, 0x2755, 0x2756, 0x2757, 0x2758, 0x2759, 0x275A, 0x275B, 0x275C, 0x275D, 0x275E, 0x275F, 0x2760, 0x2761, 0x14, 0x0001, 0x0002, 0x0003,
0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016,
0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C,
0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062,
0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075,
0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088,
0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B,
0x009C, 0x009D, 0x009E, 0x009F, 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE,
0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, 0x00C0, 0x00C1,
0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4,
0x00D5, 0x00D6, 0x00D7, 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F8, 0x00F9, 0x00FA,
0x00FB, 0x15, 0x2800, 0x2801, 0x2802, 0x2803, 0x2804, 0x2805, 0x2806, 0x2807, 0x2808, 0x2809, 0x280A, 0x280B, 0x280C, 0x280D, 0x280E, 0x280F, 0x2810,
0x2811, 0x2812, 0x2813, 0x2814, 0x2815, 0x2816, 0x2817, 0x2818, 0x2819, 0x281A, 0x281B, 0x281C, 0x281D, 0x281E, 0x281F, 0x2820
};
void EngCheckedChanged(object sender, EventArgs e)
{
update_easychat();
}
void FreCheckedChanged(object sender, EventArgs e)
{
update_easychat();
}
void GerCheckedChanged(object sender, EventArgs e)
{
update_easychat();
}
void ItaCheckedChanged(object sender, EventArgs e)
{
update_easychat();
}
void EspCheckedChanged(object sender, EventArgs e)
{
update_easychat();
}
void JapCheckedChanged(object sender, EventArgs e)
{
update_easychat();
}
void ECT_editorDragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
void ECT_editorDragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
Load_ECT(files[0]);
}
}
}

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>

File diff suppressed because it is too large Load Diff

2555
wc3_tool/WC3/ECT_pkedit.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

159
wc3_tool/WC3/ECT_pkedit.cs Normal file
View File

@ -0,0 +1,159 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 04/05/2016
* Time: 13:42
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WC3_TOOL
{
/// <summary>
/// Description of ECT_pkedit.
/// </summary>
public partial class ECT_pkedit : Form
{
public ECT_pkedit(int index)
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
pid.Maximum = 0xFFFFFFFF;
pk = 0x34+(index*44);
populate();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
int pk;
//byte nickname;
public UInt32 IV32 { get { return BitConverter.ToUInt32(ECT_editor.ectfile.Data, pk+0x18); } set { BitConverter.GetBytes((UInt32)value).CopyTo(ECT_editor.ectfile.Data, 0x18); } }
public int IV_HP { get { return (int)(IV32 >> 00) & 0x1F; } set { IV32 = (uint)((IV32 & ~(0x1F << 00)) | (uint)((value > 31 ? 31 : value) << 00)); } }
public int IV_ATK { get { return (int)(IV32 >> 05) & 0x1F; } set { IV32 = (uint)((IV32 & ~(0x1F << 05)) | (uint)((value > 31 ? 31 : value) << 05)); } }
public int IV_DEF { get { return (int)(IV32 >> 10) & 0x1F; } set { IV32 = (uint)((IV32 & ~(0x1F << 10)) | (uint)((value > 31 ? 31 : value) << 10)); } }
public int IV_SPE { get { return (int)(IV32 >> 15) & 0x1F; } set { IV32 = (uint)((IV32 & ~(0x1F << 15)) | (uint)((value > 31 ? 31 : value) << 15)); } }
public int IV_SPA { get { return (int)(IV32 >> 20) & 0x1F; } set { IV32 = (uint)((IV32 & ~(0x1F << 20)) | (uint)((value > 31 ? 31 : value) << 20)); } }
public int IV_SPD { get { return (int)(IV32 >> 25) & 0x1F; } set { IV32 = (uint)((IV32 & ~(0x1F << 25)) | (uint)((value > 31 ? 31 : value) << 25)); } }
public int IV_Ability { get { return (int)((IV32 >> 31) & 1); } set { IV32 = (IV32 & 0x7FFFFFFF) | (value == 1 ? 0x80000000 : 0); } }
public byte PPUP { get { return ECT_editor.ectfile.Data[pk+0xD]; } set { ECT_editor.ectfile.Data[pk+0xD] = value; } }
public int PPUP_1 { get { return (int)(PPUP >> 00) & 0x03; } set { PPUP = (byte)((PPUP & ~(0x03 << 00)) | (byte)((value > 3 ? 3 : value) << 00)); } }
public int PPUP_2 { get { return (int)(PPUP >> 02) & 0x03; } set { PPUP = (byte)((PPUP & ~(0x03 << 02)) | (byte)((value > 3 ? 3 : value) << 02)); } }
public int PPUP_3 { get { return (int)(PPUP >> 04) & 0x03; } set { PPUP = (byte)((PPUP & ~(0x03 << 04)) | (byte)((value > 3 ? 3 : value) << 04)); } }
public int PPUP_4 { get { return (int)(PPUP >> 06) & 0x03; } set { PPUP = (byte)((PPUP & ~(0x03 << 06)) | (byte)((value > 3 ? 3 : value) << 06)); } }
void populate()
{
item_box.SelectedIndex = BitConverter.ToUInt16( ECT_editor.ectfile.getData(pk+0x2, 2), 0);
namebox.Text = PKHeX.PKM.getG3Str(ECT_editor.ectfile.getData(pk+0x20, 11), jap_check.Checked);
move1.SelectedIndex = BitConverter.ToUInt16( ECT_editor.ectfile.getData(pk+0x4, 2), 0);
move2.SelectedIndex = BitConverter.ToUInt16( ECT_editor.ectfile.getData(pk+0x6, 2), 0);
move3.SelectedIndex = BitConverter.ToUInt16( ECT_editor.ectfile.getData(pk+0x8, 2), 0);
move4.SelectedIndex = BitConverter.ToUInt16( ECT_editor.ectfile.getData(pk+0xA, 2), 0);
pp1.Value = PPUP_1;
pp2.Value = PPUP_2;
pp3.Value = PPUP_3;
pp4.Value = PPUP_4;
level.Value = ECT_editor.ectfile.Data[pk+0x0C];
friendship.Value = ECT_editor.ectfile.Data[pk+0x2B];
otid.Value = BitConverter.ToUInt16( ECT_editor.ectfile.getData(pk+0x14, 2), 0);
otsid.Value = BitConverter.ToUInt16( ECT_editor.ectfile.getData(pk+0x16, 2), 0);
pid.Value = BitConverter.ToUInt32( ECT_editor.ectfile.getData(pk+0x1c, 4), 0);
ev1.Value = ECT_editor.ectfile.Data[pk+0x0E];
ev2.Value = ECT_editor.ectfile.Data[pk+0x0F];
ev3.Value = ECT_editor.ectfile.Data[pk+0x10];
ev4.Value = ECT_editor.ectfile.Data[pk+0x11];
ev5.Value = ECT_editor.ectfile.Data[pk+0x12];
ev6.Value = ECT_editor.ectfile.Data[pk+0x13];
iv1.Value = IV_HP;
iv2.Value = IV_ATK;
iv3.Value = IV_DEF;
iv4.Value = IV_SPE;
iv5.Value = IV_SPA;
iv6.Value = IV_SPD;
ability.Value = IV_Ability;
}
void save_edits()
{
ECT_editor.ectfile.setData(BitConverter.GetBytes((UInt16)item_box.SelectedIndex).ToArray(),pk+0x2);
ECT_editor.ectfile.setData(PKHeX.PKM.setG3Str(namebox.Text, jap_check.Checked), pk+0x20);
ECT_editor.ectfile.setData(BitConverter.GetBytes((UInt16)move1.SelectedIndex).ToArray(),pk+0x4);
ECT_editor.ectfile.setData(BitConverter.GetBytes((UInt16)move2.SelectedIndex).ToArray(),pk+0x6);
ECT_editor.ectfile.setData(BitConverter.GetBytes((UInt16)move3.SelectedIndex).ToArray(),pk+0x8);
ECT_editor.ectfile.setData(BitConverter.GetBytes((UInt16)move4.SelectedIndex).ToArray(),pk+0xA);
PPUP_1 = (int)pp1.Value;
PPUP_2 = (int)pp1.Value;
PPUP_3 = (int)pp1.Value;
PPUP_4 = (int)pp1.Value;
ECT_editor.ectfile.Data[pk+0x0C] = (byte) level.Value;
ECT_editor.ectfile.Data[pk+0x2B] = (byte) friendship.Value;
ECT_editor.ectfile.setData(BitConverter.GetBytes((UInt16)otid.Value).ToArray(), pk+0x14);
ECT_editor.ectfile.setData(BitConverter.GetBytes((UInt16)otsid.Value).ToArray(), pk+0x16);
ECT_editor.ectfile.setData(BitConverter.GetBytes((UInt32)pid.Value).ToArray(), pk+0x1c);
ECT_editor.ectfile.Data[pk+0x0E] = (byte) ev1.Value;
ECT_editor.ectfile.Data[pk+0x0F] = (byte) ev2.Value;
ECT_editor.ectfile.Data[pk+0x10] = (byte) ev3.Value;
ECT_editor.ectfile.Data[pk+0x11] = (byte) ev4.Value;
ECT_editor.ectfile.Data[pk+0x12] = (byte) ev5.Value;
ECT_editor.ectfile.Data[pk+0x13] = (byte) ev6.Value;
IV_HP = (int)iv1.Value;
IV_ATK = (int)iv1.Value;
IV_DEF = (int)iv3.Value;
IV_SPE = (int)iv4.Value;
IV_SPA = (int)iv5.Value;
IV_SPD = (int)iv6.Value;
IV_Ability = (int)ability.Value;
}
void CancelClick(object sender, EventArgs e)
{
this.Close();
}
void SaveClick(object sender, EventArgs e)
{
save_edits();
this.Close();
}
void Jap_checkCheckedChanged(object sender, EventArgs e)
{
namebox.Text = PKHeX.PKM.getG3Str(ECT_editor.ectfile.getData(pk+0x20, 11), jap_check.Checked);
}
}
}

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>

108
wc3_tool/WC3/FILEIO.cs Normal file
View File

@ -0,0 +1,108 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 28/04/2016
* Time: 21:23
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WC3_TOOL
{
/// <summary>
/// Description of FILEIO.
/// </summary>
public class FileIO
{
/// <summary>
/// Reads data into a complete array, throwing an EndOfStreamException
/// if the stream runs out of data first, or if an IOException
/// naturally occurs.
/// </summary>
/// <param name="stream">The stream to read data from</param>
/// <param name="data">The array to read bytes into. The array
/// will be completely filled from the stream, so an appropriate
/// size must be given.</param>
private static void ReadWholeArray (Stream stream, ref byte[] data)
{
int offset=0;
int remaining = data.Length;
while (remaining > 0)
{
int read = stream.Read(data, offset, remaining);
if (read <= 0)
throw new EndOfStreamException
(String.Format("End of stream reached with {0} bytes left to read", remaining));
remaining -= read;
offset += read;
}
}
private static void _read_data(ref byte [] buffer, string path)
{
System.IO.FileStream saveFile;
saveFile = new FileStream(path, FileMode.Open);
if (saveFile.Length < 1){
MessageBox.Show("Invalid file length", "Error");
return;
}
buffer = new byte[saveFile.Length];
//MessageBox.Show(buffer.Length.ToString());
ReadWholeArray(saveFile, ref buffer);
saveFile.Close();
return;
}
public static int load_file(ref byte[] buffer, ref string path, string filter)
{
if (path == null)
{
OpenFileDialog openFD = new OpenFileDialog();
//openFD.InitialDirectory = "c:\\";
openFD.Filter = filter;
DialogResult result = openFD.ShowDialog();
if ( result == DialogResult.OK)
{
#region filename
path = openFD.FileName;
//MessageBox.Show(path.ToString());
#endregion
_read_data(ref buffer, path);
//MessageBox.Show(buffer.Length.ToString());
return buffer.Length;
}else{
return -1;
}
}else
{
_read_data(ref buffer, path);
//MessageBox.Show(buffer.Length.ToString());
return buffer.Length;
}
}
public static void save_data(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");
}
}
}
}

View File

@ -0,0 +1,755 @@
<?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>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="ROM_E_GiveEgg_Deu" type="System.Byte[], mscorlib">
<value>
uFleaAgr5AG7AGheaAgMJt1AhgAh3UAGALsBj15oCCnkAbqaXmgIalq9+l5oCGZtMXIBMmwCalq9oV9o
CGZtbAJ6rADN3UDS3UD/Id1AAQC7AdxeaAgh3UACALsB4l5oCCHdQAMAuwHoXmgIId1ABAC7Ae5eaAgh
3UAFALsB9F5oCAN7AQI5AAN7AgI5AAN7AwI5AAN7BAI5AAN7BQI5AAO+1eLf2bgA2NXn5wDY6QDY1ecA
wb/Cv8PHrv7Bv829wr/Cv8gA1tni6eju6ADc1eforfvD4QDKycUbx8nIrr2/yM6/zADr1ebo2ej+2d3i
AMHZ59fc2eLfANXp2gDY3dfcrQC/3eL6ysnFG8fJyK6/w6v6vN3o6NkA6ObV3eLd2ebZANjV5wDKycUb
x8nI+uHd6ADG3dnW2QDp4tgAzePm29rV4Oit/8ncuADY6QDc1efoAN/Z3eLZ4gDK4NXo7gDd4gDY2d3i
2eH+ztnV4av6vN3o6NkA3+Ph4dkA693Z2NnmuADi1dfc2NnhANjp+tnd4gDKycUbx8nIANXp2gDZ3eLZ
4QDKvfrb2eDV29nm6ADc1eforf8=
</value>
</data>
<data name="ROM_E_GiveEgg_Eng" type="System.Byte[], mscorlib">
<value>
uD1NZwgr5AG7AExNZwgMJt1AhgAh3UAGALsBc01nCCnkAbp+TWcIalq93k1nCGZtMXIBMmwCalq9ak5n
CGZtbAJ6rADN3UDS3UD/Id1AAQC7AcBNZwgh3UACALsBxk1nCCHdQAMAuwHMTWcIId1ABAC7AdJNZwgh
3UAFALsB2E1nCAN7AQI5AAN7AgI5AAN7AwI5AAN7BAI5AAN7BQI5AAPO3NXi3wDt4+kA2uPmAOnn3eLb
AOjc2QDH083Ov8zT/sHDwM4Aze3n6NnhrfvA5uPhAOjc2QDKycUbx8nIAL2/yM6/zADr2f7c1erZANUA
293a6K6u1QDKycUbx8nIAL/Bwav7yuDZ1efZAObV3efZAN3oAOvd6NwA4OPq2QDV4tj+393i2OLZ5+et
/8ncuADt4+nmAOTV5ujtANXk5NnV5ucA6OMA1tkA2ung4K37yuDZ1efZANfj4dkA59nZAOHZANXa6Nnm
AOfo4+bd4tv+1QDKycUbx8nIAOPiANUAyr2t/w==
</value>
</data>
<data name="ROM_E_GiveEgg_Esp" type="System.Byte[], mscorlib">
<value>
uINyZwgr5AG7AJJyZwgMJt1AhgAh3UAGALsBuXJnCCnkAbrEcmcIalq9JHNnCGZtMXIBMmwCalq9rHNn
CGZtbAJ6rADN3UDS3UD/Id1AAQC7AQZzZwgh3UACALsBDHNnCCHdQAMAuwESc2cIId1ABAC7ARhzZwgh
3UAFALsBHnNnCAN7AQI5AAN7AgI5AAN7AwI5AAN7BAI5AAN7BQI5AAPB5tXX3dXnAOTj5gDp59XmANng
AOfd5+jZ4dX+2NngAMy/wbvGyQDHw83Ov8zDyc3JrfvO2eLZ4ePnAOniAMy/wbvGyQDY2eAAvb/IzszJ
/srJxRvHycjwAFLp4gDCz7/QyQDKycUbx8nIq/u96W/Y1eDjANfj4gDo1dfo4wDtANfV5t0p463/ytXm
2dfZAOXp2QDo6QDZ5end5OMA2efoF/7X4+Hk4Nno46370OnZ4OrZANfp1eLY4wDY2d7Z5wDV4Nsn4gDK
ycUbx8nI/tniANngAMq9rf8=
</value>
</data>
<data name="ROM_E_GiveEgg_Fre" type="System.Byte[], mscorlib">
<value>
uMKMZwgr5AG7ANGMZwgMJt1AhgAh3UAGALsB+IxnCCnkAboDjWcIalq9Y41nCGZtMXIBMmwCalq9z41n
CGZtbAJ6rADN3UDS3UD/Id1AAQC7AUWNZwgh3UACALsBS41nCCHdQAMAuwFRjWcIId1ABAC7AVeNZwgh
3UAFALsBXY1nCAN7AQI5AAN7AgI5AAN7AwI5AAN7BAI5AAN7BQI5AAPH2ebX3QDYtOno3eDd59nmAODZ
AOft5+ga4dn+vbu+v7vPAMfTzc6t+8jj6ecA1erj4ucA6eIAyb/PwADk4+nmAOrj6eer+7/g2erZ7q7g
2QDV6tnXANXh4+nmANno/tvZ4ujd4ODZ5+fZrf/J3LgA4LQb5end5NkA2efoAOTg2d3i2a37zNnq2eLZ
7gDl6dXi2ADq4+nnANXp5tnuAObV4tsb/uniAMrJxRvHycgA2NXi5wDq4+jm2QDKva3/
</value>
</data>
<data name="ROM_E_GiveEgg_Ita" type="System.Byte[], mscorlib">
<value>
uPUTZwgr5AG7AAQUZwgMJt1AhgAh3UAGALsBKxRnCCnkAbo2FGcIalq9lhRnCGZtMXIBMmwCalq9GhVn
CGZtbAJ6rADN3UDS3UD/Id1AAQC7AXgUZwgh3UACALsBfhRnCCHdQAMAuwGEFGcIId1ABAC7AYoUZwgh
3UAFALsBkBRnCAN7AQI5AAN7AgI5AAN7AwI5AAN7BAI5AAN7BQI5AAPB5tXu3dkA5NnmAOnn1ebZAN3g
AM3d5+jZ4dX+vsnIyQDNv8HMv87Jrfu71tbd1eHjAOniAObZ29Xg4wDk2eYA6NkA2NUA6eL+vb/IzszJ
AMrJxRvHyci4AOniAM/J0MkAysnFG8fJyKv7zubV6OjV4OMA1+PiAOjV4ujjANXh4+bZq//I4+IA3NXd
AOTdJgDk4+fo4wDi2eDg1QDo6dX+5+Xp1djm1a37zuPm4tUA1QDo5uPq1ebh3QDY4+TjANXq2eb+2Nnk
4+fd6NXo4wDp4uMA4wDk3Sb6ysnFG8fJyADi2eAAyr2t/w==
</value>
</data>
<data name="ROM_E_GiveEgg_Jap" type="System.Byte[], mscorlib">
<value>
uF/MXwgr5AG7AG7MXwgMJt1AgwAh3UAGALsBlcxfCCnkAbqgzF8Ialq9AM1fCGZtMXIBMmwCalq9Xs1f
CGZtbAJ6rADN3UDS3UD/Id1AAQC7AeLMXwgh3UACALsB6MxfCCHdQAMAuwHuzF8IId1ABAC7AfTMXwgh
3UAFALsB+sxfCAN7AQI5AAN7AgI5AAN7AwI5AAN7BAI5AAN7BQI5AAMcDDgVBQgoIxkALQA7KCYD/gIQ
QQcAASg3FAMAOzwCHw2r+0UDQACfWXN+Xn5grgAGJ/4KGQCfWXN+GQAQHzst+p16j35kAAIQDB8Nq/tB
Aj0WAA9BExP+CEELAqv/BSQAEyMRN/4CUEsCGQAmA0QNGPufWXN+LQCbX1p+FgABPgkTBif+IwMCEUUA
BQoMCEELAv8=
</value>
</data>
<data name="ROM_FR_GiveEgg_Deu" type="System.Byte[], mscorlib">
<value>
uA10SAgr2AO7ABx0SAgMJrVAgwAhtUAGALsBQ3RICCnYA7pOdEgIalq9rnRICGZtMQIBMmwCalq9VXVI
CGZtbAJ6rADNtUDStUD/IbVAAQC7AZB0SAghtUACALsBlnRICCG1QAMAuwGcdEgIIbVABAC7AaJ0SAgh
tUAFALsBqHRICAN7AQI5AAN7AgI5AAN7AwI5AAN7BAI5AAN7BQI5AAO+1eLf2bgA2NXn5wDY6QDY1ecA
wb/Cv8PHrv7Bv829wr/Cv8gA1tni6eju6ADc1eforfvD4QDKycUbx8nIrr2/yM6/zADr1ebo2ej+2d3i
AMHZ59fc2eLfANXp2gDY3dfcrQC/3eL6ysnFG8fJyK6/w6v6vN3o6NkA6ObV3eLd2ebZANjV5wDKycUb
x8nI+uHd6ADG3dnW2QDp4tgAzePm29rV4Oit/8ncuADY6QDc1efoAN/Z3eLZ4gDK4NXo7gDd4gDY2d3i
2eH+ztnV4av6vN3o6NkA3+Ph4dkA693Z2NnmuADi1dfc2NnhANjp+tnd4gDKycUbx8nIANXp2gDZ3eLZ
4QDKvfrb2eDV29nm6ADc1eforf8=
</value>
</data>
<data name="ROM_FR_GiveEgg_Eng" type="System.Byte[], mscorlib">
<value>
uBWPSAgr2AO7ACSPSAgMJrVAgwAhtUAGALsBS49ICCnYA7pWj0gIalq9to9ICGZtMQIBMmwCalq9Q5BI
CGZtbAJ6rADNtUDStUD/IbVAAQC7AZiPSAghtUACALsBno9ICCG1QAMAuwGkj0gIIbVABAC7AaqPSAgh
tUAFALsBsI9ICAN7AQI5AAN7AgI5AAN7AwI5AAN7BAI5AAN7BQI5AAPO3NXi3wDt4+kA2uPmAOnn3eLb
AOjc2QDH083Ov8zT/sHDwM4Aze3n6NnhrfvA5uPhAOjc2QDKycUbx8nIAL2/yM6/zADr2f7c1erZANUA
293a6ACuANUAysnFG8fJyAC/wcGr+8rg2dXn2QDm1d3n2QDd6ADr3ejcAODj6tkA1eLY/t/d4tji2efn
rf/J3LgA7ePp5gDk1ebo7QDV5OTZ1ebnAOjjANbZANrp4OCt+8rg2dXn2QDX4+HZAOfZ2QDh2QDV2ujZ
5gDn6OPm3eLb/tUAysnFG8fJyADj4gDVAMq9rf8=
</value>
</data>
<data name="ROM_FR_GiveEgg_Esp" type="System.Byte[], mscorlib">
<value>
uEv3Rwgr2AO7AFr3RwgMJrVAgwAhtUAGALsBgfdHCCnYA7qM90cIalq97PdHCGZtMQIBMmwCalq9dPhH
CGZtbAJ6rADNtUDStUD/IbVAAQC7Ac73RwghtUACALsB1PdHCCG1QAMAuwHa90cIIbVABAC7AeD3Rwgh
tUAFALsB5vdHCAN7AQI5AAN7AgI5AAN7AwI5AAN7BAI5AAN7BQI5AAPB5tXX3dXnAOTj5gDp59XmANng
AOfd5+jZ4dX+2NngAMy/wbvGyQDHw83Ov8zDyc3JrfvO2eLZ4ePnAOniAMy/wbvGyQDY2eAAvb/IzszJ
/srJxRvHycjwAFLp4gDCz7/QyQDKycUbx8nIq/u96W/Y1eDjANfj4gDo1dfo4wDtANfV5t0p463/ytXm
2dfZAOXp2QDo6QDZ5end5OMA2efoF/7X4+Hk4Nno46370OnZ4OrZANfp1eLY4wDY2d7Z5wDV4Nsn4gDK
ycUbx8nI/tniANngAMq9rf8=
</value>
</data>
<data name="ROM_FR_GiveEgg_Fre" type="System.Byte[], mscorlib">
<value>
uObvRwgr2AO7APXvRwgMJrVAgwAhtUAGALsBHPBHCCnYA7on8EcIalq9h/BHCGZtMQIBMmwCalq98/BH
CGZtbAJ6rADNtUDStUD/IbVAAQC7AWnwRwghtUACALsBb/BHCCG1QAMAuwF18EcIIbVABAC7AXvwRwgh
tUAFALsBgfBHCAN7AQI5AAN7AgI5AAN7AwI5AAN7BAI5AAN7BQI5AAPH2ebX3QDYtOno3eDd59nmAODZ
AOft5+ga4dn+vbu+v7vPAMfTzc6t+8jj6ecA1erj4ucA6eIAyb/PwADk4+nmAOrj6eer+7/g2erZ7q7g
2QDV6tnXANXh4+nmANno/tvZ4ujd4ODZ5+fZrf/J3LgA4LQb5end5NkA2efoAOTg2d3i2a37zNnq2eLZ
7gDl6dXi2ADq4+nnANXp5tnuAObV4tsb/uniAMrJxRvHycgA2NXi5wDq4+jm2QDKva3/
</value>
</data>
<data name="ROM_FR_GiveEgg_Ita" type="System.Byte[], mscorlib">
<value>
uH3JRwgr2AO7AIzJRwgMJrVAgwAhtUAGALsBs8lHCCnYA7q+yUcIalq9HspHCGZtMQIBMmwCalq9ospH
CGZtbAJ6rADNtUDStUD/IbVAAQC7AQDKRwghtUACALsBBspHCCG1QAMAuwEMykcIIbVABAC7ARLKRwgh
tUAFALsBGMpHCAN7AQI5AAN7AgI5AAN7AwI5AAN7BAI5AAN7BQI5AAPB5tXu3dkA5NnmAOnn1ebZAN3g
AM3d5+jZ4dX+vsnIyQDNv8HMv87Jrfu71tbd1eHjAOniAObZ29Xg4wDk2eYA6NkA2NUA6eL+vb/IzszJ
AMrJxRvHyci4AOniAM/J0MkAysnFG8fJyKv7zubV6OjV4OMA1+PiAOjV4ujjANXh4+bZq//I4+IA3NXd
AOTdJgDk4+fo4wDi2eDg1QDo6dX+5+Xp1djm1a37zuPm4tUA1QDo5uPq1ebh3QDY4+TjANXq2eb+2Nnk
4+fd6NXo4wDp4uMA4wDk3Sb6ysnFG8fJyADi2eAAyr2t/w==
</value>
</data>
<data name="ROM_FR_GiveEgg_Jap" type="System.Byte[], mscorlib">
<value>
uEeWRAgr2AO7AFaWRAgMJrVAgwAhtUAGALsBfZZECCnYA7qIlkQIalq96JZECGZtMQIBMmwCalq9RpdE
CGZtbAJ6rADNtUDStUD/IbVAAQC7AcqWRAghtUACALsB0JZECCG1QAMAuwHWlkQIIbVABAC7AdyWRAgh
tUAFALsB4pZECAN7AQI5AAN7AgI5AAN7AwI5AAN7BAI5AAN7BQI5AAMcDDgVBQgoIxkALQA7KCYD/gIQ
QQcAASg3FAMAOzwCHw2r+0UDQACfWXN+Xn5grgAGJ/4KGQCfWXN+GQAQHzst+p16j35kAAIQDB8Nq/tB
Aj0WAA9BExP+CEELAqv/BSQAEyMRN/4CUEsCGQAmA0QNGPufWXN+LQCbX1p+FgABPgkTBif+IwMCEUUA
BQoMCEELAv8=
</value>
</data>
<data name="ROM_E_GiveEgg_Deu_4moves" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIK+QBuwA7AAAIDCbdQIYAId1ABgC7AWMAAAgp5AG6bwAACGpavbgEAAAIK+QBuwBlAAAI
DCbdQIYAId1ABgC7AY0AAAgp5AG6mQAACGpavUoBAAhmbTFyATJsAv8m3UCGACHdQAYAuwGNAAAIKeQB
upkAAAhqWr1KAQAIZm0xcgEybAL/alq98wEACGZtbAL/eqwAzd1A0t1A/yHdQAEAuwHcAAAIId1AAgC7
AfIAAAgh3UADALsBCAEACCHdQAQAuwEeAQAIId1ABQC7ATQBAAgD/3sBADcAewEBOAB7AQI5AHsBAzoA
A/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMDOgAD/3sEADcAewQBOAB7BAI5
AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/vtXi39m4ANjV5+cA2OkA2NXnAMG/wr/Dx67+wb/N
vcK/wr/IANbZ4uno7ugA3NXn6K37w+EAysnFG8fJyK69v8jOv8wA69Xm6Nno/tnd4gDB2efX3Nni3wDV
6doA2N3X3K0Av93i+srJxRvHyciuv8Or+rzd6OjZAOjm1d3i3dnm2QDY1ecAysnFG8fJyPrh3egAxt3Z
1tkA6eLYAM3j5tva1eDorf8A/8ncuADY6QDc1efoAN/Z3eLZ4gDK4NXo7gDd4gDY2d3i2eH+ztnV4av6
vN3o6NkA3+Ph4dkA693Z2NnmuADi1dfc2NnhANjp+tnd4gDKycUbx8nIANXp2gDZ3eLZ4QDKvfrb2eDV
29nm6ADc1eforf8A////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_E_GiveEgg_Deu_4moves_kill" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIDCbdQIYAId1ABgC7AVQAAAi6YAAACGpavREBAAhmbTFyATJsDf8m3UCGACHdQAYAuwFU
AAAIumAAAAhqWr0RAQAIZm0xcgEybA3/alq9ugEACGZtbAL/eqwAzd1A0t1A/yHdQAEAuwGjAAAIId1A
AgC7AbkAAAgh3UADALsBzwAACCHdQAQAuwHlAAAIId1ABQC7AfsAAAgD/3sBADcAewEBOAB7AQI5AHsB
AzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMDOgAD/3sEADcAewQBOAB7
BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/vtXi39m4ANjV5+cA2OkA2NXnAMG/wr/Dx67+
wb/NvcK/wr/IANbZ4uno7ugA3NXn6K37w+EAysnFG8fJyK69v8jOv8wA69Xm6Nno/tnd4gDB2efX3Nni
3wDV6doA2N3X3K0Av93i+srJxRvHyciuv8Or+rzd6OjZAOjm1d3i3dnm2QDY1ecAysnFG8fJyPrh3egA
xt3Z1tkA6eLYAM3j5tva1eDorf8A/8ncuADY6QDc1efoAN/Z3eLZ4gDK4NXo7gDd4gDY2d3i2eH+ztnV
4av6vN3o6NkA3+Ph4dkA693Z2NnmuADi1dfc2NnhANjp+tnd4gDKycUbx8nIANXp2gDZ3eLZ4QDKvfrb
2eDV29nm6ADc1eforf8A////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_E_GiveEgg_Eng_4moves" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIK+QBuwA7AAAIDCbdQIYAId1ABgC7AWMAAAgp5AG6bwAACGpavSABAAhmbTFyATJsAv8m
3UCGACHdQAYAuwFjAAAIKeQBum8AAAhqWr0gAQAIZm0xcgEybAL/alq9rwEACGZtbAL/eqwAzd1A0t1A
/yHdQAEAuwGyAAAIId1AAgC7AcgAAAgh3UADALsB3gAACCHdQAQAuwH0AAAIId1ABQC7AQoBAAgD/3sB
ADcAewEBOAB7AQI5AHsBAzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMD
OgAD/3sEADcAewQBOAB7BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/ztzV4t8A7ePpANrj
5gDp593i2wDo3NkAx9PNzr/M0/7Bw8DOAM3t5+jZ4a37wObj4QDo3NkAysnFG8fJyAC9v8jOv8wA69n+
3NXq2QDVANvd2ugArgDVAMrJxRvHycgAv8HBq/vK4NnV59kA5tXd59kA3egA693o3ADg4+rZANXi2P7f
3eLY4tnn563/AP/J3LgA7ePp5gDk1ebo7QDV5OTZ1ebnAOjjANbZANrp4OCt+8rg2dXn2QDX4+HZAOfZ
2QDh2QDV2ujZ5gDn6OPm3eLb/tUAysnFG8fJyADj4gDVAMq9rf8A////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_E_GiveEgg_Eng_4moves_kill" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIDCbdQIYAId1ABgC7AVQAAAi6YAAACGpavREBAAhmbTFyATJsDf8m3UCGACHdQAYAuwFU
AAAIumAAAAhqWr0RAQAIZm0xcgEybA3/alq9mwEACGZtbAL/eqwAzd1A0t1A/yHdQAEAuwGjAAAIId1A
AgC7AbkAAAgh3UADALsBzwAACCHdQAQAuwHlAAAIId1ABQC7AfsAAAgD/3sBADcAewEBOAB7AQI5AHsB
AzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMDOgAD/3sEADcAewQBOAB7
BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/webV193V5wDk4+YA6efV5gDZ4ADn3efo2eHV
/tjZ4ADMv8G7xskAx8PNzr/Mw8nNya37ztni2eHj5wDp4gDMv8G7xskA2NngAL2/yM7Myf7KycUbx8nI
8ABS6eIAws+/0MkAysnFG8fJyKv7velv2NXg4wDX4+IA6NXX6OMA7QDX1ebdKeOt/wD/ytXm2dfZAOXp
2QDo6QDZ5end5OMA2efoF/7X4+Hk4Nno46370OnZ4OrZANfp1eLY4wDY2d7Z5wDV4Nsn4gDKycUbx8nI
/tniANngAMq9rf8AuAQAAAgMJt1AhgAh3UAGALsBPAIACLpIAgAIalq9+QIACGZtMXIBMmwN/ybdQIYA
Id1ABgC7ATwCAAi6SAIACGpavfkCAAhmbTFyATJsDf9qWr2IAwAIZm1sAv96rADN3UDS3UD/Id1AAQC7
AYsCAAgh3UACALsBoQIACCHdQAMAuwG3AgAIId1ABAC7Ac0CAAgh3UAFALsB4wIACAP/ewEANwB7AQE4
AHsBAjkAewEDOgAD/3sCADcAewIBOAB7AgI5AHsCAzoAA/97AwA3AHsDATgAewMCOQB7AwM6AAP/ewQA
NwB7BAE4AHsEAjkAewQDOgAD/3sFADcAewUBOAB7BQI5AHsFAzoAA//O3NXi3wDt4+kA2uPmAOnn3eLb
AOjc2QDH083Ov8zT/sHDwM4Aze3n6NnhrfvA5uPhAOjc2QDKycUbx8nIAL2/yM6/zADr2f7c1erZANUA
293a6ACuANUAysnFG8fJyAC/wcGr+8rg2dXn2QDm1d3n2QDd6ADr3ejcAODj6tkA1eLY/t/d4tji2efn
rf8A/8ncuADt4+nmAOTV5ujtANXk5NnV5ucA6OMA1tkA2ung4K37yuDZ1efZANfj4dkA59nZAOHZANXa
6NnmAOfo4+bd4tv+1QDKycUbx8nIAOPiANUAyr2t/wD//////////w==
</value>
</data>
<data name="ROM_E_GiveEgg_Esp_4moves" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIK+QBuwA7AAAIDCbdQIYAId1ABgC7AWMAAAgp5AG6bwAACGpavSABAAhmbTFyATJsAv8m
3UCGACHdQAYAuwFjAAAIKeQBum8AAAhqWr0gAQAIZm0xcgEybAL/alq9qgEACGZtbAL/eqwAzd1A0t1A
/yHdQAEAuwGyAAAIId1AAgC7AcgAAAgh3UADALsB3gAACCHdQAQAuwH0AAAIId1ABQC7AQoBAAgD/3sB
ADcAewEBOAB7AQI5AHsBAzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMD
OgAD/3sEADcAewQBOAB7BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/webV193V5wDk4+YA
6efV5gDZ4ADn3efo2eHV/tjZ4ADMv8G7xskAx8PNzr/Mw8nNya37ztni2eHj5wDp4gDMv8G7xskA2Nng
AL2/yM7Myf7KycUbx8nI8ABS6eIAws+/0MkAysnFG8fJyKv7velv2NXg4wDX4+IA6NXX6OMA7QDX1ebd
KeOt/wD/ytXm2dfZAOXp2QDo6QDZ5end5OMA2efoF/7X4+Hk4Nno46370OnZ4OrZANfp1eLY4wDY2d7Z
5wDV4Nsn4gDKycUbx8nI/tniANngAMq9rf8A////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_E_GiveEgg_Esp_4moves_kill" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIDCbdQIYAId1ABgC7AVQAAAi6YAAACGpavREBAAhmbTFyATJsDf8m3UCGACHdQAYAuwFU
AAAIumAAAAhqWr0RAQAIZm0xcgEybA3/alq9mwEACGZtbAL/eqwAzd1A0t1A/yHdQAEAuwGjAAAIId1A
AgC7AbkAAAgh3UADALsBzwAACCHdQAQAuwHlAAAIId1ABQC7AfsAAAgD/3sBADcAewEBOAB7AQI5AHsB
AzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMDOgAD/3sEADcAewQBOAB7
BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/webV193V5wDk4+YA6efV5gDZ4ADn3efo2eHV
/tjZ4ADMv8G7xskAx8PNzr/Mw8nNya37ztni2eHj5wDp4gDMv8G7xskA2NngAL2/yM7Myf7KycUbx8nI
8ABS6eIAws+/0MkAysnFG8fJyKv7velv2NXg4wDX4+IA6NXX6OMA7QDX1ebdKeOt/wD/ytXm2dfZAOXp
2QDo6QDZ5end5OMA2efoF/7X4+Hk4Nno46370OnZ4OrZANfp1eLY4wDY2d7Z5wDV4Nsn4gDKycUbx8nI
/tniANngAMq9rf8A////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_E_GiveEgg_Fre_4moves" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIK+QBuwA7AAAIDCbdQIYAId1ABgC7AWMAAAgp5AG6bwAACGpavSABAAhmbTFyATJsAv8m
3UCGACHdQAYAuwFjAAAIKeQBum8AAAhqWr0gAQAIZm0xcgEybAL/alq9jgEACGZtbAL/eqwAzd1A0t1A
/yHdQAEAuwGyAAAIId1AAgC7AcgAAAgh3UADALsB3gAACCHdQAQAuwH0AAAIId1ABQC7AQoBAAgD/3sB
ADcAewEBOAB7AQI5AHsBAzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMD
OgAD/3sEADcAewQBOAB7BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/x9nm190A2LTp6N3g
3efZ5gDg2QDn7efoGuHZ/r27vr+7zwDH083OrfvI4+nnANXq4+LnAOniAMm/z8AA5OPp5gDq4+nnq/u/
4Nnq2e6u4NkA1erZ1wDV4ePp5gDZ6P7b2eLo3eDg2efn2a3/AP/J3LgA4LQb5end5NkA2efoAOTg2d3i
2a37zNnq2eLZ7gDl6dXi2ADq4+nnANXp5tnuAObV4tsb/uniAMrJxRvHycgA2NXi5wDq4+jm2QDKva3/
AP//////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_E_GiveEgg_Fre_4moves_kill" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIDCbdQIYAId1ABgC7AVQAAAi6YAAACGpavREBAAhmbTFyATJsDf8m3UCGACHdQAYAuwFU
AAAIumAAAAhqWr0RAQAIZm0xcgEybA3/alq9fwEACGZtbAL/eqwAzd1A0t1A/yHdQAEAuwGjAAAIId1A
AgC7AbkAAAgh3UADALsBzwAACCHdQAQAuwHlAAAIId1ABQC7AfsAAAgD/3sBADcAewEBOAB7AQI5AHsB
AzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMDOgAD/3sEADcAewQBOAB7
BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/x9nm190A2LTp6N3g3efZ5gDg2QDn7efoGuHZ
/r27vr+7zwDH083OrfvI4+nnANXq4+LnAOniAMm/z8AA5OPp5gDq4+nnq/u/4Nnq2e6u4NkA1erZ1wDV
4ePp5gDZ6P7b2eLo3eDg2efn2a3/AP/J3LgA4LQb5end5NkA2efoAOTg2d3i2a37zNnq2eLZ7gDl6dXi
2ADq4+nnANXp5tnuAObV4tsb/uniAMrJxRvHycgA2NXi5wDq4+jm2QDKva3/AP//////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_E_GiveEgg_Ita_4moves" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIK+QBuwA7AAAIDCbdQIYAId1ABgC7AWMAAAgp5AG6bwAACGpavSABAAhmbTFyATJsAv8m
3UCGACHdQAYAuwFjAAAIKeQBum8AAAhqWr0gAQAIZm0xcgEybAL/alq9pgEACGZtbAL/eqwAzd1A0t1A
/yHdQAEAuwGyAAAIId1AAgC7AcgAAAgh3UADALsB3gAACCHdQAQAuwH0AAAIId1ABQC7AQoBAAgD/3sB
ADcAewEBOAB7AQI5AHsBAzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMD
OgAD/3sEADcAewQBOAB7BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/webV7t3ZAOTZ5gDp
59Xm2QDd4ADN3efo2eHV/r7JyMkAzb/BzL/Oya37u9bW3dXh4wDp4gDm2dvV4OMA5NnmAOjZANjVAOni
/r2/yM7MyQDKycUbx8nIuADp4gDPydDJAMrJxRvHycir+87m1ejo1eDjANfj4gDo1eLo4wDV4ePm2av/
AP/I4+IA3NXdAOTdJgDk4+fo4wDi2eDg1QDo6dX+5+Xp1djm1a37zuPm4tUA1QDo5uPq1ebh3QDY4+Tj
ANXq2eb+2Nnk4+fd6NXo4wDp4uMA4wDk3Sb6ysnFG8fJyADi2eAAyr2t/wD/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_E_GiveEgg_Ita_4moves_kill" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIDCbdQIYAId1ABgC7AVQAAAi6YAAACGpavREBAAhmbTFyATJsDf8m3UCGACHdQAYAuwFU
AAAIumAAAAhqWr0RAQAIZm0xcgEybA3/alq9lwEACGZtbAL/eqwAzd1A0t1A/yHdQAEAuwGjAAAIId1A
AgC7AbkAAAgh3UADALsBzwAACCHdQAQAuwHlAAAIId1ABQC7AfsAAAgD/3sBADcAewEBOAB7AQI5AHsB
AzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMDOgAD/3sEADcAewQBOAB7
BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/webV7t3ZAOTZ5gDp59Xm2QDd4ADN3efo2eHV
/r7JyMkAzb/BzL/Oya37u9bW3dXh4wDp4gDm2dvV4OMA5NnmAOjZANjVAOni/r2/yM7MyQDKycUbx8nI
uADp4gDPydDJAMrJxRvHycir+87m1ejo1eDjANfj4gDo1eLo4wDV4ePm2av/AP/I4+IA3NXdAOTdJgDk
4+fo4wDi2eDg1QDo6dX+5+Xp1djm1a37zuPm4tUA1QDo5uPq1ebh3QDY4+TjANXq2eb+2Nnk4+fd6NXo
4wDp4uMA4wDk3Sb6ysnFG8fJyADi2eAAyr2t/wD/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_E_GiveEgg_Jap_4moves" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIK+QBuwA7AAAIDCbdQIYAId1ABgC7AWMAAAgp5AG6bwAACGpavSABAAhmbTFyATJsAv8m
3UCGACHdQAYAuwFjAAAIKeQBum8AAAhqWr0gAQAIZm0xcgEybAL/alq9pgEACGZtbAL/eqwAzd1A0t1A
/yHdQAEAuwGyAAAIId1AAgC7AcgAAAgh3UADALsB3gAACCHdQAQAuwH0AAAIId1ABQC7AQoBAAgD/3sB
ADcAewEBOAB7AQI5AHsBAzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMD
OgAD/3sEADcAewQBOAB7BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/HAw4FQUIKCMZAC0A
OygmA/4CEEEHAAEoNxQDADs8Ah8Nq/tFA0AAn1lzfl5+YK4ABif+ChkAn1lzfhkAEB87Lfqdeo9+ZAAC
EAwfDav7QQI9FgAPQRMT/ghBCwKr/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAFJAATIxE3/gJQSwIZACYDRA0Y+59Zc34tAJtfWn4WAAE+CRMGJ/4jAwIRRQAFCgwIQQsC/wAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_E_GiveEgg_Jap_4moves_kill" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIDCbdQIYAId1ABgC7AVQAAAi6YAAACGpavREBAAhmbTFyATJsDf8m3UCGACHdQAYAuwFU
AAAIumAAAAhqWr0RAQAIZm0xcgEybA3/alq9lwEACGZtbAL/eqwAzd1A0t1A/yHdQAEAuwGjAAAIId1A
AgC7AbkAAAgh3UADALsBzwAACCHdQAQAuwHlAAAIId1ABQC7AfsAAAgD/3sBADcAewEBOAB7AQI5AHsB
AzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMDOgAD/3sEADcAewQBOAB7
BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/HAw4FQUIKCMZAC0AOygmA/4CEEEHAAEoNxQD
ADs8Ah8Nq/tFA0AAn1lzfl5+YK4ABif+ChkAn1lzfhkAEB87Lfqdeo9+ZAACEAwfDav7QQI9FgAPQRMT
/ghBCwKr/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAATIxE3/gJQSwIZ
ACYDRA0Y+59Zc34tAJtfWn4WAAE+CRMGJ/4jAwIRRQAFCgwIQQsC/wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_FR_GiveEgg_Deu_4moves" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIK9gDuwA7AAAIDCa1QIMAIbVABgC7AWMAAAgp2AO6bwAACGpavSABAAhmbTECATJsAv8m
tUCDACG1QAYAuwFjAAAIKdgDum8AAAhqWr0gAQAIZm0xAgEybAL/alq9yQEACGZtbAL/eqwAzbVA0rVA
/yG1QAEAuwGyAAAIIbVAAgC7AcgAAAghtUADALsB3gAACCG1QAQAuwH0AAAIIbVABQC7AQoBAAgD/3sB
ADcAewEBOAB7AQI5AHsBAzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMD
OgAD/3sEADcAewQBOAB7BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/vtXi39m4ANjV5+cA
2OkA2NXnAMG/wr/Dx67+wb/NvcK/wr/IANbZ4uno7ugA3NXn6K37w+EAysnFG8fJyK69v8jOv8wA69Xm
6Nno/tnd4gDB2efX3Nni3wDV6doA2N3X3K0Av93i+srJxRvHyciuv8Or+rzd6OjZAOjm1d3i3dnm2QDY
1ecAysnFG8fJyPrh3egAxt3Z1tkA6eLYAM3j5tva1eDorf8A/8ncuADY6QDc1efoAN/Z3eLZ4gDK4NXo
7gDd4gDY2d3i2eH+ztnV4av6vN3o6NkA3+Ph4dkA693Z2NnmuADi1dfc2NnhANjp+tnd4gDKycUbx8nI
ANXp2gDZ3eLZ4QDKvfrb2eDV29nm6ADc1eforf8A////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_FR_GiveEgg_Deu_4moves_kill" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIDCa1QIMAIbVABgC7AVQAAAi6YAAACGpavREBAAhmbTECATJsDf8mtUCDACG1QAYAuwFU
AAAIumAAAAhqWr0RAQAIZm0xAgEybA3/alq9ugEACGZtbAL/eqwAzbVA0rVA/yG1QAEAuwGjAAAIIbVA
AgC7AbkAAAghtUADALsBzwAACCG1QAQAuwHlAAAIIbVABQC7AfsAAAgD/3sBADcAewEBOAB7AQI5AHsB
AzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMDOgAD/3sEADcAewQBOAB7
BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/vtXi39m4ANjV5+cA2OkA2NXnAMG/wr/Dx67+
wb/NvcK/wr/IANbZ4uno7ugA3NXn6K37w+EAysnFG8fJyK69v8jOv8wA69Xm6Nno/tnd4gDB2efX3Nni
3wDV6doA2N3X3K0Av93i+srJxRvHyciuv8Or+rzd6OjZAOjm1d3i3dnm2QDY1ecAysnFG8fJyPrh3egA
xt3Z1tkA6eLYAM3j5tva1eDorf8A/8ncuADY6QDc1efoAN/Z3eLZ4gDK4NXo7gDd4gDY2d3i2eH+ztnV
4av6vN3o6NkA3+Ph4dkA693Z2NnmuADi1dfc2NnhANjp+tnd4gDKycUbx8nIANXp2gDZ3eLZ4QDKvfrb
2eDV29nm6ADc1eforf8A////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_FR_GiveEgg_Eng_4moves" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIK9gDuwA7AAAIDCa1QIMAIbVABgC7AWMAAAgp2AO6bwAACGpavSABAAhmbTECATJsAv8m
tUCDACG1QAYAuwFjAAAIKdgDum8AAAhqWr0gAQAIZm0xAgEybAL/alq9rwEACGZtbAL/eqwAzbVA0rVA
/yG1QAEAuwGyAAAIIbVAAgC7AcgAAAghtUADALsB3gAACCG1QAQAuwH0AAAIIbVABQC7AQoBAAgD/3sB
ADcAewEBOAB7AQI5AHsBAzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMD
OgAD/3sEADcAewQBOAB7BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/ztzV4t8A7ePpANrj
5gDp593i2wDo3NkAx9PNzr/M0/7Bw8DOAM3t5+jZ4a37wObj4QDo3NkAysnFG8fJyAC9v8jOv8wA69n+
3NXq2QDVANvd2ugArgDVAMrJxRvHycgAv8HBq/vK4NnV59kA5tXd59kA3egA693o3ADg4+rZANXi2P7f
3eLY4tnn563/AP/J3LgA7ePp5gDk1ebo7QDV5OTZ1ebnAOjjANbZANrp4OCt+8rg2dXn2QDX4+HZAOfZ
2QDh2QDV2ujZ5gDn6OPm3eLb/tUAysnFG8fJyADj4gDVAMq9rf8A////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_FR_GiveEgg_Eng_4moves_kill" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIDCa1QIMAIbVABgC7AVQAAAi6YAAACGpavREBAAhmbTECATJsDf8mtUCDACG1QAYAuwFU
AAAIumAAAAhqWr0RAQAIZm0xAgEybA3/alq9oAEACGZtbAL/eqwAzbVA0rVA/yG1QAEAuwGjAAAIIbVA
AgC7AbkAAAghtUADALsBzwAACCG1QAQAuwHlAAAIIbVABQC7AfsAAAgD/3sBADcAewEBOAB7AQI5AHsB
AzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMDOgAD/3sEADcAewQBOAB7
BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/ztzV4t8A7ePpANrj5gDp593i2wDo3NkAx9PN
zr/M0/7Bw8DOAM3t5+jZ4a37wObj4QDo3NkAysnFG8fJyAC9v8jOv8wA69n+3NXq2QDVANvd2ugArgDV
AMrJxRvHycgAv8HBq/vK4NnV59kA5tXd59kA3egA693o3ADg4+rZANXi2P7f3eLY4tnn563/AP/J3LgA
7ePp5gDk1ebo7QDV5OTZ1ebnAOjjANbZANrp4OCt+8rg2dXn2QDX4+HZAOfZ2QDh2QDV2ujZ5gDn6OPm
3eLb/tUAysnFG8fJyADj4gDVAMq9rf8A////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_FR_GiveEgg_Esp_4moves" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIK9gDuwA7AAAIDCa1QIMAIbVABgC7AWMAAAgp2AO6bwAACGpavSABAAhmbTECATJsAv8m
tUCDACG1QAYAuwFjAAAIKdgDum8AAAhqWr0gAQAIZm0xAgEybAL/alq9qgEACGZtbAL/eqwAzbVA0rVA
/yG1QAEAuwGyAAAIIbVAAgC7AcgAAAghtUADALsB3gAACCG1QAQAuwH0AAAIIbVABQC7AQoBAAgD/3sB
ADcAewEBOAB7AQI5AHsBAzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMD
OgAD/3sEADcAewQBOAB7BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/webV193V5wDk4+YA
6efV5gDZ4ADn3efo2eHV/tjZ4ADMv8G7xskAx8PNzr/Mw8nNya37ztni2eHj5wDp4gDMv8G7xskA2Nng
AL2/yM7Myf7KycUbx8nI8ABS6eIAws+/0MkAysnFG8fJyKv7velv2NXg4wDX4+IA6NXX6OMA7QDX1ebd
KeOt/wD/ytXm2dfZAOXp2QDo6QDZ5end5OMA2efoF/7X4+Hk4Nno46370OnZ4OrZANfp1eLY4wDY2d7Z
5wDV4Nsn4gDKycUbx8nI/tniANngAMq9rf8A////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_FR_GiveEgg_Esp_4moves_kill" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIDCa1QIMAIbVABgC7AVQAAAi6YAAACGpavREBAAhmbTECATJsDf8mtUCDACG1QAYAuwFU
AAAIumAAAAhqWr0RAQAIZm0xAgEybA3/alq9mwEACGZtbAL/eqwAzbVA0rVA/yG1QAEAuwGjAAAIIbVA
AgC7AbkAAAghtUADALsBzwAACCG1QAQAuwHlAAAIIbVABQC7AfsAAAgD/3sBADcAewEBOAB7AQI5AHsB
AzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMDOgAD/3sEADcAewQBOAB7
BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/webV193V5wDk4+YA6efV5gDZ4ADn3efo2eHV
/tjZ4ADMv8G7xskAx8PNzr/Mw8nNya37ztni2eHj5wDp4gDMv8G7xskA2NngAL2/yM7Myf7KycUbx8nI
8ABS6eIAws+/0MkAysnFG8fJyKv7velv2NXg4wDX4+IA6NXX6OMA7QDX1ebdKeOt/wD/ytXm2dfZAOXp
2QDo6QDZ5end5OMA2efoF/7X4+Hk4Nno46370OnZ4OrZANfp1eLY4wDY2d7Z5wDV4Nsn4gDKycUbx8nI
/tniANngAMq9rf8A////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_FR_GiveEgg_Fre_4moves" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIK9gDuwA7AAAIDCa1QIMAIbVABgC7AWMAAAgp2AO6bwAACGpavSABAAhmbTECATJsAv8m
tUCDACG1QAYAuwFjAAAIKdgDum8AAAhqWr0gAQAIZm0xAgEybAL/alq9jgEACGZtbAL/eqwAzbVA0rVA
/yG1QAEAuwGyAAAIIbVAAgC7AcgAAAghtUADALsB3gAACCG1QAQAuwH0AAAIIbVABQC7AQoBAAgD/3sB
ADcAewEBOAB7AQI5AHsBAzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMD
OgAD/3sEADcAewQBOAB7BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/x9nm190A2LTp6N3g
3efZ5gDg2QDn7efoGuHZ/r27vr+7zwDH083OrfvI4+nnANXq4+LnAOniAMm/z8AA5OPp5gDq4+nnq/u/
4Nnq2e6u4NkA1erZ1wDV4ePp5gDZ6P7b2eLo3eDg2efn2a3/AP/J3LgA4LQb5end5NkA2efoAOTg2d3i
2a37zNnq2eLZ7gDl6dXi2ADq4+nnANXp5tnuAObV4tsb/uniAMrJxRvHycgA2NXi5wDq4+jm2QDKva3/
AP//////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_FR_GiveEgg_Fre_4moves_kill" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIDCa1QIMAIbVABgC7AVQAAAi6YAAACGpavREBAAhmbTECATJsDf8mtUCDACG1QAYAuwFU
AAAIumAAAAhqWr0RAQAIZm0xAgEybA3/alq9fwEACGZtbAL/eqwAzbVA0rVA/yG1QAEAuwGjAAAIIbVA
AgC7AbkAAAghtUADALsBzwAACCG1QAQAuwHlAAAIIbVABQC7AfsAAAgD/3sBADcAewEBOAB7AQI5AHsB
AzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMDOgAD/3sEADcAewQBOAB7
BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/x9nm190A2LTp6N3g3efZ5gDg2QDn7efoGuHZ
/r27vr+7zwDH083OrfvI4+nnANXq4+LnAOniAMm/z8AA5OPp5gDq4+nnq/u/4Nnq2e6u4NkA1erZ1wDV
4ePp5gDZ6P7b2eLo3eDg2efn2a3/AP/J3LgA4LQb5end5NkA2efoAOTg2d3i2a37zNnq2eLZ7gDl6dXi
2ADq4+nnANXp5tnuAObV4tsb/uniAMrJxRvHycgA2NXi5wDq4+jm2QDKva3/AP//////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_FR_GiveEgg_Ita_4moves" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIK9gDuwA7AAAIDCa1QIMAIbVABgC7AWMAAAgp2AO6bwAACGpavSABAAhmbTECATJsAv8m
tUCDACG1QAYAuwFjAAAIKdgDum8AAAhqWr0gAQAIZm0xAgEybAL/alq9pgEACGZtbAL/eqwAzbVA0rVA
/yG1QAEAuwGyAAAIIbVAAgC7AcgAAAghtUADALsB3gAACCG1QAQAuwH0AAAIIbVABQC7AQoBAAgD/3sB
ADcAewEBOAB7AQI5AHsBAzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMD
OgAD/3sEADcAewQBOAB7BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/webV7t3ZAOTZ5gDp
59Xm2QDd4ADN3efo2eHV/r7JyMkAzb/BzL/Oya37u9bW3dXh4wDp4gDm2dvV4OMA5NnmAOjZANjVAOni
/r2/yM7MyQDKycUbx8nIuADp4gDPydDJAMrJxRvHycir+87m1ejo1eDjANfj4gDo1eLo4wDV4ePm2av/
AP/I4+IA3NXdAOTdJgDk4+fo4wDi2eDg1QDo6dX+5+Xp1djm1a37zuPm4tUA1QDo5uPq1ebh3QDY4+Tj
ANXq2eb+2Nnk4+fd6NXo4wDp4uMA4wDk3Sb6ysnFG8fJyADi2eAAyr2t/wD/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_FR_GiveEgg_Ita_4moves_kill" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIDCa1QIMAIbVABgC7AVQAAAi6YAAACGpavREBAAhmbTECATJsDf8mtUCDACG1QAYAuwFU
AAAIumAAAAhqWr0RAQAIZm0xAgEybA3/alq9lwEACGZtbAL/eqwAzbVA0rVA/yG1QAEAuwGjAAAIIbVA
AgC7AbkAAAghtUADALsBzwAACCG1QAQAuwHlAAAIIbVABQC7AfsAAAgD/3sBADcAewEBOAB7AQI5AHsB
AzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMDOgAD/3sEADcAewQBOAB7
BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/webV7t3ZAOTZ5gDp59Xm2QDd4ADN3efo2eHV
/r7JyMkAzb/BzL/Oya37u9bW3dXh4wDp4gDm2dvV4OMA5NnmAOjZANjVAOni/r2/yM7MyQDKycUbx8nI
uADp4gDPydDJAMrJxRvHycir+87m1ejo1eDjANfj4gDo1eLo4wDV4ePm2av/AP/I4+IA3NXdAOTdJgDk
4+fo4wDi2eDg1QDo6dX+5+Xp1djm1a37zuPm4tUA1QDo5uPq1ebh3QDY4+TjANXq2eb+2Nnk4+fd6NXo
4wDp4uMA4wDk3Sb6ysnFG8fJyADi2eAAyr2t/wD/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_FR_GiveEgg_Jap_4moves" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIK9gDuwA7AAAIDCa1QIMAIbVABgC7AWMAAAgp2AO6bwAACGpavSABAAhmbTECATJsAv8m
tUCDACG1QAYAuwFjAAAIKdgDum8AAAhqWr0gAQAIZm0xAgEybAL/alq9pgEACGZtbAL/eqwAzbVA0rVA
/yG1QAEAuwGyAAAIIbVAAgC7AcgAAAghtUADALsB3gAACCG1QAQAuwH0AAAIIbVABQC7AQoBAAgD/3sB
ADcAewEBOAB7AQI5AHsBAzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMD
OgAD/3sEADcAewQBOAB7BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/HAw4FQUIKCMZAC0A
OygmA/4CEEEHAAEoNxQDADs8Ah8Nq/tFA0AAn1lzfl5+YK4ABif+ChkAn1lzfhkAEB87Lfqdeo9+ZAAC
EAwfDav7QQI9FgAPQRMT/ghBCwKr/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAFJAATIxE3/gJQSwIZACYDRA0Y+59Zc34tAJtfWn4WAAE+CRMGJ/4jAwIRRQAFCgwIQQsC/wAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
<data name="ROM_FR_GiveEgg_Jap_4moves_kill" type="System.Byte[], mscorlib">
<value>
AAAAALgEAAAIDCa1QIMAIbVABgC7AVQAAAi6YAAACGpavREBAAhmbTECATJsDf8mtUCDACG1QAYAuwFU
AAAIumAAAAhqWr0RAQAIZm0xAgEybA3/alq9lwEACGZtbAL/eqwAzbVA0rVA/yG1QAEAuwGjAAAIIbVA
AgC7AbkAAAghtUADALsBzwAACCG1QAQAuwHlAAAIIbVABQC7AfsAAAgD/3sBADcAewEBOAB7AQI5AHsB
AzoAA/97AgA3AHsCATgAewICOQB7AgM6AAP/ewMANwB7AwE4AHsDAjkAewMDOgAD/3sEADcAewQBOAB7
BAI5AHsEAzoAA/97BQA3AHsFATgAewUCOQB7BQM6AAP/HAw4FQUIKCMZAC0AOygmA/4CEEEHAAEoNxQD
ADs8Ah8Nq/tFA0AAn1lzfl5+YK4ABif+ChkAn1lzfhkAEB87Lfqdeo9+ZAACEAwfDav7QQI9FgAPQRMT
/ghBCwKr/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJAATIxE3/gJQSwIZ
ACYDRA0Y+59Zc34tAJtfWn4WAAE+CRMGJ/4jAwIRRQAFCgwIQQsC/wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////w==
</value>
</data>
</root>

View File

@ -0,0 +1,905 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="Card_0" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAO4AAACeCAIAAAC6rqG0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAARdSURBVHhe7dsxbtxIEIZRHc/hHmFDH3GPwSM4VKjQoSlW
adDoWWJIEUZ3Ee/HF5RGGDp5IAwDflu+9u/Pnz/MSm1Fm3yXJSnnb8wKLgx/Us4Ptq3MpRIl2W2flNuP
1nv574dUoo7uW55fjt+Xf6QSdZqTMseqWKsZZRUOZd0klHWTUNbIPj6W39/a+sXuUShrWN92HOs0o6xh
JckLa5+GsoaVHi+sfRrKGlZ6vLD2aShrWOnxwtqnoaxhpccLa5+GsoaVHi+sfRrKGlZ6vLD2aShrWOnx
wtqnoaxhpccLa5+GsoaVHi+sfRrKGlZ6vLD2aYcorz8+PnG7z957pccLa5+2/nEou//uvVd6vLD2aesf
95qy9DdKjxfWPg1lDSs9Xlj7NJQ1rPR4Ye3TUNaw0uOFtU9DWcNKj197/j9OXc//66T9LcoaVnB8Kfi5
h+n2Q5Q1rM7i2VDWLKGsm7RaXOcvGCpfcHzspemH4Mfa36KsYT3TPLWOPsoa2bc1P7/CUdZNQlk3CWXd
JJR1k1DWTUJZNwll3SSUdZN2Kee/RJsVGcp2k6FsNxnKdpMdovzxsUgTlkC3vabcfVmaqmSKsqqXTFFW
9ZIpyqpeMkVZ1UumKKt6yRRlVS+ZoqzqJVOUVb1kirKql0xRVvWSKcqqXjI9Qnld92VpkhLotkOUzeYf
ynaTHaLcvdWlSUqg215T7r4sTVUyRVnVS6Yoq3rJFGVVL5mirOolU5RVvWSKsqqXTFFW9ZIpyqpeMkVZ
1UumKKt6yRRlVS+ZHqG8rvuyNEkJdNshymbzD2W7yQ5R7t7q0iQl0G2vKXdflqYqmaKs6iVTlFW9ZIqy
qpdMUVb1kinKql4yRVnVS6Yoq3rJFGVVL5mirOolU5RVvWSKsqqXTI9QXtd9WZqkBLrtEGWz+Yey3WSH
KHdvdWmSEui215S7L0tTlUxRVvWSKcqqXjJFWdVLpiireskUZVUvmaKs6iVTlFW9ZIqyqpdMUVb1kinK
ql4yRVnVS6ZHKK/rvixNUgLddoiy2fxD2W4ylO0mQ9lusheUf/1apMkLqyirfGH1BOX398/c7nnuKKyi
7C58R2H1BGVpzsIqyipfWD1Bee8l73aPuqOwirK78B2F1ROUpTkLqyirfGH1BOW9l7zbPeqOwirK7sJ3
FFZPUJbmLKyirPKF1ROU917ybveoOwqrKLsL31FYPUFZmrOwirLKF1ZPUN57ybvdo+4orKLsLnxHYfUE
ZWnOwirKKl9YPUF57yXvdo+6o7CKsvvzKHpHYfUEZWnOwirKKl9YPUF57yXvdo+6o7CKsrvwHYXVE5Sl
OQurKKt8YfUE5b2XvNs96o7CKsruwncUVk9QluYsrKKs8oXVE5T3XvJu96g7CqsouwvfUVg9QVmas7CK
ssoXVl9QNquy/6G8jmartdbxurf2h9Aslaij+7YsS/60bf1IKlGS3bYy/qTcaTartTCclNd1zM3m34o2
+S7LH+E8UN+c30OjAAAAAElFTkSuQmCC
</value>
</data>
<data name="Card_1" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAO4AAACeCAIAAAC6rqG0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAPgSURBVHhe7dqxbhtHFIZRPaJLP4LLPIJLlyrzGClTskyZ
UqVLly5Z+hozGBMbacnNWtjZH2dwMLiUllN9GFACnz5enpvPn798+PAJTqSiHQH3lBdPwIn8SnnxCzid
nykvPlfUSziFRbdPi9cv1+9wCouaf6U8Or5cX2By/615mfLiDTCttZT/+HIZL2FylauUSSBljlSNXXes
20SlzJF6kjvWOGot5T//eqlfwzupzHqPO1Yd0k6rXN3KHKb3uGONoypXtzLHqMx6jztWHdJOcytzpN7j
jjWOqlylzGF6jzvWOGotZR8weFeVWe9xx6pD2mk+YHCk3uOONY6qXN3KHKMy6z3uWHVIO82tzJF6jzvW
OKpylTKH6T3uWOMoKXOk3uOONY6SMkfqPe5Y46i1lP3Zx3vrPe5Y46i1P/ukzHvrPe5Y4ygpc6Te4441
jpIyR+o97ljjqLWU69fjJfx2vyvlcZpbmcP0Hm9W/XBEuPDW841bmcPcprkptlffWINbmcO0HEd1m7T3
jqPWbmUp895ajqO6Tdp7x1E+YHCYkXKtTbG9+sYa3Mocpvd4s+qHI8KFt55v3MocpgK7/P1vT/J/rXr7
qLQGtzIJ1m5lKXMiUiaElAmxlvLLt+s/X+EcKlcpk0DKhJAyIaRMCCkTQsqEkDIhpEwIKRNCyoSQMiGk
TAgpE0LKhJAyIaRMCCkTQsqEkDIhpEwIKRNCyoS4k3JTy26fdh/cyiSQMiGkTAgpE0LKhJAyIaRMCCkT
QsqEkDIhpEwIKRNCyoSQMiGkTIg7KTe33w2122fbB7cyCaRMCCkTQsqEkDIhpEwIKRNCyoSQMiGkTAgp
E0LKhJAyIaRMCCkT4k7Kze13Q+322fbBrUwCKRNCyoSQMiGkTAgpE0LKhJAyIaRMCCkTQsqEkDIhpEwI
KRNCyoS4k3Jz+91Qu322fbifMpzC2ylfv1+uL3AKlauUSXA/5dphZhtSbo+azTPPNUjZnDDXIGVzwlzD
/ZRhZg+k/O3anmiPms0zz6v/V5ay+TyzlM0h80Mpw8w2pNweNZtnnqVsDpmlbA6ZH0oZZrYh5fao2Tzz
LGVzyCxlc8j8UMowsw0pt0fN5plnKZtDZimbQ+aHUoaZbUi5PWo2zzxL2RwyS9kcMj+UMsysN+1WNmfM
UjaHzFI2h8wPpQwz25Bye9RsnnmWsjlklrI5ZH4oZZjZhpTbo2bzzLOUzSGzlM0h80Mpw8weSPmmfZhc
5bqWspo5hdbq6ymXUTPM77bj8rR4XS/hFBbdPn28PN/+CM6oMv6Zspo5tdZwT7ksbmyYX0XbA748/wAY
2FlxRAwnqAAAAABJRU5ErkJggg==
</value>
</data>
<data name="Card_2" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAO4AAACeCAIAAAC6rqG0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAN4SURBVHhe7doxbhtXGIVRLdGllpBluFTpMmXKLINLcZky
pcuMQM21NZTgUWyA7/44wGmGnHnVh4shwIfHy5erz5+fPn36A4ps0Sbgl5QPd0CR7ykfvoA6zykf3iu2
S6hw6PbhcP3Xn3//+/QEi9tCPdT8PeV0/M/jIyzutuZXKeuYIluuUmYCKXM33y6X3+J6mpS5m1T4K6TM
/V0r/Pb16/+WQzZS5m6kzBBSZggpM4SUGULKDCFlhpAyQ0iZIaTMEFJmCCkzhJQZQsoMIWWGkDJDSJkh
pMwQb6d8uWzhvWn76nBzDtlsN0iZ+3iV8vsF30rTOWSzfS5l7iMpp9EPkTKrkDJDJOVnXjDo9Srl8LOP
Om+n/BE5ZCNl7iYV/gopc39bhb/F9TQpM4SUGeInKV8d9hyWklDfTfnwACzOKtMtoVplhrDKdEuoVpkh
rDLdEqpVZgirTLeEapUZ4sQq3/y5DtaRUE+s8s3DsBCrzAwJ1SpTziozQ0K1ypSzysyQUK0y5awyMyRU
q0w5q8wMCdUqU84qM0NCtcqU+8Aqp2lYT0I9scrQ4MQqH/YcVpJQT6zyzcOwEKvMDAnVKlPOKjNDQrXK
lLPKzJBQrTLlrDIzJFSrTDmrzAwJ1SpTziozQ0K1ypT7wCqnaVhPQj2xytDgxCof9hxWklBPrPLNw7AQ
q8wMCdUqU84qM0NCtcqUs8rMkFCtMuWsMjMkVKtMOavMDAnVKlPOKjNDQrXKlPvAKqdpWE9CPbHK0ODE
Kh/2HFaSUE+s8s3DsBCrzAwJ1SpTziozQ0K1ypSzysyQUK0y5awyMyRUq0w5q8wMCdUqU84qM0NCtcqU
O7/KUEHKDCFlhng35byCHF9NYCnn35VzKywooVplyu2hWmW6JVSrTLk9VKtMt4RqlSm3h2qV6ZZQrTLl
9lCtMt0SqlWm3B6qVaZbQrXKlNtDtcp0S6hWmXJ7qFaZbgnVKlNuD9Uq0y2hWmXK7aFaZbolVKtMuT1U
q0y3hGqVKbeHapXpllCtMuX2UK0y3RKqVabcHqpVpltCtcqU20O1ynRLqFaZcnuoVpluCdUqU24P1SrT
LaFaZcrtoVpluiVUq0y5PdSfrzJUkDJDvJ3yRs0U+bHjzcPheruECoduHx4vX378CBptGT+nrGaqXRt+
SXlzWGxY3xbtS8CXL/8BzCNgwkNdrNQAAAAASUVORK5CYII=
</value>
</data>
<data name="Card_3" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAO4AAACeCAIAAAC6rqG0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAOpSURBVHhe7do9blRLAIRRL5GQJbAMhy90SEjIEgi9BJZA
yBIIaTRW4dcYWvxIt6t1pBN47vTt6FNpAt+9fny4ub//79WrN1BkRJuAn1KeTkCR7ylPX0CdbylPvyvG
R6gwdXs3fX739v27j/ewu7fvp5q/p5yOHx7fwOZ+rPn/KeuYHiNXKXMCKXOZj18+/BO326TMZVLh35Ay
17tV+PnLpz+WSwYpcxkpcwgpcwgpcwgpcwgpcwgpcwgpcwgpcwgpcwgpcwgpcwgpcwgpcwgpcwgpcwgp
cwgpc4gXUx4PR3gvGl9Nh3PJMA5ImWs8T/kXBf8oTeeSYTyXMtdIymn0t0iZXUiZQyTlYfydRpfG4dtb
uWQYz6XMNZ6nHL9oOgVHLhnGASlzjRdT/i25ZJAyl0mFf0PKXG9U+E/cbpMyh5Ayh1ikfDPtOWwlof40
5ekF2JxVpltCtcocwirTLaFaZQ5hlemWUK0yh7DKdEuoVplDrFd5+s862EpCXa/y9CZsJaFaZbolVKtM
t4RqlemWUK0y3RKqVaZbQrXKdEuoVpluCdUq0y2hWmW6JVSrTLeEapXpllCtMt0S6nqVcxQ2lFDXqwwV
1qs87TlsJaGuV3l6E7aSUK0y3RKqVaZbQrXKdEuoVpluCdUq0y2hWmW6JVSrTLeEapXpllCtMt0SqlWm
W0K1ynRLqFaZbgl1vco5ChtKqOtVhgrrVZ72HLaSUNerPL0JW0moVpluCdUq0y2hWmW6JVSrTLeEapXp
llCtMt0SqlWmW0K1ynRLqFaZbgnVKtMtoVpluiVUq0y3hLpe5RyFDSXU9SpDhfUqT3sOW0mo61We3oSt
JFSrTLeEapXpllCtMt0SqlWmW0K1ynRLqFaZbgnVKtMtoVpluiVUq0y3hGqV6ZZQrTLdEqpVpltCXa8y
VJAyh5Ayh/hpyvkJMv00ga0k1PUq5yhsKKFaZbolVKtMt4RqlemWUK0y3RKqVaZbQrXKdEuoVpluCdUq
0y2hWmW6JVSrTLeEapXpllCtMt0SqlWmW0K1ynRLqFaZbgnVKtMtoVpluiVUq0y3hGqV6ZZQrTLdEqpV
pltCtcp0S6hWmW4J1SrTLaFaZbolVKtMt4RqlemWUK0y3RKqVaZbQrXKdEuoVpluCdUq0y2hWmW6JVSr
TLeEapXpllDXqwwVpMwhXk55UDNFnnc83E2fx0eoMHV79/rx4fkjaDQy/paymql2a/gp5WFabNjfiPYp
4MeHr6U6cnxsaGiLAAAAAElFTkSuQmCC
</value>
</data>
<data name="Card_4" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAO4AAACeCAIAAAC6rqG0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAOrSURBVHhe7doxblw3AEVRLdGll5AyS3CZUqXKlFnGlFmK
SpcpQ2OEZ4WWTTs28PmIA5xC84ef1cXDFHp4f3u8+/Dhj3fvfoMiI9oE/JLydAKKfE55+gLqfEp5+l0x
PkKFqduH6fOfT3893Z5hcyPUqebPKafj359usLkva/5PyjqmyMhVypxAylzm7+ePv8T9NilzmVT4M6TM
9e4VPn/853/LJYOUuYyUOYSUOYSUOYSUOYSUOYSUOYSUOYSUOYSUOYSUOYSUOYSUOYSUOYSUOYSUOYSU
OYSUOcSbKY+H49mbxlfT4VwyjANS5hqvU/5GwV9K07lkGM+lzDWS8j3QHyVldiFlDpGUh/H3PdDvMQ7f
38olw3guZa7xOuX4RtMpOHLJMA5ImWu8mfIPySWDlLlMKvwZUuZ6o8Jf4n6blDmElDnEIuW7ac9hKwn1
qylPL8DmrDLdEqpV5hBWmW4J1SpzCKtMt4RqlTmEVaZbQrXKHGK9ytN/1sFWEup6lac3YSsJ1SrTLaFa
ZbolVKtMt4RqlemWUK0y3RKqVaZbQrXKdEuoVpluCdUq0y2hWmW6JVSrTLeEapXpllDXq5yjsKGEul5l
qLBe5WnPYSsJdb3K05uwlYRqlemWUK0y3RKqVaZbQrXKdEuoVpluCdUq0y2hWmW6JVSrTLeEapXpllCt
Mt0SqlWmW0K1ynRLqOtVzlHYUEJdrzJUWK/ytOewlYS6XuXpTdhKQrXKdEuoVpluCdUq0y2hWmW6JVSr
TLeEapXpllCtMt0SqlWmW0K1ynRLqFaZbgnVKtMtoVpluiXU9SrnKGwooa5XGSqsV3nac9hKQl2v8vQm
bCWhWmW6JVSrTLeEapXpllCtMt0SqlWmW0K1ynRLqFaZbgnVKtMtoVpluiVUq0y3hGqV6ZZQrTLdEup6
laGClDmElDnEV1POT5DppwlsJaGuVzlHYUMJ1SrTLaFaZbolVKtMt4RqlemWUK0y3RKqVaZbQrXKdEuo
VpluCdUq0y2hWmW6JVSrTLeEapXpllCtMt0SqlWmW0K1ynRLqFaZbgnVKtMtoVpluiVUq0y3hGqV6ZZQ
rTLdEqpVpltCtcp0S6hWmW4J1SrTLaFaZbolVKtMt4RqlemWUK0y3RKqVaZbQrXKdEuoVpluCdUq0y2h
WmW6JVSrTLeEul5lqCBlDvF2yoOaKfK64+Fh+jw+QoWp24f3t8fXj6DRyPhTymqm2r3hl5SHabFhfyPa
l4Bvj/8CB0TdcEaHzuUAAAAASUVORK5CYII=
</value>
</data>
<data name="Card_5" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAO4AAACeCAIAAAC6rqG0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAOpSURBVHhe7dqxbVRLAIVhl0UZhC6BMggJHRISUgKhS6AE
Qsp4g9Y6mMEw4oF054w+6Qu8d+dO9OtoA9/dPz7cvH377vXrN1BkRJuAn1KeTkCR7ylPX0CdbylPvyvG
R6gwdXs3ff7w/uPnz/ewuRHqVPP3lNPxp0+vYHM/1/xDyjqmyMhVypxAylzmy5d3/8TtNilzmVT4N6TM
9W4Vfv36+L/lkkHKXEbKHELKHELKHELKHELKHELKHELKHELKHELKHELKHELKHELKHELKHELKHELKHELK
HELKHOLFlMfDEd6LxlfT4VwyjANS5hrPU/5NwT9L07lkGM+lzDWSchr9I1JmF1LmEEl5GH+n0aVx+PZW
LhnGcylzjecpx2+aTsGRS4ZxQMpc48WU/0guGaTMZVLh35Ay1xsV/hO326TMIaTMIRYp30x7DltJqL9M
eXoBNmeV6ZZQrTKHsMp0S6hWmUNYZbolVKvMIawy3RKqVeYQ61We/rMOtpJQ16s8vQlbSahWmW4J1SrT
LaFaZbolVKtMt4RqlemWUK0y3RKqVaZbQrXKdEuoVpluCdUq0y2hWmW6JVSrTLeEul7lHIUNJdT1KkOF
9SpPew5bSajrVZ7ehK0kVKtMt4RqlemWUK0y3RKqVaZbQrXKdEuoVpluCdUq0y2hWmW6JVSrTLeEapXp
llCtMt0SqlWmW0Jdr3KOwoYS6nqVocJ6lac9h60k1PUqT2/CVhKqVaZbQrXKdEuoVpluCdUq0y2hWmW6
JVSrTLeEapXpllCtMt0SqlWmW0K1ynRLqFaZbgnVKtMtoa5XOUdhQwl1vcpQYb3K057DVhLqepWnN2Er
CdUq0y2hWmW6JVSrTLeEapXpllCtMt0SqlWmW0K1ynRLqFaZbgnVKtMtoVpluiVUq0y3hGqV6ZZQ16sM
FaTMIaTMIX6Zcn6CTD9NYCsJdb3KOQobSqhWmW4J1SrTLaFaZbolVKtMt4RqlemWUK0y3RKqVaZbQrXK
dEuoVpluCdUq0y2hWmW6JVSrTLeEapXpllCtMt0SqlWmW0K1ynRLqFaZbgnVKtMtoVpluiVUq0y3hGqV
6ZZQrTLdEqpVpltCtcp0S6hWmW4J1SrTLaFaZbolVKtMt4RqlemWUK0y3RKqVaZbQrXKdEuoVpluCdUq
0y2hWmW6JdT1KkMFKXOIl1Me1EyR5x0Pd9Pn8REqTN3e3T8+PH8EjUbG31JWM9VuDT+lPEyLDfsb0T4F
/PjwHzwgdeE9EPsHAAAAAElFTkSuQmCC
</value>
</data>
<data name="Card_6" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAO4AAACeCAIAAAC6rqG0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAo5SURBVHhe7doxkpvHEYZhHs9HYOhQIcM9hkOHOopChxs6
dKhQR3CTDX/VfvufGQA/dmqx+FBPqZY9L4bBtClWyd/e//f58fb2N3/8eapPLO1lfd/fL6t8OfHHnyf8
5A7/XOXL4Nfn/V/f4d/vQygTmjNwc0JTobQv7Pd/fL+s7K/Pz1Wuf6+I4o8//k/9MqBMaM7AzQlNhdK+
vLrNscbfLj96j+0J1W2+rHLfhroogDKhOQM3JzQVSnsp2ubjVa6LAjUTNGfg5oSmQmmvZrbKdVFATYXm
DNyc0FQo7QUNV7kuCujLFZozcHNCU6G013S8ynVRoH5Z0JyBmxOaCqW9rINVnsCXE5ozcHNCU6G0V8ZV
nvz3BXwzoTkDNyc0FUp7cdeuMr6W0JyBmxOaCqXZVauM7yQ0Z+DmhKZCaRbWq4wvJDRn4OaEpkJplhar
jDrV4CTcnNBUKM1ktspIk07Pw80JTYXSrBquMrqkrToPNyc0FUozOF5lRKku1km4OaGpUJp1B6uMImG3
zsDNCU2F0uwQV/lwdepinYSbE5oKpdnIepXrYp2EmxOaCqXZxGKV62KdVK8VNBVKszmu8o+3N7NHwbZ9
KK+yfSBs24c6/gtG/Rf9SfU3EzQVSrMrHazyA+E3S2gqlGbX4yrj/4NxBn6nhKZCaXaTj1pl/DYJTYXS
Xs3v//yOv2dDBPgKfMgq4/dIaCqU9jqWG9yNdvrxq4zfIKGpUNrrwI7eBFeFB68ybk9oKpT2UrCdN8FV
4ZGrjKsTmgqlvaDP+BcM3JvQVCjtxS13erTB8phVxqUJTYXS7LwHrDJuTGgqlGYPcXaVcV1CU6E0e5RT
q4y7EpoKpdkD3b/KuCihqVCaPdadq4xbEpoKpdnD3bPKuCKhqVCafYSbVxnfT2gqlGYf5LZVxpcTmgql
2ce5YZXxzYSmQmn2oa5dZXwtoalQmn208Sq//2b2FNar/Od//n6rv/78LWAY+jwn9gr6u9dJGs2XvMq2
T3/3Okmj+ZJX2fbp714naTRfWqxyHHiV7VH6u9dJGs2XZqucB15le5T+7nWSRvOl4SrnH8leZXug/u51
kkbzJa+y7dPfvU7SaL7kVbZ9+rvXSRrNl7zKtk9/9zpJo/mSV9n26e9eJ2k0X/Iq2z793eskjeZLi1WO
f3qV7VH6u9dJGs2XZqt84VW2B+nvXidpNF8arrL/w7U9XH/3Okmj+ZJX2fbp714naTRf8irbPv3d6ySN
5ktXrbLZU/CfyrZJf/c6SaP5klfZ9unvXidpNF/yKts+/d3rJI3mS4tVjgOvsj1Kf/c6SaP50myV88Cr
bI/S371O0mi+NFzl/CPZq2wP1N+9TtJovuRVtn36u9dJGs2XvMq2T3/3Okmj+ZJX2fbp714naTRf8irb
Pv3d6ySN5kteZdunv3udpNF8yats+/R3r5M0mi95lW2f/u51kkbzJa+y7dPfvU7SaL7kVbZ9+rvXSRrN
l65aZbOnsF5lrP81rv/fXE7sFfR3r5M0mi95lW2f/u51kkbzJa+y7dPfvU7SaL7kVbZ9+rvXSRrNl7zK
tk9/9zpJo/mSV9n26e9eJ2k0X/Iq2z793eskjeZLXmXbp797naTRfMmrbPv0d6+TNJoveZVtn/7udZJG
8yWvsu3T371O0mi+5FW2ffq710kazZe8yrZPf/c6SaP5klfZ9unvXidpNF/yKts+/d3rJI3mS1etstlT
WK8y1v8a1/9vLif2Cvq710kazZe8yrZPf/c6SaP5klfZ9unvXidpNF/yKts+/d3rJI3mS15l26e/e52k
0XzJq2z79HevkzSaL3mVbZ/+7nWSRvMlr7Lt09+9TtJovuRVtn36u9dJGs2XvMq2T3/3Okmj+ZJX2fbp
714naTRf8irbPv3d6ySN5kteZdunv3udpNF8yats+/R3r5M0mi95lW2f/u51kkbzpatW2ewpeJXti1iv
Mv4kD/lvgQoBIA4IAHFAAIgDAkAcEADigAAQBwSAOCAAxAEBIA4IAHFAAIgDAkAcEADigCDcs8q4VJAJ
MkEmyASZIBNkgkyQCTJBJsgEmSATZIJMkAkyQSbIBJkgE2SCTJAJMkF22yrjrkOK3R9yP3d3f+0q4/tm
n4pX2b6IU6scQ8HRIfdz7ufmfQzvWWXdCLWpkAkyQSbIBJkgE2SCTJAJMkEmyASZIBNkgkyQCTJBJsgE
mSATZIJMkAmam1dZFx1SJggAcUAAiAMCQBwQAOKAABAHBIA4IADEAQEgDggAcUAAiAMCQBwQAOKAAGp2
2yrrignd7v6Q+7n7+vjh/lXOieeef4Z5/HDDKuvL+UtN6s/XTOanfTI/7ZP5aZ/MT/tkfton89M+mZ/2
yfy0T+anfTI/7ZP5aZ/MT/vk8DT+edufypUuOjzt3M+5n5v3MfQquz/2XH0Mb1hlXZS/1KT+fM1kfton
89M+mZ/2yfy0T+anfTI/7ZP5aZ/MT/tkfton89M+mZ/2yfy0Tw5P45+3/amsL2viueefYR4/3L/KI1m6
H3E/d18fP9y2ysvblQkCQBwQAOKAABAHBIA4IADEAQEgDggAcUAAiAMCQBwQAOKAABAHBIA4IICa3bzK
+bVDtamQCTJBJsgEmSATZIJMkAkyQSbIBJkgE2SCTJAJMkEmyASZIBNkgkyQCZp7VjnpxsPTzv2c+7l5
H8P7V9ns8/Aq2xdxwyonfP+QYveH3M/d3d+2ygl3CTJBJsgEmSATZIJMkAkyQSbIBJkgE2SCTJAJMkEm
yASZIBNkgkyQCTJBJsjuWeWASwMCQBwQAOKAABAHBIA4IADEAQEgDggAcUAAiAMCQBwQAOKAABAHBIA4
IADEAUG4c5XD/N7O/Zz7uWV/7Sr3K3Sv5xK/FM9T/FI0fPg8frjhT+XJLYeT+WmfzE/7ZH7aJ/PTPpmf
9sn8tE/mp30yP+2T+WmfzE/7ZH7aJ/PTPpmf9skNq6xvzil2f8j93N29V5ncz33a/oZVxjeXk/lpn8xP
+2R+2ifz0z6Zn/bJ/LRP5qd9Mj/tk/lpn8xP+2R+2ifz0z6Zn/bJtas8usVzzz/DPH644U9l0L150ZL7
Ofdzy/7OVa73JgSAOCAAxAEBIA4IAHFAAIgDAkAcEADigAAQBwSAOCAAxAEBIA4IAHFAAIgDgnDPKuNS
QSbIBJkgE2SCTJAJMkEmyASZIBNkgkyQCTJBJsgEmSATZIJMkAkyQSbIBNltq4y7Dil2f8j93N39tauM
75t9Kl5l+yJOrXIMBUeH3M+5n5v3MVyvcm4zvnaoNhUyQSbIBJkgE2SCTJAJMkEmyASZIBNkgkyQCTJB
JsgEmSATZIJMkAkyqY32OMxWOeQ2465D9TfA0SH3c+7nIqt7HBarHOILZp8QFpWrHJ++zWafnPY4Pt9+
vL1dfvQ221Opexxr/O39/f3yq1+f2OYozD6/y8r++sQa/1xlbLM//jzXJ3f4ssrxqX/T8Mefp/jE0l7W
9/39v1K/CMaav8F2AAAAAElFTkSuQmCC
</value>
</data>
<data name="Card_7" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAO4AAACeCAIAAAC6rqG0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAoySURBVHhe7doxkhtHEoVhHW+Ps6aOIHNNHkOmTJk0x6RJ
c4+xKSbiRe6fXVUAGlMBDF7HF4xh1o8eo1JDRlC/fZTnX378vNRzWdxfz2WVLyd+/Lzgkzv8zypfBr+e
v//6Dt+//xhBmdCcgTcnNBVK+8L++OM/l5X99XCVo/jzz7+r+mFAmdCcgTcnNBVK+/LqNv+zypcvvcf2
guo2X1a5b0NdFECZ0JyBNyc0FUp7K9rm41WuiwI1EzRn4M0JTYXS3s1sleuigJoKzRl4c0JTobQ3NFzl
uiigD1dozsCbE5oKpb2n41WuiwL1w4LmDLw5oalQ2ts6WOUJfDihOQNvTmgqlPbOuMqTf1/AJxOaM/Dm
hKZCaW/u2lXGxxKaM/DmhKZCaXbVKuMzCc0ZeHNCU6E0C+tVxgcSmjPw5oSmQmmWFquMOtXgJLw5oalQ
mslslZEmnZ6HNyc0FUqzarjK6JK26jy8OaGpUJrB8SojSnWxTsKbE5oKpVl3sMooEnbrDLw5oalQmh3i
Kh+uTl2sk/DmhKZCaTayXuW6WCfhzQlNhdJsYrHKdbFOqq8VNBVKszmu8r9//93sUbBtn8qrbJ8I2/ap
jv+CUf+gP6l+M0FToTS70sEqPxC+WUJToTS7HlcZ/w/GGfhOCU2F0uwmn7XK+DYJTYXS3s23b9/w92yI
AB+BT1llfI+EpkJp72O5wd1opx+/yvgGCU2F0t4HdvQmeFV48Crj7QlNhdLeCrbzJnhVeOQq49UJTYXS
3tAz/gUD701oKpT25pY7Pdpgecwq46UJTYXS7LwHrDLemNBUKM0e4uwq43UJTYXS7FFOrTLeldBUKM0e
6P5VxosSmgql2WPducp4S0JToTR7uHtWGa9IaCqUZp/h5lXG5xOaCqXZJ7ltlfHhhKZCafZ5blhlfDKh
qVCafaprVxkfS2gqlGafbbjKf/nx8yLPepV//Ph5q58//xswDH2eE3sH/d7rJI3mS15l26ffe52k0XzJ
q2z79HuvkzSaLy1WOQ68yvYo/d7rJI3mS7NVzgOvsj1Kv/c6SaP50nCV80eyV9keqN97naTRfMmrbPv0
e6+TNJoveZVtn37vdZJG8yWvsu3T771O0mi+5FW2ffq910kazZe8yrZPv/c6SaP50mKV41evsj1Kv/c6
SaP50myVk1fZHqXfe52k0XxpuMr+h2t7uH7vdZJG8yWvsu3T771O0mi+5FW2ffq910kazZeuWmU/fl7i
8U9l26Tfe52k0XzJq2z79HuvkzSaL3mVbZ9+73WSRvOlxSrHgVfZHqXfe52k0Xxptsp54FW2R+n3Xidp
NF8arnL+SPYq2wP1e6+TNJoveZVtn37vdZJG8yWvsu3T771O0mi+5FW2ffq910kazZe8yrZPv/c6SaP5
klfZ9un3XidpNF/yKts+/d7rJI3mS15l26ffe52k0XzJq2z79HuvkzSaL3mVbZ9+73WSRvOlq1bZj5+X
eNarjPW/xvX/zeXE3kG/9zpJo/mSV9n26fdeJ2k0X/Iq2z793uskjeZLXmXbp997naTRfMmrbPv0e6+T
NJoveZVtn37vdZJG8yWvsu3T771O0mi+5FW2ffq910kazZe8yrZPv/c6SaP5klfZ9un3XidpNF/yKts+
/d7rJI3mS15l26ffe52k0XzJq2z79HuvkzSaL3mVbZ9+73WSRvMlr7Lt0++9TtJovnTVKvvx8xLPepWx
/te4/r+5nNg76PdeJ2k0X/Iq2z793uskjeZLXmXbp997naTRfMmrbPv0e6+TNJoveZVtn37vdZJG8yWv
su3T771O0mi+5FW2ffq910kazZe8yrZPv/c6SaP5klfZ9un3XidpNF/yKts+/d7rJI3mS15l26ffe52k
0XzJq2z79HuvkzSaL3mVbZ9+73WSRvMlr7Lt0++9TtJovuRVtn36vddJGs2XrlplP35e4vEq+/kiz3qV
8ZM85J8CFQJAHBAA4oAAEAcEgDggAMQBASAOCABxQACIAwJAHBAA4oAAEAcEgDggAMQBQbhnlfFSQSbI
BJkgE2SCTJAJMkEmyASZIBNkgkyQCTJBJsgEmSATZIJMkAkyQSbIBNltq4x3HVLs/pD7ubv7a1cZnzd7
Kl5l+yJOrXIMBUeH3M+5n5v3MbxnlfVGqE2FTJAJMkEmyASZIBNkgkyQCTJBJsgEmSATZIJMkAkyQSbI
BJkgE2SCTNDcvMp60SFlggAQBwSAOCAAxAEBIA4IAHFAAIgDAkAcEADigAAQBwSAOCAAxAEBIA4IoGa3
rbJeMaG3uz/kfu6+Pr64f5Vz4rnnzzCPL25YZX04f6tJ/fqayfy0T+anfTI/7ZP5aZ/MT/tkfton89M+
mZ/2yfy0T+anfTI/7ZP5aZ8cnsavt/1UrvSiw9PO/Zz7uXkfQ6+y+2Ov1cfwhlXWi/K3mtSvr5nMT/tk
fton89M+mZ/2yfy0T+anfTI/7ZP5aZ/MT/tkfton89M+mZ/2yeFp/HrbT2V9WBPPPX+GeXxx/yqPZOl+
xP3cfX18cdsqL9+uTBAA4oAAEAcEgDggAMQBASAOCABxQACIAwJAHBAA4oAAEAcEgDggAMQBAdTs5lXO
jx2qTYVMkAkyQSbIBJkgE2SCTJAJMkEmyASZIBNkgkyQCTJBJsgEmSATZIJM0NyzyklvPDzt3M+5n5v3
Mbx/lc2eh1fZvogbVjnh84cUuz/kfu7u/rZVTniXIBNkgkyQCTJBJsgEmSATZIJMkAkyQSbIBJkgE2SC
TJAJMkEmyASZIBNkguyeVQ54aUAAiAMCQBwQAOKAABAHBIA4IADEAQEgDggAcUAAiAMCQBwQAOKAABAH
BIA4IAh3rnKYv7dzP+d+btlfu8r9FXqv5xK/Fc9T/FY0fPg8vrjhp/LkLYeT+WmfzE/7ZH7aJ/PTPpmf
9sn8tE/mp30yP+2T+WmfzE/7ZH7aJ/PTPpmf9skNq6xPzil2f8j93N29V5nczz1tf8Mq45PLyfy0T+an
fTI/7ZP5aZ/MT/tkfton89M+mZ/2yfy0T+anfTI/7ZP5aZ/MT/vk2lUevcVzz59hHl/c8FMZ9N580ZL7
Ofdzy/7OVa7vTQgAcUAAiAMCQBwQAOKAABAHBIA4IADEAQEgDggAcUAAiAMCQBwQAOKAABAHBOGeVcZL
BZkgE2SCTJAJMkEmyASZIBNkgkyQCTJBJsgEmSATZIJMkAkyQSbIBJkgE2S3rTLedUix+0Pu5+7ur11l
fN7sqXiV7Ys4tcoxFBwdcj/nfm7ex3C9yrnN+Nih2lTIBJkgE2SCTJAJMkEmyASZIBNkgkyQCTJBJsgE
mSATZIJMkAkyQSbIpDba4zBb5ZDbjHcdqt8AR4fcz7mfi6zucViscogP+PHzhA8WlascT99msyenPY7n
t4+Pj8uX3mZ7KXWPY43/b5XjiW2Owuz5XVb213NZZWyzHz+v9eQOX1Y5n8uJHz8v8lwWN56Pj/8Bvtcd
vaaZkWcAAAAASUVORK5CYII=
</value>
</data>
<data name="News_0" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
rkJggg==
</value>
</data>
<data name="News_1" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
gg==
</value>
</data>
<data name="News_2" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALEgAACxIB0t1+/AAAAmtJREFUeF7t1rFNLDEY
RlHKpKQtg1IoZUNCwg0hwUL/ezOQMb460olGlqNvrvz0uN8hw6BJ+e2g32+3t+dn+BOf8xuDPPLzoE2Z
i/jNrH8Y9LgR/tyY6HA2aG3mgs47fTbocRFcxBjqd4eDlmcu6yTSh4MeV8CljLkuBs2WxlwXg2ZLY66L
QbOlMdfFoNnSmOti0GxpzHUxaLY05roYNFsac10Mmi2NuS4GzZbGXBeDZktjrotBs6Ux1+Vw0O+3G1zW
mOui0GxpzHU5HPTj5QWua8z1i0KzpTHX5enx+vp/nz/B+AIXcTzO0yfHP6fhEs6eHOPoYtBclkKTotCk
KDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpN
ikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQ
pCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkK
TYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi
0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQp
Ck2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKT
clTo+/0D5KYuHQZ2qmgAAAAASUVORK5CYII=
</value>
</data>
<data name="News_3" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALEgAACxIB0t1+/AAAAm9JREFUeF7t1rFNJEEU
RVHCJQxCWHNNwsAkhAlhzA1hTLBK6Gu7waPr6kjHapXKen1VT/8ed8gwaFJ+OujX28uf92f4FZ/zG4M8
8v2gTZmL+Mmsvxn0uBF+3ZjocDZobeaCzjt9NuhxEVzEGOpXh4OWZy7rJNKHgx5XwKWMuS4GzZbGXBeD
ZktjrotBs6Ux18Wg2dKY62LQbGnMdTFotjTmuhg0WxpzXQyaLY25LgbNlsZcF4NmS2Oui0GzpTHX5XDQ
r7cXuKwx10Wh2dKY63I46Lf7X7isMddFodnSmOvydHu8/dfnTzC+wEWcjPPsyTGOwkWcPTnG0cWguSyF
JkWhSVFoUhSaFIUmRaFJUWhSFJoUhSZFoUlRaFIUmhSFJkWhSVFoUhSaFIUmRaFJUWhSFJoUhSZFoUlR
aFIUmhSFJkWhSVFoUhSaFIUmRaFJUWhSFJoUhSZFoUlRaFIUmhSFJkWhSVFoUhSaFIUmRaFJUWhSFJoU
hSZFoUlRaFIUmhSFJkWhSVFoUhSaFIUmRaFJUWhSFJoUhSZFoUlRaFIUmhSFJkWhSVFoUhSaFIUmRaFJ
UWhSFJoUhSZFoUlRaFIUmhSFJkWhSVFoUhSaFIUmRaFJUWhSFJoUhSZFoUlRaFIUmhSFJkWhSVFoUhSa
FIUmRaFJUWhSFJoUhSZFoUlRaFIUmhSFJkWhSVFoUhSaFIUmRaFJUWhSFJoUhSZFoUlRaFIUmhSFJkWh
SVFoUhSaFIUmRaFJUWhSFJoUhSZFoUlRaFIUmhSFJkWhSVFoUhSaFIUmRaFJUWhSFJoUhSZFoUlRaFIU
mhSFJuWw0I/7B+oJSrc9S7XLAAAAAElFTkSuQmCC
</value>
</data>
<data name="News_4" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALEgAACxIB0t1+/AAAAmtJREFUeF7t1rFt3TAY
RlGPnHE8RkZwmREywitf6TKuiOCHJbszeXGAUwkSq08XfHk83yHDoEn57qBf3x6/Xt/gR3zMbwzyyteD
NmU28Z1ZfzHocSL8uDHR4W7Q2syG7jt9N+hxEGxiDPV/l4OWZ7Z1E+nLQY8jYCtjrotBc6Qx18WgOdKY
62LQHGnMdTFojjTmuhg0RxpzXQyaI425LgbNkcZcF4PmSGOui0FzpDHXxaA50pjrYtAcacx1uRz0xyew
rTHXRaE50pjrcjno33+fsK0x10WhOdKY6/Ly5/H81MdPMJ7AJm7GeXflGK/CJu6uHOPVxaDZlkKTotCk
KDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpN
ikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQ
pCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkK
TYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi
0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQp
Ck2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKT
clno5/s/4kr1Ni2QO04AAAAASUVORK5CYII=
</value>
</data>
<data name="News_5" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALEgAACxIB0t1+/AAAAm1JREFUeF7t1rFNHUEY
RlHKcimU4TJcEiElvJCQkDJMNLJ+eRcyZq6OdKLVaKJvr+bp4+MVMgyalO8O+vF4fnn5BT/ic35jkFe+
HrQps4nvzPqLQY8b4ceNiQ53g9ZmNnTf6btBj4tgE2Oo/7octDyzrZtIXw56XAFbGXNdDJojjbkuBs2R
xlwXg+ZIY66LQXOkMdfFoDnSmOti0BxpzHUxaI405roYNEcac10MmiONuS4GzZHGXBeD5khjrsvloB+P
Z9jWmOui0BxpzHW5HPTb22/Y1pjrotAcacx1eXp///Nfnz/B+AKbuBnn3ZNjHIVN3D05xtHFoNmWQpOi
0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQp
Ck2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKT
otCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0
KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpC
k6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQo
NCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2KQpOi0KQoNCkKTYpCk6LQpCg0KQpNikKTotCkKDQpCk2K
QpNyWeiP17+UM/Q13Ls4JwAAAABJRU5ErkJggg==
</value>
</data>
<data name="News_6" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="News_7" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
</root>

File diff suppressed because it is too large Load Diff

234
wc3_tool/WC3/ME3.cs Normal file
View File

@ -0,0 +1,234 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 02/05/2016
* Time: 23:22
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WC3_TOOL
{
/// <summary>
/// Description of ME3.
/// </summary>
public class ME3
{
public int isemerald = -1;
// Global Settings
// Save Data Attributes
public byte[] Data;
public bool Edited;
public readonly bool Exportable;
public readonly byte[] BAK;
public string FileName, FilePath;
private int me3_size;
public ME3(byte[] data, int size)
{
me3_size = size;
Data = (byte[])(data ?? new byte[me3_size]).Clone();
BAK = (byte[])Data.Clone();
Exportable = !Data.SequenceEqual(new byte[Data.Length]);
isEmerald();
return;
}
public int isEmerald()
{
//Get checksum in script
UInt32 chk_scr = BitConverter.ToUInt32(getData(0, 4), 0);
//RS checksum
UInt32 chk_RS = me3_checksum(getData(4, me3_size-4-8), me3_size-4-8);
//E checksum
UInt32 chk_E = (UInt32) wc3.wc_checksum(getData(4, me3_size-4-8), me3_size-4-8, 0);
if (chk_scr == chk_RS)
{
isemerald = 0;
return isemerald;
}else if (chk_scr == chk_E)
{
isemerald = 1;
return isemerald;
}else{
DialogResult dialogResult = MessageBox.Show("ME3 file script has wrong checksum. Is this a Ruby/Sapphire mistery event?", "Wrong checksum", MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
isemerald = 0;
}
else if (dialogResult == DialogResult.No)
{
isemerald = 1;
}
return isemerald;
}
}
public byte[] getData(int Offset, int Length)
{
return Data.Skip(Offset).Take(Length).ToArray();
}
public void setData(byte[] input, int Offset)
{
input.CopyTo(Data, Offset);
Edited = true;
}
public byte MAP_BANK { get { return Data[0x05]; } set { Data[0x05] = (byte) value; } }
public byte MAP_MAP { get { return Data[0x06]; } set { Data[0x06] = (byte) value; } }
public byte MAP_PERSON { get { return Data[0x07]; } set { Data[0x07] = (byte) value; } }
public byte[] get_script()
{
int scriptsize=0;
int i = 0;
for (i=0; i<me3_size-4-4-8; i++) //Leave out checksum (4), header(4) and item structure (8)
{
if(Data[me3_size-8-i-1] == 0xFF)
break;
else
scriptsize++;
}
return getData(8, 996-scriptsize);
}
public byte[] get_script_XSE()
{
//Get base address
UInt32 address = BitConverter.ToUInt32(getData(0X9, 4), 0);
address = address - (address&0xFF000000);
//Build file
byte[] xse_export = new byte[address+996];
//Set address to the first 4 bytes
if (address > 3)
BitConverter.GetBytes(address).CopyTo(xse_export, 0);
MessageBox.Show("Open script in XSE at address 0x"+address.ToString("X"));
//Set script to buffer
getData(0x8, 996).CopyTo(xse_export, address);
return xse_export;
}
public void set_script(byte[] newscript)
{
//Clear existing script
int i = 0;
for (i=8; i<996+8; i++)
{
Data[i] = 0x00;
}
UInt32 header = 0x01010833;
setData(BitConverter.GetBytes(header).ToArray(), 4);
setData(newscript, 8);
}
public void set_script_XSE(byte[] newscript)
{
//Clear existing script
int i = 0;
for (i=8; i<996+8; i++)
{
Data[i] = 0x00;
}
//Get address to script
UInt32 address = BitConverter.ToUInt32(newscript, 4);
UInt32 header = 0x01010833;
setData(BitConverter.GetBytes(header).ToArray(), 4);
setData(newscript.Skip((int)address).ToArray(), 8);
}
public byte get_item_amount()
{
return getData(me3_size-4, 1)[0];
}
public byte get_item_counter()
{
return getData(me3_size-3, 1)[0];
}
public UInt16 get_item()
{
return BitConverter.ToUInt16(getData(me3_size-2, 2), 0);
}
public void set_item_amount(byte amount)
{
Data[me3_size-4] = amount;
}
public void set_item_counter(byte counter)
{
Data[me3_size-3] = counter;
}
public void set_item(UInt16 item)
{
setData( BitConverter.GetBytes(item).ToArray(), me3_size-2);
}
public static UInt32 me3_checksum(byte[] buffer, int length)
{
int i=0;
UInt32 Chk = 0;
for(i=0; i<length; i++){
Chk = unchecked( Chk + buffer[i]);
}
//MessageBox.Show(Chk.ToString("X"));
return Chk;
}
public void fix_me_item_checksum()
{
UInt32 chk = me3_checksum(getData(me3_size-4, 0x4), 0x4);
setData(BitConverter.GetBytes(chk), me3_size-8);
}
public void fix_me_script_checksum()
{
UInt32 chk = 0;
//if (has_script() == true)
//fake_script();
if (isemerald == 1)
{
chk = (UInt32) wc3.wc_checksum(getData(4, me3_size-4-8), me3_size-4-8, 0);
}
else{
chk = me3_checksum(getData(4, me3_size-4-8), me3_size-4-8);
}
setData(BitConverter.GetBytes(chk), 0);
}
private void fake_script()
{
if(Data[me3_size-8] == 0x00)
Data[me3_size-8] = 0xFF;
}
public bool has_script()
{
UInt32 header;
header = BitConverter.ToUInt32(Data, 4);
if (header != 0x00){
return true;
}else{
return false;}
}
public void removeScript()
{
int i;
for(i=0;i<me3_size-8;i++)
{
Data[i] = 0x00;
}
}
}
}

849
wc3_tool/WC3/ME3_editor.Designer.cs generated Normal file
View File

@ -0,0 +1,849 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 02/05/2016
* Time: 23:40
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
namespace WC3_TOOL
{
partial class ME3_editor
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
private System.Windows.Forms.Button load_me3_but;
private System.Windows.Forms.Button save_me3_but;
private System.Windows.Forms.TextBox me3_path;
private System.Windows.Forms.Button export_script_but;
private System.Windows.Forms.Button import_script_but;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ComboBox itembox;
private System.Windows.Forms.NumericUpDown amountbox;
private System.Windows.Forms.NumericUpDown counterbox;
private System.Windows.Forms.CheckBox custom_script;
private System.Windows.Forms.Button removescript_but;
private System.Windows.Forms.CheckBox script_check;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.RadioButton radio_E;
private System.Windows.Forms.RadioButton radio_RS;
private System.Windows.Forms.NumericUpDown map_bank;
private System.Windows.Forms.NumericUpDown map_num;
private System.Windows.Forms.NumericUpDown map_npc;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Button help_npc;
private System.Windows.Forms.Button counter_help;
private System.Windows.Forms.Button amount_help;
private System.Windows.Forms.Button item_help;
private System.Windows.Forms.Button xse_help;
private System.Windows.Forms.Button xse_import;
private System.Windows.Forms.Button xse_export;
/// <summary>
/// Disposes resources used by the form.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
this.load_me3_but = new System.Windows.Forms.Button();
this.save_me3_but = new System.Windows.Forms.Button();
this.me3_path = new System.Windows.Forms.TextBox();
this.export_script_but = new System.Windows.Forms.Button();
this.import_script_but = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.itembox = new System.Windows.Forms.ComboBox();
this.amountbox = new System.Windows.Forms.NumericUpDown();
this.counterbox = new System.Windows.Forms.NumericUpDown();
this.custom_script = new System.Windows.Forms.CheckBox();
this.script_check = new System.Windows.Forms.CheckBox();
this.removescript_but = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.radio_E = new System.Windows.Forms.RadioButton();
this.radio_RS = new System.Windows.Forms.RadioButton();
this.map_bank = new System.Windows.Forms.NumericUpDown();
this.map_num = new System.Windows.Forms.NumericUpDown();
this.map_npc = new System.Windows.Forms.NumericUpDown();
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.help_npc = new System.Windows.Forms.Button();
this.counter_help = new System.Windows.Forms.Button();
this.amount_help = new System.Windows.Forms.Button();
this.item_help = new System.Windows.Forms.Button();
this.xse_help = new System.Windows.Forms.Button();
this.xse_import = new System.Windows.Forms.Button();
this.xse_export = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.amountbox)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.counterbox)).BeginInit();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.map_bank)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.map_num)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.map_npc)).BeginInit();
this.groupBox2.SuspendLayout();
this.SuspendLayout();
//
// load_me3_but
//
this.load_me3_but.Location = new System.Drawing.Point(12, 12);
this.load_me3_but.Name = "load_me3_but";
this.load_me3_but.Size = new System.Drawing.Size(75, 23);
this.load_me3_but.TabIndex = 0;
this.load_me3_but.Text = "Load ME3";
this.load_me3_but.UseVisualStyleBackColor = true;
this.load_me3_but.Click += new System.EventHandler(this.Load_me3_butClick);
//
// save_me3_but
//
this.save_me3_but.Enabled = false;
this.save_me3_but.Location = new System.Drawing.Point(93, 12);
this.save_me3_but.Name = "save_me3_but";
this.save_me3_but.Size = new System.Drawing.Size(75, 23);
this.save_me3_but.TabIndex = 1;
this.save_me3_but.Text = "Save ME3";
this.save_me3_but.UseVisualStyleBackColor = true;
this.save_me3_but.Click += new System.EventHandler(this.Save_me3_butClick);
//
// me3_path
//
this.me3_path.Location = new System.Drawing.Point(12, 41);
this.me3_path.Name = "me3_path";
this.me3_path.ReadOnly = true;
this.me3_path.Size = new System.Drawing.Size(309, 20);
this.me3_path.TabIndex = 2;
//
// export_script_but
//
this.export_script_but.Enabled = false;
this.export_script_but.Location = new System.Drawing.Point(12, 213);
this.export_script_but.Name = "export_script_but";
this.export_script_but.Size = new System.Drawing.Size(75, 23);
this.export_script_but.TabIndex = 3;
this.export_script_but.Text = "Export Script";
this.export_script_but.UseVisualStyleBackColor = true;
this.export_script_but.Click += new System.EventHandler(this.Export_script_butClick);
//
// import_script_but
//
this.import_script_but.Enabled = false;
this.import_script_but.Location = new System.Drawing.Point(93, 213);
this.import_script_but.Name = "import_script_but";
this.import_script_but.Size = new System.Drawing.Size(75, 23);
this.import_script_but.TabIndex = 4;
this.import_script_but.Text = "Import Script";
this.import_script_but.UseVisualStyleBackColor = true;
this.import_script_but.Click += new System.EventHandler(this.Import_script_butClick);
//
// label1
//
this.label1.Location = new System.Drawing.Point(26, 88);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(100, 23);
this.label1.TabIndex = 5;
this.label1.Text = "Item";
//
// label2
//
this.label2.Location = new System.Drawing.Point(26, 114);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(100, 23);
this.label2.TabIndex = 6;
this.label2.Text = "Total amount ?";
//
// label3
//
this.label3.Location = new System.Drawing.Point(26, 140);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(100, 23);
this.label3.TabIndex = 7;
this.label3.Text = "Distribution counter";
//
// itembox
//
this.itembox.FormattingEnabled = true;
this.itembox.Items.AddRange(new object[] {
"Nothing",
"Master Ball",
"Ultra Ball",
"Great Ball",
"Poké Ball",
"Safari Ball",
"Net Ball",
"Dive Ball",
"Nest Ball",
"Repeat Ball",
"Timer Ball",
"Luxury Ball",
"Premier Ball",
"Potion",
"Antidote",
"Burn Heal",
"Ice Heal",
"Awakening",
"Parlyz Heal",
"Full Restore",
"Max Potion",
"Hyper Potion",
"Super Potion",
"Full Heal",
"Revive",
"Max Revive",
"Fresh Water",
"Soda Pop",
"Lemonade",
"Moomoo Milk",
"EnergyPowder",
"Energy Root",
"Heal Powder",
"Revival Herb",
"Ether",
"Max Ether",
"Elixir",
"Max Elixir",
"Lava Cookie",
"Blue Flute",
"Yellow Flute",
"Red Flute",
"Black Flute",
"White Flute",
"Berry Juice",
"Sacred Ash",
"Shoal Salt",
"Shoal Shell",
"Red Shard",
"Blue Shard",
"Yellow Shard",
"Green Shard",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"HP Up",
"Protein",
"Iron",
"Carbos",
"Calcium",
"Rare Candy",
"PP Up",
"Zinc",
"PP Max",
"unknown",
"Guard Spec.",
"Dire Hit",
"X Attack",
"X Defend",
"X Speed",
"X Accuracy",
"X Special",
"Poké Doll",
"Fluffy Tail",
"unknown",
"Super Repel",
"Max Repel",
"Escape Rope",
"Repel",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"Sun Stone",
"Moon Stone",
"Fire Stone",
"Thunder Stone",
"Water Stone",
"Leaf Stone",
"unknown",
"unknown",
"unknown",
"unknown",
"TinyMushroom",
"Big Mushroom",
"unknown",
"Pearl",
"Big Pearl",
"Stardust",
"Star Piece",
"Nugget",
"Heart Scale",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"Orange Mail",
"Harbor Mail",
"Glitter Mail",
"Mech Mail",
"Wood Mail",
"Wave Mail",
"Bead Mail",
"Shadow Mail",
"Tropic Mail",
"Dream Mail",
"Fab Mail",
"Retro Mail",
"Cheri Berry",
"Chesto Berry",
"Pecha Berry",
"Rawst Berry",
"Aspear Berry",
"Leppa Berry",
"Oran Berry",
"Persim Berry",
"Lum Berry",
"Sitrus Berry",
"Figy Berry",
"Wiki Berry",
"Mago Berry",
"Aguav Berry",
"Iapapa Berry",
"Razz Berry",
"Bluk Berry",
"Nanab Berry",
"Wepear Berry",
"Pinap Berry",
"Pomeg Berry",
"Kelpsy Berry",
"Qualot Berry",
"Hondew Berry",
"Grepa Berry",
"Tamato Berry",
"Cornn Berry",
"Magost Berry",
"Rabuta Berry",
"Nomel Berry",
"Spelon Berry",
"Pamtre Berry",
"Watmel Berry",
"Durin Berry",
"Belue Berry",
"Liechi Berry",
"Ganlon Berry",
"Salac Berry",
"Petaya Berry",
"Apicot Berry",
"Lansat Berry",
"Starf Berry",
"Enigma Berry",
"unknown",
"unknown",
"unknown",
"BrightPowder",
"White Herb",
"Macho Brace",
"Exp. Share",
"Quick Claw",
"Soothe Bell",
"Mental Herb",
"Choice Band",
"King\'s Rock",
"SilverPowder",
"Amulet Coin",
"Cleanse Tag",
"Soul Dew",
"DeepSeaTooth",
"DeepSeaScale",
"Smoke Ball",
"Everstone",
"Focus Band",
"Lucky Egg",
"Scope Lens",
"Metal Coat",
"Leftovers",
"Dragon Scale",
"Light Ball",
"Soft Sand",
"Hard Stone",
"Miracle Seed",
"BlackGlasses",
"Black Belt",
"Magnet",
"Mystic Water",
"Sharp Beak",
"Poison Barb",
"NeverMeltIce",
"Spell Tag",
"TwistedSpoon",
"Charcoal",
"Dragon Fang",
"Silk Scarf",
"Up-Grade",
"Shell Bell",
"Sea Incense",
"Lax Incense",
"Lucky Punch",
"Metal Powder",
"Thick Club",
"Stick",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"unknown",
"Red Scarf",
"Blue Scarf",
"Pink Scarf",
"Green Scarf",
"Yellow Scarf",
"Mach Bike",
"Coin Case",
"Itemfinder",
"Old Rod",
"Good Rod",
"Super Rod",
"S.S. Ticket",
"Contest Pass",
"unknown",
"Wailmer Pail",
"Devon Goods",
"Soot Sack",
"Basement Key",
"Acro Bike",
"Pokéblock Case",
"Letter",
"Eon Ticket",
"Red Orb",
"Blue Orb",
"Scanner",
"Go-Goggles",
"Meteorite",
"Rm. 1 Key",
"Rm. 2 Key",
"Rm. 4 Key",
"Rm. 6 Key",
"Storage Key",
"Root Fossil",
"Claw Fossil",
"Devon Scope",
"TM01",
"TM02",
"TM03",
"TM04",
"TM05",
"TM06",
"TM07",
"TM08",
"TM09",
"TM10",
"TM11",
"TM12",
"TM13",
"TM14",
"TM15",
"TM16",
"TM17",
"TM18",
"TM19",
"TM20",
"TM21",
"TM22",
"TM23",
"TM24",
"TM25",
"TM26",
"TM27",
"TM28",
"TM29",
"TM30",
"TM31",
"TM32",
"TM33",
"TM34",
"TM35",
"TM36",
"TM37",
"TM38",
"TM39",
"TM40",
"TM41",
"TM42",
"TM43",
"TM44",
"TM45",
"TM46",
"TM47",
"TM48",
"TM49",
"TM50",
"HM01",
"HM02",
"HM03",
"HM04",
"HM05",
"HM06",
"HM07",
"HM08",
"unknown",
"unknown",
"Oak\'s Parcel* (Emerald only)",
"Poké Flute* (Emerald only)",
"Secret Key* (Emerald only)",
"Bike Voucher* (Emerald only)",
"Gold Teeth* (Emerald only)",
"Old Amber* (Emerald only)",
"Card Key* (Emerald only)",
"Lift Key* (Emerald only)",
"Helix Fossil* (Emerald only)",
"Dome Fossil* (Emerald only)",
"Silph Scope* (Emerald only)",
"Bicycle* (Emerald only)",
"Town Map* (Emerald only)",
"Vs. Seeker* (Emerald only)",
"Fame Checker* (Emerald only)",
"TM Case* (Emerald only)",
"Berry Pouch* (Emerald only)",
"Teachy TV* (Emerald only)",
"Tri-Pass* (Emerald only)",
"Rainbow Pass* (Emerald only)",
"Tea* (Emerald only)",
"MysticTicket* (Emerald only)",
"AuroraTicket* (Emerald only)",
"Powder Jar* (Emerald only)",
"Ruby* (Emerald only)",
"Sapphire* (Emerald only)",
"Magma Emblem* (Emerald only)",
"Old Sea Map* (Emerald only)"});
this.itembox.Location = new System.Drawing.Point(132, 85);
this.itembox.Name = "itembox";
this.itembox.Size = new System.Drawing.Size(189, 21);
this.itembox.TabIndex = 8;
this.itembox.SelectedIndexChanged += new System.EventHandler(this.ItemboxSelectedIndexChanged);
//
// amountbox
//
this.amountbox.Location = new System.Drawing.Point(132, 112);
this.amountbox.Maximum = new decimal(new int[] {
255,
0,
0,
0});
this.amountbox.Name = "amountbox";
this.amountbox.Size = new System.Drawing.Size(189, 20);
this.amountbox.TabIndex = 9;
//
// counterbox
//
this.counterbox.Location = new System.Drawing.Point(132, 138);
this.counterbox.Maximum = new decimal(new int[] {
255,
0,
0,
0});
this.counterbox.Name = "counterbox";
this.counterbox.Size = new System.Drawing.Size(189, 20);
this.counterbox.TabIndex = 10;
this.counterbox.ValueChanged += new System.EventHandler(this.CounterboxValueChanged);
//
// custom_script
//
this.custom_script.AutoCheck = false;
this.custom_script.Location = new System.Drawing.Point(204, 213);
this.custom_script.Name = "custom_script";
this.custom_script.Size = new System.Drawing.Size(104, 24);
this.custom_script.TabIndex = 11;
this.custom_script.Text = "Custom Script";
this.custom_script.UseVisualStyleBackColor = true;
//
// script_check
//
this.script_check.AutoCheck = false;
this.script_check.Location = new System.Drawing.Point(204, 183);
this.script_check.Name = "script_check";
this.script_check.Size = new System.Drawing.Size(104, 24);
this.script_check.TabIndex = 12;
this.script_check.Text = "Script present";
this.script_check.UseVisualStyleBackColor = true;
//
// removescript_but
//
this.removescript_but.Enabled = false;
this.removescript_but.Location = new System.Drawing.Point(33, 184);
this.removescript_but.Name = "removescript_but";
this.removescript_but.Size = new System.Drawing.Size(114, 23);
this.removescript_but.TabIndex = 13;
this.removescript_but.Text = "Remove script";
this.removescript_but.UseVisualStyleBackColor = true;
this.removescript_but.Click += new System.EventHandler(this.Removescript_butClick);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.radio_E);
this.groupBox1.Controls.Add(this.radio_RS);
this.groupBox1.Location = new System.Drawing.Point(20, 271);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(127, 93);
this.groupBox1.TabIndex = 14;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Game";
//
// radio_E
//
this.radio_E.Location = new System.Drawing.Point(6, 54);
this.radio_E.Name = "radio_E";
this.radio_E.Size = new System.Drawing.Size(104, 24);
this.radio_E.TabIndex = 1;
this.radio_E.TabStop = true;
this.radio_E.Text = "Emerald";
this.radio_E.UseVisualStyleBackColor = true;
//
// radio_RS
//
this.radio_RS.Location = new System.Drawing.Point(6, 24);
this.radio_RS.Name = "radio_RS";
this.radio_RS.Size = new System.Drawing.Size(104, 24);
this.radio_RS.TabIndex = 0;
this.radio_RS.TabStop = true;
this.radio_RS.Text = "Ruby / Sapphire";
this.radio_RS.UseVisualStyleBackColor = true;
//
// map_bank
//
this.map_bank.Location = new System.Drawing.Point(82, 14);
this.map_bank.Maximum = new decimal(new int[] {
255,
0,
0,
0});
this.map_bank.Name = "map_bank";
this.map_bank.Size = new System.Drawing.Size(71, 20);
this.map_bank.TabIndex = 15;
//
// map_num
//
this.map_num.Location = new System.Drawing.Point(82, 40);
this.map_num.Maximum = new decimal(new int[] {
255,
0,
0,
0});
this.map_num.Name = "map_num";
this.map_num.Size = new System.Drawing.Size(71, 20);
this.map_num.TabIndex = 16;
//
// map_npc
//
this.map_npc.Location = new System.Drawing.Point(82, 66);
this.map_npc.Maximum = new decimal(new int[] {
255,
0,
0,
0});
this.map_npc.Name = "map_npc";
this.map_npc.Size = new System.Drawing.Size(71, 20);
this.map_npc.TabIndex = 17;
//
// label4
//
this.label4.Location = new System.Drawing.Point(6, 16);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(70, 18);
this.label4.TabIndex = 18;
this.label4.Text = "Map Bank";
//
// label5
//
this.label5.Location = new System.Drawing.Point(6, 42);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(70, 23);
this.label5.TabIndex = 19;
this.label5.Text = "Map #";
//
// label6
//
this.label6.Location = new System.Drawing.Point(6, 68);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(70, 23);
this.label6.TabIndex = 20;
this.label6.Text = "Map NPC";
//
// groupBox2
//
this.groupBox2.Controls.Add(this.label4);
this.groupBox2.Controls.Add(this.label6);
this.groupBox2.Controls.Add(this.map_bank);
this.groupBox2.Controls.Add(this.label5);
this.groupBox2.Controls.Add(this.map_num);
this.groupBox2.Controls.Add(this.map_npc);
this.groupBox2.Location = new System.Drawing.Point(155, 271);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(166, 93);
this.groupBox2.TabIndex = 21;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "Script NPC";
//
// help_npc
//
this.help_npc.Location = new System.Drawing.Point(327, 283);
this.help_npc.Name = "help_npc";
this.help_npc.Size = new System.Drawing.Size(17, 21);
this.help_npc.TabIndex = 22;
this.help_npc.Text = "?";
this.help_npc.UseVisualStyleBackColor = true;
this.help_npc.Click += new System.EventHandler(this.Help_npcClick);
//
// counter_help
//
this.counter_help.Location = new System.Drawing.Point(327, 136);
this.counter_help.Name = "counter_help";
this.counter_help.Size = new System.Drawing.Size(17, 21);
this.counter_help.TabIndex = 23;
this.counter_help.Text = "?";
this.counter_help.UseVisualStyleBackColor = true;
this.counter_help.Click += new System.EventHandler(this.Counter_helpClick);
//
// amount_help
//
this.amount_help.Location = new System.Drawing.Point(327, 110);
this.amount_help.Name = "amount_help";
this.amount_help.Size = new System.Drawing.Size(17, 21);
this.amount_help.TabIndex = 24;
this.amount_help.Text = "?";
this.amount_help.UseVisualStyleBackColor = true;
this.amount_help.Click += new System.EventHandler(this.Amount_helpClick);
//
// item_help
//
this.item_help.Location = new System.Drawing.Point(327, 84);
this.item_help.Name = "item_help";
this.item_help.Size = new System.Drawing.Size(17, 21);
this.item_help.TabIndex = 25;
this.item_help.Text = "?";
this.item_help.UseVisualStyleBackColor = true;
this.item_help.Click += new System.EventHandler(this.Item_helpClick);
//
// xse_help
//
this.xse_help.Location = new System.Drawing.Point(174, 244);
this.xse_help.Name = "xse_help";
this.xse_help.Size = new System.Drawing.Size(21, 22);
this.xse_help.TabIndex = 35;
this.xse_help.Text = "?";
this.xse_help.UseVisualStyleBackColor = true;
this.xse_help.Click += new System.EventHandler(this.Xse_helpClick);
//
// xse_import
//
this.xse_import.Location = new System.Drawing.Point(93, 242);
this.xse_import.Name = "xse_import";
this.xse_import.Size = new System.Drawing.Size(75, 23);
this.xse_import.TabIndex = 37;
this.xse_import.Text = "XSE Import";
this.xse_import.UseVisualStyleBackColor = true;
this.xse_import.Click += new System.EventHandler(this.Xse_importClick);
//
// xse_export
//
this.xse_export.Location = new System.Drawing.Point(12, 242);
this.xse_export.Name = "xse_export";
this.xse_export.Size = new System.Drawing.Size(75, 23);
this.xse_export.TabIndex = 36;
this.xse_export.Text = "XSE Export";
this.xse_export.UseVisualStyleBackColor = true;
this.xse_export.Click += new System.EventHandler(this.Xse_exportClick);
//
// ME3_editor
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(354, 371);
this.Controls.Add(this.xse_help);
this.Controls.Add(this.xse_import);
this.Controls.Add(this.xse_export);
this.Controls.Add(this.item_help);
this.Controls.Add(this.amount_help);
this.Controls.Add(this.counter_help);
this.Controls.Add(this.help_npc);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.removescript_but);
this.Controls.Add(this.script_check);
this.Controls.Add(this.custom_script);
this.Controls.Add(this.counterbox);
this.Controls.Add(this.amountbox);
this.Controls.Add(this.itembox);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.import_script_but);
this.Controls.Add(this.export_script_but);
this.Controls.Add(this.me3_path);
this.Controls.Add(this.save_me3_but);
this.Controls.Add(this.load_me3_but);
this.Name = "ME3_editor";
this.Text = "ME3 Editor";
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.ME3_editorDragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.ME3_editorDragEnter);
((System.ComponentModel.ISupportInitialize)(this.amountbox)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.counterbox)).EndInit();
this.groupBox1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.map_bank)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.map_num)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.map_npc)).EndInit();
this.groupBox2.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
}
}

230
wc3_tool/WC3/ME3_editor.cs Normal file
View File

@ -0,0 +1,230 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 02/05/2016
* Time: 23:40
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WC3_TOOL
{
/// <summary>
/// Description of ME3_editor.
/// </summary>
public partial class ME3_editor : Form
{
public ME3_editor()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
public string me3filter = "Mistery Event file|*.me3|All Files (*.*)|*.*";
public string scriptfilter = "Script file|*.script|All Files (*.*)|*.*";
public string xsescriptfilter = "XSE padded script file|*.gba";
public byte[] me3buffer;
public byte[] me3script_new;
public static ME3 me3file;
//private int me3size;
void get_me3data()
{
amountbox.Value = me3file.get_item_amount();
counterbox.Value = me3file.get_item_counter();
itembox.SelectedIndex = me3file.get_item();
if(me3file.isemerald == 0)//These items aren't in emerald
{
if (itembox.SelectedIndex > 348)
itembox.SelectedIndex = 348;
}else{
if (itembox.SelectedIndex > 376)
itembox.SelectedIndex = 376;
}
map_bank.Value = me3file.MAP_BANK;
map_num.Value = me3file.MAP_MAP;
map_npc.Value = me3file.MAP_PERSON;
}
void set_me3data()
{
me3file.set_item( (UInt16)itembox.SelectedIndex);
me3file.set_item_amount( (byte) amountbox.Value);
me3file.set_item_counter( (byte) counterbox.Value);
me3file.MAP_BANK = (byte)map_bank.Value;
me3file.MAP_MAP = (byte)map_num.Value;
me3file.MAP_PERSON = (byte)map_npc.Value;
if (radio_E.Checked == true)
me3file.isemerald = 1;
else if (radio_RS.Checked == true)
me3file.isemerald = 0;
}
void Load_me3(string path)
{
int filesize = FileIO.load_file(ref me3buffer, ref path, me3filter);
if( filesize == SAV3.ME3_SIZE_E || filesize == SAV3.ME3_SIZE_RS )
{
radio_RS.Checked = false;
radio_E.Checked = false;
me3_path.Text = path;
me3file = new ME3(me3buffer, filesize);
switch (me3file.isemerald)
{
case 0:
radio_RS.Checked = true;
break;
case 1:
radio_E.Checked = true;
break;
}
get_me3data();
save_me3_but.Enabled = true;
removescript_but.Enabled = true;
export_script_but.Enabled = true;
import_script_but.Enabled = true;
custom_script.Checked = false;
script_check.Checked = true;
}else{
MessageBox.Show("Invalid file size.");
}
}
void Load_me3_butClick(object sender, EventArgs e)
{
Load_me3(null);
}
void ItemboxSelectedIndexChanged(object sender, EventArgs e)
{
if(me3file.isemerald == 0)//These items aren't in RS
{
if (itembox.SelectedIndex > 348){
itembox.SelectedIndex = 348;
MessageBox.Show("Selected item is not available in Ruby/Sapphire.");
}
}else{
if (itembox.SelectedIndex > 376)
itembox.SelectedIndex = 376;
}
}
void Save_me3_butClick(object sender, EventArgs e)
{
set_me3data();
me3file.fix_me_script_checksum();
me3file.fix_me_item_checksum();
if (me3file.Edited)
FileIO.save_data(me3file.Data, me3filter);
else MessageBox.Show("Save has not been edited");
}
void Export_script_butClick(object sender, EventArgs e)
{
FileIO.save_data(me3file.get_script(), scriptfilter);
}
void Import_script_butClick(object sender, EventArgs e)
{
string path = null;
int filesize = FileIO.load_file(ref me3script_new, ref path, scriptfilter);
if( filesize <= 996 )
{
me3file.set_script(me3script_new);
custom_script.Checked = true;
script_check.Checked = me3file.has_script();
MessageBox.Show("Custom script imported.");
}else{
MessageBox.Show("Invalid file size.");
}
}
void CounterboxValueChanged(object sender, EventArgs e)
{
//Not sure about this anymore
/*if (counterbox.Value > amountbox.Value)
{
MessageBox.Show("Counter can't be bigger than total amount");
counterbox.Value = amountbox.Value;
}*/
}
void Removescript_butClick(object sender, EventArgs e)
{
me3file.removeScript();
script_check.Checked = me3file.has_script();
}
void Help_npcClick(object sender, EventArgs e)
{
MessageBox.Show("These values are used to associate the script to a NPC character in the game.\n\nYou can use Advance Map to locate the values for all NPC in the game.\n\nFather at petalburg Gym is Bank 08, Map 01, NPC 01.");
}
void Counter_helpClick(object sender, EventArgs e)
{
MessageBox.Show("Every time you mix records, this number decreases by 1, even if the item isn't transfered due to the other person already having it.");
}
void Amount_helpClick(object sender, EventArgs e)
{
MessageBox.Show("Should always be 1? Changing it has no apparent effect.");
}
void Item_helpClick(object sender, EventArgs e)
{
MessageBox.Show("The item will only be transfered via record mixing if receiver doesn't own the item.");
}
void Xse_exportClick(object sender, EventArgs e)
{
FileIO.save_data(me3file.get_script_XSE(), xsescriptfilter);
}
void Xse_importClick(object sender, EventArgs e)
{
string path = null;
int filesize = FileIO.load_file(ref me3script_new, ref path, xsescriptfilter);
if( filesize <= 1000 )
{
me3file.set_script_XSE(me3script_new);
custom_script.Checked = true;
MessageBox.Show("Custom script imported.");
}else{
MessageBox.Show("Invalid file size.");
}
}
void Xse_helpClick(object sender, EventArgs e)
{
MessageBox.Show("XSE Export: exports the script with padding corresponding to base address of the script and *.gba extension. You can directly load (and edit) the script in XSE, script offset will be shown when using the export button.\nXSE Import: imports a *.gba script generated by this tool after editing (or not) with XSE (importing anything else will not correctly work).\n\nThese options are just for convenience, the scripts are in no way gba roms, but it's the more convenient way to edit them in XSE.");
}
void ME3_editorDragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
void ME3_editorDragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
Load_me3(files[0]);
}
}
}

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>

1134
wc3_tool/WC3/PKHEX/PKM.cs Normal file

File diff suppressed because it is too large Load Diff

949
wc3_tool/WC3/SAV3.cs Normal file
View File

@ -0,0 +1,949 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 29/04/2016
* Time: 14:00
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WC3_TOOL
{
/// <summary>
/// Description of SAV3.
/// </summary>
public class SAV3
{
public const int SAVE_SIZE = 0x20000;
UInt16[] DATALEN;
//UInt16[] FRLGMAP = { 0xF24,0xF80,0xF80,0xF80,0xEC0,0xF80,0xF80,0xF80,0xF80,0xF80,0xF80,0xF80,0xF80,0x7D0,0x01C,0x100};
UInt16[] FRLGMAP = { 0xF24,0xF80,0xF80,0xF80,0xEE8,0xF80,0xF80,0xF80,0xF80,0xF80,0xF80,0xF80,0xF80,0x7D0,0x01C,0x100};
UInt16[] RSMAP = { 0x890,0xF80,0xF80,0xF80,0xC40,0xF80,0xF80,0xF80,0xF80,0xF80,0xF80,0xF80,0xF80,0x7D0,0xF80,0xF80};
UInt16[] EMAP = { 0xF2C,0xF80,0xF80,0xF80,0xF08,0xF80,0xF80,0xF80,0xF80,0xF80,0xF80,0xF80,0xF80,0x7D0,0xF80,0xF80 };
private const int TEAM_RSE = 0x234;
private const int TEAM_FRLG = 0x034;
private int team_offset = 0x234;
private const int BERRY_OFFSET_RS = 0x2E0;
public const int BERRY_SIZE = 0x530;
private const int WC_OFFSET_E = 0x56C;
private const int WC_SCRIPT_OFFSET_E = 0x8A8;
private const int WC_OFFSET_FRLG = 0x460;
private const int WC_SCRIPT_OFFSET_FRLG = 0x79C;
private const int WC_OFFSET_E_jap = 0x490;
private const int WC_SCRIPT_OFFSET_E_jap = 0x8A8;
private const int WC_OFFSET_FRLG_jap = 0x384;
private const int WC_SCRIPT_OFFSET_FRLG_jap = 0x79C;
private const int WCN_OFFSET_E = 0x3AC;
private const int WCN_OFFSET_FRLG = 0x2A0;
public const int WCN_SIZE = wc3.SIZE_WN3; //Checksum + header + Data (40bytes*11 lines)
private const int WCN_OFFSET_E_jap = 0x3AC;
private const int WCN_OFFSET_FRLG_jap = 0x2A0;
public const int WCN_SIZE_jap = wc3.SIZE_WN3_jap; //Checksum + header + Data (20bytes*11 lines)
private const int ME3_OFFSET_E = 0x8A8;
public const int ME3_SIZE_E = 1012;
private const int ME3_SCRIPT_SIZE_E = ME3_SIZE_E-8;
private const int ME3_OFFSET_RS = 0x810;
public const int ME3_SIZE_RS = 1012;
private const int ME3_SCRIPT_SIZE_RS = 1004;
private const int ME3_ITEM_SIZE = 8;
private const int ECT_OFFSET_RS = 0x498;
private const int ECT_OFFSET_E = 0xBEC;
private const int ECT_OFFSET_FRLG = 0x4A0;
//TV show offsets
private const int TV_EVENT_RS = 0xBBC;
private const int TV_OUTBREAK_RS = 0x85C;
private const int TV_SHOWS_RS = 0x8EC;
private const int TV_OUTBREAK_DATA_RS = 0xBFC;
private const int TV_EVENT_E = 0xC50;
private const int TV_OUTBREAK_E = 0x8CC;
private const int TV_SHOWS_E = 0x980;
private const int TV_OUTBREAK_DATA_E = 0xC90;
// Global Settings
// Save Data Attributes
public byte[] Data;
public bool Edited;
public readonly bool Exportable;
public readonly byte[] BAK;
public string FileName, FilePath;
public bool isvalid = true;
public int game = -1;
public bool has_WC = false;
public bool has_WCN = false;
public bool has_mistery_gift = false;
public bool has_mistery_event = false;
public bool isjap = false;
public int language = 0;
byte[] boxbuffer = new byte[(3968*8)+2000];
/*
0x0201 Japanese
0x0202 English
0x0203 French
0x0204 Italian
0x0205 German
0x0206 Korean*
0x0207 Spanish
*/
private int wc_offset;
private int wc_script_offset;
private int wcn_offset;
private int me3_offset;
public int me3_size;
private int ect_offset;
private int tv_event_offset;
private int tv_outbreak_offset;
private int tv_shows_offset;
private int tv_outbreak_data_offset;
private UInt16 noCash;
private UInt32 oldSav = 0;
private UInt32 currentSav = 0;
private UInt32 sec0, s0, sx, x;
private UInt32[] sec = new UInt32[14];
public SAV3(byte[] data)
{
Data = (byte[])(data ?? new byte[SAVE_SIZE]).Clone();
BAK = (byte[])Data.Clone();
Exportable = !Data.SequenceEqual(new byte[Data.Length]);
checkNocash();
checkCurrentSav();
// get section locations in current save
for(s0 = 0; s0 <= 13; s0++){
sec0 = Data[0x0FF4 + 0x1000 * s0 + currentSav];
if (sec0 == 0x0){
for(sx = 0; sx <=13; sx++){
if((s0 + sx) <= 13){
sec[sx] = s0 + sx;
}
else {
sec[sx] = s0 + sx - 14;
}
}
break;
}
}
// check if all sections were found
for(x = 0; x <= 13; x++){
if(Data[0x0FF4 + 0x1000 * sec[x] + currentSav] != x){
isvalid = false;
}
}
whichgame();//Here we set offsets and flags
buildBoxBuffer();//Needed for language detection
isJap();
getLanguage();
if (language == 1)
isjap = true;
}
public byte[] getData(int Offset, int Length)
{
return Data.Skip(Offset).Take(Length).ToArray();
}
public int getBlockOffset(int Offset, int block)
{
return (int)(Offset + 0x1000 * sec[block] + currentSav);
}
public byte[] getDataFromBlock(int Offset, int Length, int block)
{
return Data.Skip((int)(Offset + 0x1000 * sec[block] + currentSav)).Take(Length).ToArray();
}
public byte[] getDataFromBlock_old(int Offset, int Length, int block)
{
if (block == 0)
return Data.Skip((int)(Offset + 0x1000 * sec[13] + oldSav)).Take(Length).ToArray();
else
return Data.Skip((int)(Offset + 0x1000 * sec[block-1] + oldSav)).Take(Length).ToArray();
}
public void setData(byte[] input, int Offset)
{
input.CopyTo(Data, Offset);
Edited = true;
}
public void setDataToBlock(byte[] input, int Offset, int block)
{
input.CopyTo(Data, Offset + 0x1000 * sec[block] + currentSav);
Edited = true;
}
public void setDataToBlock_old(byte[] input, int Offset, int block)
{
if (block == 0)
input.CopyTo(Data, Offset + 0x1000 * sec[13] + oldSav);
else
input.CopyTo(Data, Offset + 0x1000 * sec[block-1] + oldSav);
//input.CopyTo(Data, Offset + 0x1000 * sec[block] + oldSav);
Edited = true;
}
public void prompt_region(string text)
{
DialogResult dialogResult = MessageBox.Show(text, "Region Input", MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
isjap = true;
}
else if (dialogResult == DialogResult.No)
{
isjap = false;
}
}
public void isJap()
{
if (game == 2) //FR/LG
{
if (Data[getBlockOffset(0xbd2, 4)] != 0x00) // This will only not be 0x00 on USA/EUR save, but requires rival name to have at least 6 characters
isjap = false;
else if (language == 1)
isjap = true;
else
isjap = false;
//prompt_region("Can't autodetect region for FRLG.\n\nIs this a Japanese savegame?");
}
else
{
if (Data[getBlockOffset(0x07, 0)] == 0x00)
isjap = true;
else
isjap = false;
}
}
public void updateOffsets()
{
switch(game)
{
case 0://Rubby/Sapphire
DATALEN = RSMAP;
team_offset = TEAM_RSE;
if(isjap) //Todo different offsets in jap version???
{
}
else
{
}
me3_offset = ME3_OFFSET_RS;
me3_size = ME3_SIZE_RS;
ect_offset = ECT_OFFSET_RS;
//TV data
tv_event_offset = TV_EVENT_RS;
tv_outbreak_offset = TV_OUTBREAK_RS;
tv_shows_offset = TV_SHOWS_RS;
tv_outbreak_data_offset = TV_OUTBREAK_DATA_RS;
break;
case 1: //Emerald
DATALEN = EMAP;
team_offset = TEAM_RSE;
if(isjap)
{
wc_offset = WC_OFFSET_E_jap;
wc_script_offset = WC_SCRIPT_OFFSET_E_jap;
wcn_offset = WCN_OFFSET_E_jap;
}
else
{
wc_offset = WC_OFFSET_E;
wc_script_offset = WC_SCRIPT_OFFSET_E;
wcn_offset = WCN_OFFSET_E;
}
me3_offset = ME3_OFFSET_E;
me3_size = ME3_SIZE_E;
ect_offset = ECT_OFFSET_E;
//TV data
tv_event_offset = TV_EVENT_E;
tv_outbreak_offset = TV_OUTBREAK_E;
tv_shows_offset = TV_SHOWS_E;
tv_outbreak_data_offset = TV_OUTBREAK_DATA_E;
break;
case 2: //Fire Red/Leaf Green
DATALEN = FRLGMAP;
team_offset = TEAM_FRLG;
if(isjap)
{
wc_offset = WC_OFFSET_FRLG_jap;
wc_script_offset = WC_SCRIPT_OFFSET_FRLG_jap;
wcn_offset = WCN_OFFSET_FRLG_jap;
}
else
{
wc_offset = WC_OFFSET_FRLG;
wc_script_offset = WC_SCRIPT_OFFSET_FRLG;
wcn_offset = WCN_OFFSET_FRLG;
}
ect_offset = ECT_OFFSET_FRLG;
break;
}
has_Mistery();
has_WC3();
hasWCN();
has_EggEvent_Flag();
}
public void whichgame()
{
byte[] gamecode = getDataFromBlock(0x00AC, 4, 0);
if ( BitConverter.ToUInt32(gamecode, 0) == 0x00) {
game = 0; // Ruby or Sapphire
} else if (BitConverter.ToUInt32(gamecode, 0) == 0x01) {
game = 2; //Fire Red or Leaf Green
} else {
game = 1; //Emerald
}
updateOffsets();
}
private void buildBoxBuffer()
{
//Build full box buffer
int i;
for (i=0; i<8; i++)
{
getDataFromBlock(0, 3968, 5+i).CopyTo(boxbuffer, i*3968);
}
getDataFromBlock(0, 2000, 13).CopyTo(boxbuffer, 8*3968);
}
public byte[] getPkmFromBox(int index, int box)
{
byte[] pkm = new byte[0x50];
boxbuffer.Skip(4+index*0x50+(0x50*30*box)).Take(0x50).ToArray().CopyTo(pkm, 0);
return pkm;
}
public void getLanguage()
{
int[] count = new int[7];
int i;
UInt16 lang;
//Check party pokemon language
UInt32 teamSize = BitConverter.ToUInt32(getDataFromBlock(team_offset, 4, 1), 0);
if (teamSize > 6 || teamSize == 0)
teamSize = 1;//Should never happen
for (i = 0; i < teamSize; i++)
{
lang = BitConverter.ToUInt16(getDataFromBlock((team_offset+4) + (0x64*i) + 0x12, 2, 1), 0);
switch (lang)
{
case 0x0201:
count[0]++;
break;
case 0x0202:
count[1]++;
break;
case 0x0203:
count[2]++;
break;
case 0x0204:
count[3]++;
break;
case 0x0205:
count[4]++;
break;
case 0x0206:
count[5]++;
break;
case 0x0207:
count[6]++;
break;
}
}
//Check pc pokemon language
int box;
byte[] pkm;
for (box=0; box < 14; box++)
{
for (i=0; i<30; i++)
{
pkm = getPkmFromBox(i, box);
lang = BitConverter.ToUInt16(pkm, 0x12);
switch (lang)
{
case 0x0201:
count[0]++;
break;
case 0x0202:
count[1]++;
break;
case 0x0203:
count[2]++;
break;
case 0x0204:
count[3]++;
break;
case 0x0205:
count[4]++;
break;
case 0x0206:
count[5]++;
break;
case 0x0207:
count[6]++;
break;
}
}
}
//Check Daycare pokemon language
/*
* Todo
RS offsets:
dayCare1Offset = 0x11C;
dayCare2Offset = 0x16C;
Emerald offsets:
dayCare1Offset = 0x1B0;
dayCare2Offset = 0x23C;
FRLG offsets?
*/
//Get the most frecuent language
for (i = 0; i<7; i++)
{
if (count.Max() == count[i]){
if(count[i]==0){
MessageBox.Show("Couldn't auto-detect savegame's language. Defaulting to English, please select the correct value");
language = 2; //Default to english
}else{
language = i+1;
}
break;
}
}
return;
}
public void hasWCN()
{
byte[] wcn = new byte[0x4];
byte[] temp = getDataFromBlock(wcn_offset, 0x4, 4);// Checksum
if (BitConverter.ToInt32(temp, 0) == 0)
has_WCN = false;
else
has_WCN = true;
}
public void has_WC3()
{
byte[] wc3 = new byte[0x4];
byte[] temp = getDataFromBlock(wc_offset, 0x4, 4);// Checksum
if (BitConverter.ToInt32(temp, 0) == 0)
has_WC = false;
else
has_WC = true;
}
public void has_Mistery()
{
//Check if save has enabled mistery gift
byte[] check = new byte[1];
switch (game)
{
case 0://Not that it has wondercards...but let's see the code for it
check = getDataFromBlock(0x3A9, 1, 2);
if ( (check[0]&0x10) == 0)
has_mistery_event = false;
else
has_mistery_event = true;
break;
case 1: //Emerald
check = getDataFromBlock(0x405, 1, 2);
if ( (check[0]&0x10) == 0)
has_mistery_event = false;
else
has_mistery_event = true;
check = getDataFromBlock(0x40B, 1, 2);
if ( (check[0]&0x8) == 0)
has_mistery_gift = false;
else
has_mistery_gift = true;
break;
case 2: //FRLG
check = getDataFromBlock(0x67, 1, 2);
if ( (check[0]&0x2) == 0)
has_mistery_gift = false;
else
has_mistery_gift = true;
break;
}
}
public void enable_Mistery() //TO DO: emerald mistery event on non-jap?
{
//Check if save has enabled mistery gift
byte[] check = new byte[1];
switch (game)
{
case 0://Not that it has wondercards...but let's see the code for it
check = getDataFromBlock(0x3A9, 1, 2);
if ( (check[0]&0x10) == 0){
Data[getBlockOffset(0x3A9, 2)] = (byte)(check[0]|0x10);
update_section_chk(2);
}
break;
case 1: //Emerald
if (isjap == true) // Mistery event. Save gets deleted if enabled in EUR/USA version
{
check = getDataFromBlock(0x405, 1, 2);
if ( (check[0]&0x10) == 0){
Data[getBlockOffset(0x405, 2)] = (byte)(check[0]|0x10);
update_section_chk(2);
}
}
check = getDataFromBlock(0x40B, 1, 2);
if ( (check[0]&0x8) == 0){
Data[getBlockOffset(0x40B, 2)] = (byte)(check[0]|0x8);
update_section_chk(2);
}
break;
case 2: //FRLG
check = getDataFromBlock(0x67, 1, 2);
if ( (check[0]&0x2) == 0){
Data[getBlockOffset(0x67, 2)] = (byte)(check[0]|0x2);
update_section_chk(2);
}
break;
}
has_Mistery();
}
public byte[] get_WC3()
{
byte[] wc3;
if (isjap)
{
wc3 = new byte[0x4 + 0xA4 + 0x28 + 0x28 + 4 + 0x3E8]; // Checksum + WC + two extra regions + Checksum + Script
getDataFromBlock(wc_offset, 0x4 + 0xA4 + 0x28, 4).CopyTo(wc3, 0);// Checksum + WC + 40 bytes region (includes icon)
getDataFromBlock(wc_offset + 0x4 + 0x14C + 0x28 + 0xC, 0x28, 4).CopyTo(wc3, 0x4 + 0xA4 + 0x28);//0x28 bytes after survey data
getDataFromBlock(wc_script_offset, 4 + 1000 , 4).CopyTo(wc3, 0x4 + 0xA4 + 0x28 + 0x28);//script data
}else
{
wc3 = new byte[0x4 + 0x14C + 0x28 + 0x28 + 4 + 0x3E8];
/*
byte[] temp = getDataFromBlock(wc_offset, 0x4 + 0x14C + 0x28, 4);// Checksum + WC + 40 bytes region (includes icon)
temp.CopyTo(wc3, 0);
temp = getDataFromBlock(wc_offset + 0x4 + 0x14C + 0x28 + 0xC, 0x28, 4);//0x28 bytes after survey data
temp.CopyTo(wc3, 0x4 + 0x14C + 0x28);
temp = getDataFromBlock(wc_script_offset, 4 + 1000 , 4);//script data
temp.CopyTo(wc3, 0x4 + 0x14C + 0x28 + 0x28);
*/
getDataFromBlock(wc_offset, 0x4 + 0x14C + 0x28, 4).CopyTo(wc3, 0);// Checksum + WC + 40 bytes region (includes icon)
getDataFromBlock(wc_offset + 0x4 + 0x14C + 0x28 + 0xC, 0x28, 4).CopyTo(wc3, 0x4 + 0x14C + 0x28);//0x28 bytes after survey data
getDataFromBlock(wc_script_offset, 4 + 1000 , 4).CopyTo(wc3, 0x4 + 0x14C + 0x28 + 0x28);//script data
}
return wc3;
}
public void set_WC3(byte[] wc3)
{
if (isjap)
{
setDataToBlock(wc3.Skip(0).Take(0x4 + 0xA4).ToArray(), wc_offset, 4);// Checksum + WC
setDataToBlock(wc3.Skip(0x4 + 0xA4 + 0xA).Take(0x2).ToArray(), wc_offset + 0x4 + 0xA4 + 0xA, 4);// Icon
//setDataToBlock(wc3.Skip(0x4 + 0xA4 + 0x28).Take(0x28).ToArray(), wc_offset + 0x4 + 0xA4 + 0x28 + 0xC, 4);//0x28 bytes after survey data
setDataToBlock(wc3.Skip(0x4 + 0xA4 + 0x28 + 0x28).Take(4+1000).ToArray(), wc_script_offset, 4);//script data
}
else
{
//setDataToBlock(wc3.Skip(0).Take(0x4 + 0x14C + 0x28).ToArray(), wc_offset, 4);// Checksum + WC + 40 bytes region (includes icon)
setDataToBlock(wc3.Skip(0).Take(0x4 + 0x14C).ToArray(), wc_offset, 4);// Checksum + WC
setDataToBlock(wc3.Skip(0x4 + 0x14C + 0xA).Take(0x2).ToArray(), wc_offset + 0x4 + 0x14C + 0xA, 4);// Icon
//setDataToBlock(wc3.Skip(0x4 + 0x14C + 0x28).Take(0x28).ToArray(), wc_offset + 0x4 + 0x14C + 0x28 + 0xC, 4);//0x28 bytes after survey data
setDataToBlock(wc3.Skip(0x4 + 0x14C + 0x28 + 0x28).Take(4+1000).ToArray(), wc_script_offset, 4);//script data
}
}
public byte[] get_WCN()
{
byte[] wcn;
if(isjap)
{
wcn = new byte[WCN_SIZE_jap];
getDataFromBlock(wcn_offset, WCN_SIZE_jap, 4).CopyTo(wcn, 0);
}
else
{
wcn = new byte[WCN_SIZE];
getDataFromBlock(wcn_offset, WCN_SIZE, 4).CopyTo(wcn, 0);
}
return wcn;
}
public void set_WCN(byte[] wcn)
{
if(isjap)
{
setDataToBlock(wcn.Skip(0).Take(WCN_SIZE_jap).ToArray(), wcn_offset, 4);// Checksum + WCN
}
else
{
setDataToBlock(wcn.Skip(0).Take(WCN_SIZE).ToArray(), wcn_offset, 4);// Checksum + WCN
}
}
public byte[] get_ECT()
{
byte[] ect = new byte[ECT.SIZE_ECT];
getDataFromBlock(ect_offset, ECT.SIZE_ECT, 0).CopyTo(ect, 0);
return ect;
}
public void set_ECT(byte[] ect)
{
setDataToBlock(ect.Skip(0).Take(ECT.SIZE_ECT).ToArray(), ect_offset, 0);
}
public byte[] get_ECB()
{
byte[] berry = new byte[BERRY_SIZE];
getDataFromBlock(BERRY_OFFSET_RS, BERRY_SIZE, 4).CopyTo(berry, 0);
return berry;
}
public void set_ECB(byte[] berry)
{
set_Enigma_Flag();
setDataToBlock(berry.Skip(0).Take(BERRY_SIZE).ToArray(), BERRY_OFFSET_RS, 4);
}
public bool has_berry()
{
byte[] check = getDataFromBlock(BERRY_OFFSET_RS, 1, 4);
if (check[0] == 0x00)
return false;
else
return true;
}
public int has_ME3()
{
byte[] me3 = get_ME3();
//MessageBox.Show(me3.Length.ToString());
if (BitConverter.ToInt32(me3, 0) == 0) // No script
{ //MessageBox.Show(BitConverter.ToInt32(me3, 0).ToString());
//MessageBox.Show(BitConverter.ToInt32(me3, me3_size-ME3_ITEM_SIZE).ToString());
//MessageBox.Show(me3[1004].ToString());
if (BitConverter.ToInt32(me3, me3_size-ME3_ITEM_SIZE) == 0) //No item either
return 0; //No me3
else
return 2; //No me3, but item data is present
}
return 1;
}
public byte[] get_ME3()
{
byte[] me3 = new byte[me3_size];
getDataFromBlock(me3_offset, me3_size, 4).CopyTo(me3, 0);
return me3;
}
public void set_ME3(byte[] me3)
{
setDataToBlock(me3.Skip(0).Take(me3_size).ToArray(), me3_offset, 4);// Script+item
}
public byte[] get_decorations()
{
byte[] decor = new byte[150];
if (game == 0){
getDataFromBlock(0x7a0, 150, 3).CopyTo(decor, 0);
}else if (game == 1)
{
getDataFromBlock(0x834, 150, 3).CopyTo(decor, 0);
}
return decor;
}
public void set_decoration(byte[] decor)
{
if (game == 0)
setDataToBlock(decor.Skip(0).Take(150).ToArray(), 0x7a0, 3);
else if (game == 1)
setDataToBlock(decor.Skip(0).Take(150).ToArray(), 0x834, 3);
}
//TV shows
public byte[] get_TV_EVENT()
{
byte[] tvevent = new byte[0x4*16];
getDataFromBlock(tv_event_offset, 0x4*16, 3).CopyTo(tvevent, 0);
return tvevent;
}
public void set_TV_EVENT(byte[] tvevent)
{
setDataToBlock(tvevent.Skip(0).Take(0x4*16).ToArray(), tv_event_offset, 3);
}
public byte[] get_TV_OUTBREAK()
{
byte[] tvoutbreak = new byte[0x24];
getDataFromBlock(tv_outbreak_offset, 0x24, 3).CopyTo(tvoutbreak, 0);
return tvoutbreak;
}
public void set_TV_OUTBREAK(byte[] tvoutbreak)
{
setDataToBlock(tvoutbreak.Skip(0).Take(0x24).ToArray(), tv_outbreak_offset, 3);
}
public byte[] get_TV_SHOWS()
{
byte[] tvshows = new byte[0x24*7];
getDataFromBlock(tv_shows_offset, 0x24*7, 3).CopyTo(tvshows, 0);
return tvshows;
}
public void set_TV_SHOWS(byte[] tvshows)
{
setDataToBlock(tvshows.Skip(0).Take(0x24*7).ToArray(), tv_shows_offset, 3);
}
public byte[] get_TV_OUTBREAK_EXTRA()
{
byte[] tvoutbreak_extra = new byte[0x14];
getDataFromBlock(tv_outbreak_data_offset, 0x14, 3).CopyTo(tvoutbreak_extra, 0);
return tvoutbreak_extra;
}
public void set_TV_OUTBREAK_EXTRA(byte[] tvoutbreak_extra)
{
setDataToBlock(tvoutbreak_extra.Skip(0).Take(0x14).ToArray(), tv_outbreak_data_offset, 3);
}
// check for the nocash signature
private void checkNocash()
{
if (Data[0x0] == 0x4E && Data[0x01] == 0x6F && Data[0x02] == 0x63 &&
Data[0x03] == 0x61 && Data[0x04] == 0x73 && Data[0x05] == 0x68)
{
noCash = 0x4C;
}
else
{
noCash = 0x0;
}
}
// find current save by comparing both save counters from first and second save block
void checkCurrentSav()
{
UInt64 savIndex1, savIndex2;
savIndex1 = (UInt64) (
(Data[0xFFF + noCash] <<24 & 0xFFFFFFFF) +
(Data[0xFFE + noCash] <<16 & 0xFFFFFF) +
(Data[0xFFD + noCash] <<8 & 0xFFFF) +
(Data[0xFFC + noCash] & 0xFF) );
savIndex2 = (UInt64) (
(Data[0xEFFF + noCash] <<24 & 0xFFFFFFFF) +
(Data[0xEFFE + noCash] <<16 & 0xFFFFFF) +
(Data[0xEFFD + noCash] <<8 & 0xFFFF) +
(Data[0xEFFC + noCash] & 0xFF) );
if (savIndex1 >= savIndex2)
{
currentSav = (UInt16) (0x0 + noCash);
oldSav = (UInt16) (0xE000 + noCash);
}
else if (savIndex1 < savIndex2)
{
currentSav = (UInt16) (0xE000 + noCash);
oldSav = (UInt16) (0x0 + noCash);
}
}
//From Kaphoticc's PSavFixV2
private Int32 Chksum(int length, byte[] Data)
{
Int32 Chk,i,tmp;
length = length>>2;
Chk=0;
for(i=0; i<length; i++){
Chk = unchecked( Chk + (Int32) BitConverter.ToInt32(Data, i*4));
//MessageBox.Show(BitConverter.ToInt32(Data, i*4).ToString("X"));
}
//MessageBox.Show(Chk.ToString("X"));
tmp = (Int32)(Chk>>16);
tmp +=Chk;
Chk = (Int32)(tmp&0xFFFF);
return Chk;
}
public void update_section_chk(int block)
{
ushort chk = (ushort)(Chksum(DATALEN[block], getDataFromBlock(0, DATALEN[block], block)) & 0x0000FFFF);
//MessageBox.Show(chk.ToString("X"));
setDataToBlock(BitConverter.GetBytes(chk), 0xFF6, block);
}
public void update_section_chk_old(int block)
{
ushort chk = (ushort)(Chksum(DATALEN[block], getDataFromBlock_old(0, DATALEN[block], block)) & 0x0000FFFF);
//MessageBox.Show(chk.ToString("X"));
setDataToBlock_old(BitConverter.GetBytes(chk), 0xFF6, block);
}
public void fix_section_checksums()
{
//update_section_chk(2);
int i=0;
for(i=0;i<14;i++)
update_section_chk(i);
for(i=0;i<14;i++)
update_section_chk_old(i);
}
public byte[] getSortedSave(int save)
{
byte[] sortedsave = new byte[0x1000*14];
int i=0;
for (i=0;i<14;i++)
{
if (save == 0)
getDataFromBlock(0, 0x1000, i).CopyTo(sortedsave, 0x1000*i);
else
getDataFromBlock_old(0, 0x1000, i).CopyTo(sortedsave, 0x1000*i);
}
return sortedsave;
}
public void enable_eon_emerald()
{
byte flag;
flag = getDataFromBlock(0x49A, 1, 2)[0];
flag = (byte)(flag|0x01);
Data[getBlockOffset(0x49A, 2)] = flag;
update_section_chk(2);
//Input distro item
Data[getBlockOffset(0xC94, 4)] = 0xAC;
Data[getBlockOffset(0xC95, 4)] = 0x0;
Data[getBlockOffset(0xC96, 4)] = 0x0;
Data[getBlockOffset(0xC97, 4)] = 0x0;
//Item
Data[getBlockOffset(0xC98, 4)] = 0x01;
Data[getBlockOffset(0xC99, 4)] = 0x97;
Data[getBlockOffset(0xC9A, 4)] = 0x13;
Data[getBlockOffset(0xC9B, 4)] = 0x01;
}
public bool has_EggEvent_Flag()
{
//Check if save has enabled mistery gift
byte[] check = new byte[1];
switch (game)
{
/* case 0://Not that it has wondercards...but let's see the code for it
check = getDataFromBlock(0x3A9, 1, 2);
if ( (check[0]&0x10) == 0)
has_mistery_event = false;
else
has_mistery_event = true;
break;
*/
case 1: //Emerald
check = getDataFromBlock(0x32C, 1, 2);
if ( (check[0]&0x10) == 0)
return false;
else
return true;
//break;
case 2: //FRLG
check = getDataFromBlock(0xf5B, 1, 1);
if ( (check[0]&0x01) == 0)
return false;
else
return true;
//break;
}
return false;
}
public void clear_EggEvent_Flag()
{
//Check if save has enabled mistery gift
byte[] check = new byte[1];
switch (game)
{
case 1: //Emerald
check = getDataFromBlock(0x32C, 1, 2);
if ( (check[0]&0x10) != 0)
{
check[0] = (byte)(check[0]&(~0x10));
setDataToBlock(check, 0x32C, 2);
update_section_chk(2);
}
break;
case 2: //FRLG
check = getDataFromBlock(0xf5B, 1, 1);
if ( (check[0]&0x01) != 0)
{
check[0] = (byte)(check[0]&(~0x01));
setDataToBlock(check, 0xf5b, 1);
update_section_chk(1);
}
break;
}
}
public void set_Enigma_Flag()
{
//Check if save has enabled mistery gift
byte[] check = new byte[1];
switch (game)
{
case 0: //RS
Data[getBlockOffset(0x41A, 2)] = 0x01;
update_section_chk(2);
break;
}
}
}
}

382
wc3_tool/WC3/TV.cs Normal file
View File

@ -0,0 +1,382 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 13/05/2016
* Time: 14:03
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WC3_TOOL
{
public class TV_EVENTS
{
private int tv_event_size = 0x4*16;
public byte[] Data;
public TV_EVENTS(byte[] data)
{
Data = (byte[])(data ?? new byte[tv_event_size]).Clone();
load_events();
return;
}
public byte[] getData(int Offset, int Length)
{
return Data.Skip(Offset).Take(Length).ToArray();
}
public void setData(byte[] input, int Offset)
{
input.CopyTo(Data, Offset);
}
public EVENT[] events = new EVENT[16];
public void load_events()
{
int i=0;
for(i=0;i<16;i++)
{
events[i] = new EVENT(getData(EVENT.event_size*i, EVENT.event_size));
}
}
public void set_events()
{
int i=0;
for(i=0;i<16;i++)
{
setData(events[i].Data, EVENT.event_size*i);
}
}
}
public class TV_SHOWS
{
private int tv_size = 0x24*7;
public byte[] Data;
public TV_SHOWS(byte[] data)
{
Data = (byte[])(data ?? new byte[tv_size]).Clone();
load_shows();
return;
}
public byte[] getData(int Offset, int Length)
{
return Data.Skip(Offset).Take(Length).ToArray();
}
public void setData(byte[] input, int Offset)
{
input.CopyTo(Data, Offset);
}
public SHOW[] shows = new SHOW[7];
public void load_shows()
{
int i=0;
for(i=0;i<7;i++)
{
shows[i] = new SHOW(getData(SHOW.show_size*i, SHOW.show_size));
}
}
public void set_shows()
{
int i=0;
for(i=0;i<7;i++)
{
setData(shows[i].Data, SHOW.show_size*i);
}
}
}
public class EVENT
{
public static int event_size = 0x4;
public byte[] Data;
public EVENT(byte[] data)
{
Data = (byte[])(data ?? new byte[event_size]).Clone();
}
public byte[] getData(int Offset, int Length)
{
return Data.Skip(Offset).Take(Length).ToArray();
}
public void setData(byte[] input, int Offset)
{
input.CopyTo(Data, Offset);
}
public byte ID
{
get{ return Data[0x0];}
set{ Data[0x0] = (byte)value;}
}
public byte status
{
get{ return Data[0x1];}
set{ Data[0x1] = (byte)value;}
}
public UInt16 days_to_tv
{
get{ return BitConverter.ToUInt16(getData(0x2, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0x2);}
}
}
/*
Offsets
RAM 0x281F0 - 0x2822F (RS)
0x28550 - 0x2858F (E)
Save Section 3 0xBBC - 0xBFB (RS)
Section 3 0xC50 - 0xC8F (E)
Structure
0x01 Event ID
0x02 Status (0 - seen, 1 - not yet seen, 2 - seen + event active)
0x03 - 0x04 Days remaining until event is active (announcement starts 2 days before)
Event ID
1 Big Sale (Slateport Energy Guru)
2 Service Day (Mauville Game Corner)
3 Clear-Out-Sale (Lilycove Department Store)
4 Blend Master (Lilycove Contest Hall) (Emerald only!)
*/
public class SHOW
{
public static int show_size = 0x24;
public byte[] Data;
public SHOW(byte[] data)
{
Data = (byte[])(data ?? new byte[show_size]).Clone();
}
public byte[] getData(int Offset, int Length)
{
return Data.Skip(Offset).Take(Length).ToArray();
}
public void setData(byte[] input, int Offset)
{
input.CopyTo(Data, Offset);
}
//Data common to all shows
public byte ID
{
get{ return Data[0x0];}
set{ Data[0x0] = (byte)value;}
}
public byte status
{
get{ return Data[0x1];}
set{ Data[0x1] = (byte)value;}
}
/*
public bool status
{
get{ if(Data[0x1] == 1) return true; else return false;}
set{ if (value == true) Data[0x1] = 0x01; else Data[0x1] = 0;}
}
*/
public UInt16 TID_own
{
get{ return BitConverter.ToUInt16(getData(0x20, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0x20);}
}
public UInt16 TID_mixed
{
get{ return BitConverter.ToUInt16(getData(0x22, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0x22);}
}
//Data dependent of show
//ID 0x29 (Outbreak)
public UInt16 outbreak_move1
{
get{ return BitConverter.ToUInt16(getData(0x04, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0x04);}
}
public UInt16 outbreak_move2
{
get{ return BitConverter.ToUInt16(getData(0x06, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0x06);}
}
public UInt16 outbreak_move3
{
get{ return BitConverter.ToUInt16(getData(0x08, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0x08);}
}
public UInt16 outbreak_move4
{
get{ return BitConverter.ToUInt16(getData(0x0A, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0x0A);}
}
public UInt16 outbreak_species
{
get{ return BitConverter.ToUInt16(getData(0xC, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0xC);}
}
public UInt16 outbreak_map
{
get{ return BitConverter.ToUInt16(getData(0x10, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0x10);}
}
public byte outbreak_level
{
get{ return Data[0x14];}
set{ Data[0x14] = (byte)value;}
}
public byte outbreak_appearance
{
get{ return Data[0x13];}
set{ Data[0x13] = (byte)value;}
}
public UInt16 outbreak_days_to_tv
{
get{ return BitConverter.ToUInt16(getData(0x16, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0x16);}
}
public UInt16 outbreak_remaining_days
{
get{ return BitConverter.ToUInt16(getData(0x18, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0x18);}
}
//End of outbreak data
}
/*
Outbreak TV Show
When you watched the Outbreak announcement, data gets written to the Extra Data (see below).
Offsets
RAM 0x27E6C - 0x281CB (RS)
0x281CC - 0x2852B (E)
Save Section 3 0x838 - 0xB97 (RS)
Section 3 0x8CC - 0xC2B (E)
Structure
0x00 Show ID (0x29 for Outbreak)
0x01 Status (0 - seen, 1 - not yet seen; you can't see the announcement if you already have an active outbreak)
0x02 - 0x03 00 00
0x04 - 0x05 Move 1
0x06 - 0x07 Move 2
0x08 - 0x09 Move 3
0x0A - 0x0B Move 4
0x0C - 0x0D Species ID
0x0E - 0x0F 00 00
0x10 - 0x11 Location Map Index (use Advance Map to see them)
0x12 00
0x13 Appearance rate (50% (0x32) by default)
0x14 Level
0x15 00
0x16 - 0x17 Days remaining until show is on TV (set to 1 if received via record mixing)
0x18 - 0x19 Days the outbreak will last (2 by default)
0x1A - 0x1F 00 00 00 00 00 00
0x20 - 0x21 Own Trainer ID
0x22 - 0x23 Trainer ID of the game from which the data was received via record mixing
*/
public class SWARM
{
public static int swarm_size = 0x14;
public byte[] Data;
public SWARM(byte[] data)
{
Data = (byte[])(data ?? new byte[swarm_size]).Clone();
}
public byte[] getData(int Offset, int Length)
{
return Data.Skip(Offset).Take(Length).ToArray();
}
public void setData(byte[] input, int Offset)
{
input.CopyTo(Data, Offset);
}
public UInt16 species
{
get{ return BitConverter.ToUInt16(getData(0, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0);}
}
public UInt16 map
{
get{ return BitConverter.ToUInt16(getData(2, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 2);}
}
public byte level
{
get{ return Data[0x4];}
set{ Data[0x4] = (byte)value;}
}
public UInt16 move1
{
get{ return BitConverter.ToUInt16(getData(0x08, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0x08);}
}
public UInt16 move2
{
get{ return BitConverter.ToUInt16(getData(0x0A, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0x0A);}
}
public UInt16 move3
{
get{ return BitConverter.ToUInt16(getData(0x0C, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0x0C);}
}
public UInt16 move4
{
get{ return BitConverter.ToUInt16(getData(0x0E, 2), 0);}
set{ setData(BitConverter.GetBytes((UInt16)value), 0x0E);}
}
public byte appearance
{
get{ return Data[0x11];}
set{ Data[0x11] = (byte)value;}
}
public byte remaining_days
{
get{ return Data[0x12];}
set{ Data[0x12] = (byte)value;}
}
}
}
/*
Outbreak Extra Data
When you watched the Outbreak announcement, data gets written here.
It's stored here until the counter at 0x12 reaches 0.
Offsets
RAM 0x28230 - 0x28243 (RS)
0x28590 - 0x285A3 (E)
Save Section 3 0xBFC - 0xC0F (RS)
Section 3 0xC90 - 0xCA3 (E)
Structure
0x00 - 0x01 Species ID
0x02 - 0x03 Location Map Index (use Advance Map to see them)
0x04 Level
0x05 - 0x07 00 00 00
0x08 - 0x09 Move 1
0x0A - 0x0B Move 2
0x0C - 0x0D Move 3
0x0E - 0x0F Move 4
0x10 00
0x11 Appearance rate (50% (0x32) by default)
0x12 Days the outbreak will last (2 by default; counts down daily)
*/

4698
wc3_tool/WC3/TV_editor.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

278
wc3_tool/WC3/TV_editor.cs Normal file
View File

@ -0,0 +1,278 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 13/05/2016
* Time: 14:03
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WC3_TOOL
{
/// <summary>
/// Description of TV_editor.
/// </summary>
public partial class TV_editor : Form
{
SAV3 sav3file;
public string savfilter = MainScreen.savfilter;
//TV data
TV_EVENTS events;
SHOW ingame_swarm;
TV_SHOWS shows;
SWARM swarm;
public TV_editor(SAV3 save)
{
InitializeComponent();
sav3file = save;
events = new TV_EVENTS (sav3file.get_TV_EVENT());
ingame_swarm = new SHOW(sav3file.get_TV_OUTBREAK());
shows = new TV_SHOWS(sav3file.get_TV_SHOWS());
swarm = new SWARM(sav3file.get_TV_OUTBREAK_EXTRA());
load_data();
}
void load_data()
{
load_event();
load_swarm();
load_show();
}
void load_event()
{
event_id.SelectedIndex = events.events[(int)event_slot.Value].ID;
event_status.SelectedIndex = events.events[(int)event_slot.Value].status;
event_days.Value = events.events[(int)event_slot.Value].days_to_tv;
}
void set_event()
{
events.events[(int)event_slot.Value].ID = (byte)event_id.SelectedIndex;
events.events[(int)event_slot.Value].status = (byte)event_status.SelectedIndex;
events.events[(int)event_slot.Value].days_to_tv = (UInt16)event_days.Value;
}
void load_swarm()
{
current_species.SelectedIndex = swarm.species;
current_level.Value = swarm.level;
current_move1.SelectedIndex = swarm.move1;
current_move2.SelectedIndex = swarm.move2;
current_move3.SelectedIndex = swarm.move3;
current_move4.SelectedIndex = swarm.move4;
current_map.Value = swarm.map;
current_appearance.Value = swarm.appearance;
current_remaining.Value = swarm.remaining_days;
}
void set_swarm()
{
swarm.species = (UInt16)current_species.SelectedIndex;
swarm.level = (byte)current_level.Value;
swarm.move1 = (UInt16)current_move1.SelectedIndex;
swarm.move2 = (UInt16)current_move2.SelectedIndex;
swarm.move3 = (UInt16)current_move3.SelectedIndex;
swarm.move4 = (UInt16)current_move4.SelectedIndex;
swarm.map = (UInt16)current_map.Value;
swarm.appearance = (byte)current_appearance.Value;
swarm.remaining_days = (byte)current_remaining.Value;
}
void load_show()
{
if (tv_slot.Value == 0)
{
tv_id.Value = ingame_swarm.ID;
tv_status.SelectedIndex = ingame_swarm.status;
tv_tid.Value = ingame_swarm.TID_own;
tv_mix_tid.Value = ingame_swarm.TID_mixed;
}else
{
tv_id.Value = shows.shows[(int)(tv_slot.Value-1)].ID;
tv_status.SelectedIndex = shows.shows[(int)(tv_slot.Value-1)].status;
tv_tid.Value = shows.shows[(int)(tv_slot.Value-1)].TID_own;
tv_mix_tid.Value = shows.shows[(int)(tv_slot.Value-1)].TID_mixed;
}
load_outbreak();
}
void Save_butClick(object sender, EventArgs e)
{
events.set_events();
shows.set_shows();
sav3file.set_TV_EVENT(events.Data);
sav3file.set_TV_OUTBREAK(ingame_swarm.Data);
sav3file.set_TV_SHOWS(shows.Data);
sav3file.set_TV_OUTBREAK_EXTRA(swarm.Data);
sav3file.update_section_chk(3);
FileIO.save_data(sav3file.Data, savfilter);
}
void Event_slotValueChanged(object sender, EventArgs e)
{
load_event();
}
void Swarm_deleteClick(object sender, EventArgs e)
{
delete_current_swarm();
load_swarm();
}
void delete_current_swarm()
{
int i = 0;
for (i=0; i<SWARM.swarm_size;i++)
{
swarm.Data[i] = 0;
}
}
void load_outbreak()
{
if (tv_slot.Value == 0) //Ingame outbreak
{
tv_outbreak_group.Enabled = true;
outbreak_activation.Value = ingame_swarm.outbreak_days_to_tv;
outbreak_map.Value = ingame_swarm.outbreak_map;
outbreak_availability.Value = ingame_swarm.outbreak_appearance;
outbreak_remaining.Value = ingame_swarm.outbreak_appearance;
outbreak_species.SelectedIndex = ingame_swarm.outbreak_species;
outbreak_level.Value = ingame_swarm.outbreak_level;
outbreak_move1.SelectedIndex = ingame_swarm.outbreak_move1;
outbreak_move2.SelectedIndex = ingame_swarm.outbreak_move2;
outbreak_move3.SelectedIndex = ingame_swarm.outbreak_move3;
outbreak_move4.SelectedIndex = ingame_swarm.outbreak_move4;
}else if (tv_slot.Value != 0 && tv_id.Value == 0x29)
{
tv_outbreak_group.Enabled = true;
outbreak_activation.Value = shows.shows[(int)(tv_slot.Value-1)].outbreak_days_to_tv;
outbreak_map.Value = shows.shows[(int)(tv_slot.Value-1)].outbreak_map;
outbreak_availability.Value = shows.shows[(int)(tv_slot.Value-1)].outbreak_appearance;
outbreak_remaining.Value = shows.shows[(int)(tv_slot.Value-1)].outbreak_appearance;
outbreak_species.SelectedIndex = shows.shows[(int)(tv_slot.Value-1)].outbreak_species;
outbreak_level.Value = shows.shows[(int)(tv_slot.Value-1)].outbreak_level;
outbreak_move1.SelectedIndex = shows.shows[(int)(tv_slot.Value-1)].outbreak_move1;
outbreak_move2.SelectedIndex = shows.shows[(int)(tv_slot.Value-1)].outbreak_move2;
outbreak_move3.SelectedIndex = shows.shows[(int)(tv_slot.Value-1)].outbreak_move3;
outbreak_move4.SelectedIndex = shows.shows[(int)(tv_slot.Value-1)].outbreak_move4;
}
else{
tv_outbreak_group.Enabled = false;
}
}
void Outbreak_applyClick(object sender, EventArgs e)
{
if (tv_slot.Value == 0) //Ingame outbreak show
{
ingame_swarm.outbreak_days_to_tv = (UInt16)outbreak_activation.Value;
ingame_swarm.outbreak_map = (UInt16)outbreak_map.Value;
ingame_swarm.outbreak_appearance = (byte)outbreak_availability.Value;
ingame_swarm.outbreak_appearance = (byte)outbreak_remaining.Value;
ingame_swarm.outbreak_species = (UInt16)outbreak_species.SelectedIndex;
ingame_swarm.outbreak_level = (byte)outbreak_level.Value;
ingame_swarm.outbreak_move1 = (UInt16)outbreak_move1.SelectedIndex;
ingame_swarm.outbreak_move2 = (UInt16)outbreak_move2.SelectedIndex;
ingame_swarm.outbreak_move3 = (UInt16)outbreak_move3.SelectedIndex;
ingame_swarm.outbreak_move4 = (UInt16)outbreak_move4.SelectedIndex;
}else if (tv_slot.Value != 0 && tv_id.Value == 0x29)
{
shows.shows[(int)(tv_slot.Value-1)].outbreak_days_to_tv = (UInt16)outbreak_activation.Value;
shows.shows[(int)(tv_slot.Value-1)].outbreak_map = (UInt16)outbreak_map.Value;
shows.shows[(int)(tv_slot.Value-1)].outbreak_appearance = (byte)outbreak_availability.Value;
shows.shows[(int)(tv_slot.Value-1)].outbreak_appearance = (byte)outbreak_remaining.Value;
shows.shows[(int)(tv_slot.Value-1)].outbreak_species = (UInt16)outbreak_species.SelectedIndex;
shows.shows[(int)(tv_slot.Value-1)].outbreak_level = (byte)outbreak_level.Value;
shows.shows[(int)(tv_slot.Value-1)].outbreak_move1 = (UInt16)outbreak_move1.SelectedIndex;
shows.shows[(int)(tv_slot.Value-1)].outbreak_move2 = (UInt16)outbreak_move2.SelectedIndex;
shows.shows[(int)(tv_slot.Value-1)].outbreak_move3 = (UInt16)outbreak_move3.SelectedIndex;
shows.shows[(int)(tv_slot.Value-1)].outbreak_move4 = (UInt16)outbreak_move4.SelectedIndex;
}
MessageBox.Show("Outbreak Show Updated!");
}
void Tv_statusSelectedIndexChanged(object sender, EventArgs e)
{
if (tv_slot.Value == 0)
{
ingame_swarm.status = (byte)tv_status.SelectedIndex;
}else
{
shows.shows[(int)(tv_slot.Value-1)].status = (byte)tv_status.SelectedIndex;
}
}
void Tv_tidValueChanged(object sender, EventArgs e)
{
if (tv_slot.Value == 0)
{
ingame_swarm.TID_own = (UInt16)tv_tid.Value;
}else
{
shows.shows[(int)(tv_slot.Value-1)].TID_own = (UInt16)tv_tid.Value;
}
}
void Tv_mix_tidValueChanged(object sender, EventArgs e)
{
if (tv_slot.Value == 0)
{
ingame_swarm.TID_mixed = (UInt16)tv_mix_tid.Value;
}else
{
shows.shows[(int)(tv_slot.Value-1)].TID_mixed = (UInt16)tv_mix_tid.Value;
}
}
void Tv_idValueChanged(object sender, EventArgs e)
{
if (tv_slot.Value == 0)
{
tv_id.Value = ingame_swarm.ID;
}else
{
tv_id.Value = shows.shows[(int)(tv_slot.Value-1)].ID;
}
}
void Tv_slotValueChanged(object sender, EventArgs e)
{
load_show();
}
void Event_statusSelectedIndexChanged(object sender, EventArgs e)
{
}
void Event_idSelectedIndexChanged(object sender, EventArgs e)
{
}
void Event_daysValueChanged(object sender, EventArgs e)
{
}
void Swarm_applyClick(object sender, EventArgs e)
{
set_swarm();
}
void Event_applyClick(object sender, EventArgs e)
{
set_event();
}
}
}

120
wc3_tool/WC3/TV_editor.resx Normal file
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>

676
wc3_tool/WC3/Tickets.resx Normal file
View File

@ -0,0 +1,676 @@
<?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>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="DE_AURORA_FRLG_FILE" type="System.Byte[], mscorlib">
<value>
7OUAAOgD//8AAAAACAAAAAAAAAAAAAAAu8/Mycy7zsO9xb/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAM7V6efX3Nfj6eTj4gAAAAAAAAAAAAAAAAAAAAAAALzZ293WANjd19wA3eLnAMnW2ebb2efX3OPn
5wDZ3eLZ5wAAAAAAAADKxcfIrr2/yM6/zOcA6eLYAOjm3draANjZ4gC84+jZ4gDd4gAAAAAAweb24q0A
v+Hk2tXi29kA2NXnALvPzMnMu87DvcW/zgDp4tgAAAAAAOfd19zZ5tkA1eLn19zg3dkV2eLYANjV5wDN
5N3Z4KsAAAAAAAAAAADR3ebaANjZ4gDO1enn19zX4+nk4+IA4t3X3OgA69nbuADZ3NkAAAAA2OkA2NXn
ALvPzMnMu87DvcW/zgDZ5tzV4OjZ4gDc1efoqwAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsOoCbwAAAAAAAAAAAAAAAAAAAAAFsAAA
M////7i+NAEIalorpwK7ASI1AQgr5AK7ASI1AQhHcwEBACENgAEAuwEiNQEIvSs1AQhmbUZzAQEAIQ2A
AAC7ARk1AQgaAIBzARoBgAEACQApSwgppwK9jjUBCGZtbAK9GzYBCGZtbAK96DUBCGZtbAK+1eLf2bgA
2NXn5wDY6QDY1ecAwb/Cv8PHrv7Bv829wr/Cv8gA1tni6eju6ADc1eforfu+6QDh6efn6AD9AQDn2d3i
rf7C3dnmAN3n6ADZ3eIAzt3X39noANr25gDY3dfcq/++6QDf1eLi5+gA2ecA1eEAwtXa2eIA6uPi/snM
u8jDuwC9w87TANnd4ufZ6O7Z4q370dXm6eEA5Obj1t3Z5ufoANjpANnnAOLd19zo/tnd4trV19wA1enn
rP++1eLf2bgA2NXn5wDY6QDY1ecAwb/Cv8PHrv7Bv829wr/Cv8gA1tni6eju6ADc1efoq//J3LgA2ecA
6OnoAOHd5gDG2d3YAP0BqwC+3dn+vLvNw82uw86/x67Ou829wr8A3eIA2Nnd4tnh+ry/z86/xgDd5+gA
6uPg4K36xtXb2ebZANno69XnANXp2gDY2d3i2eEAyr0A6eLY+t/j4eHZANXi59fc4N3ZFdni2ADu6eb2
19+t/7ieNgEIalorpwK7AQI3AQgr5AK7AQI3AQhHcwEBACENgAEAuwECNwEIvQs3AQhmbUZzAQEAIQ2A
AAC7Afk2AQgaAIBzARoBgAEACQApSwgppwK9YjcBCGZtbAK93zcBCGZtbAK9tTcBCGZtbALB5tXu3dkA
5NnmAOnn1ebZAN3gAM3d5+jZ4dX+vsnIyQDNv8HMv87JrfvO6QDn2d0A/QG4AOrZ5uOsAMLjAOXp3f7p
4gDW3dvg3dno6OMA5NnmAOjZrf++4+rm2dbW2QDn2ebq3ebo3QDV4ADk4+bo4wDY3f67zLvIvcPJysnG
w637zt0A1+Pi6t3Z4tkA1eLY1ebZANUA6tnY2ebZ/tjdAOTZ5ufj4tWt/8Hm1e7d2QDk2eYA6efV5tkA
3eAAzd3n6Nnh1f6+ycjJAM2/wcy/zsmt/8ncuADh3QDn5N3V19mtAMbVAM67zb27AM3OzM/Hv8jOw/68
u82/ANjZ4ADo6eMA1LvDyMkAGgDk3dni1a37zuPm4tUA1QDo5uPq1ebh3QDY4+TjANXq2eb+2Nnk4+fd
6NXo4wDl6dXg1+Pn1QDi2eAAyr2t/7hUOAEIalorpwK7Abg4AQgr5AK7Abg4AQhHcwEBACENgAEAuwG4
OAEIvcE4AQhmbUZzAQEAIQ2AAAC7Aa84AQgaAIBzARoBgAEACQApAA==
</value>
</data>
<data name="FR_AURORA_E_FILE" type="System.Byte[], mscorlib">
<value>
R4EAAOgD//8AAAAACAAAAAAAAAAAAAAAzsO9xb/Ou8/Mycy7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAvdXm6NkA2LS/19zV4tvZAAAAAAAAAAAAAAAAAAAAALvg4NnuABYA4LQb6NXb2QDY6QC9v8jOzL8A
ysnFG8fJyADZ6AAAAADY3ebd29nururj6ecA6tnm5wDg2QDg3erm2enmANzV1t3g4BsA2eIA6tnm6K0A
yubZ4tnuAODZAM7DvcW/zrvPzMnMuwDk6d3nAAAAAAAAAOfV6erZ29Xm2NnuAODVAOTV5ujd2asAAAAA
AAAAAAAAAAAAAAAAAADI2QDe2ejZ7gDk1ecA19no6NkAvdXm6NkA2LS/19zV4tvZAAAAAAAA1erV4ugA
2LTV6uPd5gDm2RnpAODZAM7DvcW/zrvPzMnMu60AAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbSwAA
M////7gnBAAIalorOgG7AYsEAAgrrQG7AYsEAAhHcwEBACENgAEAuwGLBAAIvZQEAAhmbUZzAQEAIQ2A
AAC7AYIEAAgaAIBzARoBgAEACQAp1QgpOgG97QQACGZtbAK9awUACGZtbAK9QgUACGZtbALH2ebX3QDY
tOno3eDd59nmAODZAOft5+ga4dn+vbu+v7vPAMfTzc6t+9Dj6ecA2Nnq2e4AHOjm2QD9Aa3+w+AA7QDV
AOniAOjd19/Z6ADk4+nmAOrj6eet/8PgAOTZ6egAHOjm2QDp6N3g3ecbANXpAOTj5ugA2Nn+yL/Iz73M
w8vPv637v+fn1e3Z7q7g2QDk4+nmAOrj3eYA2NkA5enj3QD+3eAA57TV293orf/H2ebX3QDYtOno3eDd
59nmAODZAOft5+ga4dn+vbu+v7vPAMfTzc6t/8ncuADe2QDm2dvm2ejo2QD9Aa0AxtUAysm9wr/+ybzE
rQDMu8y/zQDY6QDNu70A2efoAOTg2d3i2a37wNXd6NnnAODZAOjm3QDY1eLnAOrj6ObZAM27vQDZ6P7m
2erZ4tnuAOTg6ecA6NXm2K3/uNkFAAhqWis6AbsBPQYACCutAbsBPQYACEdzAQEAIQ2AAQC7AT0GAAi9
RgYACGZtRnMBAQAhDYAAALsBNAYACBoAgHMBGgGAAQAJACnVCCk6Ab2pBgAIZm1sAr06BwAIZm1sAr0H
BwAIZm1sAr7V4t/ZuADY1efnANjpANjV5wDBv8K/w8eu/sG/zb3Cv8K/yADW2eLp6O7oANzV5+it+77p
AOHp5+foAP0BAOfZ3eKt/sLd2eYA3efoANnd4gDO3dff2egA2vbmANjd19yr/77pAN/V4uLn6ADZ5wDV
4QDC1drZ4gDq4+L+zb+/wcy7zc/GvAC9w87TANnd4ufZ6O7Z4q370dXm6eEA5Obj1t3Z5ufoANjpANnn
AOLd19zo/tnd4trV19wA1ennrP++1eLf2bgA2NXn5wDY6QDY1ecAwb/Cv8PHrv7Bv829wr/Cv8gA1tni
6eju6ADc1efoq//J3LgA2ecA6OnoAOHd5gDG2d3YAP0BqwC+3dn+vLvNw82uw86/x67Ou829wr8A3eIA
2Nnd4tnh+ry/z86/xgDd5+gA6uPg4K36xtXb2ebZANno69XnANXp2gDY2d3i2eEAyr0A6eLY+t/j4eHZ
ANXi59fc4N3ZFdni2ADu6eb219+t/7i9BwAIalorOgG7ASEIAAgrrQG7ASEIAAhHcwEBACENgAEAuwEh
CAAIvSoIAAhmbUZzAQEAIQ2AAAC7ARgIAAgaAIBzARoBgAEACQApAA==
</value>
</data>
<data name="IT_AURORA_E_FILE" type="System.Byte[], mscorlib">
<value>
k+kAAOgD//8AAAAACAAAAAAAAAAAAAC8w8HGw7/OzskAu8/Mycy7AAAAAAAAAAAAAAAAAAAAAAAAAAAA
zdfc2djVAMzd6N3m4wC83dvg3dno6OMAAAAAAAAAAAAAANDV3QDV4ADk5t3h4wDk3dXi4wDY2eAAvb/I
zszJAMrJxRvHycgA2QDd4tfj4ujm1QDgtNXY2Nno6OMA1eDg1QDX4+Ln2dvi1QDq2efo3ejj2N0A6tnm
2NmtAMzd19nq3QDd4AC8w8HGw7/OzskAu8/Mycy7ANkAAOTj3QDn1eDq1QDd4ADb3ePX46sAAAAAAAAA
AAAAAAAAAAAAAAAAAADI4+IA29no6NXm2QDg1QDN19zZ2NUAzN3o3ebjALzd2+Dd2ejo4wAA5Obd4dUA
2N0A5t3X2erZ5tkA3eAAvMPBxsO/zs7JALvPzMnMu6sAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACbjwAA
M////7i9BwAIalorOgG7ASEIAAgrrQG7ASEIAAhHcwEBACENgAEAuwEhCAAIvSoIAAhmbUZzAQEAIQ2A
AAC7ARgIAAgaAIBzARoBgAEACQAp1QgpOgG9gQgACGZtbAK9AgkACGZtbAK92AgACGZtbALB5tXu3dkA
5NnmAOnn1ebZAN3gAM3d5+jZ4dX+vsnIyQDNv8HMv87JrfvO6QDn2d0A/QG4AOrZ5uOsAMLjAOXp3f7p
4gDW3dvg3dno6OMA5NnmAOjZrf++4+rm2dbW2QDn2ebq3ebo3QDV4ADk4+bo4wDY3f7KyczOyQC7xsHC
v8rJxsOt+87dANfj4urd2eLZANXi2NXm2QDVAOrZ2Nnm2f7Y3QDk2ebn4+LVrf/B5tXu3dkA5NnmAOnn
1ebZAN3gAM3d5+jZ4dX+vsnIyQDNv8HMv87Jrf/J3LgA4d0A5+Td1dfZrQDG1QDOu829uwDNzszPx7/I
zsP+vLvNvwDY2eAA6OnjANS7w8jJABoA5N3Z4tWt+87j5uLVANUA6Obj6tXm4d0A2OPk4wDV6tnm/tjZ
5OPn3ejV6OMA5enV4Nfj59UA4tngAMq9rf+4dwkACGpaKzoBuwHbCQAIK60BuwHbCQAIR3MBAQAhDYAB
ALsB2wkACL3kCQAIZm1GcwEBACENgAAAuwHSCQAIGgCAcwEaAYABAAkAKdUIKToBvU0KAAhmbWwCvfAK
AAhmbWwCvb0KAAhmbWwCwebV193V5wDk4+YA6efV5gDZ4ADn3efo2eHV/tjZ4ADMv8G7xskAx8PNzr/M
w8nNya37vtnW2ecA2NkA59nmAP0BuABR4uOs+8rp2ecA6Nni2eHj5wDp4gDo3dff2egA5NXm1QDo3a3/
ytXm2dfZAOXp2QDk6dnY2ecA6efV5uDjANniANng/srPv8zOyQDY2QC9w8++u74AvbvMx1rIrftRyuPm
AOXpGwDi4wDX6ebd4+fZ1ecA6eIA5OPX4/7k1ebVAOrZ5gDY2QDl6RsA59kA6ObV6NWs/8Hm1dfd1ecA
5OPmAOnn1eYA2eAA593n6Nnh1f7Y2eAAzL/Bu8bJAMfDzc6/zMPJzcmt/8bjAOfd2eLo47gA/QGtAL/g
ALzJxs3DxsbJANjZ/uDj5wDJvMS/zsnNAL3Gu9C/uADZ5+gXAODg2eLjrfvB6dXm2NUA1eDb4wDZ4gDZ
4ADKvQDtAOrp2eDq2QDhF+f+6NXm2Nmt/wAAALUKSAAhECIM8ED+CEkAIAhwASBAQgLwHfoA8Av4AAYA
KAHQAPBO+AG8AEcAAAADEAAAAzC1DU0AJCAFAAwAIQpKgCNbAQzwAA==
</value>
</data>
<data name="IT_AURORA_FRLG_FILE" type="System.Byte[], mscorlib">
<value>
k+kAAOgD//8AAAAACAAAAAAAAAAAAAC8w8HGw7/OzskAu8/Mycy7AAAAAAAAAAAAAAAAAAAAAAAAAAAA
zdfc2djVAMzd6N3m4wC83dvg3dno6OMAAAAAAAAAAAAAANDV3QDV4ADk5t3h4wDk3dXi4wDY2eAAvb/I
zszJAMrJxRvHycgA2QDd4tfj4ujm1QDgtNXY2Nno6OMA1eDg1QDX4+Ln2dvi1QDq2efo3ejj2N0A6tnm
2NmtAMzd19nq3QDd4AC8w8HGw7/OzskAu8/Mycy7ANkAAOTj3QDn1eDq1QDd4ADb3ePX46sAAAAAAAAA
AAAAAAAAAAAAAAAAAADI4+IA29no6NXm2QDg1QDN19zZ2NUAzN3o3ebjALzd2+Dd2ejo4wAA5Obd4dUA
2N0A5t3X2erZ5tkA3eAAvMPBxsO/zs7JALvPzMnMu6sAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHPhLLoAAAAAAAAAAAAAAAAAAAAAc+EsusFsJpsAAAAAAAAAAAAAAADfGwAA
M////7ieNgEIalorpwK7AQI3AQgr5AK7AQI3AQhHcwEBACENgAEAuwECNwEIvQs3AQhmbUZzAQEAIQ2A
AAC7Afk2AQgaAIBzARoBgAEACQApSwgppwK9YjcBCGZtbAK93zcBCGZtbAK9tTcBCGZtbALB5tXu3dkA
5NnmAOnn1ebZAN3gAM3d5+jZ4dX+vsnIyQDNv8HMv87JrfvO6QDn2d0A/QG4AOrZ5uOsAMLjAOXp3f7p
4gDW3dvg3dno6OMA5NnmAOjZrf++4+rm2dbW2QDn2ebq3ebo3QDV4ADk4+bo4wDY3f67zLvIvcPJysnG
w637zt0A1+Pi6t3Z4tkA1eLY1ebZANUA6tnY2ebZ/tjdAOTZ5ufj4tWt/8Hm1e7d2QDk2eYA6efV5tkA
3eAAzd3n6Nnh1f6+ycjJAM2/wcy/zsmt/8ncuADh3QDn5N3V19mtAMbVAM67zb27AM3OzM/Hv8jOw/68
u82/ANjZ4ADo6eMA1LvDyMkAGgDk3dni1a37zuPm4tUA1QDo5uPq1ebh3QDY4+TjANXq2eb+2Nnk4+fd
6NXo4wDl6dXg1+Pn1QDi2eAAyr2t/7hUOAEIalorpwK7Abg4AQgr5AK7Abg4AQhHcwEBACENgAEAuwG4
OAEIvcE4AQhmbUZzAQEAIQ2AAAC7Aa84AQgaAIBzARoBgAEACQApSwgppwK9KjkBCGZtbAK9zTkBCGZt
bAK9mjkBCGZtbALB5tXX3dXnAOTj5gDp59XmANngAOfd5+jZ4dX+2NngAMy/wbvGyQDHw83Ov8zDyc3J
rfu+2dbZ5wDY2QDn2eYA/QG4AFHi46z7yunZ5wDo2eLZ4ePnAOniAOjd19/Z6ADk1ebVAOjdrf/K1ebZ
19kA5enZAOTp2djZ5wDp59Xm4OMA2eIA2eD+ys+/zM7JANjZAL3Dz767vgC9u8zHWsit+1HK4+YA5ekb
AOLjANfp5t3j59nV5wDp4gDk49fj/uTV5tUA6tnmANjZAOXpGwDn2QDo5tXo1az/webV193V5wDk4+YA
6efV5gDZ4ADn3efo2eHV/tjZ4ADMv8G7xskAx8PNzr/Mw8nNya3/xuMA593Z4ujjuAD9Aa0Av+AAvMnG
zcPGxskA2Nn+4OPnAMm8xL/Oyc0Avca70L+4ANnn6BcA4ODZ4uOt+8Hp1ebY1QDV4NvjANniANngAMq9
AO0A6unZ4OrZAOEX5/7o1ebY2a3/AAIAAgD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0/
AAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</value>
</data>
<data name="IT_EON_FILE" type="System.Byte[], mscorlib">
<value>
OZwAADMIAQG4aAAAAkcTAQEAIQ2AAQC7AcYAAAJKEwEBACENgAEAuwHGAAACK84AuwHGAAACalq90AAA
AmZtRhMBAQAhDYAAALsBxwAAAhoAgBMBGgGAAQAJAClTCL0QAQACZm1sDb1KAQACZm1sAsq7ygHwAM3Z
4dbm1QDd4AC8w8HGw7/OzskA5NnmAOni/ujm1dvc2ejo47gA4dXdAOrd5+jjAOni4wDX4+cerf++4+rm
2efo3QDV4tjV5tkA1dgAu8bBwr/KycbDANn+19zd2djZ5tkA2N0A19zZAOfdAOjm1ejo1a3/w+AA6Onj
ANS7w8jJABoA5N3Z4uOtra37wNXdAOniAOTjtADY3QDn5NXu3eMA2QDo4+bi1f7VANrV5uHdAOrd593o
1a3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAAAAAZcTAQ==
</value>
</data>
<data name="SP_AURORA_FRLG_FILE" type="System.Byte[], mscorlib">
<value>
F9gAAOgD//8AAAAACAAAAAAAAAAAAAAAAMnMw67Ow73Fv84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
0LvGvwDKycwAogDJzMOuzsO9xb/OAAAAAAAAAAAAAAAAANDZANXgAOTm3eHZ5gDk3efjANjZ4AC9v8jO
zMkAysnFG8fJyAAAAADtANzV1uDVANfj4gDg1QDk2ebn4+LVANjZAOrZ5tjZrQAAAAAAAAAAvenV4tjj
AOjZANni6ObZ2+nZANngAMnMw67Ow73Fv864AAAAAAAAAFLb6dXm2NUA4NUA5NXm6N3Y1asAAAAAAAAA
AAAAAAAAAAAAAAAAAABSUsjjAOjd5tnnANnn6NkA0LvGv6urAFLG4wDi2dfZ593o1ecAAAAA5NXm1QDm
2dfd1t3mANngAMnMw67Ow73Fv86rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkYAAA
M////7hUOAEIalorpwK7Abg4AQgr5AK7Abg4AQhHcwEBACENgAEAuwG4OAEIvcE4AQhmbUZzAQEAIQ2A
AAC7Aa84AQgaAIBzARoBgAEACQApSwgppwK9KjkBCGZtbAK9zTkBCGZtbAK9mjkBCGZtbALB5tXX3dXn
AOTj5gDp59XmANngAOfd5+jZ4dX+2NngAMy/wbvGyQDHw83Ov8zDyc3Jrfu+2dbZ5wDY2QDn2eYA/QG4
AFHi46z7yunZ5wDo2eLZ4ePnAOniAOjd19/Z6ADk1ebVAOjdrf/K1ebZ19kA5enZAOTp2djZ5wDp59Xm
4OMA2eIA2eD+ys+/zM7JANjZAL3Dz767vgC9u8zHWsit+1HK4+YA5ekbAOLjANfp5t3j59nV5wDp4gDk
49fj/uTV5tUA6tnmANjZAOXpGwDn2QDo5tXo1az/webV193V5wDk4+YA6efV5gDZ4ADn3efo2eHV/tjZ
4ADMv8G7xskAx8PNzr/Mw8nNya3/xuMA593Z4ujjuAD9Aa0Av+AAvMnGzcPGxskA2Nn+4OPnAMm8xL/O
yc0Avca70L+4ANnn6BcA4ODZ4uOt+8Hp1ebY1QDV4NvjANniANngAMq9AO0A6unZ4OrZAOEX5/7o1ebY
2a3/AAIAAgD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0/AAgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAABAkUAEFVUk8AAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAEQEAABAAAAAQAAABEAAAABEQAAAQAA
AAEAAAAAEBAAEBAQAAABABAAEAAQABAAAQAAAQEAAAEBAAABAAAQEBAAEBAQAAAAEBERARAAAAAQAAAA
EAAAAAAREQEAABAQAAAQEBEREQEAAAABAAAQAAAAEAAAAAEAEBEAAAAAEBAAABAQAAEAABAQAAABAAEA
AAAQAAAAAAEAAAAAAAAQEAAQEBAREREBABAAABAQEAAQEAABARAAAQEQAAEAABAQAAAREAABEAAREQAB
AAEBARAAAQABAAEAABEAAAAAEBAAEBAQEBERAAAAAQAAEREBAAAQABAAAAAAEREAAAAQEAAAEBAAAAEA
ABAAAAABAAAAEAAAAAABAAAAEAAAABAQAAAAEBAQEQEQABAAEAAQABAAEAAAARAAAAABAAAAEBAAABAQ
ABERAAAAAAEAABAAAAAAABAAAAAAEREBAAAQEAAQEBAQEREAAAABAA==
</value>
</data>
<data name="USA_AURORA_E_FILE" type="System.Byte[], mscorlib">
<value>
/IUAAOgD//8AAAAACAAAAAAAAAAAAAAAu8/Mycy7zsO9xb/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAL/s19zV4tvZAL3V5tgAAAAAAAAAAAAAAAAAAAAAAMHjAOjjAOjc2QDn2dfj4tgA2uDj4+YA49oA
6NzZAMrJxRvHycgAAAC9v8jOv8wA1eLYAOHZ2egA6NzZANjZ4N3q2ebtAOTZ5ufj4gDd4gAA2+bZ2eKt
AMzZ19nd6tkA6NzZALvPzMnMu87DvcW/zgDV4tgAAAAAAOjc2eIA59Xq2QDo3NkA29Xh2aurAAAAAAAA
AAAAAAAAAAAAAAAAAAC+4wDi4+gA6OPn5wDo3N3nAL/s19zV4tvZAL3V5tgAAAAAAAAAAAAA1tna4+bZ
AObZ19nd6t3i2wDo3NkAu8/Mycy7zsO9xb/Oq6sAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADqpgAA
M////7hYAgAIalorOgG7AbwCAAgrrQG7AbwCAAhHcwEBACENgAEAuwG8AgAIvcUCAAhmbUZzAQEAIQ2A
AAC7AbMCAAgaAIBzARoBgAEACQAp1QgpOgG9IgMACGZtbAK9swMACGZtbAK9hgMACGZtbALO3NXi3wDt
4+kA2uPmAOnn3eLbAOjc2QDH083Ov8zT/sHDwM4Aze3n6NnhrfvT4+kA4enn6ADW2QD9Aa3+ztzZ5tkA
3ecA1QDo3dff2egA3Nnm2QDa4+YA7ePprf/D6ADV5OTZ1ebnAOjjANbZANrj5gDp59kA1egA6NzZ/sbD
xtO9ydC/AL3DztMA5OPm6K370dztAOLj6ADb3erZAN3oANUA6ObtANXi2ADn2dkA69zV6P7d6ADd5wDV
1uPp6Kz/ztzV4t8A7ePpANrj5gDp593i2wDo3NkAx9PNzr/M0/7Bw8DOAM3t5+jZ4a3/ydy4AMO04QDn
4+bm7bgA/QGt/tPj6eYAvLvBtOcAxb/TAMPOv8fNAMrJvcW/zgDd5wDa6eDgrfvK4NnV59kA5+jj5tkA
5+Ph2ejc3eLbAOPiAO3j6eYAyr24/ujc2eIA1+Ph2QDW1dffANrj5gDo3N3nrf+4JwQACGpaKzoBuwGL
BAAIK60BuwGLBAAIR3MBAQAhDYABALsBiwQACL2UBAAIZm1GcwEBACENgAAAuwGCBAAIGgCAcwEaAYAB
AAkAKdUIKToBve0EAAhmbWwCvWsFAAhmbWwCvUIFAAhmbWwCx9nm190A2LTp6N3g3efZ5gDg2QDn7efo
GuHZ/r27vr+7zwDH083OrfvQ4+nnANjZ6tnuABzo5tkA/QGt/sPgAO0A1QDp4gDo3dff2egA5OPp5gDq
4+nnrf/D4ADk2enoABzo5tkA6ejd4N3nGwDV6QDk4+boANjZ/si/yM+9zMPLz7+t+7/n59Xt2e6u4NkA
5OPp5gDq493mANjZAOXp490A/t3gAOe01dvd6K3/x9nm190A2LTp6N3g3efZ5gDg2QDn7efoGuHZ/r27
vr+7zwDH083Orf/J3LgA3tkA5tnb5tno6NkA/QGtAMbVAMrJvcK//sm8xK0AzLvMv80A2OkAzbu9ANnn
6ADk4Nnd4tmt+8DV3ejZ5wDg2QDo5t0A2NXi5wDq4+jm2QDNu70A2ej+5tnq2eLZ7gDk4OnnAOjV5tit
/7jZBQAIalorOgG7AT0GAAgrrQG7AT0GAAhHcwEBACENgAEAuwE9BgAIvUYGAAhmbUZzAQEAIQ2AAAC7
ATQGAAgaAIBzARoBgAEACQAp1QgpOgG9qQYACGZtbAK9OgcACGZtAA==
</value>
</data>
<data name="USA_AURORA_FRLG_FILE" type="System.Byte[], mscorlib">
<value>
bNAAAOgD//8AAAAACAAAAAAAAAAAAACxu8/Mycy7AM7DvcW/zrIAAAAAAAAAAAAAAAAAAAAAAAAAAAC/
7Nfc1eLb2QC91ebYAKOhoaUAwLvGxgAAAAAAAAAAAAAAAMHjAOjjAOjc2QDn2dfj4tgA2uDj4+YA49oA
6NzZAMrJxRvHycgAAAC9v8jOv8wA1eLYAOHZ2egA6NzZANjZ4N3q2ebtAOTZ5ufj4gDd4gAA2+bZ2eKt
AMzZ19nd6tkA6NzZALvPzMnMuwDOw73Fv84A1eLYAAAAAOjc2eIA59Xq2QDo3NkA29Xh2aurAAAAAAAA
AAAAAAAAAAAAAAAAAAC+4wDi4+gA6OPn5wDo3N3nAL/s19zV4tvZAL3V5tgAAAAAAAAAAAAA1tna4+bZ
AObZ19nd6t3i2wDo3NkAu8/Mycy7AM7DvcW/zqurAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAATfyegWMQLtGi2UGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbHAAA
M////7goJwEIalorpwK7AYwnAQgr5AK7AYwnAQhHcwEBACENgAEAuwGMJwEIvZUnAQhmbUZzAQEAIQ2A
AAC7AYMnAQgaAIBzARoBgAEACQApSwgppwK98icBCGZtbAK9hCgBCGZtbAK9VygBCGZtbALO3NXi3wDt
4+kA2uPmAOnn3eLbAOjc2QDH083Ov8zT/sHDwM4Aze3n6NnhrfvT4+kA4enn6ADW2QD9Aa3+ztzZ5tkA
3ecA1QDo3dff2egA3Nnm2QDa4+YA7ePprf/D6ADV5OTZ1ebnAOjjANbZANrj5gDp59kA1egA6NzZ/tC/
zMfDxsPJyAC9w87TAOTj5uit+9Hc7QDi4+gA293q2QDd6ADVAOjm7QDV4tgA59nZAOvc1ej+3egA3ecA
1dbj6eis/87c1eLfAO3j6QDa4+YA6efd4tsA6NzZAMfTzc6/zNP+wcPAzgDN7efo2eGt/8ncuADDtOEA
5+Pm5u24AP0BrQDT4+nmALy7wbTn/sW/0wDDzr/HzQDKyb3Fv84A3ecA2ung4K37yuDZ1efZAOfo4+bZ
AOfj4dno3N3i2wDj4gDt4+nmAMq9uP7o3NniANfj4dkA1tXX3wDa4+YA6Nzd563/AgACAP//AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3TYACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAQVVSTwAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEBAAARAQAAEAAAABAAAAEQAAAAERAAABAAAAAQAAAAAQEAAQEBAAAAEA
EAAQABAAEAABAAABAQAAAQEAAAEAABAQEAAQEBAAAAAQEREBEAAAABAAAAAQAAAAABERAQAAEBAAABAQ
ERERAQAAAAEAABAAAAAQAAAAAQAQEQAAAAAQEAAAEBAAAQAAEBAAAAEAAQAAABAAAAAAAQAAAAAAABAQ
ABAQEBEREQEAEAAAEBAQABAQAAEBEAABARAAAQAAEBAAABEQAAEQABERAAEAAQEBEAABAAEAAQAAEQAA
AAAQEAAQEBAQEREAAAABAAAREQEAABAAEAAAAAAREQAAABAQAAAQEAAAAQAAEAAAAAEAAAAQAAAAAAEA
AAAQAAAAEBAAAAAQEBARARAAEAAQABAAEAAQAAABEAAAAAEAAAAQEAAAEBAAEREAAAAAAQAAEAAAAAAA
EAAAAAAREQEAABAQABAQEBAREQAAAAEAAAAQAAAAEAAQAAAAABERAA==
</value>
</data>
<data name="USA_EON_ECARD_FILE" type="System.Byte[], mscorlib">
<value>
EOoAADMIAQG4YQAAAkcTAQEAIQ2AAQC7Ab8AAAJKEwEBACENgAEAuwG/AAACK84AuwG/AAACalq9yQAA
AmZtRhMBAQAhDYAAALsBwAAAAhoAgBMBGgGAAQAJAClTCL0EAQACZm1sDb2DAQACZm1sAr67vrH9AasA
wePj2ADo4wDn2dkA7ePpq/7O3Nnm2bTnANUA4Nno6NnmANzZ5tkA2uPmAO3j6bj9Aa3/vru+scPoANXk
5NnV5ucA6OMA1tkA1QDa2ebm7QDOw73Fv86t/tbp6ADDtOrZAOLZ6tnmAOfZ2eIA4+LZAODd39kA3egA
1tna4+bZrfrT4+kA59zj6eDYAOrd593oAMbDxtO9ydC/ANXi2ADV59/+1dbj6egA3egA6NzZ5tmt/767
vrH9AbQA6NzZAMW/0wDDzr/HzQDKyb3Fv84A3eL+7ePp5gC8u8EA3ecA2ung4K37x+Pq2QDn4+HZAN/Z
7QDd6Nnh5wDa4+YA59Xa2d/Z2eTd4tv+3eIA7ePp5gDKvbQA6NzZ4gDX4+HZAOfZ2QDh2a3/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAAAR4TAQ==
</value>
</data>
<data name="USA_MYSTIC_E_FILE" type="System.Byte[], mscorlib">
<value>
bQIAAOkD//8AAAAAHAAAALHH083Ow70AzsO9xb/OsgC/7Nfc1eLb2QC91ebYAAAAAAAAAAAAAADOvcEA
0cnMxr4AvcK7x8rDycjNwsPKzQCjoaGmAAAAAAAAAAAAAMHjAOjjAOjc2QDn2dfj4tgA2uDj4+YA49oA
6NzZAMrJxRvHycgAAAC9v8jOv8wA1eLYAOHZ2egA6NzZANjZ4N3q2ebtAOTZ5ufj4gDd4gAA2+bZ2eKt
AMzZ19nd6tkA6NzZAMfTzc7DvQDOw73Fv84A1eLYAAAAAOjc2eIA59Xq2QDo3NkA29Xh2aurAAAAAAAA
AAAAAAAAAAAAAAAAAAC+4wDi4+gA6OPn5wDo3N3nAL/s19zV4tvZAL3V5tgAAAAAAAAAAAAA1tna4+bZ
AObZ19nd6t3i2wDo3NkAx9PNzsO9AM7DvcW/zqurAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA40AAA
M////7hYAgAIalorOwG7AcUCAAgrkQC7AcUCAAgrkgC7AcUCAAhHcgEBACENgAEAuwHFAgAIvc4CAAhm
bUZyAQEAIQ2AAAC7AbwCAAgaAIByARoBgAEACQAp4AgpOwG9KwMACGZtbAK9vAMACGZtbAK9jwMACGZt
bALO3NXi3wDt4+kA2uPmAOnn3eLbAOjc2QDH083Ov8zT/sHDwM4Aze3n6NnhrfvT4+kA4enn6ADW2QD9
Aa3+ztzZ5tkA3ecA1QDo3dff2egA3Nnm2QDa4+YA7ePprf/D6ADV5OTZ1ebnAOjjANbZANrj5gDp59kA
1egA6NzZ/sbDxtO9ydC/AL3DztMA5OPm6K370dztAOLj6ADb3erZAN3oANUA6ObtANXi2ADn2dkA69zV
6P7d6ADd5wDV1uPp6Kz/ztzV4t8A7ePpANrj5gDp593i2wDo3NkAx9PNzr/M0/7Bw8DOAM3t5+jZ4a3/
ydy4AMO04QDn4+bm7bgA/QGt/tPj6eYAvLvBtOcAxb/TAMPOv8fNAMrJvcW/zgDd5wDa6eDgrfvK4NnV
59kA5+jj5tkA5+Ph2ejc3eLbAOPiAO3j6eYAyr24/ujc2eIA1+Ph2QDW1dffANrj5gDo3N3nrf8AtQpI
ACEQIgzwHP4ISQAgCHABIEBCAvAd+gDwC/gABgAoAdAA8E74AbwARwAAAAMQAAADMLUNTQAkIAUADAAh
CkqAI1sBDPCF+ygcCEkEIgzwpP0AKA/RACAA8In4BUqpGAloiEIH0QEgC+AAAAACECwBCPwPAAABNAEs
3d0A8AX4ACAwvAK8CEcAAIGwCUoAIACQCEhpRgFgQmAHSYFggGgHSABoEGC0MgEgEIABsHBHAAAAAAAC
1AAABAAEAIUQLAEI8LVXRk5GRUbgtIGwAScAIIJGACU4A3kciUYRSc4ZEUlAGIBGNHhsQAEgBEAkATwZ
IAQADAAhQkaAI1sBDPAo+zgcAPAz+KQAB0kMGSFoiEIM0TB4RUABIAVANXAX4AAABAAAAgAAAAIUAAAC
AS0L0VFGAJELSGlGAWBBRkFgCkmBYIBoUEYwcAE1AS3K3U9GDy++3QGwOLyYRqFGqkbwvAG8AEfUAAAE
AAQAhRC1gCPbAAAiACgA0QE7mkII2gZJAANEGBkcAcwSGAE5ACn60RAcELwCvAhHAAAAAvC1JU8lSAAh
QVY6HAMcAClZ0QAlIkkAIAhWACgK0Q8tYdABNQ8tBdxoGAB4AAYAFgAo9NAAIBhWAChE0QElGE6oGQB4
AAYAFgAoENA6HVIZEHgBIUhAEHAQeAABLBgoHP/3tv+iADkcFDGJAA==
</value>
</data>
<data name="JAP_AURORA_FRLG_FILE" type="System.Byte[], mscorlib">
<value>
nMwAAOgD//8AAAAACABVrnt3YVmgZAAbBwYEAFaulQCjoaGlABUSAAAAAAAAiq5xLQAaPSITAJ9Zc35e
fmCuGQCjBgIdAAIKA6sAVa57d2FZoGQtACMnAwoUNwBEBykmqwAAAAAAAAAAYVmgZC0AIydQECcADTl6
n65kqwBhWaBkLQAjJwMfBBYAChlWrpUtAA0TFQJEAAhBCwKrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAABnVQAAM////7gcKwEIalorpwK7AYArAQgr5AK7AYArAQhHcwEBACENgAEAuwGAKwEIvYkr
AQhmbUZzAQEAIQ2AAAC7AXcrAQgaAIBzARoBgAEACQApSwgppwK90ysBCGZtbAK9KSwBCGZtbAK9BiwB
CGZtbAIcDDgVBQgoIxkALQA7KCYD/gIQQQcAASg3FAMAOzwCHw2r+v0BCx8ARA0Y+wEVEAsfAAETFv4K
GQBhWaBkN/oFCCcqEwAHHwwQ/1hhllxjgBkAHBUSB0YARP4SBgQpACYDRA0Y+z8bADsoJgMADBMgExr+
AgY3RAw2Awas/xwMOBUFCCgjGQAtADsoJgP+AhBBBwABKDcUAwA7PAIfDBD/DAYMAP0BCx+r/hACDhIV
Ixk3AAJQSwIARA37m19afhYAAT4JEwYn/h8QAAcTCEELAv8AAgACAP//AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAQTcACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABAAAAECRQAQVVSTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAEBAAARAQAAEAAAABAAAAEQAAAAERAAABAAAAAQAAAAAQEAAQEBAAAAEAEAAQABAAEAABAAAB
AQAAAQEAAAEAABAQEAAQEBAAAAAQEREBEAAAABAAAAAQAAAAABERAQAAEBAAABAQERERAQAAAAEAABAA
AAAQAAAAAQAQEQAAAAAQEAAAEBAAAQAAEBAAAAEAAQAAABAAAAAAAQAAAAAAABAQABAQEBEREQEAEAAA
EBAQABAQAAEBEAABARAAAQAAEBAAABEQAAEQABERAAEAAQEBEAABAAEAAQAAEQAAAAAQEAAQEBAQEREA
AAABAAAREQEAABAAEAAAAAAREQAAABAQAAAQEAAAAQAAEAAAAAEAAAAQAAAAAAEAAAAQAAAAEBAAAAAQ
EBARARAAEAAQABAAEAAQAAABEAAAAAEAAAAQEAAAEBAAEREAAAAAAQAAEAAAAAAAEAAAAAAREQEAABAQ
ABAQEBAREQAAAAEAAAAQAAAAEAAQAAAAABERAAAAAQEAAAEBEAAAABAAAAAQAAAAEAAAABAAEAAAEQEA
AAAQEAAAARAQEREBAAABAAARAQAAAQEAABABABARAAAAABAQAAAQEBAAAQAQEREBEQABABAAAQAQAAAB
ABERAAAAEBAAARAQAAEAAQAAEAAQEREBABAAAAABAAAAEBEBAAAQEAAQEBAQEREAAAEAAA==
</value>
</data>
<data name="JAP_EON_FILE" type="System.Byte[], mscorlib">
<value>
njQAADMIAQG4SQAAAkcTAQEAIQ2AAQC7AacAAAJKEwEBACENgAEAuwGnAAACK84AuwGnAAACalq9sQAA
AmZtRhMBAQAhDYAAALsBqAAAAhoAgBMBGgGAAQAJAClTCL3TAAACZm1sDb0DAQACZm1sApubsf0BqwAm
CAAHEBWr/v0BARMZABM3IDcAFEUJJyoQQP+bm7EsEAwjACAQChQZFQL+HBgZAGFZoGQAQRWwsPpwZXMW
AAJQEyApFAACAkErA/+bm7EMBgwA/QH+EAIOEhUjGTcAAlBLAgBBFfubX1p+FgABPgkTBicAHxAHFQsC
/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAAAAAZcTAQ==
</value>
</data>
<data name="JAP_MYSTIC_E_FILE" type="System.Byte[], mscorlib">
<value>
mKcAAOkD//8AAAAAHAAMLkwZYVmgZAAbBwYEAFaulQCjoaGmABwlAAAAAAAAiq5xLQAaPSITAJ9Zc35e
fmCuGQCjBgIdAAIKA6sADC5MGWFZoGQtACMnAwoUNwBEBykmqwAAAAAAAAAAYVmgZC0AIydQECcADTl6
n65kqwBhWaBkLQAjJwMfBBYAChlWrpUtAA0TFQJEAAhBCwKrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAC55wAAM////7hYAgAIalorOwG7AcUCAAgrkQC7AcUCAAgrkgC7AcUCAAhHcgEBACENgAEA
uwHFAgAIvc4CAAhmbUZyAQEAIQ2AAAC7AbwCAAgaAIByARoBgAEACQAp4AgpOwG9GAMACGZtbAK9bgMA
CGZtbAK9SwMACGZtbAIcDDgVBQgoIxkALQA7KCYD/gIQQQcAASg3FAMAOzwCHw2r+v0BCx8ARA0Y+wEV
EAsfAAETFv4KGQBhWaBkN/oFCCcqEwAHHwwQ/3Blc1xjgBkAHBUSB0YARP4SBgQpACYDRA0Y+z8bADso
JgMADBMgExr+AgY3RAw2Awas/xwMOBUFCCgjGQAtADsoJgP+AhBBBwABKDcUAwA7PAIfDBD/DAYMAP0B
Cx+r/hACDhIVIxk3AAJQSwIARA37m19afhYAAT4JEwYn/h8QAAcTCEELAv8AtQpIACEQIgzwGv4ISQAg
CHABIEBCAvAd+gDwC/gABgAoAdAA8E74AbwARwAAAAMQAAADMLUNTQAkIAUADAAhCkqAI1sBDPCD+ygc
CEkEIgzwov0AKA/RACAA8In4BUqpGAloiEIH0QEgC+AAAAAC6CoBCPwPAAABNAEs3d0A8AX4ACAwvAK8
CEcAAIGwCUoAIACQCEhpRgFgQmAHSYFggGgHSABoEGC0MgEgEIABsHBHAAAAAAAC1AAABAAEAIXoKgEI
8LVXRk5GRUbgtIGwAScAIIJGACU4A3kciUYRSc4ZEUlAGIBGNHhsQAEgBEAkATwZIAQADAAhQkaAI1sB
DPAm+zgcAPAz+KQAB0kMGSFoiEIM0TB4RUABIAVANXAX4AAABAAAAgAAAAIUAAACAS0L0VFGAJELSGlG
AWBBRkFgCkmBYIBoUEYwcAE1AS3K3U9GDy++3QGwOLyYRqFGqkbwvAG8AEfUAAAEAAQAhRC1gCPbAAAi
ACgA0QE7mkII2gZJAANEGBkcAcwSGAE5ACn60RAcELwCvAhHAAAAAvC1JU8lSAAhQVY6HAMcAClZ0QAl
IkkAIAhWACgK0Q8tYdABNQ8tBdxoGAB4AAYAFgAo9NAAIBhWAChE0QElGE6oGQB4AAYAFgAoENA6HVIZ
EHgBIUhAEHAQeAABLBgoHP/3tv+iADkcFDGJGAhgATUPLeTdACD/96v/Ckq5GAhgBUkAIAzwkvsAIDBw
A0kBIAhwASAo4AAAAAAAAhAAAAMAAAAD/A8AADgdQBkAeAABLBggBAAMKQOJGAzwd/sAIDBwASAQ4AEl
CUguGAAkNFcALOnRATUPLffdECARHAzwZfsESARwACDwvAK8CEcAAAAAAAMQAAAD8LVXAA==
</value>
</data>
<data name="JAP_MYSTIC_FRLG_FILE" type="System.Byte[], mscorlib">
<value>
mKcAAOkD//8AAAAAHAAMLkwZYVmgZAAbBwYEAFaulQCjoaGmABwlAAAAAAAAiq5xLQAaPSITAJ9Zc35e
fmCuGQCjBgIdAAIKA6sADC5MGWFZoGQtACMnAwoUNwBEBykmqwAAAAAAAAAAYVmgZC0AIydQECcADTl6
n65kqwBhWaBkLQAjJwMfBBYAChlWrpUtAA0TFQJEAAhBCwKrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACJZgAAM////7g0KQEIalorqAK7AaEpAQgr8gK7AaEpAQgr8wK7AaEpAQhHcgEBACENgAEA
uwGhKQEIvaopAQhmbUZyAQEAIQ2AAAC7AZgpAQgaAIByARoBgAEACQApSggpqAK99CkBCGZtbAK9SioB
CGZtbAK9JyoBCGZtbAIcDDgVBQgoIxkALQA7KCYD/gIQQQcAASg3FAMAOzwCHw2r+v0BCx8ARA0Y+wEV
EAsfAAETFv4KGQBhWaBkN/oFCCcqEwAHHwwQ/1hhllxjgBkAHBUSB0YARP4SBgQpACYDRA0Y+z8bADso
JgMADBMgExr+AgY3RAw2Awas/xwMOBUFCCgjGQAtADsoJgP+AhBBBwABKDcUAwA7PAIfDBD/DAYMAP0B
Cx+r/hACDhIVIxk3AAJQSwIARA37m19afhYAAT4JEwYn/h8QAAcTCEELAv8CAAIA//8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABFOAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAQJFABBVVJPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAQEAABEBAAAQAAAAEAAAARAAAAAREAAAEAAAABAAAAABAQABAQEAAAAQAQABAA
EAAQAAEAAAEBAAABAQAAAQAAEBAQABAQEAAAABAREQEQAAAAEAAAABAAAAAAEREBAAAQEAAAEBAREREB
AAAAAQAAEAAAABAAAAABABARAAAAABAQAAAQEAABAAAQEAAAAQABAAAAEAAAAAABAAAAAAAAEBAAEBAQ
ERERAQAQAAAQEBAAEBAAAQEQAAEBEAABAAAQEAAAERAAARAAEREAAQABAQEQAAEAAQABAAARAAAAABAQ
ABAQEBAREQAAAAEAABERAQAAEAAQAAAAABERAAAAEBAAABAQAAABAAAQAAAAAQAAABAAAAAAAQAAABAA
AAAQEAAAABAQEBEBEAAQABAAEAAQABAAAAEQAAAAAQAAABAQAAAQEAAREQAAAAABAAAQAAAAAAAQAAAA
ABERAQAAEBAAEBAQEBERAAAAAQAAABAAAAAQABAAAAAAEREAAAABAQAAAQEQAAAAEAAAABAAAAAQAAAA
EAAQAAARAQAAABAQAAABEBAREQEAAAEAABEBAAABAQAAEAEAEBEAAAAAEBAAABAQEAABABAREQERAAEA
EAABABAAAAEAEREAAAAQEAABEBAAAQABAAAQABAREQEAEAAAAAEAAAAQEQEAABAQABAQAA==
</value>
</data>
<data name="JAP_OLDMAP_E_FILE" type="System.Byte[], mscorlib">
<value>
upkAAOoD//8AAAAAFAAcKUcQBgI+ABsHBgQAVq6VAACjoaGmABUSAAAAAAAAiq5xLQAaPSITAJ9Zc35e
fmCuGQCjBgIdAAIKA6sAHClHEAYCPi0AABMWAiopAAoUNwBEBykmqwAAAAAABgI+LQATFgIqECcADTl6
n65kqwAGAj4tABMWAiopHwQWAAoZVq6VLQ0TFQJEAAhBCwKrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAygQAAM////7hQAgAIalorPAG7AbQCAAgrygG7AbQCAAhHeAEBACENgAEAuwG0AgAIvb0C
AAhmbUZ4AQEAIQ2AAAC7AasCAAgaAIB4ARoBgAEACQAp1ggpPAG9BgMACGZtbAK9XAMACGZtbAK9OQMA
CGZtbAIcDDgVBQgoIxkALQA7KCYD/gIQQQcAASg3FAMAOzwCHw2r+v0BCx8ARA0Y+wEVEAsfAAETFv4K
GQAGAj43+gUIJyoTAAcfDBD/cGVzXGOAGQAcFRIHRgBE/hIGBCkAJgNEDRj7PxsAOygmAwAMEyATGv4C
BjdEDDYDBqz/HAw4FQUIKCMZAC0AOygmA/4CEEEHAAEoNxQDADs8Ah8MEP8MBgwA/QELH6v+EAIOEhUj
GTcAAlBLAgBEDfubX1p+FgABPgkTBif+HxAABxMIQQsC/7iOAwAIalorOgG7AfIDAAgrrQG7AfIDAAhH
cwEBACENgAEAuwHyAwAIvfsDAAhmbUZzAQEAIQ2AAAC7AekDAAgaAIBzARoBgAEACQAp1QgpOgG9WAQA
CGZtbAK96QQACGZtbAK9vAQACGZtbALO3NXi3wDt4+kA2uPmAOnn3eLbAOjc2QDH083Ov8zT/sHDwM4A
ze3n6NnhrfvT4+kA4enn6ADW2QD9Aa3+ztzZ5tkA3ecA1QDo3dff2egA3Nnm2QDa4+YA7ePprf/D6ADV
5OTZ1ebnAOjjANbZANrj5gDp59kA1egA6NzZ/sbDxtO9ydC/AL3DztMA5OPm6K370dztAOLj6ADb3erZ
AN3oANUA6ObtANXi2ADn2dkA69zV6P7d6ADd5wDV1uPp6Kz/ztzV4t8A7ePpANrj5gDp593i2wDo3NkA
x9PNzr/M0/7Bw8DOAM3t5+jZ4a3/ydy4AMO04QDn4+bm7bgA/QGt/tPj6eYAvLvBtOcAxb/TAMPOv8fN
AMrJvcW/zgDd5wDa6eDgrfvK4NnV59kA5+jj5tkA5+Ph2ejc3eLbAOPiAO3j6eYAyr24/ujc2eIA1+Ph
2QDW1dffANrj5gDo3N3nrf+4XQUACGpaKzoBuwHBBQAIK60BuwHBBQAIR3MBAQAhDYABALsBwQUACL3K
BQAIZm1GcwEBACENgAAAuwG4BQAIGgCAcwEaAYABAAkAKdUIKToBvSMGAAhmbWwCvaEGAAhmbWwCvXgG
AAhmbWwCx9nm190A2LTp6N3g3efZ5gDg2QDn7efoGuHZ/r27vr+7zwDH083OrfvQ4+nnANjZ6tnuABzo
5tkA/QGt/sPgAO0A1QDp4gDo3dff2egA5OPp5gDq4+nnrf/D4ADk2enoABzo5tkA6ejdAA==
</value>
</data>
<data name="USA_EON_ITALY_FILE" type="System.Byte[], mscorlib">
<value>
8JsAADMIAQG4UgAAAkcTAQEAIQ2AAQC7AbAAAAJKEwEBACENgAEAuwGwAAACK84AuwGwAAACalq9ugAA
AmZtRhMBAQAhDYAAALsBsQAAAhoAgBMBGgGAAQAJAClTCL0IAQACZm1sDb06AQACZm1sAr67vvAAw+gA
1eTk2dXm5wDo4wDW2QDVANrZ5ubtAM7DvcW/zrj+1unoAMO06tkA4tnq2eYA59nZ4gDj4tkA4N3f2QDd
6ADW2drj5tmt/9Pj6QDn3OPp4NgA6t3n3egAxsPG073J0L8A1eLYANXn3/7V1uPp6ADd6ADo3Nnm2a3/
ztzZALy7wQDd5wDa6eDgAK2trfvT4+kA59zj6eDYAOHV39kA5uPj4QDV4tgA1+Ph2QDW1dff/uDV6Nnm
rf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAAAAAZcTAQ==
</value>
</data>
<data name="DE_AURORA_E_FILE" type="System.Byte[], mscorlib">
<value>
7OUAAOgD//8AAAAACAAAAAAAAAAAAAAAu8/Mycy7zsO9xb/OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAM7V6efX3Nfj6eTj4gAAAAAAAAAAAAAAAAAAAAAAALzZ293WANjd19wA3eLnAMnW2ebb2efX3OPn
5wDZ3eLZ5wAAAAAAAADKxcfIrr2/yM6/zOcA6eLYAOjm3draANjZ4gC84+jZ4gDd4gAAAAAAweb24q0A
v+Hk2tXi29kA2NXnALvPzMnMu87DvcW/zgDp4tgAAAAAAOfd19zZ5tkA1eLn19zg3dkV2eLYANjV5wDN
5N3Z4KsAAAAAAAAAAADR3ebaANjZ4gDO1enn19zX4+nk4+IA4t3X3OgA69nbuADZ3NkAAAAA2OkA2NXn
ALvPzMnMu87DvcW/zgDZ5tzV4OjZ4gDc1efoqwAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6UwAA
M////7jZBQAIalorOgG7AT0GAAgrrQG7AT0GAAhHcwEBACENgAEAuwE9BgAIvUYGAAhmbUZzAQEAIQ2A
AAC7ATQGAAgaAIBzARoBgAEACQAp1QgpOgG9qQYACGZtbAK9OgcACGZtbAK9BwcACGZtbAK+1eLf2bgA
2NXn5wDY6QDY1ecAwb/Cv8PHrv7Bv829wr/Cv8gA1tni6eju6ADc1eforfu+6QDh6efn6AD9AQDn2d3i
rf7C3dnmAN3n6ADZ3eIAzt3X39noANr25gDY3dfcq/++6QDf1eLi5+gA2ecA1eEAwtXa2eIA6uPi/s2/
v8HMu83PxrwAvcPO0wDZ3eLn2eju2eKt+9HV5unhAOTm49bd2ebn6ADY6QDZ5wDi3dfc6P7Z3eLa1dfc
ANXp56z/vtXi39m4ANjV5+cA2OkA2NXnAMG/wr/Dx67+wb/NvcK/wr/IANbZ4uno7ugA3NXn6Kv/ydy4
ANnnAOjp6ADh3eYAxtnd2AD9AasAvt3Z/ry7zcPNrsPOv8euzrvNvcK/AN3iANjZ3eLZ4fq8v8/Ov8YA
3efoAOrj4OCt+sbV29nm2QDZ6OvV5wDV6doA2Nnd4tnhAMq9AOni2Prf4+Hh2QDV4ufX3ODd2RXZ4tgA
7unm9tffrf+4vQcACGpaKzoBuwEhCAAIK60BuwEhCAAIR3MBAQAhDYABALsBIQgACL0qCAAIZm1GcwEB
ACENgAAAuwEYCAAIGgCAcwEaAYABAAkAKdUIKToBvYEIAAhmbWwCvQIJAAhmbWwCvdgIAAhmbWwCwebV
7t3ZAOTZ5gDp59Xm2QDd4ADN3efo2eHV/r7JyMkAzb/BzL/Oya37zukA59ndAP0BuADq2ebjrADC4wDl
6d3+6eIA1t3b4N3Z6OjjAOTZ5gDo2a3/vuPq5tnW1tkA59nm6t3m6N0A1eAA5OPm6OMA2N3+ysnMzskA
u8bBwr/KycbDrfvO3QDX4+Lq3dni2QDV4tjV5tkA1QDq2djZ5tn+2N0A5Nnm5+Pi1a3/webV7t3ZAOTZ
5gDp59Xm2QDd4ADN3efo2eHV/r7JyMkAzb/BzL/Oya3/ydy4AOHdAOfk3dXX2a0AxtUAzrvNvbsAzc7M
z8e/yM7D/ry7zb8A2NngAOjp4wDUu8PIyQAaAOTd2eLVrfvO4+bi1QDVAOjm4+rV5uHdANjj5OMA1erZ
5v7Y2eTj593o1ejjAOXp1eDX4+fVAOLZ4ADKva3/uHcJAAhqWis6AbsB2wkACCutAbsB2wkACEdzAQEA
IQ2AAQC7AdsJAAi95AkACGZtRnMBAQAhDYAAALsB0gkACBoAgHMBAA==
</value>
</data>
<data name="DE_EON_FILE" type="System.Byte[], mscorlib">
<value>
eK8AADMIAQG4ZAAAAkcTAQEAIQ2AAQC7AcIAAAJKEwEBACENgAEAuwHCAAACK84AuwHCAAACalq9zAAA
AmZtRhMBAQAhDYAAALsBwwAAAhoAgBMBGgGAAQAJAClTCL0XAQACZm1sDb1hAQACZm1sAtC7zr/M8ADD
19wA1t3iAOHd5gDi3dfc6ADn3dfc2ea4/tnnAN/14uLo2QDZ3eIAzsO9xb/OANr25gDZ3eLZAMD03ObZ
AOfZ3eKt/77pAOfj4ODo2efoAOLV19wAzb+/wcy7zc/GvAC9w87TANvZ3NniAOni2AD+2N3X3ADY4+bo
ANvZ4tXp2eYA2ebf6eLY3dvZ4q3/vtnd4gC8v8/Ov8YA3efoAOrj4OCtra37zdfc1dra2QDK4NXo7gDp
4tgA1tnn6dfc2QDh3dfcANnm4tnp6K3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAAAAAZcTAQ==
</value>
</data>
<data name="SP_AURORA_E_FILE" type="System.Byte[], mscorlib">
<value>
F9gAAOgD//8AAAAACAAAAAAAAAAAAAAAAMnMw67Ow73Fv84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
0LvGvwDKycwAogDJzMOuzsO9xb/OAAAAAAAAAAAAAAAAANDZANXgAOTm3eHZ5gDk3efjANjZ4AC9v8jO
zMkAysnFG8fJyAAAAADtANzV1uDVANfj4gDg1QDk2ebn4+LVANjZAOrZ5tjZrQAAAAAAAAAAvenV4tjj
AOjZANni6ObZ2+nZANngAMnMw67Ow73Fv864AAAAAAAAAFLb6dXm2NUA4NUA5NXm6N3Y1asAAAAAAAAA
AAAAAAAAAAAAAAAAAABSUsjjAOjd5tnnANnn6NkA0LvGv6urAFLG4wDi2dfZ593o1ecAAAAA5NXm1QDm
2dfd1t3mANngAMnMw67Ow73Fv86rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDmgAA
M////7h3CQAIalorOgG7AdsJAAgrrQG7AdsJAAhHcwEBACENgAEAuwHbCQAIveQJAAhmbUZzAQEAIQ2A
AAC7AdIJAAgaAIBzARoBgAEACQAp1QgpOgG9TQoACGZtbAK98AoACGZtbAK9vQoACGZtbALB5tXX3dXn
AOTj5gDp59XmANngAOfd5+jZ4dX+2NngAMy/wbvGyQDHw83Ov8zDyc3Jrfu+2dbZ5wDY2QDn2eYA/QG4
AFHi46z7yunZ5wDo2eLZ4ePnAOniAOjd19/Z6ADk1ebVAOjdrf/K1ebZ19kA5enZAOTp2djZ5wDp59Xm
4OMA2eIA2eD+ys+/zM7JANjZAL3Dz767vgC9u8zHWsit+1HK4+YA5ekbAOLjANfp5t3j59nV5wDp4gDk
49fj/uTV5tUA6tnmANjZAOXpGwDn2QDo5tXo1az/webV193V5wDk4+YA6efV5gDZ4ADn3efo2eHV/tjZ
4ADMv8G7xskAx8PNzr/Mw8nNya3/xuMA593Z4ujjuAD9Aa0Av+AAvMnGzcPGxskA2Nn+4OPnAMm8xL/O
yc0Avca70L+4ANnn6BcA4ODZ4uOt+8Hp1ebY1QDV4NvjANniANngAMq9AO0A6unZ4OrZAOEX5/7o1ebY
2a3/AAAAtQpIACEQIgzwQP4ISQAgCHABIEBCAvAd+gDwC/gABgAoAdAA8E74AbwARwAAAAMQAAADMLUN
TQAkIAUADAAhCkqAI1sBDPCp+ygcCEkEIgzwyP0AKA/RACAA8In4BUqpGAloiEIH0QEgC+AAAAACoDoB
CPwPAAABNAEs3d0A8AX4ACAwvAK8CEcAAIGwCUoAIACQCEhpRgFgQmAHSYFggGgHSABoEGC0MgEgEIAB
sHBHAAAAAAAC1AAABAAEAIWgOgEI8LVXRk5GRUbgtIGwAScAIIJGACU4A3kciUYRSc4ZEUlAGIBGNHhs
QAEgBEAkATwZIAQADAAhQkaAI1sBDPBM+zgcAPAz+KQAB0kMGSFoiEIM0TB4RUABIAVANXAX4AAABAAA
AgAAAAIUAAACAS0L0VFGAJELSGlGAWBBRkFgCkmBYIBoUEYwcAE1AS3K3U9GDy++3QGwOLyYRqFGqkbw
vAG8AEfUAAAEAAQAhRC1gCPbAAAiACgA0QE7mkII2gZJAANEGBkcAcwSGAE5ACn60RAcELwCvAhHAAAA
AvC1JU8lSAAhQVY6HAMcAClZ0QAlIkkAIAhWACgK0Q8tYdABNQ8tBdxoGAB4AAYAFgAo9NAAIBhWAChE
0QElGE6oGQB4AAYAFgAoENA6HVIZEHgBIUhAEHAQeAABLBgoHP/3AA==
</value>
</data>
<data name="SP_EON_FILE" type="System.Byte[], mscorlib">
<value>
G5YAADMIAQG4XwAAAkcTAQEAIQ2AAQC7Ab0AAAJKEwEBACENgAEAuwG9AAACK84AuwG9AAACalq9xwAA
AmZtRhMBAQAhDYAAALsBvgAAAhoAgBMBGgGAAQAJAClTCL0TAQACZm1sDb1KAQACZm1sAsq7ygLwAMrV
5tnX2QDl6dkA1+Pi6N3Z4tkA6eIAzsO9xb/OAP7k1ebVANngANrZ5ubtrQDK2ebjANnnAOniAOTj1+MA
5tXm462trf++2dbZ5m/V5wDd5gDVAL27xrvBz7v+5NXm1QDl6dkA6NkA2NniAOEX5wDd4trj5uHV190j
4q3/xtUAx8m9wsPGuwDZ5+gXAODg2eLVra2t+8LV7gDp4gDc6dnX4wDtAOrp2eDq2QDVAOrZ5uHZrf8A
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAAAAAZcTAQ==
</value>
</data>
<data name="FR_AURORA_FRLG_FILE" type="System.Byte[], mscorlib">
<value>
R4EAAOgD//8AAAAACAAAAAAAAAAAAAAAzsO9xb/Ou8/Mycy7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAvdXm6NkA2LS/19zV4tvZAAAAAAAAAAAAAAAAAAAAALvg4NnuABYA4LQb6NXb2QDY6QC9v8jOzL8A
ysnFG8fJyADZ6AAAAADY3ebd29nururj6ecA6tnm5wDg2QDg3erm2enmANzV1t3g4BsA2eIA6tnm6K0A
yubZ4tnuAODZAM7DvcW/zrvPzMnMuwDk6d3nAAAAAAAAAOfV6erZ29Xm2NnuAODVAOTV5ujd2asAAAAA
AAAAAAAAAAAAAAAAAADI2QDe2ejZ7gDk1ecA19no6NkAvdXm6NkA2LS/19zV4tvZAAAAAAAA1erV4ugA
2LTV6uPd5gDm2RnpAODZAM7DvcW/zrvPzMnMu60AAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh3AAA
M////7gIMwEIalorpwK7AWwzAQgr5AK7AWwzAQhHcwEBACENgAEAuwFsMwEIvXUzAQhmbUZzAQEAIQ2A
AAC7AWMzAQgaAIBzARoBgAEACQApSwgppwK9zjMBCGZtbAK9UDQBCGZtbAK9JzQBCGZtbALH2ebX3QDY
tOno3eDd59nmAODZAOft5+ga4dn+vbu+v7vPAMfTzc6t+9Dj6ecA2Nnq2e4AHOjm2QD9Aa3+w+AA7QDV
AOniAOjd19/Z6ADk4+nmAOrj6eet/8PgAOTZ6egAHOjm2QDp6N3g3ecbANXpAOTj5ugA2Nn+vbvMx8PI
AM3PzADHv8yt+7/n59Xt2e6u4NkA5OPp5gDq493mANjZAOXp490A/t3gAOe01dvd6K3/x9nm190A2LTp
6N3g3efZ5gDg2QDn7efoGuHZ/r27vr+7zwDH083Orf/J3LgA3tkA5tnb5tno6NkA/QGtAMbVAMrJvcK/
/sm8xK0AzLvMv80A2OkAzbu9ANnn6ADk4Nnd4tmt+8DV3ejZ5wDg2QDo5t0A2NXi5wDq4+jm2QDNu70A
2ej+5tnq2eLZ7gDk4OnnAOjV5tit/7i+NAEIalorpwK7ASI1AQgr5AK7ASI1AQhHcwEBACENgAEAuwEi
NQEIvSs1AQhmbUZzAQEAIQ2AAAC7ARk1AQgaAIBzARoBgAEACQApSwgppwK9jjUBCGZtbAK9GzYBCGZt
bAK96DUBCGZtbAK+1eLf2bgA2NXn5wDY6QDY1ecAwb/Cv8PHrv7Bv829wr/Cv8gA1tni6eju6ADc1efo
rfu+6QDh6efn6AD9AQDn2d3irf7C3dnmAN3n6ADZ3eIAzt3X39noANr25gDY3dfcq/++6QDf1eLi5+gA
2ecA1eEAwtXa2eIA6uPi/snMu8jDuwC9w87TANnd4ufZ6O7Z4q370dXm6eEA5Obj1t3Z5ufoANjpANnn
AOLd19zo/tnd4trV19wA1ennrP++1eLf2bgA2NXn5wDY6QDY1ecAwb/Cv8PHrv7Bv829wr/Cv8gA1tni
6eju6ADc1efoq//J3LgA2ecA6OnoAOHd5gDG2d3YAP0BqwC+3dn+vLvNw82uw86/x67Ou829wr8A3eIA
2Nnd4tnh+ry/z86/xgDd5+gA6uPg4K36xtXb2ebZANno69XnANXp2gDY2d3i2eEAyr0A6eLY+t/j4eHZ
ANXi59fc4N3ZFdni2ADu6eb219+t/7ieNgEIalorpwK7AQI3AQgr5AK7AQI3AQhHcwEBACENgAEAuwEC
NwEIvQs3AQhmbUZzAQEAIQ2AAAC7Afk2AQgaAIBzARoBgAEACQApAA==
</value>
</data>
<data name="FR_EON_FILE" type="System.Byte[], mscorlib">
<value>
2qcAADMIAQG4XwAAAkcTAQEAIQ2AAQC7Ab0AAAJKEwEBACENgAEAuwG9AAACK84AuwG9AAACalq9xwAA
AmZtRhMBAQAhDYAAALsBvgAAAhoAgBMBGgGAAQAJAClTCL0UAQACZm1sDb1GAQACZm1sAsq7yrvwAMni
ANjd5tXd6ADp4gDKu83NvwDk4+nmAODZANrZ5ubtuP7h1d3nAN7ZAOK02eIA1erV3ecA2eLX4+bZAN7V
4dXd5wDq6a3/zukA2Nnq5tXd5wDV4ODZ5gAWAMi/yM+9zMPLz7/+5OPp5gDo2QDm2eLn2d3b4tnmrf/G
2QDNu70A2efoAOTg2d3ira2t+87pANjZ6ubV3ecA2tXd5tkA2NkA4NUA5ODV19kA2ej+5tnq2eLd5gDh
2QDq493mANni5+nd6Nmt/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAAAAAZcTAQ==
</value>
</data>
</root>

1102
wc3_tool/WC3/WC3_editor.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

426
wc3_tool/WC3/WC3_editor.cs Normal file
View File

@ -0,0 +1,426 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 28/04/2016
* Time: 21:22
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using PKHeX;
using System.Reflection;
using System.Resources;
namespace WC3_TOOL
{
/// <summary>
/// Description of MainForm.
/// </summary>
public partial class WC3_editor : Form
{
public WC3_editor()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
faketoogle.Checked = true;
regionlab.Text = "";
GFX = this.CreateGraphics();
colorbox.SelectedIndex = 0;
icon_num.Value = 0;
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
public string wc3filter = "Wonder Card file|*.wc3|All Files (*.*)|*.*";
public string scriptfilter = "Script file|*.script|All Files (*.*)|*.*";
public string xsescriptfilter = "XSE padded script file|*.gba";
public byte[] wc3buffer;
public byte[] wc3script_new;
public static wc3 wc3file;
public bool japanese = false;
public static bool script_injected = false;
private Graphics GFX;
void update_iconbox()
{
iconbox.Enabled = true;
if (icon_num.Value >= 1 && icon_num.Value <= 251){
iconbox.SelectedIndex = (UInt16)icon_num.Value;
}/*else if (icon_num.Value >= 252 && icon_num.Value <= 276){
iconbox.Enabled = false;
iconbox.SelectedIndex = 440;
}*/else if (icon_num.Value >= 251 && icon_num.Value <= 440){
iconbox.SelectedIndex = (UInt16)icon_num.Value;
}else if (icon_num.Value == 0xFFFF){
iconbox.SelectedIndex = 0;
}else{
iconbox.Enabled = false;
iconbox.SelectedIndex = 440;
}
}
string fill_line(string line, int index) //Fills string with spaces to "erase" old content.
{
if (japanese == true)
{
switch (index)
{
case 0:
while(line.Length < 18)
{
line = line + " ";
}
break;
case 1:
while(line.Length < 13)
{
line = line + " ";
}
break;
default:
while(line.Length < 20)
{
line = line + " ";
}
break;
}
}else
{
while(line.Length < 40)
{
line = line + " ";
}
}
return line;
}
void update_wcdata()
{
switch (wc3file.distributable)
{
case 0:
distro_but_no.Checked = true;
break;
case 1:
distro_but_always.Checked = true;
break;
case 2:
distro_but_one.Checked = true;
break;
default:
distro_but_no.Checked = true;
break;
}
icon_num.Value = wc3file.get_wc_icon();
update_iconbox();
colorbox.SelectedIndex = wc3file.get_wc_color();
header1.Text = wc3file.get_wc_text_2(0);
header2.Text = wc3file.get_wc_text_2(1);
body1.Text = wc3file.get_wc_text_2(2);
body2.Text = wc3file.get_wc_text_2(3);
body3.Text = wc3file.get_wc_text_2(4);
body4.Text = wc3file.get_wc_text_2(5);
footer1.Text = wc3file.get_wc_text_2(6);
footer2.Text = wc3file.get_wc_text_2(7);
/*
header1.Text = wc3file.get_wc_text(0);
header2.Text = wc3file.get_wc_text(1);
body1.Text = wc3file.get_wc_text(2);
body2.Text = wc3file.get_wc_text(3);
body3.Text = wc3file.get_wc_text(4);
body4.Text = wc3file.get_wc_text(5);
footer1.Text = wc3file.get_wc_text(6);
footer2.Text = wc3file.get_wc_text(7);
*/
map_bank.Value = wc3file.MAP_BANK;
map_map.Value = wc3file.MAP_MAP;
map_npc.Value = wc3file.MAP_NPC;
}
void set_wcdata()
{
wc3file.clear_wc_text(); //instead of clearing line, clear all text
wc3file.insert_wc_text_2(header1.Text, 0);
wc3file.insert_wc_text_2(header2.Text, 1);
wc3file.insert_wc_text_2(body1.Text, 2);
wc3file.insert_wc_text_2(body2.Text, 3);
wc3file.insert_wc_text_2(body3.Text, 4);
wc3file.insert_wc_text_2(body4.Text, 5);
wc3file.insert_wc_text_2(footer1.Text, 6);
wc3file.insert_wc_text_2(footer2.Text, 7);
/*
wc3file.insert_wc_text(header1.Text, 0);
wc3file.insert_wc_text(header2.Text, 1);
wc3file.insert_wc_text(body1.Text, 2);
wc3file.insert_wc_text(body2.Text, 3);
wc3file.insert_wc_text(body3.Text, 4);
wc3file.insert_wc_text(body4.Text, 5);
wc3file.insert_wc_text(footer1.Text, 6);
wc3file.insert_wc_text(footer2.Text, 7);
*/
wc3file.ID = 0x33;
wc3file.MAP_BANK = (byte)map_bank.Value;
wc3file.MAP_MAP = (byte)map_map.Value;
wc3file.MAP_NPC = (byte)map_npc.Value;
}
void Load_WC3(string path)
{
int filesize = FileIO.load_file(ref wc3buffer, ref path, wc3filter);
if( filesize == wc3.SIZE_WC3 || filesize == wc3.SIZE_WC3_jap)
{
if (filesize == wc3.SIZE_WC3_jap)
{
japanese = true;
regionlab.Text = "JAP";
header1.MaxLength = 18;
header2.MaxLength = 13;
body1.MaxLength = 20;
body2.MaxLength = 20;
body3.MaxLength = 20;
body4.MaxLength = 20;
footer1.MaxLength = 20;
footer2.MaxLength = 20;
}else{
japanese = false;
regionlab.Text = "USA/EUR";
header1.MaxLength = 40;
header2.MaxLength = 40;
body1.MaxLength = 40;
body2.MaxLength = 40;
body3.MaxLength = 40;
body4.MaxLength = 40;
footer1.MaxLength = 40;
footer2.MaxLength = 40;
}
wc3_path.Text = path;
wc3file = new wc3(wc3buffer);
update_wcdata();
save_wc3_but.Enabled = true;
export_script_but.Enabled = true;
import_script_but.Enabled = true;
xse_export.Enabled = true;
xse_import.Enabled = true;
custom_script.Checked = false;
drawCard();
}else{
MessageBox.Show("Invalid file size.");
}
}
void Load_wc3_butClick(object sender, EventArgs e)
{
Load_WC3(null);
}
void Save_wc3_butClick(object sender, EventArgs e)
{
if (faketoogle.Checked == true)
wc3file.fakeWC();
//wc3file.fakeSCript();
//wc3file.clean_trash();
wc3file.set_wc_icon((UInt16)icon_num.Value);
int distro = 0;
if (distro_but_always.Checked == true)
distro = 1;
else if (distro_but_one.Checked == true)
distro = 2;
else
distro = 0;
wc3file.set_wc_color_distro(colorbox.SelectedIndex , distro);
set_wcdata();
wc3file.fix_script_checksum();
wc3file.fix_wc_checksum();
if (wc3file.Edited)
FileIO.save_data(wc3file.Data, wc3filter);
else MessageBox.Show("Save has not been edited");
}
void Export_script_butClick(object sender, EventArgs e)
{
FileIO.save_data(wc3file.get_script(), scriptfilter);
}
void Import_script_butClick(object sender, EventArgs e)
{
string path = null;
int filesize = FileIO.load_file(ref wc3script_new, ref path, scriptfilter);
if( filesize <= 996 )
{
wc3file.set_script(wc3script_new);
custom_script.Checked = true;
MessageBox.Show("Custom script imported.");
}else{
MessageBox.Show("Invalid file size.");
}
}
void IconboxSelectedIndexChanged(object sender, EventArgs e)
{
if (iconbox.SelectedIndex == 0)
icon_num.Value = 0xFFFF;
else if(iconbox.SelectedIndex > 251)
icon_num.Value = iconbox.SelectedIndex;
else
icon_num.Value = iconbox.SelectedIndex;
}
void Icon_numValueChanged(object sender, EventArgs e)
{
update_iconbox();
drawCard();
}
void WC3_editorLoad(object sender, EventArgs e)
{
}
void GiveEgg_butClick(object sender, EventArgs e)
{
Form giveEeg = new WC3_editor_givegg();
giveEeg.ShowDialog();
if (script_injected == true)
{
script_injected = false;
custom_script.Checked = true;
MessageBox.Show("Give Egg script injected.");
}
}
void ColorboxSelectedIndexChanged(object sender, EventArgs e)
{
drawCard();
}
ResourceManager resources = new ResourceManager("WC3_TOOL.WC3.Image.Cards", Assembly.GetExecutingAssembly());
ResourceManager resources2 = new ResourceManager("WC3_TOOL.WC3.Image.Icons", Assembly.GetExecutingAssembly());
Image bitmap2;
Image bitmap;
void drawCard()
{
bitmap = (Image)resources.GetObject("Card_"+colorbox.SelectedIndex.ToString());
GFX.DrawImage(bitmap, 501, 141, 238, 158);
if (icon_num.Value <= 251 || (icon_num.Value >= 277 && icon_num.Value <= 411))
{
bitmap2 = (Image)resources2.GetObject(PKHeX.PKM.getG4Species((int)icon_num.Value).ToString());
GFX.DrawImage(bitmap2, 700, 140, 40, 40);
}else if ((icon_num.Value >= 412 && icon_num.Value <= 439)) // Egg and unown forms
{
bitmap2 = (Bitmap)resources2.GetObject(icon_num.Value.ToString());
GFX.DrawImage(bitmap2, 700, 140, 40, 40);
}else
{
bitmap2 = (Bitmap)resources2.GetObject("0");
GFX.DrawImage(bitmap2, 700, 140, 40, 40);
}
GFX.DrawString(header1.Text, new Font("Calibri", 8), Brushes.Black, 500+10+1, 140+12);
GFX.DrawString(header2.Text, new Font("Calibri", 8), Brushes.Black, 500+10+1, 140+28);
GFX.DrawString(body1.Text, new Font("Calibri", 8), Brushes.Black, 500+5+1, 140+50);
GFX.DrawString(body2.Text, new Font("Calibri", 8), Brushes.Black, 500+5+1, 140+66);
GFX.DrawString(body3.Text, new Font("Calibri", 8), Brushes.Black, 500+5+1, 140+82);
GFX.DrawString(body4.Text, new Font("Calibri", 8), Brushes.Black, 500+5+1, 140+98);
GFX.DrawString(footer1.Text, new Font("Calibri", 8), Brushes.Black, 500+5+1, 140+122);
GFX.DrawString(footer2.Text, new Font("Calibri", 8), Brushes.Black, 500+5+1, 140+138);
}
void Header1TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Header2TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Body1TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Body2TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Body3TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Body4TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Footer1TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Footer2TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Map_helpClick(object sender, EventArgs e)
{
MessageBox.Show("These values are used to associate the script to a NPC character in the game.\n\nYou can use Advance Map to locate the values for all NPC in the game.\n\nIn Emerald, father at petalburg Gym is Bank 08, Map 01, NPC 01.\n\n For Wondercard Deliveryman set all to 255");
}
void Xse_helpClick(object sender, EventArgs e)
{
MessageBox.Show("XSE Export: exports the script with padding corresponding to base address of the script and *.gba extension. You can directly load (and edit) the script in XSE, script offset will be shown when using the export button.\nXSE Import: imports a *.gba script generated by this tool after editing (or not) with XSE (importing anything else will not correctly work).\n\nThese options are just for convenience, the scripts are in no way gba roms, but it's the more convenient way to edit them in XSE.");
}
void Xse_exportClick(object sender, EventArgs e)
{
FileIO.save_data(wc3file.get_script_XSE(), xsescriptfilter);
}
void Xse_importClick(object sender, EventArgs e)
{
string path = null;
int filesize = FileIO.load_file(ref wc3script_new, ref path, xsescriptfilter);
if( filesize <= 1000 )
{
wc3file.set_script_XSE(wc3script_new);
custom_script.Checked = true;
MessageBox.Show("Custom script imported.");
}else{
MessageBox.Show("Invalid file size.");
}
}
void GiveEggExt_butClick(object sender, EventArgs e)
{
Form giveEegExt = new WC3_editor_giveggExt();
giveEegExt.ShowDialog();
if (script_injected == true)
{
script_injected = false;
custom_script.Checked = true;
MessageBox.Show("Give Egg script injected.");
}
}
void WC3_editorDragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
void WC3_editorDragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
Load_WC3(files[0]);
}
}
}

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>

973
wc3_tool/WC3/WC3_editor_givegg.Designer.cs generated Normal file
View File

@ -0,0 +1,973 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 07/05/2016
* Time: 21:27
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
namespace WC3_TOOL
{
partial class WC3_editor_givegg
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
private System.Windows.Forms.ComboBox species_box;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox move_box;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ComboBox game_box;
private System.Windows.Forms.ComboBox lang_box;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Button save_but;
private System.Windows.Forms.Button cancel_but;
/// <summary>
/// Disposes resources used by the form.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
this.species_box = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.move_box = new System.Windows.Forms.ComboBox();
this.label2 = new System.Windows.Forms.Label();
this.game_box = new System.Windows.Forms.ComboBox();
this.lang_box = new System.Windows.Forms.ComboBox();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.save_but = new System.Windows.Forms.Button();
this.cancel_but = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// species_box
//
this.species_box.FormattingEnabled = true;
this.species_box.Items.AddRange(new object[] {
"NONE",
"Bulbasaur",
"Ivysaur",
"Venusaur",
"Charmander",
"Charmeleon",
"Charizard",
"Squirtle",
"Wartortle",
"Blastoise",
"Caterpie",
"Metapod",
"Butterfree",
"Weedle",
"Kakuna",
"Beedrill",
"Pidgey",
"Pidgeotto",
"Pidgeot",
"Rattata",
"Raticate",
"Spearow",
"Fearow",
"Ekans",
"Arbok",
"Pikachu",
"Raichu",
"Sandshrew",
"Sandslash",
"Nidoran♀",
"Nidorina",
"Nidoqueen",
"Nidoran♂",
"Nidorino",
"Nidoking",
"Clefairy",
"Clefable",
"Vulpix",
"Ninetales",
"Jigglypuff",
"Wigglytuff",
"Zubat",
"Golbat",
"Oddish",
"Gloom",
"Vileplume",
"Paras",
"Parasect",
"Venonat",
"Venomoth",
"Diglett",
"Dugtrio",
"Meowth",
"Persian",
"Psyduck",
"Golduck",
"Mankey",
"Primeape",
"Growlithe",
"Arcanine",
"Poliwag",
"Poliwhirl",
"Poliwrath",
"Abra",
"Kadabra",
"Alakazam",
"Machop",
"Machoke",
"Machamp",
"Bellsprout",
"Weepinbell",
"Victreebel",
"Tentacool",
"Tentacruel",
"Geodude",
"Graveler",
"Golem",
"Ponyta",
"Rapidash",
"Slowpoke",
"Slowbro",
"Magnemite",
"Magneton",
"Farfetch\'d",
"Doduo",
"Dodrio",
"Seel",
"Dewgong",
"Grimer",
"Muk",
"Shellder",
"Cloyster",
"Gastly",
"Haunter",
"Gengar",
"Onix",
"Drowzee",
"Hypno",
"Krabby",
"Kingler",
"Voltorb",
"Electrode",
"Exeggcute",
"Exeggutor",
"Cubone",
"Marowak",
"Hitmonlee",
"Hitmonchan",
"Lickitung",
"Koffing",
"Weezing",
"Rhyhorn",
"Rhydon",
"Chansey",
"Tangela",
"Kangaskhan",
"Horsea",
"Seadra",
"Goldeen",
"Seaking",
"Staryu",
"Starmie",
"Mr. Mime",
"Scyther",
"Jynx",
"Electabuzz",
"Magmar",
"Pinsir",
"Tauros",
"Magikarp",
"Gyarados",
"Lapras",
"Ditto",
"Eevee",
"Vaporeon",
"Jolteon",
"Flareon",
"Porygon",
"Omanyte",
"Omastar",
"Kabuto",
"Kabutops",
"Aerodactyl",
"Snorlax",
"Articuno",
"Zapdos",
"Moltres",
"Dratini",
"Dragonair",
"Dragonite",
"Mewtwo",
"Mew",
"Chikorita",
"Bayleef",
"Meganium",
"Cyndaquil",
"Quilava",
"Typhlosion",
"Totodile",
"Croconaw",
"Feraligatr",
"Sentret",
"Furret",
"Hoothoot",
"Noctowl",
"Ledyba",
"Ledian",
"Spinarak",
"Ariados",
"Crobat",
"Chinchou",
"Lanturn",
"Pichu",
"Cleffa",
"Igglybuff",
"Togepi",
"Togetic",
"Natu",
"Xatu",
"Mareep",
"Flaaffy",
"Ampharos",
"Bellossom",
"Marill",
"Azumarill",
"Sudowoodo",
"Politoed",
"Hoppip",
"Skiploom",
"Jumpluff",
"Aipom",
"Sunkern",
"Sunflora",
"Yanma",
"Wooper",
"Quagsire",
"Espeon",
"Umbreon",
"Murkrow",
"Slowking",
"Misdreavus",
"Unown A",
"Wobbuffet",
"Girafarig",
"Pineco",
"Forretress",
"Dunsparce",
"Gligar",
"Steelix",
"Snubbull",
"Granbull",
"Qwilfish",
"Scizor",
"Shuckle",
"Heracross",
"Sneasel",
"Teddiursa",
"Ursaring",
"Slugma",
"Magcargo",
"Swinub",
"Piloswine",
"Corsola",
"Remoraid",
"Octillery",
"Delibird",
"Mantine",
"Skarmory",
"Houndour",
"Houndoom",
"Kingdra",
"Phanpy",
"Donphan",
"Porygon2",
"Stantler",
"Smeargle",
"Tyrogue",
"Hitmontop",
"Smoochum",
"Elekid",
"Magby",
"Miltank",
"Blissey",
"Raikou",
"Entei",
"Suicune",
"Larvitar",
"Pupitar",
"Tyranitar",
"Lugia",
"Ho-oh",
"Celebi",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"? (glitch Pokémon)",
"Treecko",
"Grovyle",
"Sceptile",
"Torchic",
"Combusken",
"Blaziken",
"Mudkip",
"Marshtomp",
"Swampert",
"Poochyena",
"Mightyena",
"Zigzagoon",
"Linoone",
"Wurmple",
"Silcoon",
"Beautifly",
"Cascoon",
"Dustox",
"Lotad",
"Lombre",
"Ludicolo",
"Seedot",
"Nuzleaf",
"Shiftry",
"Nincada",
"Ninjask",
"Shedinja",
"Taillow",
"Swellow",
"Shroomish",
"Breloom",
"Spinda",
"Wingull",
"Pelipper",
"Surskit",
"Masquerain",
"Wailmer",
"Wailord",
"Skitty",
"Delcatty",
"Kecleon",
"Baltoy",
"Claydol",
"Nosepass",
"Torkoal",
"Sableye",
"Barboach",
"Whiscash",
"Luvdisc",
"Corphish",
"Crawdaunt",
"Feebas",
"Milotic",
"Carvanha",
"Sharpedo",
"Trapinch",
"Vibrava",
"Flygon",
"Makuhita",
"Hariyama",
"Electrike",
"Manectric",
"Numel",
"Camerupt",
"Spheal",
"Sealeo",
"Walrein",
"Cacnea",
"Cacturne",
"Snorunt",
"Glalie",
"Lunatone",
"Solrock",
"Azurill",
"Spoink",
"Grumpig",
"Plusle",
"Minun",
"Mawile",
"Meditite",
"Medicham",
"Swablu",
"Altaria",
"Wynaut",
"Duskull",
"Dusclops",
"Roselia",
"Slakoth",
"Vigoroth",
"Slaking",
"Gulpin",
"Swalot",
"Tropius",
"Whismur",
"Loudred",
"Exploud",
"Clamperl",
"Huntail",
"Gorebyss",
"Absol",
"Shuppet",
"Banette",
"Seviper",
"Zangoose",
"Relicanth",
"Aron",
"Lairon",
"Aggron",
"Castform",
"Volbeat",
"Illumise",
"Lileep",
"Cradily",
"Anorith",
"Armaldo",
"Ralts",
"Kirlia",
"Gardevoir",
"Bagon",
"Shelgon",
"Salamence",
"Beldum",
"Metang",
"Metagross",
"Regirock",
"Regice",
"Registeel",
"Kyogre",
"Groudon",
"Rayquaza",
"Latias",
"Latios",
"Jirachi",
"Deoxys",
"Chimecho",
"Pokémon Egg",
"Unown B",
"Unown C",
"Unown D",
"Unown E",
"Unown F",
"Unown G",
"Unown H",
"Unown I",
"Unown J",
"Unown K",
"Unown L",
"Unown M",
"Unown N",
"Unown O",
"Unown P",
"Unown Q",
"Unown R",
"Unown S",
"Unown T",
"Unown U",
"Unown V",
"Unown W",
"Unown X",
"Unown Y",
"Unown Z",
"Unown !",
"Unown ?"});
this.species_box.Location = new System.Drawing.Point(12, 69);
this.species_box.Name = "species_box";
this.species_box.Size = new System.Drawing.Size(170, 21);
this.species_box.TabIndex = 0;
//
// label1
//
this.label1.Location = new System.Drawing.Point(12, 51);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(100, 15);
this.label1.TabIndex = 1;
this.label1.Text = "Pokemon:";
//
// move_box
//
this.move_box.FormattingEnabled = true;
this.move_box.Items.AddRange(new object[] {
"-NONE-",
"Pound",
"Karate Chop*",
"Double Slap",
"Comet Punch",
"Mega Punch",
"Pay Day",
"Fire Punch",
"Ice Punch",
"Thunder Punch",
"Scratch",
"Vice Grip",
"Guillotine",
"Razor Wind",
"Swords Dance",
"Cut",
"Gust*",
"Wing Attack",
"Whirlwind",
"Fly",
"Bind",
"Slam",
"Vine Whip",
"Stomp",
"Double Kick",
"Mega Kick",
"Jump Kick",
"Rolling Kick",
"Sand Attack*",
"Headbutt",
"Horn Attack",
"Fury Attack",
"Horn Drill",
"Tackle",
"Body Slam",
"Wrap",
"Take Down",
"Thrash",
"Double-Edge",
"Tail Whip",
"Poison Sting",
"Twineedle",
"Pin Missile",
"Leer",
"Bite*",
"Growl",
"Roar",
"Sing",
"Supersonic",
"Sonic Boom",
"Disable",
"Acid",
"Ember",
"Flamethrower",
"Mist",
"Water Gun",
"Hydro Pump",
"Surf",
"Ice Beam",
"Blizzard",
"Psybeam",
"Bubble Beam",
"Aurora Beam",
"Hyper Beam",
"Peck",
"Drill Peck",
"Submission",
"Low Kick",
"Counter",
"Seismic Toss",
"Strength",
"Absorb",
"Mega Drain",
"Leech Seed",
"Growth",
"Razor Leaf",
"Solar Beam",
"Poison Powder",
"Stun Spore",
"Sleep Powder",
"Petal Dance",
"String Shot",
"Dragon Rage",
"Fire Spin",
"Thunder Shock",
"Thunderbolt",
"Thunder Wave",
"Thunder",
"Rock Throw",
"Earthquake",
"Fissure",
"Dig",
"Toxic",
"Confusion",
"Psychic",
"Hypnosis",
"Meditate",
"Agility",
"Quick Attack",
"Rage",
"Teleport",
"Night Shade",
"Mimic",
"Screech",
"Double Team",
"Recover",
"Harden",
"Minimize",
"Smokescreen",
"Confuse Ray",
"Withdraw",
"Defense Curl",
"Barrier",
"Light Screen",
"Haze",
"Reflect",
"Focus Energy",
"Bide",
"Metronome",
"Mirror Move",
"Self-Destruct",
"Egg Bomb",
"Lick",
"Smog",
"Sludge",
"Bone Club",
"Fire Blast",
"Waterfall",
"Clamp",
"Swift",
"Skull Bash",
"Spike Cannon",
"Constrict",
"Amnesia",
"Kinesis",
"Soft-Boiled",
"High Jump Kick",
"Glare",
"Dream Eater",
"Poison Gas",
"Barrage",
"Leech Life",
"Lovely Kiss",
"Sky Attack",
"Transform",
"Bubble",
"Dizzy Punch",
"Spore",
"Flash",
"Psywave",
"Splash",
"Acid Armor",
"Crabhammer",
"Explosion",
"Fury Swipes",
"Bonemerang",
"Rest",
"Rock Slide",
"Hyper Fang",
"Sharpen",
"Conversion",
"Tri Attack",
"Super Fang",
"Slash",
"Substitute",
"Struggle",
"Sketch",
"Triple Kick",
"Thief",
"Spider Web",
"Mind Reader",
"Nightmare",
"Flame Wheel",
"Snore",
"Curse*",
"Flail",
"Conversion 2",
"Aeroblast",
"Cotton Spore",
"Reversal",
"Spite",
"Powder Snow",
"Protect",
"Mach Punch",
"Scary Face",
"Feint Attack",
"Sweet Kiss*",
"Belly Drum",
"Sludge Bomb",
"Mud-Slap",
"Octazooka",
"Spikes",
"Zap Cannon",
"Foresight",
"Destiny Bond",
"Perish Song",
"Icy Wind",
"Detect",
"Bone Rush",
"Lock-On",
"Outrage",
"Sandstorm",
"Giga Drain",
"Endure",
"Charm*",
"Rollout",
"False Swipe",
"Swagger",
"Milk Drink",
"Spark",
"Fury Cutter",
"Steel Wing",
"Mean Look",
"Attract",
"Sleep Talk",
"Heal Bell",
"Return",
"Present",
"Frustration",
"Safeguard",
"Pain Split",
"Sacred Fire",
"Magnitude",
"Dynamic Punch",
"Megahorn",
"Dragon Breath",
"Baton Pass",
"Encore",
"Pursuit",
"Rapid Spin",
"Sweet Scent",
"Iron Tail",
"Metal Claw",
"Vital Throw",
"Morning Sun",
"Synthesis",
"Moonlight*",
"Hidden Power",
"Cross Chop",
"Twister",
"Rain Dance",
"Sunny Day",
"Crunch",
"Mirror Coat",
"Psych Up",
"Extreme Speed",
"Ancient Power",
"Shadow Ball",
"Future Sight",
"Rock Smash",
"Whirlpool",
"Beat Up",
"Fake Out",
"Uproar",
"Stockpile",
"Spit Up",
"Swallow",
"Heat Wave",
"Hail",
"Torment",
"Flatter",
"Will-O-Wisp",
"Memento",
"Facade",
"Focus Punch",
"Smelling Salts",
"Follow Me",
"Nature Power",
"Charge",
"Taunt",
"Helping Hand",
"Trick",
"Role Play",
"Wish",
"Assist",
"Ingrain",
"Superpower",
"Magic Coat",
"Recycle",
"Revenge",
"Brick Break",
"Yawn",
"Knock Off",
"Endeavor",
"Eruption",
"Skill Swap",
"Imprison",
"Refresh",
"Grudge",
"Snatch",
"Secret Power",
"Dive",
"Arm Thrust",
"Camouflage",
"Tail Glow",
"Luster Purge",
"Mist Ball",
"Feather Dance",
"Teeter Dance",
"Blaze Kick",
"Mud Sport",
"Ice Ball",
"Needle Arm",
"Slack Off",
"Hyper Voice",
"Poison Fang",
"Crush Claw",
"Blast Burn",
"Hydro Cannon",
"Meteor Mash",
"Astonish",
"Weather Ball",
"Aromatherapy",
"Fake Tears",
"Air Cutter",
"Overheat",
"Odor Sleuth",
"Rock Tomb",
"Silver Wind",
"Metal Sound",
"Grass Whistle",
"Tickle",
"Cosmic Power",
"Water Spout",
"Signal Beam",
"Shadow Punch",
"Extrasensory",
"Sky Uppercut",
"Sand Tomb",
"Sheer Cold",
"Muddy Water",
"Bullet Seed",
"Aerial Ace",
"Icicle Spear",
"Iron Defense",
"Block",
"Howl",
"Dragon Claw",
"Frenzy Plant",
"Bulk Up",
"Bounce",
"Mud Shot",
"Poison Tail",
"Covet",
"Volt Tackle",
"Magical Leaf",
"Water Sport",
"Calm Mind",
"Leaf Blade",
"Dragon Dance",
"Rock Blast",
"Shock Wave",
"Water Pulse",
"Doom Desire",
"Psycho Boost"});
this.move_box.Location = new System.Drawing.Point(188, 69);
this.move_box.Name = "move_box";
this.move_box.Size = new System.Drawing.Size(170, 21);
this.move_box.TabIndex = 2;
//
// label2
//
this.label2.Location = new System.Drawing.Point(188, 51);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(100, 15);
this.label2.TabIndex = 3;
this.label2.Text = "Special Move:";
//
// game_box
//
this.game_box.FormattingEnabled = true;
this.game_box.Items.AddRange(new object[] {
"Emerald",
"Fire Red / Leaf Green"});
this.game_box.Location = new System.Drawing.Point(12, 27);
this.game_box.Name = "game_box";
this.game_box.Size = new System.Drawing.Size(170, 21);
this.game_box.TabIndex = 4;
//
// lang_box
//
this.lang_box.FormattingEnabled = true;
this.lang_box.Items.AddRange(new object[] {
"Japanese",
"English",
"French",
"Italian",
"German",
"Spanish"});
this.lang_box.Location = new System.Drawing.Point(188, 27);
this.lang_box.Name = "lang_box";
this.lang_box.Size = new System.Drawing.Size(170, 21);
this.lang_box.TabIndex = 5;
//
// label3
//
this.label3.Location = new System.Drawing.Point(12, 9);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(100, 15);
this.label3.TabIndex = 6;
this.label3.Text = "Game:";
//
// label4
//
this.label4.Location = new System.Drawing.Point(188, 9);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(100, 15);
this.label4.TabIndex = 7;
this.label4.Text = "Language:";
//
// save_but
//
this.save_but.Location = new System.Drawing.Point(107, 96);
this.save_but.Name = "save_but";
this.save_but.Size = new System.Drawing.Size(75, 23);
this.save_but.TabIndex = 8;
this.save_but.Text = "Inject";
this.save_but.UseVisualStyleBackColor = true;
this.save_but.Click += new System.EventHandler(this.Save_butClick);
//
// cancel_but
//
this.cancel_but.Location = new System.Drawing.Point(188, 96);
this.cancel_but.Name = "cancel_but";
this.cancel_but.Size = new System.Drawing.Size(75, 23);
this.cancel_but.TabIndex = 9;
this.cancel_but.Text = "Cancel";
this.cancel_but.UseVisualStyleBackColor = true;
this.cancel_but.Click += new System.EventHandler(this.Cancel_butClick);
//
// WC3_editor_givegg
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(371, 127);
this.Controls.Add(this.cancel_but);
this.Controls.Add(this.save_but);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.lang_box);
this.Controls.Add(this.game_box);
this.Controls.Add(this.label2);
this.Controls.Add(this.move_box);
this.Controls.Add(this.label1);
this.Controls.Add(this.species_box);
this.Name = "WC3_editor_givegg";
this.Text = "ROM Give Egg Script";
this.ResumeLayout(false);
}
}
}

View File

@ -0,0 +1,106 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 07/05/2016
* Time: 21:27
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Reflection;
using System.Resources;
namespace WC3_TOOL
{
/// <summary>
/// Description of WC3_editor_givegg.
/// </summary>
public partial class WC3_editor_givegg : Form
{
public WC3_editor_givegg()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
game_box.SelectedIndex = 0;
lang_box.SelectedIndex = 1;
species_box.SelectedIndex = 172;
move_box.SelectedIndex = 0x39;
/*
ResourceManager resources = new ResourceManager("Namespace.ResourceFile", Assembly.GetExecutingAssembly());
byte[] fileData = (byte[])ResourceManager.GetObject("Test.dat");
Bitmap bitmap = (Bitmap)ResourceManager.GetObject("Image");
*/
//byte[] fileData = (byte[]) EggScripts.GetObject("ROM"+game+"GiveEgg"+lang);
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
void Save_butClick(object sender, EventArgs e)
{
string game;
if (game_box.SelectedIndex == 1)
game = "FR";
else
game = "E";
string lang = "Eng";
switch (lang_box.SelectedIndex)
{
case 0:
lang = "Jap";
break;
case 1:
lang = "Eng";
break;
case 2:
lang = "Fre";
break;
case 3:
lang = "Ita";
break;
case 4:
lang = "Deu";
break;
case 5:
lang = "Esp";
break;
}
//MessageBox.Show("ROM_"+game+"_GiveEgg_"+lang);
ResourceManager EggScripts = new ResourceManager("WC3_tool.WC3.GiveEggOrg", Assembly.GetExecutingAssembly());
byte[] egg_script = (byte[]) EggScripts.GetObject("ROM_"+game+"_GiveEgg_"+lang);
//byte[] egg_script = (byte[]) EggScripts.GetObject("ROM_FR_GiveEgg_Esp");
UInt16 move;
move = (UInt16)move_box.SelectedIndex;
BitConverter.GetBytes(move).ToArray().CopyTo(egg_script, 0x86);
BitConverter.GetBytes(move).ToArray().CopyTo(egg_script, 0x8C);
BitConverter.GetBytes(move).ToArray().CopyTo(egg_script, 0x92);
BitConverter.GetBytes(move).ToArray().CopyTo(egg_script, 0x98);
BitConverter.GetBytes(move).ToArray().CopyTo(egg_script, 0x9E);
UInt16 species;
species = (UInt16)species_box.SelectedIndex;
BitConverter.GetBytes(species).ToArray().CopyTo(egg_script, 0x42);
WC3_editor.wc3file.set_script(egg_script);
WC3_editor.script_injected = true;
this.Close();
}
void Cancel_butClick(object sender, EventArgs e)
{
this.Close();
}
}
}

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>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,155 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 07/05/2016
* Time: 21:27
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Reflection;
using System.Resources;
namespace WC3_TOOL
{
/// <summary>
/// Description of WC3_editor_givegg.
/// </summary>
public partial class WC3_editor_giveggExt : Form
{
public WC3_editor_giveggExt()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
game_box.SelectedIndex = 0;
lang_box.SelectedIndex = 1;
species_box.SelectedIndex = 172;
move_box.SelectedIndex = 0x39;
move2.SelectedIndex = 0x39;
move3.SelectedIndex = 0x39;
move4.SelectedIndex = 0x39;
/*
ResourceManager resources = new ResourceManager("Namespace.ResourceFile", Assembly.GetExecutingAssembly());
byte[] fileData = (byte[])ResourceManager.GetObject("Test.dat");
Bitmap bitmap = (Bitmap)ResourceManager.GetObject("Image");
*/
//byte[] fileData = (byte[]) EggScripts.GetObject("ROM"+game+"GiveEgg"+lang);
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
void Save_butClick(object sender, EventArgs e)
{
string game;
if (game_box.SelectedIndex == 1)
game = "FR";
else
game = "E";
string lang = "Eng";
switch (lang_box.SelectedIndex)
{
case 0:
lang = "Jap";
break;
case 1:
lang = "Eng";
break;
case 2:
lang = "Fre";
break;
case 3:
lang = "Ita";
break;
case 4:
lang = "Deu";
break;
case 5:
lang = "Esp";
break;
}
//MessageBox.Show("ROM_"+game+"_GiveEgg_"+lang);
ResourceManager EggScripts = new ResourceManager("WC3_tool.WC3.GiveEggOrg", Assembly.GetExecutingAssembly());
byte[] egg_script;
if (killscript.Checked == true)
egg_script =(byte[]) EggScripts.GetObject("ROM_"+game+"_GiveEgg_"+lang+"_4moves_kill");
else
egg_script = (byte[]) EggScripts.GetObject("ROM_"+game+"_GiveEgg_"+lang+"_4moves");
UInt16 move;
UInt16 move_2;
UInt16 move_3;
UInt16 move_4;
int offset = 4;//Embedded scripts have a 4 byte padding
if (killscript.Checked == true)
{
egg_script[0x5+offset] = 0x00; //Remove jumpram command, I should technically update the embedded script files instead of doing this...
offset -= 0xF;//Killscript version is 0xF bytes shorter
}
move = (UInt16)move_box.SelectedIndex;
BitConverter.GetBytes(move).ToArray().CopyTo(egg_script, 0xB1+offset);
BitConverter.GetBytes(move).ToArray().CopyTo(egg_script, 0xC7+offset);
BitConverter.GetBytes(move).ToArray().CopyTo(egg_script, 0xDD+offset);
BitConverter.GetBytes(move).ToArray().CopyTo(egg_script, 0xF3+offset);
BitConverter.GetBytes(move).ToArray().CopyTo(egg_script, 0x109+offset);
offset+=5;
move_2 = (UInt16)move2.SelectedIndex;
BitConverter.GetBytes(move_2).ToArray().CopyTo(egg_script, 0xB1+offset);
BitConverter.GetBytes(move_2).ToArray().CopyTo(egg_script, 0xC7+offset);
BitConverter.GetBytes(move_2).ToArray().CopyTo(egg_script, 0xDD+offset);
BitConverter.GetBytes(move_2).ToArray().CopyTo(egg_script, 0xF3+offset);
BitConverter.GetBytes(move_2).ToArray().CopyTo(egg_script, 0x109+offset);
offset+=5;
move_3 = (UInt16)move3.SelectedIndex;
BitConverter.GetBytes(move_3).ToArray().CopyTo(egg_script, 0xB1+offset);
BitConverter.GetBytes(move_3).ToArray().CopyTo(egg_script, 0xC7+offset);
BitConverter.GetBytes(move_3).ToArray().CopyTo(egg_script, 0xDD+offset);
BitConverter.GetBytes(move_3).ToArray().CopyTo(egg_script, 0xF3+offset);
BitConverter.GetBytes(move_3).ToArray().CopyTo(egg_script, 0x109+offset);
offset+=5;
move_4 = (UInt16)move4.SelectedIndex;
BitConverter.GetBytes(move_4).ToArray().CopyTo(egg_script, 0xB1+offset);
BitConverter.GetBytes(move_4).ToArray().CopyTo(egg_script, 0xC7+offset);
BitConverter.GetBytes(move_4).ToArray().CopyTo(egg_script, 0xDD+offset);
BitConverter.GetBytes(move_4).ToArray().CopyTo(egg_script, 0xF3+offset);
BitConverter.GetBytes(move_4).ToArray().CopyTo(egg_script, 0x109+offset);
UInt16 species;
species = (UInt16)species_box.SelectedIndex;
if (killscript.Checked == true)
BitConverter.GetBytes(species).ToArray().CopyTo(egg_script, 0x5D+4);
else
BitConverter.GetBytes(species).ToArray().CopyTo(egg_script, 0x6C+4);
//Because script files embedded have a 4 byte padding for XSE editing...and I'm lazy to strip those 4 bytes
WC3_editor.wc3file.set_script(egg_script.Skip(4).Take(996).ToArray());
WC3_editor.script_injected = true;
this.Close();
}
void Cancel_butClick(object sender, EventArgs e)
{
this.Close();
}
void Script_helpClick(object sender, EventArgs e)
{
MessageBox.Show("Use rom event flag: the script will use the flag that the Egg event found in the ROM uses to mark the EGG as received. The wondercard will be able to be sent and the receiver will be able to receive an egg (if the savegame still has the flag unset).\n\nKillscript: no flags are set in the savegame, so the only outcome is that the egg is received. The script gets erased from the savegame, so sharing the wondercard won't allow receiver to get an egg.");
}
}
}

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>

403
wc3_tool/WC3/WCN_editor.Designer.cs generated Normal file
View File

@ -0,0 +1,403 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 28/04/2016
* Time: 21:22
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
namespace WC3_TOOL
{
partial class WCN_editor
{
/// <summary>
/// Designer variable used to keep track of non-visual components.
/// </summary>
private System.ComponentModel.IContainer components = null;
private System.Windows.Forms.Button load_wc3_but;
private System.Windows.Forms.Button save_wc3_but;
private System.Windows.Forms.TextBox wc3_path;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.TextBox header1;
private System.Windows.Forms.TextBox body5;
private System.Windows.Forms.TextBox body1;
private System.Windows.Forms.TextBox body2;
private System.Windows.Forms.TextBox body3;
private System.Windows.Forms.TextBox body4;
private System.Windows.Forms.TextBox body6;
private System.Windows.Forms.TextBox body7;
private System.Windows.Forms.CheckBox distrocheck;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.ComboBox colorbox;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.TextBox body8;
private System.Windows.Forms.TextBox body9;
private System.Windows.Forms.TextBox body10;
private System.Windows.Forms.Label regionlab;
/// <summary>
/// Disposes resources used by the form.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
/// </summary>
private void InitializeComponent()
{
this.load_wc3_but = new System.Windows.Forms.Button();
this.save_wc3_but = new System.Windows.Forms.Button();
this.wc3_path = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.header1 = new System.Windows.Forms.TextBox();
this.body5 = new System.Windows.Forms.TextBox();
this.body1 = new System.Windows.Forms.TextBox();
this.body2 = new System.Windows.Forms.TextBox();
this.body3 = new System.Windows.Forms.TextBox();
this.body4 = new System.Windows.Forms.TextBox();
this.body6 = new System.Windows.Forms.TextBox();
this.body7 = new System.Windows.Forms.TextBox();
this.distrocheck = new System.Windows.Forms.CheckBox();
this.colorbox = new System.Windows.Forms.ComboBox();
this.label10 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.label11 = new System.Windows.Forms.Label();
this.label12 = new System.Windows.Forms.Label();
this.body8 = new System.Windows.Forms.TextBox();
this.body9 = new System.Windows.Forms.TextBox();
this.body10 = new System.Windows.Forms.TextBox();
this.regionlab = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// load_wc3_but
//
this.load_wc3_but.Location = new System.Drawing.Point(49, 11);
this.load_wc3_but.Name = "load_wc3_but";
this.load_wc3_but.Size = new System.Drawing.Size(75, 23);
this.load_wc3_but.TabIndex = 0;
this.load_wc3_but.Text = "Load WN3";
this.load_wc3_but.UseVisualStyleBackColor = true;
this.load_wc3_but.Click += new System.EventHandler(this.Load_wc3_butClick);
//
// save_wc3_but
//
this.save_wc3_but.Enabled = false;
this.save_wc3_but.Location = new System.Drawing.Point(130, 11);
this.save_wc3_but.Name = "save_wc3_but";
this.save_wc3_but.Size = new System.Drawing.Size(75, 23);
this.save_wc3_but.TabIndex = 1;
this.save_wc3_but.Text = "Save WN3";
this.save_wc3_but.UseVisualStyleBackColor = true;
this.save_wc3_but.Click += new System.EventHandler(this.Save_wc3_butClick);
//
// wc3_path
//
this.wc3_path.Location = new System.Drawing.Point(221, 13);
this.wc3_path.Name = "wc3_path";
this.wc3_path.ReadOnly = true;
this.wc3_path.Size = new System.Drawing.Size(560, 20);
this.wc3_path.TabIndex = 2;
//
// label1
//
this.label1.Location = new System.Drawing.Point(49, 102);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(100, 23);
this.label1.TabIndex = 3;
this.label1.Text = "Header";
//
// label2
//
this.label2.Location = new System.Drawing.Point(49, 217);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(100, 23);
this.label2.TabIndex = 4;
this.label2.Text = "Body 5";
//
// label3
//
this.label3.Location = new System.Drawing.Point(49, 125);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(100, 23);
this.label3.TabIndex = 5;
this.label3.Text = "Body 1";
//
// label4
//
this.label4.Location = new System.Drawing.Point(49, 148);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(100, 23);
this.label4.TabIndex = 6;
this.label4.Text = "Body 2";
//
// label5
//
this.label5.Location = new System.Drawing.Point(49, 171);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(100, 23);
this.label5.TabIndex = 7;
this.label5.Text = "Body 3";
//
// label6
//
this.label6.Location = new System.Drawing.Point(49, 194);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(100, 23);
this.label6.TabIndex = 8;
this.label6.Text = "Body 4";
//
// label7
//
this.label7.Location = new System.Drawing.Point(49, 240);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(100, 23);
this.label7.TabIndex = 9;
this.label7.Text = "Body 6";
//
// label8
//
this.label8.Location = new System.Drawing.Point(49, 263);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(100, 23);
this.label8.TabIndex = 10;
this.label8.Text = "Body 7";
//
// header1
//
this.header1.Location = new System.Drawing.Point(114, 99);
this.header1.MaxLength = 40;
this.header1.Name = "header1";
this.header1.Size = new System.Drawing.Size(379, 20);
this.header1.TabIndex = 11;
this.header1.TextChanged += new System.EventHandler(this.Header1TextChanged);
//
// body5
//
this.body5.Location = new System.Drawing.Point(114, 214);
this.body5.MaxLength = 40;
this.body5.Name = "body5";
this.body5.Size = new System.Drawing.Size(379, 20);
this.body5.TabIndex = 16;
this.body5.TextChanged += new System.EventHandler(this.Body5TextChanged);
//
// body1
//
this.body1.Location = new System.Drawing.Point(114, 122);
this.body1.MaxLength = 40;
this.body1.Name = "body1";
this.body1.Size = new System.Drawing.Size(379, 20);
this.body1.TabIndex = 12;
this.body1.TextChanged += new System.EventHandler(this.Body1TextChanged);
//
// body2
//
this.body2.Location = new System.Drawing.Point(114, 145);
this.body2.MaxLength = 40;
this.body2.Name = "body2";
this.body2.Size = new System.Drawing.Size(379, 20);
this.body2.TabIndex = 13;
this.body2.TextChanged += new System.EventHandler(this.Body2TextChanged);
//
// body3
//
this.body3.Location = new System.Drawing.Point(114, 168);
this.body3.MaxLength = 40;
this.body3.Name = "body3";
this.body3.Size = new System.Drawing.Size(379, 20);
this.body3.TabIndex = 14;
this.body3.TextChanged += new System.EventHandler(this.Body3TextChanged);
//
// body4
//
this.body4.Location = new System.Drawing.Point(114, 191);
this.body4.MaxLength = 40;
this.body4.Name = "body4";
this.body4.Size = new System.Drawing.Size(379, 20);
this.body4.TabIndex = 15;
this.body4.TextChanged += new System.EventHandler(this.Body4TextChanged);
//
// body6
//
this.body6.Location = new System.Drawing.Point(114, 237);
this.body6.MaxLength = 40;
this.body6.Name = "body6";
this.body6.Size = new System.Drawing.Size(379, 20);
this.body6.TabIndex = 17;
this.body6.TextChanged += new System.EventHandler(this.Body6TextChanged);
//
// body7
//
this.body7.Location = new System.Drawing.Point(114, 260);
this.body7.MaxLength = 40;
this.body7.Name = "body7";
this.body7.Size = new System.Drawing.Size(379, 20);
this.body7.TabIndex = 18;
this.body7.TextChanged += new System.EventHandler(this.Body7TextChanged);
//
// distrocheck
//
this.distrocheck.Location = new System.Drawing.Point(364, 69);
this.distrocheck.Name = "distrocheck";
this.distrocheck.Size = new System.Drawing.Size(85, 24);
this.distrocheck.TabIndex = 22;
this.distrocheck.Text = "Distributable";
this.distrocheck.UseVisualStyleBackColor = true;
//
// colorbox
//
this.colorbox.FormattingEnabled = true;
this.colorbox.Items.AddRange(new object[] {
"Yellow (0x00)",
"Crystal (0x01)",
"Red (0x02)",
"Green (0x03)",
"Blue (0x04)",
"Brown (0x05)",
"Gold (0x06)",
"Silver (0x07)"});
this.colorbox.Location = new System.Drawing.Point(115, 58);
this.colorbox.Name = "colorbox";
this.colorbox.Size = new System.Drawing.Size(243, 21);
this.colorbox.TabIndex = 25;
this.colorbox.SelectedIndexChanged += new System.EventHandler(this.ColorboxSelectedIndexChanged);
//
// label10
//
this.label10.Location = new System.Drawing.Point(46, 60);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(63, 19);
this.label10.TabIndex = 26;
this.label10.Text = "Color";
//
// label9
//
this.label9.Location = new System.Drawing.Point(49, 286);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(100, 23);
this.label9.TabIndex = 27;
this.label9.Text = "Body 8";
//
// label11
//
this.label11.Location = new System.Drawing.Point(49, 309);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(100, 23);
this.label11.TabIndex = 28;
this.label11.Text = "Body 9";
//
// label12
//
this.label12.Location = new System.Drawing.Point(49, 332);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(100, 23);
this.label12.TabIndex = 29;
this.label12.Text = "Body 10";
//
// body8
//
this.body8.Location = new System.Drawing.Point(114, 283);
this.body8.MaxLength = 40;
this.body8.Name = "body8";
this.body8.Size = new System.Drawing.Size(379, 20);
this.body8.TabIndex = 19;
this.body8.TextChanged += new System.EventHandler(this.Body8TextChanged);
//
// body9
//
this.body9.Location = new System.Drawing.Point(114, 306);
this.body9.MaxLength = 40;
this.body9.Name = "body9";
this.body9.Size = new System.Drawing.Size(379, 20);
this.body9.TabIndex = 20;
this.body9.TextChanged += new System.EventHandler(this.Body9TextChanged);
//
// body10
//
this.body10.Location = new System.Drawing.Point(114, 329);
this.body10.MaxLength = 40;
this.body10.Name = "body10";
this.body10.Size = new System.Drawing.Size(379, 20);
this.body10.TabIndex = 21;
this.body10.TextChanged += new System.EventHandler(this.Body10TextChanged);
//
// regionlab
//
this.regionlab.Location = new System.Drawing.Point(364, 50);
this.regionlab.Name = "regionlab";
this.regionlab.Size = new System.Drawing.Size(100, 16);
this.regionlab.TabIndex = 30;
this.regionlab.Text = "USA/EUR";
//
// WCN_editor
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(820, 373);
this.Controls.Add(this.regionlab);
this.Controls.Add(this.body10);
this.Controls.Add(this.body9);
this.Controls.Add(this.body8);
this.Controls.Add(this.label12);
this.Controls.Add(this.label11);
this.Controls.Add(this.label9);
this.Controls.Add(this.label10);
this.Controls.Add(this.colorbox);
this.Controls.Add(this.distrocheck);
this.Controls.Add(this.body7);
this.Controls.Add(this.body6);
this.Controls.Add(this.body4);
this.Controls.Add(this.body3);
this.Controls.Add(this.body2);
this.Controls.Add(this.body1);
this.Controls.Add(this.body5);
this.Controls.Add(this.header1);
this.Controls.Add(this.label8);
this.Controls.Add(this.label7);
this.Controls.Add(this.label6);
this.Controls.Add(this.label5);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.wc3_path);
this.Controls.Add(this.save_wc3_but);
this.Controls.Add(this.load_wc3_but);
this.Name = "WCN_editor";
this.Text = "WN3 Editor";
this.Load += new System.EventHandler(this.WCN_editorLoad);
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.WCN_editorDragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.WCN_editorDragEnter);
this.ResumeLayout(false);
this.PerformLayout();
}
}
}

247
wc3_tool/WC3/WCN_editor.cs Normal file
View File

@ -0,0 +1,247 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 28/04/2016
* Time: 21:22
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Reflection;
using System.Resources;
namespace WC3_TOOL
{
/// <summary>
/// Description of MainForm.
/// </summary>
public partial class WCN_editor : Form
{
public WCN_editor()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
regionlab.Text = "";
GFX = this.CreateGraphics();
colorbox.SelectedIndex = 0;
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
public string wcnfilter = "Wonder News file|*.wn3|All Files (*.*)|*.*";
public byte[] wcnbuffer = new byte[SAV3.WCN_SIZE];
public static wc3 wcnfile;
public bool japanese = false;
private Graphics GFX;
void update_wcdata()
{
switch (wcnfile.distributable)
{
case 0:
distrocheck.Checked = false;
break;
case 1:
distrocheck.Checked = true;
break;
default:
distrocheck.Checked = false;
break;
}
colorbox.SelectedIndex = wcnfile.cardcolor;
header1.Text = wcnfile.get_wn_text_2(0);
body1.Text = wcnfile.get_wn_text_2(1);
body2.Text = wcnfile.get_wn_text_2(2);
body3.Text = wcnfile.get_wn_text_2(3);
body4.Text = wcnfile.get_wn_text_2(4);
body5.Text = wcnfile.get_wn_text_2(5);
body6.Text = wcnfile.get_wn_text_2(6);
body7.Text = wcnfile.get_wn_text_2(7);
body8.Text = wcnfile.get_wn_text_2(8);
body9.Text = wcnfile.get_wn_text_2(9);
body10.Text = wcnfile.get_wn_text_2(10);
}
void set_wcndata()
{
wcnfile.clear_wn_text();
wcnfile.insert_wn_text_2(header1.Text, 0);
wcnfile.insert_wn_text_2(body1.Text, 1);
wcnfile.insert_wn_text_2(body2.Text, 2);
wcnfile.insert_wn_text_2(body3.Text, 3);
wcnfile.insert_wn_text_2(body4.Text, 4);
wcnfile.insert_wn_text_2(body5.Text, 5);
wcnfile.insert_wn_text_2(body6.Text, 6);
wcnfile.insert_wn_text_2(body7.Text, 7);
wcnfile.insert_wn_text_2(body8.Text, 8);
wcnfile.insert_wn_text_2(body9.Text, 9);
wcnfile.insert_wn_text_2(body10.Text,10);
}
void Load_WCN(string path)
{
int filesize = FileIO.load_file(ref wcnbuffer, ref path, wcnfilter);
if( filesize == SAV3.WCN_SIZE || filesize == SAV3.WCN_SIZE_jap)
{
if (filesize == SAV3.WCN_SIZE_jap)
{
japanese = true;
regionlab.Text = "JAP";
header1.MaxLength = 20;
body1.MaxLength = 20;
body2.MaxLength = 20;
body3.MaxLength = 20;
body4.MaxLength = 20;
body5.MaxLength = 20;
body6.MaxLength = 20;
body7.MaxLength = 20;
body8.MaxLength = 20;
body9.MaxLength = 20;
body10.MaxLength = 20;
}else
{
japanese = false;
regionlab.Text = "USA/EUR";
header1.MaxLength = 40;
body1.MaxLength = 40;
body2.MaxLength = 40;
body3.MaxLength = 40;
body4.MaxLength = 40;
body5.MaxLength = 40;
body6.MaxLength = 40;
body7.MaxLength = 40;
body8.MaxLength = 40;
body9.MaxLength = 40;
body10.MaxLength = 40;
}
wc3_path.Text = path;
wcnfile = new wc3(wcnbuffer);
update_wcdata();
save_wc3_but.Enabled = true;
}else{
MessageBox.Show("Invalid file size.");
}
}
void Load_wc3_butClick(object sender, EventArgs e)
{
Load_WCN(null);
}
void Save_wc3_butClick(object sender, EventArgs e)
{
int distro = 0;
if(distrocheck.Checked)
distro = 1;
wcnfile.set_wcn_color_distro(colorbox.SelectedIndex , distro);
set_wcndata();
wcnfile.fix_wcn_checksum();
//if (wcnfile.Edited)
FileIO.save_data(wcnfile.Data, wcnfilter);
//else MessageBox.Show("Save has not been edited");
}
void WCN_editorLoad(object sender, EventArgs e)
{
}
ResourceManager resources = new ResourceManager("WC3_TOOL.WC3.Image.Cards", Assembly.GetExecutingAssembly());
Image bitmap;
void drawCard()
{
//ResourceManager resources = new ResourceManager("WC3_TOOL.WC3.Image.Cards", Assembly.GetExecutingAssembly());
bitmap = (Image)resources.GetObject("News_"+colorbox.SelectedIndex.ToString());
GFX.DrawImage(bitmap, 500, 140+26, 260, 140);
GFX.DrawImage(bitmap, 500, 140, 260, 140);
GFX.DrawString(header1.Text, new Font("Calibri", 8), Brushes.Black, 500+7, 140+4);
GFX.DrawString(body1.Text, new Font("Calibri", 8), Brushes.Black, 500+7, 140+21);
GFX.DrawString(body2.Text, new Font("Calibri", 8), Brushes.Black, 500+7, 140+21+(14*1));
GFX.DrawString(body3.Text, new Font("Calibri", 8), Brushes.Black, 500+7, 140+21+(14*2));
GFX.DrawString(body4.Text, new Font("Calibri", 8), Brushes.Black, 500+7, 140+21+(14*3));
GFX.DrawString(body5.Text, new Font("Calibri", 8), Brushes.Black, 500+7, 140+21+(14*4));
GFX.DrawString(body6.Text, new Font("Calibri", 8), Brushes.Black, 500+7, 140+21+(14*5));
GFX.DrawString(body7.Text, new Font("Calibri", 8), Brushes.Black, 500+7, 140+21+(14*6));
GFX.DrawString(body8.Text, new Font("Calibri", 8), Brushes.Black, 500+7, 140+21+(14*7));
GFX.DrawString(body9.Text, new Font("Calibri", 8), Brushes.Black, 500+7, 140+21+(14*8));
GFX.DrawString(body10.Text, new Font("Calibri", 8), Brushes.Black, 500+7, 140+21+(14*9));
}
void ColorboxSelectedIndexChanged(object sender, EventArgs e)
{
drawCard();
}
void Header1TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Body1TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Body2TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Body3TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Body4TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Body5TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Body6TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Body7TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Body8TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Body9TextChanged(object sender, EventArgs e)
{
drawCard();
}
void Body10TextChanged(object sender, EventArgs e)
{
drawCard();
}
void WCN_editorDragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
void WCN_editorDragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
Load_WCN(files[0]);
}
}
}

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>

564
wc3_tool/WC3/wc3.cs Normal file
View File

@ -0,0 +1,564 @@
/*
* Created by SharpDevelop.
* User: suloku
* Date: 28/04/2016
* Time: 21:32
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using PKHeX;
namespace WC3_TOOL
{
/// <summary>
/// Description of wc3.
/// </summary>
public class wc3
{
private static UInt16[] lookup_table = new UInt16[256];
private static void init_table()
{
//Sorry, this is not public for now.
}
private static UInt16 swap(UInt16 value)
{
int b1 = value & 0xFF;
int b2 = value >> 8 & 0xFF;
return (UInt16)(b1 << 8 | b2 << 0);
}
public static UInt16 wc_checksum(byte[] buffer, int fSize, int offset)
{
init_table();
UInt16 iSeed = 0;//Also not public...sorry again
UInt16 tabNum;
UInt16 tabVal;
int curByte = 0;
for (curByte=0; curByte<fSize; curByte++)
{
tabNum = (UInt16)((iSeed ^ buffer[curByte+offset]) & 0xFF);
//MessageBox.Show(tabNum.ToString());
tabVal = lookup_table[tabNum];
//MessageBox.Show(tabVal.ToString());
tabVal = (UInt16)(swap(tabVal) & 0xFFFF);
iSeed = (UInt16)((tabVal ^ (iSeed >> 8)) & 0xFFFF);
}
iSeed = (UInt16)((iSeed ^ 0xFFFF) & 0xFFFF);
return iSeed;
}
char[] SYMBOL = {
' ', 'À', 'Á', 'Â', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'こ', 'Î', 'Ï', 'Ò', 'Ó', 'Ô',
'Œ', 'Ù', 'Ú', 'Û', 'Ñ', 'ß', 'à', 'á', 'ね', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'ま',
'î', 'ï', 'ò', 'ó', 'ô', 'œ', 'ù', 'ú', 'û', 'ñ', 'º', 'ª', ' ', '&', '+', 'あ',
'ぃ', 'ぅ', 'ぇ', 'ぉ', ' ', '=', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', '¿', '¡', ' ', ' ', ' ', ' ', ' ', ' ', '<', 'Í', '%', '(', ')', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'â', ' ', ' ', ' ', ' ', ' ', ' ', 'í',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
'ゾ', 'ダ', 'ヂ','ヅ', 'デ', 'ド', 'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ',
'ッ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!', '?', '.', '-', '·',
'…', '“', '”', '', '\'', '♂', '♀', '§', ',', '×', '/', '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', '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', '>',
':', 'Ä', 'Ö', 'Ü', 'ä', 'ö', 'ü', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'
};
public const int SIZE_WC3 = 0x4 + 0x14C + 0x28 + 0x28 + 0x3E8 + 4;
public const int SIZE_WC3_jap = 0x4 + 0xA4 + 0x28 + 0x28 + 0x3E8 + 4;
public const int ICON_WC3 = 0x4 + 0x14C + 10;
public const int ICON_WC3_jap = 0x4 + 0xA4 + 10;
public const int SIZE_WN3 = 4+4+440; //Checksum + header + Data (40bytes*11 lines)
public const int SIZE_WN3_jap = 4+4+220; //Checksum + header + Data (20bytes*11 lines)
public const int WC_TEXT_START = 14;
public const int WCN_TEXT_START = 8;
public byte cardcolor;
public int distributable;
private int text_start = 0;
private int wc3_size = 0;
private int wn_size = 0;
public bool japanese = false;
// Global Settings
// Save Data Attributes
public byte[] Data;
public bool Edited;
public readonly bool Exportable;
public readonly byte[] BAK;
public string FileName, FilePath;
public wc3(byte[] data)
{
if(data.Length == SIZE_WN3 || data.Length == SIZE_WN3_jap) //WN3
{
Data = (byte[])(data ?? new byte[data.Length]).Clone();
BAK = (byte[])Data.Clone();
Exportable = !Data.SequenceEqual(new byte[Data.Length]);
if ( Data[0x06] == 0x1)
distributable = 1;
else
distributable = 0;
cardcolor = Data[0x07];
text_start = WCN_TEXT_START;
if(data.Length == SIZE_WN3_jap)
japanese = true;
if (japanese == true)
wn_size = SIZE_WN3_jap;
else
wn_size = SIZE_WN3;
}
else //WC3
{
Data = (byte[])(data ?? new byte[data.Length]).Clone();
BAK = (byte[])Data.Clone();
Exportable = !Data.SequenceEqual(new byte[Data.Length]);
if(data.Length == SIZE_WC3_jap)
japanese = true;
if (japanese == true)
wc3_size = SIZE_WC3_jap;
else
wc3_size = SIZE_WC3;
if ( (Data[0xC] & 0x80) == 0x80)
distributable = 1;
else if ( (Data[0xC] & 0x40) == 0x40)
distributable = 2;
else
distributable = 0;
cardcolor = (byte)(Data[0xC] & ~0x80);
text_start = WC_TEXT_START;
}
return;
}
/* public wc3(byte[] data, int wcn)
{
Data = (byte[])(data ?? new byte[SAV3.WCN_SIZE]).Clone();
BAK = (byte[])Data.Clone();
Exportable = !Data.SequenceEqual(new byte[Data.Length]);
if ( Data[0x06] == 0x1)
distributable = 1;
else
distributable = 0;
cardcolor = Data[0x07];
text_start = WCN_TEXT_START;
if (japanese == true)
wn_size = WCN
return;
}
*/
public byte[] getData(int Offset, int Length)
{
return Data.Skip(Offset).Take(Length).ToArray();
}
public void setData(byte[] input, int Offset)
{
input.CopyTo(Data, Offset);
Edited = true;
}
public string gba2text(byte[] input)
{
string texto;
texto = "";
foreach (byte value in input)
{
string newtext = texto + SYMBOL[value].ToString();
texto = newtext;
}
return texto;
}
public byte[] text2gba(string input)
{
byte[] gbatext = new byte[40];
byte i = 0;
int count = 0;
foreach (char value in input)
{
for(i=0;i<0xFF;i++)
{
if (value == SYMBOL[i])
{
if (i==0)
{
gbatext[count] = 0;
break;
}
else
{
gbatext[count] = i;
break;
}
}
}
//MessageBox.Show(gbatext[count].ToString("X"));
count++;
}
return gbatext;
}
public UInt16 get_wc_icon()
{
if(japanese == true)
return BitConverter.ToUInt16(getData(ICON_WC3_jap, 2), 0);
else
return BitConverter.ToUInt16(getData(ICON_WC3, 2), 0);
}
public int get_wc_color()
{
int colorgui;
byte test = (byte)(cardcolor&0x1F);
switch (test)
{
case 0x0:
case 0x1:
case 0x2:
case 0x3:
colorgui = 0;
break;
case 0x4:
case 0x5:
case 0x6:
case 0x7:
colorgui = 1;
break;
case 0x8:
case 0x9:
case 0xA:
case 0xB:
colorgui = 2;
break;
case 0xC:
case 0xD:
case 0xE:
case 0xF:
colorgui = 3;
break;
case 0x10:
case 0x11:
case 0x12:
case 0x13:
colorgui = 4;
break;
case 0x14:
case 0x15:
case 0x16:
case 0x17:
colorgui = 5;
break;
case 0x18:
case 0x19:
case 0x1A:
case 0x1B:
colorgui = 6;
break;
case 0x1C:
case 0x1D:
case 0x1E:
case 0x1F:
colorgui = 7;
break;
default:
colorgui = 0;
break;
}
return colorgui;
}
public void set_wc_icon(int newicon)
{
if (japanese == true)
{
setData(BitConverter.GetBytes((UInt16)newicon), ICON_WC3_jap);
}
else
{
setData(BitConverter.GetBytes((UInt16)newicon), ICON_WC3);
}
}
public void set_wcn_color_distro(int color, int distro)
{
if (distro == 1)
Data[0x06] = 0x01;
if (distro == 2)
Data[0x06] = 0x02;//Does not allow distribution either. More testing needed.
else
Data[0x06] = 0x00;
Data[0x07] = (byte)(color&0xFF);
}
public void set_wc_color_distro(int color, int distro)
{
byte output = 0;
switch (color)
{
case 0x0:
output = 0x00;
break;
case 0x1:
output = 0x04;
break;
case 0x2:
output = 0x08;
break;
case 0x3:
output = 0x0C;
break;
case 0x4:
output = 0x10;
break;
case 0x5:
output = 0x14;
break;
case 0x6:
output = 0x18;
break;
case 0x7:
output = 0x1C;
break;
default:
output = 0x00;
break;
}
if (distro == 1)
output = (byte)(output + 0x80);
else if (distro == 2)
output = (byte)(output + 0x40);
Data[0xC] = output;
}
public string get_wc_text(int index)
{
return gba2text(Data.Skip(text_start+(index * 0x28)).Take(0x28).ToArray());
}
public string get_wc_text_2(int index)
{
int size = 0x28;
int[] offset = {0,40,80,120,160,200,240,280};
if (japanese == true)
{
offset[0]=0;offset[1]=18;offset[2]=18+13;offset[3]=18+13+20;
offset[4]=18+13+40;offset[5]=18+13+60;offset[6]=18+13+80;offset[7]=18+13+100;
switch(index)
{
case 0:
size = 18;
break;
case 1:
size = 13;
break;
default:
size = 20;
break;
}
}
return PKHeX.PKM.getG3Str(Data.Skip(text_start+(offset[index])).Take(size).ToArray(), japanese);
}
public void insert_wc_text(string text, int index)
{
setData(text2gba(text), text_start+(index * 0x28));
}
public void insert_wc_text_2(string text, int index)
{
int[] offset = {0,40,80,120,160,200,240,280};
if (japanese == true)
{
offset[0]=0;offset[1]=18;offset[2]=18+13;offset[3]=18+13+20;
offset[4]=18+13+40;offset[5]=18+13+60;offset[6]=18+13+80;offset[7]=18+13+100;
}
setData(PKHeX.PKM.setG3Str_WONDER(text, japanese), text_start+offset[index]);
}
public void clear_wc_text()
{
int i;
if (japanese == true)
{
for(i=0;i<(18+13+(20*6));i++)
Data[text_start+i]=0x00;
}else
{
for(i=0;i<(40*8);i++)
Data[text_start+i]=0x00;
}
}
public void clear_wn_text()
{
int i;
if (japanese == true)
{
for(i=0;i<(20*11);i++)
Data[text_start+i]=0x00;
}else
{
for(i=0;i<(40*11);i++)
Data[text_start+i]=0x00;
}
}
public string get_wn_text_2(int index)
{
int size = 0x28;
int[] offset = {0,40,80,120,160,200,240,280,320,360,400};
if (japanese == true)
{
size = 0x14;
int i;
for (i=0;i<11;i++){
offset[i]=(0x14*i);
}
}
return PKHeX.PKM.getG3Str(Data.Skip(text_start+(offset[index])).Take(size).ToArray(), japanese);
}
public void insert_wn_text_2(string text, int index)
{
int[] offset = {0,40,80,120,160,200,240,280,320,360,400};
if (japanese == true)
{
int i;
for (i=0;i<11;i++){
offset[i]=(0x14*i);
}
}
setData(PKHeX.PKM.setG3Str_WONDER(text, japanese), text_start+offset[index]);
}
public void fakeWC()
{
UInt32 fakemagic = 0xB9BEB4BA;
setData(BitConverter.GetBytes(fakemagic), 4);
}
public void fakeSCript()
{
//This value is actually to whom the script is associated, changing it removes it from green deliveryman
//UInt32 fakemagic = 0x01000333;
UInt32 fakemagic = 0xFFFFFF33;//Value in the wondercard routine, triggers green man.
setData(BitConverter.GetBytes(fakemagic), wc3_size-1000);
}
public void clean_trash()
{
int i = 0;
for (i=0; i<996; i++)
{
if(Data[wc3_size-i-1] == 0xFF)
break;
else
Data[wc3_size-i-1] = 0;
}
}
public void fix_wcn_checksum()
{
UInt16 chk = wc_checksum(getData(4, wn_size-4), wn_size-4, 0);
setData(BitConverter.GetBytes(chk), 0);
}
public void fix_wc_checksum()
{
UInt16 chk;
if(japanese == true)
{
chk = wc_checksum(getData(4, 0xA4), 0xA4, 0);
}
else
{
chk = wc_checksum(getData(4, 0x14C), 0x14C, 0);
}
setData(BitConverter.GetBytes(chk), 0);
}
public void fix_script_checksum()
{
UInt16 chk = wc_checksum(getData(wc3_size-1000, 1000), 1000, 0);
setData(BitConverter.GetBytes(chk), wc3_size-1004);
}
public byte[] get_script()
{
int scriptsize=0;
//int i = 0;
//Not how to detect the end of the script...
/*for (i=0; i<996; i++)
{
if(Data[wc3_size-i-1] == 0xFF)
break;
else
scriptsize++;
}*/
return getData(wc3_size-996, 996-scriptsize);
}
public byte[] get_script_XSE()
{
//Get base address
UInt32 address = BitConverter.ToUInt32(getData(wc3_size-996+1, 4), 0);
address = address - (address&0xFF000000);
//Build file
byte[] xse_export = new byte[address+996];
//Set address to the first 4 bytes
if (address > 3)
BitConverter.GetBytes(address).CopyTo(xse_export, 0);
MessageBox.Show("Open script in XSE at address 0x"+address.ToString("X"));
//Set script to buffer
getData(wc3_size-996, 996).CopyTo(xse_export, address);
return xse_export;
}
public void set_script(byte[] newscript)
{
//UInt32 header = 0xFFFFFF33;
//setData(BitConverter.GetBytes(header).ToArray(), wc3_size-1000);
//Clear existing script
int i = 0;
for (i=0; i<996; i++)
{
Data[wc3_size-i-1] = 0x00;
}
setData(newscript, wc3_size-996);
}
public void set_script_XSE(byte[] newscript)
{
//Clear existing script
int i = 0;
for (i=0; i<996; i++)
{
Data[wc3_size-i-1] = 0x00;
}
//Get address to script
UInt32 address = BitConverter.ToUInt32(newscript, 0);
setData(newscript.Skip((int)address).Take(996).ToArray(), wc3_size-996);
}
public byte ID { get { return Data[wc3_size-1000]; } set { Data[wc3_size-1000] = value; } }
public byte MAP_BANK { get { return Data[wc3_size-999]; } set { Data[wc3_size-999] = value; } }
public byte MAP_MAP { get { return Data[wc3_size-998]; } set { Data[wc3_size-998] = value; } }
public byte MAP_NPC { get { return Data[wc3_size-997]; } set { Data[wc3_size-997] = value; } }
}
}

164
wc3_tool/WC3_TOOL.csproj Normal file
View File

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<PropertyGroup>
<ProjectGuid>{1E65C335-2DE3-410B-B713-5F7B023106CD}</ProjectGuid>
<ProjectTypeGuids>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<OutputType>WinExe</OutputType>
<RootNamespace>WC3_TOOL</RootNamespace>
<AssemblyName>WC3_TOOL</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<AppDesignerFolder>Properties</AppDesignerFolder>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
<PlatformTarget>x86</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<OutputPath>bin\Debug\</OutputPath>
<DebugSymbols>True</DebugSymbols>
<DebugType>Full</DebugType>
<Optimize>False</Optimize>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<OutputPath>bin\Release\</OutputPath>
<DebugSymbols>False</DebugSymbols>
<DebugType>None</DebugType>
<Optimize>True</Optimize>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Data.DataSetExtensions">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="EventTool.cs" />
<Compile Include="EventTool.Designer.cs">
<DependentUpon>EventTool.cs</DependentUpon>
</Compile>
<Compile Include="MainScreen.cs" />
<Compile Include="MainScreen.Designer.cs">
<DependentUpon>MainScreen.cs</DependentUpon>
</Compile>
<Compile Include="WC3\Decor_editor.cs" />
<Compile Include="WC3\Decor_editor.Designer.cs">
<DependentUpon>Decor_editor.cs</DependentUpon>
</Compile>
<Compile Include="WC3\ECB.cs" />
<Compile Include="WC3\ECB_editor.cs" />
<Compile Include="WC3\ECB_editor.Designer.cs">
<DependentUpon>ECB_editor.cs</DependentUpon>
</Compile>
<Compile Include="WC3\ECT.cs" />
<Compile Include="WC3\ECT_editor.cs" />
<Compile Include="WC3\ECT_editor.Designer.cs">
<DependentUpon>ECT_editor.cs</DependentUpon>
</Compile>
<Compile Include="WC3\ECT_editor_text.cs" />
<Compile Include="WC3\ECT_pkedit.cs" />
<Compile Include="WC3\ECT_pkedit.Designer.cs">
<DependentUpon>ECT_pkedit.cs</DependentUpon>
</Compile>
<Compile Include="WC3\ME3.cs" />
<Compile Include="WC3\ME3_editor.cs" />
<Compile Include="WC3\ME3_editor.Designer.cs">
<DependentUpon>ME3_editor.cs</DependentUpon>
</Compile>
<Compile Include="WC3\PKHEX\PKM.cs" />
<Compile Include="WC3\SAV3.cs" />
<Compile Include="WC3\TV.cs" />
<Compile Include="WC3\TV_editor.cs" />
<Compile Include="WC3\TV_editor.Designer.cs">
<DependentUpon>TV_editor.cs</DependentUpon>
</Compile>
<Compile Include="WC3\WC3_editor.cs" />
<Compile Include="WC3\WC3_editor.Designer.cs">
<DependentUpon>WC3_editor.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="WC3\FILEIO.cs" />
<Compile Include="WC3\wc3.cs" />
<Compile Include="WC3\WC3_editor_givegg.cs" />
<Compile Include="WC3\WC3_editor_givegg.Designer.cs">
<DependentUpon>WC3_editor_givegg.cs</DependentUpon>
</Compile>
<Compile Include="WC3\WC3_editor_giveggExt.cs" />
<Compile Include="WC3\WC3_editor_giveggExt.Designer.cs">
<DependentUpon>WC3_editor_giveggExt.cs</DependentUpon>
</Compile>
<Compile Include="WC3\WCN_editor.cs" />
<Compile Include="WC3\WCN_editor.Designer.cs">
<DependentUpon>WCN_editor.cs</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<Folder Include="WC3" />
<Folder Include="WC3\Image" />
<Folder Include="WC3\PKHEX" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="EventTool.resx">
<DependentUpon>EventTool.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MainScreen.resx">
<DependentUpon>MainScreen.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="WC3\Decor_editor.resx">
<DependentUpon>Decor_editor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="WC3\ECB_editor.resx">
<DependentUpon>ECB_editor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="WC3\ECT_editor.resx">
<DependentUpon>ECT_editor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="WC3\ECT_pkedit.resx">
<DependentUpon>ECT_pkedit.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="WC3\GiveEggOrg.resx" />
<EmbeddedResource Include="WC3\Image\Cards.resx" />
<EmbeddedResource Include="WC3\Image\Icons.resx" />
<EmbeddedResource Include="WC3\ME3_editor.resx">
<DependentUpon>ME3_editor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="WC3\Tickets.resx" />
<EmbeddedResource Include="WC3\TV_editor.resx">
<DependentUpon>TV_editor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="WC3\WC3_editor.resx">
<DependentUpon>WC3_editor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="WC3\WC3_editor_givegg.resx">
<DependentUpon>WC3_editor_givegg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="WC3\WC3_editor_giveggExt.resx">
<DependentUpon>WC3_editor_giveggExt.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="WC3\WCN_editor.resx">
<DependentUpon>WCN_editor.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

6
wc3_tool/app.config Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>