Пример #1
0
        public void EditItems()
        {
            var obj   = ROM[GameFile.ItemStats]; // mini
            var data  = obj[0];
            var items = Item8.GetArray(data);
            var cache = new DataCache <Item8>(items);

            using var form = new GenericEditor <Item8>(cache, ROM.GetStrings(TextName.ItemNames), "Item Editor", Randomize);
            form.ShowDialog();
            if (!form.Modified)
            {
                cache.CancelEdits();
                return;
            }

            void Randomize()
            {
                var tradeEvos = new[] { 221, 226, 227, 233, 235, 252, 321, 322, 323, 324, 325, 573, 646, 647 };

                foreach (var item in items)
                {
                    if (item.ItemSprite == -1 || !tradeEvos.Contains(item.ItemID))
                    {
                        continue;
                    }

                    item.Boost0          = 8; // evo stone
                    item.EffectField     = 6; // use effect
                    item.CanUseOnPokemon = true;
                }
            }

            obj[0] = Item8.SetArray(items, data);
        }
Пример #2
0
        public void EditRental()
        {
            var obj     = ROM[GameFile.Rentals];
            var data    = obj[0];
            var rentals = FlatBufferConverter.DeserializeFrom <Rental8Archive>(data);
            var cache   = new DataCache <Rental8>(rentals.Table);
            var names   = rentals.Table.Select((z, i) => $"{i:000} {z.Hash1:X16}").ToArray();

            using var form = new GenericEditor <Rental8>(cache, names, "Rental Editor");
            form.ShowDialog();
            if (!form.Modified)
            {
                cache.CancelEdits();
                return;
            }
            obj[0] = FlatBufferConverter.SerializeFrom(rentals);
        }
Пример #3
0
    public void EditTrainers()
    {
        var folder = ROM.GetFilteredFolder(GameFile.TrainerData);
        var cache  = new DataCache <TrData8a>(folder)
        {
            Create = FlatBufferConverter.DeserializeFrom <TrData8a>,
            Write  = FlatBufferConverter.SerializeFrom,
        };
        var names = folder.GetPaths().Select(Path.GetFileNameWithoutExtension).ToArray();

        using var form = new GenericEditor <TrData8a>(cache, names, "Trainers", Randomize, canSave: true);
        form.ShowDialog();

        void Randomize()
        {
            var settings = EditUtil.Settings.Species;
            var rand     = new SpeciesRandomizer(ROM.Info, Data.PersonalData);

            rand.Initialize(settings, GetSpeciesBanlist());

            for (int i = 0; i < cache.Length; i++)
            {
                foreach (var t in cache[i].Team)
                {
                    t.Species          = rand.GetRandomSpecies(t.Species);
                    t.Form             = GetRandomForm(t.Species);
                    t.Gender           = (int)FixedGender.Random;
                    t.Nature           = NatureType8a.Random;
                    t.Move_01.Move     = t.Move_02.Move = t.Move_03.Move = t.Move_04.Move = 0;
                    t.Move_01.Mastered = t.Move_02.Mastered = t.Move_03.Mastered = t.Move_04.Mastered = true;
                    t.Shiny            = Randomization.Util.Random.Next(0, 100 + 1) < 3;
                    t.IsOybn           = Randomization.Util.Random.Next(0, 100 + 1) < 3;
                }
            }
        }

        if (!form.Modified)
        {
            cache.CancelEdits();
        }
        else
        {
            cache.Save();
        }
    }
Пример #4
0
        public void EditItems()
        {
            var obj   = ROM.GetFilteredFolder(GameFile.ItemStats, z => new FileInfo(z).Length == 36);
            var cache = new DataCache <Item>(obj)
            {
                Create = Item.FromBytes,
                Write  = item => item.Write(),
            };

            using var form = new GenericEditor <Item>(cache, ROM.GetStrings(TextName.ItemNames), "Item Editor");
            form.ShowDialog();
            if (!form.Modified)
            {
                cache.CancelEdits();
            }
            else
            {
                cache.Save();
            }
        }
Пример #5
0
        public void EditMoves()
        {
            var obj   = ROM[GameFile.MoveStats]; // mini
            var cache = new DataCache <Move7>(obj)
            {
                Create = data => new Move7(data),
                Write  = move => move.Write(),
            };

            using var form = new GenericEditor <Move7>(cache, ROM.GetStrings(TextName.MoveNames), "Move Editor");
            form.ShowDialog();
            if (!form.Modified)
            {
                cache.CancelEdits();
            }
            else
            {
                cache.Save();
            }
        }
Пример #6
0
        public void EditMoves()
        {
            var obj   = ROM[GameFile.MoveStats]; // mini
            var cache = new DataCache <Waza8>(obj)
            {
                Create = FlatBufferConverter.DeserializeFrom <Waza8>,
                Write  = FlatBufferConverter.SerializeFrom,
            };

            using var form = new GenericEditor <Waza8>(cache, ROM.GetStrings(TextName.MoveNames), "Move Editor");
            form.ShowDialog();
            if (!form.Modified)
            {
                cache.CancelEdits();
                return;
            }

            cache.Save();
            ROM.Data.MoveData.ClearAll(); // force reload if used again
        }