namespace Shigure; /// /// 动态单位选择器类型, 对应 utils.py 中返回单位槽位的函数。 /// public enum UnitSelectorKind { /// 生命值最低的单位。get_lowest_health_unit LowestHealth, /// 拥有任一光环且生命值最低。get_lowest_health_unit_with_any_aura LowestHealthWithAnyAura, /// 不拥有所选任一光环且生命值最低。 LowestHealthWithoutAnyAura, /// 不带某光环且生命值最低。get_lowest_health_unit_without_aura LowestHealthWithoutAura, /// 带某光环且生命值最低。get_lowest_health_unit_with_aura LowestHealthWithAura, /// 某光环值等于指定值且生命值最低。get_lowest_health_unit_with_aura_count LowestHealthWithAuraCount, /// 按职责取首个/逆序首个。get_unit_with_role UnitWithRole, /// 按职责且不带某光环取首个/逆序首个。get_unit_with_role_and_without_aura_name UnitWithRoleWithoutAura, /// 带某光环(取持续最久)。get_unit_with_aura UnitWithAura, /// 带某驱散类型的首个单位。get_unit_with_dispel_type UnitWithDispelType, /// 治疗吸收高于阈值且治疗吸收最高的单位。 HighestHealingAbsorb, /// 拥有任一光环、治疗吸收高于阈值且治疗吸收最高的单位。 HighestHealingAbsorbWithAnyAura, /// 不拥有所选任一光环、治疗吸收高于阈值且治疗吸收最高的单位。 HighestHealingAbsorbWithoutAnyAura, /// 不带某光环、治疗吸收高于阈值且治疗吸收最高的单位。 HighestHealingAbsorbWithoutAura, /// 带某光环、治疗吸收高于阈值且治疗吸收最高的单位。 HighestHealingAbsorbWithAura, /// 某光环值等于指定值、治疗吸收高于阈值且治疗吸收最高的单位。 HighestHealingAbsorbWithAuraCount } /// 最低生命值选择器使用的职责筛选方式。 public enum UnitRoleFilterKind { /// 只包含指定职责。 Include, /// 排除指定职责。 Exclude } /// /// 模块内定义的命名动态单位。运行时由 解析为 group 槽位("1".."30")。 /// 单光环类用 AuraSpellIds[0]; WithAnyAura 用整个列表。 /// public sealed class ModuleUnit { public string Name { get; set; } = string.Empty; /// /// 可选的"生命值名": 非空时把该单位解析出槽位的 生命值 暴露成一个同名数值条件字段, /// 例如取名 最低血量 后条件里可直接写 最低血量 < 50, 等价于 单位名.生命值 < 50。 /// public string? HealthName { get; set; } public UnitSelectorKind Kind { get; set; } = UnitSelectorKind.LowestHealth; public int? HealthThreshold { get; set; } public string? HealthThresholdField { get; set; } public UnitRoleFilterKind? RoleFilter { get; set; } public int? Role { get; set; } public bool Reverse { get; set; } public List? AuraSpellIds { get; set; } // 仅用于读取并迁移旧模块;当前版本保存前必须转换并清空。 public List? AuraNames { get; set; } public int? AuraCount { get; set; } public int? DispelType { get; set; } public ModuleUnit Clone() { return new ModuleUnit { Name = Name, HealthName = HealthName, Kind = Kind, HealthThreshold = HealthThreshold, HealthThresholdField = HealthThresholdField, RoleFilter = RoleFilter, Role = Role, Reverse = Reverse, AuraSpellIds = AuraSpellIds is null ? null : new List(AuraSpellIds), AuraNames = AuraNames is null ? null : new List(AuraNames), AuraCount = AuraCount, DispelType = DispelType }; } } /// /// 数量统计类型, 对应 utils.py 中返回整数的统计函数。 /// public enum CountKind { /// 生命值低于阈值的人数。count_units_below_health UnitsBelowHealth, /// 不带某光环且生命值低于阈值的人数。count_units_without_aura_below_health UnitsWithoutAuraBelowHealth, /// 拥有某光环的人数。count_units_with_aura UnitsWithAura, /// 拥有某光环且生命值低于阈值的人数。 UnitsWithAuraBelowHealth, /// 治疗吸收大于阈值的人数。 UnitsAboveHealingAbsorb, /// 不带某光环且治疗吸收大于阈值的人数。 UnitsWithoutAuraAboveHealingAbsorb, /// 拥有某光环且治疗吸收大于阈值的人数。 UnitsWithAuraAboveHealingAbsorb } /// /// 模块内定义的命名数量字段。仅用于条件(如 低血量人数 >= 3), 不能作为目标。 /// public sealed class ModuleCountField { public string Name { get; set; } = string.Empty; public CountKind Kind { get; set; } = CountKind.UnitsBelowHealth; public int? HealthThreshold { get; set; } public string? HealthThresholdField { get; set; } public long? AuraSpellId { get; set; } // 仅用于读取并迁移旧模块;当前版本保存前必须转换并清空。 public string? AuraName { get; set; } public ModuleCountField Clone() { return new ModuleCountField { Name = Name, Kind = Kind, HealthThreshold = HealthThreshold, HealthThresholdField = HealthThresholdField, AuraSpellId = AuraSpellId, AuraName = AuraName }; } }