private static EncounterSlot2[] GetSlots2GrassWater(EncounterArea2 area, byte[] data, ref int ofs, SlotType t, int slotSets, int slotCount) { byte[] rates = new byte[slotSets]; for (int i = 0; i < rates.Length; i++) { rates[i] = data[ofs++]; } area.Rates = rates; var slots = EncounterSlot2.ReadSlots(data, ref ofs, slotSets * slotCount, t); if (slotSets <= 1) { return(slots); } for (int i = 0; i < slotCount; i++) { slots[i].Time = EncounterTime.Morning; } for (int r = 1; r < slotSets; r++) { for (int i = 0; i < slotCount; i++) { int index = i + (r * slotCount); slots[index].SlotNumber = i; slots[index].Time = r == 1 ? EncounterTime.Day : EncounterTime.Night; } } return(slots); }
private static void WriteSlot(BinaryWriter bw, EncounterSlot2 slot) { bw.Write((byte)slot.Species); bw.Write((byte)slot.SlotNumber); bw.Write((byte)slot.LevelMin); bw.Write((byte)slot.LevelMax); }
private static void GetSlots2Fishing(EncounterArea2 area, byte[] data, ref int ofs) { // slot set ends with final slot having 0xFF 0x** 0x** const int size = 3; int end = ofs; // scan for count while (data[end] != 0xFF) { end += size; } var count = ((end - ofs) / size) + 1; var rates = area.Rates = new byte[count]; var slots = area.Slots = new EncounterSlot2[count]; for (int i = 0; i < slots.Length; i++) { rates[i] = data[ofs++]; int species = data[ofs++]; int level = data[ofs++]; slots[i] = new EncounterSlot2(species, level, level, i); } }