From 0985a013fb103707aafe4341df7758f34182c2d5 Mon Sep 17 00:00:00 2001 From: waynebian01 Date: Mon, 22 Jun 2026 00:36:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E5=85=89=E7=8E=AF?= =?UTF-8?q?=E8=AF=86=E5=88=AB=E8=BE=93=E5=85=A5=E6=A1=86,=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=86=E9=83=A8=E5=88=86=E8=81=8C=E4=B8=9A=E7=9A=84?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Runtime/AuraIconRecognizer.cs | 17 ++++ UI/AuraRecognitionSettingsControl.cs | 129 ++++++++++++++++++++++--- UI/StatusForm.cs | 6 +- config/唤魔师.json | 16 ++-- config/圣骑士.json | 16 ++-- config/德鲁伊.json | 24 ++--- config/恶魔猎手.json | 24 ++--- config/战士.json | 136 ++++++++++----------------- config/术士.json | 24 ++--- config/武僧.json | 16 ++-- config/死亡骑士.json | 24 ++--- config/法师.json | 24 ++--- config/牧师.json | 8 +- config/猎人.json | 24 ++--- config/盗贼.json | 24 ++--- config/萨满.json | 24 ++--- keymap/warrior.json | 6 +- 17 files changed, 313 insertions(+), 229 deletions(-) diff --git a/Runtime/AuraIconRecognizer.cs b/Runtime/AuraIconRecognizer.cs index 0f861c4a..bcd8addf 100644 --- a/Runtime/AuraIconRecognizer.cs +++ b/Runtime/AuraIconRecognizer.cs @@ -26,6 +26,7 @@ public sealed record AuraSlotRecognition( ulong IconHash, Rectangle SlotBounds, Rectangle IconBounds, + byte[]? IconPng, string? SavedIconPath, string? Name, int? HashDistance, @@ -403,6 +404,7 @@ public sealed class AuraIconRecognizer : IDisposable using var icon = capture.Clone(detected.IconBounds, PixelFormat.Format32bppArgb); using var matchIcon = CreateMatchIcon(icon); var iconHash = ComputeDHash(matchIcon); + var iconPng = EncodePng(icon); var savedIconPath = saveIcons ? SaveAuraIcon(icon, iconHash, auraDirectory) : null; var candidates = RecognizeIcon(matchIcon, iconHash, templates); var best = candidates.FirstOrDefault(); @@ -415,6 +417,7 @@ public sealed class AuraIconRecognizer : IDisposable iconHash, detected.SlotBounds, detected.IconBounds, + iconPng, savedIconPath, best?.Name, best?.HashDistance, @@ -425,6 +428,20 @@ public sealed class AuraIconRecognizer : IDisposable return slots; } + private static byte[]? EncodePng(Bitmap icon) + { + try + { + using var stream = new MemoryStream(); + icon.Save(stream, ImageFormat.Png); + return stream.ToArray(); + } + catch + { + return null; + } + } + private static string? SaveAuraIcon( Bitmap icon, ulong iconHash, diff --git a/UI/AuraRecognitionSettingsControl.cs b/UI/AuraRecognitionSettingsControl.cs index db8d8f08..46b3be5b 100644 --- a/UI/AuraRecognitionSettingsControl.cs +++ b/UI/AuraRecognitionSettingsControl.cs @@ -48,6 +48,8 @@ public sealed class AuraRecognitionSettingsControl : UserControl private AuraIconRecognizer? _recognizer; private string? _recognizerSignature; private string? _currentSelectedHash; + private SelectedAuraIcon? _selectedAuraIcon; + private string? _editingHash; private (int ClassId, int SpecId) _activeScope = (0, 0); private bool _isScanning; private bool _auraImportEnabled; @@ -156,10 +158,29 @@ public sealed class AuraRecognitionSettingsControl : UserControl SaveSelectedAuraName(); e.SuppressKeyPress = true; }; + _renameBox.Enter += (_, _) => BeginRenameEdit(); + _renameBox.TextChanged += (_, _) => + { + if (_renameBox.Focused) + { + BeginRenameEdit(); + } + }; + _renameBox.Leave += (_, _) => + { + BeginInvoke((Action)(() => + { + if (!_renameBox.Focused && !_saveNameButton.Focused) + { + _editingHash = null; + } + })); + }; _slotList.SelectedIndexChanged += (_, _) => { if (!_suppressSlotSelectionChanged) { + _editingHash = null; UpdateSelectedAura(); } }; @@ -167,6 +188,7 @@ public sealed class AuraRecognitionSettingsControl : UserControl { if (!_suppressSavedIconSelectionChanged) { + _editingHash = null; UpdateSelectedAura(); } }; @@ -730,7 +752,8 @@ public sealed class AuraRecognitionSettingsControl : UserControl _templateLabel.Text = $"图标库: {result.TemplateCount} 个 目录: {result.TemplateDirectory}"; UpdateToolbarInfoToolTips(); - var selectedHash = GetSelectedHash() ?? _currentSelectedHash; + var selectedHash = _editingHash ?? GetSelectedHash() ?? _currentSelectedHash; + var preserveEditingSelection = !string.IsNullOrWhiteSpace(_editingHash); ListViewItem? itemToSelect = null; _suppressSlotSelectionChanged = true; _slotList.BeginUpdate(); @@ -770,7 +793,10 @@ public sealed class AuraRecognitionSettingsControl : UserControl } } - itemToSelect ??= _slotList.Items.Count > 0 ? _slotList.Items[0] : null; + if (itemToSelect is null && !preserveEditingSelection) + { + itemToSelect = _slotList.Items.Count > 0 ? _slotList.Items[0] : null; + } if (itemToSelect is not null) { itemToSelect.Selected = true; @@ -787,13 +813,16 @@ public sealed class AuraRecognitionSettingsControl : UserControl { RefreshSavedIconList(selectedHash ?? _currentSelectedHash); } - if (_slotList.Items.Count == 0) + if (_slotList.Items.Count == 0 && !preserveEditingSelection) { ClearSelectedAura(); } UpdateDetails(result); - UpdateSelectedAura(); + if (itemToSelect is not null || !preserveEditingSelection) + { + UpdateSelectedAura(); + } PublishRecognizedAuras(result); } @@ -829,7 +858,12 @@ public sealed class AuraRecognitionSettingsControl : UserControl var preserveRenameText = _renameBox.Focused && string.Equals(_currentSelectedHash, selected.Hash, StringComparison.OrdinalIgnoreCase); + _selectedAuraIcon = selected; _currentSelectedHash = selected.Hash; + if (_renameBox.Focused) + { + _editingHash = selected.Hash; + } _selectedHashLabel.Text = selected.Description; _renameBox.Enabled = true; _saveNameButton.Enabled = true; @@ -837,10 +871,15 @@ public sealed class AuraRecognitionSettingsControl : UserControl { _renameBox.Text = selected.EditName; } - SetPreviewImage(LoadPreviewImage(selected.IconPath)); + SetPreviewImage(LoadPreviewImage(selected.IconPath, selected.IconPng)); UpdateSelectedCandidates(); } + private void BeginRenameEdit() + { + _editingHash ??= _selectedAuraIcon?.Hash ?? GetSelectedAuraIcon()?.Hash ?? _currentSelectedHash; + } + private void UpdateSelectedCandidates() { _candidateList.BeginUpdate(); @@ -896,6 +935,7 @@ public sealed class AuraRecognitionSettingsControl : UserControl return new SelectedAuraIcon( hash, slot.SavedIconPath, + slot.IconPng, description, GetManualAuraName(hash) ?? slot.Name ?? string.Empty, slot); @@ -915,6 +955,7 @@ public sealed class AuraRecognitionSettingsControl : UserControl return new SelectedAuraIcon( savedIcon.Hash, savedIcon.Path, + null, description, GetManualAuraName(savedIcon.Hash) ?? string.Empty, null); @@ -922,7 +963,13 @@ public sealed class AuraRecognitionSettingsControl : UserControl private void SaveSelectedAuraName() { - var selected = GetSelectedAuraIcon(); + var selected = GetSelectedAuraIcon() ?? _selectedAuraIcon; + if (_editingHash is not null + && _selectedAuraIcon is not null + && string.Equals(_selectedAuraIcon.Hash, _editingHash, StringComparison.OrdinalIgnoreCase)) + { + selected = _selectedAuraIcon; + } if (selected is null) { return; @@ -934,7 +981,7 @@ public sealed class AuraRecognitionSettingsControl : UserControl { var savedIconPath = string.IsNullOrWhiteSpace(name) ? null - : SaveNamedAuraIcon(selected.IconPath, hash); + : SaveNamedAuraIcon(selected.IconPath, selected.IconPng, hash); if (string.IsNullOrWhiteSpace(name)) { @@ -960,6 +1007,7 @@ public sealed class AuraRecognitionSettingsControl : UserControl { UpdateDetails(_lastResult); } + _editingHash = null; } catch (Exception ex) { @@ -967,9 +1015,10 @@ public sealed class AuraRecognitionSettingsControl : UserControl } } - private string SaveNamedAuraIcon(string? sourcePath, string hash) + private string SaveNamedAuraIcon(string? sourcePath, byte[]? iconPng, string hash) { - if (string.IsNullOrWhiteSpace(sourcePath) || !File.Exists(sourcePath)) + if ((string.IsNullOrWhiteSpace(sourcePath) || !File.Exists(sourcePath)) + && iconPng is not { Length: > 0 }) { throw new InvalidOperationException("当前光环没有可用截图,无法保存图标。"); } @@ -977,7 +1026,15 @@ public sealed class AuraRecognitionSettingsControl : UserControl var directory = GetScopedAuraDirectory(); Directory.CreateDirectory(directory); var iconPath = Path.Combine(directory, $"{hash}.png"); - File.Copy(sourcePath, iconPath, overwrite: true); + if (!string.IsNullOrWhiteSpace(sourcePath) && File.Exists(sourcePath)) + { + File.Copy(sourcePath, iconPath, overwrite: true); + } + else + { + File.WriteAllBytes(iconPath, iconPng!); + } + return iconPath; } @@ -1103,6 +1160,8 @@ public sealed class AuraRecognitionSettingsControl : UserControl private void ClearSelectedAura() { _currentSelectedHash = null; + _selectedAuraIcon = null; + _editingHash = null; _selectedHashLabel.Text = "未选择光环"; _renameBox.Text = string.Empty; _renameBox.Enabled = false; @@ -1112,13 +1171,19 @@ public sealed class AuraRecognitionSettingsControl : UserControl private string? AddSlotIcon(AuraSlotRecognition slot) { - var iconPath = GetBestTemplateIconPath(slot); - if (iconPath is null) + var iconPng = slot.IconPng; + var iconPath = slot.SavedIconPath; + var templatePath = GetBestTemplateIconPath(slot); + if ((iconPng is not { Length: > 0 }) + && (string.IsNullOrWhiteSpace(iconPath) || !File.Exists(iconPath)) + && templatePath is null) { return null; } - var key = $"{AuraIconRecognizer.FormatHash(slot.IconHash)}|{Path.GetFullPath(iconPath)}"; + var key = iconPng is { Length: > 0 } + ? $"{AuraIconRecognizer.FormatHash(slot.IconHash)}|scan" + : $"{AuraIconRecognizer.FormatHash(slot.IconHash)}|{Path.GetFullPath(iconPath ?? templatePath!)}"; if (_slotIconList.Images.ContainsKey(key)) { return key; @@ -1126,7 +1191,10 @@ public sealed class AuraRecognitionSettingsControl : UserControl try { - _slotIconList.Images.Add(key, CreateListIcon(iconPath)); + var image = iconPng is { Length: > 0 } + ? CreateListIcon(iconPng) + : CreateListIcon(iconPath ?? templatePath!); + _slotIconList.Images.Add(key, image); return key; } catch @@ -1296,6 +1364,17 @@ public sealed class AuraRecognitionSettingsControl : UserControl private static Bitmap CreateListIcon(string path) { using var source = LoadImageCopy(path); + return CreateListIcon(source); + } + + private static Bitmap CreateListIcon(byte[] iconPng) + { + using var source = LoadImageCopy(iconPng); + return CreateListIcon(source); + } + + private static Bitmap CreateListIcon(Image source) + { var icon = new Bitmap(32, 32); using var graphics = Graphics.FromImage(icon); graphics.Clear(Color.Transparent); @@ -1305,8 +1384,20 @@ public sealed class AuraRecognitionSettingsControl : UserControl return icon; } - private static Image? LoadPreviewImage(string? path) + private static Image? LoadPreviewImage(string? path, byte[]? iconPng = null) { + if (iconPng is { Length: > 0 }) + { + try + { + return LoadImageCopy(iconPng); + } + catch + { + return null; + } + } + if (string.IsNullOrWhiteSpace(path) || !File.Exists(path)) { return null; @@ -1329,6 +1420,13 @@ public sealed class AuraRecognitionSettingsControl : UserControl return new Bitmap(source); } + private static Bitmap LoadImageCopy(byte[] bytes) + { + using var stream = new MemoryStream(bytes); + using var source = Image.FromStream(stream); + return new Bitmap(source); + } + private void SetPreviewImage(Image? image) { var previous = _iconPreview.Image; @@ -1550,6 +1648,7 @@ public sealed class AuraRecognitionSettingsControl : UserControl private sealed record SelectedAuraIcon( string Hash, string? IconPath, + byte[]? IconPng, string Description, string EditName, AuraSlotRecognition? Slot); diff --git a/UI/StatusForm.cs b/UI/StatusForm.cs index 8f8fdfed..de8079c4 100644 --- a/UI/StatusForm.cs +++ b/UI/StatusForm.cs @@ -80,9 +80,9 @@ public sealed class StatusForm : Form _aboutHost = CreatePageHost(); _stateList = UiTheme.CreateListView(Font, ("#", 48), ("名称", 150), ("值", 130)); - _auraList = UiTheme.CreateListView(Font, ("#", 48), ("光环", 240), ("时间", 82), ("层数", 82)); - _recognizedBuffAuraList = UiTheme.CreateListView(Font, ("#", 48), ("光环", 220), ("时间", 82), ("层数", 82)); - _recognizedDebuffAuraList = UiTheme.CreateListView(Font, ("#", 48), ("光环", 220), ("时间", 82), ("层数", 82)); + _auraList = UiTheme.CreateListView(Font, ("#", 48), ("光环", 180), ("时间", 82), ("层数", 82)); + _recognizedBuffAuraList = UiTheme.CreateListView(Font, ("#", 48), ("光环", 180), ("时间", 82), ("层数", 82)); + _recognizedDebuffAuraList = UiTheme.CreateListView(Font, ("#", 48), ("光环", 180), ("时间", 82), ("层数", 82)); _dynamicUnitList = UiTheme.CreateListView(Font, ("类型", 120), ("名称", 120), ("值", 160)); _spellList = UiTheme.CreateListView(Font, ("#", 48), ("技能", 150), ("状态", 110)); diff --git a/config/唤魔师.json b/config/唤魔师.json index 00f05924..ec1df967 100644 --- a/config/唤魔师.json +++ b/config/唤魔师.json @@ -79,7 +79,7 @@ }, "目标施法可打断": { "step": 23, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 24, @@ -87,7 +87,7 @@ }, "焦点施法可打断": { "step": 25, - "type": "int" + "type": "bool" }, "目标引导": { "step": 26, @@ -95,7 +95,7 @@ }, "目标引导可打断": { "step": 27, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 28, @@ -103,7 +103,7 @@ }, "焦点引导可打断": { "step": 29, - "type": "int" + "type": "bool" }, "auras": {}, "spells": { @@ -244,7 +244,7 @@ }, "目标施法可打断": { "step": 24, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 25, @@ -252,7 +252,7 @@ }, "焦点施法可打断": { "step": 26, - "type": "int" + "type": "bool" }, "目标引导": { "step": 27, @@ -260,7 +260,7 @@ }, "目标引导可打断": { "step": 28, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 29, @@ -268,7 +268,7 @@ }, "焦点引导可打断": { "step": 30, - "type": "int" + "type": "bool" }, "auras": {}, "spells": { diff --git a/config/圣骑士.json b/config/圣骑士.json index 2bc42076..112969b3 100644 --- a/config/圣骑士.json +++ b/config/圣骑士.json @@ -289,7 +289,7 @@ }, "目标施法可打断": { "step": 52, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 53, @@ -297,7 +297,7 @@ }, "焦点施法可打断": { "step": 54, - "type": "int" + "type": "bool" }, "目标引导": { "step": 55, @@ -305,7 +305,7 @@ }, "目标引导可打断": { "step": 56, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 57, @@ -313,7 +313,7 @@ }, "焦点引导可打断": { "step": 58, - "type": "int" + "type": "bool" }, "auras": { "神圣意志": { @@ -503,7 +503,7 @@ }, "目标施法可打断": { "step": 49, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 50, @@ -511,7 +511,7 @@ }, "焦点施法可打断": { "step": 51, - "type": "int" + "type": "bool" }, "目标引导": { "step": 52, @@ -519,7 +519,7 @@ }, "目标引导可打断": { "step": 53, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 54, @@ -527,7 +527,7 @@ }, "焦点引导可打断": { "step": 55, - "type": "int" + "type": "bool" }, "auras": { "神圣意志": { diff --git a/config/德鲁伊.json b/config/德鲁伊.json index 8bfc468c..1484c4d9 100644 --- a/config/德鲁伊.json +++ b/config/德鲁伊.json @@ -119,7 +119,7 @@ }, "目标施法可打断": { "step": 38, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 39, @@ -127,7 +127,7 @@ }, "焦点施法可打断": { "step": 40, - "type": "int" + "type": "bool" }, "目标引导": { "step": 41, @@ -135,7 +135,7 @@ }, "目标引导可打断": { "step": 42, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 43, @@ -143,7 +143,7 @@ }, "焦点引导可打断": { "step": 44, - "type": "int" + "type": "bool" }, "spells": { "树皮术": { @@ -239,7 +239,7 @@ }, "目标施法可打断": { "step": 38, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 39, @@ -247,7 +247,7 @@ }, "焦点施法可打断": { "step": 40, - "type": "int" + "type": "bool" }, "目标引导": { "step": 41, @@ -255,7 +255,7 @@ }, "目标引导可打断": { "step": 42, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 43, @@ -263,7 +263,7 @@ }, "焦点引导可打断": { "step": 44, - "type": "int" + "type": "bool" }, "spells": { "树皮术": { @@ -355,7 +355,7 @@ }, "目标施法可打断": { "step": 46, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 47, @@ -363,7 +363,7 @@ }, "焦点施法可打断": { "step": 48, - "type": "int" + "type": "bool" }, "目标引导": { "step": 49, @@ -371,7 +371,7 @@ }, "目标引导可打断": { "step": 50, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 51, @@ -379,7 +379,7 @@ }, "焦点引导可打断": { "step": 52, - "type": "int" + "type": "bool" }, "auras": { "梦境": { diff --git a/config/恶魔猎手.json b/config/恶魔猎手.json index e0cc67c7..ab345868 100644 --- a/config/恶魔猎手.json +++ b/config/恶魔猎手.json @@ -129,7 +129,7 @@ }, "目标施法可打断": { "step": 23, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 24, @@ -137,7 +137,7 @@ }, "焦点施法可打断": { "step": 25, - "type": "int" + "type": "bool" }, "目标引导": { "step": 26, @@ -145,7 +145,7 @@ }, "目标引导可打断": { "step": 27, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 28, @@ -153,7 +153,7 @@ }, "焦点引导可打断": { "step": 29, - "type": "int" + "type": "bool" }, "auras": {}, "spells": { @@ -302,15 +302,15 @@ }, "目标施法": { "step": 23, - "type": "int" + "type": "bool" }, "目标引导": { "step": 24, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 25, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 26, @@ -330,7 +330,7 @@ }, "焦点引导可打断": { "step": 30, - "type": "int" + "type": "bool" }, "auras": { "烈火烙印buff": { @@ -505,7 +505,7 @@ }, "目标施法可打断": { "step": 23, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 24, @@ -513,7 +513,7 @@ }, "焦点施法可打断": { "step": 25, - "type": "int" + "type": "bool" }, "目标引导": { "step": 26, @@ -521,7 +521,7 @@ }, "目标引导可打断": { "step": 27, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 28, @@ -529,7 +529,7 @@ }, "焦点引导可打断": { "step": 29, - "type": "int" + "type": "bool" }, "auras": {}, "spells": { diff --git a/config/战士.json b/config/战士.json index 6f791e80..4cf149dd 100644 --- a/config/战士.json +++ b/config/战士.json @@ -52,52 +52,36 @@ "step": 10, "type": "bool" }, - "施法": { + "生命值": { "step": 11, "type": "int" }, - "引导": { + "怒气值": { "step": 12, "type": "int" }, - "蓄力": { + "目标类型": { "step": 13, "type": "int" }, - "蓄力层数": { + "队伍人数": { "step": 14, "type": "int" }, - "生命值": { + "首领战": { "step": 15, "type": "int" }, - "能量值": { + "难度": { "step": 16, "type": "int" }, - "目标类型": { + "目标生命值": { "step": 17, "type": "int" }, - "队伍人数": { - "step": 18, - "type": "int" - }, - "首领战": { - "step": 19, - "type": "int" - }, - "难度": { - "step": 20, - "type": "int" - }, - "目标生命值": { - "step": 21, - "type": "int" - }, "敌人人数": { - "step": 22, + "step": 18, "type": "int" }, "目标施法": { @@ -106,7 +90,7 @@ }, "目标施法可打断": { "step": 48, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 49, @@ -114,7 +98,7 @@ }, "焦点施法可打断": { "step": 50, - "type": "int" + "type": "bool" }, "目标引导": { "step": 51, @@ -122,7 +106,7 @@ }, "目标引导可打断": { "step": 52, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 53, @@ -130,7 +114,7 @@ }, "焦点引导可打断": { "step": 54, - "type": "int" + "type": "bool" }, "auras": { "斩杀高亮": { @@ -214,6 +198,10 @@ "崩摧": { "step": 46, "type": "int" + }, + "拳击": { + "step": 55, + "type": "int" } } }, @@ -226,53 +214,45 @@ "step": 10, "type": "bool" }, - "施法": { + "生命值": { "step": 11, "type": "int" }, - "引导": { + "怒气值": { "step": 12, "type": "int" }, - "蓄力": { + "目标类型": { "step": 13, "type": "int" }, - "蓄力层数": { + "队伍人数": { "step": 14, "type": "int" }, - "生命值": { + "首领战": { "step": 15, "type": "int" }, - "能量值": { + "难度": { "step": 16, "type": "int" }, - "目标类型": { + "目标生命值": { "step": 17, "type": "int" }, - "队伍人数": { + "敌人人数": { "step": 18, "type": "int" }, - "首领战": { - "step": 19, - "type": "int" - }, - "难度": { - "step": 20, - "type": "int" - }, "目标施法": { "step": 21, "type": "int" }, "目标施法可打断": { "step": 22, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 23, @@ -280,7 +260,7 @@ }, "焦点施法可打断": { "step": 24, - "type": "int" + "type": "bool" }, "目标引导": { "step": 25, @@ -288,7 +268,7 @@ }, "目标引导可打断": { "step": 26, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 27, @@ -296,15 +276,7 @@ }, "焦点引导可打断": { "step": 28, - "type": "int" - }, - "目标生命值": { - "step": 29, - "type": "int" - }, - "敌人人数": { - "step": 30, - "type": "int" + "type": "bool" }, "auras": {}, "spells": { @@ -347,6 +319,10 @@ "鲁莽": { "step": 40, "type": "int" + }, + "拳击": { + "step": 41, + "type": "int" } } }, @@ -359,52 +335,36 @@ "step": 10, "type": "bool" }, - "施法": { + "生命值": { "step": 11, "type": "int" }, - "引导": { + "怒气值": { "step": 12, "type": "int" }, - "蓄力": { + "目标类型": { "step": 13, "type": "int" }, - "蓄力层数": { + "队伍人数": { "step": 14, "type": "int" }, - "生命值": { + "首领战": { "step": 15, "type": "int" }, - "能量值": { + "难度": { "step": 16, "type": "int" }, - "目标类型": { + "目标生命值": { "step": 17, "type": "int" }, - "队伍人数": { - "step": 18, - "type": "int" - }, - "首领战": { - "step": 19, - "type": "int" - }, - "难度": { - "step": 20, - "type": "int" - }, - "目标生命值": { - "step": 21, - "type": "int" - }, "敌人人数": { - "step": 22, + "step": 18, "type": "int" }, "目标施法": { @@ -413,7 +373,7 @@ }, "目标施法可打断": { "step": 48, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 49, @@ -421,7 +381,7 @@ }, "焦点施法可打断": { "step": 50, - "type": "int" + "type": "bool" }, "目标引导": { "step": 51, @@ -429,7 +389,7 @@ }, "目标引导可打断": { "step": 52, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 53, @@ -437,7 +397,7 @@ }, "焦点引导可打断": { "step": 54, - "type": "int" + "type": "bool" }, "auras": { "盾牌格挡": { @@ -501,6 +461,14 @@ "挫志怒吼": { "step": 44, "type": "int" + }, + "拳击": { + "step": 44, + "type": "int" + }, + "无视苦痛": { + "step": 45, + "type": "int" } } } diff --git a/config/术士.json b/config/术士.json index af8fed77..7930ea06 100644 --- a/config/术士.json +++ b/config/术士.json @@ -134,7 +134,7 @@ }, "目标施法可打断": { "step": 24, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 25, @@ -142,7 +142,7 @@ }, "焦点施法可打断": { "step": 26, - "type": "int" + "type": "bool" }, "目标引导": { "step": 27, @@ -150,7 +150,7 @@ }, "目标引导可打断": { "step": 28, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 29, @@ -158,7 +158,7 @@ }, "焦点引导可打断": { "step": 30, - "type": "int" + "type": "bool" }, "auras": {}, "spells": { @@ -300,7 +300,7 @@ }, "目标施法可打断": { "step": 53, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 54, @@ -308,7 +308,7 @@ }, "焦点施法可打断": { "step": 55, - "type": "int" + "type": "bool" }, "目标引导": { "step": 56, @@ -316,7 +316,7 @@ }, "目标引导可打断": { "step": 57, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 58, @@ -324,7 +324,7 @@ }, "焦点引导可打断": { "step": 59, - "type": "int" + "type": "bool" }, "auras": { "吞噬魔法": { @@ -474,7 +474,7 @@ }, "目标施法可打断": { "step": 22, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 23, @@ -482,7 +482,7 @@ }, "焦点施法可打断": { "step": 24, - "type": "int" + "type": "bool" }, "目标引导": { "step": 25, @@ -490,7 +490,7 @@ }, "目标引导可打断": { "step": 26, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 27, @@ -498,7 +498,7 @@ }, "焦点引导可打断": { "step": 28, - "type": "int" + "type": "bool" }, "灵魂碎片": { "step": 29, diff --git a/config/武僧.json b/config/武僧.json index ad5ee757..31053c57 100644 --- a/config/武僧.json +++ b/config/武僧.json @@ -96,7 +96,7 @@ }, "目标施法可打断": { "step": 55, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 56, @@ -104,7 +104,7 @@ }, "焦点施法可打断": { "step": 57, - "type": "int" + "type": "bool" }, "目标引导": { "step": 58, @@ -112,7 +112,7 @@ }, "目标引导可打断": { "step": 59, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 60, @@ -120,7 +120,7 @@ }, "焦点引导可打断": { "step": 61, - "type": "int" + "type": "bool" }, "auras": { "疗伤珠": { @@ -507,7 +507,7 @@ }, "目标施法可打断": { "step": 42, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 43, @@ -515,7 +515,7 @@ }, "焦点施法可打断": { "step": 44, - "type": "int" + "type": "bool" }, "目标引导": { "step": 45, @@ -523,7 +523,7 @@ }, "目标引导可打断": { "step": 46, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 47, @@ -531,7 +531,7 @@ }, "焦点引导可打断": { "step": 48, - "type": "int" + "type": "bool" }, "auras": {}, "spells": { diff --git a/config/死亡骑士.json b/config/死亡骑士.json index 1158ac29..a16a3b8e 100644 --- a/config/死亡骑士.json +++ b/config/死亡骑士.json @@ -114,7 +114,7 @@ }, "目标施法可打断": { "step": 25, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 26, @@ -122,7 +122,7 @@ }, "焦点施法可打断": { "step": 27, - "type": "int" + "type": "bool" }, "目标引导": { "step": 28, @@ -130,7 +130,7 @@ }, "目标引导可打断": { "step": 29, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 30, @@ -138,7 +138,7 @@ }, "焦点引导可打断": { "step": 31, - "type": "int" + "type": "bool" }, "spells": { "死亡之握": { @@ -250,7 +250,7 @@ }, "目标施法可打断": { "step": 29, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 30, @@ -258,7 +258,7 @@ }, "焦点施法可打断": { "step": 31, - "type": "int" + "type": "bool" }, "目标引导": { "step": 32, @@ -266,7 +266,7 @@ }, "目标引导可打断": { "step": 33, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 34, @@ -274,7 +274,7 @@ }, "焦点引导可打断": { "step": 35, - "type": "int" + "type": "bool" }, "爆发开关": { "step": 36, @@ -481,7 +481,7 @@ }, "目标施法可打断": { "step": 33, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 33, @@ -489,7 +489,7 @@ }, "焦点施法可打断": { "step": 33, - "type": "int" + "type": "bool" }, "目标引导": { "step": 33, @@ -497,7 +497,7 @@ }, "目标引导可打断": { "step": 33, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 33, @@ -505,7 +505,7 @@ }, "焦点引导可打断": { "step": 33, - "type": "int" + "type": "bool" }, "天启骑士数量": { "step": 54, diff --git a/config/法师.json b/config/法师.json index 069babea..df388dc6 100644 --- a/config/法师.json +++ b/config/法师.json @@ -117,7 +117,7 @@ }, "目标施法可打断": { "step": 22, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 23, @@ -125,7 +125,7 @@ }, "焦点施法可打断": { "step": 24, - "type": "int" + "type": "bool" }, "目标引导": { "step": 25, @@ -133,7 +133,7 @@ }, "目标引导可打断": { "step": 26, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 27, @@ -141,7 +141,7 @@ }, "焦点引导可打断": { "step": 28, - "type": "int" + "type": "bool" } }, "2": { @@ -199,7 +199,7 @@ }, "目标施法可打断": { "step": 22, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 23, @@ -207,7 +207,7 @@ }, "焦点施法可打断": { "step": 24, - "type": "int" + "type": "bool" }, "目标引导": { "step": 25, @@ -215,7 +215,7 @@ }, "目标引导可打断": { "step": 26, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 27, @@ -223,7 +223,7 @@ }, "焦点引导可打断": { "step": 28, - "type": "int" + "type": "bool" } }, "3": { @@ -289,7 +289,7 @@ }, "目标施法可打断": { "step": 38, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 39, @@ -297,7 +297,7 @@ }, "焦点施法可打断": { "step": 40, - "type": "int" + "type": "bool" }, "目标引导": { "step": 41, @@ -305,7 +305,7 @@ }, "目标引导可打断": { "step": 42, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 43, @@ -313,7 +313,7 @@ }, "焦点引导可打断": { "step": 44, - "type": "int" + "type": "bool" }, "auras": { "冰川尖刺": { diff --git a/config/牧师.json b/config/牧师.json index e26e4031..f053d2c4 100644 --- a/config/牧师.json +++ b/config/牧师.json @@ -523,7 +523,7 @@ }, "目标施法可打断": { "step": 45, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 46, @@ -531,7 +531,7 @@ }, "焦点施法可打断": { "step": 47, - "type": "int" + "type": "bool" }, "目标引导": { "step": 48, @@ -539,7 +539,7 @@ }, "目标引导可打断": { "step": 49, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 50, @@ -547,7 +547,7 @@ }, "焦点引导可打断": { "step": 51, - "type": "int" + "type": "bool" }, "spells": { "心灵尖啸": { diff --git a/config/猎人.json b/config/猎人.json index 9f99ed79..eed55b71 100644 --- a/config/猎人.json +++ b/config/猎人.json @@ -128,7 +128,7 @@ }, "目标施法可打断": { "step": 50, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 51, @@ -136,7 +136,7 @@ }, "焦点施法可打断": { "step": 52, - "type": "int" + "type": "bool" }, "目标引导": { "step": 53, @@ -144,7 +144,7 @@ }, "目标引导可打断": { "step": 54, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 55, @@ -152,7 +152,7 @@ }, "焦点引导可打断": { "step": 56, - "type": "int" + "type": "bool" }, "auras": {}, "spells": { @@ -277,7 +277,7 @@ }, "目标施法可打断": { "step": 22, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 23, @@ -285,7 +285,7 @@ }, "焦点施法可打断": { "step": 24, - "type": "int" + "type": "bool" }, "目标引导": { "step": 25, @@ -293,7 +293,7 @@ }, "目标引导可打断": { "step": 26, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 27, @@ -301,7 +301,7 @@ }, "焦点引导可打断": { "step": 28, - "type": "int" + "type": "bool" }, "auras": {}, "spells": { @@ -418,7 +418,7 @@ }, "目标施法可打断": { "step": 22, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 23, @@ -426,7 +426,7 @@ }, "焦点施法可打断": { "step": 24, - "type": "int" + "type": "bool" }, "目标引导": { "step": 25, @@ -434,7 +434,7 @@ }, "目标引导可打断": { "step": 26, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 27, @@ -442,7 +442,7 @@ }, "焦点引导可打断": { "step": 28, - "type": "int" + "type": "bool" }, "auras": {}, "spells": { diff --git a/config/盗贼.json b/config/盗贼.json index 83b0825e..487fe0f9 100644 --- a/config/盗贼.json +++ b/config/盗贼.json @@ -118,7 +118,7 @@ }, "目标施法可打断": { "step": 22, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 23, @@ -126,7 +126,7 @@ }, "焦点施法可打断": { "step": 24, - "type": "int" + "type": "bool" }, "目标引导": { "step": 25, @@ -134,7 +134,7 @@ }, "目标引导可打断": { "step": 26, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 27, @@ -142,7 +142,7 @@ }, "焦点引导可打断": { "step": 28, - "type": "int" + "type": "bool" }, "auras": {}, "spells": { @@ -283,7 +283,7 @@ }, "目标施法可打断": { "step": 22, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 23, @@ -291,7 +291,7 @@ }, "焦点施法可打断": { "step": 24, - "type": "int" + "type": "bool" }, "目标引导": { "step": 25, @@ -299,7 +299,7 @@ }, "目标引导可打断": { "step": 26, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 27, @@ -307,7 +307,7 @@ }, "焦点引导可打断": { "step": 28, - "type": "int" + "type": "bool" }, "auras": {}, "spells": { @@ -460,7 +460,7 @@ }, "目标施法可打断": { "step": 22, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 23, @@ -468,7 +468,7 @@ }, "焦点施法可打断": { "step": 24, - "type": "int" + "type": "bool" }, "目标引导": { "step": 25, @@ -476,7 +476,7 @@ }, "目标引导可打断": { "step": 26, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 27, @@ -484,7 +484,7 @@ }, "焦点引导可打断": { "step": 28, - "type": "int" + "type": "bool" }, "auras": {}, "spells": { diff --git a/config/萨满.json b/config/萨满.json index b727acd8..cae1ea1d 100644 --- a/config/萨满.json +++ b/config/萨满.json @@ -107,7 +107,7 @@ }, "目标施法可打断": { "step": 24, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 25, @@ -115,7 +115,7 @@ }, "焦点施法可打断": { "step": 26, - "type": "int" + "type": "bool" }, "目标引导": { "step": 27, @@ -123,7 +123,7 @@ }, "目标引导可打断": { "step": 28, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 29, @@ -131,7 +131,7 @@ }, "焦点引导可打断": { "step": 30, - "type": "int" + "type": "bool" }, "spells": { "风剪": { @@ -287,7 +287,7 @@ }, "目标施法可打断": { "step": 24, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 25, @@ -295,7 +295,7 @@ }, "焦点施法可打断": { "step": 26, - "type": "int" + "type": "bool" }, "目标引导": { "step": 27, @@ -303,7 +303,7 @@ }, "目标引导可打断": { "step": 28, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 29, @@ -311,7 +311,7 @@ }, "焦点引导可打断": { "step": 30, - "type": "int" + "type": "bool" }, "auras": { "溢流漩涡层数": { @@ -490,7 +490,7 @@ }, "目标施法可打断": { "step": 59, - "type": "int" + "type": "bool" }, "焦点施法": { "step": 60, @@ -498,7 +498,7 @@ }, "焦点施法可打断": { "step": 61, - "type": "int" + "type": "bool" }, "目标引导": { "step": 62, @@ -506,7 +506,7 @@ }, "目标引导可打断": { "step": 63, - "type": "int" + "type": "bool" }, "焦点引导": { "step": 64, @@ -514,7 +514,7 @@ }, "焦点引导可打断": { "step": 65, - "type": "int" + "type": "bool" }, "auras": { "飞旋之土": { diff --git a/keymap/warrior.json b/keymap/warrior.json index fe8cf9d9..477a7199 100644 --- a/keymap/warrior.json +++ b/keymap/warrior.json @@ -186,12 +186,12 @@ }, "38": { "unit": 0, - "技能": "", + "技能": "拳击", "热键": "CTRL-0" }, "39": { "unit": 0, - "技能": "", + "技能": "拳击(焦点)", "热键": "CTRL-=" }, "40": { @@ -1364,4 +1364,4 @@ "技能": "", "热键": "ALT-CTRL-SHIFT-=" } -} +} \ No newline at end of file