Ejemplo n.º 1
0
        private static List <EncounterArea2> GetAreas2Fishing(byte[] data, ref int ofs)
        {
            var areas = new List <EncounterArea2>();

            while (ofs != 0x18C)
            {
                var old   = GetSlots2Fishing(data, ref ofs, SlotType.Old_Rod);
                var good  = GetSlots2Fishing(data, ref ofs, SlotType.Good_Rod);
                var super = GetSlots2Fishing(data, ref ofs, SlotType.Super_Rod);
                areas.Add(new EncounterArea2
                {
                    Slots = ArrayUtil.ConcatAll(old, good, super),
                });
            }

            // Read TimeFishGroups
            var dl = new List <SlotTemplate>();

            while (ofs < data.Length)
            {
                dl.Add(new SlotTemplate(data[ofs++], data[ofs++]));
            }

            // Add TimeSlots
            foreach (var area in areas)
            {
                var slots = area.Slots;
                for (int i = 0; i < slots.Length; i++)
                {
                    var slot = slots[i];
                    if (slot.Type != SlotType.Special)
                    {
                        continue;
                    }
                    Array.Resize(ref slots, slots.Length + 1);
                    Array.Copy(slots, i, slots, i + 1, slots.Length - i - 1); // shift slots down
                    slots[i + 1] = slot.Clone();                              // differentiate copied slot

                    int index = slot.LevelMin * 2;
                    for (int j = 0; j < 2; j++) // load special slot info
                    {
                        var s = (EncounterSlot2)slots[i + j];
                        s.Species  = dl[index + j].Species;
                        s.LevelMin = s.LevelMax = dl[index + j].Level;
                        s.Type     = slots[i - 1].Type; // special slots are never first in a set, so copy previous type
                        s.Time     = j == 0 ? EncounterTime.Morning | EncounterTime.Day : EncounterTime.Night;
                    }
                }
                area.Slots = slots;
            }
            return(areas);
        }
Ejemplo n.º 2
0
        static Encounters1()
        {
            StaticRBY = Encounter_RBY;
            SlotsRBY  = GetAreas();
            MarkEncountersGeneration(1, SlotsRBY);
            MarkEncountersGeneration(1, StaticRBY, TradeGift_RBY_NoTradeback, TradeGift_RBY_Tradeback);

            var trades = ArrayUtil.ConcatAll(TradeGift_RBY_NoTradeback, TradeGift_RBY_Tradeback);

            foreach (var t in trades)
            {
                t.TrainerNames = StringConverter12.G1TradeOTName;
            }
        }
Ejemplo n.º 3
0
        static BallApplicator()
        {
            var exclude  = new[] { None, Poke };
            var end      = new[] { Poke };
            var allBalls = BallList.Except(exclude).ToArray();
            var colors   = (PersonalColor[])Enum.GetValues(typeof(PersonalColor));

            foreach (var c in colors)
            {
                var matchingColors = BallColors[c];
                var extra          = allBalls.Except(matchingColors).ToArray();
                Util.Shuffle(extra);
                BallColors[c] = ArrayUtil.ConcatAll(matchingColors, extra, end);
            }
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Gets the encounter areas with <see cref="EncounterSlot"/> information from Generation 1 Grass/Water data.
 /// </summary>
 /// <param name="data">Input raw data.</param>
 /// <param name="count">Count of areas in the binary.</param>
 /// <returns>Array of encounter areas.</returns>
 public static EncounterArea1[] GetArray1GrassWater(byte[] data, int count)
 {
     EncounterArea1[] areas = new EncounterArea1[count];
     for (int i = 0; i < areas.Length; i++)
     {
         int ptr   = BitConverter.ToInt16(data, i * 2);
         var grass = GetSlots1GrassWater(data, ref ptr, SlotType.Grass);
         var water = GetSlots1GrassWater(data, ref ptr, SlotType.Surf);
         areas[i] = new EncounterArea1
         {
             Location = i,
             Slots    = ArrayUtil.ConcatAll(grass, water),
         };
     }
     return(areas.Where(area => area.Slots.Length != 0).ToArray());
 }