using System.Collections.Generic; using System.IO; namespace OpenVIII { public partial class Kernel_bin { /// /// Weapon Data /// /// public class Weapons_Data { public const int count = 33; public const int id = 4; public FF8String Name { get; private set; } public override string ToString() => Name; //0x0000 2 bytes Offset to weapon name public Renzokuken_Finisher Renzokuken { get; private set; } //0x0002 1 byte Renzokuken finishers public byte Unknown0 { get; private set; } //0x0003 1 byte Unknown public Characters Character { get; private set; }//0x0004 1 byte Character ID public Attack_Type Attack_type { get; private set; }//0x0005 1 bytes Attack Type public byte Attack_power { get; private set; }//0x0006 1 byte Attack Power public byte HIT { get; private set; }//0x0007 1 byte Attack Parameter public byte STR { get; private set; }//0x0008 1 byte STR Bonus public byte Tier { get; private set; }//0x0009 1 byte Weapon Tier public byte CRIT { get; private set; }//0x000A 1 byte Crit Bonus public bool Melee { get; private set; }//0x000B 1 byte Melee Weapon? public byte AltID { get; private set; } public byte ID { get; private set; } static private Characters lastCharacter = Characters.Blank; static private byte Counter = 0; public void Read(BinaryReader br, int string_id = 0) { ID = checked((byte)string_id); Name = Memory.Strings.Read(Strings.FileID.KERNEL, id, string_id); br.BaseStream.Seek(2, SeekOrigin.Current); Renzokuken = (Renzokuken_Finisher)br.ReadByte(); //0x0002 1 byte Renzokuken finishers Unknown0 = br.ReadByte(); //0x0003 1 byte Unknown Character = (Characters)br.ReadByte();//0x0004 1 byte Character ID if (lastCharacter != Character) { AltID = Counter = 0; lastCharacter = Character; } else AltID = ++Counter; Attack_type = (Attack_Type)br.ReadByte();//0x0005 1 bytes Attack Type Attack_power = br.ReadByte();//0x0006 1 byte Attack Power HIT = br.ReadByte();//0x0007 1 byte Attack Parameter STR = br.ReadByte();//0x0008 1 byte STR Bonus Tier = br.ReadByte();//0x0009 1 byte Weapon Tier CRIT = br.ReadByte();//0x000A 1 byte Crit Bonus Melee = br.ReadByte() == 0 ? false : true;//0x000B 1 byte Melee Weapon? } public static List Read(BinaryReader br) { var ret = new List(count); for (int i = 0; i < count; i++) { Weapons_Data tmp = new Weapons_Data(); tmp.Read(br, i); ret.Add(tmp); } return ret; } } } }