namespace BardFrontline.Core; // IDs and rotation predicates are referenced from the local RSR ActionId/Status/Rotation.resx // and BardRotation.cs. No RSR assembly or source project is linked. public enum Skill : uint { Guard = 29054, Elixir = 29055, Purify = 29056, Sprint = 29057, PowerfulShot = 29391, PitchPerfect = 29392, ApexArrow = 29393, BlastArrow = 29394, SilentNocturne = 29395, RepellingShot = 29399, WardensPaean = 29400, FinalFantasia = 29401, Recuperate = 29711, HarmonicArrow = 41464, EncoreOfLight = 41467, Dervish = 43249, Bravery = 43250, EagleEyeShot = 43251, } public static class Statuses { public const uint Guard = 3054, Repertoire = 3137, March = 3138, BlastReady = 3142, Fantasia = 3144, EncoreReady = 4312, Sprint = 1342, Dervish = 4478, Bravery = 4479, RoleDervish = 4489, RoleBravery = 4490, RoleEagle = 4491, Warmachina = 1420; public static readonly uint[] Controls = [1343, 1344, 1345, 1347, 3219, 3085]; // Named invincibilities from RSR's status data; damage reduction (e.g. Phalanx) is not immunity. public static readonly HashSet Invincible = [82, 325, 394, 529, 656, 671, 775, 776, 895, 969, 981, 1302, 1570, 1697, 1829, 4410, 4539, 4875]; public static bool IsInvulnerability(uint statusId, uint icon) => statusId != Guard && (Invincible.Contains(statusId) || icon == 15024); } public static class Actions { public static readonly Skill[] All = Enum.GetValues(); public static bool Matches(Skill skill, uint adjustedId) => adjustedId == (uint)skill || skill == Skill.HarmonicArrow && adjustedId is 41465 or 41466 or 41964; public static bool IsHostile(Skill s) => s is Skill.PowerfulShot or Skill.PitchPerfect or Skill.ApexArrow or Skill.BlastArrow or Skill.SilentNocturne or Skill.RepellingShot or Skill.HarmonicArrow or Skill.EncoreOfLight or Skill.EagleEyeShot; public static uint Root(Skill s) => (uint)(s switch { Skill.PitchPerfect => Skill.PowerfulShot, Skill.BlastArrow => Skill.ApexArrow, Skill.EncoreOfLight => Skill.FinalFantasia, _ => s, }); public static string Name(Skill s) => s switch { Skill.Guard => "防御 Guard", Skill.Elixir => "军用圣灵药", Skill.Purify => "净化", Skill.Sprint => "冲刺", Skill.Recuperate => "自疗 Recuperate", Skill.WardensPaean => "光阴神的礼赞", Skill.FinalFantasia => "英雄的幻想曲(极限技)", Skill.RepellingShot => "后跃射击", Skill.PowerfulShot => "强力射击", Skill.PitchPerfect => "完美音调", Skill.ApexArrow => "绝峰箭", Skill.BlastArrow => "爆破箭", Skill.HarmonicArrow => "和弦箭", Skill.SilentNocturne => "默者的夜曲", Skill.EncoreOfLight => "英雄的安可 Encore of Light", Skill.Bravery => "Bravery", Skill.Dervish => "Dervish", Skill.EagleEyeShot => "Eagle Eye Shot", _ => s.ToString(), }; }