public void Execute(IEnumerable <Area7> Areas, LazyGARCFile encdata) { GetTableRandSettings((RandOption)TableRandomizationOption, out int slotStart, out int slotStop, out bool copy); foreach (var Map in Areas) { foreach (var Table in Map.Tables) { if (ModifyLevel) { Table.MinLevel = Randomizer.GetModifiedLevel(Table.MinLevel, LevelAmplifier); Table.MaxLevel = Randomizer.GetModifiedLevel(Table.MaxLevel, LevelAmplifier); } RandomizeTable7(Table, slotStart, slotStop); if (copy) // copy row 0 to rest { Table.CopySlotsToSOS(); } Table.Write(); } encdata[Map.FileNumber] = Area7.GetDayNightTableBinary(Map.Tables); } }
public World(LazyGARCFile garc, int worldID) { int index = worldID * 11; _7 = Mini.UnpackMini(garc[index + 7], "ZS"); _8 = Mini.UnpackMini(garc[index + 8], "ZI"); ZoneScripts = HasZS ? _7.Select(arr => new Script(arr)).ToArray() : Array.Empty <Script>(); ZoneInfoScripts = HasZI ? _8.Select(arr => new Script(arr)).ToArray() : Array.Empty <Script>(); }
/// <summary> /// Gets an annotated Area array /// </summary> /// <param name="ed">Encounter Data GARC</param> /// <param name="zd">ZoneData GARC</param> /// <param name="wd">WorldData GARC</param> /// <param name="locationList">Location strings</param> /// <returns>Annotated Area Array</returns> public static Area7[] GetArray(LazyGARCFile ed, LazyGARCFile zd, LazyGARCFile wd, string[] locationList) { var Worlds = wd.Files.Select(f => Mini.UnpackMini(f, "WD")[0]).ToArray(); byte[][] zdfiles = zd.Files; var worldData = zdfiles[1]; var zoneData = zdfiles[0]; var zones = ZoneData7.GetZoneData7Array(zoneData, worldData, locationList, Worlds); var areas = GetArray(ed, zones); return(areas); }
public PickupEditor7(LazyGARCFile pickup) { InitializeComponent(); g_pickup = pickup; var itemlist = Main.Config.GetText(TextName.ItemNames); itemlist[0] = ""; items = itemlist.Select((v, i) => $"{v} - {i:000}").ToArray(); SetupFLP(); byte[] data = pickup.Files[0]; GetList(data); }
//private readonly LazyGARCFile WorldData; // private readonly LazyGARCFile ZoneData; public OWSE7(LazyGARCFile ed, LazyGARCFile zd) { EncounterData = ed; var ZoneData = zd; //WorldData = wd; locationList = Main.Config.GetText(TextName.metlist_000000); locationList = SMWE.GetGoodLocationList(locationList); InitializeComponent(); var zdFiles = ZoneData.Files; zoneData = zdFiles[0]; //worldData = zdFiles[1]; LoadData(); }
public SMWE(LazyGARCFile ed, LazyGARCFile zd, LazyGARCFile wd) { InitializeComponent(); PB_DayIcon.Image = Properties.Resources.sun; PB_NightIcon.Image = Properties.Resources.moon; PB_DayIcon.SizeMode = PictureBoxSizeMode.CenterImage; PB_NightIcon.SizeMode = PictureBoxSizeMode.CenterImage; font = L_Location.Font; speciesList[0] = "(None)"; var locationList = Main.Config.GetText(TextName.metlist_000000); locationList = GetGoodLocationList(locationList); nup_spec = LoadFormeNUD(); cb_spec = LoadSpeciesComboBoxes(); rate_spec = LoadRateNUD(); encdata = ed; var areas = Area7.GetArray(ed, zd, wd, locationList); Areas = areas.OrderBy(a => a.Zones[0].Name).ToArray(); LoadData(); RandSettings.GetFormSettings(this, GB_Tweak.Controls); var weather = string.Format("If weather is active, create a random number.{0}If 0, use slot 0.{0}If <= 10, use slot 1.{0}Else, pick an SOS table and a slot.", Environment.NewLine); new ToolTip().SetToolTip(L_AddSOS, weather); var sos = new[] { L_SOS1, L_SOS2, L_SOS3, L_SOS4, L_SOS5, L_SOS6, L_SOS7 }; var rates = new[] { 1, 1, 1, 10, 10, 10, 67 }; for (int i = 0; i < sos.Length; i++) { new ToolTip().SetToolTip(sos[i], $"Table Selection Rate: {rates[i]}%"); } // ExportEncounters("um", "uu"); }
public static Area7[] GetArray(LazyGARCFile ed, ZoneData7[] zd) { int fileCount = ed.FileCount; var numAreas = fileCount / 11; var areas = new Area7[numAreas]; for (int i = 0; i < numAreas; i++) { areas[i] = new Area7 { FileNumber = 9 + (11 * i), Zones = zd.Where(z => z.AreaIndex == i).ToArray() }; var md = ed[areas[i].FileNumber]; if (md.Length == 0) { areas[i].HasTables = false; continue; } byte[][] Tables = Mini.UnpackMini(md, PackIdentifier); areas[i].HasTables = Tables.Any(t => t.Length > 0); if (!areas[i].HasTables) { continue; } foreach (var Table in Tables) { var DayTable = Table.Skip(4).Take(0x164).ToArray(); var NightTable = Table.Skip(0x168).ToArray(); areas[i].Tables.Add(new EncounterTable(DayTable)); areas[i].Tables.Add(new EncounterTable(NightTable)); } } return(areas); }