Showing preview only (2,651K chars total). Download the full file or copy to clipboard to get everything.
Repository: mm201/pkmn-classic-framework
Branch: master
Commit: b7759e7a6bd3
Files: 314
Total size: 2.5 MB
Directory structure:
gitextract_fpvand7g/
├── .gitignore
├── .gitmodules
├── GlobalTerminalService/
│ ├── GTServer4.cs
│ ├── GTServer5.cs
│ ├── GTServerBase.cs
│ ├── GlobalTerminalService.csproj
│ ├── Program.cs
│ ├── ProjectInstaller.Designer.cs
│ ├── ProjectInstaller.cs
│ ├── ProjectInstaller.resx
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Service1.Designer.cs
│ ├── Service1.cs
│ ├── Service1.resx
│ ├── app.config
│ └── cert.pfx
├── LICENSE.md
├── MakeBaseStatTables/
│ ├── MakeBaseStatTables.csproj
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── app.config
│ └── packages.config
├── README.md
├── RenameImages/
│ ├── App.config
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── RenameImages.csproj
├── Roadmap.md
├── VeekunImport/
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── VeekunImport.csproj
│ ├── app.config
│ ├── countries4.txt
│ ├── countries5.txt
│ ├── families.txt
│ ├── families_map.txt
│ ├── form_abilities3.txt
│ ├── form_abilities4.txt
│ ├── form_abilities5.txt
│ ├── form_abilities6.txt
│ ├── form_stats1.txt
│ ├── form_stats2.txt
│ ├── form_stats3.txt
│ ├── form_stats4.txt
│ ├── form_stats5.txt
│ ├── form_stats6.txt
│ ├── form_values.txt
│ ├── items3.txt
│ ├── items4.txt
│ ├── items5.txt
│ ├── items_balls.txt
│ ├── packages.config
│ ├── regions.txt
│ ├── ribbon_positions3.txt
│ ├── ribbon_positions4.txt
│ ├── ribbon_positions5.txt
│ └── ribbons.txt
├── bvCrawler4/
│ ├── App.config
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── bvCrawler4.csproj
│ └── packages.config
├── bvCrawler5/
│ ├── App.config
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── bvCrawler5.csproj
│ └── packages.config
├── bvRestorer4/
│ ├── App.config
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── bvRestorer4.csproj
├── bvRestorer5/
│ ├── App.config
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── bvRestorer5.csproj
├── gfx/
│ ├── 2014 design/
│ │ ├── fGTS colour blending.psd
│ │ ├── heading-backdrop.psd
│ │ ├── headinglogo.psd
│ │ ├── logo-colour.psd
│ │ └── logov3.psd
│ └── 2023 design/
│ ├── Discord Icon Pride.afdesign
│ ├── Discord Icon.afdesign
│ ├── Logo.afdesign
│ ├── Temp placeholder background.afdesign
│ └── Touch Icon.afdesign
├── gts/
│ ├── Global.asax
│ ├── Global.asax.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ └── PublishProfiles/
│ │ ├── Local IIS.pubxml
│ │ └── Public.pubxml
│ ├── Web.Public.config
│ ├── Web.config
│ ├── admin/
│ │ ├── Sessions.aspx
│ │ ├── Sessions.aspx.cs
│ │ ├── Sessions.aspx.designer.cs
│ │ ├── Web.Debug.config
│ │ ├── Web.Release.config
│ │ └── Web.config
│ ├── gts.csproj
│ ├── masters/
│ │ ├── MasterPage.master
│ │ ├── MasterPage.master.cs
│ │ └── MasterPage.master.designer.cs
│ ├── pgl.ashx
│ ├── pgl.ashx.cs
│ ├── pkvldtprod.ashx
│ ├── pkvldtprod.ashx.cs
│ ├── pokemondpds.ashx
│ ├── pokemondpds.ashx.cs
│ ├── pokemondpds_web.ashx
│ ├── pokemondpds_web.ashx.cs
│ ├── src/
│ │ ├── AppStateHelper.cs
│ │ ├── BanHelper.cs
│ │ ├── FakeOpponentGenerator.cs
│ │ └── IpAddressHelper.cs
│ ├── syachi2ds.ashx
│ └── syachi2ds.ashx.cs
├── library/
│ ├── Data/
│ │ ├── DataMysql.cs
│ │ ├── DataSqlite.cs
│ │ ├── Database.cs
│ │ ├── DatabaseExtender.cs
│ │ ├── MySqlDatabaseExtender.cs
│ │ └── SqlDatabaseExtender.cs
│ ├── Library.csproj
│ ├── Pokedex/
│ │ ├── Ability.cs
│ │ ├── Evolution.cs
│ │ ├── Family.cs
│ │ ├── Form.cs
│ │ ├── FormAbilities.cs
│ │ ├── FormStats.cs
│ │ ├── Item.cs
│ │ ├── Location.cs
│ │ ├── Move.cs
│ │ ├── Pokedex.cs
│ │ ├── PokedexRecordBase.cs
│ │ ├── Region.cs
│ │ ├── Ribbon.cs
│ │ ├── Species.cs
│ │ └── Type.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Structures/
│ │ ├── ByteStatValues.cs
│ │ ├── ContestStatValues.cs
│ │ ├── Enums.cs
│ │ ├── Format.cs
│ │ ├── IntStatValues.cs
│ │ ├── IvStatValues.cs
│ │ ├── MoveSlot.cs
│ │ ├── Pokemon4.cs
│ │ ├── Pokemon5.cs
│ │ ├── PokemonBase.cs
│ │ ├── PokemonParty4.cs
│ │ ├── PokemonParty5.cs
│ │ ├── PokemonPartyBase.cs
│ │ ├── StatValues.cs
│ │ ├── StatValuesBase.cs
│ │ └── TrainerMemo.cs
│ ├── Support/
│ │ ├── AliasTable.cs
│ │ ├── AssertHelper.cs
│ │ ├── BinarySerializableBase.cs
│ │ ├── EncodedString4.cs
│ │ ├── EncodedString5.cs
│ │ ├── EncodedStringBase.cs
│ │ ├── EnumerableExtender.cs
│ │ ├── GameSyncUtils.cs
│ │ ├── Indexer1d.cs
│ │ ├── LazyKeyValuePair.cs
│ │ ├── LocalizedString.cs
│ │ ├── LogHelper.cs
│ │ ├── StreamExtender.cs
│ │ ├── StringHelper.cs
│ │ ├── TrendyPhrase4.cs
│ │ ├── TrendyPhrase5.cs
│ │ ├── TrendyPhraseBase.cs
│ │ └── ValidationSummary.cs
│ ├── Wfc/
│ │ ├── BanStatus.cs
│ │ ├── BattleSubwayPokemon5.cs
│ │ ├── BattleSubwayProfile5.cs
│ │ ├── BattleSubwayRecord5.cs
│ │ ├── BattleTowerPokemon4.cs
│ │ ├── BattleTowerPokemonBase.cs
│ │ ├── BattleTowerProfile4.cs
│ │ ├── BattleTowerProfileBase.cs
│ │ ├── BattleTowerRecord4.cs
│ │ ├── BattleTowerRecordBase.cs
│ │ ├── BattleVideoHeader4.cs
│ │ ├── BattleVideoHeader5.cs
│ │ ├── BattleVideoRecord4.cs
│ │ ├── BattleVideoRecord5.cs
│ │ ├── BoxRecord4.cs
│ │ ├── DressupRecord4.cs
│ │ ├── GtsRecord4.cs
│ │ ├── GtsRecord5.cs
│ │ ├── GtsRecordBase.cs
│ │ ├── MusicalRecord5.cs
│ │ ├── PlazaQuestionnaire.cs
│ │ ├── PlazaSchedule.cs
│ │ ├── TrainerProfile4.cs
│ │ ├── TrainerProfile5.cs
│ │ ├── TrainerProfileBase.cs
│ │ ├── TrainerProfilePlaza.cs
│ │ ├── TrainerRankings.cs
│ │ └── VipRecord.cs
│ ├── app.config
│ ├── database.sql
│ ├── lib/
│ │ ├── SQLite.Designer.pdb
│ │ ├── SQLite.Designer.xml
│ │ ├── System.Data.SQLite.Linq.pdb
│ │ ├── System.Data.SQLite.Linq.xml
│ │ ├── System.Data.SQLite.dll.config
│ │ ├── System.Data.SQLite.pdb
│ │ └── System.Data.SQLite.xml
│ └── packages.config
├── pkmn-classic-framework.sln
├── pokedex/
│ └── Shiny lock generations.txt
├── towerRestorer4/
│ ├── App.config
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── towerRestorer.csproj
└── web/
├── Default.aspx
├── Default.aspx.cs
├── Default.aspx.designer.cs
├── Global.asax
├── Global.asax.cs
├── Properties/
│ ├── AssemblyInfo.cs
│ └── PublishProfiles/
│ └── Public.pubxml
├── RoomLeaders.aspx
├── RoomLeaders.aspx.cs
├── RoomLeaders.aspx.designer.cs
├── Web.Public.config
├── Web.config
├── admin/
│ ├── AddBoxes.aspx
│ ├── AddBoxes.aspx.cs
│ ├── AddBoxes.aspx.designer.cs
│ ├── AddDressup.aspx
│ ├── AddDressup.aspx.cs
│ ├── AddDressup.aspx.designer.cs
│ ├── AddMusical.aspx
│ ├── AddMusical.aspx.cs
│ ├── AddMusical.aspx.designer.cs
│ ├── Web.Debug.config
│ ├── Web.Release.config
│ └── Web.config
├── battlevideo/
│ ├── Default.aspx
│ ├── Default.aspx.cs
│ └── Default.aspx.designer.cs
├── controls/
│ ├── DnsAddress.ascx
│ ├── DnsAddress.ascx.cs
│ ├── DnsAddress.ascx.designer.cs
│ ├── ForeignLookup.ascx
│ ├── ForeignLookup.ascx.cs
│ ├── ForeignLookup.ascx.designer.cs
│ ├── LabelTextBox.ascx
│ ├── LabelTextBox.ascx.cs
│ ├── LabelTextBox.ascx.designer.cs
│ ├── PokemonPicker.ascx
│ ├── PokemonPicker.ascx.cs
│ ├── PokemonPicker.ascx.designer.cs
│ ├── PokemonSource.ashx
│ └── PokemonSource.ashx.cs
├── css/
│ ├── form.css
│ ├── login.css
│ ├── main.css
│ ├── pkmnstats.css
│ └── types.css
├── gts/
│ ├── Default.aspx
│ ├── Default.aspx.cs
│ ├── Default.aspx.designer.cs
│ ├── Pokemon.aspx
│ ├── Pokemon.aspx.cs
│ └── Pokemon.aspx.designer.cs
├── masters/
│ ├── LeftColumn.master
│ ├── LeftColumn.master.cs
│ ├── LeftColumn.master.designer.cs
│ ├── MasterPage.master
│ ├── MasterPage.master.cs
│ ├── MasterPage.master.designer.cs
│ ├── ThreeColumn.master
│ ├── ThreeColumn.master.cs
│ └── ThreeColumn.master.designer.cs
├── packages.config
├── scripts/
│ ├── form.js
│ └── retina.js
├── src/
│ ├── AppStateHelper.cs
│ ├── Common.cs
│ ├── DependencyNode.cs
│ ├── ForeignLookupSource.cs
│ ├── HeaderColour.cs
│ ├── OnceTemplate.cs
│ ├── RequireCss.cs
│ ├── RequireLinkBase.cs
│ ├── RequireScript.cs
│ ├── RetinaImage.cs
│ ├── RetinaImageBase.cs
│ ├── WebException.cs
│ └── WebFormat.cs
├── test/
│ ├── BoxUp.aspx
│ ├── BoxUp.aspx.cs
│ ├── BoxUp.aspx.designer.cs
│ ├── Decode.aspx
│ ├── Decode.aspx.cs
│ ├── Decode.aspx.designer.cs
│ ├── Gsid.aspx
│ ├── Gsid.aspx.cs
│ ├── Gsid.aspx.designer.cs
│ ├── NameDecode.aspx
│ ├── NameDecode.aspx.cs
│ ├── NameDecode.aspx.designer.cs
│ ├── NameEncode.aspx
│ ├── NameEncode.aspx.cs
│ ├── NameEncode.aspx.designer.cs
│ ├── VideoId.aspx
│ ├── VideoId.aspx.cs
│ ├── VideoId.aspx.designer.cs
│ └── Web.config
└── web.csproj
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
[Tt]humbs.db
*.suo
*.csproj.user
*.pubxml.user
[Dd]ebug/
[Rr]elease/
[Bb]in/
[Pp]ackages/
.DS_Store
._.DS_Store
._*
.vs/
================================================
FILE: .gitmodules
================================================
[submodule "GamestatsBase"]
path = GamestatsBase
url = git@github.com:mm201/GamestatsBase.git
branch = master
================================================
FILE: GlobalTerminalService/GTServer4.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using PkmnFoundations.Support;
using PkmnFoundations.Structures;
using PkmnFoundations.Data;
using System.Net.Sockets;
using System.Diagnostics;
using PkmnFoundations.Wfc;
namespace PkmnFoundations.GlobalTerminalService
{
public class GTServer4 : GTServerBase
{
public GTServer4()
: base(12400, false)
{
Initialize();
}
public GTServer4(int threads)
: base(12400, false, threads)
{
Initialize();
}
public GTServer4(int threads, int timeout)
: base(12400, false, threads, timeout)
{
Initialize();
}
private void Initialize()
{
}
protected override byte[] ProcessRequest(byte[] data, TcpClient c)
{
int length = BitConverter.ToInt32(data, 0);
AssertHelper.Equals(length, data.Length);
RequestTypes4 requestType = (RequestTypes4)data[4];
StringBuilder logEntry = new StringBuilder();
logEntry.AppendFormat("Handling Generation IV {0} request.\nHost: {1}", requestType, c.Client.RemoteEndPoint);
logEntry.AppendLine();
EventLogEntryType type = EventLogEntryType.Information;
CryptMessage(data);
MemoryStream response = new MemoryStream();
response.Write(new byte[] { 0x00, 0x00, 0x00, 0x00 }, 0, 4); // placeholder for length
response.WriteByte((byte)requestType);
response.WriteByte(data[5]);
try
{
int pid = BitConverter.ToInt32(data, 8);
byte version = data[0x0c];
byte language = data[0x0d];
logEntry.AppendFormat("pid: {0}", pid);
logEntry.AppendLine();
switch (requestType)
{
#region Box upload
case RequestTypes4.BoxUpload:
{
if (data.Length != 0x360)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
BoxLabels4 label = (BoxLabels4)BitConverter.ToInt32(data, 0x140);
byte[] boxData = new byte[0x21c];
Array.Copy(data, 0x144, boxData, 0, 0x21c);
BoxRecord4 record = new BoxRecord4(pid, label, 0, boxData);
ulong serial = Database.Instance.BoxUpload4(record);
if (serial == 0)
{
logEntry.AppendLine("Uploaded box already in server.");
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
logEntry.AppendFormat("Box {0} uploaded successfully.", serial);
logEntry.AppendLine();
response.Write(new byte[] { 0x00, 0x00 }, 0, 2); // result code (0 for OK)
response.Write(BitConverter.GetBytes(serial), 0, 8);
} break;
case RequestTypes4.BoxSearch:
{
if (data.Length != 0x14c)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
// todo: validate or log some of this?
BoxLabels4 label = (BoxLabels4)BitConverter.ToInt32(data, 0x144);
logEntry.AppendFormat("Searching for {0} boxes.", label);
logEntry.AppendLine();
BoxRecord4[] results = Database.Instance.BoxSearch4(label, 20);
response.Write(new byte[] { 0x00, 0x00 }, 0, 2); // result code (0 for OK)
response.Write(BitConverter.GetBytes(results.Length), 0, 4);
foreach (BoxRecord4 result in results)
{
response.Write(BitConverter.GetBytes(result.PID), 0, 4);
response.Write(BitConverter.GetBytes((int)result.Label), 0, 4);
response.Write(BitConverter.GetBytes(result.SerialNumber), 0, 8);
// xxx: this may throw if there's database corruption
response.Write(result.Data, 0, 0x21c);
}
logEntry.AppendFormat("Retrieved {0} boxes.", results.Length);
logEntry.AppendLine();
} break;
#endregion
#region Dressup
case RequestTypes4.DressupUpload:
{
if (data.Length != 0x220)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
byte[] dressupData = new byte[0xe0];
Array.Copy(data, 0x140, dressupData, 0, 0xe0);
DressupRecord4 record = new DressupRecord4(pid, 0, dressupData);
ulong serial = Database.Instance.DressupUpload4(record);
if (serial == 0)
{
logEntry.AppendLine("Uploaded dressup already in server.");
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
logEntry.AppendFormat("Dressup {0} uploaded successfully.", serial);
response.Write(new byte[] { 0x00, 0x00 }, 0, 2); // result code (0 for OK)
response.Write(BitConverter.GetBytes(serial), 0, 8);
} break;
case RequestTypes4.DressupSearch:
{
if (data.Length != 0x14c)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
// todo: validate or log some of this?
ushort species = BitConverter.ToUInt16(data, 0x144);
logEntry.AppendFormat("Searching for dressups of species {0}.", species);
logEntry.AppendLine();
DressupRecord4[] results = Database.Instance.DressupSearch4(species, 10);
response.Write(new byte[] { 0x00, 0x00 }, 0, 2); // result code (0 for OK)
response.Write(BitConverter.GetBytes(results.Length), 0, 4);
foreach (DressupRecord4 result in results)
{
response.Write(BitConverter.GetBytes(result.PID), 0, 4);
response.Write(BitConverter.GetBytes(result.SerialNumber), 0, 8);
response.Write(result.Data, 0, 0xe0);
}
logEntry.AppendFormat("Retrieved {0} dressup results.", results.Length);
logEntry.AppendLine();
} break;
#endregion
#region Battle videos
case RequestTypes4.BattleVideoUpload:
{
if (data.Length != 0x1e8c)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
byte[] battlevidData = new byte[0x1d4c];
Array.Copy(data, 0x140, battlevidData, 0, 0x1d4c);
BattleVideoRecord4 record = new BattleVideoRecord4(pid, 0, battlevidData);
ulong serial = Database.Instance.BattleVideoUpload4(record);
if (serial == 0)
{
logEntry.AppendFormat("Uploaded battle video already in server.");
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
logEntry.AppendFormat("Battle video {0} uploaded successfully.", BattleVideoHeader4.FormatSerial(serial));
logEntry.AppendLine();
response.Write(new byte[] { 0x00, 0x00 }, 0, 2); // result code (0 for OK)
response.Write(BitConverter.GetBytes(serial), 0, 8);
} break;
case RequestTypes4.BattleVideoSearch:
{
if (data.Length != 0x15c)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
// todo: validate or log some of this?
BattleVideoRankings4 ranking = (BattleVideoRankings4)BitConverter.ToUInt32(data, 0x140);
ushort species = BitConverter.ToUInt16(data, 0x144);
BattleVideoMetagames4 meta = (BattleVideoMetagames4)data[0x146];
byte country = data[0x147];
byte region = data[0x148];
logEntry.Append("Searching for ");
if (ranking != BattleVideoRankings4.None)
logEntry.AppendFormat("{0}", ranking);
else
{
if (species != 0xffff)
logEntry.AppendFormat("species {0}, ", species);
logEntry.AppendFormat("{0}", meta);
if (country != 0xff)
logEntry.AppendFormat(", country {0}", country);
if (region != 0xff)
logEntry.AppendFormat(", region {0}", region);
}
logEntry.AppendLine(".");
BattleVideoHeader4[] results = Database.Instance.BattleVideoSearch4(species, ranking, meta, country, region, 30);
response.Write(new byte[] { 0x00, 0x00 }, 0, 2); // result code (0 for OK)
response.Write(BitConverter.GetBytes(results.Length), 0, 4);
foreach (BattleVideoHeader4 result in results)
{
response.Write(BitConverter.GetBytes(result.PID), 0, 4);
response.Write(BitConverter.GetBytes(result.SerialNumber), 0, 8);
response.Write(result.Data, 0, 0xe4);
}
logEntry.AppendFormat("Retrieved {0} battle video results.", results.Length);
logEntry.AppendLine();
} break;
case RequestTypes4.BattleVideoWatch:
{
if (data.Length != 0x14c)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
ulong serial = BitConverter.ToUInt64(data, 0x140);
BattleVideoRecord4 record = Database.Instance.BattleVideoGet4(serial, true);
if (record == null)
{
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
logEntry.AppendFormat("Requested battle video {0} was missing.", BattleVideoHeader4.FormatSerial(serial));
logEntry.AppendLine();
type = EventLogEntryType.FailureAudit;
break;
}
response.Write(new byte[] { 0x00, 0x00 }, 0, 2); // result code (0 for OK)
response.Write(BitConverter.GetBytes(record.PID), 0, 4);
response.Write(BitConverter.GetBytes(record.SerialNumber), 0, 8);
response.Write(record.Header.Data, 0, 0xe4);
response.Write(record.Data, 0, 0x1c68);
logEntry.AppendFormat("Retrieved battle video {0}.", BattleVideoHeader4.FormatSerial(serial));
logEntry.AppendLine();
} break;
case RequestTypes4.BattleVideoSaved:
{
if (data.Length != 0x148)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
ulong serial = BitConverter.ToUInt64(data, 0x140);
if (Database.Instance.BattleVideoFlagSaved4(serial))
{
response.Write(new byte[] { 0x00, 0x00 }, 0, 2); // result code (0 for OK)
logEntry.AppendFormat("Battle video {0} flagged saved.", BattleVideoHeader4.FormatSerial(serial));
logEntry.AppendLine();
}
else
{
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
logEntry.AppendFormat("Requested battle video {0} was missing.", BattleVideoHeader4.FormatSerial(serial));
logEntry.AppendLine();
}
} break;
#endregion
#region Trainer Rankings
case RequestTypes4.TrainerRankingsHead:
{
if (data.Length != 0x140)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
// AdmiralCurtiss's request: completely blank! (just the 0x140 byte header)
// AdmiralCurtiss's response:
// 0000: 0c000000f0550000 0128431c
// Response format seems to be a list of the three record categories currently being collected.
// 0x01: Hall of fame entries
// 0x28: Completed GTS trades
// 0x43: Facilities challenged at battle frontier
// The purpose of 0x1c is unclear to me.
if (Database.Instance.TrainerRankingsPerformRollover())
{
logEntry.AppendLine("Leaderboard rollover.");
}
var recordTypes = Database.Instance.TrainerRankingsGetActiveRecordTypes();
// todo: If we can be sure the player has already sent us their up to date records,
// then we can lie here about the active records and collect more complete trainer
// stats for better trainer profiles
response.Write(new byte[] { 0x00, 0x00 }, 0, 2);
// The game will give error 10609 if the response is longer than 4 bytes.
// The game will bluescreen if the response is shorter than 3 bytes.
// The 4th byte is optional and I don't know what, if anything, it does.
int i;
for (i = 0; i < 3 && i < recordTypes.Count; i++)
{
response.WriteByte((byte)recordTypes[i]);
}
for (; i < 3; i++)
{
// Must be valid RecordTypes. If we pad with 0x00, it causes a bluescreen.
response.WriteByte((byte)0x01);
}
response.WriteByte(0x1c); // todo: Find out the meaning of this 0x1c.
} break;
case RequestTypes4.TrainerRankingsSearch:
{
if (data.Length != 0x164)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
// The request is important. It contains the player's records for the above three chosen categories.
// It also (presumably) conveys which teams the player is a part of.
// (Trainer Class, Birth Month, Favourite Pokémon)
// AdmiralCurtiss's request:
// 0140: 0c02050900000000 1800303b01000000
// 0150: 0100000028000000 0000000043000000
// 0160: 00000000
// Hikari's request:
// Platinum EN July AceTrainerF Gallade
// 0140: 0c02070bdb010000 e200350f01000000
// 0150: 0300000028000000 0800000043000000
// 0160: 28000000
// 140: Version
// 141: Language
// 142: Birth Month
// 143: Trainer Class
// 144-145: Favourite Pokémon
// 146-14b: Unknown
// 14c-163: Three record records
// Record record contains 4 bytes of category and 4 bytes of my score in the category.
// Note: Although the game gives instructions that only
// your first submission will apply, I think it's more
// fun if we allow you to update your results by
// submitting again. In this way, you can race against
// competing teams to get the highest score.
var submission = new TrainerRankingsSubmission(pid, data, 0x140);
Database.Instance.TrainerRankingsSubmit(submission);
response.Write(new byte[] { 0x00, 0x00 }, 0, 2);
// The response is biig and contains all the records for both this week and last week.
// This week lacks numbers because they're still growing and to make it a surprise.
// Including more than 3 RecordTypes in the response will give error 10609.
TrainerRankingsReport thisWeek = Database.Instance.TrainerRankingsGetPendingReport();
thisWeek.PadResults();
TrainerRankingsReport lastWeek = Database.Instance.TrainerRankingsGetReport(DateTime.MinValue, thisWeek.StartDate.AddDays(-1), 1).FirstOrDefault();
if (lastWeek == null) lastWeek = GenerateFakeReport(thisWeek.StartDate.AddDays(-7),
new TrainerRankingsRecordTypes[]
{
0, 0, 0
});
else
{
lastWeek.PadResults();
}
// Last week:
foreach (var lbg in lastWeek.Leaderboards)
{
response.Write(BitConverter.GetBytes((int)lbg.RecordType), 0, 4);
foreach (var lbe in lbg.LeaderboardTrainerClass.Entries)
{
response.WriteByte((byte)lbe.Team);
}
foreach (var lbe in lbg.LeaderboardTrainerClass.Entries)
{
response.Write(BitConverter.GetBytes(lbe.Score), 0, 8);
}
foreach (var lbe in lbg.LeaderboardBirthMonth.Entries)
{
response.WriteByte((byte)lbe.Team);
}
foreach (var lbe in lbg.LeaderboardBirthMonth.Entries)
{
response.Write(BitConverter.GetBytes(lbe.Score), 0, 8);
}
foreach (var lbe in lbg.LeaderboardFavouritePokemon.Entries)
{
response.Write(BitConverter.GetBytes((short)lbe.Team), 0, 2);
}
foreach (var lbe in lbg.LeaderboardFavouritePokemon.Entries)
{
response.Write(BitConverter.GetBytes(lbe.Score), 0, 8);
}
}
// This week:
foreach (var lbg in thisWeek.Leaderboards)
{
response.Write(BitConverter.GetBytes((int)lbg.RecordType), 0, 4);
foreach (var lbe in lbg.LeaderboardTrainerClass.Entries)
{
response.WriteByte((byte)lbe.Team);
}
foreach (var lbe in lbg.LeaderboardBirthMonth.Entries)
{
response.WriteByte((byte)lbe.Team);
}
foreach (var lbe in lbg.LeaderboardFavouritePokemon.Entries)
{
response.Write(BitConverter.GetBytes((short)lbe.Team), 0, 2);
}
}
} break;
#endregion
default:
logEntry.AppendLine("Unrecognized request type.");
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
}
catch (Exception ex)
{
logEntry.AppendFormat("Unhandled exception while handling request.\nException: {0}", ex.ToString());
logEntry.AppendLine();
type = EventLogEntryType.Error;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
}
response.Flush();
byte[] responseData = response.ToArray();
WriteLength(responseData);
CryptMessage(responseData);
LogHelper.Write(logEntry.ToString(), type);
return responseData;
}
private void CryptMessage(byte[] message)
{
if (message.Length < 5) return;
byte padOffset = (byte)(message[0] + message[4]);
// encrypt and decrypt are the same operation...
for (int x = 5; x < message.Length; x++)
message[x] ^= m_pad[(x + padOffset) & 0xff];
}
public override string Title
{
get
{
return "Generation IV Global Terminal";
}
}
private static readonly byte[] m_pad = new byte[]
{
0x1F, 0x98, 0xA5, 0x46, 0x76, 0x5C, 0x3D, 0x0E,
0x93, 0x18, 0x33, 0x28, 0x0B, 0x07, 0x03, 0x82,
0x02, 0x43, 0x8A, 0x86, 0xDB, 0x38, 0x34, 0x19,
0xD6, 0xF9, 0x59, 0xB2, 0xAD, 0x6A, 0x7D, 0xBC,
0xEE, 0xE0, 0x3A, 0x3F, 0xCA, 0x4C, 0x25, 0x68,
0xF4, 0xA9, 0x5B, 0xF7, 0x22, 0x60, 0x5A, 0x6F,
0xFA, 0x1B, 0x79, 0xE9, 0x17, 0xB1, 0x00, 0x9C,
0xAA, 0x5E, 0x9D, 0xFF, 0xEA, 0xA0, 0x0D, 0x4B,
0x75, 0xF6, 0x61, 0x85, 0x5D, 0xBB, 0xDC, 0xFB,
0x64, 0x2E, 0x7A, 0xAB, 0xF1, 0xE8, 0x44, 0x0C,
0xB8, 0x8F, 0xA8, 0x0A, 0x8E, 0xBD, 0xE1, 0x3B,
0xFC, 0x3C, 0x9F, 0x1A, 0x56, 0xC5, 0xE2, 0xF5,
0x47, 0xD9, 0xD7, 0x8C, 0xCD, 0x97, 0xF0, 0x7B,
0x8B, 0xC3, 0x4F, 0x45, 0x04, 0x90, 0x81, 0x1E,
0x6B, 0xC9, 0xD3, 0x73, 0xC6, 0xE7, 0x24, 0xBA,
0x32, 0xF3, 0xC0, 0xEC, 0x57, 0xCC, 0xC4, 0xB6,
0xC1, 0xAE, 0xAF, 0x88, 0xF2, 0x84, 0xCE, 0x4A,
0x0F, 0x94, 0x41, 0xB4, 0x74, 0x2A, 0xD1, 0x70,
0x1C, 0xD4, 0xB0, 0xC2, 0x09, 0x08, 0x16, 0x9B,
0xB5, 0x8D, 0x2B, 0xD2, 0x89, 0xB7, 0x99, 0xA1,
0x30, 0x65, 0x54, 0x40, 0x96, 0x71, 0xFE, 0xBF,
0x31, 0x06, 0xE5, 0x14, 0xE6, 0xDA, 0x48, 0x26,
0xAC, 0x87, 0x9A, 0xD8, 0xA6, 0xEB, 0x92, 0xCF,
0xFD, 0x77, 0x1D, 0x21, 0x9E, 0x36, 0x35, 0x53,
0x3E, 0xD0, 0xD5, 0x62, 0x58, 0x5F, 0x63, 0x7C,
0x7E, 0x52, 0x29, 0x12, 0x2C, 0x78, 0x05, 0x91,
0x55, 0xE3, 0xA2, 0xB9, 0xF8, 0x50, 0x95, 0x13,
0x80, 0x7F, 0x11, 0x27, 0xCB, 0x37, 0x4E, 0x51,
0x15, 0xEF, 0xA7, 0x72, 0x4D, 0x83, 0x49, 0xA4,
0x69, 0xDE, 0x20, 0xA3, 0x67, 0xDF, 0x10, 0x42,
0x39, 0x6C, 0x2D, 0xC7, 0x23, 0xE4, 0xDD, 0xED,
0xBE, 0x66, 0xB3, 0x2F, 0x01, 0x6E, 0x6D, 0xC8,
};
private static TrainerRankingsLeaderboardEntry[] GenerateFakeData(int entryCount, int minTeam, int teamCount, int maxScore)
{
Random scoreRandomizer = new Random();
return Enumerable.Range(minTeam, teamCount).Select(i => new TrainerRankingsLeaderboardEntry(i, scoreRandomizer.Next(maxScore)))
.OrderBy(e => -e.Score).Take(entryCount).ToArray();
}
private static TrainerRankingsReport GenerateFakeReport(DateTime startDate, TrainerRankingsRecordTypes[] recordTypes)
{
var leaderboards = recordTypes.Select(r => new TrainerRankingsLeaderboardGroup(r,
new TrainerRankingsLeaderboard(TrainerRankingsTeamCategories.TrainerClass, GenerateFakeData(16, 0, 16, 100000)),
new TrainerRankingsLeaderboard(TrainerRankingsTeamCategories.BirthMonth, GenerateFakeData(12, 1, 12, 100000)),
new TrainerRankingsLeaderboard(TrainerRankingsTeamCategories.FavouritePokemon, GenerateFakeData(20, 1, 493, 100000)))).ToArray();
return new TrainerRankingsReport(startDate, startDate.AddDays(7), leaderboards);
}
}
internal enum RequestTypes4 : byte
{
BoxUpload = 0x08,
BoxSearch = 0x09,
DressupUpload = 0x20,
DressupSearch = 0x21,
BattleVideoUpload = 0xd8,
BattleVideoSearch = 0xd9,
BattleVideoWatch = 0xda,
BattleVideoSaved = 0xdb,
TrainerRankingsHead = 0xf0,
TrainerRankingsSearch = 0xf1
}
}
================================================
FILE: GlobalTerminalService/GTServer5.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PkmnFoundations.Support;
using System.IO;
using PkmnFoundations.Structures;
using PkmnFoundations.Data;
using System.Security.Cryptography.X509Certificates;
using System.Net.Sockets;
using System.Diagnostics;
using PkmnFoundations.Wfc;
namespace PkmnFoundations.GlobalTerminalService
{
public class GTServer5 : GTServerBase
{
public GTServer5()
: base(12401, true)
{
Initialize();
}
public GTServer5(int threads)
: base(12401, true, threads)
{
Initialize();
}
public GTServer5(int threads, int timeout)
: base(12401, true, threads, timeout)
{
Initialize();
}
public GTServer5(int threads, int timeout, X509Certificate2 certificate)
: base(12401, true, threads, timeout, certificate)
{
Initialize();
}
private void Initialize()
{
}
protected override byte[] ProcessRequest(byte[] data, TcpClient c)
{
int length = BitConverter.ToInt32(data, 0);
AssertHelper.Equals(length, data.Length);
RequestTypes5 requestType = (RequestTypes5)data[4];
StringBuilder logEntry = new StringBuilder();
logEntry.AppendFormat("Handling Generation V {0} request.\nHost: {1}", requestType, c.Client.RemoteEndPoint);
logEntry.AppendLine();
EventLogEntryType type = EventLogEntryType.Information;
MemoryStream response = new MemoryStream();
response.Write(new byte[] { 0x00, 0x00, 0x00, 0x00 }, 0, 4); // placeholder for length
response.WriteByte((byte)requestType);
response.WriteByte(data[5]);
try
{
int pid = BitConverter.ToInt32(data, 8);
byte version = data[0x0c];
byte language = data[0x0d];
logEntry.AppendFormat("pid: {0}", pid);
logEntry.AppendLine();
switch (requestType)
{
#region Musicals
case RequestTypes5.MusicalUpload:
{
if (data.Length != 0x370)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
byte[] musicalData = new byte[0x230];
Array.Copy(data, 0x140, musicalData, 0, 0x230);
MusicalRecord5 record = new MusicalRecord5(pid, 0, musicalData);
ulong serial = Database.Instance.MusicalUpload5(record);
if (serial == 0)
{
logEntry.AppendLine("Uploaded musical already in server.");
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
logEntry.AppendFormat("Musical {0} uploaded successfully.", serial);
logEntry.AppendLine();
response.Write(new byte[] { 0x00, 0x00 }, 0, 2); // result code (0 for OK)
response.Write(BitConverter.GetBytes(serial), 0, 8);
} break;
case RequestTypes5.MusicalSearch:
{
if (data.Length != 0x14c)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
// todo: validate or log some of this?
ushort species = BitConverter.ToUInt16(data, 0x144);
logEntry.AppendFormat("Searching for musical photos of species {0}.", species);
logEntry.AppendLine();
MusicalRecord5[] results = Database.Instance.MusicalSearch5(species, 5);
response.Write(new byte[] { 0x00, 0x00 }, 0, 2); // result code (0 for OK)
response.Write(BitConverter.GetBytes(results.Length), 0, 4);
foreach (MusicalRecord5 result in results)
{
response.Write(BitConverter.GetBytes(result.PID), 0, 4);
response.Write(BitConverter.GetBytes(result.SerialNumber), 0, 8);
response.Write(result.Data, 0, 0x230);
}
logEntry.AppendFormat("Retrieved {0} musical results.", results.Length);
logEntry.AppendLine();
} break;
#endregion
#region Battle videos
case RequestTypes5.BattleVideoUpload:
{
if (data.Length != 0x1ae8)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
int sigLength = BitConverter.ToInt32(data, 0x19e4);
if (sigLength > 0x100 || sigLength < 0x00)
{
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
byte[] battlevidData = new byte[0x18a4];
Array.Copy(data, 0x140, battlevidData, 0, 0x18a4);
BattleVideoRecord5 record = new BattleVideoRecord5(pid, 0, battlevidData);
byte[] vldtSignature = new byte[sigLength];
Array.Copy(data, 0x19e8, vldtSignature, 0, sigLength);
// todo: validate signature.
ulong serial = Database.Instance.BattleVideoUpload5(record);
if (serial == 0)
{
logEntry.AppendLine("Uploaded battle video already in server.");
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
logEntry.AppendFormat("Battle video {0} uploaded successfully.", BattleVideoHeader4.FormatSerial(serial));
logEntry.AppendLine();
response.Write(new byte[] { 0x00, 0x00 }, 0, 2); // result code (0 for OK)
response.Write(BitConverter.GetBytes(serial), 0, 8);
} break;
case RequestTypes5.BattleVideoSearch:
{
if (data.Length != 0x15c)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
// todo: validate or log some of this?
BattleVideoRankings5 ranking = (BattleVideoRankings5)BitConverter.ToUInt32(data, 0x140);
ushort species = BitConverter.ToUInt16(data, 0x144);
BattleVideoMetagames5 meta = (BattleVideoMetagames5)data[0x146];
// Byte 148 contains a magic number related to the searched metagame.
// If 0, disable metagame search. Metagame being 00 is insufficient
// since that value could mean Battle Subway Single.
if (data[0x148] == 0x00) meta = BattleVideoMetagames5.SearchNone;
byte country = data[0x14a];
byte region = data[0x14b];
logEntry.Append("Searching for ");
if (ranking != BattleVideoRankings5.None)
logEntry.AppendFormat("{0}", ranking);
else
{
if (species != 0xffff)
logEntry.AppendFormat("species {0}, ", species);
logEntry.AppendFormat("{0}", meta);
if (country != 0xff)
logEntry.AppendFormat(", country {0}", country);
if (region != 0xff)
logEntry.AppendFormat(", region {0}", region);
}
logEntry.AppendLine(".");
BattleVideoHeader5[] results = Database.Instance.BattleVideoSearch5(species, ranking, meta, country, region, 30);
response.Write(new byte[] { 0x00, 0x00 }, 0, 2); // result code (0 for OK)
response.Write(BitConverter.GetBytes(results.Length), 0, 4);
foreach (BattleVideoHeader5 result in results)
{
response.Write(BitConverter.GetBytes(result.PID), 0, 4);
response.Write(BitConverter.GetBytes(result.SerialNumber), 0, 8);
response.Write(result.Data, 0, 0xc4);
}
logEntry.AppendFormat("Retrieved {0} battle video results.", results.Length);
logEntry.AppendLine();
} break;
case RequestTypes5.BattleVideoWatch:
{
if (data.Length != 0x14c)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
ulong serial = BitConverter.ToUInt64(data, 0x140);
BattleVideoRecord5 record = Database.Instance.BattleVideoGet5(serial, true);
if (record == null)
{
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
logEntry.AppendFormat("Requested battle video {0} was missing.", BattleVideoHeader4.FormatSerial(serial));
logEntry.AppendLine();
type = EventLogEntryType.FailureAudit;
break;
}
response.Write(new byte[] { 0x00, 0x00 }, 0, 2); // result code (0 for OK)
response.Write(BitConverter.GetBytes(record.PID), 0, 4);
response.Write(BitConverter.GetBytes(record.SerialNumber), 0, 8);
response.Write(record.Header.Data, 0, 0xc4);
response.Write(record.Data, 0, 0x17e0);
logEntry.AppendFormat("Retrieved battle video {0}.", BattleVideoHeader4.FormatSerial(serial));
logEntry.AppendLine();
} break;
case RequestTypes5.BattleVideoSaved:
{
if (data.Length != 0x148)
{
logEntry.AppendLine("Length did not validate.");
type = EventLogEntryType.FailureAudit;
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
ulong serial = BitConverter.ToUInt64(data, 0x140);
if (Database.Instance.BattleVideoFlagSaved5(serial))
{
response.Write(new byte[] { 0x00, 0x00 }, 0, 2); // result code (0 for OK)
logEntry.AppendFormat("Battle video {0} flagged saved.", BattleVideoHeader4.FormatSerial(serial));
logEntry.AppendLine();
}
else
{
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
logEntry.AppendFormat("Requested battle video {0} was missing.", BattleVideoHeader4.FormatSerial(serial));
logEntry.AppendLine();
}
} break;
#endregion
default:
logEntry.AppendLine("Unrecognized request type.");
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
break;
}
}
catch (Exception ex)
{
logEntry.AppendFormat("Unhandled exception while handling request.\nException: {0}", ex.ToString());
logEntry.AppendLine();
response.Write(new byte[] { 0x02, 0x00 }, 0, 2);
}
response.Flush();
byte[] responseData = response.ToArray();
WriteLength(responseData);
LogHelper.Write(logEntry.ToString(), type);
return responseData;
}
private byte Byte6(RequestTypes5 type)
{
switch (type)
{
case RequestTypes5.MusicalUpload:
case RequestTypes5.MusicalSearch:
return 0x52;
case RequestTypes5.BattleVideoUpload:
case RequestTypes5.BattleVideoSearch:
case RequestTypes5.BattleVideoWatch:
case RequestTypes5.BattleVideoSaved:
return 0x55;
default:
return 0x00;
}
}
public override string Title
{
get
{
return "Generation V Global Terminal";
}
}
}
internal enum RequestTypes5 : byte
{
MusicalUpload = 0x08,
MusicalSearch = 0x09,
BattleVideoUpload = 0xf0,
BattleVideoSearch = 0xf1,
BattleVideoWatch = 0xf2,
BattleVideoSaved = 0xf3
}
}
================================================
FILE: GlobalTerminalService/GTServerBase.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
using System.Net.Sockets;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;
using System.Net;
using PkmnFoundations.Support;
using System.Diagnostics;
namespace PkmnFoundations.GlobalTerminalService
{
public abstract class GTServerBase
{
public GTServerBase(int port)
: this(port, false, 16, 5000)
{
}
public GTServerBase(int port, bool useSsl)
: this(port, useSsl, 16, 5000)
{
}
public GTServerBase(int port, bool useSsl, int threads)
: this(port, useSsl, threads, 5000)
{
}
// todo: It would probably be better to load a custom certificate from
// app.config, but since the DS doesn't even validate it, there's no
// real point in securing it.
public GTServerBase(int port, bool useSsl, int threads, int timeout)
: this(port, useSsl, threads, timeout,
useSsl ? GetDefaultCertificate() : null)
{
}
public GTServerBase(int port, bool useSsl, int threads, int timeout, X509Certificate2 certificate)
{
Threads = threads;
Timeout = timeout;
UseSsl = useSsl;
Certificate = certificate;
m_workers = new List<Thread>(threads);
m_listener = new TcpListener(IPAddress.Any, port);
}
private static X509Certificate2 GetDefaultCertificate()
{
X509Store store = new X509Store(StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
var cers =
store.Certificates.Find(X509FindType.FindBySubjectName, "pkgdsprod.nintendo.co.jp", false)
.Cast<X509Certificate2>().Where(cer => cer.HasPrivateKey && cer.PrivateKey != null);
// fixme: Screen any found certificates for errors like "The
// credentials supplied to the package were not recognized" and use
// the dummy if none are good.
var cerFirst = cers.FirstOrDefault();
if (cerFirst != null) return cerFirst;
LogHelper.Write("X.509 certificate not found. Please add a certificate with subject \"pkgdsprod.nintendo.co.jp\" to the store. Using dummy certificate.");
return new X509Certificate2(AppDomain.CurrentDomain.BaseDirectory + Path.DirectorySeparatorChar + "cert.pfx", "letmein");
}
public int Threads
{
get;
protected set;
}
public int Timeout
{
get;
protected set;
}
protected bool UseSsl
{
get;
set;
}
protected X509Certificate Certificate { get; set; }
private List<Thread> m_workers;
private object m_lock = new object();
private bool m_closing;
private TcpListener m_listener;
public void BeginPolling()
{
lock (m_lock)
{
if (m_workers.Count > 0) return;
LogHelper.Write(String.Format("{0} server running on port {1} with {2} threads.", Title, ((IPEndPoint)m_listener.LocalEndpoint).Port, Threads));
m_closing = false;
m_listener.Start();
for (int x = 0; x < Threads; x++)
{
Thread t = new Thread(MainLoop);
m_workers.Add(t);
t.Start();
}
}
}
public void EndPolling()
{
lock (m_lock)
{
if (m_workers.Count == 0) return;
m_closing = true;
// wait for worker threads to exit
while (m_workers.Count > 0)
{
Thread.Sleep(10);
}
m_listener.Stop();
}
}
private void MainLoop(object o)
{
int threadIndex = m_workers.IndexOf(Thread.CurrentThread);
// This is too chatty for an event log.
//LogHelper.Write(String.Format("Thread {0} begins.", threadIndex));
while (!m_closing)
{
try
{
if (!m_listener.Pending())
{
Thread.Sleep(10);
continue;
}
using (TcpClient c = AcceptClient())
{
if (c == null)
{
Thread.Sleep(10);
continue;
}
try
{
c.ReceiveTimeout = Timeout;
c.SendTimeout = Timeout;
Stream s = GetStream(c);
BinaryReader br = new BinaryReader(s);
int length = br.ReadInt32();
if (length > 7820)
{
LogHelper.Write(String.Format("Indicated request length is over limit.\nHost: {0}", c.Client.RemoteEndPoint), EventLogEntryType.FailureAudit);
continue;
}
if (length < 320)
{
LogHelper.Write(String.Format("Indicated request length is under limit.\nHost: {0}", c.Client.RemoteEndPoint), EventLogEntryType.FailureAudit);
continue;
}
byte[] data = new byte[length];
BitConverter.GetBytes(length).CopyTo(data, 0);
int actualLength = br.ReadBlock(data, 4, length - 4);
if (actualLength + 4 != length)
{
LogHelper.Write(String.Format("The client disconnected prematurely.\nHost: {0}", c.Client.RemoteEndPoint), EventLogEntryType.FailureAudit);
continue;
}
byte[] response = ProcessRequest(data, c);
s.Write(response, 0, response.Length);
}
catch (Exception ex)
{
LogHelper.Write(String.Format("Unhandled exception while handling request:\nHost: {0}\nException: {1}", c.Client.RemoteEndPoint, ex.Message), EventLogEntryType.Error);
}
}
}
catch (Exception ex)
{
LogHelper.Write(String.Format("Unhandled exception while handling request:\nException: {0}", ex.Message), EventLogEntryType.Error);
}
}
//LogHelper.Write(String.Format("Thread {0} ends.", threadIndex));
m_workers.Remove(Thread.CurrentThread);
}
private TcpClient AcceptClient()
{
lock (m_listener)
{
if (!m_listener.Pending()) return null;
return m_listener.AcceptTcpClient();
}
}
private Stream GetStream(TcpClient c)
{
if (UseSsl)
{
// todo: If we target .NET Core 3+, we can manually enable RC4 cipher suites.
// https://github.com/dotnet/runtime/issues/23818
// The DS wants to use SSLv3 and one of the following ciphers:
// 0x0004 TLS_RSA_WITH_RC4_128_MD5
// 0x0005 TLS_RSA_WITH_RC4_128_SHA
// For now, the only functional approach is to enable these ciphers in the registry or via e.g. IISCrypto.
SslStream sslClient = new SslStream(c.GetStream());
sslClient.AuthenticateAsServer(Certificate, false, System.Security.Authentication.SslProtocols.Ssl3, false);
return sslClient;
}
else return c.GetStream();
}
protected abstract byte[] ProcessRequest(byte[] data, TcpClient c);
public abstract String Title { get; }
protected void WriteLength(byte[] message)
{
byte[] data = BitConverter.GetBytes(message.Length);
Array.Copy(data, 0, message, 0, 4);
}
}
}
================================================
FILE: GlobalTerminalService/GlobalTerminalService.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{7AB1A65F-3AD1-4356-94E7-F1A669BF4CE0}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>PkmnFoundations.GlobalTerminalService</RootNamespace>
<AssemblyName>GlobalTerminalService</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>x86</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<StartupObject />
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Configuration.Install" />
<Reference Include="System.Core" />
<Reference Include="System.Management" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.ServiceProcess" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="GTServer4.cs" />
<Compile Include="GTServer5.cs" />
<Compile Include="GTServerBase.cs" />
<Compile Include="ProjectInstaller.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="ProjectInstaller.Designer.cs">
<DependentUpon>ProjectInstaller.cs</DependentUpon>
</Compile>
<Compile Include="Service1.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Service1.Designer.cs">
<DependentUpon>Service1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\library\Library.csproj">
<Project>{408EFC7E-C6B0-4160-8628-2679E34385CE}</Project>
<Name>Library</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="cert.pfx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="ProjectInstaller.resx">
<DependentUpon>ProjectInstaller.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Service1.resx">
<DependentUpon>Service1.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: GlobalTerminalService/Program.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading;
namespace PkmnFoundations.GlobalTerminalService
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
#if DEBUG
Service1 myService = new Service1();
myService.Start();
while (true) { Thread.Sleep(1000); }
#else
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
#endif
}
}
}
================================================
FILE: GlobalTerminalService/ProjectInstaller.Designer.cs
================================================
namespace PkmnFoundations.GlobalTerminalService
{
partial class ProjectInstaller
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
//
// serviceProcessInstaller1
//
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.NetworkService;
this.serviceProcessInstaller1.Password = null;
this.serviceProcessInstaller1.Username = null;
//
// serviceInstaller1
//
this.serviceInstaller1.Description = "Provides Global Terminal functionality to Pokémon games on the Nintendo DS.";
this.serviceInstaller1.DisplayName = "Global Terminal Service";
this.serviceInstaller1.ServiceName = "GlobalTerminalService";
this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic;
//
// ProjectInstaller
//
this.Installers.AddRange(new System.Configuration.Install.Installer[] {
this.serviceProcessInstaller1,
this.serviceInstaller1});
}
#endregion
private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
private System.ServiceProcess.ServiceInstaller serviceInstaller1;
}
}
================================================
FILE: GlobalTerminalService/ProjectInstaller.cs
================================================
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;
namespace PkmnFoundations.GlobalTerminalService
{
[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
}
}
================================================
FILE: GlobalTerminalService/ProjectInstaller.resx
================================================
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="serviceProcessInstaller1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="serviceInstaller1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>328, 17</value>
</metadata>
<metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
</root>
================================================
FILE: GlobalTerminalService/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 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("GlobalTerminalService")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("GlobalTerminalService")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("47274bc4-d452-4eeb-acfb-6aedfe702a65")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: GlobalTerminalService/Service1.Designer.cs
================================================
namespace PkmnFoundations.GlobalTerminalService
{
partial class Service1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
//
// Service1
//
this.ServiceName = "GlobalTerminalService";
}
#endregion
}
}
================================================
FILE: GlobalTerminalService/Service1.cs
================================================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using PkmnFoundations.Support;
namespace PkmnFoundations.GlobalTerminalService
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
#if !DEBUG
LogHelper.UseEventLog(this.EventLog);
#endif
}
private GTServer4 m_server_4 = null;
private GTServer5 m_server_5 = null;
protected override void OnStart(string[] args)
{
Start();
}
public void Start()
{
if (m_server_4 == null) m_server_4 = new GTServer4();
if (m_server_5 == null) m_server_5 = new GTServer5();
m_server_4.BeginPolling();
m_server_5.BeginPolling();
}
protected override void OnStop()
{
if (m_server_4 != null) m_server_4.EndPolling();
// fixme: it waits for the GenIV server to stop completely before
// shutting down the GenV server. Should shut them both down async.
if (m_server_5 != null) m_server_5.EndPolling();
}
}
}
================================================
FILE: GlobalTerminalService/Service1.resx
================================================
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
</root>
================================================
FILE: GlobalTerminalService/app.config
================================================
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<runtime>
<!-- Too bad AppContexts are only supported on .NET 4.6+ and don't seem to override ciphers disabled in the registry anyway. -->
<AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/>
</runtime>
<connectionStrings>
<add name="pkmnFoundationsConnectionString"
connectionString="Server=localhost;Database=gts;User ID=gts;Password=gts;Pooling=true;charset=utf8;Allow User Variables=True"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
</configuration>
================================================
FILE: LICENSE.md
================================================
Copyright © 2014-2023 Megan Edwards (mm201), all rights reserved
You may:
* Run a private instance for development purposes.
* Serve it privately to a LAN for personal use among a group of people you know.
* Privately make changes.
* Contribute those changes back to the author's original project which, at the
time of writing, is located at https://github.com/mm201/pkmn-classic-framework/
. Such contributions will be subject to the author's choice of license.
Should a period of 180 consecutive days elapse where the server operated or
endorsed by the author (which, at the time of writing, is located at
https://pkmnclassic.net/ ) remains offline, then you may take the contents of
this repository and rerelease them under the terms of the GNU Affero General
Public License. The full text of this license may, at time of writing, be found
at https://www.gnu.org/licenses/agpl-3.0.en.html .
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: MakeBaseStatTables/MakeBaseStatTables.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{99FCBB1C-D94F-458D-ABD2-8800FBDC65DA}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MakeBaseStatTables</RootNamespace>
<AssemblyName>MakeBaseStatTables</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
<NuGetPackageImportStamp>a6417236</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Core" />
<Reference Include="System.Data.SQLite, Version=1.0.94.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\System.Data.SQLite.Core.1.0.94.0\lib\net20\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Data.SQLite.Linq, Version=1.0.94.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\System.Data.SQLite.Linq.1.0.94.1\lib\net20\System.Data.SQLite.Linq.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\library\Library.csproj">
<Project>{408efc7e-c6b0-4160-8628-2679e34385ce}</Project>
<Name>Library</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\System.Data.SQLite.Core.1.0.94.0\build\net20\System.Data.SQLite.Core.targets" Condition="Exists('..\packages\System.Data.SQLite.Core.1.0.94.0\build\net20\System.Data.SQLite.Core.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\System.Data.SQLite.Core.1.0.94.0\build\net20\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\System.Data.SQLite.Core.1.0.94.0\build\net20\System.Data.SQLite.Core.targets'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: MakeBaseStatTables/Program.cs
================================================
using System;
using System.Collections.Generic;
using System.Data.SQLite;
using System.IO;
using System.Linq;
using System.Text;
using PkmnFoundations.Data;
namespace MakeBaseStatTables
{
/// <summary>
/// Builds some .txt data files from the Veekun data which require manual
/// edits.
/// </summary>
class Program
{
static void Main(string[] args)
{
String veekunFilename;
if (args.Length < 1) veekunFilename = "pokedex.sqlite";
else veekunFilename = args[0];
if (veekunFilename.Contains(';')) throw new NotSupportedException("The character ; in filenames is not supported.");
if (veekunFilename.Contains('?'))
{
Console.WriteLine("Usage: MakeBaseStatTables [filename]");
Console.WriteLine("filename: Filename of Veekun sqlite database. Default: pokedex.sqlite");
return;
}
using (SQLiteConnection connVeekun = new SQLiteConnection("Data Source=" + veekunFilename + "; Version=3"))
{
connVeekun.Open();
SQLiteDataReader reader = (SQLiteDataReader)connVeekun.ExecuteReader("SELECT id, " +
"(SELECT base_stat FROM pokemon_stats WHERE pokemon_id = pokemon_forms.pokemon_id AND stat_id = 1) AS base_hp, " +
"(SELECT base_stat FROM pokemon_stats WHERE pokemon_id = pokemon_forms.pokemon_id AND stat_id = 2) AS base_attack, " +
"(SELECT base_stat FROM pokemon_stats WHERE pokemon_id = pokemon_forms.pokemon_id AND stat_id = 3) AS base_defense, " +
"(SELECT base_stat FROM pokemon_stats WHERE pokemon_id = pokemon_forms.pokemon_id AND stat_id = 4) AS base_sp_attack, " +
"(SELECT base_stat FROM pokemon_stats WHERE pokemon_id = pokemon_forms.pokemon_id AND stat_id = 5) AS base_sp_defense, " +
"(SELECT base_stat FROM pokemon_stats WHERE pokemon_id = pokemon_forms.pokemon_id AND stat_id = 6) AS base_speed, " +
"(SELECT effort FROM pokemon_stats WHERE pokemon_id = pokemon_forms.pokemon_id AND stat_id = 1) AS reward_hp, " +
"(SELECT effort FROM pokemon_stats WHERE pokemon_id = pokemon_forms.pokemon_id AND stat_id = 2) AS reward_attack, " +
"(SELECT effort FROM pokemon_stats WHERE pokemon_id = pokemon_forms.pokemon_id AND stat_id = 3) AS reward_defense, " +
"(SELECT effort FROM pokemon_stats WHERE pokemon_id = pokemon_forms.pokemon_id AND stat_id = 4) AS reward_sp_attack, " +
"(SELECT effort FROM pokemon_stats WHERE pokemon_id = pokemon_forms.pokemon_id AND stat_id = 5) AS reward_sp_defense, " +
"(SELECT effort FROM pokemon_stats WHERE pokemon_id = pokemon_forms.pokemon_id AND stat_id = 6) AS reward_speed, " +
"(SELECT type_id FROM pokemon_types WHERE pokemon_id = pokemon_forms.pokemon_id AND slot = 1) AS type1, " +
"(SELECT type_id FROM pokemon_types WHERE pokemon_id = pokemon_forms.pokemon_id AND slot = 2) AS type2 " +
"FROM pokemon_forms ORDER BY id");
using (FileStream fs = File.Open("form_stats1.txt", FileMode.Create))
{
StreamWriter sw = new StreamWriter(fs);
while (reader.Read())
{
sw.Write("{0:00000}\t", reader["id"]);
sw.Write("{0:00}\t", reader["type1"] is DBNull ? 0 : Convert.ToInt32(reader["type1"]));
sw.Write("{0:00}\t", reader["type2"] is DBNull ? 0 : Convert.ToInt32(reader["type2"]));
sw.Write("{0:000}\t", Convert.ToInt32(reader["base_hp"]));
sw.Write("{0:000}\t", Convert.ToInt32(reader["base_attack"]));
sw.Write("{0:000}\t", Convert.ToInt32(reader["base_defense"]));
sw.Write("{0:000}\t", Convert.ToInt32(reader["base_speed"]));
sw.Write("{0:000}\t", Convert.ToInt32(reader["base_sp_attack"]));
sw.Write("{0:000}\t", Convert.ToInt32(reader["base_sp_defense"]));
sw.Write("{0:0}\t", Convert.ToByte(reader["reward_hp"]));
sw.Write("{0:0}\t", Convert.ToByte(reader["reward_attack"]));
sw.Write("{0:0}\t", Convert.ToByte(reader["reward_defense"]));
sw.Write("{0:0}\t", Convert.ToByte(reader["reward_speed"]));
sw.Write("{0:0}\t", Convert.ToByte(reader["reward_sp_attack"]));
sw.WriteLine("{0:0}", Convert.ToByte(reader["reward_sp_defense"]));
}
sw.Close();
fs.Close();
}
reader.Close();
reader = (SQLiteDataReader)connVeekun.ExecuteReader("SELECT id, " +
"(SELECT ability_id FROM pokemon_abilities WHERE pokemon_id = pokemon_forms.pokemon_id AND slot = 1) AS ability1, " +
"(SELECT ability_id FROM pokemon_abilities WHERE pokemon_id = pokemon_forms.pokemon_id AND slot = 2) AS ability2, " +
"(SELECT ability_id FROM pokemon_abilities WHERE pokemon_id = pokemon_forms.pokemon_id AND is_hidden = 1) AS ability_hidden " +
"FROM pokemon_forms ORDER BY id");
using (FileStream fs3 = File.Open("form_abilities3.txt", FileMode.Create),
fs4 = File.Open("form_abilities4.txt", FileMode.Create),
fs5 = File.Open("form_abilities5.txt", FileMode.Create),
fs6 = File.Open("form_abilities6.txt", FileMode.Create))
{
StreamWriter sw3 = new StreamWriter(fs3);
StreamWriter sw4 = new StreamWriter(fs4);
StreamWriter sw5 = new StreamWriter(fs5);
StreamWriter sw6 = new StreamWriter(fs6);
while (reader.Read())
{
long id = Convert.ToInt64(reader["id"]);
if ((id <= 386) || (id >= 10000 && id <= 10033))
{
sw3.Write("{0:00000}\t", reader["id"]);
sw3.Write("{0:000}\t", reader["ability1"] is DBNull ? 0 : Convert.ToInt32(reader["ability1"]));
sw3.Write("{0:000}\t", reader["ability2"] is DBNull ? 0 : Convert.ToInt32(reader["ability2"]));
sw3.WriteLine("{0:000}", 0);
}
else if ((id <= 493) || (id >= 10034 && id <= 10065))
{
sw4.Write("{0:00000}\t", reader["id"]);
sw4.Write("{0:000}\t", reader["ability1"] is DBNull ? 0 : Convert.ToInt32(reader["ability1"]));
sw4.Write("{0:000}\t", reader["ability2"] is DBNull ? 0 : Convert.ToInt32(reader["ability2"]));
sw4.WriteLine("{0:000}", 0);
}
if ((id <= 649) || (id >= 10000 && id <= 10084))
{
sw5.Write("{0:00000}\t", reader["id"]);
sw5.Write("{0:000}\t", reader["ability1"] is DBNull ? 0 : Convert.ToInt32(reader["ability1"]));
sw5.Write("{0:000}\t", reader["ability2"] is DBNull ? 0 : Convert.ToInt32(reader["ability2"]));
sw5.WriteLine("{0:000}", reader["ability_hidden"] is DBNull ? 0 : Convert.ToInt32(reader["ability_hidden"]));
}
else
{
sw6.Write("{0:00000}\t", reader["id"]);
sw6.Write("{0:000}\t", reader["ability1"] is DBNull ? 0 : Convert.ToInt32(reader["ability1"]));
sw6.Write("{0:000}\t", reader["ability2"] is DBNull ? 0 : Convert.ToInt32(reader["ability2"]));
sw6.WriteLine("{0:000}", reader["ability_hidden"] is DBNull ? 0 : Convert.ToInt32(reader["ability_hidden"]));
}
}
sw3.Close();
sw4.Close();
sw5.Close();
sw6.Close();
fs3.Close();
fs4.Close();
fs5.Close();
fs6.Close();
}
connVeekun.Close();
}
}
}
}
================================================
FILE: MakeBaseStatTables/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 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("MakeBaseStatTables")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("MakeBaseStatTables")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("e867b07c-6746-4495-8cd8-ad05b8463a8b")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: MakeBaseStatTables/app.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v2.0.50727" /></startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.91.0" newVersion="1.0.91.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data></configuration>
================================================
FILE: MakeBaseStatTables/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="System.Data.SQLite" version="1.0.94.1" targetFramework="net35" />
<package id="System.Data.SQLite.Core" version="1.0.94.0" targetFramework="net35" />
<package id="System.Data.SQLite.Linq" version="1.0.94.1" targetFramework="net35" />
</packages>
================================================
FILE: README.md
================================================
# Poké Classic Framework
https://pkmnclassic.net/
Poké Classic Framework is a replacement server and class library for Pokémon
Generations 4 and 5. Poké Classic Network is the name of the server itself.
## How to connect
AltWFC is configured to automatically direct you to my servers. Follow the
[instructions](https://github.com/polaris-/dwc_network_server_emulator/wiki)
at their wiki to connect.
## What works
* GTS
* Battle Videos
* Dressup (PtHGSS)
* Box uploads (PtHGSS)
* Musical photos (BW1/2)
* Wi-Fi Battle Tower and Subway
* Trainer Rankings (PtHGSS)
* Wi-Fi Plaza (PtHGSS) (Surveys still in progress)
Direct communications are handled by
[AltWFC](https://github.com/polaris-/dwc_network_server_emulator) and are
outside the scope of this project. They work at the time of writing but
haven't been tested that thoroughly.
## What doesn't
* Game Sync
* Rating Battles / Competitions
## What's planned
* A much more awesome website
* Cheat detection
* Stat checking in a similar manner as Pokécheck
* Game Sync (I will need help with this!)
## How you can help
If there's something you want to see, the best thing is to discuss it with me
and prepare a pull request. You should also check for open issues marked
[Help Wanted](https://github.com/mm201/pkmn-classic-framework/labels/help%20wanted).
Not all of them require programming skill.
The most significant way you can help is simply by using it. The GTS is nothing
without users. Get on there and start trading!
## Credits
* [Project Pokémon](https://projectpokemon.org/) for most of the original fake
GTS reverse engineering work, file format and data structure descriptions, and
many ID number tables, including items and trendy phrases.
* [Pipian](http://www.pipian.net/ierukana/) for more reverse engineering help,
including the Battle Tower and Wi-fi Plaza.
* [Nagato](https://github.com/polaris-), for help reverse engineering the Game
Sync protocol.
* [Billy](https://billy.wales/) for help with GameSpy protocols and interfacing
with Wiimmfi.
* Nagato and other contributors to the
[AltWFC](https://github.com/barronwaffles/dwc_network_server_emulator) project,
which this project depends on for basic Nintendo Wi-Fi fuctionality.
* [Eevee](https://veekun.com/) for her Veekun Pokédex and large sprite rips.
* [Bulbapedia](https://bulbapedia.bulbagarden.net/wiki/Main_Page) for most item
sprites and Generation 3 item/text conversion tables.
* [kaphotics](https://twitter.com/kaphotics) for the Pokémon mini sprite rips
from ORAS.
* [sosnek](https://github.com/sosnek) for help with held item validation.
* [msikma](https://github.com/msikma/pokesprite) and
[monsanto](https://github.com/smogon/sprites) for their sprite databases.
* GatorShark and Magical for their
[Spinda spot documentation](https://gatorshark.webs.com/SpindaDocumentation.htm)
and [Python implementation](https://github.com/magical/spinda), respectively.
================================================
FILE: RenameImages/App.config
================================================
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="pkmnFoundationsConnectionString"
connectionString="Server=localhost;Database=gts;User ID=gts;Password=gts;Pooling=true;charset=utf8;Allow User Variables=True"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>
================================================
FILE: RenameImages/Program.cs
================================================
using PkmnFoundations.Data;
using PkmnFoundations.Pokedex;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Text;
namespace RenameImages
{
/// <summary>
/// Renames images obtained from Pokesprite. https://github.com/msikma/pokesprite
/// </summary>
class Program
{
static void Main(string[] args)
{
string path;
char slash = Path.DirectorySeparatorChar;
ConnectionStringSettings css;
if (args.Length < 1) path = "." + slash + "pkmn-sm";
else path = args[0];
if (path.Contains('?'))
{
Console.WriteLine("h e l p");
return;
}
while (path.Length > 0 && (path[path.Length - 1] == '/' || path[path.Length - 1] == '\\'))
{
path = path.Substring(0, path.Length - 1);
}
path = path + slash;
if (args.Length < 3)
css = ConfigurationManager.ConnectionStrings["pkmnFoundationsConnectionString"];
else
css = new ConnectionStringSettings("", args[1], args[2]);
Database db = Database.CreateInstance(css);
Pokedex pokedex = new Pokedex(db, false);
foreach (var pair in pokedex.Forms)
{
Form form = pair.Value;
Species species = form.Species;
StringBuilder speciesNameBuilder = new StringBuilder(species.Name["EN"].ToLowerInvariant());
speciesNameBuilder.Replace("\'", "");
speciesNameBuilder.Replace(".", "");
speciesNameBuilder.Replace("♀", "-f");
speciesNameBuilder.Replace("♂", "-m");
speciesNameBuilder.Replace('é', 'e');
speciesNameBuilder.Replace(' ', '-');
string speciesName = speciesNameBuilder.ToString();
// fixme: This is incorrect for Vivillon, Pumpkaboo, and Gourgeist, because their suffixless form is not form 0.
string oldFilename = (form.Value == 0)
? String.Format("{0}.png", speciesName)
: String.Format("{0}-{1}.png", speciesName, form.Suffix);
string newFilename = (form.Suffix.Trim().Length == 0)
? String.Format("{0}.png", species.NationalDex)
: String.Format("{0}-{1}.png", species.NationalDex, form.Suffix);
try
{
File.Move(path + oldFilename, path + newFilename);
Console.Write("{0} {1}", oldFilename, newFilename);
}
catch (Exception ex)
{
Console.Write(ex.Message);
}
if (form.Value == 0 && form.Suffix.Trim().Length != 0)
{
try
{
string speciesFilename = String.Format("{0}.png", species.NationalDex);
File.Copy(path + newFilename, path + speciesFilename);
Console.Write(" {0}", speciesFilename);
}
catch (Exception ex)
{
Console.WriteLine();
Console.Write(ex.Message);
}
}
Console.WriteLine();
}
Console.ReadKey();
}
private static string NormalizeFilename(string filename, string path)
{
if (filename.Length >= path.Length)
{
string pathPart = filename.Substring(0, path.Length);
if (pathPart == path) filename = filename.Substring(path.Length);
}
return filename.ToLowerInvariant().Trim();
}
}
}
================================================
FILE: RenameImages/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 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("RenameImages")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("RenameImages")]
[assembly: AssemblyCopyright("Copyright © 2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("d8787475-2d21-4e60-9320-13fa55c979ac")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: RenameImages/RenameImages.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{D8787475-2D21-4E60-9320-13FA55C979AC}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>RenameImages</RootNamespace>
<AssemblyName>RenameImages</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\library\Library.csproj">
<Project>{408efc7e-c6b0-4160-8628-2679e34385ce}</Project>
<Name>Library</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
================================================
FILE: Roadmap.md
================================================
# Roadmap
This is a complete list of all the features I want the PCN server to have for me to consider it complete.
## IV and V
* GTS: cheat filter, legal request filter, search, history, player history, push notifications
* Battle tower: room leaders, room history, player history, player's last party used, player's highest floor reached
* Battle videos: Search, history, watch
* Mystery gift: monthly rotation
* Player profiles: login, view, permissions
* Pokédex
* Friend list management? I don’t know whether to handle this at the Trainer or User level.
* I guess we can show friends lists in one’s own trainer profiles after game sync has happened, and have an Add as Friend button. (Add as Dream Pal?)
* Permissions: Game progress (badges, medals, pokedex, battle tower, …), Friends, GTS history, uploaded shit
* Permission levels: Everyone, friends, nobody
## IV
* Dressups: search
* Box uploads: search
* Trainer rankings: current, breakdown by week
* Wifi plaza: survey results
* Stat checking: check via GTS, check via battle videos
* Player profiles: link via GTS
## V
* Musicals: search
* Stat checking: check via Game Sync
* Player profiles: link via Game Sync ID
* pkvldtprod: soft legality check
* Game Sync: put to bed, wake up, receive items, pokemon, musicals, c-gear, pokedex wallpaper
* Dream World: berry garden, pokemon feeder, house decorations
* Rating battles
* Battle competitions
## Stat checking
* All the features of Pokecheck.
* GenIV links in a Pokecheck style way: Search for Ditto lv9 and under, get a secret code from the search results.
* GenV links using your PGL code.
* Link in one place for both PGL and stat check.
(Provide some basic PGL style functionality eg. player profiles and game selection for Gen4)
In Gen4, you check a pokemon just like Pokecheck, only your request must be Ditto lv9 and under for it to happen.
In Gen5, you check a box of pokemon at a time by renaming the box and using Game Sync. (possible issue: game sync limited to once a day)
You can add tags to your pokemon summaries, works much the same as pokecheck boxes only multiples are allowed.
* Species/shiny/DW are built-in searches.
* Set individual pokemon to public/friends/private.
* Delete button. (this is a 100% real delete)
## Administration
* Can see full “pokecheck” pages for any pokemon in the GTS or history.
* Can eject pokemon from the system.
* Can see all trainer profiles
* Can see all user profiles
* Can ban trainers??
* Can link/unlink trainers to user profiles.
* Gets some secret trainer/user info like pid.
* Sees full validation summaries of all pokemon
* Has access to pkvldtprod logs
* Hide/delete pkgdsprod uploads
* Hex view of pkm data (decrypted, unshuffled)
================================================
FILE: VeekunImport/Program.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using PkmnFoundations.Data;
using System.Data.SQLite;
using System.Data;
using PkmnFoundations.Structures;
using PkmnFoundations.Pokedex;
using PkmnFoundations.Support;
using System.Threading;
using System.Globalization;
using System.IO;
namespace VeekunImport
{
class Program
{
const int GENERATIONS = 6;
static void Main(string[] args)
{
string veekunFilename;
ConnectionStringSettings css;
if (args.Length < 1) veekunFilename = "pokedex.sqlite";
else veekunFilename = args[0];
if (veekunFilename.Contains(';')) throw new NotSupportedException("The character ; in filenames is not supported.");
if (veekunFilename.Contains('?'))
{
Console.WriteLine("Usage: VeekunImport [filename [connectionString providerName]]");
Console.WriteLine("filename: Filename of Veekun sqlite database. Default: pokedex.sqlite");
Console.WriteLine("connectionString: pkmnFoundations connection string. Default: from app.config");
Console.WriteLine("providerName: .NET classname of connection provider. Default: from app.config");
return;
}
if (args.Length < 3)
css = ConfigurationManager.ConnectionStrings["pkmnFoundationsConnectionString"];
else
css = new ConnectionStringSettings("", args[1], args[2]);
Database db = Database.CreateInstance(css);
using (SQLiteConnection connVeekun = new SQLiteConnection("Data Source=" + veekunFilename + "; Version=3"))
{
connVeekun.Open();
// General logic:
// 1. run a query against veekun, populate a DataTable.
// 2. foreach DataRow, instance a class from the PkmnFoundations.Pokedex namespace.
// 3. call Database.AddToPokedex on that object.
// todo: We need a way to rebuild specific tables
// pkmncf_pokedex_pokemon_families
// Obtain the families map. We will use it in a few places.
Dictionary<int, int> familyMap = new Dictionary<int, int>();
List<int[]> familyList = new List<int[]>();
ProcessTSV("families_map.txt", 1, row =>
{
// todo: allow for comments by stopping consumption of fields once one fails to parse.
int[] fieldsInt = row.Fields.Select(s => Convert.ToInt32(s)).ToArray();
familyList.Add(fieldsInt);
foreach (int x in fieldsInt)
{
// lineNumber is one-based, unlike familyList index.
// species is the key, family ID is the value.
// If any species is repeated in family_map.txt, this ought to fail.
familyMap.Add(x, row.ValidLineNumber + 1);
}
});
// families from families.txt override default behaviour.
List<Family> overrideFamilies = new List<Family>();
ProcessTSV("families.txt", 7, row =>
{
string[] fields = row.Fields;
overrideFamilies.Add(new Family(null,
Convert.ToInt32(fields[0]),
Convert.ToInt32(fields[1]),
Convert.ToInt32(fields[2]),
Convert.ToInt32(fields[3]),
Convert.ToInt32(fields[4]),
Convert.ToInt32(fields[5]),
Convert.ToByte(fields[6])
));
});
// already sorted
//someFamilies.Sort((f, other) => f.ID.CompareTo(other.ID));
int familyCount = familyList.Count;
int nextOverrideIndex = 0;
for (int familyId = 1; familyId <= familyCount; familyId++)
{
int basicSpeciesId = familyList[familyId - 1][0];
Family f;
if (nextOverrideIndex < overrideFamilies.Count && overrideFamilies[nextOverrideIndex].ID == familyId)
{
// An override exists in the table; use it.
f = overrideFamilies[nextOverrideIndex];
nextOverrideIndex++;
}
else
{
// No override exists so go with default:
// Basic male/female are the same species which is the one listed first.
// There is no baby species nor incense
// (Non-incense babies are considered basic in this system anyway.)
// Gender ratio comes from the basic species.
byte genderRatio = (byte)Convert.ToInt32(connVeekun.ExecuteScalar("SELECT gender_rate FROM pokemon_species WHERE id = @id", new SQLiteParameter("@id", basicSpeciesId)));
f = new Family(null, familyId, basicSpeciesId, basicSpeciesId, 0, 0, 0, genderRatio);
}
db.PokedexInsertFamily(f);
string basic = (f.BasicMaleID != f.BasicFemaleID) ?
String.Format(" {0}/{1}", f.BasicMaleID, f.BasicFemaleID) :
String.Format(" {0}", f.BasicMaleID);
string baby;
if (f.BabyMaleID != f.BabyFemaleID)
baby = String.Format(" {0}/{1} incense {2}", f.BabyMaleID, f.BabyFemaleID, f.IncenseID);
else
baby = (f.BabyMaleID == 0) ? "" :
String.Format(" {0} incense {1}", f.BabyMaleID, f.IncenseID);
string gender = (f.GenderRatio == 255) ? "genderless" :
String.Format("{0}% female", (float)f.GenderRatio * 12.5f);
Console.WriteLine("Inserted family {0}{1}{2} {3}", f.ID, basic, baby, gender);
}
// pkmncf_pokedex_pokemon
SQLiteDataReader rdPokemon = (SQLiteDataReader)connVeekun.ExecuteReader("SELECT " +
"pokemon_species.id, " +
"(SELECT pokemon_species_names.name FROM pokemon_species_names WHERE pokemon_species_names.pokemon_species_id = pokemon_species.id AND local_language_id = 1) AS name_ja, " +
"(SELECT pokemon_species_names.name FROM pokemon_species_names WHERE pokemon_species_names.pokemon_species_id = pokemon_species.id AND local_language_id = 9) AS name_en, " +
"(SELECT pokemon_species_names.name FROM pokemon_species_names WHERE pokemon_species_names.pokemon_species_id = pokemon_species.id AND local_language_id = 5) AS name_fr, " +
"(SELECT pokemon_species_names.name FROM pokemon_species_names WHERE pokemon_species_names.pokemon_species_id = pokemon_species.id AND local_language_id = 8) AS name_it, " +
"(SELECT pokemon_species_names.name FROM pokemon_species_names WHERE pokemon_species_names.pokemon_species_id = pokemon_species.id AND local_language_id = 6) AS name_de, " +
"(SELECT pokemon_species_names.name FROM pokemon_species_names WHERE pokemon_species_names.pokemon_species_id = pokemon_species.id AND local_language_id = 7) AS name_es, " +
"(SELECT pokemon_species_names.name FROM pokemon_species_names WHERE pokemon_species_names.pokemon_species_id = pokemon_species.id AND local_language_id = 3) AS name_ko, " +
"growth_rate_id, gender_rate, " +
"(SELECT egg_group_id FROM pokemon_egg_groups WHERE species_id = pokemon_species.id ORDER BY egg_group_id LIMIT 1) AS egg_group_1, " +
"(SELECT egg_group_id FROM pokemon_egg_groups WHERE species_id = pokemon_species.id ORDER BY egg_group_id LIMIT 1, 1) AS egg_group_2, " +
"hatch_counter, has_gender_differences " +
"FROM pokemon_species " +
"ORDER BY pokemon_species.id");
while (rdPokemon.Read())
{
int id = Convert.ToInt32(rdPokemon["id"]);
byte growth_rate_id = Convert.ToByte(rdPokemon["growth_rate_id"]);
int gender_rate = Convert.ToInt32(rdPokemon["gender_rate"]);
byte egg_group_1 = Convert.ToByte(rdPokemon["egg_group_1"]);
byte egg_group_2 = 0;
if (!(rdPokemon["egg_group_2"] is DBNull)) egg_group_2 = Convert.ToByte(rdPokemon["egg_group_2"]);
int hatch_counter = Convert.ToInt32(rdPokemon["hatch_counter"]);
byte has_gender_differences = Convert.ToByte(rdPokemon["has_gender_differences"]);
if (id == 255) has_gender_differences = 0; // Torchic doesn't have gender differences.
// todo: Family ID
Species s = new Species(null, id,
familyMap[id],
GetLocalizedString(rdPokemon, "name_"),
(GrowthRates)growth_rate_id,
(byte)gender_rate,
(EggGroups)egg_group_1,
(EggGroups)egg_group_2,
(byte)hatch_counter,
has_gender_differences != 0
);
db.PokedexInsertSpecies(s);
Console.WriteLine("Inserted {0} {1} {2} {3} {4} {5}",
s.NationalDex, s.Name.ToString(), s.GrowthRate, s.GenderRatio, s.EggSteps, s.GenderVariations);
}
rdPokemon.Close();
// pkmncf_pokedex_pokemon_forms
Dictionary<int, byte> formValueMap = new Dictionary<int, byte>();
ProcessTSV("form_values.txt", 3, row =>
{
string[] fields = row.Fields;
formValueMap.Add(Convert.ToInt32(fields[1]), Convert.ToByte(fields[2]));
});
SQLiteDataReader rdForms = (SQLiteDataReader)connVeekun.ExecuteReader("SELECT id, " +
"(SELECT species_id FROM pokemon WHERE id = pokemon_id) AS NationalDex, " +
"form_order - 1 AS FormValue, " +
"(SELECT pokemon_form_names.form_name FROM pokemon_form_names WHERE pokemon_form_names.pokemon_form_id = pokemon_forms.id AND local_language_id = 1) AS name_ja, " +
"(SELECT pokemon_form_names.form_name FROM pokemon_form_names WHERE pokemon_form_names.pokemon_form_id = pokemon_forms.id AND local_language_id = 9) AS name_en, " +
"(SELECT pokemon_form_names.form_name FROM pokemon_form_names WHERE pokemon_form_names.pokemon_form_id = pokemon_forms.id AND local_language_id = 5) AS name_fr, " +
"(SELECT pokemon_form_names.form_name FROM pokemon_form_names WHERE pokemon_form_names.pokemon_form_id = pokemon_forms.id AND local_language_id = 8) AS name_it, " +
"(SELECT pokemon_form_names.form_name FROM pokemon_form_names WHERE pokemon_form_names.pokemon_form_id = pokemon_forms.id AND local_language_id = 6) AS name_de, " +
"(SELECT pokemon_form_names.form_name FROM pokemon_form_names WHERE pokemon_form_names.pokemon_form_id = pokemon_forms.id AND local_language_id = 7) AS name_es, " +
"(SELECT pokemon_form_names.form_name FROM pokemon_form_names WHERE pokemon_form_names.pokemon_form_id = pokemon_forms.id AND local_language_id = 3) AS name_ko, " +
"form_identifier, " +
"(SELECT height FROM pokemon WHERE id = pokemon_id) AS height, " +
"(SELECT weight FROM pokemon WHERE id = pokemon_id) AS weight, " +
"(SELECT base_experience FROM pokemon WHERE id = pokemon_id) AS experience " +
"FROM pokemon_forms");
while (rdForms.Read())
{
int id = Convert.ToInt32(rdForms["id"]);
int NationalDex = Convert.ToInt32(rdForms["NationalDex"]);
byte FormValue = Convert.ToByte(rdForms["FormValue"]);
string form_identifier = rdForms["form_identifier"].ToString();
int height = Convert.ToInt32(rdForms["height"]);
int weight = Convert.ToInt32(rdForms["weight"]);
int experience = Convert.ToInt32(rdForms["experience"]);
if (formValueMap.ContainsKey(id)) FormValue = formValueMap[id];
Form f = new Form(null, id,
NationalDex, FormValue,
GetLocalizedString(rdForms, "name_"),
form_identifier,
height,
weight,
experience
);
db.PokedexInsertForm(f);
Console.WriteLine("Inserted {0} {1} {2} {3} {4} {5:0.0}m {6:0.0}kg {7}",
f.ID, f.SpeciesID, f.Value, f.Name.ToString(),
f.Suffix, f.Height * 0.1f, f.Weight * 0.1f, f.Experience);
}
rdForms.Close();
// pkmncf_pokedex_pokemon_form_stats
for (int generation = 1; generation <= GENERATIONS; generation++)
{
string filename = String.Format("form_stats{0}.txt", generation);
ProcessTSV(filename, 15, row =>
{
int[] fieldsInt = row.Fields.Select(s => Convert.ToInt32(s)).ToArray();
FormStats f = new FormStats(null, fieldsInt[0], (Generations)generation, fieldsInt[1], fieldsInt[2],
new IntStatValues(fieldsInt[3],
fieldsInt[4],
fieldsInt[5],
fieldsInt[6],
fieldsInt[7],
fieldsInt[8]),
new ByteStatValues((byte)fieldsInt[9],
(byte)fieldsInt[10],
(byte)fieldsInt[11],
(byte)fieldsInt[12],
(byte)fieldsInt[13],
(byte)fieldsInt[14])
);
db.PokedexInsertFormStats(f);
Console.WriteLine("Inserted stats for {0} gen {1}", f.FormID, (int)f.MinGeneration);
});
}
// todo: pkmncf_pokedex_pokemon_evolutions
// pkmncf_pokedex_types
SQLiteDataReader rdTypes = (SQLiteDataReader)connVeekun.ExecuteReader("SELECT id, damage_class_id, " +
"(SELECT name FROM type_names WHERE type_names.type_id = types.id AND local_language_id = 1) AS name_ja, " +
"(SELECT name FROM type_names WHERE type_names.type_id = types.id AND local_language_id = 9) AS name_en, " +
"(SELECT name FROM type_names WHERE type_names.type_id = types.id AND local_language_id = 5) AS name_fr, " +
"(SELECT name FROM type_names WHERE type_names.type_id = types.id AND local_language_id = 8) AS name_it, " +
"(SELECT name FROM type_names WHERE type_names.type_id = types.id AND local_language_id = 6) AS name_de, " +
"(SELECT name FROM type_names WHERE type_names.type_id = types.id AND local_language_id = 7) AS name_es, " +
"(SELECT name FROM type_names WHERE type_names.type_id = types.id AND local_language_id = 3) AS name_ko " +
"FROM types ORDER BY id");
// http://stackoverflow.com/questions/27156585/failed-to-enable-constraints-without-dataadapter
while (rdTypes.Read())
{
int id = Convert.ToInt32(rdTypes["id"]);
PkmnFoundations.Pokedex.Type t = new PkmnFoundations.Pokedex.Type(null,
id,
GetLocalizedString(rdTypes, "name_"),
GetDamageClass(rdTypes));
db.PokedexInsertType(t);
Console.WriteLine("Inserted type {0} {1} {2}", t.ID, t.Name.ToString(), t.DamageClass);
}
rdTypes.Close();
// pkmncf_pokedex_moves
SQLiteDataReader rdMoves = (SQLiteDataReader)connVeekun.ExecuteReader("SELECT id, type_id, " +
"(SELECT name FROM move_names WHERE move_names.move_id = moves.id AND local_language_id = 1) AS name_ja, " +
"(SELECT name FROM move_names WHERE move_names.move_id = moves.id AND local_language_id = 9) AS name_en, " +
"(SELECT name FROM move_names WHERE move_names.move_id = moves.id AND local_language_id = 5) AS name_fr, " +
"(SELECT name FROM move_names WHERE move_names.move_id = moves.id AND local_language_id = 8) AS name_it, " +
"(SELECT name FROM move_names WHERE move_names.move_id = moves.id AND local_language_id = 6) AS name_de, " +
"(SELECT name FROM move_names WHERE move_names.move_id = moves.id AND local_language_id = 7) AS name_es, " +
"(SELECT name FROM move_names WHERE move_names.move_id = moves.id AND local_language_id = 3) AS name_ko, " +
"damage_class_id, power, pp, accuracy, priority, target_id FROM moves");
while (rdMoves.Read())
{
int id = Convert.ToInt32(rdMoves["id"]);
int type_id = Convert.ToInt32(rdMoves["type_id"]);
int damage_class_id = Convert.ToInt32(rdMoves["damage_class_id"]);
short power = DatabaseExtender.Cast<short ?>(rdMoves["power"]) ?? 0;
short pp = DatabaseExtender.Cast<short?>(rdMoves["pp"]) ?? 0;
short accuracy = DatabaseExtender.Cast<short?>(rdMoves["accuracy"]) ?? 0;
short priority = Convert.ToInt16(rdMoves["priority"]);
int target_id = Convert.ToInt32(rdMoves["target_id"]);
Move m = new Move(null,
id,
type_id,
GetLocalizedString(rdMoves, "name_"),
(DamageClass)damage_class_id,
power,
pp,
accuracy,
priority,
(BattleTargets)target_id
);
db.PokedexInsertMove(m);
Console.WriteLine("Inserted move {0} {1}", m.ID, m.Name.ToString());
}
// pkmncf_pokedex_abilities
SQLiteDataReader rdAbilities = (SQLiteDataReader)connVeekun.ExecuteReader("SELECT id, " +
"(SELECT name FROM ability_names WHERE ability_names.ability_id = abilities.id AND local_language_id = 1) AS name_ja, " +
"(SELECT name FROM ability_names WHERE ability_names.ability_id = abilities.id AND local_language_id = 9) AS name_en, " +
"(SELECT name FROM ability_names WHERE ability_names.ability_id = abilities.id AND local_language_id = 5) AS name_fr, " +
"(SELECT name FROM ability_names WHERE ability_names.ability_id = abilities.id AND local_language_id = 8) AS name_it, " +
"(SELECT name FROM ability_names WHERE ability_names.ability_id = abilities.id AND local_language_id = 6) AS name_de, " +
"(SELECT name FROM ability_names WHERE ability_names.ability_id = abilities.id AND local_language_id = 7) AS name_es, " +
"(SELECT name FROM ability_names WHERE ability_names.ability_id = abilities.id AND local_language_id = 3) AS name_ko " +
"FROM abilities WHERE is_main_series = 1");
while (rdAbilities.Read())
{
int id = Convert.ToInt32(rdAbilities["id"]);
Ability a = new Ability(null,
id, GetLocalizedString(rdAbilities, "name_")
);
db.PokedexInsertAbility(a);
Console.WriteLine("Inserted ability {0} {1}", a.Value, a.Name.ToString());
}
rdAbilities.Close();
// pkmncf_pokedex_pokemon_form_abilities
for (int generation = 3; generation <= GENERATIONS; generation++)
{
string filename = String.Format("form_abilities{0}.txt", generation);
ProcessTSV(filename, 4, row =>
{
int[] fieldsInt = row.Fields.Select(s => Convert.ToInt32(s)).ToArray();
FormAbilities f = new FormAbilities(null, fieldsInt[0], (Generations)generation,
fieldsInt[1], fieldsInt[2], fieldsInt[3]
);
db.PokedexInsertFormAbilities(f);
Console.WriteLine("Inserted abilities for {0} gen {1}", f.FormID, (int)f.MinGeneration);
});
}
// pkmncf_pokedex_items
Dictionary<int, ItemLoading> items = new Dictionary<int, ItemLoading>();
for (int generation = 3; generation <= GENERATIONS; generation++)
{
string filename = String.Format("items{0}.txt", generation);
ProcessTSV(filename, 3, row =>
{
string[] fields = row.Fields;
int id, thisGenId;
string name = fields[1];
if (!Int32.TryParse(fields[0], out thisGenId) ||
!Int32.TryParse(fields[2], out id))
{
Console.WriteLine("{0} line {1} has bad format, skipped.", filename, row.LineNumber);
return;
}
ItemLoading theItem = null;
if (!items.ContainsKey(id))
{
theItem = new ItemLoading(id, name);
items.Add(id, theItem);
}
theItem = theItem ?? items[id];
theItem.Name = name; // prefer newer names where available
theItem.SetGenerationValue(thisGenId, generation);
});
}
// Pokeball IDs:
ProcessTSV("items_balls.txt", 3, row =>
{
string[] fields = row.Fields;
int id, ballId;
string name = fields[1];
if (!Int32.TryParse(fields[0], out ballId) ||
!Int32.TryParse(fields[2], out id))
{
Console.WriteLine("{0} line {1} has bad format, skipped.", "items_balls.txt", row.LineNumber);
return;
}
ItemLoading theItem = null;
if (!items.ContainsKey(id))
{
theItem = new ItemLoading(id, name);
items.Add(id, theItem);
}
theItem = theItem ?? items[id];
if (theItem.Name == null) theItem.Name = name;
theItem.PokeballValue = ballId;
});
// lookup Veekun ID number against some generation or another.
Dictionary<int, ItemLoading> items3 = items
.Where(i => i.Value.Value3 != null && i.Value.NameLocalized == null)
.ToDictionary(i => (int)i.Value.Value3, i => i.Value);
Dictionary<int, ItemLoading> items4 = items
.Where(i => i.Value.Value4 != null && i.Value.NameLocalized == null)
.ToDictionary(i => (int)i.Value.Value4, i => i.Value);
Dictionary<int, ItemLoading> items5 = items
.Where(i => i.Value.Value5 != null && i.Value.NameLocalized == null)
.ToDictionary(i => (int)i.Value.Value5, i => i.Value);
Dictionary<int, ItemLoading> items6 = items
.Where(i => i.Value.Value6 != null && i.Value.NameLocalized == null)
.ToDictionary(i => (int)i.Value.Value6, i => i.Value);
// veekun has incorrect Gen3 indices for Helix/Dome fossil.
// (Or they disagree with Bulbapedia which is my primary source)
SQLiteDataReader rdItems = (SQLiteDataReader)connVeekun.ExecuteReader("SELECT id, cost, " +
"(SELECT game_index FROM item_game_indices WHERE item_id = items.id AND generation_id = 3 AND NOT item_id IN (101, 102)) AS value3, " +
"(SELECT game_index FROM item_game_indices WHERE item_id = items.id AND generation_id = 4) AS value4, " +
"(SELECT game_index FROM item_game_indices WHERE item_id = items.id AND generation_id = 5) AS value5, " +
"(SELECT game_index FROM item_game_indices WHERE item_id = items.id AND generation_id = 6) AS value6, " +
"(SELECT name FROM item_names WHERE item_names.item_id = items.id AND local_language_id = 1) AS name_ja, " +
"(SELECT name FROM item_names WHERE item_names.item_id = items.id AND local_language_id = 9) AS name_en, " +
"(SELECT name FROM item_names WHERE item_names.item_id = items.id AND local_language_id = 5) AS name_fr, " +
"(SELECT name FROM item_names WHERE item_names.item_id = items.id AND local_language_id = 8) AS name_it, " +
"(SELECT name FROM item_names WHERE item_names.item_id = items.id AND local_language_id = 6) AS name_de, " +
"(SELECT name FROM item_names WHERE item_names.item_id = items.id AND local_language_id = 7) AS name_es, " +
"(SELECT name FROM item_names WHERE item_names.item_id = items.id AND local_language_id = 3) AS name_ko " +
"FROM items");
Dictionary<int, ItemLoading>[] itemsGeneration = new Dictionary<int, ItemLoading>[] { null, null, items3, items4, items5, items6 };
while (rdItems.Read())
{
List<ItemLoading> toProcess = new List<ItemLoading>(4);
for (int generation = 3; generation <= GENERATIONS; generation++)
{
string col = String.Format("value{0}", generation);
if (!(rdItems[col] is DBNull))
{
Dictionary<int, ItemLoading> dict = itemsGeneration[generation - 1];
int value = Convert.ToInt32(rdItems[col]);
if (dict.ContainsKey(value))
{
ItemLoading il = dict[value];
il.NameLocalized = GetLocalizedString(rdItems, "name_");
il.Price = Convert.ToInt32(rdItems["cost"]);
}
}
}
}
rdItems.Close();
foreach (ItemLoading il in items.Values)
{
LocalizedString name = il.NameLocalized;
if (name == null)
{
name = new LocalizedString() { { "EN", il.Name } };
Console.WriteLine("Veekun database missing item {0} {1}. Non-English translations will be missing.", il.ID, name);
}
Item i = new Item(null, il.ID, il.Value3, il.Value4, il.Value5, il.Value6, il.PokeballValue, il.Price, name);
db.PokedexInsertItem(i);
Console.WriteLine("Inserted item {0} {1}", i.ID, i.Name.ToString());
}
// pkmncf_pokedex_ribbons
Dictionary<int, RibbonLoading> ribbons = new Dictionary<int, RibbonLoading>();
if (!ProcessTSV("ribbons.txt", 3, row =>
{
string[] fields = row.Fields;
int id = Convert.ToInt32(fields[0]);
ribbons.Add(id, new RibbonLoading(id, fields[1], fields[2]));
}))
Console.WriteLine("ribbons.txt not found. Not inserting any ribbons.");
else
{
for (int generation = 3; generation <= GENERATIONS; generation++)
{
string filename = String.Format("ribbon_positions{0}.txt", generation);
ProcessTSV(filename, 2, row =>
{
string[] fields = row.Fields;
int id = Convert.ToInt32(fields[0]);
int position = Convert.ToInt32(fields[1]);
if (!ribbons.ContainsKey(id))
{
Console.WriteLine("Error: Ribbon ID {0} contained in {1} but not in ribbons.txt!", id, filename);
return;
}
RibbonLoading r = ribbons[id];
r.SetGenerationPosition(position, generation);
});
}
foreach (KeyValuePair<int, RibbonLoading> pair in ribbons)
{
RibbonLoading r = pair.Value;
db.PokedexInsertRibbon(new Ribbon(null, r.ID,
new LocalizedString() { { "EN", r.Name } },
new LocalizedString() { { "EN", r.Description } },
r.Position3, r.Position4, r.Position5, r.Position6,
null, null, null, null
));
Console.WriteLine("Inserted ribbon {0} {1}", r.ID, r.Name);
}
}
// pkmncf_pokedex_regions
ProcessTSV("regions.txt", 2, row =>
{
string[] fields = row.Fields;
int id = Convert.ToInt32(fields[0]);
Region r = new Region(null, id, new LocalizedString() { { "EN", fields[1] } });
db.PokedexInsertRegion(r);
Console.WriteLine("Inserted region {0} {1}", r.ID, r.Name);
});
// pkmncf_pokedex_locations
SQLiteDataReader rdLocations = (SQLiteDataReader)connVeekun.ExecuteReader("SELECT id, region_id, " +
"(SELECT game_index FROM location_game_indices WHERE location_id = locations.id AND generation_id = 3) AS value3, " +
"(SELECT game_index FROM location_game_indices WHERE location_id = locations.id AND generation_id = 4) AS value4, " +
"(SELECT game_index FROM location_game_indices WHERE location_id = locations.id AND generation_id = 5) AS value5, " +
"(SELECT game_index FROM location_game_indices WHERE location_id = locations.id AND generation_id = 6) AS value6, " +
"(SELECT name FROM location_names WHERE location_names.location_id = locations.id AND local_language_id = 1) AS name_ja, " +
"(SELECT name FROM location_names WHERE location_names.location_id = locations.id AND local_language_id = 9) AS name_en, " +
"(SELECT name FROM location_names WHERE location_names.location_id = locations.id AND local_language_id = 5) AS name_fr, " +
"(SELECT name FROM location_names WHERE location_names.location_id = locations.id AND local_language_id = 8) AS name_it, " +
"(SELECT name FROM location_names WHERE location_names.location_id = locations.id AND local_language_id = 6) AS name_de, " +
"(SELECT name FROM location_names WHERE location_names.location_id = locations.id AND local_language_id = 7) AS name_es, " +
"(SELECT name FROM location_names WHERE location_names.location_id = locations.id AND local_language_id = 3) AS name_ko " +
"FROM locations WHERE id NOT IN (522, 523, 524)");
// 522, 523, and 524 are duplicates of Kanto routes 19, 20, and 21.
// todo: gba/colo/xd encounter location values
while (rdLocations.Read())
{
Location l = new Location(null,
Convert.ToInt32(rdLocations["id"]),
VeekunLocationToRegion(rdLocations),
(int ?)DatabaseExtender.Cast<long?>(rdLocations["value3"]),
null,
null,
(int?)DatabaseExtender.Cast<long?>(rdLocations["value4"]),
(int?)DatabaseExtender.Cast<long?>(rdLocations["value5"]),
(int?)DatabaseExtender.Cast<long?>(rdLocations["value6"]),
GetLocalizedString(rdLocations, "name_")
);
db.PokedexInsertLocation(l);
Console.WriteLine("Inserted location {0} {1}", l.ID, l.Name);
}
rdLocations.Close();
connVeekun.Close();
}
#if DEBUG
Console.ReadKey();
#endif
}
private static string[] LANGS = { "JA", "EN", "FR", "IT", "DE", "ES", "KO" };
private static LocalizedString GetLocalizedString(IDataReader reader, string column)
{
LocalizedString result = new LocalizedString();
foreach (string lang in LANGS)
{
string col = column + lang.ToLowerInvariant();
if (reader[col] is DBNull) continue;
result.Add(lang, (string)reader[col]);
}
return result;
}
private static DamageClass GetDamageClass(IDataReader reader)
{
if (reader["damage_class_id"] is DBNull) return DamageClass.None;
return (DamageClass)(Convert.ToInt32(reader["damage_class_id"]) - 1);
}
private static bool ProcessTSV(string filename, int requiredFields, Action<TsvRow> action)
{
if (!File.Exists(filename))
{
Console.WriteLine("File {0} not found, skipped.", filename);
return false;
}
using (FileStream fs = File.Open(filename, FileMode.Open))
{
StreamReader sr = new StreamReader(fs, Encoding.UTF8);
string line;
int lineNumber = 0;
int validLineNumber = 0;
while ((line = sr.ReadLine()) != null)
{
string[] fields = line.Split('\t');
if (fields.Length < requiredFields)
{
Console.WriteLine("File {0} line {1} has too few fields, skipped.", filename, lineNumber);
lineNumber++;
continue;
}
action(new TsvRow(lineNumber, validLineNumber, fields));
lineNumber++;
validLineNumber++;
}
fs.Close();
}
return true;
}
private static int VeekunLocationToRegion(SQLiteDataReader reader)
{
int id = Convert.ToInt32(reader["id"]);
long? region = DatabaseExtender.Cast<long?>(reader["region_id"]);
if (region == null) // not set, usually event
{
if (id == 256) return 2; // kanto
if (id == 257) return 3; // johto
if (id == 258) return 4; // hoenn
if (id == 259) return 7; // sinnoh
if (id == 260) return 5; // "distant land" (only used for orre?)
if (id == 261) return 7; // traveling man (happini?)
if (id == 262) return 7; // riley
if (id == 263) return 7; // cynthia
if (id == 342) return 3; // mr. pokemon
if (id == 343) return 3; // primo
return 1;
}
if (region == 1) // kanto and seviis
{
if (id >= 491 && id <= 497) return 6; // seven island unown chambers
if (id >= 500 && id <= 521) return 6; // sevii islands
if (id >= 526 && id <= 529) return 6; // sevii islands
return 2;
}
if (region == 2) return 3; // johto
if (region == 3) return 4; // hoenn
if (region == 4) return 7; // sinnoh
if (region == 5) return 8; // unova
if (region == 6) return 9; // kalos
return (int)region + 3; // for now, assume veekun won't skip more regions.
}
}
internal class ItemLoading
{
public ItemLoading(int id, string name)
{
ID = id;
Name = name;
Value3 = Value4 = Value5 = Value6 = null;
NameLocalized = null;
PokeballValue = null;
}
public int ID;
public string Name;
public LocalizedString NameLocalized;
public int? Value3, Value4, Value5, Value6;
public int Price;
public int? PokeballValue;
public void SetGenerationValue(int ? value, int generation)
{
switch (generation)
{
case 3:
Value3 = value;
break;
case 4:
Value4 = value;
break;
case 5:
Value5 = value;
break;
case 6:
Value6 = value;
break;
}
}
}
internal class RibbonLoading
{
public RibbonLoading(int id, string name, string description)
{
ID = id;
Name = name;
Description = description;
Position3 = Position4 = Position5 = Position6 = null;
}
public int ID;
public string Name;
public string Description;
public int? Position3, Position4, Position5, Position6;
public void SetGenerationPosition(int? position, int generation)
{
switch (generation)
{
case 3:
Position3 = position;
break;
case 4:
Position4 = position;
break;
case 5:
Position5 = position;
break;
case 6:
Position6 = position;
break;
}
}
}
internal class TsvRow
{
public TsvRow(int lineNumber, int validLineNumber, string[] fields)
{
LineNumber = lineNumber;
ValidLineNumber = validLineNumber;
Fields = fields;
}
public int LineNumber;
public int ValidLineNumber;
public string[] Fields;
}
}
================================================
FILE: VeekunImport/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 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("VeekunImport")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("VeekunImport")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("1644dc02-2772-48f6-b123-e611638dbab0")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
================================================
FILE: VeekunImport/VeekunImport.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{2A761C4F-00C2-45D5-B4CA-C41558CEB2DF}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>VeekunImport</RootNamespace>
<AssemblyName>VeekunImport</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Data.SQLite, Version=1.0.115.5, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.5\lib\net40\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Data.SQLite.Linq, Version=1.0.115.5, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.Linq.1.0.115.5\lib\net40\System.Data.SQLite.Linq.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="countries4.txt" />
<Content Include="countries5.txt" />
<Content Include="families_map.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="form_abilities3.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="form_abilities4.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="form_abilities5.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="form_abilities6.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="form_stats1.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="form_stats6.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="form_stats5.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="form_stats4.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="form_stats3.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="form_stats2.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="form_values.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="items3.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="items5.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="items4.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="families.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="items_balls.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="regions.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="ribbons.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="ribbon_positions3.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="ribbon_positions5.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="ribbon_positions4.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\library\Library.csproj">
<Project>{408efc7e-c6b0-4160-8628-2679e34385ce}</Project>
<Name>Library</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.5\build\net40\Stub.System.Data.SQLite.Core.NetFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.5\build\net40\Stub.System.Data.SQLite.Core.NetFramework.targets'))" />
</Target>
<Import Project="..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.5\build\net40\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.5\build\net40\Stub.System.Data.SQLite.Core.NetFramework.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: VeekunImport/app.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="pkmnFoundationsConnectionString"
connectionString="Server=localhost;Database=gts;User ID=gts;Password=gts;Pooling=true;charset=utf8;Allow User Variables=True"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider" invariant="System.Data.SQLite"
description=".NET Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>
================================================
FILE: VeekunImport/countries4.txt
================================================
1 AF Afghanistan
2 AL Albania
3 DZ Algeria
6 AO Angola
8 AG Antigua and Barbuda
9 AR Argentina
12 AU Australia
13 AT Austria
15 BS Bahamas
16 BH Bahrain
17 BD Bangladesh
18 BB Barbados
20 BE Belgium
21 BZ Belize
22 BJ Benin
23 BM Bermuda
25 BO Bolivia
27 BW Botswana
28 BR Brazil
29 VG British Virgin Islands
31 BG Bulgaria
33 BI Burundi
34 KH Cambodia
35 CM Cameroon
36 CA Canada
40 TD Chad
42 CL Chile
43 CN China
45 CO Colombia
48 CG Congo
49 CK Cook Islands
50 CR Costa Rica
52 HR Croatia
54 CY Cyprus
55 CZ Czech Republic
56 DK Denmark
58 DM Dominica
59 DO Dominican Republic
60 EC Ecuador
61 EG Egypt
62 SV El Salvador
69 FJ Fiji
70 FI Finland
71 FR France
72 GF French Guiana
74 GA Gabon
77 DE Germany
78 GH Ghana
79 GI Gibraltar
80 GR Greece
81 GL Greenland
82 GD Grenada
83 GP Guadeloupe
85 GT Guatemala
86 GN Guinea
88 GY Guyana
89 HT Haiti
90 HN Honduras
91 HK Hong Kong
92 HU Hungary
93 IS Iceland
94 IN India
95 ID Indonesia
97 IQ Iraq
98 IE Ireland
100 IL Israel
101 IT Italy
102 JM Jamaica
103 JP Japan
104 JO Jordan
107 KE Kenya
110 KR Republic of Korea
111 KW Kuwait
115 LB Lebanon
117 LR Liberia
118 LY Libyan Arab Jamhiriya
121 LU Luxembourg
122 MO Macau
126 MY Malaysia
129 MT Malta
131 MQ Martinique
133 MU Mauritius
135 MX Mexico
140 MA Morocco
142 MM Myanmar
146 NL Netherlands
148 NC New Caledonia
149 NZ New Zealand
150 NI Nicaragua
151 NE Niger
152 NG Nigeria
156 NO Norway
157 OM Oman
158 PK Pakistan
160 PA Panama
161 PG Papua New Guinea
163 PE Peru
164 PH Philippines
166 PL Poland
167 PT Portugal
171 RO Romania
172 RU Russian Federation
179 WS Samoa
183 SN Senegal
186 SL Sierra Leone
187 SG Singapore
188 SK Slovakia
189 SI Slovenia
192 ZA South Africa
193 ES Spain
194 LK Sri Lanka
196 SR Suriname
198 SZ Swaziland
199 SE Sweden
200 CH Swiss Confederation
202 TW Taiwan
204 TZ United Republic of Tanzania
205 TH Thailand
207 TG Togo
211 TN Tunisia
212 TR Turkey
216 UG Uganda
218 AE United Arab Emirates
219 GB United Kingdom
220 US United States of America
221 VI United States Virgin Islands
222 UY Uruguay
224 VU Vanuatu
226 VE Venezuela
227 VN Vietnam
================================================
FILE: VeekunImport/countries5.txt
================================================
1 AF Afghanistan
2 AL Albania
3 DZ Algeria
6 AO Angola
8 AG Antigua and Barbuda
9 AR Argentina
12 AU Australia
13 AT Austria
15 BS Bahamas
16 BH Bahrain
17 BD Bangladesh
18 BB Barbados
20 BE Belgium
21 BZ Belize
22 BJ Benin
23 BM Bermuda
25 BO Bolivia
27 BW Botswana
28 BR Brazil
29 VG British Virgin Islands
31 BG Bulgaria
33 BI Burundi
34 KH Cambodia
35 CM Cameroon
36 CA Canada
40 TD Chad
42 CL Chile
43 CN China
45 CO Colombia
47 CG Congo
48 CK Cook Islands
49 CR Costa Rica
51 HR Croatia
53 CY Cyprus
54 CZ Czech Republic
58 DK Denmark
60 DM Dominica
61 DO Dominican Republic
62 EC Ecuador
63 EG Egypt
64 SV El Salvador
71 FJ Fiji
72 FI Finland
73 FR France
74 GF French Guiana
76 GA Gabon
79 DE Germany
80 GH Ghana
81 GI Gibraltar
82 GR Greece
83 GL Greenland
84 GD Grenada
85 GP Guadeloupe
87 GT Guatemala
88 GN Guinea
90 GY Guyana
91 HT Haiti
92 HN Honduras
93 HU Hungary
94 IS Iceland
95 IN India
96 ID Indonesia
98 IQ Iraq
99 IE Ireland
101 IL Israel
102 IT Italy
103 JM Jamaica
105 JP Japan
106 JO Jordan
109 KE Kenya
111 KW Kuwait
115 LB Lebanon
117 LR Liberia
118 LY Libya
121 LU Luxembourg
125 MY Malaysia
128 MT Malta
130 MQ Martinique
132 MU Mauritius
134 MX Mexico
138 ME Montenegro
139 MA Morocco
141 MM Myanmar
145 NL Netherlands
147 NC New Caledonia
148 NZ New Zealand
149 NI Nicaragua
150 NE Niger
151 NG Nigeria
155 NO Norway
156 OM Oman
157 PK Pakistan
160 PA Panama
161 PG Papua New Guinea
163 PE Peru
164 PH Philippines
166 PL Poland
167 PT Portugal
170 KR South Korea
173 RO Romania
174 RU Russian Federation
181 WS Samoa
185 SN Senegal
186 RS Serbia
188 SL Sierra Leone
189 SG Singapore
190 SK Slovakia
191 SI Slovenia
194 ZA South Africa
195 ES Spain
196 LK Sri Lanka
198 SR Suriname
199 SZ Swaziland
200 SE Sweden
201 CH Switzerland
203 TW Taiwan
205 TH Thailand
206 TG Togo
210 TN Tunisia
211 TR Turkey
215 UG Uganda
217 AE United Arab Emirates
218 GB United Kingdom
219 TZ Tanzania
220 US United States of America
221 VI United States Virgin Islands
222 UY Uruguay
224 VU Vanatu
226 VE Venezuela
227 VN Vietnam
================================================
FILE: VeekunImport/families.txt
================================================
010 172 172 000 000 0000 4
012 029 032 000 000 0000 4
013 173 173 000 000 0000 6
015 174 174 000 000 0000 6
046 236 236 000 000 0000 0
050 113 113 440 440 4319 8
056 122 122 439 439 4314 4
058 238 238 000 000 0000 8
059 239 239 000 000 0000 2
060 240 240 000 000 0000 2
071 143 143 446 446 4316 4
089 183 183 298 298 3220 4
090 185 185 438 438 4315 1
099 202 202 360 360 3221 4
115 226 226 458 458 4317 4
155 313 314 000 000 0000 4
156 315 315 406 406 4318 4
182 358 358 433 433 4320 4
================================================
FILE: VeekunImport/families_map.txt
================================================
001 002 003
004 005 006
007 008 009
010 011 012
013 014 015
016 017 018
019 020
021 022
023 024
025 026 172
027 028
029 030 031 032 033 034
035 036 173
037 038
039 040 174
041 042 169
043 044 045 182
046 047
048 049
050 051
052 053
054 055
056 057
058 059
060 061 062 186
063 064 065
066 067 068
069 070 071
072 073
074 075 076
077 078
079 080 199
081 082 462
083
084 085
086 087
088 089
090 091
092 093 094
095 208
096 097
098 099
100 101
102 103
104 105
106 107 236 237
108 463
109 110
111 112 464
113 242 440
114 465
115
116 117 230
118 119
120 121
122 439
123 212
124 238
125 239 466
126 240 467
127
128
129 130
131
132
133 134 135 136 196 197 470 471 700
137 233 474
138 139
140 141
142
143 446
144
145
146
147 148 149
150
151
152 153 154
155 156 157
158 159 160
161 162
163 164
165 166
167 168
170 171
175 176 468
177 178
179 180 181
183 184 298
185 438
187 188 189
190 424
191 192
193 469
194 195
198 430
200 429
201
202 360
203
204 205
206
207 472
209 210
211
213
214
215 461
216 217
218 219
220 221 473
222
223 224
225
226 458
227
228 229
231 232
234
235
241
243
244
245
246 247 248
249
250
251
252 253 254
255 256 257
258 259 260
261 262
263 264
265 266 267 268 269
270 271 272
273 274 275
276 277
278 279
280 281 282 475
283 284
285 286
287 288 289
290 291 292
293 294 295
296 297
299 476
300 301
302
303
304 305 306
307 308
309 310
311
312
313 314
315 406 407
316 317
318 319
320 321
322 323
324
325 326
327
328 329 330
331 332
333 334
335
336
337
338
339 340
341 342
343 344
345 346
347 348
349 350
351
352
353 354
355 356 477
357
358 433
359
361 362 478
363 364 365
366 367 368
369
370
371 372 373
374 375 376
377
378
379
380
381
382
383
384
385
386
387 388 389
390 391 392
393 394 395
396 397 398
399 400
401 402
403 404 405
408 409
410 411
412 413 414
415 416
417
418 419
420 421
422 423
425 426
427 428
431 432
434 435
436 437
441
442
443 444 445
447 448
449 450
451 452
453 454
455
456 457
459 460
479
480
481
482
483
484
485
486
487
488
489 490
491
492
493
494
495 496 497
498 499 500
501 502 503
504 505
506 507 508
509 510
511 512
513 514
515 516
517 518
519 520 521
522 523
524 525 526
527 528
529 530
531
532 533 534
535 536 537
538
539
540 541 542
543 544 545
546 547
548 549
550
551 552 553
554 555
556
557 558
559 560
561
562 563
564 565
566 567
568 569
570 571
572 573
574 575 576
577 578 579
580 581
582 583 584
585 586
587
588 589
590 591
592 593
594
595 596
597 598
599 600 601
602 603 604
605 606
607 608 609
610 611 612
613 614
615
616 617
618
619
620
621
622 623
624 625
626
627 628
629 630
631
632
633 634 635
636 637
638
639
640
641
642
643
644
645
646
647
648
649
650 651 652
653 654 655
656 657 658
659 660
661 662 663
664 665 666
667 668
669 670 671
672 673
674 675
676
677 678
679 680 681
682 683
684 685
686 687
688 689
690 691
692 693
694 695
696 697
698 699
701
702
703
704 705 706
707
708 709
710 711
712 713
714 715
716
717
718
719
720
721
================================================
FILE: VeekunImport/form_abilities3.txt
================================================
00001 065 000 000
00002 065 000 000
00003 065 000 000
00004 066 000 000
00005 066 000 000
00006 066 000 000
00007 067 000 000
00008 067 000 000
00009 067 000 000
00010 019 000 000
00011 061 000 000
00012 014 000 000
00013 019 000 000
00014 061 000 000
00015 068 000 000
00016 051 000 000
00017 051 000 000
00018 051 000 000
00019 050 062 000
00020 050 062 000
00021 051 000 000
00022 051 000 000
00023 022 061 000
00024 022 061 000
00025 009 000 000
00026 009 000 000
00027 008 000 000
00028 008 000 000
00029 038 000 000
00030 038 000 000
00031 038 000 000
00032 038 000 000
00033 038 000 000
00034 038 000 000
00035 056 000 000
00036 056 000 000
00037 018 000 000
00038 018 000 000
00039 056 000 000
00040 056 000 000
00041 039 000 000
00042 039 000 000
00043 034 000 000
00044 034 000 000
00045 034 000 000
00046 027 000 000
00047 027 000 000
00048 014 000 000
00049 019 000 000
00050 008 071 000
00051 008 071 000
00052 053 000 000
00053 007 000 000
00054 006 013 000
00055 006 013 000
00056 072 000 000
00057 072 000 000
00058 022 018 000
00059 022 018 000
00060 011 006 000
00061 011 006 000
00062 011 006 000
00063 028 039 000
00064 028 039 000
00065 028 039 000
00066 062 000 000
00067 062 000 000
00068 062 000 000
00069 034 000 000
00070 034 000 000
00071 034 000 000
00072 029 064 000
00073 029 064 000
00074 069 005 000
00075 069 005 000
00076 069 005 000
00077 050 018 000
00078 050 018 000
00079 012 020 000
00080 012 020 000
00081 042 005 000
00082 042 005 000
00083 051 039 000
00084 050 048 000
00085 050 048 000
00086 047 000 000
00087 047 000 000
00088 001 060 000
00089 001 060 000
00090 075 000 000
00091 075 000 000
00092 026 000 000
00093 026 000 000
00094 026 000 000
00095 069 005 000
00096 015 000 000
00097 015 000 000
00098 052 075 000
00099 052 075 000
00100 043 009 000
00101 043 009 000
00102 034 000 000
00103 034 000 000
00104 069 031 000
00105 069 031 000
00106 007 000 000
00107 051 000 000
00108 020 012 000
00109 026 000 000
00110 026 000 000
00111 031 069 000
00112 031 069 000
00113 030 032 000
00114 034 000 000
00115 048 000 000
00116 033 000 000
00117 038 000 000
00118 033 041 000
00119 033 041 000
00120 035 030 000
00121 035 030 000
00122 043 000 000
00123 068 000 000
00124 012 000 000
00125 009 000 000
00126 049 000 000
00127 052 000 000
00128 022 000 000
00129 033 000 000
00130 022 000 000
00131 011 075 000
00132 007 000 000
00133 050 000 000
00134 011 000 000
00135 010 000 000
00136 018 000 000
00137 036 000 000
00138 033 075 000
00139 033 075 000
00140 033 004 000
00141 033 004 000
00142 069 046 000
00143 017 047 000
00144 046 000 000
00145 046 000 000
00146 046 000 000
00147 061 000 000
00148 061 000 000
00149 039 000 000
00150 046 000 000
00151 028 000 000
00152 065 000 000
00153 065 000 000
00154 065 000 000
00155 066 000 000
00156 066 000 000
00157 066 000 000
00158 067 000 000
00159 067 000 000
00160 067 000 000
00161 050 051 000
00162 050 051 000
00163 015 051 000
00164 015 051 000
00165 068 048 000
00166 068 048 000
00167 068 015 000
00168 068 015 000
00169 039 000 000
00170 010 035 000
00171 010 035 000
00172 009 000 000
00173 056 000 000
00174 056 000 000
00175 055 032 000
00176 055 032 000
00177 028 048 000
00178 028 048 000
00179 009 000 000
00180 009 000 000
00181 009 000 000
00182 034 000 000
00183 047 037 000
00184 047 037 000
00185 005 069 000
00186 011 006 000
00187 034 102 000
00188 034 102 000
00189 034 102 000
00190 050 053 000
00191 034 000 000
00192 034 000 000
00193 003 014 000
00194 006 011 000
00195 006 011 000
00196 028 000 000
00197 028 000 000
00198 015 000 000
00199 012 020 000
00200 026 000 000
00201 026 000 000
00202 023 000 000
00203 039 048 000
00204 005 000 000
00205 005 000 000
00206 032 050 000
00207 052 008 000
00208 069 005 000
00209 022 050 000
00210 022 000 000
00211 038 033 000
00212 068 000 000
00213 005 000 000
00214 068 062 000
00215 039 051 000
00216 053 000 000
00217 062 000 000
00218 040 049 000
00219 040 049 000
00220 012 000 000
00221 012 000 000
00222 055 030 000
00223 055 000 000
00224 021 000 000
00225 072 055 000
00226 033 011 000
00227 051 005 000
00228 048 018 000
00229 048 018 000
00230 033 000 000
00231 053 000 000
00232 005 000 000
00233 036 000 000
00234 022 000 000
00235 020 000 000
00236 062 000 000
00237 022 000 000
00238 012 000 000
00239 009 000 000
00240 049 000 000
00241 047 000 000
00242 030 032 000
00243 046 000 000
00244 046 000 000
00245 046 000 000
00246 062 000 000
00247 061 000 000
00248 045 000 000
00249 046 000 000
00250 046 000 000
00251 030 000 000
00252 065 000 000
00253 065 000 000
00254 065 000 000
00255 066 000 000
00256 066 000 000
00257 066 000 000
00258 067 000 000
00259 067 000 000
00260 067 000 000
00261 050 000 000
00262 022 000 000
00263 053 000 000
00264 053 000 000
00265 019 000 000
00266 061 000 000
00267 068 000 000
00268 061 000 000
00269 019 000 000
00270 033 044 000
00271 033 044 000
00272 033 044 000
00273 034 048 000
00274 034 048 000
00275 034 048 000
00276 062 000 000
00277 062 000 000
00278 051 000 000
00279 051 000 000
00280 028 036 000
00281 028 036 000
00282 028 036 000
00283 033 000 000
00284 022 000 000
00285 027 000 000
00286 027 000 000
00287 054 000 000
00288 072 000 000
00289 054 000 000
00290 014 000 000
00291 003 000 000
00292 025 000 000
00293 043 000 000
00294 043 000 000
00295 043 000 000
00296 047 062 000
00297 047 062 000
00298 047 037 000
00299 005 042 000
00300 056 000 000
00301 056 000 000
00302 051 000 000
00303 052 022 000
00304 005 069 000
00305 005 069 000
00306 005 069 000
00307 074 000 000
00308 074 000 000
00309 009 031 000
00310 009 031 000
00311 057 000 000
00312 058 000 000
00313 035 068 000
00314 012 000 000
00315 030 038 000
00316 064 060 000
00317 064 060 000
00318 024 000 000
00319 024 000 000
00320 041 012 000
00321 041 012 000
00322 012 000 000
00323 040 000 000
00324 073 000 000
00325 047 020 000
00326 047 020 000
00327 020 000 000
00328 052 071 000
00329 026 000 000
00330 026 000 000
00331 008 000 000
00332 008 000 000
00333 030 000 000
00334 030 000 000
00335 017 000 000
00336 061 000 000
00337 026 000 000
00338 026 000 000
00339 012 000 000
00340 012 000 000
00341 052 075 000
00342 052 075 000
00343 026 000 000
00344 026 000 000
00345 021 000 000
00346 021 000 000
00347 004 000 000
00348 004 000 000
00349 033 000 000
00350 063 000 000
00351 059 000 000
00352 016 000 000
00353 015 000 000
00354 015 000 000
00355 026 000 000
00356 046 000 000
00357 034 000 000
00358 026 000 000
00359 046 000 000
00360 023 000 000
00361 039 000 000
00362 039 000 000
00363 047 000 000
00364 047 000 000
00365 047 000 000
00366 075 000 000
00367 033 000 000
00368 033 000 000
00369 033 069 000
00370 033 000 000
00371 069 000 000
00372 069 000 000
00373 022 000 000
00374 029 000 000
00375 029 000 000
00376 029 000 000
00377 029 000 000
00378 029 000 000
00379 029 000 000
00380 026 000 000
00381 026 000 000
00382 002 000 000
00383 070 000 000
00384 076 000 000
00385 032 000 000
00386 046 000 000
10001 026 000 000
10002 026 000 000
10003 026 000 000
10004 026 000 000
10005 026 000 000
10006 026 000 000
10007 026 000 000
10008 026 000 000
10009 026 000 000
10010 026 000 000
10011 026 000 000
10012 026 000 000
10013 026 000 000
10014 026 000 000
10015 026 000 000
10016 026 000 000
10017 026 000 000
10018 026 000 000
10019 026 000 000
10020 026 000 000
10021 026 000 000
10022 026 000 000
10023 026 000 000
10024 026 000 000
10025 026 000 000
10026 026 000 000
10027 026 000 000
10028 059 000 000
10029 059 000 000
10030 059 000 000
10031 046 000 000
10032 046 000 000
10033 046 000 000
================================================
FILE: VeekunImport/form_abilities4.txt
================================================
00016 051 077 000
00017 051 077 000
00018 051 077 000
00029 038 079 000
00030 038 079 000
00031 038 079 000
00032 038 079 000
00033 038 079 000
00034 038 079 000
00035 056 098 000
00036 056 098 000
00046 027 087 000
00047 027 087 000
00048 014 110 000
00049 019 110 000
00052 053 101 000
00053 007 101 000
00056 072 083 000
00057 072 083 000
00066 062 099 000
00067 062 099 000
00068 062 099 000
00086 047 093 000
00087 047 093 000
00090 075 092 000
00091 075 092 000
00096 015 108 000
00097 015 108 000
00106 007 120 000
00107 051 089 000
00114 034 102 000
00115 048 113 000
00116 033 097 000
00117 038 097 000
00122 043 111 000
00123 068 101 000
00124 012 108 000
00127 052 104 000
00128 022 083 000
00133 050 091 000
00137 036 088 000
00173 056 098 000
00187 034 102 000
00188 034 102 000
00189 034 102 000
00191 034 094 000
00192 034 094 000
00198 015 105 000
00210 022 095 000
00212 068 101 000
00213 005 082 000
00216 053 095 000
00217 062 095 000
00220 012 081 000
00221 012 081 000
00223 055 097 000
00224 021 097 000
00230 033 097 000
00233 036 088 000
00234 022 119 000
00235 020 101 000
00236 062 080 000
00237 022 101 000
00238 012 108 000
00241 047 113 000
00261 050 095 000
00262 022 095 000
00263 053 082 000
00264 053 082 000
00285 027 090 000
00286 027 090 000
00300 056 096 000
00301 056 096 000
00302 051 100 000
00314 012 110 000
00322 012 086 000
00323 040 116 000
00327 020 077 000
00339 012 107 000
00340 012 107 000
00353 015 119 000
00354 015 119 000
00357 034 094 000
00359 046 105 000
00361 039 115 000
00362 039 115 000
00363 047 115 000
00364 047 115 000
00365 047 115 000
00387 065 000 000
00388 065 000 000
00389 065 000 000
00390 066 000 000
00391 066 000 000
00392 066 000 000
00393 067 000 000
00394 067 000 000
00395 067 000 000
00396 051 000 000
00397 022 000 000
00398 022 000 000
00399 086 109 000
00400 086 109 000
00401 061 000 000
00402 068 000 000
00403 079 022 000
00404 079 022 000
00405 079 022 000
00406 030 038 000
00407 030 038 000
00408 104 000 000
00409 104 000 000
00410 005 000 000
00411 005 000 000
00412 061 000 000
00413 107 000 000
00414 068 000 000
00415 118 000 000
00416 046 000 000
00417 050 053 000
00418 033 000 000
00419 033 000 000
00420 034 000 000
00421 122 000 000
00422 060 114 000
00423 060 114 000
00424 101 053 000
00425 106 084 000
00426 106 084 000
00427 050 103 000
00428 056 103 000
00429 026 000 000
00430 015 105 000
00431 007 020 000
00432 047 020 000
00433 026 000 000
00434 001 106 000
00435 001 106 000
00436 026 085 000
00437 026 085 000
00438 005 069 000
00439 043 111 000
00440 030 032 000
00441 051 077 000
00442 046 000 000
00443 008 000 000
00444 008 000 000
00445 008 000 000
00446 053 047 000
00447 080 039 000
00448 080 039 000
00449 045 000 000
00450 045 000 000
00451 004 097 000
00452 004 097 000
00453 107 087 000
00454 107 087 000
00455 026 000 000
00456 033 114 000
00457 033 114 000
00458 033 011 000
00459 117 000 000
00460 117 000 000
00461 046 000 000
00462 042 005 000
00463 020 012 000
00464 031 116 000
00465 034 102 000
00466 078 000 000
00467 049 000 000
00468 055 032 000
00469 003 110 000
00470 102 000 000
00471 081 000 000
00472 052 008 000
00473 012 081 000
00474 091 088 000
00475 080 000 000
00476 005 042 000
00477 046 000 000
00478 081 000 000
00479 026 000 000
00480 026 000 000
00481 026 000 000
00482 026 000 000
00483 046 000 000
00484 046 000 000
00485 018 000 000
00486 112 000 000
00487 046 000 000
00488 026 000 000
00489 093 000 000
00490 093 000 000
00491 123 000 000
00492 030 000 000
00493 121 000 000
10034 061 000 000
10035 061 000 000
10036 107 000 000
10037 107 000 000
10038 122 000 000
10039 060 114 000
10040 060 114 000
10041 121 000 000
10042 121 000 000
10043 121 000 000
10044 121 000 000
10045 121 000 000
10046 121 000 000
10047 121 000 000
10048 121 000 000
10049 121 000 000
10050 121 000 000
10051 121 000 000
10052 121 000 000
10053 121 000 000
10054 121 000 000
10055 121 000 000
10056 121 000 000
10057 121 000 000
10058 026 000 000
10059 026 000 000
10060 026 000 000
10061 026 000 000
10062 026 000 000
10063 026 000 000
10064 032 000 000
10065 009 000 000
================================================
FILE: VeekunImport/form_abilities5.txt
================================================
00001 065 000 034
00002 065 000 034
00003 065 000 034
00004 066 000 094
00005 066 000 094
00006 066 000 094
00007 067 000 044
00008 067 000 044
00009 067 000 044
00010 019 000 050
00011 061 000 000
00012 014 000 110
00013 019 000 050
00014 061 000 000
00015 068 000 097
00016 051 077 145
00017 051 077 145
00018 051 077 145
00019 050 062 055
00020 050 062 055
00021 051 000 097
00022 051 000 097
00023 022 061 127
00024 022 061 127
00025 009 000 031
00026 009 000 031
00027 008 000 146
00028 008 000 146
00029 038 079 055
00030 038 079 055
00031 038 079 125
00032 038 079 055
00033 038 079 055
00034 038 079 125
00035 056 098 132
00036 056 098 109
00037 018 000 070
00038 018 000 070
00039 056 000 132
00040 056 000 119
00041 039 000 151
00042 039 000 151
00043 034 000 050
00044 034 000 001
00045 034 000 027
00046 027 087 006
00047 027 087 006
00048 014 110 050
00049 019 110 147
00050 008 071 159
00051 008 071 159
00052 053 101 127
00053 007 101 127
00054 006 013 033
00055 006 013 033
00056 072 083 128
00057 072 083 128
00058 022 018 154
00059 022 018 154
00060 011 006 033
00061 011 006 033
00062 011 006 033
00063 028 039 098
00064 028 039 098
00065 028 039 098
00066 062 099 080
00067 062 099 080
00068 062 099 080
00069 034 000 082
00070 034 000 082
00071 034 000 082
00072 029 064 044
00073 029 064 044
00074 069 005 008
00075 069 005 008
00076 069 005 008
00077 050 018 049
00078 050 018 049
00079 012 020 144
00080 012 020 144
00081 042 005 148
00082 042 005 148
00083 051 039 128
00084 050 048 077
00085 050 048 077
00086 047 093 115
00087 047 093 115
00088 001 060 143
00089 001 060 143
00090 075 092 142
00091 075 092 142
00092 026 000 000
00093 026 000 000
00094 026 000 000
00095 069 005 133
00096 015 108 039
00097 015 108 039
00098 052 075 125
00099 052 075 125
00100 043 009 106
00101 043 009 106
00102 034 000 139
00103 034 000 139
00104 069 031 004
00105 069 031 004
00106 007 120 084
00107 051 089 039
00108 020 012 013
00109 026 000 000
00110 026 000 000
00111 031 069 120
00112 031 069 120
00113 030 032 131
00114 034 102 144
00115 048 113 039
00116 033 097 006
00117 038 097 006
00118 033 041 031
00119 033 041 031
00120 035 030 148
00121 035 030 148
00122 043 111 101
00123 068 101 080
00124 012 108 087
00125 009 000 072
00126 049 000 072
00127 052 104 153
00128 022 083 125
00129 033 000 155
00130 022 000 153
00131 011 075 093
00132 007 000 150
00133 050 091 107
00134 011 000 093
00135 010 000 095
00136 018 000 062
00137 036 088 148
00138 033 075 133
00139 033 075 133
00140 033 004 133
00141 033 004 133
00142 069 046 127
00143 017 047 082
00144 046 000 081
00145 046 000 031
00146 046 000 049
00147 061 000 063
00148 061 000 063
00149 039 000 136
00150 046 000 127
00151 028 000 000
00152 065 000 102
00153 065 000 102
00154 065 000 102
00155 066 000 018
00156 066 000 018
00157 066 000 018
00158 067 000 125
00159 067 000 125
00160 067 000 125
00161 050 051 119
00162 050 051 119
00163 015 051 110
00164 015 051 110
00165 068 048 155
00166 068 048 089
00167 068 015 097
00168 068 015 097
00169 039 000 151
00170 010 035 011
00171 010 035 011
00172 009 000 031
00173 056 098 132
00174 056 000 132
00175 055 032 105
00176 055 032 105
00177 028 048 156
00178 028 048 156
00179 009 000 057
00180 009 000 057
00181 009 000 057
00182 034 000 131
00183 047 037 157
00184 047 037 157
00185 005 069 155
00186 011 006 002
00187 034 102 151
00188 034 102 151
00189 034 102 151
00190 050 053 092
00191 034 094 048
00192 034 094 048
00193 003 014 119
00194 006 011 109
00195 006 011 109
00196 028 000 156
00197 028 000 039
00198 015 105 158
00199 012 020 144
00200 026 000 000
00201 026 000 000
00202 023 000 140
00203 039 048 157
00204 005 000 142
00205 005 000 142
00206 032 050 155
00207 052 008 017
00208 069 005 125
00209 022 050 155
00210 022 095 155
00211 038 033 022
00212 068 101 135
00213 005 082 126
00214 068 062 153
00215 039 051 124
00216 053 095 118
00217 062 095 127
00218 040 049 133
00219 040 049 133
00220 012 081 047
00221 012 081 047
00222 055 030 144
00223 055 097 141
00224 021 097 141
00225 072 055 015
00226 033 011 041
00227 051 005 133
00228 048 018 127
00229 048 018 127
00230 033 097 006
00231 053 000 008
00232 005 000 008
00233 036 088 148
00234 022 119 157
00235 020 101 141
00236 062 080 072
00237 022 101 080
00238 012 108 093
00239 009 000 072
00240 049 000 072
00241 047 113 157
00242 030 032 131
00243 046 000 010
00244 046 000 018
00245 046 000 011
00246 062 000 008
00247 061 000 000
00248 045 000 127
00249 046 000 136
00250 046 000 144
00251 030 000 000
00252 065 000 084
00253 065 000 084
00254 065 000 084
00255 066 000 003
00256 066 000 003
00257 066 000 003
00258 067 000 006
00259 067 000 006
00260 067 000 006
00261 050 095 155
00262 022 095 153
00263 053 082 095
00264 053 082 095
00265 019 000 050
00266 061 000 000
00267 068 000 079
00268 061 000 000
00269 019 000 014
00270 033 044 020
00271 033 044 020
00272 033 044 020
00273 034 048 124
00274 034 048 124
00275 034 048 124
00276 062 000 113
00277 062 000 113
00278 051 000 044
00279 051 000 044
00280 028 036 140
00281 028 036 140
00282 028 036 140
00283 033 000 044
00284 022 000 127
00285 027 090 095
00286 027 090 101
00287 054 000 000
00288 072 000 000
00289 054 000 000
00290 014 000 050
00291 003 000 151
00292 025 000 000
00293 043 000 155
00294 043 000 113
00295 043 000 113
00296 047 062 125
00297 047 062 125
00298 047 037 157
00299 005 042 159
00300 056 096 147
00301 056 096 147
00302 051 100 158
00303 052 022 125
00304 005 069 134
00305 005 069 134
00306 005 069 134
00307 074 000 140
00308 074 000 140
00309 009 031 058
00310 009 031 058
00311 057 000 000
00312 058 000 000
00313 035 068 158
00314 012 110 158
00315 030 038 102
00316 064 060 082
00317 064 060 082
00318 024 000 003
00319 024 000 003
00320 041 012 046
00321 041 012 046
00322 012 086 020
00323 040 116 083
00324 073 000 075
00325 047 020 082
00326 047 020 082
00327 020 077 126
00328 052 071 125
00329 026 000 000
00330 026 000 000
00331 008 000 011
00332 008 000 011
00333 030 000 013
00334 030 000 013
00335 017 000 137
00336 061 000 151
00337 026 000 000
00338 026 000 000
00339 012 107 093
00340 012 107 093
00341 052 075 091
00342 052 075 091
00343 026 000 000
00344 026 000 000
00345 021 000 114
00346 021 000 114
00347 004 000 033
00348 004 000 033
00349 033 000 091
00350 063 000 056
00351 059 000 000
00352 016 000 000
00353 015 119 130
00354 015 119 130
00355 026 000 000
00356 046 000 000
00357 034 094 139
00358 026 000 000
00359 046 105 154
00360 023 000 140
00361 039 115 141
00362 039 115 141
00363 047 115 012
00364 047 115 012
00365 047 115 012
00366 075 000 155
00367 033 000 041
00368 033 000 093
00369 033 069 005
00370 033 000 093
00371 069 000 125
00372 069 000 142
00373 022 000 153
00374 029 000 135
00375 029 000 135
00376 029 000 135
00377 029 000 005
00378 029 000 115
00379 029 000 135
00380 026 000 000
00381 026 000 000
00382 002 000 000
00383 070 000 000
00384 076 000 000
00385 032 000 000
00386 046 000 000
00387 065 000 075
00388 065 000 075
00389 065 000 075
00390 066 000 089
00391 066 000 089
00392 066 000 089
00393 067 000 128
00394 067 000 128
00395 067 000 128
00396 051 000 000
00397 022 000 120
00398 022 000 120
00399 086 109 141
00400 086 109 141
00401 061 000 050
00402 068 000 101
00403 079 022 062
00404 079 022 062
00405 079 022 062
00406 030 038 102
00407 030 038 101
00408 104 000 125
00409 104 000 125
00410 005 000 043
00411 005 000 043
00412 061 000 142
00413 107 000 142
00414 068 000 110
00415 118 000 055
00416 046 000 127
00417 050 053 010
00418 033 000 041
00419 033 000 041
00420 034 000 000
00421 122 000 000
00422 060 114 159
00423 060 114 159
00424 101 053 092
00425 106 084 138
00426 106 084 138
00427 050 103 007
00428 056 103 007
00429 026 000 000
00430 015 105 153
00431 007 020 051
00432 047 020 128
00433 026 000 000
00434 001 106 051
00435 001 106 051
00436 026 085 134
00437 026 085 134
00438 005 069 155
00439 043 111 101
00440 030 032 132
00441 051 077 145
00442 046 000 151
00443 008 000 024
00444 008 000 024
00445 008 000 024
00446 053 047 082
00447 080 039 158
00448 080 039 154
00449 045 000 159
00450 045 000 159
00451 004 097 051
00452 004 097 051
00453 107 087 143
00454 107 087 143
00455 026 000 000
00456 033 114 041
00457 033 114 041
00458 033 011 041
00459 117 000 043
00460 117 000 043
00461 046 000 124
00462 042 005 148
00463 020 012 013
00464 031 116 120
00465 034 102 144
00466 078 000 072
00467 049 000 072
00468 055 032 105
00469 003 110 119
00470 102 000 034
00471 081 000 115
00472 052 008 090
00473 012 081 047
00474 091 088 148
00475 080 000 154
00476 005 042 159
00477 046 000 000
00478 081 000 130
00479 026 000 000
00480 026 000 000
00481 026 000 000
00482 026 000 000
00483 046 000 140
00484 046 000 140
00485 018 000 049
00486 112 000 000
00487 046 000 140
00488 026 000 000
00489 093 000 000
00490 093 000 000
00491 123 000 000
00492 030 000 000
00493 121 000 000
00494 162 000 000
00495 065 000 126
00496 065 000 126
00497 065 000 126
00498 066 000 047
00499 066 000 047
00500 066 000 120
00501 067 000 075
00502 067 000 075
00503 067 000 075
00504 050 051 148
00505 035 051 148
00506 072 053 050
00507 022 146 113
00508 022 146 113
00509 007 084 158
00510 007 084 158
00511 082 000 065
00512 082 000 065
00513 082 000 066
00514 082 000 066
00515 082 000 067
00516 082 000 067
00517 108 028 140
00518 108 028 140
00519 145 105 079
00520 145 105 079
00521 145 105 079
00522 031 078 157
00523 031 078 157
00524 005 000 159
00525 005 000 159
00526 005 000 159
00527 109 103 086
00528 109 103 086
00529 146 159 104
00530 146 159 104
00531 131 144 103
00532 062 125 089
00533 062 125 089
00534 062 125 089
00535 033 093 011
00536 033 093 011
00537 033 143 011
00538 062 039 104
00539 005 039 104
00540 068 034 142
00541 102 034 142
00542 068 034 142
00543 038 068 095
00544 038 068 095
00545 038 068 095
00546 158 151 034
00547 158 151 034
00548 034 020 102
00549 034 020 102
00550 120 091 104
00551 022 153 083
00552 022 153 083
00553 022 153 083
00554 055 000 039
00555 125 000 161
00556 011 034 114
00557 005 075 133
00558 005 075 133
00559 061 153 022
00560 061 153 022
00561 147 098 110
00562 152 000 000
00563 152 000 000
00564 116 005 033
00565 116 005 033
00566 129 000 000
00567 129 000 000
00568 001 060 106
00569 001 133 106
00570 149 000 000
00571 149 000 000
00572 056 101 092
00573 056 101 092
00574 119 000 023
00575 119 000 023
00576 119 000 023
00577 142 098 144
00578 142 098 144
00579 142 098 144
00580 051 145 093
00581 051 145 093
00582 115 000 133
00583 115 000 133
00584 115 000 133
00585 034 157 032
00586 034 157 032
00587 009 000 078
00588 068 061 099
00589 068 075 142
00590 027 000 144
00591 027 000 144
00592 011 130 006
00593 011 130 006
00594 131 093 144
00595 014 127 068
00596 014 127 068
00597 160 000 000
00598 160 000 000
00599 057 058 029
00600 057 058 029
00601 057 058 029
00602 026 000 000
00603 026 000 000
00604 026 000 000
00605 140 028 148
00606 140 028 148
00607 018 049 023
00608 018 049 023
00609 018 049 023
00610 079 104 127
00611 079 104 127
00612 079 104 127
00613 081 000 155
00614 081 000 033
00615 026 000 000
00616 093 075 142
00617 093 060 084
00618 009 007 008
00619 039 144 120
00620 039 144 120
00621 024 125 104
00622 089 103 099
00623 089 103 099
00624 128 039 046
00625 128 039 046
00626 120 157 043
00627 051 125 055
00628 051 125 128
00629 145 142 133
00630 145 142 133
00631 082 018 073
00632 068 055 054
00633 055 000 000
00634 055 000 000
00635 026 000 000
00636 049 000 068
00637 049 000 068
00638 154 000 000
00639 154 000 000
00640 154 000 000
00641 158 000 128
00642 158 000 128
00643 163 000 000
00644 164 000 000
00645 159 000 125
00646 046 000 000
00647 154 000 000
00648 032 000 000
00649 088 000 000
10001 026 000 000
10002 026 000 000
10003 026 000 000
10004 026 000 000
10005 026 000 000
10006 026 000 000
10007 026 000 000
10008 026 000 000
10009 026 000 000
10010 026 000 000
10011 026 000 000
10012 026 000 000
10013 026 000 000
10014 026 000 000
10015 026 000 000
10016 026 000 000
10017 026 000 000
10018 026 000 000
10019 026 000 000
10020 026 000 000
10021 026 000 000
10022 026 000 000
10023 026 000 000
10024 026 000 000
10025 026 000 000
10026 026 000 000
10027 026 000 000
10028 059 000 000
10029 059 000 000
10030 059 000 000
10031 046 000 000
10032 046 000 000
10033 046 000 000
10034 061 000 142
10035 061 000 142
10036 107 000 142
10037 107 000 142
10038 122 000 000
10039 060 114 159
10040 060 114 159
10041 121 000 000
10042 121 000 000
10043 121 000 000
10044 121 000 000
10045 121 000 000
10046 121 000 000
10047 121 000 000
10048 121 000 000
10049 121 000 000
10050 121 000 000
10051 121 000 000
10052 121 000 000
10053 121 000 000
10054 121 000 000
10055 121 000 000
10056 121 000 000
10057 121 000 000
10058 026 000 000
10059 026 000 000
10060 026 000 000
10061 026 000 000
10062 026 000 000
10063 026 000 000
10064 032 000 000
10065 009 000 031
10066 069 091 104
10067 125 000 161
10068 034 157 032
10069 034 157 032
10070 034 157 032
10071 034 157 032
10072 034 157 032
10073 034 157 032
10074 032 000 000
10075 088 000 000
10076 088 000 000
10077 088 000 000
10078 088 000 000
10079 144 000 000
10080 010 000 000
10081 022 000 000
10082 164 000 000
10083 163 000 000
10084 154 000 000
================================================
FILE: VeekunImport/form_abilities6.txt
================================================
00039 056 172 132
00040 056 172 119
00145 046 000 009
00174 056 172 132
00311 057 000 031
00312 058 000 010
00349 033 012 091
00350 063 172 056
00352 016 000 168
00355 026 000 119
00356 046 000 119
00396 051 000 120
00477 046 000 119
00543 038 068 003
00544 038 068 003
00545 038 068 003
00574 119 172 023
00575 119 172 023
00576 119 172 023
00598 160 000 107
00607 018 049 151
00608 018 049 151
00609 018 049 151
00650 065 000 171
00651 065 000 171
00652 065 000 171
00653 066 000 170
00654 066 000 170
00655 066 000 170
00656 067 000 168
00657 067 000 168
00658 067 000 168
00659 053 167 037
00660 053 167 037
00661 145 000 177
00662 049 000 177
00663 049 000 177
00664 019 014 132
00665 061 000 132
00666 019 014 132
00667 079 127 153
00668 079 127 153
00669 166 000 180
00670 166 000 180
00671 166 000 180
00672 157 000 179
00673 157 000 179
00674 089 104 113
00675 089 104 113
00676 169 000 000
00677 051 151 020
00678 051 151 158
00679 099 000 000
00680 099 000 000
00681 176 000 000
00682 131 000 165
00683 131 000 165
00684 175 000 084
00685 175 000 084
00686 126 021 151
00687 126 021 151
00688 181 097 124
00689 181 097 124
00690 038 143 091
00691 038 143 091
00692 178 000 000
00693 178 000 000
00694 087 008 094
00695 087 008 094
00696 173 000 005
00697 173 000 069
00698 174 000 117
00699 174 000 117
00700 056 000 182
00701 007 084 104
00702 167 053 057
00703 029 000 005
00704 157 093 183
00705 157 093 183
00706 157 093 183
00707 158 000 170
00708 030 119 139
00709 030 119 139
00710 053 119 015
00711 053 119 015
00712 020 115 005
00713 020 115 005
00714 119 151 140
00715 119 151 140
00716 187 000 000
00717 186 000 000
00718 188 000 000
00719 029 000 000
00720 170 000 000
00721 011 000 000
10085 121 000 000
10086 019 014 132
10087 019 014 132
10088 019 014 132
10089 019 014 132
10090 019 014 132
10091 019 014 132
10092 019 014 132
10093 019 014 132
10094 019 014 132
10095 019 014 132
10096 019 014 132
10097 019 014 132
10098 019 014 132
10099 019 014 132
10100 019 014 132
10101 019 014 132
10102 019 014 132
10103 166 00
gitextract_fpvand7g/
├── .gitignore
├── .gitmodules
├── GlobalTerminalService/
│ ├── GTServer4.cs
│ ├── GTServer5.cs
│ ├── GTServerBase.cs
│ ├── GlobalTerminalService.csproj
│ ├── Program.cs
│ ├── ProjectInstaller.Designer.cs
│ ├── ProjectInstaller.cs
│ ├── ProjectInstaller.resx
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Service1.Designer.cs
│ ├── Service1.cs
│ ├── Service1.resx
│ ├── app.config
│ └── cert.pfx
├── LICENSE.md
├── MakeBaseStatTables/
│ ├── MakeBaseStatTables.csproj
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── app.config
│ └── packages.config
├── README.md
├── RenameImages/
│ ├── App.config
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── RenameImages.csproj
├── Roadmap.md
├── VeekunImport/
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── VeekunImport.csproj
│ ├── app.config
│ ├── countries4.txt
│ ├── countries5.txt
│ ├── families.txt
│ ├── families_map.txt
│ ├── form_abilities3.txt
│ ├── form_abilities4.txt
│ ├── form_abilities5.txt
│ ├── form_abilities6.txt
│ ├── form_stats1.txt
│ ├── form_stats2.txt
│ ├── form_stats3.txt
│ ├── form_stats4.txt
│ ├── form_stats5.txt
│ ├── form_stats6.txt
│ ├── form_values.txt
│ ├── items3.txt
│ ├── items4.txt
│ ├── items5.txt
│ ├── items_balls.txt
│ ├── packages.config
│ ├── regions.txt
│ ├── ribbon_positions3.txt
│ ├── ribbon_positions4.txt
│ ├── ribbon_positions5.txt
│ └── ribbons.txt
├── bvCrawler4/
│ ├── App.config
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── bvCrawler4.csproj
│ └── packages.config
├── bvCrawler5/
│ ├── App.config
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── bvCrawler5.csproj
│ └── packages.config
├── bvRestorer4/
│ ├── App.config
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── bvRestorer4.csproj
├── bvRestorer5/
│ ├── App.config
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── bvRestorer5.csproj
├── gfx/
│ ├── 2014 design/
│ │ ├── fGTS colour blending.psd
│ │ ├── heading-backdrop.psd
│ │ ├── headinglogo.psd
│ │ ├── logo-colour.psd
│ │ └── logov3.psd
│ └── 2023 design/
│ ├── Discord Icon Pride.afdesign
│ ├── Discord Icon.afdesign
│ ├── Logo.afdesign
│ ├── Temp placeholder background.afdesign
│ └── Touch Icon.afdesign
├── gts/
│ ├── Global.asax
│ ├── Global.asax.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ └── PublishProfiles/
│ │ ├── Local IIS.pubxml
│ │ └── Public.pubxml
│ ├── Web.Public.config
│ ├── Web.config
│ ├── admin/
│ │ ├── Sessions.aspx
│ │ ├── Sessions.aspx.cs
│ │ ├── Sessions.aspx.designer.cs
│ │ ├── Web.Debug.config
│ │ ├── Web.Release.config
│ │ └── Web.config
│ ├── gts.csproj
│ ├── masters/
│ │ ├── MasterPage.master
│ │ ├── MasterPage.master.cs
│ │ └── MasterPage.master.designer.cs
│ ├── pgl.ashx
│ ├── pgl.ashx.cs
│ ├── pkvldtprod.ashx
│ ├── pkvldtprod.ashx.cs
│ ├── pokemondpds.ashx
│ ├── pokemondpds.ashx.cs
│ ├── pokemondpds_web.ashx
│ ├── pokemondpds_web.ashx.cs
│ ├── src/
│ │ ├── AppStateHelper.cs
│ │ ├── BanHelper.cs
│ │ ├── FakeOpponentGenerator.cs
│ │ └── IpAddressHelper.cs
│ ├── syachi2ds.ashx
│ └── syachi2ds.ashx.cs
├── library/
│ ├── Data/
│ │ ├── DataMysql.cs
│ │ ├── DataSqlite.cs
│ │ ├── Database.cs
│ │ ├── DatabaseExtender.cs
│ │ ├── MySqlDatabaseExtender.cs
│ │ └── SqlDatabaseExtender.cs
│ ├── Library.csproj
│ ├── Pokedex/
│ │ ├── Ability.cs
│ │ ├── Evolution.cs
│ │ ├── Family.cs
│ │ ├── Form.cs
│ │ ├── FormAbilities.cs
│ │ ├── FormStats.cs
│ │ ├── Item.cs
│ │ ├── Location.cs
│ │ ├── Move.cs
│ │ ├── Pokedex.cs
│ │ ├── PokedexRecordBase.cs
│ │ ├── Region.cs
│ │ ├── Ribbon.cs
│ │ ├── Species.cs
│ │ └── Type.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ ├── Structures/
│ │ ├── ByteStatValues.cs
│ │ ├── ContestStatValues.cs
│ │ ├── Enums.cs
│ │ ├── Format.cs
│ │ ├── IntStatValues.cs
│ │ ├── IvStatValues.cs
│ │ ├── MoveSlot.cs
│ │ ├── Pokemon4.cs
│ │ ├── Pokemon5.cs
│ │ ├── PokemonBase.cs
│ │ ├── PokemonParty4.cs
│ │ ├── PokemonParty5.cs
│ │ ├── PokemonPartyBase.cs
│ │ ├── StatValues.cs
│ │ ├── StatValuesBase.cs
│ │ └── TrainerMemo.cs
│ ├── Support/
│ │ ├── AliasTable.cs
│ │ ├── AssertHelper.cs
│ │ ├── BinarySerializableBase.cs
│ │ ├── EncodedString4.cs
│ │ ├── EncodedString5.cs
│ │ ├── EncodedStringBase.cs
│ │ ├── EnumerableExtender.cs
│ │ ├── GameSyncUtils.cs
│ │ ├── Indexer1d.cs
│ │ ├── LazyKeyValuePair.cs
│ │ ├── LocalizedString.cs
│ │ ├── LogHelper.cs
│ │ ├── StreamExtender.cs
│ │ ├── StringHelper.cs
│ │ ├── TrendyPhrase4.cs
│ │ ├── TrendyPhrase5.cs
│ │ ├── TrendyPhraseBase.cs
│ │ └── ValidationSummary.cs
│ ├── Wfc/
│ │ ├── BanStatus.cs
│ │ ├── BattleSubwayPokemon5.cs
│ │ ├── BattleSubwayProfile5.cs
│ │ ├── BattleSubwayRecord5.cs
│ │ ├── BattleTowerPokemon4.cs
│ │ ├── BattleTowerPokemonBase.cs
│ │ ├── BattleTowerProfile4.cs
│ │ ├── BattleTowerProfileBase.cs
│ │ ├── BattleTowerRecord4.cs
│ │ ├── BattleTowerRecordBase.cs
│ │ ├── BattleVideoHeader4.cs
│ │ ├── BattleVideoHeader5.cs
│ │ ├── BattleVideoRecord4.cs
│ │ ├── BattleVideoRecord5.cs
│ │ ├── BoxRecord4.cs
│ │ ├── DressupRecord4.cs
│ │ ├── GtsRecord4.cs
│ │ ├── GtsRecord5.cs
│ │ ├── GtsRecordBase.cs
│ │ ├── MusicalRecord5.cs
│ │ ├── PlazaQuestionnaire.cs
│ │ ├── PlazaSchedule.cs
│ │ ├── TrainerProfile4.cs
│ │ ├── TrainerProfile5.cs
│ │ ├── TrainerProfileBase.cs
│ │ ├── TrainerProfilePlaza.cs
│ │ ├── TrainerRankings.cs
│ │ └── VipRecord.cs
│ ├── app.config
│ ├── database.sql
│ ├── lib/
│ │ ├── SQLite.Designer.pdb
│ │ ├── SQLite.Designer.xml
│ │ ├── System.Data.SQLite.Linq.pdb
│ │ ├── System.Data.SQLite.Linq.xml
│ │ ├── System.Data.SQLite.dll.config
│ │ ├── System.Data.SQLite.pdb
│ │ └── System.Data.SQLite.xml
│ └── packages.config
├── pkmn-classic-framework.sln
├── pokedex/
│ └── Shiny lock generations.txt
├── towerRestorer4/
│ ├── App.config
│ ├── Program.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── towerRestorer.csproj
└── web/
├── Default.aspx
├── Default.aspx.cs
├── Default.aspx.designer.cs
├── Global.asax
├── Global.asax.cs
├── Properties/
│ ├── AssemblyInfo.cs
│ └── PublishProfiles/
│ └── Public.pubxml
├── RoomLeaders.aspx
├── RoomLeaders.aspx.cs
├── RoomLeaders.aspx.designer.cs
├── Web.Public.config
├── Web.config
├── admin/
│ ├── AddBoxes.aspx
│ ├── AddBoxes.aspx.cs
│ ├── AddBoxes.aspx.designer.cs
│ ├── AddDressup.aspx
│ ├── AddDressup.aspx.cs
│ ├── AddDressup.aspx.designer.cs
│ ├── AddMusical.aspx
│ ├── AddMusical.aspx.cs
│ ├── AddMusical.aspx.designer.cs
│ ├── Web.Debug.config
│ ├── Web.Release.config
│ └── Web.config
├── battlevideo/
│ ├── Default.aspx
│ ├── Default.aspx.cs
│ └── Default.aspx.designer.cs
├── controls/
│ ├── DnsAddress.ascx
│ ├── DnsAddress.ascx.cs
│ ├── DnsAddress.ascx.designer.cs
│ ├── ForeignLookup.ascx
│ ├── ForeignLookup.ascx.cs
│ ├── ForeignLookup.ascx.designer.cs
│ ├── LabelTextBox.ascx
│ ├── LabelTextBox.ascx.cs
│ ├── LabelTextBox.ascx.designer.cs
│ ├── PokemonPicker.ascx
│ ├── PokemonPicker.ascx.cs
│ ├── PokemonPicker.ascx.designer.cs
│ ├── PokemonSource.ashx
│ └── PokemonSource.ashx.cs
├── css/
│ ├── form.css
│ ├── login.css
│ ├── main.css
│ ├── pkmnstats.css
│ └── types.css
├── gts/
│ ├── Default.aspx
│ ├── Default.aspx.cs
│ ├── Default.aspx.designer.cs
│ ├── Pokemon.aspx
│ ├── Pokemon.aspx.cs
│ └── Pokemon.aspx.designer.cs
├── masters/
│ ├── LeftColumn.master
│ ├── LeftColumn.master.cs
│ ├── LeftColumn.master.designer.cs
│ ├── MasterPage.master
│ ├── MasterPage.master.cs
│ ├── MasterPage.master.designer.cs
│ ├── ThreeColumn.master
│ ├── ThreeColumn.master.cs
│ └── ThreeColumn.master.designer.cs
├── packages.config
├── scripts/
│ ├── form.js
│ └── retina.js
├── src/
│ ├── AppStateHelper.cs
│ ├── Common.cs
│ ├── DependencyNode.cs
│ ├── ForeignLookupSource.cs
│ ├── HeaderColour.cs
│ ├── OnceTemplate.cs
│ ├── RequireCss.cs
│ ├── RequireLinkBase.cs
│ ├── RequireScript.cs
│ ├── RetinaImage.cs
│ ├── RetinaImageBase.cs
│ ├── WebException.cs
│ └── WebFormat.cs
├── test/
│ ├── BoxUp.aspx
│ ├── BoxUp.aspx.cs
│ ├── BoxUp.aspx.designer.cs
│ ├── Decode.aspx
│ ├── Decode.aspx.cs
│ ├── Decode.aspx.designer.cs
│ ├── Gsid.aspx
│ ├── Gsid.aspx.cs
│ ├── Gsid.aspx.designer.cs
│ ├── NameDecode.aspx
│ ├── NameDecode.aspx.cs
│ ├── NameDecode.aspx.designer.cs
│ ├── NameEncode.aspx
│ ├── NameEncode.aspx.cs
│ ├── NameEncode.aspx.designer.cs
│ ├── VideoId.aspx
│ ├── VideoId.aspx.cs
│ ├── VideoId.aspx.designer.cs
│ └── Web.config
└── web.csproj
SYMBOL INDEX (1206 symbols across 173 files)
FILE: GlobalTerminalService/GTServer4.cs
class GTServer4 (line 15) | public class GTServer4 : GTServerBase
method GTServer4 (line 17) | public GTServer4()
method GTServer4 (line 23) | public GTServer4(int threads)
method GTServer4 (line 29) | public GTServer4(int threads, int timeout)
method Initialize (line 35) | private void Initialize()
method ProcessRequest (line 40) | protected override byte[] ProcessRequest(byte[] data, TcpClient c)
method CryptMessage (line 517) | private void CryptMessage(byte[] message)
method GenerateFakeData (line 571) | private static TrainerRankingsLeaderboardEntry[] GenerateFakeData(int ...
method GenerateFakeReport (line 578) | private static TrainerRankingsReport GenerateFakeReport(DateTime start...
type RequestTypes4 (line 589) | internal enum RequestTypes4 : byte
FILE: GlobalTerminalService/GTServer5.cs
class GTServer5 (line 16) | public class GTServer5 : GTServerBase
method GTServer5 (line 18) | public GTServer5()
method GTServer5 (line 24) | public GTServer5(int threads)
method GTServer5 (line 30) | public GTServer5(int threads, int timeout)
method GTServer5 (line 36) | public GTServer5(int threads, int timeout, X509Certificate2 certificate)
method Initialize (line 42) | private void Initialize()
method ProcessRequest (line 47) | protected override byte[] ProcessRequest(byte[] data, TcpClient c)
method Byte6 (line 304) | private byte Byte6(RequestTypes5 type)
type RequestTypes5 (line 330) | internal enum RequestTypes5 : byte
FILE: GlobalTerminalService/GTServerBase.cs
class GTServerBase (line 16) | public abstract class GTServerBase
method GTServerBase (line 18) | public GTServerBase(int port)
method GTServerBase (line 23) | public GTServerBase(int port, bool useSsl)
method GTServerBase (line 28) | public GTServerBase(int port, bool useSsl, int threads)
method GTServerBase (line 36) | public GTServerBase(int port, bool useSsl, int threads, int timeout)
method GTServerBase (line 42) | public GTServerBase(int port, bool useSsl, int threads, int timeout, X...
method GetDefaultCertificate (line 52) | private static X509Certificate2 GetDefaultCertificate()
method BeginPolling (line 95) | public void BeginPolling()
method EndPolling (line 114) | public void EndPolling()
method MainLoop (line 130) | private void MainLoop(object o)
method AcceptClient (line 202) | private TcpClient AcceptClient()
method GetStream (line 211) | private Stream GetStream(TcpClient c)
method ProcessRequest (line 228) | protected abstract byte[] ProcessRequest(byte[] data, TcpClient c);
method WriteLength (line 232) | protected void WriteLength(byte[] message)
FILE: GlobalTerminalService/Program.cs
class Program (line 10) | static class Program
method Main (line 15) | static void Main()
FILE: GlobalTerminalService/ProjectInstaller.Designer.cs
class ProjectInstaller (line 3) | partial class ProjectInstaller
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: GlobalTerminalService/ProjectInstaller.cs
class ProjectInstaller (line 10) | [RunInstaller(true)]
method ProjectInstaller (line 13) | public ProjectInstaller()
FILE: GlobalTerminalService/Service1.Designer.cs
class Service1 (line 3) | partial class Service1
method Dispose (line 14) | protected override void Dispose(bool disposing)
method InitializeComponent (line 29) | private void InitializeComponent()
FILE: GlobalTerminalService/Service1.cs
class Service1 (line 13) | public partial class Service1 : ServiceBase
method Service1 (line 15) | public Service1()
method OnStart (line 26) | protected override void OnStart(string[] args)
method Start (line 31) | public void Start()
method OnStop (line 39) | protected override void OnStop()
FILE: MakeBaseStatTables/Program.cs
class Program (line 15) | class Program
method Main (line 17) | static void Main(string[] args)
FILE: RenameImages/Program.cs
class Program (line 15) | class Program
method Main (line 17) | static void Main(string[] args)
method NormalizeFilename (line 98) | private static string NormalizeFilename(string filename, string path)
FILE: VeekunImport/Program.cs
class Program (line 18) | class Program
method Main (line 22) | static void Main(string[] args)
method GetLocalizedString (line 581) | private static LocalizedString GetLocalizedString(IDataReader reader, ...
method GetDamageClass (line 593) | private static DamageClass GetDamageClass(IDataReader reader)
method ProcessTSV (line 599) | private static bool ProcessTSV(string filename, int requiredFields, Ac...
method VeekunLocationToRegion (line 630) | private static int VeekunLocationToRegion(SQLiteDataReader reader)
class ItemLoading (line 667) | internal class ItemLoading
method ItemLoading (line 669) | public ItemLoading(int id, string name)
method SetGenerationValue (line 685) | public void SetGenerationValue(int ? value, int generation)
class RibbonLoading (line 705) | internal class RibbonLoading
method RibbonLoading (line 707) | public RibbonLoading(int id, string name, string description)
method SetGenerationPosition (line 720) | public void SetGenerationPosition(int? position, int generation)
class TsvRow (line 740) | internal class TsvRow
method TsvRow (line 742) | public TsvRow(int lineNumber, int validLineNumber, string[] fields)
FILE: bvCrawler4/Program.cs
class BvCrawler4 (line 16) | public class BvCrawler4
method Main (line 18) | public static void Main(string[] args)
method FormatVideoId (line 125) | public static String FormatVideoId(ulong videoId)
method GetBattleVideo (line 135) | public static byte[] GetBattleVideo(int pid, ulong videoId)
method RunSearch (line 164) | public static bool RunSearch(int pid)
method QueueTop30 (line 255) | public static void QueueTop30(int pid)
method QueueSearch (line 260) | public static void QueueSearch(int pid, ushort species, SearchMetagame...
method QueueSearchResults (line 326) | public static void QueueSearchResults(byte[] data)
method QueueVideoId (line 356) | public static void QueueVideoId(MySqlConnection db, ulong id)
method DequeueVideo (line 375) | public static ulong DequeueVideo(MySqlConnection db)
method PutLength (line 392) | public static void PutLength(byte[] data)
method Conversation (line 399) | public static byte[] Conversation(byte[] request)
method Encrypt (line 419) | public static void Encrypt(byte[] data, int padOffset)
method Decrypt (line 428) | public static void Decrypt(byte[] data)
method RetryAll (line 434) | public static void RetryAll()
method CreateConnection (line 486) | public static MySqlConnection CreateConnection()
method LogError (line 491) | public static void LogError(Exception ex)
type SearchMetagames (line 497) | public enum SearchMetagames : byte
FILE: bvCrawler5/Program.cs
class BvCrawler5 (line 18) | public class BvCrawler5
method Main (line 20) | public static void Main(string[] args)
method FormatVideoId (line 148) | public static String FormatVideoId(ulong videoId)
method WriteBase64shit (line 158) | public static void WriteBase64shit(Stream s)
method GetBattleVideo (line 198) | public static byte[] GetBattleVideo(int pid, ulong videoId)
method RunSearch (line 227) | public static bool RunSearch(int pid)
method QueueSpecial (line 319) | public static void QueueSpecial(int pid, SearchSpecial special)
method QueueSearch (line 324) | public static void QueueSearch(int pid, SearchSpecial special, ushort ...
method QueueSearchResults (line 397) | public static void QueueSearchResults(byte[] data)
method QueueVideoId (line 424) | public static void QueueVideoId(MySqlConnection db, ulong id)
method DequeueVideo (line 443) | public static ulong DequeueVideo(MySqlConnection db)
method PutLength (line 460) | public static void PutLength(byte[] data)
method Conversation (line 467) | public static byte[] Conversation(byte[] request)
method RetryAll (line 489) | public static void RetryAll()
method CreateConnection (line 541) | public static MySqlConnection CreateConnection()
method LogError (line 546) | public static void LogError(Exception ex)
type SearchSpecial (line 552) | public enum SearchSpecial : uint
type SearchMetagames (line 562) | public enum SearchMetagames : uint
FILE: bvRestorer4/Program.cs
class Program (line 13) | class Program
method Main (line 15) | static void Main(string[] args)
method CryptMessage (line 84) | private static void CryptMessage(byte[] message)
FILE: bvRestorer5/Program.cs
class Program (line 13) | class Program
method Main (line 15) | static void Main(string[] args)
FILE: gts/Global.asax.cs
class Global (line 12) | public class Global : System.Web.HttpApplication
method Application_Start (line 14) | void Application_Start(object sender, EventArgs e)
method Application_End (line 20) | void Application_End(object sender, EventArgs e)
method Application_Error (line 26) | void Application_Error(object sender, EventArgs e)
method Session_Start (line 32) | void Session_Start(object sender, EventArgs e)
method Session_End (line 38) | void Session_End(object sender, EventArgs e)
method Application_BeginRequest (line 47) | void Application_BeginRequest(object sender, EventArgs e)
method Application_EndRequest (line 58) | void Application_EndRequest(object sender, EventArgs e)
method RewriteUrl (line 63) | public static String RewriteUrl(String url, out String pathInfo, out S...
FILE: gts/admin/Sessions.aspx.cs
class Sessions (line 12) | public partial class Sessions : System.Web.UI.Page
method Page_Load (line 14) | protected void Page_Load(object sender, EventArgs e)
FILE: gts/admin/Sessions.aspx.designer.cs
class Sessions (line 13) | public partial class Sessions {
FILE: gts/masters/MasterPage.master.cs
class MasterPage (line 10) | public partial class MasterPage : System.Web.UI.MasterPage
method Page_Load (line 12) | protected void Page_Load(object sender, EventArgs e)
FILE: gts/masters/MasterPage.master.designer.cs
class MasterPage (line 13) | public partial class MasterPage {
FILE: gts/pgl.ashx.cs
class pgl (line 12) | public class pgl : IHttpHandler
method ProcessRequest (line 15) | public void ProcessRequest(HttpContext context)
FILE: gts/pkvldtprod.ashx.cs
class pkvldtprod (line 14) | public class pkvldtprod : IHttpHandler
method ProcessRequest (line 16) | public void ProcessRequest(HttpContext context)
type PartyValidationResult (line 100) | private enum PartyValidationResult : byte
type PokemonValidationResult (line 106) | private enum PokemonValidationResult : int
type RequestType (line 112) | private enum RequestType : short
method Error400 (line 119) | private void Error400(HttpContext context)
class Pokemon5 (line 135) | internal class Pokemon5
method Pokemon5 (line 139) | public Pokemon5(byte[] data)
FILE: gts/pokemondpds.ashx.cs
class pokemondpds (line 19) | public class pokemondpds : GamestatsHandler
method pokemondpds (line 21) | public pokemondpds()
method ProcessGamestatsRequest (line 29) | public override void ProcessGamestatsRequest(byte[] data, MemoryStream...
FILE: gts/pokemondpds_web.ashx.cs
class pokemondpds_web (line 16) | public class pokemondpds_web : GamestatsHandler
method pokemondpds_web (line 18) | public pokemondpds_web()
method ProcessGamestatsRequest (line 25) | public override void ProcessGamestatsRequest(byte[] request, MemoryStr...
FILE: gts/src/AppStateHelper.cs
class AppStateHelper (line 9) | public static class AppStateHelper
method Pokedex (line 17) | public static Pokedex.Pokedex Pokedex(HttpApplicationState application)
method GetTypedApplicationObject (line 22) | public static T GetTypedApplicationObject<T>(HttpApplicationState appl...
FILE: gts/src/BanHelper.cs
class BanHelper (line 11) | public static class BanHelper
method GetBanStatus (line 13) | public static BanStatus GetBanStatus(int pid, string IpAddress, Genera...
FILE: gts/src/FakeOpponentGenerator.cs
class FakeOpponentGenerator (line 14) | public static class FakeOpponentGenerator
method GenerateFakeOpponents (line 24) | public static BattleTowerRecordBase[] GenerateFakeOpponents(FakeOppone...
method GenerateFakeOpponent (line 47) | public static BattleTowerRecordBase GenerateFakeOpponent(FakeOpponentF...
class FakeOpponentFactory (line 643) | public abstract class FakeOpponentFactory
method CreateRecord (line 645) | public abstract BattleTowerRecordBase CreateRecord(Pokedex.Pokedex pok...
method CreatePokemon (line 647) | public abstract BattleTowerPokemonBase CreatePokemon(Pokedex.Pokedex p...
method CreateProfile (line 652) | public abstract BattleTowerProfileBase CreateProfile(string name, Vers...
method CreateTrendyPhrase (line 656) | public abstract TrendyPhraseBase CreateTrendyPhrase(ushort mood, ushor...
class FakeOpponentFactory4 (line 661) | public class FakeOpponentFactory4 : FakeOpponentFactory
method CreateRecord (line 663) | public override BattleTowerRecordBase CreateRecord(Pokedex.Pokedex pok...
method CreatePokemon (line 671) | public override BattleTowerPokemonBase CreatePokemon(Pokedex.Pokedex p...
method CreateProfile (line 689) | public override BattleTowerProfileBase CreateProfile(string name,
method CreateTrendyPhrase (line 702) | public override TrendyPhraseBase CreateTrendyPhrase(ushort mood,
class FakeOpponentFactory5 (line 717) | public class FakeOpponentFactory5 : FakeOpponentFactory
method CreateRecord (line 719) | public override BattleTowerRecordBase CreateRecord(Pokedex.Pokedex pok...
method CreatePokemon (line 727) | public override BattleTowerPokemonBase CreatePokemon(Pokedex.Pokedex p...
method CreateProfile (line 745) | public override BattleTowerProfileBase CreateProfile(string name,
method CreateTrendyPhrase (line 758) | public override TrendyPhraseBase CreateTrendyPhrase(ushort mood, ushor...
FILE: gts/src/IpAddressHelper.cs
class IpAddressHelper (line 9) | public static class IpAddressHelper
method GetIpAddress (line 11) | public static string GetIpAddress(HttpRequest request)
method RemovePort (line 30) | private static string RemovePort(string ip)
method Ipv4ToBinary (line 38) | public static uint Ipv4ToBinary(string ip)
FILE: gts/syachi2ds.ashx.cs
class syachi2ds (line 18) | public class syachi2ds : GamestatsHandler
method syachi2ds (line 20) | public syachi2ds()
method ProcessGamestatsRequest (line 27) | public override void ProcessGamestatsRequest(byte[] request, MemoryStr...
FILE: library/Data/DataMysql.cs
method DataMysql (line 20) | public DataMysql(string connString)
method CreateConnection (line 27) | private MySqlConnection CreateConnection()
method SqlSanitize (line 34) | public static string SqlSanitize(string s)
method SqlSanitize (line 39) | public static string SqlSanitize(string s, string newChar)
method WithTransaction (line 55) | private T WithTransaction<T>(Func<MySqlTransaction, T> command)
method WithTransaction (line 75) | private void WithTransaction(Action<MySqlTransaction> command)
method WithTransaction (line 95) | private T WithTransaction<T>(WithMysqlTransactionDelegate<T> command)
method WithTransactionSuccessful (line 123) | private bool WithTransactionSuccessful(Func<MySqlTransaction, bool> comm...
method GtsDataForUser4 (line 147) | public GtsRecord4 GtsDataForUser4(MySqlTransaction tran, Pokedex.Pokedex...
method GtsDataForUser4 (line 171) | public override GtsRecord4 GtsDataForUser4(Pokedex.Pokedex pokedex, int ...
method GtsGetRecord4 (line 176) | public GtsRecord4 GtsGetRecord4(MySqlTransaction tran, Pokedex.Pokedex p...
method GtsGetRecord4 (line 219) | public override GtsRecord4 GtsGetRecord4(Pokedex.Pokedex pokedex, long t...
method GtsDepositPokemon4 (line 224) | public bool GtsDepositPokemon4(MySqlTransaction tran, GtsRecord4 record)
method GtsDepositPokemon4 (line 257) | public override bool GtsDepositPokemon4(GtsRecord4 record)
method GtsGetDepositId4 (line 265) | public ulong ? GtsGetDepositId4(MySqlTransaction tran, int pid)
method GtsDeletePokemon4 (line 274) | public bool GtsDeletePokemon4(MySqlTransaction tran, int pid)
FILE: library/Data/DataSqlite.cs
class DataSqlite (line 11) | public class DataSqlite// : DataAbstract
method CreateConnection (line 13) | public SQLiteConnection CreateConnection()
method CreateConnection (line 18) | public SQLiteConnection CreateConnection(string filename)
FILE: library/Data/Database.cs
class Database (line 13) | public abstract class Database
method CreateInstance (line 31) | public static Database CreateInstance()
method CreateInstance (line 39) | public static Database CreateInstance(ConnectionStringSettings connStr)
method CreateInstance (line 46) | public static Database CreateInstance(string connStr, string provider)
method DateLerp (line 63) | internal static DateTime DateLerp(DateTime first, DateTime second, dou...
method HypeDecay (line 82) | internal static double HypeDecay(double oldHype, DateTime oldDate, Dat...
method GetActiveHypeDate (line 94) | internal static DateTime GetActiveHypeDate(DateTime now)
method GtsDataForUser4 (line 107) | public abstract GtsRecord4 GtsDataForUser4(Pokedex.Pokedex pokedex, in...
method GtsGetRecord4 (line 108) | public abstract GtsRecord4 GtsGetRecord4(Pokedex.Pokedex pokedex, long...
method GtsDepositPokemon4 (line 110) | public abstract bool GtsDepositPokemon4(GtsRecord4 record);
method GtsDeletePokemon4 (line 112) | public abstract bool GtsDeletePokemon4(int pid);
method GtsLockPokemon4 (line 114) | public abstract bool GtsLockPokemon4(ulong tradeId, int partner_pid);
method GtsCheckLockStatus4 (line 115) | public abstract bool GtsCheckLockStatus4(ulong tradeId, int partner_pid);
method GtsTradePokemon4 (line 117) | public abstract bool GtsTradePokemon4(int pidSrc, int pidDest);
method GtsTradePokemon4 (line 118) | public abstract bool GtsTradePokemon4(GtsRecord4 upload, GtsRecord4 re...
method GtsSearch4 (line 120) | public abstract GtsRecord4[] GtsSearch4(Pokedex.Pokedex pokedex, int p...
method GtsAvailablePokemon4 (line 121) | public abstract int GtsAvailablePokemon4();
method GtsSetLastSearch4 (line 123) | public abstract void GtsSetLastSearch4(int pid);
method GtsGetLastSearch4 (line 124) | public abstract DateTime? GtsGetLastSearch4(int pid);
method BattleTowerUpdateRecord4 (line 128) | public abstract ulong BattleTowerUpdateRecord4(BattleTowerRecord4 reco...
method BattleTowerAddLeader4 (line 129) | public abstract ulong BattleTowerAddLeader4(BattleTowerRecord4 record);
method BattleTowerGetOpponents4 (line 130) | public abstract BattleTowerRecord4[] BattleTowerGetOpponents4(Pokedex....
method BattleTowerGetLeaders4 (line 131) | public abstract BattleTowerProfile4[] BattleTowerGetLeaders4(Pokedex.P...
method PlazaGetProfile (line 135) | public abstract TrainerProfilePlaza PlazaGetProfile(int pid);
method PlazaSetProfile (line 136) | public abstract bool PlazaSetProfile(TrainerProfilePlaza profile);
method GamestatsBumpProfile4 (line 140) | public abstract bool GamestatsBumpProfile4(int pid, string ip_address);
method GamestatsSetProfile4 (line 141) | public abstract bool GamestatsSetProfile4(TrainerProfile4 profile);
method GamestatsGetProfile4 (line 142) | public abstract TrainerProfile4 GamestatsGetProfile4(int pid);
method CheckBanStatus (line 146) | public abstract BanStatus CheckBanStatus(int pid);
method CheckBanStatus (line 147) | public abstract BanStatus CheckBanStatus(byte[] mac_address);
method CheckBanStatus (line 148) | public abstract BanStatus CheckBanStatus(string ip_address);
method CheckBanStatus (line 149) | public abstract BanStatus CheckBanStatus(TrainerProfileBase profile);
method CheckBanStatus (line 150) | public abstract BanStatus CheckBanStatus(uint ip_address);
method AddBan (line 152) | public abstract void AddBan(int pid, BanStatus status);
method AddBan (line 153) | public abstract void AddBan(byte[] mac_address, BanStatus status);
method AddBan (line 154) | public abstract void AddBan(string ip_address, BanStatus status);
method GtsDataForUser5 (line 160) | public abstract GtsRecord5 GtsDataForUser5(Pokedex.Pokedex pokedex, in...
method GtsGetRecord5 (line 161) | public abstract GtsRecord5 GtsGetRecord5(Pokedex.Pokedex pokedex, long...
method GtsDepositPokemon5 (line 163) | public abstract bool GtsDepositPokemon5(GtsRecord5 record);
method GtsDeletePokemon5 (line 165) | public abstract bool GtsDeletePokemon5(int pid);
method GtsLockPokemon5 (line 167) | public abstract bool GtsLockPokemon5(ulong tradeId, int partner_pid);
method GtsCheckLockStatus5 (line 168) | public abstract bool GtsCheckLockStatus5(ulong tradeId, int partner_pid);
method GtsTradePokemon5 (line 170) | public abstract bool GtsTradePokemon5(int pidSrc, int pidDest);
method GtsTradePokemon5 (line 171) | public abstract bool GtsTradePokemon5(GtsRecord5 upload, GtsRecord5 re...
method GtsSearch5 (line 173) | public abstract GtsRecord5[] GtsSearch5(Pokedex.Pokedex pokedex, int p...
method GtsAvailablePokemon5 (line 174) | public abstract int GtsAvailablePokemon5();
method GtsSetLastSearch5 (line 176) | public abstract void GtsSetLastSearch5(int pid);
method GtsGetLastSearch5 (line 177) | public abstract DateTime ? GtsGetLastSearch5(int pid);
method GamestatsSetProfile5 (line 181) | public abstract bool GamestatsSetProfile5(TrainerProfile5 profile);
method GamestatsGetProfile5 (line 182) | public abstract TrainerProfile5 GamestatsGetProfile5(int pid);
method BattleSubwayUpdateRecord5 (line 186) | public abstract ulong BattleSubwayUpdateRecord5(BattleSubwayRecord5 re...
method BattleSubwayAddLeader5 (line 187) | public abstract ulong BattleSubwayAddLeader5(BattleSubwayRecord5 record);
method BattleSubwayGetOpponents5 (line 188) | public abstract BattleSubwayRecord5[] BattleSubwayGetOpponents5(Pokede...
method BattleSubwayGetLeaders5 (line 189) | public abstract BattleSubwayProfile5[] BattleSubwayGetLeaders5(Pokedex...
method DressupUpload4 (line 197) | public abstract ulong DressupUpload4(DressupRecord4 record);
method DressupSearch4 (line 198) | public abstract DressupRecord4[] DressupSearch4(ushort species, int co...
method BoxUpload4 (line 200) | public abstract ulong BoxUpload4(BoxRecord4 record);
method BoxSearch4 (line 201) | public abstract BoxRecord4[] BoxSearch4(BoxLabels4 label, int count);
method BattleVideoUpload4 (line 203) | public abstract ulong BattleVideoUpload4(BattleVideoRecord4 record);
method BattleVideoSearch4 (line 204) | public abstract BattleVideoHeader4[] BattleVideoSearch4(ushort species...
method BattleVideoGet4 (line 205) | public abstract BattleVideoRecord4 BattleVideoGet4(ulong serial, bool ...
method BattleVideoFlagSaved4 (line 206) | public abstract bool BattleVideoFlagSaved4(ulong serial);
method BattleVideoCount4 (line 208) | public abstract ulong BattleVideoCount4();
method TrainerRankingsPerformRollover (line 217) | public abstract bool TrainerRankingsPerformRollover();
method TrainerRankingsGetActiveRecordTypes (line 223) | public abstract IList<TrainerRankingsRecordTypes> TrainerRankingsGetAc...
method TrainerRankingsSubmit (line 229) | public abstract void TrainerRankingsSubmit(TrainerRankingsSubmission s...
method TrainerRankingsGetReport (line 238) | public abstract TrainerRankingsReport[] TrainerRankingsGetReport(DateT...
method TrainerRankingsGetReport (line 246) | public TrainerRankingsReport[] TrainerRankingsGetReport(DateTime start...
method TrainerRankingsGetReport (line 256) | public TrainerRankingsReport TrainerRankingsGetReport(DateTime during)
method TrainerRankingsGetReport (line 265) | public TrainerRankingsReport TrainerRankingsGetReport()
method TrainerRankingsGetPendingReport (line 274) | public abstract TrainerRankingsReport TrainerRankingsGetPendingReport();
method MusicalUpload5 (line 282) | public abstract ulong MusicalUpload5(MusicalRecord5 record);
method MusicalSearch5 (line 283) | public abstract MusicalRecord5[] MusicalSearch5(ushort species, int co...
method BattleVideoUpload5 (line 285) | public abstract ulong BattleVideoUpload5(BattleVideoRecord5 record);
method BattleVideoSearch5 (line 286) | public abstract BattleVideoHeader5[] BattleVideoSearch5(ushort species...
method BattleVideoGet5 (line 287) | public abstract BattleVideoRecord5 BattleVideoGet5(ulong serial, bool ...
method BattleVideoFlagSaved5 (line 288) | public abstract bool BattleVideoFlagSaved5(ulong serial);
method BattleVideoCount5 (line 290) | public abstract ulong BattleVideoCount5();
method PokedexInsertSpecies (line 294) | public abstract void PokedexInsertSpecies(Species s);
method PokedexInsertForm (line 295) | public abstract void PokedexInsertForm(Form f);
method PokedexInsertFormStats (line 296) | public abstract void PokedexInsertFormStats(FormStats f);
method PokedexInsertFormAbilities (line 297) | public abstract void PokedexInsertFormAbilities(FormAbilities f);
method PokedexInsertFamily (line 298) | public abstract void PokedexInsertFamily(Family f);
method PokedexInsertEvolution (line 299) | public abstract void PokedexInsertEvolution(Evolution f);
method PokedexInsertType (line 301) | public abstract void PokedexInsertType(PkmnFoundations.Pokedex.Type t);
method PokedexInsertItem (line 302) | public abstract void PokedexInsertItem(Item i);
method PokedexInsertMove (line 303) | public abstract void PokedexInsertMove(Move m);
method PokedexInsertAbility (line 304) | public abstract void PokedexInsertAbility(Ability a);
method PokedexInsertRibbon (line 305) | public abstract void PokedexInsertRibbon(Ribbon r);
method PokedexInsertRegion (line 307) | public abstract void PokedexInsertRegion(Region r);
method PokedexInsertLocation (line 308) | public abstract void PokedexInsertLocation(Location l);
method PokedexGetAllSpecies (line 313) | public abstract List<Species> PokedexGetAllSpecies(Pokedex.Pokedex pok...
method PokedexGetAllForms (line 314) | public abstract List<Form> PokedexGetAllForms(Pokedex.Pokedex pokedex);
method PokedexGetAllFormStats (line 315) | public abstract List<FormStats> PokedexGetAllFormStats(Pokedex.Pokedex...
method PokedexGetAllFormAbilities (line 316) | public abstract List<FormAbilities> PokedexGetAllFormAbilities(Pokedex...
method PokedexGetAllFamilies (line 317) | public abstract List<Family> PokedexGetAllFamilies(Pokedex.Pokedex pok...
method PokedexGetAllEvolutions (line 318) | public abstract List<Evolution> PokedexGetAllEvolutions(Pokedex.Pokede...
method PokedexGetAllTypes (line 320) | public abstract List<Pokedex.Type> PokedexGetAllTypes(Pokedex.Pokedex ...
method PokedexGetAllItems (line 321) | public abstract List<Item> PokedexGetAllItems(Pokedex.Pokedex pokedex);
method PokedexGetAllMoves (line 322) | public abstract List<Move> PokedexGetAllMoves(Pokedex.Pokedex pokedex);
method PokedexGetAllAbilities (line 323) | public abstract List<Ability> PokedexGetAllAbilities(Pokedex.Pokedex p...
method PokedexGetAllRibbons (line 324) | public abstract List<Ribbon> PokedexGetAllRibbons(Pokedex.Pokedex poke...
method PokedexGetAllRegions (line 326) | public abstract List<Region> PokedexGetAllRegions(Pokedex.Pokedex poke...
method PokedexGetAllLocations (line 327) | public abstract List<Location> PokedexGetAllLocations(Pokedex.Pokedex ...
FILE: library/Data/DatabaseExtender.cs
class DatabaseExtender (line 14) | public static class DatabaseExtender
method ExecuteDataTable (line 21) | public static DataTable ExecuteDataTable(this DbCommand cmd)
method ExecuteDataTable (line 35) | public static DataTable ExecuteDataTable(this DbConnection db, string ...
method ExecuteDataTable (line 49) | public static DataTable ExecuteDataTable(this DbConnection db, string ...
method ExecuteDataTable (line 63) | public static DataTable ExecuteDataTable(this DbTransaction tran, stri...
method ExecuteDataTable (line 77) | public static DataTable ExecuteDataTable(this DbTransaction tran, stri...
method ExecuteReader (line 91) | public static IDataReader ExecuteReader(this DbConnection db, string s...
method ExecuteReader (line 108) | public static IDataReader ExecuteReader(this DbConnection db, string s...
method ExecuteReader (line 119) | public static IDataReader ExecuteReader(this DbTransaction tran, strin...
method ExecuteReader (line 135) | public static IDataReader ExecuteReader(this DbTransaction tran, strin...
method ExecuteScalar (line 146) | public static object ExecuteScalar(this DbConnection db, string sqlstr...
method ExecuteNonQuery (line 160) | public static int ExecuteNonQuery(this DbConnection db, string sqlstr,...
method ExecuteScalar (line 174) | public static object ExecuteScalar(this DbTransaction tran, string sql...
method ExecuteNonQuery (line 189) | public static int ExecuteNonQuery(this DbTransaction tran, string sqls...
method GetStringOrDefault (line 207) | public static string GetStringOrDefault(this IDataReader reader, int c...
method GetStringOrDefault (line 218) | public static string GetStringOrDefault(this IDataReader reader, int c...
method GetStringOrDefault (line 230) | public static string GetStringOrDefault(this IDataReader reader, strin...
method GetStringOrDefault (line 241) | public static string GetStringOrDefault(this IDataReader reader, strin...
method GetBytes (line 246) | public static void GetBytes(this IDataReader reader, string column, lo...
method GetByteArray (line 251) | public static byte[] GetByteArray(this IDataReader reader, int column)
method GetByteArray (line 274) | public static byte[] GetByteArray(this IDataReader reader, int column,...
method GetByteArray (line 281) | public static byte[] GetByteArray(this IDataReader reader, string column)
method GetByteArray (line 286) | public static byte[] GetByteArray(this IDataReader reader, string colu...
method IsDBNull (line 291) | public static bool IsDBNull(this IDataReader reader, string column)
method Cast (line 297) | public static T Cast<T>(object value)
method Collect (line 303) | public static List<T> Collect<T>(this IDataReader reader, Func<IDataRe...
method ExecuteCollection (line 315) | public static List<T> ExecuteCollection<T>(this DbConnection conn, str...
method ExecuteCollection (line 320) | public static List<T> ExecuteCollection<T>(this DbTransaction tran, st...
method ExecuteCollection (line 325) | public static List<T> ExecuteCollection<T>(this DbCommand cmd, Func<ID...
FILE: library/Data/MySqlDatabaseExtender.cs
class MySqlDatabaseExtender (line 10) | public static class MySqlDatabaseExtender
method CloneParameters (line 19) | public static MySqlParameter[] CloneParameters(this IEnumerable<MySqlP...
method CloneParameter (line 34) | public static MySqlParameter CloneParameter(this MySqlParameter param)
method ExecuteProcedure (line 51) | public static object ExecuteProcedure(this MySqlConnection db, string ...
method ExecuteProcedure (line 62) | public static int ExecuteProcedure(this MySqlConnection db, string nam...
method ExecuteProcedure (line 78) | public static object ExecuteProcedure(this MySqlTransaction tran, stri...
method ExecuteProcedure (line 91) | public static int ExecuteProcedure(this MySqlTransaction tran, string ...
method ExecuteProcedureInternal (line 101) | private static object ExecuteProcedureInternal(MySqlCommand cmd, strin...
FILE: library/Data/SqlDatabaseExtender.cs
class SqlDatabaseExtender (line 10) | public static class SqlDatabaseExtender
method CloneParameters (line 19) | public static SqlParameter[] CloneParameters(this IEnumerable<SqlParam...
method ExecuteProcedure (line 43) | public static object ExecuteProcedure(this SqlConnection db, string na...
method ExecuteProcedure (line 54) | public static int ExecuteProcedure(this SqlConnection db, string name,...
method ExecuteProcedure (line 70) | public static object ExecuteProcedure(this SqlTransaction tran, string...
method ExecuteProcedure (line 83) | public static int ExecuteProcedure(this SqlTransaction tran, string na...
method ExecuteProcedureInternal (line 93) | private static object ExecuteProcedureInternal(SqlCommand cmd, string ...
FILE: library/Pokedex/Ability.cs
class Ability (line 10) | public class Ability : PokedexRecordBase
method Ability (line 12) | public Ability(Pokedex pokedex, int value, LocalizedString name)
method Ability (line 20) | public Ability(Pokedex pokedex, IDataReader reader)
method CreatePair (line 32) | public static LazyKeyValuePair<int, Ability> CreatePair(Pokedex pokedex)
FILE: library/Pokedex/Evolution.cs
class Evolution (line 8) | public class Evolution //: PokedexRecordBase
FILE: library/Pokedex/Family.cs
class Family (line 10) | public class Family : PokedexRecordBase
method Family (line 12) | public Family(Pokedex pokedex, int id, int basic_male_id, int basic_fe...
method Family (line 36) | public Family(Pokedex pokedex, IDataReader reader)
method CreatePair (line 104) | public static LazyKeyValuePair<int, Family> CreatePair(Pokedex pokedex)
FILE: library/Pokedex/Form.cs
class Form (line 11) | public class Form : PokedexRecordBase
method Form (line 13) | public Form(Pokedex pokedex, int id, int species_id, byte value,
method Form (line 30) | public Form(Pokedex pokedex, IDataReader reader)
method PrefetchRelations (line 45) | internal override void PrefetchRelations()
method BaseStats (line 72) | public FormStats BaseStats(Generations generation)
method Abilities (line 82) | public FormAbilities Abilities(Generations generation)
method CreatePair (line 89) | public static LazyKeyValuePair<int, Form> CreatePair(Pokedex pokedex)
method CreatePairForSpecies (line 96) | public static LazyKeyValuePair<byte, Form> CreatePairForSpecies(Pokede...
FILE: library/Pokedex/FormAbilities.cs
class FormAbilities (line 12) | public class FormAbilities : PokedexRecordBase
method FormAbilities (line 14) | public FormAbilities(Pokedex pokedex, int form_id, Generations min_gen...
method FormAbilities (line 33) | public FormAbilities(Pokedex pokedex, IDataReader reader)
FILE: library/Pokedex/FormStats.cs
class FormStats (line 11) | public class FormStats : PokedexRecordBase
method FormStats (line 13) | public FormStats(Pokedex pokedex, int form_id, Generations min_generat...
method FormStats (line 33) | public FormStats(Pokedex pokedex, IDataReader reader)
FILE: library/Pokedex/Item.cs
class Item (line 11) | public class Item : PokedexRecordBase
method Item (line 13) | public Item(Pokedex pokedex, int id, int ? value3, int ? value4,
method Item (line 29) | public Item(Pokedex pokedex, IDataReader reader)
method Value (line 52) | public int ? Value(Generations generation)
method CreatePair (line 76) | public static LazyKeyValuePair<int, Item> CreatePair(Pokedex pokedex)
method CreatePairForGeneration (line 83) | public static LazyKeyValuePair<int, Item> CreatePairForGeneration(Poke...
method CreatePairPokeball (line 90) | public static LazyKeyValuePair<int, Item> CreatePairPokeball(Pokedex p...
FILE: library/Pokedex/Location.cs
class Location (line 12) | public class Location : PokedexRecordBase
method Location (line 14) | public Location(Pokedex pokedex, int id, int region_id, int ? value3,
method Location (line 33) | public Location(Pokedex pokedex, IDataReader reader)
method Value (line 71) | public int? Value(Generations generation)
method Value (line 77) | public int ? Value(LocationNumbering numbering)
method GenerationToLocationNumbering (line 101) | public static LocationNumbering GenerationToLocationNumbering(Generati...
method CreatePair (line 122) | public static LazyKeyValuePair<int, Location> CreatePair(Pokedex pokedex)
method CreatePairForGeneration (line 129) | public static LazyKeyValuePair<int, Location> CreatePairForGeneration(...
method CreatePairForLocationNumbering (line 144) | public static LazyKeyValuePair<int, Location> CreatePairForLocationNum...
FILE: library/Pokedex/Move.cs
class Move (line 11) | public class Move : PokedexRecordBase
method Move (line 13) | public Move(Pokedex pokedex, int id, int type_id, LocalizedString name,
method Move (line 33) | public Move(Pokedex pokedex, IDataReader reader)
method CreatePair (line 69) | public static LazyKeyValuePair<int, Move> CreatePair(Pokedex pokedex)
FILE: library/Pokedex/Pokedex.cs
class Pokedex (line 11) | public class Pokedex
method Pokedex (line 13) | public Pokedex(Database db, bool lazy)
method GetAllData (line 22) | private void GetAllData(Database db)
method BuildAdditionalIndexes (line 42) | private void BuildAdditionalIndexes()
method ProcessGenerationalChangeset (line 96) | private Dictionary<int, SortedList<Generations, T>> ProcessGenerationa...
method AddGeneration (line 132) | private void AddGeneration<TGen, TKey, TValue>(Dictionary<TGen, Dictio...
method PrefetchRelations (line 140) | private void PrefetchRelations()
method FormsByValue (line 227) | internal Dictionary<byte, Form> FormsByValue(int national_dex)
method FormStats (line 232) | internal SortedList<Generations, FormStats> FormStats(int form_id)
method FormAbilities (line 237) | internal SortedList<Generations, FormAbilities> FormAbilities(int form...
method ItemsByGeneration (line 250) | public IDictionary<int, Item> ItemsByGeneration(Generations generation)
method RibbonsByGeneration (line 295) | public IDictionary<int, Ribbon> RibbonsByGeneration(Generations genera...
method LocationsByGeneration (line 316) | public IDictionary<int, Location> LocationsByGeneration(LocationNumber...
method SpeciesAtGeneration (line 321) | public static int SpeciesAtGeneration(Generations generation)
FILE: library/Pokedex/PokedexRecordBase.cs
class PokedexRecordBase (line 10) | public class PokedexRecordBase
method PokedexRecordBase (line 12) | internal PokedexRecordBase(Pokedex pokedex)
method PrefetchRelations (line 21) | internal virtual void PrefetchRelations()
method LocalizedStringFromReader (line 27) | public static LocalizedString LocalizedStringFromReader(IDataReader re...
FILE: library/Pokedex/Region.cs
class Region (line 10) | public class Region : PokedexRecordBase
method Region (line 12) | public Region(Pokedex pokedex, int id, LocalizedString name) : base(po...
method Region (line 18) | public Region(Pokedex pokedex, IDataReader reader)
method CreatePair (line 26) | public static LazyKeyValuePair<int, Region> CreatePair(Pokedex pokedex)
FILE: library/Pokedex/Ribbon.cs
class Ribbon (line 11) | public class Ribbon : PokedexRecordBase
method Ribbon (line 13) | public Ribbon(Pokedex pokedex, int id, LocalizedString name,
method Ribbon (line 32) | public Ribbon(Pokedex pokedex, IDataReader reader) :
method Position (line 60) | public int? Position(Generations generation)
method Value (line 79) | public int? Value(Generations generation)
FILE: library/Pokedex/Species.cs
class Species (line 11) | public class Species : PokedexRecordBase
method Species (line 13) | public Species(Pokedex pokedex, int national_dex, int family_id, Local...
method Species (line 34) | public Species(Pokedex pokedex, IDataReader reader)
method PrefetchRelations (line 50) | internal override void PrefetchRelations()
method Forms (line 83) | public Form Forms(byte value)
method CreatePair (line 90) | public static LazyKeyValuePair<int, Species> CreatePair(Pokedex pokedex)
FILE: library/Pokedex/Type.cs
class Type (line 11) | public class Type : PokedexRecordBase
method Type (line 13) | public Type(Pokedex pokedex, int id, LocalizedString name, DamageClass...
method Type (line 21) | public Type(Pokedex pokedex, IDataReader reader)
method CreatePair (line 35) | public static LazyKeyValuePair<int, Type> CreatePair(Pokedex pokedex)
FILE: library/Structures/ByteStatValues.cs
class ByteStatValues (line 8) | public class ByteStatValues : StatValues<byte>
method ByteStatValues (line 10) | public ByteStatValues(byte hp, byte attack, byte defense, byte speed, ...
method ByteStatValues (line 15) | public ByteStatValues(IEnumerable<byte> s) : base(s)
FILE: library/Structures/ContestStatValues.cs
class ConditionValues (line 8) | public class ConditionValues : StatValuesBase<byte>
method ConditionValues (line 10) | public ConditionValues(byte cool, byte beauty, byte cute, byte smart, ...
method ConditionsIndex (line 23) | public static int ConditionsIndex(Conditions condition)
FILE: library/Structures/Enums.cs
type Generations (line 8) | public enum Generations
type GenerationFlags (line 20) | [Flags]
type LocationNumbering (line 33) | public enum LocationNumbering
type Versions (line 45) | public enum Versions : byte
type Languages (line 74) | public enum Languages : byte
type EvolutionTriggers (line 85) | public enum EvolutionTriggers
type TimeOfDay (line 93) | public enum TimeOfDay
type Stats (line 100) | public enum Stats
type StatFlags (line 110) | [Flags]
type Potential (line 122) | public enum Potential
type Conditions (line 130) | public enum Conditions
type DamageClass (line 140) | public enum DamageClass
type GrowthRates (line 148) | public enum GrowthRates
type Genders (line 158) | public enum Genders : byte
type TrainerGenders (line 166) | public enum TrainerGenders : byte
type Markings (line 172) | [Flags]
type EggGroups (line 183) | public enum EggGroups : byte
type BattleTargets (line 203) | public enum BattleTargets : byte
type Natures (line 223) | public enum Natures : uint
type Pokerus (line 232) | public enum Pokerus
type ShinyLeaves (line 239) | [Flags]
FILE: library/Structures/Format.cs
class Format (line 8) | public static class Format
method Markings (line 12) | public static string Markings(Markings markings, string trueFormat, st...
method GenderSymbol (line 28) | public static string GenderSymbol(Genders gender)
method ToIso639_1 (line 41) | public static string ToIso639_1(Languages lang)
method FromIso639_1 (line 64) | public static Languages FromIso639_1(string lang)
FILE: library/Structures/IntStatValues.cs
class IntStatValues (line 8) | public class IntStatValues : StatValues<int>
method IntStatValues (line 10) | public IntStatValues(int hp, int attack, int defense, int speed, int s...
method IntStatValues (line 15) | public IntStatValues(IEnumerable<int> s) : base(s)
FILE: library/Structures/IvStatValues.cs
class IvStatValues (line 8) | public class IvStatValues : ByteStatValues
method IvStatValues (line 10) | public IvStatValues(byte hp, byte attack, byte defense, byte speed, by...
method IvStatValues (line 15) | public IvStatValues(IEnumerable<byte> s) : base(s)
method IvStatValues (line 23) | public IvStatValues(int ivs) : base(new byte[6])
method ToInt32 (line 45) | public int ToInt32()
method UnpackIV (line 57) | public static byte UnpackIV(uint ivs, Stats stat)
method PackIVs (line 63) | public static uint PackIVs(byte HP, byte Attack, byte Defense, byte Sp...
type JudgeSummary (line 115) | public struct JudgeSummary
method JudgeSummary (line 122) | public JudgeSummary(Potential overall_potential, StatFlags best_ivs, P...
FILE: library/Structures/MoveSlot.cs
class MoveSlot (line 10) | public class MoveSlot
method MoveSlot (line 12) | public MoveSlot(Pokedex.Pokedex pokedex, int moveId, byte ppUps, byte ...
method Initialize (line 22) | public void Initialize()
FILE: library/Structures/Pokemon4.cs
class Pokemon4 (line 12) | public class Pokemon4 : PokemonPartyBase
method Pokemon4 (line 14) | public Pokemon4(Pokedex.Pokedex pokedex) : base(pokedex)
method Pokemon4 (line 19) | public Pokemon4(Pokedex.Pokedex pokedex, BinaryReader data) : base(pok...
method Pokemon4 (line 25) | public Pokemon4(Pokedex.Pokedex pokedex, byte[] data) : base(pokedex)
method Pokemon4 (line 31) | public Pokemon4(Pokedex.Pokedex pokedex, byte[] data, int offset) : ba...
method Initialize (line 37) | private void Initialize()
method Load (line 41) | protected override void Load(BinaryReader reader)
method Save (line 175) | protected override void Save(BinaryWriter writer)
method IsPlatHgss (line 297) | private bool IsPlatHgss()
method IsHgss (line 302) | private bool IsHgss()
method IsHgssPokeball (line 307) | private static bool IsHgssPokeball(int pokeballId)
method ValidateActual (line 325) | public static ValidationSummary ValidateActual(PokemonBase thePokemon)
FILE: library/Structures/Pokemon5.cs
class Pokemon5 (line 12) | public class Pokemon5 : PokemonPartyBase
method Pokemon5 (line 14) | public Pokemon5(Pokedex.Pokedex pokedex) : base(pokedex)
method Pokemon5 (line 19) | public Pokemon5(Pokedex.Pokedex pokedex, BinaryReader data) : base(pok...
method Pokemon5 (line 25) | public Pokemon5(Pokedex.Pokedex pokedex, byte[] data) : base(pokedex)
method Pokemon5 (line 31) | public Pokemon5(Pokedex.Pokedex pokedex, byte[] data, int offset)
method Initialize (line 38) | private void Initialize()
method Load (line 42) | protected override void Load(BinaryReader reader)
method Save (line 177) | protected override void Save(BinaryWriter writer)
method IsBw2 (line 298) | private bool IsBw2()
method ValidateActual (line 308) | public static ValidationSummary ValidateActual(PokemonBase thePokemon)
FILE: library/Structures/PokemonBase.cs
class PokemonBase (line 12) | public abstract class PokemonBase : BinarySerializableBase
method PokemonBase (line 14) | public PokemonBase(Pokedex.Pokedex pokedex)
method Initialize (line 21) | private void Initialize()
method ShinyTest (line 151) | public static bool ShinyTest(uint personality, uint trainerId, int tri...
method Validate (line 181) | public virtual ValidationSummary Validate()
method BlockScramble (line 201) | protected static List<int> BlockScramble(uint personality)
method Invert (line 229) | protected static List<int> Invert(List<int> arg)
method ExperienceAt (line 242) | public static int ExperienceAt(int level, GrowthRates gr)
method LevelAt (line 264) | public static byte LevelAt(int experience, GrowthRates gr)
method ExperienceAt_Slow (line 292) | private static int ExperienceAt_Slow(int level)
method ExperienceAt_Medium (line 298) | private static int ExperienceAt_Medium(int level)
method ExperienceAt_Fast (line 304) | private static int ExperienceAt_Fast(int level)
method ExperienceAt_MediumSlow (line 310) | private static int ExperienceAt_MediumSlow(int level)
method ExperienceAt_Erratic (line 317) | private static int ExperienceAt_Erratic(int level)
method ExperienceAt_Fluctuating (line 332) | private static int ExperienceAt_Fluctuating(int level)
type Characteristic (line 346) | public struct Characteristic
method Characteristic (line 351) | public Characteristic(Stats best_iv, byte best_iv_modulo)
method ToString (line 367) | public override string ToString()
FILE: library/Structures/PokemonParty4.cs
class PokemonParty4 (line 9) | public class PokemonParty4 : Pokemon4
method PokemonParty4 (line 11) | public PokemonParty4(Pokedex.Pokedex pokedex) : base(pokedex)
method PokemonParty4 (line 16) | public PokemonParty4(Pokedex.Pokedex pokedex, BinaryReader data) : bas...
method PokemonParty4 (line 22) | public PokemonParty4(Pokedex.Pokedex pokedex, byte[] data) : base(poke...
method PokemonParty4 (line 28) | public PokemonParty4(Pokedex.Pokedex pokedex, byte[] data, int offset)
method Initialize (line 35) | private void Initialize()
method Load (line 39) | protected override void Load(BinaryReader reader)
FILE: library/Structures/PokemonParty5.cs
class PokemonParty5 (line 9) | public class PokemonParty5 : Pokemon5
method PokemonParty5 (line 11) | public PokemonParty5(Pokedex.Pokedex pokedex) : base(pokedex)
method PokemonParty5 (line 16) | public PokemonParty5(Pokedex.Pokedex pokedex, BinaryReader data) : bas...
method PokemonParty5 (line 22) | public PokemonParty5(Pokedex.Pokedex pokedex, byte[] data) : base(poke...
method PokemonParty5 (line 28) | public PokemonParty5(Pokedex.Pokedex pokedex, byte[] data, int offset)
method Initialize (line 35) | private void Initialize()
method Load (line 39) | protected override void Load(BinaryReader reader)
FILE: library/Structures/PokemonPartyBase.cs
class PokemonPartyBase (line 10) | public abstract class PokemonPartyBase : PokemonBase
method PokemonPartyBase (line 12) | public PokemonPartyBase(Pokedex.Pokedex pokedex)
method Initialize (line 18) | private void Initialize()
method ComputeChecksum (line 167) | public static ushort ComputeChecksum(byte[] data)
method ComputeChecksum (line 176) | public static ushort ComputeChecksum(byte[][] data)
method DecryptRNG (line 181) | protected static int DecryptRNG(int prev)
method DecryptBlocks (line 186) | protected static void DecryptBlocks(byte[][] blocks, ushort checksum)
method ShuffleBlocks (line 202) | protected static void ShuffleBlocks(byte[][] blocks, uint personality,...
method HasRibbon (line 218) | public static bool HasRibbon(byte[] ribbons, int value)
method TrainerMemoDateTime (line 226) | protected static DateTime? TrainerMemoDateTime(byte[] data)
FILE: library/Structures/StatValues.cs
class StatValues (line 8) | public class StatValues<T> : StatValuesBase<T> where T : struct
method StatValues (line 10) | public StatValues(T hp, T attack, T defense, T speed, T special_attack...
method StatValues (line 16) | public StatValues(IEnumerable<T> s) : base(s)
method StatsIndex (line 27) | public static int StatsIndex(Stats stat)
method ToString (line 48) | public override string ToString()
FILE: library/Structures/StatValuesBase.cs
class StatValuesBase (line 8) | public abstract class StatValuesBase<T> where T : struct
method StatValuesBase (line 10) | protected StatValuesBase(IEnumerable<T> s)
method StatValuesBase (line 19) | protected StatValuesBase(T s0, T s1, T s2, T s3, T s4, T s5)
method ToArray (line 26) | public T[] ToArray()
FILE: library/Structures/TrainerMemo.cs
class TrainerMemo (line 10) | public class TrainerMemo
method TrainerMemo (line 12) | public TrainerMemo(Pokedex.Pokedex pokedex, LocationNumbering numbering,
method ToString (line 71) | public override String ToString()
method LocationToString (line 87) | private String LocationToString(Location l, int id)
FILE: library/Support/AliasTable.cs
class AliasTable (line 11) | public class AliasTable<Type>
method NewWithWeights (line 13) | public static AliasTable<Type> NewWithWeights(Dictionary<Type, double>...
method Sample (line 80) | public Type Sample()
method AliasTable (line 96) | private AliasTable(Dictionary<Type, Type> table, List<Type> elem, Dict...
FILE: library/Support/AssertHelper.cs
class AssertHelper (line 9) | public class AssertHelper
method Assert (line 11) | public static void Assert(bool condition, String message)
method Assert (line 20) | public static void Assert(bool condition)
method Unreachable (line 25) | public static void Unreachable()
method Equals (line 30) | public static void Equals<T>(T first, T second) where T : IEquatable<T>
FILE: library/Support/BinarySerializableBase.cs
class BinarySerializableBase (line 13) | public abstract class BinarySerializableBase : ISerializable
method BinarySerializableBase (line 17) | public BinarySerializableBase()
method BinarySerializableBase (line 21) | public BinarySerializableBase(SerializationInfo info, StreamingContext...
method GetObjectData (line 27) | public void GetObjectData(SerializationInfo info, StreamingContext con...
method Save (line 32) | protected abstract void Save(BinaryWriter writer);
method Load (line 33) | protected abstract void Load(BinaryReader reader);
method Save (line 43) | public byte[] Save()
method Load (line 50) | public void Load(byte[] data, int offset)
method Load (line 58) | public void Load(byte[] data)
FILE: library/Support/EncodedString4.cs
class EncodedString4 (line 9) | public class EncodedString4 : EncodedStringBase
method EncodedString4 (line 15) | public EncodedString4(byte[] data) : base(data)
method EncodedString4 (line 25) | public EncodedString4(byte[] data, int start, int length) : base(data,...
method EncodedString4 (line 34) | public EncodedString4(string text, int length) : base(text, length)
method DecodeString_impl (line 39) | public static string DecodeString_impl(byte[] data, int start, int count)
method DecodeString_impl (line 60) | public static string DecodeString_impl(byte[] data)
method EncodeString_impl (line 65) | public static byte[] EncodeString_impl(string str, int size)
method DecodeString (line 83) | protected override string DecodeString(byte[] data, int start, int count)
method EncodeString (line 88) | protected override byte[] EncodeString(string str, int size)
method Clone (line 107) | public EncodedString4 Clone()
FILE: library/Support/EncodedString5.cs
class EncodedString5 (line 9) | public class EncodedString5 : EncodedStringBase
method EncodedString5 (line 15) | public EncodedString5(byte[] data) : base(data)
method EncodedString5 (line 25) | public EncodedString5(byte[] data, int start, int length) : base(data,...
method EncodedString5 (line 34) | public EncodedString5(string text, int length) : base(text, length)
method DecodeString_impl (line 39) | public static string DecodeString_impl(byte[] data, int start, int count)
method DecodeString_impl (line 60) | public static string DecodeString_impl(byte[] data)
method EncodeString_impl (line 65) | public static byte[] EncodeString_impl(string str, int size)
method DecodeString (line 83) | protected override string DecodeString(byte[] data, int start, int count)
method EncodeString (line 88) | protected override byte[] EncodeString(string str, int size)
method ToString (line 94) | public override string ToString()
method Clone (line 99) | public EncodedString5 Clone()
FILE: library/Support/EncodedStringBase.cs
class EncodedStringBase (line 8) | public abstract class EncodedStringBase
method EncodedStringBase (line 10) | public EncodedStringBase()
method EncodedStringBase (line 15) | public EncodedStringBase(byte[] data) : this()
method EncodedStringBase (line 26) | public EncodedStringBase(byte[] data, int start, int length)
method EncodedStringBase (line 43) | public EncodedStringBase(string text, int length)
method AssignData (line 93) | protected virtual void AssignData(byte[] data)
method AssignText (line 99) | protected virtual void AssignText(string text)
method DecodeString (line 105) | protected abstract string DecodeString(byte[] data, int start, int cou...
method EncodeString (line 107) | protected abstract byte[] EncodeString(string str, int size);
method ToString (line 109) | public override string ToString()
FILE: library/Support/EnumerableExtender.cs
class EnumerableExtender (line 8) | public static class EnumerableExtender
method OrderByLambda (line 10) | public static IEnumerable<T> OrderByLambda<T>(this IEnumerable<T> arg,...
class LambdaComparer (line 16) | private class LambdaComparer<T> : IComparer<T>
method LambdaComparer (line 18) | public LambdaComparer(Func<T, T, int> comparer)
method Compare (line 25) | public int Compare(T first, T second)
method DrawWithoutReplacement (line 31) | public static IEnumerable<T> DrawWithoutReplacement<T>(this IEnumerabl...
FILE: library/Support/GameSyncUtils.cs
class GameSyncUtils (line 8) | public static class GameSyncUtils
method GameSyncCrc16 (line 10) | private static ushort GameSyncCrc16(int val)
method PidToGsid (line 60) | public static string PidToGsid(int pid)
method GsidToPid (line 65) | public static int GsidToPid(string gsid)
method Base32Encode (line 74) | public static string Base32Encode(long value)
method Base32Decode (line 86) | public static long Base32Decode(string value)
FILE: library/Support/Indexer1d.cs
class Indexer1d (line 11) | public class Indexer1d<TKey, TValue> : IReadOnlyIndexer1d<TKey, TValue>,...
method Indexer1d (line 13) | public Indexer1d(Getter1d<TKey, TValue> getter, Setter1d<TKey, TValue>...
class ReadOnlyIndexer1d (line 35) | public class ReadOnlyIndexer1d<TKey, TValue> : IReadOnlyIndexer1d<TKey, ...
method ReadOnlyIndexer1d (line 37) | public ReadOnlyIndexer1d(Getter1d<TKey, TValue> getter)
type IReadOnlyIndexer1d (line 53) | public interface IReadOnlyIndexer1d<in TKey, out TValue>
type IWriteOnlyIndexer1d (line 58) | public interface IWriteOnlyIndexer1d<in TKey, in TValue>
FILE: library/Support/LazyKeyValuePair.cs
class LazyKeyValuePair (line 8) | public class LazyKeyValuePair<TKey, TValue> : ILazyKeyValuePair<TKey, TV...
method LazyKeyValuePair (line 10) | public LazyKeyValuePair(Func<TKey, TValue> evaluator, Func<TValue, TKe...
method EvaluateKey (line 54) | public void EvaluateKey()
method Evaluate (line 63) | public void Evaluate()
method InvalidateKey (line 75) | public void InvalidateKey()
method Invalidate (line 84) | public void Invalidate()
type ILazyKeyValuePair (line 91) | public interface ILazyKeyValuePair<out TKey, out TValue>
method EvaluateKey (line 95) | void EvaluateKey();
method Evaluate (line 96) | void Evaluate();
FILE: library/Support/LocalizedString.cs
class LocalizedString (line 9) | public class LocalizedString : Dictionary<string, string>
method LocalizedString (line 11) | public LocalizedString()
method ToString (line 16) | public string ToString(string lang)
method ToString (line 42) | public override string ToString()
FILE: library/Support/LogHelper.cs
class LogHelper (line 10) | public static class LogHelper
method LogHelper (line 12) | static LogHelper()
method Write (line 17) | public static void Write(String message, EventLogEntryType type, int e...
method Write (line 48) | public static void Write(String message, EventLogEntryType type)
method Write (line 53) | public static void Write(String message)
method UseStandardOutput (line 58) | public static void UseStandardOutput()
method UseStandardError (line 64) | public static void UseStandardError()
method UseFile (line 70) | public static void UseFile(String filename)
method UseEventLog (line 78) | public static void UseEventLog(EventLog event_log)
type EventLogTypes (line 95) | public enum EventLogTypes
FILE: library/Support/StreamExtender.cs
class StreamExtender (line 9) | public static class StreamExtender
method ReadBlock (line 20) | public static int ReadBlock(this Stream s, byte[] buffer, int offset, ...
method ReadBlock (line 41) | public static int ReadBlock(this BinaryReader r, byte[] buffer, int of...
method CompatibleCopyTo (line 53) | public static void CompatibleCopyTo(this Stream src, Stream dest)
method WriteBytes (line 64) | public static void WriteBytes(this Stream s, byte[] buffer)
FILE: library/Support/StringHelper.cs
class StringHelper (line 9) | public static class StringHelper
method BytesToString (line 11) | public static String BytesToString(byte[] data, Encoding encoding)
method BytesToString (line 18) | public static String BytesToString(byte[] data, int start, int length,...
FILE: library/Support/TrendyPhrase4.cs
class TrendyPhrase4 (line 8) | public class TrendyPhrase4 : TrendyPhraseBase
method TrendyPhrase4 (line 10) | public TrendyPhrase4(byte[] data) : base(data)
method TrendyPhrase4 (line 14) | public TrendyPhrase4(ushort mood, ushort index, ushort word1, ushort w...
method Render (line 19) | public override string Render(string wordFormat)
method RenderPhrase (line 24) | public static string RenderPhrase(byte[] data, string wordFormat)
method RenderWord (line 42) | public static string RenderWord(ushort word)
method Clone (line 58) | public TrendyPhrase4 Clone()
FILE: library/Support/TrendyPhrase5.cs
class TrendyPhrase5 (line 8) | public class TrendyPhrase5 : TrendyPhraseBase
method TrendyPhrase5 (line 10) | public TrendyPhrase5(byte[] data)
method TrendyPhrase5 (line 15) | public TrendyPhrase5(ushort mood, ushort index, ushort word1, ushort w...
method Render (line 20) | public override string Render(string wordFormat)
method RenderPhrase (line 25) | public static string RenderPhrase(byte[] data, string wordFormat)
method RenderWord (line 45) | public static string RenderWord(ushort word)
method Clone (line 66) | public TrendyPhrase5 Clone()
FILE: library/Support/TrendyPhraseBase.cs
class TrendyPhraseBase (line 8) | public abstract class TrendyPhraseBase
method TrendyPhraseBase (line 10) | public TrendyPhraseBase(byte[] data)
method ToString (line 36) | public override string ToString()
method Render (line 41) | public abstract string Render(string wordFormat);
method Pack (line 43) | internal static byte[] Pack(ushort mood, ushort index, ushort word1, u...
FILE: library/Support/ValidationSummary.cs
type ValidationSummary (line 8) | public struct ValidationSummary
FILE: library/Wfc/BanStatus.cs
class BanStatus (line 8) | public class BanStatus
method BanStatus (line 10) | public BanStatus()
method BanStatus (line 15) | public BanStatus(BanLevels level, string reason, DateTime ? expires)
type BanLevels (line 27) | public enum BanLevels
FILE: library/Wfc/BattleSubwayPokemon5.cs
class BattleSubwayPokemon5 (line 11) | public class BattleSubwayPokemon5 : BattleTowerPokemonBase
method BattleSubwayPokemon5 (line 13) | public BattleSubwayPokemon5(Pokedex.Pokedex pokedex) : base(pokedex)
method BattleSubwayPokemon5 (line 17) | public BattleSubwayPokemon5(Pokedex.Pokedex pokedex, int species, byte...
method BattleSubwayPokemon5 (line 44) | public BattleSubwayPokemon5(Pokedex.Pokedex pokedex, int species, byte...
method BattleSubwayPokemon5 (line 53) | public BattleSubwayPokemon5(Pokedex.Pokedex pokedex, BinaryReader data...
method BattleSubwayPokemon5 (line 58) | public BattleSubwayPokemon5(Pokedex.Pokedex pokedex, byte[] data) : ba...
method BattleSubwayPokemon5 (line 63) | public BattleSubwayPokemon5(Pokedex.Pokedex pokedex, byte[] data, int ...
method Save (line 86) | protected override void Save(BinaryWriter writer)
method Load (line 111) | protected override void Load(BinaryReader reader)
method Clone (line 141) | public BattleSubwayPokemon5 Clone()
FILE: library/Wfc/BattleSubwayProfile5.cs
class BattleSubwayProfile5 (line 11) | public class BattleSubwayProfile5 : BattleTowerProfileBase
method BattleSubwayProfile5 (line 13) | public BattleSubwayProfile5()
method BattleSubwayProfile5 (line 18) | public BattleSubwayProfile5(byte[] data)
method BattleSubwayProfile5 (line 23) | public BattleSubwayProfile5(byte[] data, int start)
method BattleSubwayProfile5 (line 28) | public BattleSubwayProfile5(EncodedString5 name, Versions version,
method Save (line 58) | public byte[] Save()
method Load (line 79) | public void Load(byte[] data, int start)
FILE: library/Wfc/BattleSubwayRecord5.cs
class BattleSubwayRecord5 (line 10) | public class BattleSubwayRecord5 : BattleTowerRecordBase
method BattleSubwayRecord5 (line 12) | public BattleSubwayRecord5(Pokedex.Pokedex pokedex)
method BattleSubwayRecord5 (line 17) | public BattleSubwayRecord5(Pokedex.Pokedex pokedex, byte[] data)
method BattleSubwayRecord5 (line 23) | public BattleSubwayRecord5(Pokedex.Pokedex pokedex, byte[] data, int s...
method Save (line 114) | public byte[] Save()
method Load (line 135) | public void Load(byte[] data, int start)
FILE: library/Wfc/BattleTowerPokemon4.cs
class BattleTowerPokemon4 (line 11) | public class BattleTowerPokemon4 : BattleTowerPokemonBase
method BattleTowerPokemon4 (line 13) | public BattleTowerPokemon4(Pokedex.Pokedex pokedex) : base(pokedex)
method BattleTowerPokemon4 (line 17) | public BattleTowerPokemon4(Pokedex.Pokedex pokedex, int species, byte ...
method BattleTowerPokemon4 (line 43) | public BattleTowerPokemon4(Pokedex.Pokedex pokedex, int species, byte ...
method BattleTowerPokemon4 (line 52) | public BattleTowerPokemon4(Pokedex.Pokedex pokedex, BinaryReader data)...
method BattleTowerPokemon4 (line 57) | public BattleTowerPokemon4(Pokedex.Pokedex pokedex, byte[] data) : bas...
method BattleTowerPokemon4 (line 62) | public BattleTowerPokemon4(Pokedex.Pokedex pokedex, byte[] data, int o...
method Save (line 83) | protected override void Save(BinaryWriter writer)
method Load (line 107) | protected override void Load(BinaryReader reader)
method Clone (line 136) | public BattleTowerPokemon4 Clone()
FILE: library/Wfc/BattleTowerPokemonBase.cs
class BattleTowerPokemonBase (line 12) | public abstract class BattleTowerPokemonBase : PokemonBase
method BattleTowerPokemonBase (line 14) | public BattleTowerPokemonBase(Pokedex.Pokedex pokedex) : base(pokedex)
method CombineSpeciesForm (line 38) | protected static ushort CombineSpeciesForm(int species, byte form)
method GetSpeciesFromCombined (line 45) | protected static int GetSpeciesFromCombined(ushort combined)
method GetFormFromCombined (line 50) | protected static byte GetFormFromCombined(ushort combined)
method GetMovesFromArray (line 55) | internal static void GetMovesFromArray(IList<MoveSlot> result, Pokedex...
method MoveFromValues (line 68) | internal static MoveSlot MoveFromValues(Pokedex.Pokedex pokedex, ushor...
method GetArrayFromMoves (line 75) | internal static ushort[] GetArrayFromMoves(IList<MoveSlot> moves)
method GetPpUpsFromMoves (line 87) | internal static byte GetPpUpsFromMoves(IList<MoveSlot> moves)
method GetMoveIds (line 99) | public ushort[] GetMoveIds()
method GetPpUps (line 104) | public byte GetPpUps()
FILE: library/Wfc/BattleTowerProfile4.cs
class BattleTowerProfile4 (line 11) | public class BattleTowerProfile4 : BattleTowerProfileBase
method BattleTowerProfile4 (line 13) | public BattleTowerProfile4()
method BattleTowerProfile4 (line 17) | public BattleTowerProfile4(EncodedString4 name, Versions version,
method BattleTowerProfile4 (line 36) | public BattleTowerProfile4(byte[] data)
method BattleTowerProfile4 (line 41) | public BattleTowerProfile4(byte[] data, int start)
method Save (line 74) | public byte[] Save()
method Load (line 95) | public void Load(byte[] data, int start)
FILE: library/Wfc/BattleTowerProfileBase.cs
class BattleTowerProfileBase (line 8) | public abstract class BattleTowerProfileBase
FILE: library/Wfc/BattleTowerRecord4.cs
class BattleTowerRecord4 (line 10) | public class BattleTowerRecord4 : BattleTowerRecordBase
method BattleTowerRecord4 (line 12) | public BattleTowerRecord4(Pokedex.Pokedex pokedex)
method BattleTowerRecord4 (line 17) | public BattleTowerRecord4(Pokedex.Pokedex pokedex, byte[] data)
method BattleTowerRecord4 (line 23) | public BattleTowerRecord4(Pokedex.Pokedex pokedex, byte[] data, int st...
method Save (line 113) | public byte[] Save()
method Load (line 134) | public void Load(byte[] data, int start)
FILE: library/Wfc/BattleTowerRecordBase.cs
class BattleTowerRecordBase (line 9) | public abstract class BattleTowerRecordBase
FILE: library/Wfc/BattleVideoHeader4.cs
class BattleVideoHeader4 (line 8) | public class BattleVideoHeader4
method BattleVideoHeader4 (line 10) | public BattleVideoHeader4()
method BattleVideoHeader4 (line 14) | public BattleVideoHeader4(int pid, ulong serial_number, byte[] data)
method Clone (line 83) | public BattleVideoHeader4 Clone()
method KeyToSerial (line 147) | public static ulong KeyToSerial(ulong key)
method SerialToKey (line 187) | public static ulong SerialToKey(ulong serial)
method LongToDigits (line 223) | private static byte[] LongToDigits(ulong value)
method DigitsToLong (line 235) | private static ulong DigitsToLong(byte[] digits)
method FormatSerial (line 251) | public static String FormatSerial(ulong serial)
type BattleVideoMetagames4 (line 262) | public enum BattleVideoMetagames4 : byte
type BattleVideoRankings4 (line 314) | public enum BattleVideoRankings4 : uint
FILE: library/Wfc/BattleVideoHeader5.cs
class BattleVideoHeader5 (line 8) | public class BattleVideoHeader5
method BattleVideoHeader5 (line 10) | public BattleVideoHeader5()
method BattleVideoHeader5 (line 14) | public BattleVideoHeader5(int pid, ulong serial_number, byte[] data)
method Clone (line 83) | public BattleVideoHeader5 Clone()
type BattleVideoMetagames5 (line 89) | public enum BattleVideoMetagames5 : byte
type BattleVideoRankings5 (line 132) | public enum BattleVideoRankings5 : uint
FILE: library/Wfc/BattleVideoRecord4.cs
class BattleVideoRecord4 (line 8) | public class BattleVideoRecord4
method BattleVideoRecord4 (line 10) | public BattleVideoRecord4()
method BattleVideoRecord4 (line 14) | public BattleVideoRecord4(int pid, ulong serial_number, byte[] data)
method BattleVideoRecord4 (line 30) | public BattleVideoRecord4(int pid, ulong serial_number, BattleVideoHea...
method Clone (line 45) | public BattleVideoRecord4 Clone()
method Save (line 50) | public byte[] Save()
FILE: library/Wfc/BattleVideoRecord5.cs
class BattleVideoRecord5 (line 8) | public class BattleVideoRecord5
method BattleVideoRecord5 (line 10) | public BattleVideoRecord5()
method BattleVideoRecord5 (line 14) | public BattleVideoRecord5(int pid, ulong serial_number, byte[] data)
method BattleVideoRecord5 (line 30) | public BattleVideoRecord5(int pid, ulong serial_number, BattleVideoHea...
method Clone (line 45) | public BattleVideoRecord5 Clone()
method Save (line 50) | public byte[] Save()
FILE: library/Wfc/BoxRecord4.cs
class BoxRecord4 (line 10) | public class BoxRecord4 : BinarySerializableBase
method BoxRecord4 (line 12) | public BoxRecord4()
method BoxRecord4 (line 16) | public BoxRecord4(int pid, BoxLabels4 label, ulong serial_number, Bina...
method BoxRecord4 (line 25) | public BoxRecord4(int pid, BoxLabels4 label, ulong serial_number, byte...
method BoxRecord4 (line 34) | public BoxRecord4(int pid, BoxLabels4 label, ulong serial_number, byte...
method Load (line 76) | protected override void Load(System.IO.BinaryReader reader)
method Save (line 81) | protected override void Save(System.IO.BinaryWriter writer)
method Clone (line 86) | public BoxRecord4 Clone()
type BoxLabels4 (line 92) | public enum BoxLabels4 : int
FILE: library/Wfc/DressupRecord4.cs
class DressupRecord4 (line 10) | public class DressupRecord4 : BinarySerializableBase
method DressupRecord4 (line 12) | public DressupRecord4()
method DressupRecord4 (line 16) | public DressupRecord4(int pid, ulong serial_number, BinaryReader data)
method DressupRecord4 (line 24) | public DressupRecord4(int pid, ulong serial_number, byte[] data)
method DressupRecord4 (line 32) | public DressupRecord4(int pid, ulong serial_number, byte[] data, int o...
method Load (line 82) | protected override void Load(System.IO.BinaryReader reader)
method Save (line 87) | protected override void Save(System.IO.BinaryWriter writer)
method Clone (line 92) | public DressupRecord4 Clone()
FILE: library/Wfc/GtsRecord4.cs
class GtsRecord4 (line 18) | public class GtsRecord4 : GtsRecordBase, IEquatable<GtsRecord4>
method GtsRecord4 (line 20) | public GtsRecord4(Pokedex.Pokedex pokedex)
method GtsRecord4 (line 26) | public GtsRecord4(Pokedex.Pokedex pokedex, BinaryReader data)
method GtsRecord4 (line 33) | public GtsRecord4(Pokedex.Pokedex pokedex, byte[] data)
method GtsRecord4 (line 40) | public GtsRecord4(Pokedex.Pokedex pokedex, byte[] data, int offset)
method Initialize (line 47) | private void Initialize()
method Save (line 129) | protected override void Save(BinaryWriter writer)
method Load (line 158) | protected override void Load(BinaryReader reader)
method Clone (line 189) | public GtsRecord4 Clone()
method Validate (line 195) | public override bool Validate()
method CanTrade (line 206) | public bool CanTrade(GtsRecord4 other)
method FlagTraded (line 221) | public void FlagTraded(GtsRecord4 other)
method ExtrapolateProfile (line 236) | public override TrainerProfileBase ExtrapolateProfile()
method Equals (line 263) | public override bool Equals(object obj)
method Equals (line 268) | public bool Equals(GtsRecord4 other)
method GetHashCode (line 273) | public override int GetHashCode()
method DateToBinary (line 278) | internal static long DateToBinary(DateTime ? dt)
FILE: library/Wfc/GtsRecord5.cs
class GtsRecord5 (line 18) | public class GtsRecord5 : GtsRecordBase, IEquatable<GtsRecord5>
method GtsRecord5 (line 20) | public GtsRecord5(Pokedex.Pokedex pokedex)
method GtsRecord5 (line 26) | public GtsRecord5(Pokedex.Pokedex pokedex, BinaryReader data)
method GtsRecord5 (line 33) | public GtsRecord5(Pokedex.Pokedex pokedex, byte[] data)
method GtsRecord5 (line 40) | public GtsRecord5(Pokedex.Pokedex pokedex, byte[] data, int offset)
method Initialize (line 47) | private void Initialize()
method Save (line 132) | protected override void Save(BinaryWriter writer)
method Load (line 163) | protected override void Load(BinaryReader reader)
method Clone (line 196) | public GtsRecord5 Clone()
method Validate (line 202) | public override bool Validate()
method CanTrade (line 211) | public bool CanTrade(GtsRecord5 other)
method FlagTraded (line 226) | public void FlagTraded(GtsRecord5 other)
method ExtrapolateProfile (line 241) | public override TrainerProfileBase ExtrapolateProfile()
method Equals (line 268) | public override bool Equals(object obj)
method Equals (line 273) | public bool Equals(GtsRecord5 other)
method GetHashCode (line 278) | public override int GetHashCode()
FILE: library/Wfc/GtsRecordBase.cs
class GtsRecordBase (line 10) | public abstract class GtsRecordBase : BinarySerializableBase
method GtsRecordBase (line 12) | public GtsRecordBase(Pokedex.Pokedex pokedex) : base()
method Validate (line 87) | public virtual bool Validate()
method ExtrapolateProfile (line 123) | public abstract TrainerProfileBase ExtrapolateProfile();
method CheckLevels (line 125) | public static bool CheckLevels(byte min, byte max, byte other)
method DateToTimestamp (line 131) | public static ulong DateToTimestamp(DateTime? date)
method TimestampToDate (line 144) | public static DateTime? TimestampToDate(ulong timestamp)
FILE: library/Wfc/MusicalRecord5.cs
class MusicalRecord5 (line 10) | public class MusicalRecord5 : BinarySerializableBase
method MusicalRecord5 (line 12) | public MusicalRecord5()
method MusicalRecord5 (line 16) | public MusicalRecord5(int pid, ulong serial_number, BinaryReader data)
method MusicalRecord5 (line 24) | public MusicalRecord5(int pid, ulong serial_number, byte[] data)
method MusicalRecord5 (line 32) | public MusicalRecord5(int pid, ulong serial_number, byte[] data, int o...
method UpdateParticipants (line 78) | public void UpdateParticipants()
method Load (line 101) | protected override void Load(System.IO.BinaryReader reader)
method Save (line 107) | protected override void Save(System.IO.BinaryWriter writer)
method Clone (line 112) | public MusicalRecord5 Clone()
class MusicalParticipant5 (line 118) | public class MusicalParticipant5 : BinarySerializableBase
method MusicalParticipant5 (line 120) | public MusicalParticipant5()
method MusicalParticipant5 (line 124) | public MusicalParticipant5(BinaryReader data)
method MusicalParticipant5 (line 130) | public MusicalParticipant5(byte[] data)
method MusicalParticipant5 (line 136) | public MusicalParticipant5(byte[] data, int offset)
method Load (line 179) | protected override void Load(System.IO.BinaryReader reader)
method Save (line 184) | protected override void Save(System.IO.BinaryWriter writer)
method Clone (line 189) | public MusicalParticipant5 Clone()
FILE: library/Wfc/PlazaQuestionnaire.cs
class PlazaQuestionnaire (line 6) | public class PlazaQuestionnaire
method PlazaQuestionnaire (line 13) | public PlazaQuestionnaire(PlazaQuestion currentQuestion, PlazaQuestion...
method Save (line 38) | public byte[] Save()
method Load (line 58) | public static PlazaQuestionnaire Load(byte[] data, int start)
class PlazaQuestion (line 95) | public class PlazaQuestion
method PlazaQuestion (line 137) | public PlazaQuestion(int id, string sentence, string[] answers, byte[]...
method PlazaQuestion (line 147) | private PlazaQuestion(int id, int publicID, string sentence, string[] ...
method Save (line 189) | public byte[] Save()
method Load (line 214) | public static PlazaQuestion Load(byte[] data, int start)
class SubmittedQuestionnaire (line 244) | public class SubmittedQuestionnaire
method SubmittedQuestionnaire (line 254) | public SubmittedQuestionnaire(int id, int publicID, int answerNumber, ...
method Save (line 282) | public byte[] Save()
method Load (line 302) | public static SubmittedQuestionnaire Load(byte[] data, int start)
FILE: library/Wfc/PlazaSchedule.cs
class PlazaSchedule (line 10) | public class PlazaSchedule : BinarySerializableBase
method PlazaSchedule (line 12) | public PlazaSchedule()
method PlazaSchedule (line 16) | public PlazaSchedule(uint duration, int unknown1, PlazaFootprintOption...
method PlazaSchedule (line 27) | public PlazaSchedule(byte[] data)
method Load (line 39) | protected override void Load(BinaryReader reader)
method Save (line 55) | protected override void Save(BinaryWriter writer)
class PlazaScheduleEntry (line 80) | public class PlazaScheduleEntry : BinarySerializableBase
method PlazaScheduleEntry (line 82) | public PlazaScheduleEntry()
method PlazaScheduleEntry (line 86) | public PlazaScheduleEntry(int time, PlazaEventTypes eventType)
method PlazaScheduleEntry (line 92) | public PlazaScheduleEntry(byte[] data)
method Load (line 97) | protected override void Load(BinaryReader reader)
method Save (line 103) | protected override void Save(BinaryWriter writer)
type PlazaFootprintOptions (line 121) | public enum PlazaFootprintOptions : int
type PlazaRoomTypes (line 127) | public enum PlazaRoomTypes : byte
type PlazaSeasons (line 136) | public enum PlazaSeasons : byte
type PlazaEventTypes (line 145) | public enum PlazaEventTypes : int
FILE: library/Wfc/TrainerProfile4.cs
class TrainerProfile4 (line 8) | public class TrainerProfile4 : TrainerProfileBase
method TrainerProfile4 (line 10) | public TrainerProfile4() : base()
method TrainerProfile4 (line 14) | public TrainerProfile4(int pid, byte[] data, string ip_address) : base...
method Clone (line 30) | public TrainerProfile4 Clone()
FILE: library/Wfc/TrainerProfile5.cs
class TrainerProfile5 (line 8) | public class TrainerProfile5 : TrainerProfileBase
method TrainerProfile5 (line 10) | public TrainerProfile5() : base()
method TrainerProfile5 (line 14) | public TrainerProfile5(int pid, byte[] data, string ip_address) : base...
method Clone (line 30) | public TrainerProfile5 Clone()
FILE: library/Wfc/TrainerProfileBase.cs
class TrainerProfileBase (line 10) | public abstract class TrainerProfileBase
method TrainerProfileBase (line 12) | protected TrainerProfileBase()
method TrainerProfileBase (line 17) | protected TrainerProfileBase(int pid, byte[] data, string ip_address)
FILE: library/Wfc/TrainerProfilePlaza.cs
class TrainerProfilePlaza (line 10) | public class TrainerProfilePlaza
method TrainerProfilePlaza (line 12) | public TrainerProfilePlaza()
method TrainerProfilePlaza (line 17) | public TrainerProfilePlaza(int pid, byte[] data)
method Clone (line 98) | public TrainerProfilePlaza Clone()
FILE: library/Wfc/TrainerRankings.cs
class TrainerRankingsReport (line 11) | public class TrainerRankingsReport
method TrainerRankingsReport (line 13) | public TrainerRankingsReport(DateTime start_date, DateTime end_date, T...
method PadResults (line 25) | public void PadResults()
class TrainerRankingsLeaderboardGroup (line 34) | public class TrainerRankingsLeaderboardGroup
method TrainerRankingsLeaderboardGroup (line 36) | public TrainerRankingsLeaderboardGroup(TrainerRankingsRecordTypes reco...
method PadResults (line 51) | public void PadResults(DateTime startDate)
class TrainerRankingsLeaderboard (line 59) | public class TrainerRankingsLeaderboard
method TrainerRankingsLeaderboard (line 61) | public TrainerRankingsLeaderboard(TrainerRankingsTeamCategories team_c...
method PadResults (line 71) | public void PadResults(DateTime startDate, int entryCount, int minTeam...
class TrainerRankingsLeaderboardEntry (line 90) | public class TrainerRankingsLeaderboardEntry
method TrainerRankingsLeaderboardEntry (line 92) | public TrainerRankingsLeaderboardEntry(int team, long score)
type TrainerRankingsRecordTypes (line 102) | public enum TrainerRankingsRecordTypes : int
type TrainerClass (line 199) | public enum TrainerClass : int
type TrainerRankingsTeamCategories (line 221) | public enum TrainerRankingsTeamCategories
class TrainerRankingsSubmission (line 226) | public class TrainerRankingsSubmission : BinarySerializableBase
method TrainerRankingsSubmission (line 228) | public TrainerRankingsSubmission(int pid, Versions version,
method TrainerRankingsSubmission (line 245) | public TrainerRankingsSubmission(int pid, byte[] data, int offset)
method TrainerRankingsSubmission (line 251) | public TrainerRankingsSubmission(int pid, byte[] data)
method TrainerRankingsSubmission (line 257) | public TrainerRankingsSubmission(int pid, BinaryReader reader)
method Load (line 263) | protected override void Load(BinaryReader reader)
method Save (line 301) | protected override void Save(BinaryWriter writer)
class TrainerRankingsSubmissionEntry (line 352) | public class TrainerRankingsSubmissionEntry : BinarySerializableBase
method TrainerRankingsSubmissionEntry (line 354) | public TrainerRankingsSubmissionEntry(TrainerRankingsRecordTypes recor...
method TrainerRankingsSubmissionEntry (line 360) | public TrainerRankingsSubmissionEntry(byte[] data, int offset)
method TrainerRankingsSubmissionEntry (line 365) | public TrainerRankingsSubmissionEntry(byte[] data)
method TrainerRankingsSubmissionEntry (line 370) | public TrainerRankingsSubmissionEntry(BinaryReader reader)
method Load (line 375) | protected override void Load(BinaryReader reader)
method Save (line 381) | protected override void Save(BinaryWriter writer)
FILE: library/Wfc/VipRecord.cs
class VipRecord (line 10) | public class VipRecord : BinarySerializableBase
method VipRecord (line 12) | public VipRecord()
method VipRecord (line 21) | public VipRecord(uint pid)
method VipRecord (line 30) | public VipRecord(uint pid, byte wordA, byte wordB, byte wordC, byte wo...
method VipRecord (line 39) | public VipRecord(byte[] data)
method Load (line 50) | protected override void Load(BinaryReader reader)
method Save (line 59) | protected override void Save(BinaryWriter writer)
FILE: library/database.sql
type `BattleVideoCrawlQueue` (line 18) | CREATE TABLE IF NOT EXISTS `BattleVideoCrawlQueue` (
type `BattleVideoCrawlQueue5` (line 29) | CREATE TABLE IF NOT EXISTS `BattleVideoCrawlQueue5` (
type `BattleVideoSearchHistory` (line 40) | CREATE TABLE IF NOT EXISTS `BattleVideoSearchHistory` (
type `BattleVideoSearchHistory5` (line 52) | CREATE TABLE IF NOT EXISTS `BattleVideoSearchHistory5` (
type `GtsBattleSubway5` (line 65) | CREATE TABLE IF NOT EXISTS `GtsBattleSubway5` (
type `GtsBattleSubwayLeaders5` (line 98) | CREATE TABLE IF NOT EXISTS `GtsBattleSubwayLeaders5` (
type `GtsBattleSubwayPokemon5` (line 123) | CREATE TABLE IF NOT EXISTS `GtsBattleSubwayPokemon5` (
type `GtsBattleTower4` (line 149) | CREATE TABLE IF NOT EXISTS `GtsBattleTower4` (
type `GtsBattleTowerLeaders4` (line 181) | CREATE TABLE IF NOT EXISTS `GtsBattleTowerLeaders4` (
type `GtsBattleTowerPokemon4` (line 206) | CREATE TABLE IF NOT EXISTS `GtsBattleTowerPokemon4` (
type `GtsHistory4` (line 231) | CREATE TABLE IF NOT EXISTS `GtsHistory4` (
type `GtsHistory5` (line 269) | CREATE TABLE IF NOT EXISTS `GtsHistory5` (
type `GtsPokemon4` (line 310) | CREATE TABLE IF NOT EXISTS `GtsPokemon4` (
type `GtsPokemon5` (line 347) | CREATE TABLE IF NOT EXISTS `GtsPokemon5` (
type `GtsProfiles4` (line 387) | CREATE TABLE IF NOT EXISTS `GtsProfiles4` (
type `GtsProfiles5` (line 412) | CREATE TABLE IF NOT EXISTS `GtsProfiles5` (
type `pkmncf_gamestats_bans_ip` (line 437) | CREATE TABLE IF NOT EXISTS `pkmncf_gamestats_bans_ip` (
type `pkmncf_gamestats_bans_ipv4_range` (line 448) | CREATE TABLE IF NOT EXISTS `pkmncf_gamestats_bans_ipv4_range` (
type `pkmncf_gamestats_bans_mac` (line 459) | CREATE TABLE IF NOT EXISTS `pkmncf_gamestats_bans_mac` (
type `pkmncf_gamestats_bans_pid` (line 470) | CREATE TABLE IF NOT EXISTS `pkmncf_gamestats_bans_pid` (
type `pkmncf_gamestats_bans_savefile` (line 481) | CREATE TABLE IF NOT EXISTS `pkmncf_gamestats_bans_savefile` (
type `pkmncf_plaza_profiles` (line 495) | CREATE TABLE IF NOT EXISTS `pkmncf_plaza_profiles` (
type `pkmncf_pokedex_abilities` (line 513) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_abilities` (
type `pkmncf_pokedex_countries` (line 528) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_countries` (
type `pkmncf_pokedex_country_regions` (line 549) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_country_regions` (
type `pkmncf_pokedex_encounters_random` (line 571) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_encounters_random` (
type `pkmncf_pokedex_items` (line 586) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_items` (
type `pkmncf_pokedex_locations` (line 613) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_locations` (
type `pkmncf_pokedex_moves` (line 635) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_moves` (
type `pkmncf_pokedex_pokemon` (line 658) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_pokemon` (
type `pkmncf_pokedex_pokemon_families` (line 683) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_pokemon_families` (
type `pkmncf_pokedex_pokemon_forms` (line 697) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_pokemon_forms` (
type `pkmncf_pokedex_pokemon_form_abilities` (line 720) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_pokemon_form_abilities` (
type `pkmncf_pokedex_pokemon_form_stats` (line 735) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_pokemon_form_stats` (
type `pkmncf_pokedex_regions` (line 761) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_regions` (
type `pkmncf_pokedex_ribbons` (line 776) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_ribbons` (
type `pkmncf_pokedex_rooms` (line 806) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_rooms` (
type `pkmncf_pokedex_types` (line 816) | CREATE TABLE IF NOT EXISTS `pkmncf_pokedex_types` (
type `pkmncf_terminal_trainer_rankings_leaderboards_class` (line 894) | CREATE TABLE IF NOT EXISTS `pkmncf_terminal_trainer_rankings_leaderboard...
type `pkmncf_terminal_trainer_rankings_leaderboards_month` (line 907) | CREATE TABLE IF NOT EXISTS `pkmncf_terminal_trainer_rankings_leaderboard...
type `pkmncf_terminal_trainer_rankings_leaderboards_pokemon` (line 920) | CREATE TABLE IF NOT EXISTS `pkmncf_terminal_trainer_rankings_leaderboard...
type `pkmncf_terminal_trainer_rankings_records` (line 933) | CREATE TABLE IF NOT EXISTS `pkmncf_terminal_trainer_rankings_records` (
type `pkmncf_terminal_trainer_rankings_reports` (line 945) | CREATE TABLE IF NOT EXISTS `pkmncf_terminal_trainer_rankings_reports` (
type `pkmncf_terminal_trainer_rankings_teams` (line 960) | CREATE TABLE IF NOT EXISTS `pkmncf_terminal_trainer_rankings_teams` (
type `pkmncf_web_news` (line 975) | CREATE TABLE IF NOT EXISTS `pkmncf_web_news` (
type `TerminalBattleVideoPokemon4` (line 983) | CREATE TABLE IF NOT EXISTS `TerminalBattleVideoPokemon4` (
type `TerminalBattleVideoPokemon5` (line 995) | CREATE TABLE IF NOT EXISTS `TerminalBattleVideoPokemon5` (
type `TerminalBattleVideos4` (line 1007) | CREATE TABLE IF NOT EXISTS `TerminalBattleVideos4` (
type `TerminalBattleVideos5` (line 1039) | CREATE TABLE IF NOT EXISTS `TerminalBattleVideos5` (
type `TerminalBoxes4` (line 1071) | CREATE TABLE IF NOT EXISTS `TerminalBoxes4` (
type `TerminalDressup4` (line 1088) | CREATE TABLE IF NOT EXISTS `TerminalDressup4` (
type `TerminalMusicalPokemon5` (line 1105) | CREATE TABLE IF NOT EXISTS `TerminalMusicalPokemon5` (
type `TerminalMusicals5` (line 1117) | CREATE TABLE IF NOT EXISTS `TerminalMusicals5` (
FILE: towerRestorer4/Program.cs
class Program (line 14) | class Program
method Main (line 16) | static void Main(string[] args)
FILE: web/Default.aspx.cs
class Default (line 12) | public partial class Default : System.Web.UI.Page
method Page_Load (line 14) | protected void Page_Load(object sender, EventArgs e)
FILE: web/Default.aspx.designer.cs
class Default (line 14) | public partial class Default
FILE: web/Global.asax.cs
class Global (line 11) | public class Global : System.Web.HttpApplication
method Application_Start (line 13) | void Application_Start(object sender, EventArgs e)
method Application_End (line 19) | void Application_End(object sender, EventArgs e)
method Application_Error (line 25) | void Application_Error(object sender, EventArgs e)
method Session_Start (line 31) | void Session_Start(object sender, EventArgs e)
method Session_End (line 37) | void Session_End(object sender, EventArgs e)
method Application_BeginRequest (line 46) | void Application_BeginRequest(object sender, EventArgs e)
method Application_EndRequest (line 57) | void Application_EndRequest(object sender, EventArgs e)
method RewriteUrl (line 62) | public static String RewriteUrl(String url, out String pathInfo, out S...
FILE: web/RoomLeaders.aspx.cs
class RoomLeaders (line 16) | public partial class RoomLeaders : System.Web.UI.Page
method Page_Load (line 18) | protected void Page_Load(object sender, EventArgs e)
method btnGet_Click (line 23) | protected void btnGet_Click(object sender, EventArgs e)
FILE: web/RoomLeaders.aspx.designer.cs
class RoomLeaders (line 13) | public partial class RoomLeaders {
FILE: web/admin/AddBoxes.aspx.cs
class AddBoxes (line 14) | public partial class AddBoxes : System.Web.UI.Page
method Page_Init (line 16) | protected void Page_Init(object sender, EventArgs e)
method Page_Load (line 21) | protected void Page_Load(object sender, EventArgs e)
method btnSend_Click (line 26) | protected void btnSend_Click(object sender, EventArgs e)
method Fail (line 68) | private void Fail()
FILE: web/admin/AddBoxes.aspx.designer.cs
class AddBoxes (line 13) | public partial class AddBoxes {
FILE: web/admin/AddDressup.aspx.cs
class AddDressup (line 15) | public partial class AddDressup : System.Web.UI.Page
method Page_Init (line 17) | protected void Page_Init(object sender, EventArgs e)
method Page_Load (line 22) | protected void Page_Load(object sender, EventArgs e)
method btnSend_Click (line 27) | protected void btnSend_Click(object sender, EventArgs e)
method Fail (line 68) | private void Fail()
FILE: web/admin/AddDressup.aspx.designer.cs
class AddDressup (line 13) | public partial class AddDressup {
FILE: web/admin/AddMusical.aspx.cs
class AddMusical (line 13) | public partial class AddMusical : System.Web.UI.Page
method Page_Init (line 15) | protected void Page_Init(object sender, EventArgs e)
method Page_Load (line 20) | protected void Page_Load(object sender, EventArgs e)
method btnSend_Click (line 25) | protected void btnSend_Click(object sender, EventArgs e)
method Fail (line 65) | private void Fail()
FILE: web/admin/AddMusical.aspx.designer.cs
class AddMusical (line 13) | public partial class AddMusical {
FILE: web/battlevideo/Default.aspx.cs
class BattleVideo (line 13) | public partial class BattleVideo : System.Web.UI.Page
method Page_Load (line 15) | protected void Page_Load(object sender, EventArgs e)
method btnSend4_Click (line 44) | protected void btnSend4_Click(object sender, EventArgs e)
method QueueVideoId4 (line 62) | private void QueueVideoId4(MySqlConnection db, ulong id)
method btnSend5_Click (line 75) | protected void btnSend5_Click(object sender, EventArgs e)
method QueueVideoId5 (line 93) | private void QueueVideoId5(MySqlConnection db, ulong id)
method CreateConnection (line 106) | public static MySqlConnection CreateConnection()
FILE: web/battlevideo/Default.aspx.designer.cs
class BattleVideo (line 13) | public partial class BattleVideo {
FILE: web/controls/DnsAddress.ascx.cs
class DnsAddress (line 10) | public partial class DnsAddress : System.Web.UI.UserControl
method Page_Load (line 12) | protected void Page_Load(object sender, EventArgs e)
FILE: web/controls/DnsAddress.ascx.designer.cs
class DnsAddress (line 14) | public partial class DnsAddress
FILE: web/controls/ForeignLookup.ascx.cs
class ForeignLookup (line 11) | public partial class ForeignLookup : System.Web.UI.UserControl
method Page_Init (line 13) | protected void Page_Init(object sender, EventArgs e)
method Page_Load (line 17) | protected void Page_Load(object sender, EventArgs e)
method LoadViewState (line 98) | protected override void LoadViewState(object savedState)
method SaveViewState (line 108) | protected override object SaveViewState()
type ForeignLookupViewState (line 119) | [Serializable()]
FILE: web/controls/ForeignLookup.ascx.designer.cs
class ForeignLookup (line 13) | public partial class ForeignLookup {
FILE: web/controls/LabelTextBox.ascx.cs
class LabelTextBox (line 10) | public partial class LabelTextBox : System.Web.UI.UserControl
method Page_Load (line 12) | protected void Page_Load(object sender, EventArgs e)
FILE: web/controls/LabelTextBox.ascx.designer.cs
class LabelTextBox (line 13) | public partial class LabelTextBox {
FILE: web/controls/PokemonPicker.ascx.cs
class PokemonPicker (line 11) | public partial class PokemonPicker : System.Web.UI.UserControl
method Page_Load (line 13) | protected void Page_Load(object sender, EventArgs e)
FILE: web/controls/PokemonPicker.ascx.designer.cs
class PokemonPicker (line 13) | public partial class PokemonPicker {
FILE: web/controls/PokemonSource.ashx.cs
class PokemonSource (line 14) | public class PokemonSource : ForeignLookupSource
method GetData (line 16) | protected override System.Data.DataTable GetData(HttpContext context, ...
FILE: web/gts/Default.aspx.cs
class AllPokemon (line 16) | public partial class AllPokemon : System.Web.UI.Page
method Page_Load (line 18) | protected void Page_Load(object sender, EventArgs e)
method FormatLevels (line 48) | private string FormatLevels(byte min, byte max)
method CreateOfferImage (line 72) | protected string CreateOfferImage(object DataItem)
method CreatePokeball (line 87) | protected string CreatePokeball(object DataItem)
method CreatePokerus (line 105) | protected string CreatePokerus(object DataItem)
method CreateLevel (line 126) | protected string CreateLevel(object DataItem)
method CreateGender (line 132) | protected string CreateGender(object DataItem)
method CreateNickname (line 138) | protected string CreateNickname(object DataItem)
method CreateSpecies (line 151) | protected string CreateSpecies(object DataItem)
method CreatePokedex (line 165) | protected string CreatePokedex(object DataItem)
method CreateHeldItem (line 178) | protected string CreateHeldItem(object DataItem)
method CreateNature (line 195) | protected string CreateNature(object DataItem)
method CreateAbility (line 208) | protected string CreateAbility(object DataItem)
method CreateTrainer (line 221) | protected string CreateTrainer(object DataItem)
method CreateWantedSpecies (line 227) | protected string CreateWantedSpecies(object DataItem)
method CreateWantedGender (line 241) | protected string CreateWantedGender(object DataItem)
method CreateWantedLevel (line 247) | protected string CreateWantedLevel(object DataItem)
method CreateDate (line 253) | protected string CreateDate(object DataItem)
method CreateAdminLinks (line 260) | protected string CreateAdminLinks(object DataItem)
FILE: web/gts/Default.aspx.designer.cs
class AllPokemon (line 14) | public partial class AllPokemon
FILE: web/gts/Pokemon.aspx.cs
class Pokemon (line 16) | public partial class Pokemon : System.Web.UI.Page
method Page_Init (line 18) | protected void Page_Init(object sender, EventArgs e)
method Page_Load (line 25) | protected void Page_Load(object sender, EventArgs e)
method Bind (line 91) | private void Bind(GtsRecordBase record)
FILE: web/gts/Pokemon.aspx.designer.cs
class Pokemon (line 14) | public partial class Pokemon
FILE: web/masters/LeftColumn.master.cs
class LeftColumn (line 10) | public partial class LeftColumn : System.Web.UI.MasterPage
method Page_Load (line 12) | protected void Page_Load(object sender, EventArgs e)
FILE: web/masters/LeftColumn.master.designer.cs
class LeftColumn (line 14) | public partial class LeftColumn
FILE: web/masters/MasterPage.master.cs
class MasterPage (line 11) | public partial class MasterPage : System.Web.UI.MasterPage
method Page_Load (line 13) | protected void Page_Load(object sender, EventArgs e)
FILE: web/masters/MasterPage.master.designer.cs
class MasterPage (line 14) | public partial class MasterPage
FILE: web/masters/ThreeColumn.master.cs
class ThreeColumn (line 10) | public partial class ThreeColumn : System.Web.UI.MasterPage
method Page_Load (line 12) | protected void Page_Load(object sender, EventArgs e)
FILE: web/masters/ThreeColumn.master.designer.cs
class ThreeColumn (line 13) | public partial class ThreeColumn {
FILE: web/scripts/form.js
function labelTextBox_Change (line 1) | function labelTextBox_Change()
function pfHandleLookupKeypress (line 16) | function pfHandleLookupKeypress(id_outer, id_value, id_results, count, url)
function pfHandleLookupKeypress3 (line 25) | function pfHandleLookupKeypress3(id_outer, id_value, id_results, count, ...
function pfHandleLookupKeypress2 (line 43) | function pfHandleLookupKeypress2(id_outer, id_value, id_results, count, ...
function pfHandleLookup (line 77) | function pfHandleLookup(id_outer, id_value, id_results, count, url)
function pfShowLookupResults (line 105) | function pfShowLookupResults(id_value, id_results)
function pfReceiveLookupResults (line 119) | function pfReceiveLookupResults(response, status, id_outer, id_value, id...
function pfHideLookupResults (line 138) | function pfHideLookupResults(id)
function pfSelectLookupResult (line 143) | function pfSelectLookupResult(id_main, id_value, value, id_text, text)
function pfLookupResultsVisible (line 152) | function pfLookupResultsVisible(id)
FILE: web/scripts/retina.js
function setPixelRatioCookie (line 1) | function setPixelRatioCookie(scale)
function getPixelRatio (line 9) | function getPixelRatio()
function matchScale (line 21) | function matchScale(scale)
function bisectScale (line 33) | function bisectScale(min, max, tolerance)
function checkRetina (line 42) | function checkRetina(element, scale)
function checkAllRetina (line 97) | function checkAllRetina()
function checkRetinaIn (line 107) | function checkRetinaIn(element)
function handleBeforePrint (line 116) | function handleBeforePrint()
function handleAfterPrint (line 122) | function handleAfterPrint()
function handlePrintListener (line 128) | function handlePrintListener(mql)
FILE: web/src/AppStateHelper.cs
class AppStateHelper (line 9) | public static class AppStateHelper
method Pokedex (line 11) | public static Pokedex.Pokedex Pokedex(HttpApplicationState application)
method GetTypedApplicationObject (line 16) | public static T GetTypedApplicationObject<T>(HttpApplicationState appl...
FILE: web/src/Common.cs
class Common (line 12) | public static class Common
method HtmlEncode (line 14) | public static string HtmlEncode(string s)
method JsEncode (line 19) | public static String JsEncode(String s)
method NeedsJsEscape (line 51) | private static bool NeedsJsEscape(char c)
method FormatReturns (line 65) | public static string FormatReturns(string text, string ending)
method CryptMessage (line 76) | public static void CryptMessage(byte[] message)
method ResolveUrl (line 94) | public static String ResolveUrl(String url)
method GetExtension (line 110) | public static String GetExtension(String filename)
method GetExtension (line 117) | public static String GetExtension(String filename, out String namepart)
method CreateConnection (line 129) | public static MySqlConnection CreateConnection()
FILE: web/src/DependencyNode.cs
class DependencyNode (line 9) | internal class DependencyNode<TKey, TValue>
method DependencyNode (line 11) | public DependencyNode()
method DependencyNode (line 16) | public DependencyNode(TKey key, TValue value)
method DependencyNode (line 23) | public DependencyNode(TKey key, TValue value, HashSet<TKey> dependencies)
method Clone (line 33) | public DependencyNode<TKey, TValue> Clone()
class DependencyGraph (line 39) | internal class DependencyGraph<TKey, TValue>
method DependencyGraph (line 41) | public DependencyGraph()
method DependencyGraph (line 46) | public DependencyGraph(List<DependencyNode<TKey, TValue>> graph)
method Resolve (line 54) | public List<TValue> Resolve()
class CircularDependencyException (line 113) | public class CircularDependencyException : Exception
method CircularDependencyException (line 116) | public CircularDependencyException(String message) : base(message)
FILE: web/src/ForeignLookupSource.cs
class ForeignLookupSource (line 16) | public class ForeignLookupSource : IHttpHandler, System.Web.SessionState...
method ForeignLookupSource (line 18) | public ForeignLookupSource()
method ProcessRequest (line 25) | public void ProcessRequest(HttpContext context)
method ServerError (line 110) | private void ServerError(HttpContext context)
method EmptyResult (line 117) | private void EmptyResult(HttpContext context, string format)
method WriteHtml (line 135) | private void WriteHtml(HttpContext context, DataTable data, string con...
method WriteJson (line 190) | private void WriteJson(HttpContext context, DataTable data)
method GetData (line 206) | protected virtual DataTable GetData(HttpContext context, string query,...
class ForeignLookupResult (line 212) | internal class ForeignLookupResult
FILE: web/src/HeaderColour.cs
class HeaderColour (line 8) | public class HeaderColour : System.Web.UI.Control
method HeaderColour (line 10) | public HeaderColour()
method HeaderColour_PreRender (line 16) | private void HeaderColour_PreRender(object sender, EventArgs e)
method SetHeaderCssClass (line 21) | private void SetHeaderCssClass(System.Web.UI.MasterPage master)
method LoadViewState (line 35) | protected override void LoadViewState(object savedState)
method SaveViewState (line 44) | protected override object SaveViewState()
type HeaderColourViewState (line 56) | [Serializable()]
FILE: web/src/OnceTemplate.cs
class OnceTemplate (line 11) | public class OnceTemplate : System.Web.UI.WebControls.PlaceHolder
method OnceTemplate (line 13) | public OnceTemplate() : base()
method Render (line 35) | protected override void Render(System.Web.UI.HtmlTextWriter writer)
FILE: web/src/RequireCss.cs
class RequireCss (line 8) | public class RequireCss : RequireLinkBase
method RequireCss (line 10) | public RequireCss() : base()
method RenderHeader (line 15) | public override void RenderHeader(System.Web.UI.HtmlTextWriter writer)
FILE: web/src/RequireLinkBase.cs
class RequireLinkBase (line 10) | public abstract class RequireLinkBase : System.Web.UI.Control
method RequireLinkBase (line 12) | protected RequireLinkBase()
method RequireLinkBase_Init (line 20) | void RequireLinkBase_Init(object sender, EventArgs e)
method RequireLinkBase_Load (line 26) | void RequireLinkBase_Load(object sender, EventArgs e)
method RequireLinkBase_PreRender (line 30) | void RequireLinkBase_PreRender(object sender, EventArgs e)
method Page_PreRender (line 40) | void Page_PreRender(object sender, EventArgs e)
method RenderHeader (line 53) | public abstract void RenderHeader(System.Web.UI.HtmlTextWriter writer);
method GetDependencyGraph (line 59) | private DependencyGraph<String, RequireLinkBase> GetDependencyGraph()
method ParseDependencies (line 80) | private HashSet<String> ParseDependencies(String dependencies)
class RequireLinkRenderer (line 87) | internal class RequireLinkRenderer : System.Web.UI.Control
method RequireLinkRenderer (line 89) | public RequireLinkRenderer(DependencyGraph<String, RequireLinkBase> gr...
method Render (line 97) | protected override void Render(System.Web.UI.HtmlTextWriter writer)
FILE: web/src/RequireScript.cs
class RequireScript (line 8) | public class RequireScript : RequireLinkBase
method RequireScript (line 10) | public RequireScript() : base()
method RenderHeader (line 15) | public override void RenderHeader(System.Web.UI.HtmlTextWriter writer)
FILE: web/src/RetinaImage.cs
class RetinaImage (line 9) | public class RetinaImage : RetinaImageBase
method RetinaImage (line 14) | public RetinaImage()
method ScaledImageName (line 23) | public static String ScaledImageName(String filename, String format, f...
method GetScales (line 43) | protected override List<ImageRendition> GetScales()
method LoadViewState (line 65) | protected override void LoadViewState(object savedState)
method SaveViewState (line 73) | protected override object SaveViewState()
type RetinaImageViewState (line 116) | [Serializable()]
FILE: web/src/RetinaImageBase.cs
class RetinaImageBase (line 14) | public abstract class RetinaImageBase : System.Web.UI.WebControls.Image
method RetinaImageBase (line 16) | public RetinaImageBase() : base()
method AddAttributesToRender (line 23) | protected override void AddAttributesToRender(System.Web.UI.HtmlTextWr...
method WriteDataAttributes (line 29) | private void WriteDataAttributes(HtmlTextWriter writer)
method AttributeName (line 39) | public static String AttributeName(float scale)
method getDevicePixelRatio (line 44) | public static float getDevicePixelRatio(Page page)
method RetinaImageBase_PreRender (line 52) | public void RetinaImageBase_PreRender(object sender, EventArgs e)
method GetScales (line 70) | protected abstract List<ImageRendition> GetScales();
method UpdateCssClass (line 114) | private void UpdateCssClass()
method LoadViewState (line 120) | protected override void LoadViewState(object savedState)
method SaveViewState (line 130) | protected override object SaveViewState()
type ImageRendition (line 140) | protected struct ImageRendition : IComparable<ImageRendition>
method ImageRendition (line 145) | public ImageRendition(String image_url, float scale)
method CompareTo (line 151) | public int CompareTo(ImageRendition other)
type RetinaImageBaseViewState (line 157) | [Serializable()]
FILE: web/src/WebException.cs
class WebException (line 8) | public class WebException : Exception
method WebException (line 10) | public WebException(String message, int responseCode) : base(message)
method WebException (line 15) | public WebException(String message) : this(message, 500)
method WebException (line 20) | public WebException(int responseCode) : this(DefaultMessage(responseCo...
method WebException (line 25) | public WebException() : this(500)
method DefaultMessage (line 32) | public static String DefaultMessage(int responseCode)
FILE: web/src/WebFormat.cs
class WebFormat (line 11) | public static class WebFormat
method Markings (line 13) | public static String Markings(Markings markings)
method Gender (line 18) | public static String Gender(Genders gender)
method RenderProgress (line 31) | public static String RenderProgress(int curr, int max)
method RenderType (line 37) | public static String RenderType(Pokedex.Type type)
method PokemonImageLarge (line 42) | public static String PokemonImageLarge(PokemonPartyBase pokemon)
method PokemonImageSmall (line 48) | public static String PokemonImageSmall(PokemonPartyBase pokemon)
method SpeciesImageLarge (line 55) | public static String SpeciesImageLarge(Form f)
method SpeciesImageLarge (line 60) | public static String SpeciesImageLarge(Species s)
method SpeciesImageSmall (line 65) | public static String SpeciesImageSmall(Form f)
method SpeciesImageSmall (line 72) | public static String SpeciesImageSmall(Species s)
method PokemonImage2 (line 77) | private static String PokemonImage2(PokemonPartyBase pokemon)
method PokemonImage2 (line 82) | private static String PokemonImage2(Form f, Genders g)
method ItemImage (line 98) | public static String ItemImage(Item item)
FILE: web/test/BoxUp.aspx.cs
class BoxUp (line 13) | public partial class BoxUp : System.Web.UI.Page
method Page_Init (line 15) | protected void Page_Init(object sender, EventArgs e)
method Page_Load (line 20) | protected void Page_Load(object sender, EventArgs e)
method btnSend_Click (line 27) | protected void btnSend_Click(object sender, EventArgs e)
method RenderHex (line 50) | private string RenderHex(string hex)
method RenderCArray (line 67) | private string RenderCArray(string hex)
method CryptMessage (line 83) | private void CryptMessage(byte[] message)
FILE: web/test/BoxUp.aspx.designer.cs
class BoxUp (line 14) | public partial class BoxUp
FILE: web/test/Decode.aspx.cs
class Decode (line 13) | public partial class Decode : System.Web.UI.Page
method Page_Load (line 15) | protected void Page_Load(object sender, EventArgs e)
method btnDecode_Click (line 21) | protected void btnDecode_Click(object sender, EventArgs e)
method DecryptData (line 113) | public static byte[] DecryptData(String data)
method RenderHex (line 125) | private String RenderHex(String hex)
FILE: web/test/Decode.aspx.designer.cs
class Decode (line 13) | public partial class Decode {
FILE: web/test/Gsid.aspx.cs
class Gsid (line 12) | public partial class Gsid : System.Web.UI.Page
method Page_Load (line 14) | protected void Page_Load(object sender, EventArgs e)
FILE: web/test/Gsid.aspx.designer.cs
class Gsid (line 14) | public partial class Gsid
FILE: web/test/NameDecode.aspx.cs
class NameDecode (line 13) | public partial class NameDecode : System.Web.UI.Page
method Page_Load (line 15) | protected void Page_Load(object sender, EventArgs e)
method btnSubmit_Click (line 20) | protected void btnSubmit_Click(object sender, EventArgs e)
FILE: web/test/NameDecode.aspx.designer.cs
class NameDecode (line 13) | public partial class NameDecode {
FILE: web/test/NameEncode.aspx.cs
class NameEncode (line 11) | public partial class NameEncode : System.Web.UI.Page
method Page_Load (line 13) | protected void Page_Load(object sender, EventArgs e)
method btnSubmit_Click (line 18) | protected void btnSubmit_Click(object sender, EventArgs e)
FILE: web/test/NameEncode.aspx.designer.cs
class NameEncode (line 13) | public partial class NameEncode {
FILE: web/test/VideoId.aspx.cs
class VideoId (line 12) | public partial class VideoId : System.Web.UI.Page
method Page_Load (line 14) | protected void Page_Load(object sender, EventArgs e)
method btnToSerial_Click (line 19) | protected void btnToSerial_Click(object sender, EventArgs e)
method btnToVideo_Click (line 25) | protected void btnToVideo_Click(object sender, EventArgs e)
FILE: web/test/VideoId.aspx.designer.cs
class VideoId (line 13) | public partial class VideoId {
Condensed preview — 314 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,775K chars).
[
{
"path": ".gitignore",
"chars": 133,
"preview": "[Tt]humbs.db\r\n*.suo\r\n*.csproj.user\r\n*.pubxml.user\r\n[Dd]ebug/\r\n[Rr]elease/\r\n[Bb]in/\r\n[Pp]ackages/\r\n.DS_Store\r\n._.DS_Store"
},
{
"path": ".gitmodules",
"chars": 113,
"preview": "[submodule \"GamestatsBase\"]\n\tpath = GamestatsBase\n\turl = git@github.com:mm201/GamestatsBase.git\n\tbranch = master\n"
},
{
"path": "GlobalTerminalService/GTServer4.cs",
"chars": 28595,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing PkmnFounda"
},
{
"path": "GlobalTerminalService/GTServer5.cs",
"chars": 14802,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoundations.Support;\nus"
},
{
"path": "GlobalTerminalService/GTServerBase.cs",
"chars": 8860,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.IO;\r\nusing Syste"
},
{
"path": "GlobalTerminalService/GlobalTerminalService.csproj",
"chars": 3874,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "GlobalTerminalService/Program.cs",
"chars": 723,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.ServiceProcess;\r\nusing System.Text;\r"
},
{
"path": "GlobalTerminalService/ProjectInstaller.Designer.cs",
"chars": 2299,
"preview": "namespace PkmnFoundations.GlobalTerminalService\n{\n partial class ProjectInstaller\n {\n /// <summary>\n "
},
{
"path": "GlobalTerminalService/ProjectInstaller.cs",
"chars": 421,
"preview": "using System;\nusing System.Collections;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Con"
},
{
"path": "GlobalTerminalService/ProjectInstaller.resx",
"chars": 6286,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "GlobalTerminalService/Properties/AssemblyInfo.cs",
"chars": 1451,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "GlobalTerminalService/Service1.Designer.cs",
"chars": 1139,
"preview": "namespace PkmnFoundations.GlobalTerminalService\r\n{\r\n partial class Service1\r\n {\r\n /// <summary> \r\n "
},
{
"path": "GlobalTerminalService/Service1.cs",
"chars": 1319,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\nusing System.Diagno"
},
{
"path": "GlobalTerminalService/Service1.resx",
"chars": 5874,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "GlobalTerminalService/app.config",
"chars": 690,
"preview": "<?xml version=\"1.0\"?>\n\n<configuration>\n \n <startup>\n <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4"
},
{
"path": "LICENSE.md",
"chars": 1358,
"preview": "Copyright © 2014-2023 Megan Edwards (mm201), all rights reserved\n\nYou may:\n* Run a private instance for development purp"
},
{
"path": "MakeBaseStatTables/MakeBaseStatTables.csproj",
"chars": 4383,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "MakeBaseStatTables/Program.cs",
"chars": 8676,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data.SQLite;\nusing System.IO;\nusing System.Linq;\nusing Sys"
},
{
"path": "MakeBaseStatTables/Properties/AssemblyInfo.cs",
"chars": 1409,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
},
{
"path": "MakeBaseStatTables/app.config",
"chars": 1607,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n <configSections>\n \n <section name=\"entityFramework\" type"
},
{
"path": "MakeBaseStatTables/packages.config",
"chars": 315,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"System.Data.SQLite\" version=\"1.0.94.1\" targetFramework"
},
{
"path": "README.md",
"chars": 2994,
"preview": "# Poké Classic Framework\r\n\r\nhttps://pkmnclassic.net/\r\n\r\nPoké Classic Framework is a replacement server and class library"
},
{
"path": "RenameImages/App.config",
"chars": 450,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<configuration>\n <connectionStrings>\n <add name=\"pkmnFoundationsConnectionS"
},
{
"path": "RenameImages/Program.cs",
"chars": 3928,
"preview": "using PkmnFoundations.Data;\nusing PkmnFoundations.Pokedex;\nusing System;\nusing System.Collections.Generic;\nusing System"
},
{
"path": "RenameImages/Properties/AssemblyInfo.cs",
"chars": 1392,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
},
{
"path": "RenameImages/RenameImages.csproj",
"chars": 2456,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
},
{
"path": "Roadmap.md",
"chars": 2721,
"preview": "# Roadmap\n\nThis is a complete list of all the features I want the PCN server to have for me to consider it complete.\n\n##"
},
{
"path": "VeekunImport/Program.cs",
"chars": 40495,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Configuration;\nusing"
},
{
"path": "VeekunImport/Properties/AssemblyInfo.cs",
"chars": 1397,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
},
{
"path": "VeekunImport/VeekunImport.csproj",
"chars": 8163,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "VeekunImport/app.config",
"chars": 1906,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n <configSections>\n \n <section name=\"entityFramework\" type"
},
{
"path": "VeekunImport/countries4.txt",
"chars": 2090,
"preview": "1\tAF\tAfghanistan\n2\tAL\tAlbania\n3\tDZ\tAlgeria\n6\tAO\tAngola\n8\tAG\tAntigua and Barbuda\n9\tAR\tArgentina\n12\tAU\tAustralia\n13\tAT\tAu"
},
{
"path": "VeekunImport/countries5.txt",
"chars": 2043,
"preview": "1\tAF\tAfghanistan\n2\tAL\tAlbania\n3\tDZ\tAlgeria\n6\tAO\tAngola\n8\tAG\tAntigua and Barbuda\n9\tAR\tArgentina\n12\tAU\tAustralia\n13\tAT\tAu"
},
{
"path": "VeekunImport/families.txt",
"chars": 486,
"preview": "010\t172\t172\t000\t000\t0000\t4\n012\t029\t032\t000\t000\t0000\t4\n013\t173\t173\t000\t000\t0000\t6\n015\t174\t174\t000\t000\t0000\t6\n046\t236\t236"
},
{
"path": "VeekunImport/families_map.txt",
"chars": 2883,
"preview": "001\t002\t003\n004\t005\t006\n007\t008\t009\n010\t011\t012\n013\t014\t015\n016\t017\t018\n019\t020\n021\t022\n023\t024\n025\t026\t172\n027\t028\n029\t"
},
{
"path": "VeekunImport/form_abilities3.txt",
"chars": 7542,
"preview": "00001\t065\t000\t000\n00002\t065\t000\t000\n00003\t065\t000\t000\n00004\t066\t000\t000\n00005\t066\t000\t000\n00006\t066\t000\t000\n00007\t067\t00"
},
{
"path": "VeekunImport/form_abilities4.txt",
"chars": 4104,
"preview": "00016\t051\t077\t000\n00017\t051\t077\t000\n00018\t051\t077\t000\n00029\t038\t079\t000\n00030\t038\t079\t000\n00031\t038\t079\t000\n00032\t038\t07"
},
{
"path": "VeekunImport/form_abilities5.txt",
"chars": 13194,
"preview": "00001\t065\t000\t034\n00002\t065\t000\t034\n00003\t065\t000\t034\n00004\t066\t000\t094\n00005\t066\t000\t094\n00006\t066\t000\t094\n00007\t067\t00"
},
{
"path": "VeekunImport/form_abilities6.txt",
"chars": 3654,
"preview": "00039\t056\t172\t132\n00040\t056\t172\t119\n00145\t046\t000\t009\n00174\t056\t172\t132\n00311\t057\t000\t031\n00312\t058\t000\t010\n00349\t033\t01"
},
{
"path": "VeekunImport/form_stats1.txt",
"chars": 7248,
"preview": "00001\t12\t04\t045\t049\t049\t045\t065\t065\t0\t0\t0\t0\t1\t0\n00002\t12\t04\t060\t062\t063\t060\t080\t080\t0\t0\t0\t0\t1\t1\n00003\t12\t04\t080\t082\t083\t"
},
{
"path": "VeekunImport/form_stats2.txt",
"chars": 11328,
"preview": "00004\t10\t00\t039\t052\t043\t065\t060\t050\t0\t0\t0\t1\t0\t0\n00005\t10\t00\t058\t064\t058\t080\t080\t065\t0\t0\t0\t1\t1\t0\n00006\t10\t03\t078\t084\t078\t"
},
{
"path": "VeekunImport/form_stats3.txt",
"chars": 6864,
"preview": "00252\t12\t00\t040\t045\t035\t070\t065\t055\t0\t0\t0\t1\t0\t0\n00253\t12\t00\t050\t065\t045\t095\t085\t065\t0\t0\t0\t2\t0\t0\n00254\t12\t00\t070\t085\t065\t"
},
{
"path": "VeekunImport/form_stats4.txt",
"chars": 6672,
"preview": "00387\t12\t00\t055\t068\t064\t031\t045\t055\t0\t1\t0\t0\t0\t0\n00388\t12\t00\t075\t089\t085\t036\t055\t065\t0\t1\t1\t0\t0\t0\n00389\t12\t05\t095\t109\t105\t"
},
{
"path": "VeekunImport/form_stats5.txt",
"chars": 8640,
"preview": "00494\t14\t10\t100\t100\t100\t100\t100\t100\t3\t0\t0\t0\t0\t0\n00495\t12\t00\t045\t045\t055\t063\t045\t055\t0\t0\t0\t1\t0\t0\n00496\t12\t00\t060\t060\t075\t"
},
{
"path": "VeekunImport/form_stats6.txt",
"chars": 10944,
"preview": "00012\t07\t03\t060\t045\t050\t070\t090\t080\t0\t0\t0\t0\t2\t1\n00015\t07\t04\t065\t090\t040\t075\t045\t080\t0\t2\t0\t0\t0\t1\n00018\t01\t03\t083\t080\t075\t"
},
{
"path": "VeekunImport/form_values.txt",
"chars": 797,
"preview": "201\t201\t0\n201\t10001\t1\n201\t10002\t2\n201\t10003\t3\n201\t10004\t4\n201\t10005\t5\n201\t10006\t6\n201\t10007\t7\n201\t10008\t8\n201\t10009\t9\n2"
},
{
"path": "VeekunImport/items3.txt",
"chars": 5735,
"preview": "1\tMaster Ball\t3001\n2\tUltra Ball\t3002\n3\tGreat Ball\t3003\n4\tPoké Ball\t3004\n5\tSafari Ball\t3005\n6\tNet Ball\t3006\n7\tDive Ball\t3"
},
{
"path": "VeekunImport/items4.txt",
"chars": 9717,
"preview": "1\tMaster Ball\t3001\n2\tUltra Ball\t3002\n3\tGreat Ball\t3003\n4\tPoké Ball\t3004\n5\tSafari Ball\t3005\n6\tNet Ball\t3006\n7\tDive Ball\t"
},
{
"path": "VeekunImport/items5.txt",
"chars": 11860,
"preview": "1\tMaster Ball\t3001\n2\tUltra Ball\t3002\n3\tGreat Ball\t3003\n4\tPoké Ball\t3004\n5\tSafari Ball\t3005\n6\tNet Ball\t3006\n7\tDive Ball\t3"
},
{
"path": "VeekunImport/items_balls.txt",
"chars": 484,
"preview": "1\tMaster Ball\t3001\n2\tUltra Ball\t3002\n3\tGreat Ball\t3003\n4\tPoké Ball\t3004\n5\tSafari Ball\t3005\n6\tNet Ball\t3006\n7\tDive Ball\t"
},
{
"path": "VeekunImport/packages.config",
"chars": 341,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"Stub.System.Data.SQLite.Core.NetFramework\" version=\"1."
},
{
"path": "VeekunImport/regions.txt",
"chars": 80,
"preview": "1\tEvent\n2\tKanto\n3\tJohto\n4\tHoenn\n5\tOrre\n6\tSevii Islands\n7\tSinnoh\n8\tUnova\n9\tKalos"
},
{
"path": "VeekunImport/ribbon_positions3.txt",
"chars": 119,
"preview": "3021\t15\t;Champion Ribbon\n3022\t16\t;Winning Ribbon\n3023\t17\t;Victory Ribbon\n3024\t18\t;Artist Ribbon\n3025\t19\t;Effort Ribbon"
},
{
"path": "VeekunImport/ribbon_positions4.txt",
"chars": 2288,
"preview": "3001\t0\t;Hoenn Cool Ribbon\n3002\t1\t;Hoenn Cool Ribbon Super\n3003\t2\t;Hoenn Cool Ribbon Hyper\n3004\t3\t;Hoenn Cool Ribbon Mas"
},
{
"path": "VeekunImport/ribbon_positions5.txt",
"chars": 2338,
"preview": "3001\t0\t;Hoenn Cool Ribbon\n3002\t1\t;Hoenn Cool Ribbon Super\n3003\t2\t;Hoenn Cool Ribbon Hyper\n3004\t3\t;Hoenn Cool Ribbon Mas"
},
{
"path": "VeekunImport/ribbons.txt",
"chars": 6607,
"preview": "3001\tCool Ribbon\tHoenn Cool Contest Normal Rank winner!\n3002\tCool Ribbon Super\tHoenn Cool Contest Super Rank winner!\n30"
},
{
"path": "bvCrawler4/App.config",
"chars": 963,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n <connectionStrings>\r\n <add name=\"pkmnFoundationsConnectio"
},
{
"path": "bvCrawler4/Program.cs",
"chars": 21000,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.IO;\r\nusing Syste"
},
{
"path": "bvCrawler4/Properties/AssemblyInfo.cs",
"chars": 1429,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "bvCrawler4/bvCrawler4.csproj",
"chars": 3205,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "bvCrawler4/packages.config",
"chars": 132,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"MySql.Data\" version=\"6.9.8\" targetFramework=\"net40\" />"
},
{
"path": "bvCrawler5/App.config",
"chars": 963,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n <connectionStrings>\r\n <add name=\"pkmnFoundationsConnectio"
},
{
"path": "bvCrawler5/Program.cs",
"chars": 25558,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.IO;\r\nusing Syste"
},
{
"path": "bvCrawler5/Properties/AssemblyInfo.cs",
"chars": 1429,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "bvCrawler5/bvCrawler5.csproj",
"chars": 3086,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "bvCrawler5/packages.config",
"chars": 132,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"MySql.Data\" version=\"6.9.8\" targetFramework=\"net40\" />"
},
{
"path": "bvRestorer4/App.config",
"chars": 403,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n <connectionStrings>\n <add name=\"pkmnFoundationsConnectionStr"
},
{
"path": "bvRestorer4/Program.cs",
"chars": 3154,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\nusing PkmnFounda"
},
{
"path": "bvRestorer4/Properties/AssemblyInfo.cs",
"chars": 1395,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
},
{
"path": "bvRestorer4/bvRestorer4.csproj",
"chars": 2709,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microso"
},
{
"path": "bvRestorer5/App.config",
"chars": 423,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n <startup> \n \n <supportedRuntime version=\"v2.0.50727"
},
{
"path": "bvRestorer5/Program.cs",
"chars": 2493,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing PkmnFounda"
},
{
"path": "bvRestorer5/Properties/AssemblyInfo.cs",
"chars": 1395,
"preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
},
{
"path": "bvRestorer5/bvRestorer5.csproj",
"chars": 2738,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "gts/Global.asax",
"chars": 101,
"preview": "<%@ Application Codebehind=\"Global.asax.cs\" Inherits=\"PkmnFoundations.GTS.Global\" Language=\"C#\" %>\r\n"
},
{
"path": "gts/Global.asax.cs",
"chars": 3836,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web;\r\nusing System.Web.Security;\r\nus"
},
{
"path": "gts/Properties/AssemblyInfo.cs",
"chars": 1374,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "gts/Properties/PublishProfiles/Local IIS.pubxml",
"chars": 687,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\nhttps://go.microsoft.com/fwlink/?LinkID=208121. \n-->\n<Project ToolsVersion="
},
{
"path": "gts/Properties/PublishProfiles/Public.pubxml",
"chars": 1108,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\nThis file is used by the publish/package process of your Web project. You ca"
},
{
"path": "gts/Web.Public.config",
"chars": 537,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<configuration xmlns:xdt=\"http://schemas.microsoft.com/XML-Document-Transform\">\n"
},
{
"path": "gts/Web.config",
"chars": 1361,
"preview": "<?xml version=\"1.0\"?>\r\n\r\n<!--\r\n For more information on how to configure your ASP.NET application, please visit\r\n htt"
},
{
"path": "gts/admin/Sessions.aspx",
"chars": 403,
"preview": "<%@ Page Title=\"\" Language=\"C#\" MasterPageFile=\"~/masters/MasterPage.master\" AutoEventWireup=\"true\" CodeBehind=\"Session"
},
{
"path": "gts/admin/Sessions.aspx.cs",
"chars": 1468,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Web;\nusing System.We"
},
{
"path": "gts/admin/Sessions.aspx.designer.cs",
"chars": 770,
"preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n// This code w"
},
{
"path": "gts/admin/Web.Debug.config",
"chars": 1361,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- For more information on using web.config transformation visit http://go.mic"
},
{
"path": "gts/admin/Web.Release.config",
"chars": 1364,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- For more information on using web.config transformation visit http://go.mic"
},
{
"path": "gts/admin/Web.config",
"chars": 129,
"preview": "<?xml version=\"1.0\"?>\n<configuration>\n <system.web>\n <authorization>\n\n </authorization>\n </system.web>\n</config"
},
{
"path": "gts/gts.csproj",
"chars": 8382,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "gts/masters/MasterPage.master",
"chars": 387,
"preview": "<%@ Master Language=\"C#\" AutoEventWireup=\"true\" CodeBehind=\"MasterPage.master.cs\" Inherits=\"PkmnFoundations.GTS.masters"
},
{
"path": "gts/masters/MasterPage.master.cs",
"chars": 339,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Web;\nusing System.Web.UI;\nusing System."
},
{
"path": "gts/masters/MasterPage.master.designer.cs",
"chars": 1106,
"preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n// This code w"
},
{
"path": "gts/pgl.ashx",
"chars": 90,
"preview": "<%@ WebHandler Language=\"C#\" CodeBehind=\"pgl.ashx.cs\" Class=\"PkmnFoundations.GTS.pgl\" %>\n"
},
{
"path": "gts/pgl.ashx.cs",
"chars": 4582,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Web;\nusing PkmnFoundations.Support;\n\nna"
},
{
"path": "gts/pkvldtprod.ashx",
"chars": 104,
"preview": "<%@ WebHandler Language=\"C#\" CodeBehind=\"pkvldtprod.ashx.cs\" Class=\"PkmnFoundations.GTS.pkvldtprod\" %>\n"
},
{
"path": "gts/pkvldtprod.ashx.cs",
"chars": 5708,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Web;\nusing System.IO;\nusing PkmnFoundat"
},
{
"path": "gts/pokemondpds.ashx",
"chars": 107,
"preview": "<%@ WebHandler Language=\"C#\" CodeBehind=\"pokemondpds.ashx.cs\" Class=\"PkmnFoundations.GTS.pokemondpds\" %>\r\n"
},
{
"path": "gts/pokemondpds.ashx.cs",
"chars": 33902,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web;\r\nusing System.Web.SessionState;"
},
{
"path": "gts/pokemondpds_web.ashx",
"chars": 114,
"preview": "<%@ WebHandler Language=\"C#\" CodeBehind=\"pokemondpds_web.ashx.cs\" Class=\"PkmnFoundations.GTS.pokemondpds_web\" %>\n"
},
{
"path": "gts/pokemondpds_web.ashx.cs",
"chars": 15544,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Web;\nusing GamestatsBa"
},
{
"path": "gts/src/AppStateHelper.cs",
"chars": 1098,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Web;\nusing PkmnFoundations.Data;\n\nnames"
},
{
"path": "gts/src/BanHelper.cs",
"chars": 2457,
"preview": "using PkmnFoundations.Data;\nusing PkmnFoundations.Structures;\nusing PkmnFoundations.Wfc;\nusing System;\nusing System.Col"
},
{
"path": "gts/src/FakeOpponentGenerator.cs",
"chars": 35468,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Web;\nusing PkmnFoundations.Structures;\n"
},
{
"path": "gts/src/IpAddressHelper.cs",
"chars": 1788,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Configuration;\nusing System.Linq;\nusing System.Web;\n\nnames"
},
{
"path": "gts/syachi2ds.ashx",
"chars": 103,
"preview": "<%@ WebHandler Language=\"C#\" CodeBehind=\"syachi2ds.ashx.cs\" Class=\"PkmnFoundations.GTS.syachi2ds\" %>\r\n"
},
{
"path": "gts/syachi2ds.ashx.cs",
"chars": 27742,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web;\r\nusing System.Web.SessionState;"
},
{
"path": "library/Data/DataMysql.cs",
"chars": 202037,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Data;\r\nusing MyS"
},
{
"path": "library/Data/DataSqlite.cs",
"chars": 690,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Data;\r\nusing Sys"
},
{
"path": "library/Data/Database.cs",
"chars": 14955,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Data;\nusing PkmnFoun"
},
{
"path": "library/Data/DatabaseExtender.cs",
"chars": 14031,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web;\r\nusing System.Data;\r\nusing Syst"
},
{
"path": "library/Data/MySqlDatabaseExtender.cs",
"chars": 4800,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\nusing System.Text;\nusing MySql.Da"
},
{
"path": "library/Data/SqlDatabaseExtender.cs",
"chars": 4516,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Data.SqlClient;\nusing System.Linq;\nusin"
},
{
"path": "library/Library.csproj",
"chars": 8341,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "library/Pokedex/Ability.cs",
"chars": 1087,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoun"
},
{
"path": "library/Pokedex/Evolution.cs",
"chars": 187,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Pokede"
},
{
"path": "library/Pokedex/Family.cs",
"chars": 3579,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoun"
},
{
"path": "library/Pokedex/Form.cs",
"chars": 3766,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoun"
},
{
"path": "library/Pokedex/FormAbilities.cs",
"chars": 3617,
"preview": "using PkmnFoundations.Data;\nusing PkmnFoundations.Structures;\nusing PkmnFoundations.Support;\nusing System;\nusing System"
},
{
"path": "library/Pokedex/FormStats.cs",
"chars": 3228,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoun"
},
{
"path": "library/Pokedex/Item.cs",
"chars": 3667,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoun"
},
{
"path": "library/Pokedex/Location.cs",
"chars": 6146,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoun"
},
{
"path": "library/Pokedex/Move.cs",
"chars": 2500,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoun"
},
{
"path": "library/Pokedex/Pokedex.cs",
"chars": 13379,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoundations.Data;\nusing"
},
{
"path": "library/Pokedex/PokedexRecordBase.cs",
"chars": 1485,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoun"
},
{
"path": "library/Pokedex/Region.cs",
"chars": 952,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoun"
},
{
"path": "library/Pokedex/Ribbon.cs",
"chars": 3805,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoun"
},
{
"path": "library/Pokedex/Species.cs",
"chars": 3770,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoun"
},
{
"path": "library/Pokedex/Type.cs",
"chars": 1472,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoun"
},
{
"path": "library/Properties/AssemblyInfo.cs",
"chars": 1441,
"preview": "using System.Reflection;\r\nusing System.Runtime.CompilerServices;\r\nusing System.Runtime.InteropServices;\r\n\r\n// General I"
},
{
"path": "library/Structures/ByteStatValues.cs",
"chars": 495,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Struct"
},
{
"path": "library/Structures/ContestStatValues.cs",
"chars": 1478,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Struct"
},
{
"path": "library/Structures/Enums.cs",
"chars": 5004,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\n\r\nnamespace PkmnFoundations.S"
},
{
"path": "library/Structures/Format.cs",
"chars": 2634,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Struct"
},
{
"path": "library/Structures/IntStatValues.cs",
"chars": 484,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Struct"
},
{
"path": "library/Structures/IvStatValues.cs",
"chars": 4053,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Struct"
},
{
"path": "library/Structures/MoveSlot.cs",
"chars": 1310,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoundations.Pokedex;\nus"
},
{
"path": "library/Structures/Pokemon4.cs",
"chars": 16422,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing PkmnFounda"
},
{
"path": "library/Structures/Pokemon5.cs",
"chars": 16174,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing PkmnFounda"
},
{
"path": "library/Structures/PokemonBase.cs",
"chars": 12844,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.IO;\nusing System.Lin"
},
{
"path": "library/Structures/PokemonParty4.cs",
"chars": 3167,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnF"
},
{
"path": "library/Structures/PokemonParty5.cs",
"chars": 3189,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnF"
},
{
"path": "library/Structures/PokemonPartyBase.cs",
"chars": 7258,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoundations.Pokedex;\nus"
},
{
"path": "library/Structures/StatValues.cs",
"chars": 1727,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Struct"
},
{
"path": "library/Structures/StatValuesBase.cs",
"chars": 916,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Struct"
},
{
"path": "library/Structures/TrainerMemo.cs",
"chars": 3459,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoundations.Pokedex;\nus"
},
{
"path": "library/Support/AliasTable.cs",
"chars": 3005,
"preview": "using System;\nusing System.Collections.Generic;\n\nnamespace PkmnFoundations.Support\n{\n /// <summary>\n /// Vose's imple"
},
{
"path": "library/Support/AssertHelper.cs",
"chars": 933,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\nusing System.IO;\r\n\r\nna"
},
{
"path": "library/Support/BinarySerializableBase.cs",
"chars": 1864,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.Serialization;"
},
{
"path": "library/Support/EncodedString4.cs",
"chars": 71378,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.IO;\r\n\r\nnamespace"
},
{
"path": "library/Support/EncodedString5.cs",
"chars": 4685,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.IO;\r\n\r\nnamespace"
},
{
"path": "library/Support/EncodedStringBase.cs",
"chars": 3676,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Suppor"
},
{
"path": "library/Support/EnumerableExtender.cs",
"chars": 1262,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Suppor"
},
{
"path": "library/Support/GameSyncUtils.cs",
"chars": 3858,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Suppor"
},
{
"path": "library/Support/Indexer1d.cs",
"chars": 1663,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Text;\n\nnamespace PkmnFoundations.Support\n{\n /// <summar"
},
{
"path": "library/Support/LazyKeyValuePair.cs",
"chars": 2489,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Suppor"
},
{
"path": "library/Support/LocalizedString.cs",
"chars": 920,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\n\nnamespac"
},
{
"path": "library/Support/LogHelper.cs",
"chars": 2992,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing Sys"
},
{
"path": "library/Support/StreamExtender.cs",
"chars": 2584,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\n\nnamespace PkmnF"
},
{
"path": "library/Support/StringHelper.cs",
"chars": 723,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.IO;\n\nnamespace PkmnF"
},
{
"path": "library/Support/TrendyPhrase4.cs",
"chars": 32307,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Suppor"
},
{
"path": "library/Support/TrendyPhrase5.cs",
"chars": 40601,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Suppor"
},
{
"path": "library/Support/TrendyPhraseBase.cs",
"chars": 2477,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Suppor"
},
{
"path": "library/Support/ValidationSummary.cs",
"chars": 370,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Suppor"
},
{
"path": "library/Wfc/BanStatus.cs",
"chars": 666,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Wfc\n{\n"
},
{
"path": "library/Wfc/BattleSubwayPokemon5.cs",
"chars": 6191,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing PkmnFounda"
},
{
"path": "library/Wfc/BattleSubwayProfile5.cs",
"chars": 3047,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing PkmnFounda"
},
{
"path": "library/Wfc/BattleSubwayRecord5.cs",
"chars": 4521,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing PkmnFounda"
},
{
"path": "library/Wfc/BattleTowerPokemon4.cs",
"chars": 5963,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing PkmnFounda"
},
{
"path": "library/Wfc/BattleTowerPokemonBase.cs",
"chars": 3214,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing PkmnFounda"
},
{
"path": "library/Wfc/BattleTowerProfile4.cs",
"chars": 3452,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing PkmnFounda"
},
{
"path": "library/Wfc/BattleTowerProfileBase.cs",
"chars": 257,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Wfc\n{\n"
},
{
"path": "library/Wfc/BattleTowerRecord4.cs",
"chars": 4490,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing PkmnFounda"
},
{
"path": "library/Wfc/BattleTowerRecordBase.cs",
"chars": 636,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoundations.Support;\n\nn"
},
{
"path": "library/Wfc/BattleVideoHeader4.cs",
"chars": 10448,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Wfc\n{\n"
},
{
"path": "library/Wfc/BattleVideoHeader5.cs",
"chars": 3563,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Wfc\n{\n"
},
{
"path": "library/Wfc/BattleVideoRecord4.cs",
"chars": 1693,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Wfc\n{\n"
},
{
"path": "library/Wfc/BattleVideoRecord5.cs",
"chars": 1693,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace PkmnFoundations.Wfc\n{\n"
},
{
"path": "library/Wfc/BoxRecord4.cs",
"chars": 2383,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing PkmnFounda"
},
{
"path": "library/Wfc/DressupRecord4.cs",
"chars": 2330,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing PkmnFounda"
},
{
"path": "library/Wfc/GtsRecord4.cs",
"chars": 10525,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.Serializatio"
},
{
"path": "library/Wfc/GtsRecord5.cs",
"chars": 10681,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Runtime.Serializatio"
},
{
"path": "library/Wfc/GtsRecordBase.cs",
"chars": 5148,
"preview": "using PkmnFoundations.Support;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nus"
},
{
"path": "library/Wfc/MusicalRecord5.cs",
"chars": 4719,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing PkmnFounda"
},
{
"path": "library/Wfc/PlazaQuestionnaire.cs",
"chars": 10475,
"preview": "using System;\nusing System.IO;\n\nnamespace PkmnFoundations.Wfc\n{\n public class PlazaQuestionnaire\n {\n publi"
},
{
"path": "library/Wfc/PlazaSchedule.cs",
"chars": 3808,
"preview": "using PkmnFoundations.Support;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusin"
},
{
"path": "library/Wfc/TrainerProfile4.cs",
"chars": 776,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing PkmnFoundations.Support;\n\nnamespace PkmnFounda"
},
{
"path": "library/Wfc/TrainerProfile5.cs",
"chars": 776,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing PkmnFoundations.Support;\n\nnamespace PkmnFounda"
},
{
"path": "library/Wfc/TrainerProfileBase.cs",
"chars": 3198,
"preview": "using PkmnFoundations.Structures;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nu"
},
{
"path": "library/Wfc/TrainerProfilePlaza.cs",
"chars": 2093,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing PkmnFoundations.Structures;"
},
{
"path": "library/Wfc/TrainerRankings.cs",
"chars": 14508,
"preview": "using PkmnFoundations.Structures;\nusing PkmnFoundations.Support;\nusing System;\nusing System.Collections.Generic;\nusing "
},
{
"path": "library/Wfc/VipRecord.cs",
"chars": 1996,
"preview": "using PkmnFoundations.Support;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing"
},
{
"path": "library/app.config",
"chars": 702,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n <system.data>\n <DbProviderFactories>\n <add name=\"SQLit"
},
{
"path": "library/database.sql",
"chars": 44169,
"preview": "-- --------------------------------------------------------\n-- Host: 127.0.0.1\n-- Server version"
},
{
"path": "library/lib/SQLite.Designer.xml",
"chars": 17118,
"preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n <assembly>\r\n <name>SQLite.Designer</name>\r\n </assembly>\r\n <members>\r\n "
},
{
"path": "library/lib/System.Data.SQLite.Linq.xml",
"chars": 113915,
"preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n <assembly>\r\n <name>System.Data.SQLite.Linq</name>\r\n </assembly>\r\n <member"
},
{
"path": "library/lib/System.Data.SQLite.dll.config",
"chars": 4843,
"preview": "<?xml version=\"1.0\"?>\r\n<!--\r\n *\r\n * System.Data.SQLite.dll.config -\r\n *\r\n * Written by Joe Mistachkin.\r\n * Released to t"
},
{
"path": "library/lib/System.Data.SQLite.xml",
"chars": 683655,
"preview": "<?xml version=\"1.0\"?>\r\n<doc>\r\n <assembly>\r\n <name>System.Data.SQLite</name>\r\n </assembly>\r\n <members>\r\n "
},
{
"path": "library/packages.config",
"chars": 385,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"MySql.Data\" version=\"6.9.8\" targetFramework=\"net35\" />"
},
{
"path": "pkmn-classic-framework.sln",
"chars": 14055,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 16\nVisualStudioVersion = 16.0.3212"
},
{
"path": "pokedex/Shiny lock generations.txt",
"chars": 725,
"preview": "NatDex\tName\tNo ribbon including Wiimmfi events\tNo ribbon full legal\tAny including ribbons\n251\tCelebi \t7\t7\t7\n493\tArceus "
},
{
"path": "towerRestorer4/App.config",
"chars": 421,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n <connectionStrings>\n <add name=\"pkmnFoundationsConnectionStr"
}
]
// ... and 114 more files (download for full content)
About this extraction
This page contains the full source code of the mm201/pkmn-classic-framework GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 314 files (2.5 MB), approximately 663.1k tokens, and a symbol index with 1206 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.