using System.Collections; using System.Collections.Generic; using System.IO; namespace OpenVIII { public partial class Kernel_bin { /// /// Battle Commands /// /// public class Battle_Commands { public const int id = 0; public const int count = 39; private const int altlimitid = 18; public int ID { get; private set; } public FF8String Name { get; private set; } public FF8String Description { get; private set; } public override string ToString() => Name; //public byte[] OffsetName; //0x0000 2 bytes Offset to ability name //public byte[] OffsetDesc; //0x0002 2 bytes Offset to ability description /// /// Ability data ID /// public byte Ability { get; private set; } //0x0004 1 byte Ability data ID /// /// Unknown Flags /// public Debug_battleDat.Information.UnkFlag Flags { get; private set; } //0x0005 1 byte Unknown Flags /// /// Target /// public Target Target { get; private set; } //0x0006 1 byte Target /// /// Unknown / Unused /// public byte Unknown { get; private set; } //0x0007 1 byte Unknown / Unused public void Read(BinaryReader br, int i) { ID = i; if (ID == 17) //No Mercy { Name = Memory.Strings.Read(Strings.FileID.KERNEL, altlimitid, 0); //Fire Cross Description = Memory.Strings.Read(Strings.FileID.KERNEL, altlimitid, 1); } else if (ID == 18) //Sorcery { Name = Memory.Strings.Read(Strings.FileID.KERNEL, altlimitid, 2); //Ice Strike Description = Memory.Strings.Read(Strings.FileID.KERNEL, altlimitid, 3); } else if (ID == 20) //Limit #1 { Name = Memory.Strings.Read(Strings.FileID.KERNEL, altlimitid, 4); //Desperado Description = Memory.Strings.Read(Strings.FileID.KERNEL, altlimitid, 5); } else if (ID == 21) //Limit #2 { Name = Memory.Strings.Read(Strings.FileID.KERNEL, altlimitid, 6); //Blood Pain Description = Memory.Strings.Read(Strings.FileID.KERNEL, altlimitid, 7); } else if (ID == 22) //Limit #3 { Name = Memory.Strings.Read(Strings.FileID.KERNEL, altlimitid, 8); //Massive Anchor Description = Memory.Strings.Read(Strings.FileID.KERNEL, altlimitid, 9); } else { Name = Memory.Strings.Read(Strings.FileID.KERNEL, id, i * 2); Description = Memory.Strings.Read(Strings.FileID.KERNEL, id, i * 2 + 1); } br.BaseStream.Seek(4, SeekOrigin.Current); Ability = br.ReadByte(); Flags = (Debug_battleDat.Information.UnkFlag)br.ReadByte(); Target = (Target)br.ReadByte(); Unknown = br.ReadByte(); } public static List Read(BinaryReader br) { var ret = new List(count); for (int i = 0; i < count; i++) { var tmp = new Battle_Commands(); tmp.Read(br, i); ret.Add(tmp); } return ret; } } } }