Kernel_bin.Quistis_limit_break_parameters.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System.Collections.Generic;
  2. using System.IO;
  3. namespace OpenVIII
  4. {
  5. namespace Kernel
  6. {
  7. #region Classes
  8. /// <summary>
  9. /// Blue Magic Parameters - Four per spell for each crisis level. Higher Crisis Levels do more damage and/or have more effects.
  10. /// </summary>
  11. /// <see cref="https://finalfantasy.fandom.com/wiki/Blue_Magic_(Final_Fantasy_VIII)"/>
  12. /// <seealso cref="https://github.com/alexfilth/doomtrain/wiki/Quistis-limit-break-parameters"/>
  13. public class Quistis_limit_break_parameters
  14. {
  15. #region Fields
  16. public const int count = 4;//64 total but I want to add these to the Blue_Magic_Quistis_limit_break in an array
  17. public const int id = 20;
  18. public const int size = 8;
  19. #endregion Fields
  20. #region Constructors
  21. public Quistis_limit_break_parameters() { }
  22. public Quistis_limit_break_parameters(BinaryReader br, byte i) => Read(br,i);
  23. #endregion Constructors
  24. #region Properties
  25. public byte Attack_Param { get; private set; }
  26. public byte Crisis_Level { get; private set; }
  27. public byte Attack_Power { get; private set; }
  28. public Persistent_Statuses Statuses0 { get; private set; }
  29. public Battle_Only_Statuses Statuses1 { get; private set; }
  30. #endregion Properties
  31. #region Methods
  32. public static List<Quistis_limit_break_parameters> Read(BinaryReader br)
  33. {
  34. var ret = new List<Quistis_limit_break_parameters>(count);
  35. for (byte i = 0; i < count; i++)
  36. {
  37. var tmp = new Quistis_limit_break_parameters(br,i);
  38. ret.Add(tmp);
  39. }
  40. return ret;
  41. }
  42. public void Read(BinaryReader br, byte i)
  43. {
  44. Statuses1 = (Battle_Only_Statuses)br.ReadUInt32();
  45. //0x0000 4 bytes Status 1
  46. Statuses0 = (Persistent_Statuses)br.ReadUInt16();
  47. //0x0004 2 bytes Status 0
  48. Attack_Power = br.ReadByte();
  49. //0x0006 1 bytes Attack Power
  50. Attack_Param = br.ReadByte();
  51. //0x0007 1 byte Attack Param
  52. Crisis_Level = i;
  53. }
  54. #endregion Methods
  55. }
  56. #endregion Classes
  57. }
  58. }