예제 #1
0
        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);
            }
        }
예제 #2
0
            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>();
            }
예제 #3
0
        /// <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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        //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();
        }
예제 #6
0
파일: SMWE.cs 프로젝트: tom-overton/pk3DS
        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");
        }
예제 #7
0
        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);
        }